@bastani/atomic 0.9.11-alpha.4 → 0.9.11-alpha.6

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 (1032) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +12 -5
  3. package/dist/builtin/intercom/package.json +2 -2
  4. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  5. package/dist/builtin/mcp/README.md +3 -3
  6. package/dist/builtin/mcp/cli.js +0 -1
  7. package/dist/builtin/mcp/config.ts +0 -2
  8. package/dist/builtin/mcp/package.json +3 -3
  9. package/dist/builtin/mcp/types.ts +0 -1
  10. package/dist/builtin/subagents/CHANGELOG.md +19 -0
  11. package/dist/builtin/subagents/README.md +10 -1
  12. package/dist/builtin/subagents/agents/code-simplifier.md +47 -102
  13. package/dist/builtin/subagents/agents/codebase-analyzer.md +27 -130
  14. package/dist/builtin/subagents/agents/codebase-locator.md +24 -83
  15. package/dist/builtin/subagents/agents/codebase-online-researcher.md +60 -259
  16. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +29 -207
  17. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +28 -150
  18. package/dist/builtin/subagents/agents/codebase-research-locator.md +21 -118
  19. package/dist/builtin/subagents/agents/debugger.md +29 -65
  20. package/dist/builtin/subagents/agents/worker.md +23 -30
  21. package/dist/builtin/subagents/package.json +4 -4
  22. package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +18 -11
  23. package/dist/builtin/subagents/prompts/parallel-cleanup.md +34 -33
  24. package/dist/builtin/subagents/prompts/parallel-context-build.md +22 -36
  25. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +20 -52
  26. package/dist/builtin/subagents/prompts/parallel-research.md +17 -41
  27. package/dist/builtin/subagents/prompts/parallel-review.md +23 -28
  28. package/dist/builtin/subagents/prompts/review-loop.md +18 -27
  29. package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
  30. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -1
  31. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +23 -4
  32. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
  33. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +10 -0
  34. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +1 -0
  35. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +2 -0
  36. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +8 -0
  37. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  38. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +6 -0
  39. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +2 -0
  40. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +7 -0
  41. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +1 -0
  42. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +3 -0
  43. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -2
  44. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -0
  45. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +5 -3
  46. package/dist/builtin/subagents/src/shared/settings.ts +4 -0
  47. package/dist/builtin/web-access/package.json +2 -2
  48. package/dist/builtin/workflows/CHANGELOG.md +53 -0
  49. package/dist/builtin/workflows/README.md +72 -70
  50. package/dist/builtin/workflows/ambient.d.ts +0 -5
  51. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  52. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  53. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  54. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  55. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  56. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  57. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  58. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  59. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  60. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  61. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  62. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  63. package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
  64. package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
  65. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
  66. package/dist/builtin/workflows/builtin/goal-prompts.ts +66 -286
  67. package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
  68. package/dist/builtin/workflows/builtin/goal-runner.ts +72 -116
  69. package/dist/builtin/workflows/builtin/goal.ts +9 -8
  70. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  71. package/dist/builtin/workflows/builtin/index.ts +1 -2
  72. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  73. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  74. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  75. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +52 -55
  76. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +45 -52
  77. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +41 -46
  78. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  79. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  80. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
  81. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
  82. package/dist/builtin/workflows/builtin/ralph-models.ts +33 -43
  83. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +35 -117
  84. package/dist/builtin/workflows/builtin/ralph-runner.ts +81 -108
  85. package/dist/builtin/workflows/builtin/ralph.ts +2 -1
  86. package/dist/builtin/workflows/builtin/shared-prompts.ts +111 -80
  87. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  88. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  89. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  90. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  91. package/dist/builtin/workflows/package.json +2 -2
  92. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  93. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +6 -8
  94. package/dist/builtin/workflows/skills/impeccable/reference/live.md +3 -4
  95. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +2 -20
  96. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +4 -42
  97. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +3 -3
  98. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +2 -3
  99. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +0 -1
  100. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +2 -2
  101. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  102. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  103. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  104. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  105. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  106. package/dist/builtin/workflows/src/authoring.d.ts +5 -1
  107. package/dist/builtin/workflows/src/durable/backend.ts +68 -9
  108. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +148 -0
  109. package/dist/builtin/workflows/src/durable/boundary-topology.ts +420 -0
  110. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  111. package/dist/builtin/workflows/src/durable/child-primitive.ts +74 -44
  112. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +250 -0
  113. package/dist/builtin/workflows/src/durable/completed-catalog.ts +205 -131
  114. package/dist/builtin/workflows/src/durable/completed-inspection.ts +8 -2
  115. package/dist/builtin/workflows/src/durable/completed-subtree.ts +31 -0
  116. package/dist/builtin/workflows/src/durable/dbos-backend.ts +28 -24
  117. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +130 -3
  118. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +18 -0
  119. package/dist/builtin/workflows/src/durable/scoped-backend.ts +64 -17
  120. package/dist/builtin/workflows/src/durable/stage-primitive.ts +60 -60
  121. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +234 -0
  122. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  123. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  124. package/dist/builtin/workflows/src/durable/tool-outcome.ts +120 -0
  125. package/dist/builtin/workflows/src/durable/tool-primitive.ts +367 -58
  126. package/dist/builtin/workflows/src/durable/types.ts +97 -0
  127. package/dist/builtin/workflows/src/durable/ui-primitive.ts +46 -0
  128. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +58 -0
  129. package/dist/builtin/workflows/src/engine/options.ts +1 -0
  130. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +19 -10
  131. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +11 -1
  132. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +190 -18
  133. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +37 -0
  134. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +50 -0
  135. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +152 -0
  136. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +87 -0
  137. package/dist/builtin/workflows/src/engine/run.ts +111 -110
  138. package/dist/builtin/workflows/src/engine/runtime.ts +15 -2
  139. package/dist/builtin/workflows/src/extension/extension-factory.ts +1 -0
  140. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +11 -0
  141. package/dist/builtin/workflows/src/extension/index.bundle.mjs +6599 -4776
  142. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +16 -5
  143. package/dist/builtin/workflows/src/extension/render-result.ts +16 -2
  144. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
  145. package/dist/builtin/workflows/src/extension/runtime.ts +4 -0
  146. package/dist/builtin/workflows/src/extension/wiring.ts +3 -1
  147. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +1 -0
  148. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +9 -3
  149. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +18 -3
  150. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +27 -9
  151. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +43 -0
  152. package/dist/builtin/workflows/src/extension/workflow-targets.ts +34 -30
  153. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +12 -5
  154. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +162 -63
  155. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +7 -1
  156. package/dist/builtin/workflows/src/runs/background/status.ts +18 -8
  157. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +3 -11
  158. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +24 -21
  159. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  160. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +30 -13
  161. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +102 -53
  162. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +13 -5
  163. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +26 -8
  164. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +11 -4
  165. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
  166. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +7 -1
  167. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +35 -1
  168. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +136 -17
  169. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +12 -4
  170. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +35 -42
  171. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +5 -1
  172. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +195 -0
  173. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -13
  174. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +14 -2
  175. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +3 -143
  176. package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
  177. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -11
  178. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -11
  179. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +57 -6
  180. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +76 -11
  181. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +206 -116
  182. package/dist/builtin/workflows/src/shared/intercom-group.ts +17 -10
  183. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +30 -0
  184. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +5 -0
  185. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +3 -3
  186. package/dist/builtin/workflows/src/shared/store-factory.ts +2 -0
  187. package/dist/builtin/workflows/src/shared/store-internal.ts +8 -0
  188. package/dist/builtin/workflows/src/shared/store-public-types.ts +8 -0
  189. package/dist/builtin/workflows/src/shared/store-run-methods.ts +9 -0
  190. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +2 -0
  191. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +46 -0
  192. package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
  193. package/dist/builtin/workflows/src/shared/types.ts +14 -24
  194. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +11 -5
  195. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +58 -0
  196. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +53 -0
  197. package/dist/builtin/workflows/src/tui/graph-view-input.ts +2 -8
  198. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +11 -4
  199. package/dist/builtin/workflows/src/tui/graph-view-render.ts +1 -0
  200. package/dist/builtin/workflows/src/tui/graph-view-state.ts +27 -9
  201. package/dist/builtin/workflows/src/tui/graph-view-types.ts +4 -3
  202. package/dist/builtin/workflows/src/tui/node-card.ts +4 -3
  203. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -4
  204. package/dist/builtin/workflows/src/tui/run-detail.ts +53 -17
  205. package/dist/builtin/workflows/src/tui/session-list.ts +8 -4
  206. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +12 -0
  207. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +21 -1
  208. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +3 -19
  209. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -2
  210. package/dist/builtin/workflows/src/tui/switcher.ts +13 -3
  211. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +1 -1
  212. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -9
  213. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +16 -49
  214. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  215. package/dist/builtin/workflows/src/workflows/identity.ts +1 -1
  216. package/dist/cli/args.d.ts +0 -1
  217. package/dist/cli/args.d.ts.map +1 -1
  218. package/dist/cli/args.js +1 -20
  219. package/dist/cli/args.js.map +1 -1
  220. package/dist/cli/config-selector.js +1 -1
  221. package/dist/cli/config-selector.js.map +1 -1
  222. package/dist/cli/list-models.d.ts.map +1 -1
  223. package/dist/cli/list-models.js +1 -2
  224. package/dist/cli/list-models.js.map +1 -1
  225. package/dist/cli/session-picker.d.ts.map +1 -1
  226. package/dist/cli/session-picker.js +2 -1
  227. package/dist/cli/session-picker.js.map +1 -1
  228. package/dist/cli/startup-ui.js +2 -2
  229. package/dist/cli/startup-ui.js.map +1 -1
  230. package/dist/config-self-update.js +1 -1
  231. package/dist/config-self-update.js.map +1 -1
  232. package/dist/config.d.ts +2 -0
  233. package/dist/config.d.ts.map +1 -1
  234. package/dist/config.js +34 -10
  235. package/dist/config.js.map +1 -1
  236. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  237. package/dist/core/agent-session-accessors.js +2 -1
  238. package/dist/core/agent-session-accessors.js.map +1 -1
  239. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  240. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  241. package/dist/core/agent-session-auto-compaction.js +55 -59
  242. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  243. package/dist/core/agent-session-bash.d.ts +9 -6
  244. package/dist/core/agent-session-bash.d.ts.map +1 -1
  245. package/dist/core/agent-session-bash.js +32 -13
  246. package/dist/core/agent-session-bash.js.map +1 -1
  247. package/dist/core/agent-session-compaction.d.ts +11 -1
  248. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  249. package/dist/core/agent-session-compaction.js +87 -19
  250. package/dist/core/agent-session-compaction.js.map +1 -1
  251. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  252. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  253. package/dist/core/agent-session-custom-message-commit.js +141 -0
  254. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  255. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  256. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  257. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  258. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  259. package/dist/core/agent-session-events.d.ts +1 -1
  260. package/dist/core/agent-session-events.d.ts.map +1 -1
  261. package/dist/core/agent-session-events.js +45 -14
  262. package/dist/core/agent-session-events.js.map +1 -1
  263. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  264. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  265. package/dist/core/agent-session-extension-bindings.js +18 -11
  266. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  267. package/dist/core/agent-session-message-queue.d.ts +5 -2
  268. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  269. package/dist/core/agent-session-message-queue.js +91 -97
  270. package/dist/core/agent-session-message-queue.js.map +1 -1
  271. package/dist/core/agent-session-methods.d.ts +47 -39
  272. package/dist/core/agent-session-methods.d.ts.map +1 -1
  273. package/dist/core/agent-session-methods.js.map +1 -1
  274. package/dist/core/agent-session-models.d.ts +2 -38
  275. package/dist/core/agent-session-models.d.ts.map +1 -1
  276. package/dist/core/agent-session-models.js +5 -147
  277. package/dist/core/agent-session-models.js.map +1 -1
  278. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  279. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  280. package/dist/core/agent-session-persistent-custom-messages.js +267 -0
  281. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  282. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  283. package/dist/core/agent-session-post-tool-compaction.js +34 -9
  284. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  285. package/dist/core/agent-session-prompt.d.ts +2 -0
  286. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  287. package/dist/core/agent-session-prompt.js +42 -16
  288. package/dist/core/agent-session-prompt.js.map +1 -1
  289. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  290. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  291. package/dist/core/agent-session-queue-pause.js +86 -0
  292. package/dist/core/agent-session-queue-pause.js.map +1 -0
  293. package/dist/core/agent-session-retry.d.ts +0 -11
  294. package/dist/core/agent-session-retry.d.ts.map +1 -1
  295. package/dist/core/agent-session-retry.js +8 -57
  296. package/dist/core/agent-session-retry.js.map +1 -1
  297. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  298. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  299. package/dist/core/agent-session-runtime-auth.js +26 -0
  300. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  301. package/dist/core/agent-session-runtime.d.ts +13 -2
  302. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  303. package/dist/core/agent-session-runtime.js +32 -6
  304. package/dist/core/agent-session-runtime.js.map +1 -1
  305. package/dist/core/agent-session-services.d.ts +0 -2
  306. package/dist/core/agent-session-services.d.ts.map +1 -1
  307. package/dist/core/agent-session-services.js +6 -7
  308. package/dist/core/agent-session-services.js.map +1 -1
  309. package/dist/core/agent-session-state.d.ts.map +1 -1
  310. package/dist/core/agent-session-state.js +3 -0
  311. package/dist/core/agent-session-state.js.map +1 -1
  312. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  313. package/dist/core/agent-session-tool-hooks.js +6 -1
  314. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  315. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  316. package/dist/core/agent-session-tool-registry.js +2 -18
  317. package/dist/core/agent-session-tool-registry.js.map +1 -1
  318. package/dist/core/agent-session-transfer.d.ts +4 -0
  319. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  320. package/dist/core/agent-session-transfer.js +71 -0
  321. package/dist/core/agent-session-transfer.js.map +1 -0
  322. package/dist/core/agent-session-tree.js +1 -1
  323. package/dist/core/agent-session-tree.js.map +1 -1
  324. package/dist/core/agent-session-types.d.ts +5 -11
  325. package/dist/core/agent-session-types.d.ts.map +1 -1
  326. package/dist/core/agent-session-types.js +0 -3
  327. package/dist/core/agent-session-types.js.map +1 -1
  328. package/dist/core/agent-session.d.ts +12 -2
  329. package/dist/core/agent-session.d.ts.map +1 -1
  330. package/dist/core/agent-session.js +8 -2
  331. package/dist/core/agent-session.js.map +1 -1
  332. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  333. package/dist/core/atomic-guide-command.js +31 -33
  334. package/dist/core/atomic-guide-command.js.map +1 -1
  335. package/dist/core/auth-storage.js +2 -2
  336. package/dist/core/auth-storage.js.map +1 -1
  337. package/dist/core/bash-executor.d.ts +5 -3
  338. package/dist/core/bash-executor.d.ts.map +1 -1
  339. package/dist/core/bash-executor.js +5 -4
  340. package/dist/core/bash-executor.js.map +1 -1
  341. package/dist/core/builtin-packages.d.ts.map +1 -1
  342. package/dist/core/builtin-packages.js +0 -6
  343. package/dist/core/builtin-packages.js.map +1 -1
  344. package/dist/core/compaction/branch-summarization.d.ts +8 -3
  345. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  346. package/dist/core/compaction/branch-summarization.js +17 -6
  347. package/dist/core/compaction/branch-summarization.js.map +1 -1
  348. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  349. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  350. package/dist/core/compaction/compaction-boundary.js +2 -2
  351. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  352. package/dist/core/compaction/compaction-runner.d.ts +61 -6
  353. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  354. package/dist/core/compaction/compaction-runner.js +242 -18
  355. package/dist/core/compaction/compaction-runner.js.map +1 -1
  356. package/dist/core/compaction/compaction-types.d.ts +53 -2
  357. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  358. package/dist/core/compaction/compaction-types.js.map +1 -1
  359. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  360. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  361. package/dist/core/compaction/fallback-planner.js +75 -0
  362. package/dist/core/compaction/fallback-planner.js.map +1 -0
  363. package/dist/core/compaction/index.d.ts +3 -0
  364. package/dist/core/compaction/index.d.ts.map +1 -1
  365. package/dist/core/compaction/index.js +3 -0
  366. package/dist/core/compaction/index.js.map +1 -1
  367. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  368. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  369. package/dist/core/compaction/planner-outcome.js +122 -0
  370. package/dist/core/compaction/planner-outcome.js.map +1 -0
  371. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  372. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  373. package/dist/core/compaction/range-planner-diagnostics.js +69 -31
  374. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  375. package/dist/core/compaction/range-planner.d.ts +36 -8
  376. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  377. package/dist/core/compaction/range-planner.js +136 -51
  378. package/dist/core/compaction/range-planner.js.map +1 -1
  379. package/dist/core/compaction/region-trimming.d.ts +34 -0
  380. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  381. package/dist/core/compaction/region-trimming.js +73 -0
  382. package/dist/core/compaction/region-trimming.js.map +1 -0
  383. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  384. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  385. package/dist/core/compaction/transcript-serialization.js +78 -27
  386. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  387. package/dist/core/context-tool-pairing.d.ts +19 -0
  388. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  389. package/dist/core/context-tool-pairing.js +50 -0
  390. package/dist/core/context-tool-pairing.js.map +1 -0
  391. package/dist/core/diagnostics.d.ts +8 -0
  392. package/dist/core/diagnostics.d.ts.map +1 -1
  393. package/dist/core/diagnostics.js.map +1 -1
  394. package/dist/core/extensions/context-types.d.ts +3 -0
  395. package/dist/core/extensions/context-types.d.ts.map +1 -1
  396. package/dist/core/extensions/context-types.js.map +1 -1
  397. package/dist/core/extensions/index.d.ts +2 -0
  398. package/dist/core/extensions/index.d.ts.map +1 -1
  399. package/dist/core/extensions/index.js.map +1 -1
  400. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  401. package/dist/core/extensions/loader-api.js +48 -27
  402. package/dist/core/extensions/loader-api.js.map +1 -1
  403. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  404. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  405. package/dist/core/extensions/loader-runtime.js +199 -18
  406. package/dist/core/extensions/loader-runtime.js.map +1 -1
  407. package/dist/core/extensions/message-types.d.ts +7 -4
  408. package/dist/core/extensions/message-types.d.ts.map +1 -1
  409. package/dist/core/extensions/message-types.js.map +1 -1
  410. package/dist/core/extensions/provider-types.d.ts +9 -4
  411. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  412. package/dist/core/extensions/provider-types.js.map +1 -1
  413. package/dist/core/extensions/runner-context.d.ts +2 -0
  414. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  415. package/dist/core/extensions/runner-context.js +4 -0
  416. package/dist/core/extensions/runner-context.js.map +1 -1
  417. package/dist/core/extensions/runner.d.ts +1 -0
  418. package/dist/core/extensions/runner.d.ts.map +1 -1
  419. package/dist/core/extensions/runner.js +28 -20
  420. package/dist/core/extensions/runner.js.map +1 -1
  421. package/dist/core/extensions/runtime-types.d.ts +25 -0
  422. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  423. package/dist/core/extensions/runtime-types.js.map +1 -1
  424. package/dist/core/extensions/tool-types.d.ts +7 -3
  425. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  426. package/dist/core/extensions/tool-types.js.map +1 -1
  427. package/dist/core/extensions/ui-types.d.ts +14 -4
  428. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  429. package/dist/core/extensions/ui-types.js.map +1 -1
  430. package/dist/core/fallback-models.d.ts +37 -0
  431. package/dist/core/fallback-models.d.ts.map +1 -0
  432. package/dist/core/fallback-models.js +48 -0
  433. package/dist/core/fallback-models.js.map +1 -0
  434. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  435. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  436. package/dist/core/flattened-tool-arguments.js +4 -7
  437. package/dist/core/flattened-tool-arguments.js.map +1 -1
  438. package/dist/core/http-dispatcher.d.ts.map +1 -1
  439. package/dist/core/http-dispatcher.js +0 -5
  440. package/dist/core/http-dispatcher.js.map +1 -1
  441. package/dist/core/messages.d.ts +14 -2
  442. package/dist/core/messages.d.ts.map +1 -1
  443. package/dist/core/messages.js +28 -4
  444. package/dist/core/messages.js.map +1 -1
  445. package/dist/core/model-capabilities.d.ts +18 -0
  446. package/dist/core/model-capabilities.d.ts.map +1 -0
  447. package/dist/core/model-capabilities.js +23 -0
  448. package/dist/core/model-capabilities.js.map +1 -0
  449. package/dist/core/model-registry-auth.d.ts.map +1 -1
  450. package/dist/core/model-registry-auth.js +0 -2
  451. package/dist/core/model-registry-auth.js.map +1 -1
  452. package/dist/core/model-registry-builtins.d.ts +0 -2
  453. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  454. package/dist/core/model-registry-builtins.js +9 -76
  455. package/dist/core/model-registry-builtins.js.map +1 -1
  456. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  457. package/dist/core/model-registry-custom-loader.js +1 -12
  458. package/dist/core/model-registry-custom-loader.js.map +1 -1
  459. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  460. package/dist/core/model-registry-dynamic.js +3 -15
  461. package/dist/core/model-registry-dynamic.js.map +1 -1
  462. package/dist/core/model-registry-extension-refresh.d.ts +23 -0
  463. package/dist/core/model-registry-extension-refresh.d.ts.map +1 -0
  464. package/dist/core/model-registry-extension-refresh.js +32 -0
  465. package/dist/core/model-registry-extension-refresh.js.map +1 -0
  466. package/dist/core/model-registry-schemas.d.ts +118 -9
  467. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  468. package/dist/core/model-registry-schemas.js +10 -3
  469. package/dist/core/model-registry-schemas.js.map +1 -1
  470. package/dist/core/model-registry-types.d.ts +5 -5
  471. package/dist/core/model-registry-types.d.ts.map +1 -1
  472. package/dist/core/model-registry-types.js.map +1 -1
  473. package/dist/core/model-registry-validation.d.ts +7 -0
  474. package/dist/core/model-registry-validation.d.ts.map +1 -0
  475. package/dist/core/model-registry-validation.js +12 -0
  476. package/dist/core/model-registry-validation.js.map +1 -0
  477. package/dist/core/model-registry.d.ts +5 -3
  478. package/dist/core/model-registry.d.ts.map +1 -1
  479. package/dist/core/model-registry.js +34 -33
  480. package/dist/core/model-registry.js.map +1 -1
  481. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  482. package/dist/core/model-resolver-defaults.js +0 -1
  483. package/dist/core/model-resolver-defaults.js.map +1 -1
  484. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  485. package/dist/core/model-resolver-initial.js +9 -0
  486. package/dist/core/model-resolver-initial.js.map +1 -1
  487. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  488. package/dist/core/model-resolver-patterns.js +0 -2
  489. package/dist/core/model-resolver-patterns.js.map +1 -1
  490. package/dist/core/model-resolver-scope.d.ts +2 -0
  491. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  492. package/dist/core/model-resolver-scope.js +18 -4
  493. package/dist/core/model-resolver-scope.js.map +1 -1
  494. package/dist/core/model-resolver-types.d.ts +2 -0
  495. package/dist/core/model-resolver-types.d.ts.map +1 -1
  496. package/dist/core/model-resolver-types.js.map +1 -1
  497. package/dist/core/oauth-provider-bridge.d.ts +21 -0
  498. package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
  499. package/dist/core/oauth-provider-bridge.js +68 -7
  500. package/dist/core/oauth-provider-bridge.js.map +1 -1
  501. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  502. package/dist/core/package-manager-auto-resources.js +12 -4
  503. package/dist/core/package-manager-auto-resources.js.map +1 -1
  504. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  505. package/dist/core/package-manager-resolver.js +42 -11
  506. package/dist/core/package-manager-resolver.js.map +1 -1
  507. package/dist/core/package-manager-types.d.ts +2 -0
  508. package/dist/core/package-manager-types.d.ts.map +1 -1
  509. package/dist/core/package-manager-types.js.map +1 -1
  510. package/dist/core/package-manager.d.ts +1 -1
  511. package/dist/core/package-manager.d.ts.map +1 -1
  512. package/dist/core/package-manager.js.map +1 -1
  513. package/dist/core/remote-catalog-provider.d.ts +1 -1
  514. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  515. package/dist/core/remote-catalog-provider.js +17 -11
  516. package/dist/core/remote-catalog-provider.js.map +1 -1
  517. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  518. package/dist/core/resource-loader-assets.js +30 -4
  519. package/dist/core/resource-loader-assets.js.map +1 -1
  520. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  521. package/dist/core/resource-loader-context-files.js +3 -1
  522. package/dist/core/resource-loader-context-files.js.map +1 -1
  523. package/dist/core/resource-loader-core.d.ts +2 -1
  524. package/dist/core/resource-loader-core.d.ts.map +1 -1
  525. package/dist/core/resource-loader-core.js +3 -0
  526. package/dist/core/resource-loader-core.js.map +1 -1
  527. package/dist/core/resource-loader-extensions.d.ts +1 -0
  528. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  529. package/dist/core/resource-loader-extensions.js +120 -7
  530. package/dist/core/resource-loader-extensions.js.map +1 -1
  531. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  532. package/dist/core/resource-loader-package-resources.js +14 -1
  533. package/dist/core/resource-loader-package-resources.js.map +1 -1
  534. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  535. package/dist/core/resource-loader-reload.js +2 -1
  536. package/dist/core/resource-loader-reload.js.map +1 -1
  537. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  538. package/dist/core/resource-loader-source-info.js +6 -3
  539. package/dist/core/resource-loader-source-info.js.map +1 -1
  540. package/dist/core/sdk-types.d.ts +11 -10
  541. package/dist/core/sdk-types.d.ts.map +1 -1
  542. package/dist/core/sdk-types.js.map +1 -1
  543. package/dist/core/sdk.d.ts +1 -0
  544. package/dist/core/sdk.d.ts.map +1 -1
  545. package/dist/core/sdk.js +13 -84
  546. package/dist/core/sdk.js.map +1 -1
  547. package/dist/core/session-manager-core.d.ts +3 -3
  548. package/dist/core/session-manager-core.d.ts.map +1 -1
  549. package/dist/core/session-manager-core.js +18 -25
  550. package/dist/core/session-manager-core.js.map +1 -1
  551. package/dist/core/session-manager-entries.d.ts +2 -5
  552. package/dist/core/session-manager-entries.d.ts.map +1 -1
  553. package/dist/core/session-manager-entries.js +2 -8
  554. package/dist/core/session-manager-entries.js.map +1 -1
  555. package/dist/core/session-manager-history.d.ts +3 -3
  556. package/dist/core/session-manager-history.d.ts.map +1 -1
  557. package/dist/core/session-manager-history.js +49 -27
  558. package/dist/core/session-manager-history.js.map +1 -1
  559. package/dist/core/session-manager-storage.d.ts +6 -0
  560. package/dist/core/session-manager-storage.d.ts.map +1 -1
  561. package/dist/core/session-manager-storage.js +38 -5
  562. package/dist/core/session-manager-storage.js.map +1 -1
  563. package/dist/core/session-manager-types.d.ts +6 -6
  564. package/dist/core/session-manager-types.d.ts.map +1 -1
  565. package/dist/core/session-manager-types.js.map +1 -1
  566. package/dist/core/session-manager.d.ts +1 -1
  567. package/dist/core/session-manager.d.ts.map +1 -1
  568. package/dist/core/session-manager.js.map +1 -1
  569. package/dist/core/settings-manager-basic-accessors.d.ts +0 -4
  570. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  571. package/dist/core/settings-manager-basic-accessors.js +0 -50
  572. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  573. package/dist/core/settings-manager-core.d.ts +2 -4
  574. package/dist/core/settings-manager-core.d.ts.map +1 -1
  575. package/dist/core/settings-manager-core.js +5 -51
  576. package/dist/core/settings-manager-core.js.map +1 -1
  577. package/dist/core/settings-manager.d.ts +1 -1
  578. package/dist/core/settings-manager.d.ts.map +1 -1
  579. package/dist/core/settings-manager.js.map +1 -1
  580. package/dist/core/settings-storage.d.ts +3 -1
  581. package/dist/core/settings-storage.d.ts.map +1 -1
  582. package/dist/core/settings-storage.js +22 -0
  583. package/dist/core/settings-storage.js.map +1 -1
  584. package/dist/core/settings-types.d.ts +2 -4
  585. package/dist/core/settings-types.d.ts.map +1 -1
  586. package/dist/core/settings-types.js.map +1 -1
  587. package/dist/core/slash-commands.d.ts.map +1 -1
  588. package/dist/core/slash-commands.js +69 -23
  589. package/dist/core/slash-commands.js.map +1 -1
  590. package/dist/core/source-info.d.ts +3 -1
  591. package/dist/core/source-info.d.ts.map +1 -1
  592. package/dist/core/source-info.js +2 -0
  593. package/dist/core/source-info.js.map +1 -1
  594. package/dist/core/system-prompt.d.ts.map +1 -1
  595. package/dist/core/system-prompt.js +11 -0
  596. package/dist/core/system-prompt.js.map +1 -1
  597. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  598. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  599. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  600. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  601. package/dist/core/tools/bash-session-environment.js +35 -0
  602. package/dist/core/tools/bash-session-environment.js.map +1 -0
  603. package/dist/core/tools/bash.d.ts +4 -1
  604. package/dist/core/tools/bash.d.ts.map +1 -1
  605. package/dist/core/tools/bash.js +16 -8
  606. package/dist/core/tools/bash.js.map +1 -1
  607. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  608. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  609. package/dist/core/tools/tool-definition-wrapper.js +10 -2
  610. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  611. package/dist/extensions/index.js +1 -1
  612. package/dist/extensions/index.js.map +1 -1
  613. package/dist/extensions/llama/provider.d.ts +3 -2
  614. package/dist/extensions/llama/provider.d.ts.map +1 -1
  615. package/dist/extensions/llama/provider.js +9 -3
  616. package/dist/extensions/llama/provider.js.map +1 -1
  617. package/dist/index-extensions.d.ts +1 -1
  618. package/dist/index-extensions.d.ts.map +1 -1
  619. package/dist/index-extensions.js.map +1 -1
  620. package/dist/index.d.ts +2 -3
  621. package/dist/index.d.ts.map +1 -1
  622. package/dist/index.js +1 -2
  623. package/dist/index.js.map +1 -1
  624. package/dist/main-session-options.d.ts.map +1 -1
  625. package/dist/main-session-options.js +0 -4
  626. package/dist/main-session-options.js.map +1 -1
  627. package/dist/main-session.d.ts.map +1 -1
  628. package/dist/main-session.js +2 -1
  629. package/dist/main-session.js.map +1 -1
  630. package/dist/main.d.ts.map +1 -1
  631. package/dist/main.js +1 -17
  632. package/dist/main.js.map +1 -1
  633. package/dist/modes/index.d.ts +1 -1
  634. package/dist/modes/index.d.ts.map +1 -1
  635. package/dist/modes/index.js.map +1 -1
  636. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  637. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  638. package/dist/modes/interactive/chat-input-actions.js +14 -96
  639. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  640. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  641. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  642. package/dist/modes/interactive/components/atomic-banner.js +68 -24
  643. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  644. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  645. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  646. package/dist/modes/interactive/components/atomic-working-status.js +202 -0
  647. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  648. package/dist/modes/interactive/components/chat-message-renderer.js +1 -1
  649. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  650. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  651. package/dist/modes/interactive/components/chat-session-host-actions.js +99 -7
  652. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  653. package/dist/modes/interactive/components/chat-session-host-editor.js +3 -3
  654. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  655. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  656. package/dist/modes/interactive/components/chat-session-host-events.js +52 -9
  657. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  658. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  659. package/dist/modes/interactive/components/chat-session-host-rendering.js +23 -7
  660. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  661. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +2 -0
  662. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  663. package/dist/modes/interactive/components/chat-session-host-runtime.js +67 -18
  664. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  665. package/dist/modes/interactive/components/chat-session-host-state.d.ts +9 -0
  666. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  667. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  668. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  669. package/dist/modes/interactive/components/chat-session-host-types.d.ts +10 -0
  670. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  671. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  672. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  673. package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
  674. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  675. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  676. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  677. package/dist/modes/interactive/components/custom-message.js +9 -2
  678. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  679. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  680. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  681. package/dist/modes/interactive/components/extension-editor.js +14 -43
  682. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  683. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  684. package/dist/modes/interactive/components/scoped-models-selector.js +18 -13
  685. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  686. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  687. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  688. package/dist/modes/interactive/components/startup-identity.js +58 -0
  689. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  690. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  691. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  692. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  693. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  694. package/dist/modes/interactive/components/tree-selector-model.js +0 -1
  695. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  696. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  697. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  698. package/dist/modes/interactive/components/working-status.js +14 -15
  699. package/dist/modes/interactive/components/working-status.js.map +1 -1
  700. package/dist/modes/interactive/external-editor.d.ts +23 -0
  701. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  702. package/dist/modes/interactive/external-editor.js +120 -0
  703. package/dist/modes/interactive/external-editor.js.map +1 -0
  704. package/dist/modes/interactive/interactive-agent-events.js +25 -20
  705. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  706. package/dist/modes/interactive/interactive-auth-login.js +16 -6
  707. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  708. package/dist/modes/interactive/interactive-auth-routing.js +3 -0
  709. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  710. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  711. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  712. package/dist/modes/interactive/interactive-bash-compact.js +8 -0
  713. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  714. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  715. package/dist/modes/interactive/interactive-deferred-startup.js +49 -19
  716. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  717. package/dist/modes/interactive/interactive-editor-actions.js +4 -3
  718. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  719. package/dist/modes/interactive/interactive-extension-dialogs.js +1 -1
  720. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  721. package/dist/modes/interactive/interactive-extension-runtime.js +3 -2
  722. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  723. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  724. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  725. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  726. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  727. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  728. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  729. package/dist/modes/interactive/interactive-input-handling.js +27 -51
  730. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  731. package/dist/modes/interactive/interactive-mode-base.d.ts +11 -7
  732. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  733. package/dist/modes/interactive/interactive-mode-base.js +14 -6
  734. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  735. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -4
  736. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  737. package/dist/modes/interactive/interactive-mode-deps.js +2 -4
  738. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  739. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -8
  740. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  741. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  742. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  743. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  744. package/dist/modes/interactive/interactive-mode.js +1 -0
  745. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  746. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +2 -3
  747. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  748. package/dist/modes/interactive/interactive-model-catalog-startup.js +3 -6
  749. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  750. package/dist/modes/interactive/interactive-model-routing.js +26 -97
  751. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  752. package/dist/modes/interactive/interactive-pause.d.ts +4 -0
  753. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  754. package/dist/modes/interactive/interactive-pause.js +8 -0
  755. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  756. package/dist/modes/interactive/interactive-process-lifecycle.js +5 -4
  757. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  758. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  759. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  760. package/dist/modes/interactive/interactive-prompt-turn.js +41 -0
  761. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  762. package/dist/modes/interactive/interactive-render-chat.js +20 -8
  763. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  764. package/dist/modes/interactive/interactive-resource-paths.js +11 -2
  765. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  766. package/dist/modes/interactive/interactive-resource-rendering.js +99 -0
  767. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  768. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  769. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  770. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  771. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  772. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  773. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  774. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  775. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  776. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  777. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  778. package/dist/modes/interactive/interactive-startup.js +30 -25
  779. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  780. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
  781. package/dist/modes/interactive/interactive-summarization-retry-events.js +9 -3
  782. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  783. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  784. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  785. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  786. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  787. package/dist/modes/interactive/theme/dark.json +1 -1
  788. package/dist/modes/interactive/theme/light.json +1 -1
  789. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  790. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  791. package/dist/modes/interactive/theme/theme-class.js +7 -0
  792. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  793. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  794. package/dist/modes/interactive/theme/theme-loading.js +4 -0
  795. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  796. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  797. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  798. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  799. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  800. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  801. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  802. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  803. package/dist/modes/interactive/whimsical-messages.js +2 -2
  804. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  805. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  806. package/dist/modes/interactive-engine/create-isolated-runtime.js +3 -1
  807. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  808. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  809. package/dist/modes/interactive-engine/engine-args.js +0 -1
  810. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  811. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  812. package/dist/modes/interactive-engine/engine-custom-ui.js +5 -17
  813. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  814. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  815. package/dist/modes/interactive-engine/engine-render-service.js +8 -19
  816. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  817. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
  818. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  819. package/dist/modes/interactive-engine/extension-ui-bridge.js +3 -0
  820. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  821. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  822. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  823. package/dist/modes/interactive-engine/isolated-auth.js +14 -0
  824. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  825. package/dist/modes/interactive-engine/isolated-runtime.d.ts +9 -1
  826. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  827. package/dist/modes/interactive-engine/isolated-runtime.js +46 -34
  828. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  829. package/dist/modes/interactive-engine/protocol.d.ts +1 -1
  830. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  831. package/dist/modes/interactive-engine/protocol.js +3 -10
  832. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  833. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -0
  834. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  835. package/dist/modes/interactive-engine/remote-model-catalog.js +10 -1
  836. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  837. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  838. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  839. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  840. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  841. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  842. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  843. package/dist/modes/interactive-engine/remote-renderer.js +4 -1
  844. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  845. package/dist/modes/print-mode.d.ts.map +1 -1
  846. package/dist/modes/print-mode.js +5 -0
  847. package/dist/modes/print-mode.js.map +1 -1
  848. package/dist/modes/rpc/jsonl.d.ts +2 -7
  849. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  850. package/dist/modes/rpc/jsonl.js +7 -24
  851. package/dist/modes/rpc/jsonl.js.map +1 -1
  852. package/dist/modes/rpc/queued-writer.d.ts +19 -0
  853. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  854. package/dist/modes/rpc/{bounded-writer.js → queued-writer.js} +7 -30
  855. package/dist/modes/rpc/queued-writer.js.map +1 -0
  856. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  857. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  858. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  859. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  860. package/dist/modes/rpc/rpc-client-api.d.ts +8 -5
  861. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  862. package/dist/modes/rpc/rpc-client-api.js +10 -11
  863. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  864. package/dist/modes/rpc/rpc-client-process.d.ts +1 -4
  865. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  866. package/dist/modes/rpc/rpc-client-process.js +2 -14
  867. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  868. package/dist/modes/rpc/rpc-client.d.ts +8 -4
  869. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  870. package/dist/modes/rpc/rpc-client.js +21 -30
  871. package/dist/modes/rpc/rpc-client.js.map +1 -1
  872. package/dist/modes/rpc/rpc-command-handler.d.ts +7 -4
  873. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  874. package/dist/modes/rpc/rpc-command-handler.js +76 -93
  875. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  876. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  877. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  878. package/dist/modes/rpc/rpc-input-scheduler.js +7 -4
  879. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  880. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  881. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  882. package/dist/modes/rpc/rpc-mode.js +5 -5
  883. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  884. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  885. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  886. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  887. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  888. package/dist/modes/rpc/rpc-oauth-client.d.ts +22 -0
  889. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  890. package/dist/modes/rpc/rpc-oauth-client.js +74 -0
  891. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  892. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  893. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  894. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  895. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  896. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  897. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  898. package/dist/modes/rpc/rpc-output-buffer.js +4 -39
  899. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  900. package/dist/modes/rpc/rpc-provider-auth.d.ts +23 -0
  901. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  902. package/dist/modes/rpc/rpc-provider-auth.js +145 -0
  903. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  904. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  905. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  906. package/dist/modes/rpc/rpc-responses.js +0 -14
  907. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  908. package/dist/modes/rpc/rpc-types.d.ts +83 -27
  909. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  910. package/dist/modes/rpc/rpc-types.js.map +1 -1
  911. package/dist/utils/clipboard.d.ts.map +1 -1
  912. package/dist/utils/clipboard.js +21 -8
  913. package/dist/utils/clipboard.js.map +1 -1
  914. package/dist/utils/version-check.d.ts.map +1 -1
  915. package/dist/utils/version-check.js +3 -1
  916. package/dist/utils/version-check.js.map +1 -1
  917. package/docs/changelog.mdx +12 -1
  918. package/docs/compaction.md +101 -18
  919. package/docs/custom-provider.md +13 -4
  920. package/docs/docs.json +1 -0
  921. package/docs/environment-variables.md +37 -0
  922. package/docs/extensions.md +45 -9
  923. package/docs/index.md +1 -0
  924. package/docs/intercom.md +1 -1
  925. package/docs/json.md +4 -4
  926. package/docs/keybindings.md +4 -2
  927. package/docs/llama-cpp.md +3 -1
  928. package/docs/models.md +29 -43
  929. package/docs/providers.md +18 -24
  930. package/docs/quickstart.md +19 -16
  931. package/docs/rpc.md +38 -85
  932. package/docs/sdk.md +15 -22
  933. package/docs/session-format.md +2 -15
  934. package/docs/sessions.md +1 -1
  935. package/docs/settings.md +10 -15
  936. package/docs/skills.md +8 -0
  937. package/docs/subagents.md +24 -8
  938. package/docs/themes.md +10 -1
  939. package/docs/tui.md +3 -3
  940. package/docs/usage.md +30 -2
  941. package/docs/windows.md +1 -1
  942. package/docs/workflows.md +1128 -522
  943. package/examples/extensions/README.md +1 -1
  944. package/examples/extensions/handoff.ts +8 -1
  945. package/examples/extensions/message-renderer.ts +2 -2
  946. package/examples/extensions/summarize.ts +3 -0
  947. package/examples/extensions/working-indicator.ts +2 -2
  948. package/npm-shrinkwrap.json +40 -46
  949. package/package.json +9 -7
  950. package/dist/builtin/cursor/CHANGELOG.md +0 -281
  951. package/dist/builtin/cursor/LICENSE +0 -26
  952. package/dist/builtin/cursor/README.md +0 -24
  953. package/dist/builtin/cursor/index.ts +0 -9
  954. package/dist/builtin/cursor/package.json +0 -47
  955. package/dist/builtin/cursor/src/auth.ts +0 -352
  956. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  957. package/dist/builtin/cursor/src/config.ts +0 -123
  958. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  959. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  960. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  961. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  962. package/dist/builtin/cursor/src/models.ts +0 -54
  963. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  964. package/dist/builtin/cursor/src/proto/README.md +0 -34
  965. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  966. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  967. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  968. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  969. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  970. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  971. package/dist/builtin/cursor/src/provider.ts +0 -301
  972. package/dist/builtin/cursor/src/stream.ts +0 -494
  973. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  974. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  975. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  976. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  977. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  978. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  979. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  980. package/dist/builtin/cursor/src/transport.ts +0 -26
  981. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  982. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  983. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  984. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  985. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  986. package/dist/core/context-window.d.ts +0 -54
  987. package/dist/core/context-window.d.ts.map +0 -1
  988. package/dist/core/context-window.js +0 -110
  989. package/dist/core/context-window.js.map +0 -1
  990. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  991. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  992. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  993. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  994. package/dist/core/copilot-errors.d.ts +0 -9
  995. package/dist/core/copilot-errors.d.ts.map +0 -1
  996. package/dist/core/copilot-errors.js +0 -32
  997. package/dist/core/copilot-errors.js.map +0 -1
  998. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  999. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  1000. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  1001. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  1002. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  1003. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  1004. package/dist/core/copilot-gemini-reasoning.js +0 -265
  1005. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  1006. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  1007. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  1008. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  1009. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  1010. package/dist/core/copilot-hosts.d.ts +0 -12
  1011. package/dist/core/copilot-hosts.d.ts.map +0 -1
  1012. package/dist/core/copilot-hosts.js +0 -33
  1013. package/dist/core/copilot-hosts.js.map +0 -1
  1014. package/dist/core/copilot-model-catalog.d.ts +0 -114
  1015. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  1016. package/dist/core/copilot-model-catalog.js +0 -392
  1017. package/dist/core/copilot-model-catalog.js.map +0 -1
  1018. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  1019. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  1020. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  1021. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  1022. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  1023. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  1024. package/dist/core/copilot-model-synthesis.js +0 -91
  1025. package/dist/core/copilot-model-synthesis.js.map +0 -1
  1026. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  1027. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  1028. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  1029. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  1030. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  1031. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  1032. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-events.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentSession, AgentSessionEvent } from \"../../../core/agent-session.ts\";\nimport {\n VERBATIM_COMPACTION_PROMPT_VERSION,\n VERBATIM_COMPACTION_STRATEGY,\n type VerbatimCompactionDetails,\n type VerbatimCompactionResult,\n} from \"../../../core/compaction/index.ts\";\nimport {\n createVerbatimCompactionMessage,\n isVerbatimCompactionMessage,\n type CustomMessage,\n} from \"../../../core/messages.ts\";\nimport { pickWhimsicalWorkingMessage } from \"../whimsical-messages.ts\";\nimport { flushChatSessionCompactionQueue } from \"./chat-session-host-actions.ts\";\nimport {\n afterChatSessionEvent,\n decrementOptimisticUserSignature,\n} from \"./chat-session-host-runtime.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport {\n extractMessageText,\n isMessageLike,\n isUserMessageLike,\n userMessageSignature,\n} from \"./chat-session-host-utils.ts\";\n\ntype CompactionReason = \"manual\" | \"threshold\" | \"overflow\";\n\nfunction compactionStatusMessage(reason: CompactionReason): string {\n switch (reason) {\n case \"manual\":\n return \"Compacting context...\";\n case \"threshold\":\n return \"Auto-compacting...\";\n case \"overflow\":\n return \"Context overflow detected. Auto-compacting...\";\n }\n}\n\nfunction hasVerbatimCompactionMessage(messages: AgentSession[\"messages\"]): boolean {\n return messages.some(\n (message) => message.role === \"custom\" && isVerbatimCompactionMessage(message),\n );\n}\n\nfunction isCompleteCompactionResult(result: VerbatimCompactionResult): boolean {\n return (\n typeof result.compactedText === \"string\" &&\n typeof result.tokensBefore === \"number\" &&\n result.stats !== undefined &&\n result.parameters !== undefined &&\n result.promptVersion === VERBATIM_COMPACTION_PROMPT_VERSION &&\n (result.rung === \"planned\" || result.rung === \"extension\")\n );\n}\n\nfunction boundaryMessageFromResult(\n result: VerbatimCompactionResult,\n): CustomMessage<VerbatimCompactionDetails> | undefined {\n if (!isCompleteCompactionResult(result)) return undefined;\n const details = {\n strategy: VERBATIM_COMPACTION_STRATEGY,\n promptVersion: result.promptVersion,\n parameters: result.parameters,\n stats: result.stats,\n rung: result.rung,\n ...(result.backupPath === undefined ? {} : { backupPath: result.backupPath }),\n } satisfies VerbatimCompactionDetails;\n return createVerbatimCompactionMessage(\n result.compactedText,\n result.tokensBefore,\n new Date().toISOString(),\n details,\n ) as CustomMessage<VerbatimCompactionDetails>;\n}\n\nfunction customMessageText(message: CustomMessage): string {\n if (typeof message.content === \"string\") return message.content;\n return message.content\n .filter((block) => block.type === \"text\")\n .map((block) => block.text)\n .join(\"\\n\");\n}\n\nfunction transcriptHasBoundaryForResult(\n transcript: readonly ChatTranscriptEntryLike[],\n result: VerbatimCompactionResult,\n): boolean {\n return transcript.some((entry) => {\n const candidate = entry as ChatTranscriptEntryLike & {\n readonly kind?: string;\n readonly message?: CustomMessage;\n };\n return (\n candidate.kind === \"custom\" &&\n candidate.message?.role === \"custom\" &&\n isVerbatimCompactionMessage(candidate.message) &&\n customMessageText(candidate.message).endsWith(result.compactedText)\n );\n });\n}\n\nfunction refreshCompactedTranscript<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n result: VerbatimCompactionResult,\n): void {\n const compactedMessages = state.getAgentSession?.()?.messages;\n if (compactedMessages && hasVerbatimCompactionMessage(compactedMessages)) {\n state.liveChat.replaceMessages(compactedMessages, state.extraEntries);\n return;\n }\n if (transcriptHasBoundaryForResult(state.transcript, result)) return;\n const boundary = boundaryMessageFromResult(result);\n if (boundary) state.liveChat.appendMessages([boundary]);\n}\n\nexport function applyChatSessionAgentEvent<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n event: AgentSessionEvent,\n): boolean {\n const type = String((event as { type?: unknown }).type ?? \"\");\n if (type === \"message_start\") {\n const message = (event as { message?: unknown }).message;\n if (isUserMessageLike(message)) {\n const signature = userMessageSignature(extractMessageText(message.content));\n const count = state.optimisticUserSignatureCounts.get(signature) ?? 0;\n if (count > 0) {\n decrementOptimisticUserSignature(state, signature);\n return false;\n }\n }\n }\n if (isSharedLiveChatEvent(type)) {\n const changed = state.liveChat.applyEvent(event);\n const toolCallEvent = assistantToolCallEvent(event);\n const changedByToolCall = toolCallEvent !== undefined\n ? state.liveChat.applyEvent(toolCallEvent)\n : false;\n afterChatSessionEvent(state, changed || changedByToolCall);\n return changed || changedByToolCall;\n }\n let changed = false;\n switch (type) {\n case \"agent_start\":\n state.sdkBusy = true;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n break;\n case \"agent_end\":\n state.sdkBusy = false;\n state.workingMessage = undefined;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n if (state.compactionQueuedMessages.length > 0) {\n const idle = state.getAgentSession?.()?.agent.waitForIdle() ?? Promise.resolve();\n void idle.then(() => flushChatSessionCompactionQueue(state));\n }\n break;\n case \"turn_start\":\n state.workingMessage = pickWhimsicalWorkingMessage();\n changed = true;\n break;\n case \"turn_end\":\n state.workingMessage = undefined;\n changed = true;\n break;\n case \"queue_update\": {\n const queue = event as { steering?: unknown; followUp?: unknown };\n state.pendingSteeringMessages = Array.isArray(queue.steering)\n ? queue.steering.filter((item): item is string => typeof item === \"string\")\n : [];\n state.pendingFollowUpMessages = Array.isArray(queue.followUp)\n ? queue.followUp.filter((item): item is string => typeof item === \"string\")\n : [];\n changed = true;\n break;\n }\n case \"tool_call\":\n case \"tool_use\":\n changed = state.liveChat.applyEvent(legacyToolStartEvent(event));\n break;\n case \"tool_result\":\n changed = state.liveChat.applyEvent(legacyToolResultEvent(event));\n break;\n case \"thinking_delta\":\n case \"thinking\":\n changed = state.liveChat.applyEvent(legacyThinkingEvent(event));\n break;\n case \"compaction_start\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_start\" }>;\n state.compacting = true;\n state.sdkBusy = true;\n state.statusMessage = compactionStatusMessage(compaction.reason);\n changed = true;\n break;\n }\n case \"compaction_end\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_end\" }>;\n state.compacting = false;\n state.sdkBusy = compaction.midTurn === true;\n state.statusMessage = compaction.errorMessage ?? \"\";\n if (!compaction.aborted && !compaction.errorMessage && compaction.result) {\n refreshCompactedTranscript(state, compaction.result);\n }\n if (\n !compaction.midTurn &&\n !compaction.aborted &&\n !compaction.errorMessage &&\n state.compactionQueuedMessages.length > 0\n ) {\n void flushChatSessionCompactionQueue(state);\n }\n changed = true;\n break;\n }\n case \"summarization_retry_scheduled\":\n state.sdkBusy = true;\n state.statusMessage = \"retrying summary…\";\n changed = true;\n break;\n case \"summarization_retry_attempt_start\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"summarization_retry_attempt_start\" }>;\n state.sdkBusy = true;\n state.statusMessage = retry.source === \"branchSummary\" ? \"summarizing branch…\" : compactionStatusMessage(retry.reason);\n changed = true;\n break;\n }\n case \"summarization_retry_finished\":\n state.statusMessage = state.compacting ? \"Compacting context...\" : \"\";\n changed = true;\n break;\n case \"auto_retry_start\":\n state.sdkBusy = true;\n state.statusMessage = \"retrying…\";\n changed = true;\n break;\n case \"model_fallback_start\":\n state.sdkBusy = true;\n state.statusMessage = \"switching model…\";\n changed = true;\n break;\n case \"model_fallback_end\": {\n const fallback = event as Extract<AgentSessionEvent, { type: \"model_fallback_end\" }>;\n state.statusMessage = fallback.success ? \"\" : (fallback.finalError ?? \"model fallback failed\");\n if (!fallback.success) {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n }\n changed = true;\n break;\n }\n case \"auto_retry_end\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"auto_retry_end\" }>;\n state.statusMessage = \"\";\n if (!retry.success) {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n }\n changed = true;\n break;\n }\n case \"agent_continue_error\": {\n const continueError = event as Extract<AgentSessionEvent, { type: \"agent_continue_error\" }>;\n state.sdkBusy = false;\n state.statusMessage = continueError.errorMessage;\n state.workingMessage = undefined;\n changed = true;\n break;\n }\n default:\n changed = false;\n }\n afterChatSessionEvent(state, changed);\n return changed;\n}\n\nfunction isSharedLiveChatEvent(type: string): boolean {\n return (\n type === \"message_start\" ||\n type === \"message_update\" ||\n type === \"message_end\" ||\n type === \"tool_execution_start\" ||\n type === \"tool_execution_update\" ||\n type === \"tool_execution_end\"\n );\n}\n\nfunction assistantToolCallEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n const assistantEvent = (event as {\n assistantMessageEvent?: {\n type?: unknown;\n contentIndex?: unknown;\n partial?: unknown;\n toolCall?: unknown;\n };\n }).assistantMessageEvent;\n const streamType = String(assistantEvent?.type ?? \"\");\n if (!streamType.startsWith(\"toolcall_\")) return undefined;\n const explicit = toolCallPayload(assistantEvent?.toolCall);\n if (explicit) return explicit;\n const contentIndex = typeof assistantEvent?.contentIndex === \"number\" ? assistantEvent.contentIndex : undefined;\n if (contentIndex === undefined) return undefined;\n const partial = assistantEvent?.partial;\n if (!isMessageLike(partial) || partial.role !== \"assistant\") return undefined;\n const content = partial.content;\n if (!Array.isArray(content)) return undefined;\n return toolCallPayload(content[contentIndex]);\n}\n\nfunction toolCallPayload(value: unknown): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n if (value === null || typeof value !== \"object\") return undefined;\n const candidate = value as { type?: unknown; id?: unknown; name?: unknown; arguments?: unknown };\n if (candidate.type !== \"toolCall\") return undefined;\n if (typeof candidate.id !== \"string\" || typeof candidate.name !== \"string\") return undefined;\n return {\n type: \"tool_execution_start\",\n toolCallId: candidate.id,\n toolName: candidate.name,\n args: candidate.arguments ?? {},\n };\n}\n\nfunction legacyToolStartEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} {\n const payload = event as { toolCallId?: unknown; name?: unknown; input?: unknown; args?: unknown };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n return {\n type: \"tool_execution_start\",\n toolCallId,\n toolName,\n args: payload.input ?? payload.args ?? {},\n };\n}\n\nfunction legacyToolResultEvent(event: AgentSessionEvent): {\n type: \"tool_execution_end\";\n toolCallId: string;\n toolName: string;\n result: unknown;\n isError: boolean;\n} {\n const payload = event as {\n toolCallId?: unknown;\n name?: unknown;\n output?: unknown;\n isError?: unknown;\n };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n const output = payload.output;\n return {\n type: \"tool_execution_end\",\n toolCallId,\n toolName,\n result:\n output !== null && typeof output === \"object\" && \"content\" in output\n ? output\n : { content: typeof output === \"string\" ? [{ type: \"text\", text: output }] : [] },\n isError: payload.isError === true,\n };\n}\n\nfunction legacyThinkingEvent(event: AgentSessionEvent): {\n type: \"message_update\";\n assistantMessageEvent: { type: \"thinking_delta\"; delta: string };\n message: { role: \"assistant\"; content: [] };\n} {\n const delta = String(\n (event as { delta?: unknown }).delta ??\n (event as { text?: unknown }).text ??\n \"\",\n );\n return {\n type: \"message_update\",\n assistantMessageEvent: { type: \"thinking_delta\", delta },\n message: { role: \"assistant\", content: [] },\n };\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-events.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentSession, AgentSessionEvent } from \"../../../core/agent-session.ts\";\nimport {\n VERBATIM_COMPACTION_PROMPT_VERSION,\n VERBATIM_COMPACTION_STRATEGY,\n type CompactionRung,\n type VerbatimCompactionDetails,\n type VerbatimCompactionResult,\n} from \"../../../core/compaction/index.ts\";\nimport {\n createVerbatimCompactionMessage,\n isVerbatimCompactionMessage,\n type CustomMessage,\n} from \"../../../core/messages.ts\";\nimport { pickWhimsicalWorkingMessage } from \"../whimsical-messages.ts\";\nimport { flushChatSessionCompactionQueue } from \"./chat-session-host-actions.ts\";\nimport {\n afterChatSessionEvent,\n decrementOptimisticUserSignature,\n startChatSessionWorkingLifecycle,\n stopChatSessionWorkingLifecycle,\n} from \"./chat-session-host-runtime.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport {\n extractMessageText,\n isMessageLike,\n isUserMessageLike,\n userMessageSignature,\n} from \"./chat-session-host-utils.ts\";\n\ntype CompactionReason = \"manual\" | \"threshold\" | \"overflow\";\n\nfunction compactionStatusMessage(reason: CompactionReason): string {\n switch (reason) {\n case \"manual\":\n return \"Compacting context...\";\n case \"threshold\":\n return \"Auto-compacting...\";\n case \"overflow\":\n return \"Context overflow detected. Auto-compacting...\";\n }\n}\n\nfunction hasVerbatimCompactionMessage(messages: AgentSession[\"messages\"]): boolean {\n return messages.some(\n (message) => message.role === \"custom\" && isVerbatimCompactionMessage(message),\n );\n}\n\n/**\n * Every durable rung, derived from the union so a new member cannot be silently\n * rejected here. The event-only path (no session snapshot) is the one place a\n * `fresh` boundary would otherwise be dropped.\n */\nconst COMPACTION_RUNGS: ReadonlySet<CompactionRung> = new Set(\n [\"planned\", \"extension\", \"fresh\"] as const satisfies readonly CompactionRung[],\n);\n\nfunction isCompleteCompactionResult(result: VerbatimCompactionResult): boolean {\n return (\n typeof result.compactedText === \"string\" &&\n typeof result.tokensBefore === \"number\" &&\n result.stats !== undefined &&\n result.parameters !== undefined &&\n result.promptVersion === VERBATIM_COMPACTION_PROMPT_VERSION &&\n COMPACTION_RUNGS.has(result.rung)\n );\n}\n\nfunction boundaryMessageFromResult(\n result: VerbatimCompactionResult,\n): CustomMessage<VerbatimCompactionDetails> | undefined {\n if (!isCompleteCompactionResult(result)) return undefined;\n const details = {\n strategy: VERBATIM_COMPACTION_STRATEGY,\n promptVersion: result.promptVersion,\n parameters: result.parameters,\n stats: result.stats,\n rung: result.rung,\n // Preserve the borrowed-planner identity; the event-only path is otherwise\n // the one place it is lost.\n ...(result.plannerModel === undefined ? {} : { plannerModel: result.plannerModel }),\n ...(result.backupPath === undefined ? {} : { backupPath: result.backupPath }),\n } satisfies VerbatimCompactionDetails;\n return createVerbatimCompactionMessage(\n result.compactedText,\n result.tokensBefore,\n new Date().toISOString(),\n details,\n ) as CustomMessage<VerbatimCompactionDetails>;\n}\n\nfunction customMessageText(message: CustomMessage): string {\n if (typeof message.content === \"string\") return message.content;\n return message.content\n .filter((block) => block.type === \"text\")\n .map((block) => block.text)\n .join(\"\\n\");\n}\n\nfunction transcriptHasBoundaryForResult(\n transcript: readonly ChatTranscriptEntryLike[],\n result: VerbatimCompactionResult,\n): boolean {\n return transcript.some((entry) => {\n const candidate = entry as ChatTranscriptEntryLike & {\n readonly kind?: string;\n readonly message?: CustomMessage<VerbatimCompactionDetails>;\n };\n if (\n candidate.kind !== \"custom\" ||\n candidate.message?.role !== \"custom\" ||\n !isVerbatimCompactionMessage(candidate.message)\n ) {\n return false;\n }\n // The rung is part of the identity, not decoration. A planned and a fresh\n // boundary can carry identical text, and treating them as the same result\n // silently swallows the fresh event — the one the user is meant to see.\n if (candidate.message?.details?.rung !== result.rung) return false;\n return customMessageText(candidate.message).endsWith(result.compactedText);\n });\n}\n\nfunction refreshCompactedTranscript<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n result: VerbatimCompactionResult,\n): void {\n const compactedMessages = state.getAgentSession?.()?.messages;\n if (compactedMessages && hasVerbatimCompactionMessage(compactedMessages)) {\n state.liveChat.replaceMessages(compactedMessages, state.extraEntries);\n return;\n }\n if (transcriptHasBoundaryForResult(state.transcript, result)) return;\n const boundary = boundaryMessageFromResult(result);\n if (boundary) state.liveChat.appendMessages([boundary]);\n}\n\nexport function applyChatSessionAgentEvent<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n event: AgentSessionEvent,\n): boolean {\n if (state.disposed) return false;\n const type = String((event as { type?: unknown }).type ?? \"\");\n if (type === \"message_start\") {\n const message = (event as { message?: unknown }).message;\n if (isUserMessageLike(message)) {\n const signature = userMessageSignature(extractMessageText(message.content));\n const count = state.optimisticUserSignatureCounts.get(signature) ?? 0;\n if (count > 0) {\n decrementOptimisticUserSignature(state, signature);\n return false;\n }\n }\n }\n if (isSharedLiveChatEvent(type)) {\n const changed = state.liveChat.applyEvent(event);\n const toolCallEvent = assistantToolCallEvent(event);\n const changedByToolCall = toolCallEvent !== undefined\n ? state.liveChat.applyEvent(toolCallEvent)\n : false;\n afterChatSessionEvent(state, changed || changedByToolCall);\n return changed || changedByToolCall;\n }\n let changed = false;\n switch (type) {\n case \"agent_start\":\n state.sdkBusy = true;\n state.workingMessage = undefined;\n startChatSessionWorkingLifecycle(state);\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n break;\n case \"agent_end\":\n state.sdkBusy = false;\n state.compacting = false;\n state.workingMessage = undefined;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n if (state.compactionQueuedMessages.length > 0) {\n const idle = state.getAgentSession?.()?.agent.waitForIdle() ?? Promise.resolve();\n void idle.then(() => flushChatSessionCompactionQueue(state));\n }\n break;\n case \"turn_start\":\n startChatSessionWorkingLifecycle(state);\n state.workingMessage = pickWhimsicalWorkingMessage();\n changed = true;\n break;\n case \"turn_end\":\n state.compacting = false;\n state.workingMessage = undefined;\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n break;\n case \"queue_update\": {\n const queue = event as { steering?: unknown; followUp?: unknown };\n state.pendingSteeringMessages = Array.isArray(queue.steering)\n ? queue.steering.filter((item): item is string => typeof item === \"string\")\n : [];\n state.pendingFollowUpMessages = Array.isArray(queue.followUp)\n ? queue.followUp.filter((item): item is string => typeof item === \"string\")\n : [];\n changed = true;\n break;\n }\n case \"tool_call\":\n case \"tool_use\":\n changed = state.liveChat.applyEvent(legacyToolStartEvent(event));\n break;\n case \"tool_result\":\n changed = state.liveChat.applyEvent(legacyToolResultEvent(event));\n break;\n case \"thinking_delta\":\n case \"thinking\":\n changed = state.liveChat.applyEvent(legacyThinkingEvent(event));\n break;\n case \"compaction_start\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_start\" }>;\n state.compacting = true;\n state.sdkBusy = true;\n state.statusMessage = compactionStatusMessage(compaction.reason);\n changed = true;\n break;\n }\n case \"compaction_end\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_end\" }>;\n state.compacting = false;\n state.sdkBusy = compaction.midTurn === true;\n state.statusMessage = compaction.errorMessage ?? \"\";\n if (compaction.midTurn !== true || compaction.aborted || compaction.errorMessage) {\n state.workingMessage = undefined;\n stopChatSessionWorkingLifecycle(state);\n }\n // `result` and `errorMessage` are independent facts. The post-tool gate can\n // report a hard-input-limit failure *after* the boundary was already\n // committed, and skipping the refresh there hid a durable context\n // destruction behind an error line. Show the boundary, then the status.\n if (!compaction.aborted && compaction.result) {\n refreshCompactedTranscript(state, compaction.result);\n }\n if (\n !compaction.midTurn &&\n !compaction.aborted &&\n !compaction.errorMessage &&\n state.compactionQueuedMessages.length > 0\n ) {\n void flushChatSessionCompactionQueue(state);\n }\n changed = true;\n break;\n }\n case \"summarization_retry_scheduled\":\n state.sdkBusy = true;\n state.statusMessage = \"retrying summary…\";\n changed = true;\n break;\n case \"summarization_retry_attempt_start\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"summarization_retry_attempt_start\" }>;\n state.sdkBusy = true;\n state.statusMessage = retry.source === \"branchSummary\" ? \"summarizing branch…\" : compactionStatusMessage(retry.reason);\n changed = true;\n break;\n }\n case \"summarization_retry_finished\":\n state.statusMessage = state.compacting ? \"Compacting context...\" : \"\";\n changed = true;\n break;\n case \"auto_retry_start\":\n state.sdkBusy = true;\n state.workingMessage = undefined;\n state.statusMessage = \"retrying…\";\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n break;\n case \"model_fallback_start\":\n state.sdkBusy = true;\n state.workingMessage = undefined;\n state.statusMessage = \"switching model…\";\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n break;\n case \"model_fallback_end\": {\n const fallback = event as Extract<AgentSessionEvent, { type: \"model_fallback_end\" }>;\n state.statusMessage = fallback.success ? \"\" : (fallback.finalError ?? \"model fallback failed\");\n state.workingMessage = undefined;\n if (!fallback.success) {\n state.sdkBusy = false;\n state.compacting = false;\n }\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n break;\n }\n case \"auto_retry_end\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"auto_retry_end\" }>;\n state.statusMessage = \"\";\n state.workingMessage = undefined;\n if (!retry.success) {\n state.sdkBusy = false;\n state.compacting = false;\n }\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n break;\n }\n case \"agent_continue_error\": {\n const continueError = event as Extract<AgentSessionEvent, { type: \"agent_continue_error\" }>;\n state.sdkBusy = false;\n state.compacting = false;\n state.statusMessage = continueError.errorMessage;\n state.workingMessage = undefined;\n stopChatSessionWorkingLifecycle(state);\n changed = true;\n break;\n }\n default:\n changed = false;\n }\n afterChatSessionEvent(state, changed);\n return changed;\n}\n\nfunction isSharedLiveChatEvent(type: string): boolean {\n return (\n type === \"message_start\" ||\n type === \"message_update\" ||\n type === \"message_end\" ||\n type === \"tool_execution_start\" ||\n type === \"tool_execution_update\" ||\n type === \"tool_execution_end\"\n );\n}\n\nfunction assistantToolCallEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n const assistantEvent = (event as {\n assistantMessageEvent?: {\n type?: unknown;\n contentIndex?: unknown;\n partial?: unknown;\n toolCall?: unknown;\n };\n }).assistantMessageEvent;\n const streamType = String(assistantEvent?.type ?? \"\");\n if (!streamType.startsWith(\"toolcall_\")) return undefined;\n const explicit = toolCallPayload(assistantEvent?.toolCall);\n if (explicit) return explicit;\n const contentIndex = typeof assistantEvent?.contentIndex === \"number\" ? assistantEvent.contentIndex : undefined;\n if (contentIndex === undefined) return undefined;\n const partial = assistantEvent?.partial;\n if (!isMessageLike(partial) || partial.role !== \"assistant\") return undefined;\n const content = partial.content;\n if (!Array.isArray(content)) return undefined;\n return toolCallPayload(content[contentIndex]);\n}\n\nfunction toolCallPayload(value: unknown): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n if (value === null || typeof value !== \"object\") return undefined;\n const candidate = value as { type?: unknown; id?: unknown; name?: unknown; arguments?: unknown };\n if (candidate.type !== \"toolCall\") return undefined;\n if (typeof candidate.id !== \"string\" || typeof candidate.name !== \"string\") return undefined;\n return {\n type: \"tool_execution_start\",\n toolCallId: candidate.id,\n toolName: candidate.name,\n args: candidate.arguments ?? {},\n };\n}\n\nfunction legacyToolStartEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} {\n const payload = event as { toolCallId?: unknown; name?: unknown; input?: unknown; args?: unknown };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n return {\n type: \"tool_execution_start\",\n toolCallId,\n toolName,\n args: payload.input ?? payload.args ?? {},\n };\n}\n\nfunction legacyToolResultEvent(event: AgentSessionEvent): {\n type: \"tool_execution_end\";\n toolCallId: string;\n toolName: string;\n result: unknown;\n isError: boolean;\n} {\n const payload = event as {\n toolCallId?: unknown;\n name?: unknown;\n output?: unknown;\n isError?: unknown;\n };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n const output = payload.output;\n return {\n type: \"tool_execution_end\",\n toolCallId,\n toolName,\n result:\n output !== null && typeof output === \"object\" && \"content\" in output\n ? output\n : { content: typeof output === \"string\" ? [{ type: \"text\", text: output }] : [] },\n isError: payload.isError === true,\n };\n}\n\nfunction legacyThinkingEvent(event: AgentSessionEvent): {\n type: \"message_update\";\n assistantMessageEvent: { type: \"thinking_delta\"; delta: string };\n message: { role: \"assistant\"; content: [] };\n} {\n const delta = String(\n (event as { delta?: unknown }).delta ??\n (event as { text?: unknown }).text ??\n \"\",\n );\n return {\n type: \"message_update\",\n assistantMessageEvent: { type: \"thinking_delta\", delta },\n message: { role: \"assistant\", content: [] },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-rendering.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,wBAAwB,CAAC;AAOhC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAgBzE,wBAAgB,qBAAqB,CACnC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAaV;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBnE;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAWnE;AAED,wBAAgB,sBAAsB,CAAC,WAAW,SAAS,uBAAuB,EAChF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAIV;AAED,wBAAgB,uBAAuB,CAAC,WAAW,SAAS,uBAAuB,EACjF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,MAAM,EAAE,CAwBV;AAED,wBAAgB,uBAAuB,CAAC,WAAW,SAAS,uBAAuB,EACjF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAUV;AAED,wBAAgB,sBAAsB,CACpC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,SAAS,CAcX;AAED,wBAAgB,kBAAkB,CAAC,WAAW,SAAS,uBAAuB,EAC5E,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR"}
1
+ {"version":3,"file":"chat-session-host-rendering.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,wBAAwB,CAAC;AAOhC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAezE,wBAAgB,qBAAqB,CACnC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAaV;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBnE;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBnE;AAED,wBAAgB,sBAAsB,CAAC,WAAW,SAAS,uBAAuB,EAChF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAIV;AAED,wBAAgB,uBAAuB,CAAC,WAAW,SAAS,uBAAuB,EACjF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,MAAM,EAAE,CAwBV;AAED,wBAAgB,uBAAuB,CAAC,WAAW,SAAS,uBAAuB,EACjF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAUV;AAED,wBAAgB,sBAAsB,CACpC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,SAAS,CAcX;AAED,wBAAgB,kBAAkB,CAAC,WAAW,SAAS,uBAAuB,EAC5E,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR"}
@@ -3,7 +3,7 @@ import { UsageMeterComponent, FooterComponent } from "./footer.js";
3
3
  import { renderChatMessageEntry, } from "./chat-message-renderer.js";
4
4
  import { setEditorBorderColor, setEditorFocused, setEditorPlaceholder, } from "./chat-session-host-editor.js";
5
5
  import { isChatSessionStreaming } from "./chat-session-host-runtime.js";
6
- import { cacheKey, isChatMessageEntry, spinnerFrame, stripAnsi, tailStreamingText, } from "./chat-session-host-utils.js";
6
+ import { cacheKey, isChatMessageEntry, stripAnsi, tailStreamingText, } from "./chat-session-host-utils.js";
7
7
  import { WorkingStatusComponent } from "./working-status.js";
8
8
  export function renderChatSessionBody(state, width, budget) {
9
9
  const components = [];
@@ -42,13 +42,29 @@ export function renderChatSessionPendingMessages(state, width) {
42
42
  export function renderChatSessionWorkingStatus(state, width) {
43
43
  if (!isChatSessionStreaming(state))
44
44
  return [];
45
- const message = state.compacting
46
- ? state.statusMessage || "Compacting context..."
47
- : state.workingMessage ?? "Working...";
45
+ if (state.statusMessage && !state.compacting)
46
+ return [];
47
+ const palette = state.style.workingIndicatorPalette;
48
+ const useCallerStyling = !palette && state.style.workingIndicatorUseGlobalTheme !== true && process.env.NO_COLOR === undefined;
49
+ if (state.compacting) {
50
+ const cancelHint = `(${state.getActionKeyDisplay?.("app.interrupt") ?? "esc"} Cancel)`;
51
+ return new WorkingStatusComponent({
52
+ frame: state.workingFrame,
53
+ message: `${state.statusMessage || "Compacting context..."} ${cancelHint}`,
54
+ palette,
55
+ spinnerColor: useCallerStyling ? (text) => state.style.accent(text) : undefined,
56
+ spinnerBoldColor: useCallerStyling ? (text) => state.style.accentBold(text) : undefined,
57
+ messageColor: (text) => state.style.textMuted(text),
58
+ }).render(width);
59
+ }
60
+ if (!state.workingLifecycleActive)
61
+ return [];
48
62
  return new WorkingStatusComponent({
49
- spinner: spinnerFrame(),
50
- message,
51
- spinnerColor: (text) => state.style.accentBold(text),
63
+ frame: state.workingFrame,
64
+ message: state.workingMessage ?? "Working...",
65
+ palette,
66
+ spinnerColor: useCallerStyling ? (text) => state.style.accent(text) : undefined,
67
+ spinnerBoldColor: useCallerStyling ? (text) => state.style.accentBold(text) : undefined,
52
68
  messageColor: (text) => state.style.textMuted(text),
53
69
  }).render(width);
54
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-rendering.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-rendering.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Component,\n type TUI,\n Spacer,\n Text,\n truncateToWidth,\n visibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport { UsageMeterComponent, FooterComponent } from \"./footer.ts\";\nimport {\n renderChatMessageEntry,\n type ChatMessageEntry,\n type ChatMessageRenderOptions,\n} from \"./chat-message-renderer.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatSessionHostEntry } from \"./chat-session-host-types.ts\";\nimport {\n setEditorBorderColor,\n setEditorFocused,\n setEditorPlaceholder,\n} from \"./chat-session-host-editor.ts\";\nimport { isChatSessionStreaming } from \"./chat-session-host-runtime.ts\";\nimport {\n cacheKey,\n isChatMessageEntry,\n spinnerFrame,\n stripAnsi,\n tailStreamingText,\n} from \"./chat-session-host-utils.ts\";\nimport { WorkingStatusComponent } from \"./working-status.ts\";\n\nexport function renderChatSessionBody<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n budget: number,\n): string[] {\n const components: Component[] = [];\n state.transcriptRenderSettingsKey = chatRenderSettingsCacheKey(state);\n if (state.transcript.length > 0) {\n components.push(state.transcriptComponent);\n }\n if (state.statusMessage && !state.compacting) {\n components.push(new Spacer(1));\n components.push(new Text(state.style.dim(state.statusMessage), 2, 0));\n }\n state.bodyViewport.setVisibleRows(budget);\n state.bodyViewport.setComponents(components);\n return state.bodyViewport.render(width);\n}\n\nexport function renderChatSessionPendingMessages<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>, width: number): string[] {\n if (\n state.pendingSteeringMessages.length === 0 &&\n state.pendingFollowUpMessages.length === 0 &&\n state.compactionQueuedMessages.length === 0\n ) {\n return [];\n }\n const lines = [state.style.blank(width)];\n for (const message of state.pendingSteeringMessages) {\n lines.push(...pendingMessageLine(state, width, \"Steering\", message));\n }\n for (const message of state.pendingFollowUpMessages) {\n lines.push(...pendingMessageLine(state, width, \"Follow-up\", message));\n }\n for (const message of state.compactionQueuedMessages) {\n lines.push(...pendingMessageLine(state, width, \"Queued\", message));\n }\n const hint = state.getActionKeyDisplay?.(\"app.message.dequeue\") ?? \"alt+up\";\n lines.push(...new Text(state.style.dim(`↳ ${hint} to edit all queued messages`), 1, 0).render(width));\n return lines;\n}\n\nexport function renderChatSessionWorkingStatus<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>, width: number): string[] {\n if (!isChatSessionStreaming(state)) return [];\n const message = state.compacting\n ? state.statusMessage || \"Compacting context...\"\n : state.workingMessage ?? \"Working...\";\n return new WorkingStatusComponent({\n spinner: spinnerFrame(),\n message,\n spinnerColor: (text) => state.style.accentBold(text),\n messageColor: (text) => state.style.textMuted(text),\n }).render(width);\n}\n\nexport function renderChatSessionUsage<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n): string[] {\n const agentSession = state.getAgentSession?.();\n if (!agentSession) return [];\n return new UsageMeterComponent(agentSession).render(width);\n}\n\nexport function renderChatSessionEditor<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n focused: boolean,\n): string[] {\n const disabled = state.isDisabled?.() === true;\n const agentSession = state.getAgentSession?.();\n const ruleHex = state.style.editorRuleColor(disabled, agentSession, {\n isBashMode: state.isBashMode,\n });\n if (!disabled && state.editor) {\n setEditorFocused(state.editor, focused);\n setEditorPlaceholder(state.editor, undefined);\n setEditorBorderColor(state.editor, (text) => state.style.rule(ruleHex, text));\n return state.editor.render(width);\n }\n if (state.editor) setEditorFocused(state.editor, false);\n const rule = state.style.rule(ruleHex, \"─\".repeat(width));\n const available = Math.max(1, width - 3);\n const value = state.inputBuffer\n ? state.style.text(truncateToWidth(state.inputBuffer, available)) + state.style.cursor()\n : disabled\n ? \"\"\n : state.style.cursor();\n const left = state.style.accentBold(\"❯\") + \" \" + value;\n const gap = Math.max(0, width - visibleWidth(stripAnsi(left)));\n const body = left + \" \".repeat(gap);\n return [rule, body, rule];\n}\n\nexport function renderChatSessionFooter<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n): string[] {\n const agentSession = state.getAgentSession?.();\n if (agentSession && state.footerData) {\n return new FooterComponent(agentSession, state.footerData, {\n dim: (text) => state.style.dim(text),\n muted: (text) => state.style.textMuted(text),\n warning: (text) => state.style.accent(text),\n }).render(width);\n }\n return [];\n}\n\nexport function renderChatSessionEntry<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n): Component {\n if (state.extraEntries.includes(entry as TExtraEntry)) {\n return state.renderExtraEntry?.(entry as TExtraEntry) ?? new Text(\"\", 0, 0);\n }\n if (isChatMessageEntry(entry)) {\n return renderChatMessageEntry(\n streamingWindowedEntry(state, entry),\n chatMessageRenderOptions(state),\n );\n }\n if (!state.renderExtraEntry) {\n return new Text(\"\", 0, 0);\n }\n return state.renderExtraEntry(entry);\n}\n\nexport function transcriptCacheKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n index: number,\n): string {\n return cacheKey([\n state.transcriptRenderSettingsKey,\n index,\n entry.role,\n renderIdentityKey(state, entry),\n entryContentCacheKey(state, entry),\n ]);\n}\n\nfunction streamingWindowedEntry<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatMessageEntry,\n): ChatMessageEntry {\n if (!isChatSessionStreaming(state) || state.bodyViewport.getScrollFromBottom() !== 0) {\n return entry;\n }\n if (entry.kind !== \"assistant\") return entry;\n const content = entry.message.content.map((item) => {\n if (item.type === \"text\") return { ...item, text: tailStreamingText(item.text) };\n if (item.type === \"thinking\") return { ...item, thinking: tailStreamingText(item.thinking) };\n return item;\n });\n return { ...entry, message: { ...entry.message, content } };\n}\n\nfunction chatMessageRenderOptions<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): ChatMessageRenderOptions {\n const inherited = state.getChatRenderSettings?.();\n return {\n ...inherited,\n ui: toolTui(state),\n cwd: state.getCwd?.() ?? state.getAgentSession?.()?.sessionManager.getCwd() ?? process.cwd(),\n markdownTheme: inherited?.markdownTheme ?? state.getMarkdownTheme?.(),\n showImages: inherited?.showImages ?? true,\n };\n}\n\nfunction toolTui<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): Pick<TUI, \"requestRender\"> {\n return { requestRender: () => state.requestRender?.() };\n}\n\nfunction chatRenderSettingsCacheKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): string {\n const inherited = state.getChatRenderSettings?.();\n return cacheKey([\n \"settings\",\n inherited?.hideThinkingBlock === true,\n inherited?.hiddenThinkingLabel ?? \"\",\n inherited?.toolOutputExpanded === true,\n inherited?.showImages !== false,\n inherited?.imageWidthCells ?? null,\n inherited?.outputPad ?? null,\n state.getCwd?.() ?? state.getAgentSession?.()?.sessionManager.getCwd() ?? process.cwd(),\n state.bodyViewport.getScrollFromBottom() === 0,\n isChatSessionStreaming(state),\n ]);\n}\n\nfunction entryContentCacheKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n): string {\n if (!isChatMessageEntry(entry)) return cacheKey([\"extra\"]);\n switch (entry.kind) {\n case \"assistant\":\n return cacheKey([\"assistant\", renderIdentityKey(state, entry.message)]);\n case \"tool\":\n return cacheKey([\"tool\", entry.toolCallId, entry.toolName, entry.isPartial === true, entry.result === undefined ? null : renderIdentityKey(state, entry.result)]);\n case \"bashExecution\":\n return cacheKey([\"bashExecution\", entry.isPartial === true, entry.message.command, entry.message.output, entry.message.exitCode ?? null, entry.message.cancelled, entry.message.truncated, entry.message.fullOutputPath ?? null]);\n case \"user\":\n return cacheKey([\"user\", entry.text]);\n case \"custom\":\n return cacheKey([\"custom\", renderIdentityKey(state, entry.message)]);\n case \"branchSummary\":\n return cacheKey([\"branchSummary\", renderIdentityKey(state, entry.message)]);\n case \"system\":\n return cacheKey([\"system\", entry.text]);\n }\n}\n\nfunction renderIdentityKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n value: object,\n): string {\n const existing = state.renderIdentityIds.get(value);\n if (existing !== undefined) return String(existing);\n const id = state.nextRenderIdentityId;\n state.nextRenderIdentityId += 1;\n state.renderIdentityIds.set(value, id);\n return String(id);\n}\n\nfunction pendingMessageLine<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n label: \"Steering\" | \"Follow-up\" | \"Queued\",\n message: string,\n): string[] {\n const text = `${label}: ${message}`;\n return new Text(\n state.style.dim(truncateToWidth(text, Math.max(1, width - 2))),\n 1,\n 0,\n ).render(width);\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-rendering.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,IAAI,EACJ,eAAe,EACf,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,sBAAsB,GAGvB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,UAAU,qBAAqB,CAGnC,KAAwC,EACxC,KAAa,EACb,MAAc;IAEd,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,CAAC,2BAA2B,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gCAAgC,CAE9C,KAAwC,EAAE,KAAa;IACvD,IACE,KAAK,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC;QAC1C,KAAK,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC;QAC1C,KAAK,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC,EAC3C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,qBAAqB,CAAC,IAAI,QAAQ,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtG,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,8BAA8B,CAE5C,KAAwC,EAAE,KAAa;IACvD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9C,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACpD,MAAM,gBAAgB,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,8BAA8B,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC/H,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,IAAI,KAAK,UAAU,CAAC;QACvF,OAAO,IAAI,sBAAsB,CAAC;YAChC,KAAK,EAAE,KAAK,CAAC,YAAY;YACzB,OAAO,EAAE,GAAG,KAAK,CAAC,aAAa,IAAI,uBAAuB,IAAI,UAAU,EAAE;YAC1E,OAAO;YACP,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC/E,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACvF,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;SACpD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,sBAAsB;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,IAAI,sBAAsB,CAAC;QAChC,KAAK,EAAE,KAAK,CAAC,YAAY;QACzB,OAAO,EAAE,KAAK,CAAC,cAAc,IAAI,YAAY;QAC7C,OAAO;QACP,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/E,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACvF,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;KACpD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAwC,EACxC,KAAa;IAEb,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;IAC/C,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwC,EACxC,KAAa,EACb,OAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,IAAI,CAAC;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE;QAClE,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM;QAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW;QAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;QACxF,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwC,EACxC,KAAa;IAEb,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;IAC/C,IAAI,YAAY,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrC,OAAO,IAAI,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE;YACzD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACpC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5C,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;SAC5C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAGpC,KAAwC,EACxC,KAAwC;IAExC,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAoB,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAoB,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAC3B,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,EACpC,wBAAwB,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5B,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAwC,EACxC,KAAwC,EACxC,KAAa;IAEb,OAAO,QAAQ,CAAC;QACd,KAAK,CAAC,2BAA2B;QACjC,KAAK;QACL,KAAK,CAAC,IAAI;QACV,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;QAC/B,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAwC,EACxC,KAAuB;IAEvB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAwC;IAExC,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC;IAClD,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAClB,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE;QAC5F,aAAa,EAAE,SAAS,EAAE,aAAa,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE;QACrE,UAAU,EAAE,SAAS,EAAE,UAAU,IAAI,IAAI;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CACd,KAAwC;IAExC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAwC;IAExC,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC;IAClD,OAAO,QAAQ,CAAC;QACd,UAAU;QACV,SAAS,EAAE,iBAAiB,KAAK,IAAI;QACrC,SAAS,EAAE,mBAAmB,IAAI,EAAE;QACpC,SAAS,EAAE,kBAAkB,KAAK,IAAI;QACtC,SAAS,EAAE,UAAU,KAAK,KAAK;QAC/B,SAAS,EAAE,eAAe,IAAI,IAAI;QAClC,SAAS,EAAE,SAAS,IAAI,IAAI;QAC5B,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE;QACvF,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;QAC9C,sBAAsB,CAAC,KAAK,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAwC,EACxC,KAAwC;IAExC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpK,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC;QACpO,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvE,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9E,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAwC,EACxC,KAAa;IAEb,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC;IACtC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAChC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAwC,EACxC,KAAa,EACb,KAA0C,EAC1C,OAAe;IAEf,MAAM,IAAI,GAAG,GAAG,KAAK,KAAK,OAAO,EAAE,CAAC;IACpC,OAAO,IAAI,IAAI,CACb,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAC9D,CAAC,EACD,CAAC,CACF,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,CAAC","sourcesContent":["import {\n type Component,\n type TUI,\n Spacer,\n Text,\n truncateToWidth,\n visibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport { UsageMeterComponent, FooterComponent } from \"./footer.ts\";\nimport {\n renderChatMessageEntry,\n type ChatMessageEntry,\n type ChatMessageRenderOptions,\n} from \"./chat-message-renderer.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatSessionHostEntry } from \"./chat-session-host-types.ts\";\nimport {\n setEditorBorderColor,\n setEditorFocused,\n setEditorPlaceholder,\n} from \"./chat-session-host-editor.ts\";\nimport { isChatSessionStreaming } from \"./chat-session-host-runtime.ts\";\nimport {\n cacheKey,\n isChatMessageEntry,\n stripAnsi,\n tailStreamingText,\n} from \"./chat-session-host-utils.ts\";\nimport { WorkingStatusComponent } from \"./working-status.ts\";\n\nexport function renderChatSessionBody<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n budget: number,\n): string[] {\n const components: Component[] = [];\n state.transcriptRenderSettingsKey = chatRenderSettingsCacheKey(state);\n if (state.transcript.length > 0) {\n components.push(state.transcriptComponent);\n }\n if (state.statusMessage && !state.compacting) {\n components.push(new Spacer(1));\n components.push(new Text(state.style.dim(state.statusMessage), 2, 0));\n }\n state.bodyViewport.setVisibleRows(budget);\n state.bodyViewport.setComponents(components);\n return state.bodyViewport.render(width);\n}\n\nexport function renderChatSessionPendingMessages<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>, width: number): string[] {\n if (\n state.pendingSteeringMessages.length === 0 &&\n state.pendingFollowUpMessages.length === 0 &&\n state.compactionQueuedMessages.length === 0\n ) {\n return [];\n }\n const lines = [state.style.blank(width)];\n for (const message of state.pendingSteeringMessages) {\n lines.push(...pendingMessageLine(state, width, \"Steering\", message));\n }\n for (const message of state.pendingFollowUpMessages) {\n lines.push(...pendingMessageLine(state, width, \"Follow-up\", message));\n }\n for (const message of state.compactionQueuedMessages) {\n lines.push(...pendingMessageLine(state, width, \"Queued\", message));\n }\n const hint = state.getActionKeyDisplay?.(\"app.message.dequeue\") ?? \"alt+up\";\n lines.push(...new Text(state.style.dim(`↳ ${hint} to edit all queued messages`), 1, 0).render(width));\n return lines;\n}\n\nexport function renderChatSessionWorkingStatus<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>, width: number): string[] {\n if (!isChatSessionStreaming(state)) return [];\n if (state.statusMessage && !state.compacting) return [];\n const palette = state.style.workingIndicatorPalette;\n const useCallerStyling = !palette && state.style.workingIndicatorUseGlobalTheme !== true && process.env.NO_COLOR === undefined;\n if (state.compacting) {\n const cancelHint = `(${state.getActionKeyDisplay?.(\"app.interrupt\") ?? \"esc\"} Cancel)`;\n return new WorkingStatusComponent({\n frame: state.workingFrame,\n message: `${state.statusMessage || \"Compacting context...\"} ${cancelHint}`,\n palette,\n spinnerColor: useCallerStyling ? (text) => state.style.accent(text) : undefined,\n spinnerBoldColor: useCallerStyling ? (text) => state.style.accentBold(text) : undefined,\n messageColor: (text) => state.style.textMuted(text),\n }).render(width);\n }\n if (!state.workingLifecycleActive) return [];\n return new WorkingStatusComponent({\n frame: state.workingFrame,\n message: state.workingMessage ?? \"Working...\",\n palette,\n spinnerColor: useCallerStyling ? (text) => state.style.accent(text) : undefined,\n spinnerBoldColor: useCallerStyling ? (text) => state.style.accentBold(text) : undefined,\n messageColor: (text) => state.style.textMuted(text),\n }).render(width);\n}\n\nexport function renderChatSessionUsage<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n): string[] {\n const agentSession = state.getAgentSession?.();\n if (!agentSession) return [];\n return new UsageMeterComponent(agentSession).render(width);\n}\n\nexport function renderChatSessionEditor<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n focused: boolean,\n): string[] {\n const disabled = state.isDisabled?.() === true;\n const agentSession = state.getAgentSession?.();\n const ruleHex = state.style.editorRuleColor(disabled, agentSession, {\n isBashMode: state.isBashMode,\n });\n if (!disabled && state.editor) {\n setEditorFocused(state.editor, focused);\n setEditorPlaceholder(state.editor, undefined);\n setEditorBorderColor(state.editor, (text) => state.style.rule(ruleHex, text));\n return state.editor.render(width);\n }\n if (state.editor) setEditorFocused(state.editor, false);\n const rule = state.style.rule(ruleHex, \"─\".repeat(width));\n const available = Math.max(1, width - 3);\n const value = state.inputBuffer\n ? state.style.text(truncateToWidth(state.inputBuffer, available)) + state.style.cursor()\n : disabled\n ? \"\"\n : state.style.cursor();\n const left = state.style.accentBold(\"❯\") + \" \" + value;\n const gap = Math.max(0, width - visibleWidth(stripAnsi(left)));\n const body = left + \" \".repeat(gap);\n return [rule, body, rule];\n}\n\nexport function renderChatSessionFooter<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n): string[] {\n const agentSession = state.getAgentSession?.();\n if (agentSession && state.footerData) {\n return new FooterComponent(agentSession, state.footerData, {\n dim: (text) => state.style.dim(text),\n muted: (text) => state.style.textMuted(text),\n warning: (text) => state.style.accent(text),\n }).render(width);\n }\n return [];\n}\n\nexport function renderChatSessionEntry<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n): Component {\n if (state.extraEntries.includes(entry as TExtraEntry)) {\n return state.renderExtraEntry?.(entry as TExtraEntry) ?? new Text(\"\", 0, 0);\n }\n if (isChatMessageEntry(entry)) {\n return renderChatMessageEntry(\n streamingWindowedEntry(state, entry),\n chatMessageRenderOptions(state),\n );\n }\n if (!state.renderExtraEntry) {\n return new Text(\"\", 0, 0);\n }\n return state.renderExtraEntry(entry);\n}\n\nexport function transcriptCacheKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n index: number,\n): string {\n return cacheKey([\n state.transcriptRenderSettingsKey,\n index,\n entry.role,\n renderIdentityKey(state, entry),\n entryContentCacheKey(state, entry),\n ]);\n}\n\nfunction streamingWindowedEntry<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatMessageEntry,\n): ChatMessageEntry {\n if (!isChatSessionStreaming(state) || state.bodyViewport.getScrollFromBottom() !== 0) {\n return entry;\n }\n if (entry.kind !== \"assistant\") return entry;\n const content = entry.message.content.map((item) => {\n if (item.type === \"text\") return { ...item, text: tailStreamingText(item.text) };\n if (item.type === \"thinking\") return { ...item, thinking: tailStreamingText(item.thinking) };\n return item;\n });\n return { ...entry, message: { ...entry.message, content } };\n}\n\nfunction chatMessageRenderOptions<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): ChatMessageRenderOptions {\n const inherited = state.getChatRenderSettings?.();\n return {\n ...inherited,\n ui: toolTui(state),\n cwd: state.getCwd?.() ?? state.getAgentSession?.()?.sessionManager.getCwd() ?? process.cwd(),\n markdownTheme: inherited?.markdownTheme ?? state.getMarkdownTheme?.(),\n showImages: inherited?.showImages ?? true,\n };\n}\n\nfunction toolTui<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): Pick<TUI, \"requestRender\"> {\n return { requestRender: () => state.requestRender?.() };\n}\n\nfunction chatRenderSettingsCacheKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): string {\n const inherited = state.getChatRenderSettings?.();\n return cacheKey([\n \"settings\",\n inherited?.hideThinkingBlock === true,\n inherited?.hiddenThinkingLabel ?? \"\",\n inherited?.toolOutputExpanded === true,\n inherited?.showImages !== false,\n inherited?.imageWidthCells ?? null,\n inherited?.outputPad ?? null,\n state.getCwd?.() ?? state.getAgentSession?.()?.sessionManager.getCwd() ?? process.cwd(),\n state.bodyViewport.getScrollFromBottom() === 0,\n isChatSessionStreaming(state),\n ]);\n}\n\nfunction entryContentCacheKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n): string {\n if (!isChatMessageEntry(entry)) return cacheKey([\"extra\"]);\n switch (entry.kind) {\n case \"assistant\":\n return cacheKey([\"assistant\", renderIdentityKey(state, entry.message)]);\n case \"tool\":\n return cacheKey([\"tool\", entry.toolCallId, entry.toolName, entry.isPartial === true, entry.result === undefined ? null : renderIdentityKey(state, entry.result)]);\n case \"bashExecution\":\n return cacheKey([\"bashExecution\", entry.isPartial === true, entry.message.command, entry.message.output, entry.message.exitCode ?? null, entry.message.cancelled, entry.message.truncated, entry.message.fullOutputPath ?? null]);\n case \"user\":\n return cacheKey([\"user\", entry.text]);\n case \"custom\":\n return cacheKey([\"custom\", renderIdentityKey(state, entry.message)]);\n case \"branchSummary\":\n return cacheKey([\"branchSummary\", renderIdentityKey(state, entry.message)]);\n case \"system\":\n return cacheKey([\"system\", entry.text]);\n }\n}\n\nfunction renderIdentityKey<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n value: object,\n): string {\n const existing = state.renderIdentityIds.get(value);\n if (existing !== undefined) return String(existing);\n const id = state.nextRenderIdentityId;\n state.nextRenderIdentityId += 1;\n state.renderIdentityIds.set(value, id);\n return String(id);\n}\n\nfunction pendingMessageLine<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n width: number,\n label: \"Steering\" | \"Follow-up\" | \"Queued\",\n message: string,\n): string[] {\n const text = `${label}: ${message}`;\n return new Text(\n state.style.dim(truncateToWidth(text, Math.max(1, width - 2))),\n 1,\n 0,\n ).render(width);\n}\n"]}
@@ -4,6 +4,8 @@ export declare function isChatSessionStreaming<TExtraEntry extends ChatTranscrip
4
4
  export declare function isChatSessionBashRunning<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>): boolean;
5
5
  export declare function incrementOptimisticUserSignature<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>, signature: string): void;
6
6
  export declare function decrementOptimisticUserSignature<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>, signature: string): void;
7
+ export declare function startChatSessionWorkingLifecycle<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>): void;
8
+ export declare function stopChatSessionWorkingLifecycle<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>, immediateEventRender?: boolean): void;
7
9
  export declare function syncChatSessionAnimationTick<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>): void;
8
10
  export declare function clearChatSessionBusyForTerminalWorkflowStage<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>): void;
9
11
  export declare function disposeChatSession<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-runtime.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAOzE,wBAAgB,sBAAsB,CAAC,WAAW,SAAS,uBAAuB,EAChF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,OAAO,CAET;AAED,wBAAgB,wBAAwB,CAAC,WAAW,SAAS,uBAAuB,EAClF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,OAAO,CAET;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,SAAS,EAAE,MAAM,GAChB,IAAI,CAKN;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,IAAI,CAehD;AAED,wBAAgB,4CAA4C,CAC1D,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,IAAI,CAShD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,SAAS,uBAAuB,EAC5E,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,IAAI,CAWN;AAED,wBAAgB,wBAAwB,CAAC,WAAW,SAAS,uBAAuB,EAClF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,OAAO,EAAE,MAAM,GACd,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CAAC,WAAW,SAAS,uBAAuB,EACjF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,OAAO,EAAE,MAAM,GACd,IAAI,CAIN;AAED,wBAAgB,0BAA0B,CACxC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAC/C,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAuBlC;AAED,wBAAgB,qBAAqB,CAAC,WAAW,SAAS,uBAAuB,EAC/E,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,OAAO,EAAE,OAAO,GACf,IAAI,CAIN"}
1
+ {"version":3,"file":"chat-session-host-runtime.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAOzE,wBAAgB,sBAAsB,CAAC,WAAW,SAAS,uBAAuB,EAChF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,OAAO,CAET;AAED,wBAAgB,wBAAwB,CAAC,WAAW,SAAS,uBAAuB,EAClF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,OAAO,CAET;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,SAAS,EAAE,MAAM,GAChB,IAAI,CAKN;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,IAAI,CAQhD;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,oBAAoB,UAAO,GAC1B,IAAI,CAKN;AAkBD,wBAAgB,4BAA4B,CAC1C,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,IAAI,CA0BhD;AAED,wBAAgB,4CAA4C,CAC1D,WAAW,SAAS,uBAAuB,EAC3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,IAAI,CAWhD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,SAAS,uBAAuB,EAC5E,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,GACvC,IAAI,CAMN;AAED,wBAAgB,wBAAwB,CAAC,WAAW,SAAS,uBAAuB,EAClF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,OAAO,EAAE,MAAM,GACd,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CAAC,WAAW,SAAS,uBAAuB,EACjF,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,OAAO,EAAE,MAAM,GACd,IAAI,CAIN;AAED,wBAAgB,0BAA0B,CACxC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAC/C,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAuBlC;AAED,wBAAgB,qBAAqB,CAAC,WAAW,SAAS,uBAAuB,EAC/E,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,OAAO,EAAE,OAAO,GACf,IAAI,CAUN"}
@@ -1,7 +1,8 @@
1
+ import { ATOMIC_WORKING_FRAME_MS, ATOMIC_WORKING_FRAMES } from "./atomic-working-status.js";
1
2
  import { finalizeTerminalWorkflowToolEntries } from "./chat-session-host-terminal-cleanup.js";
2
3
  import { ANIMATION_FRAME_MS, STREAMING_RENDER_THROTTLE_MS, } from "./chat-session-host-utils.js";
3
4
  export function isChatSessionStreaming(state) {
4
- return state.sdkBusy || state.isStreamingOverride?.() === true;
5
+ return !state.disposed && (state.sdkBusy || state.isStreamingOverride?.() === true);
5
6
  }
6
7
  export function isChatSessionBashRunning(state) {
7
8
  return state.localBashRunning || state.isBashRunningOverride?.() === true;
@@ -16,24 +17,65 @@ export function decrementOptimisticUserSignature(state, signature) {
16
17
  else
17
18
  state.optimisticUserSignatureCounts.set(signature, count - 1);
18
19
  }
20
+ export function startChatSessionWorkingLifecycle(state) {
21
+ if (state.disposed)
22
+ return;
23
+ clearChatSessionAnimation(state);
24
+ clearChatSessionEventRender(state);
25
+ state.immediateEventRenderPending = true;
26
+ state.workingLifecycleActive = true;
27
+ state.workingLifecycleGeneration += 1;
28
+ state.workingFrame = 0;
29
+ }
30
+ export function stopChatSessionWorkingLifecycle(state, immediateEventRender = true) {
31
+ state.workingLifecycleActive = false;
32
+ clearChatSessionAnimation(state);
33
+ clearChatSessionEventRender(state);
34
+ state.immediateEventRenderPending = !state.disposed && immediateEventRender;
35
+ }
36
+ function clearChatSessionAnimation(state) {
37
+ if (!state.animationTimer)
38
+ return;
39
+ clearInterval(state.animationTimer);
40
+ state.animationTimer = undefined;
41
+ }
42
+ function clearChatSessionEventRender(state) {
43
+ if (!state.renderThrottleTimer)
44
+ return;
45
+ clearTimeout(state.renderThrottleTimer);
46
+ state.renderThrottleTimer = undefined;
47
+ }
19
48
  export function syncChatSessionAnimationTick(state) {
20
- const shouldAnimate = isChatSessionStreaming(state) ||
21
- (state.sdkBusy && state.liveChat.pendingToolIds().length > 0);
49
+ const shouldAnimate = !state.disposed &&
50
+ process.env.ATOMIC_REDUCED_MOTION !== "1" &&
51
+ (state.workingLifecycleActive || state.compacting);
22
52
  if (shouldAnimate && !state.animationTimer) {
23
- state.animationTimer = setInterval(() => {
53
+ const intervalMs = state.workingLifecycleActive || state.compacting
54
+ ? ATOMIC_WORKING_FRAME_MS
55
+ : ANIMATION_FRAME_MS;
56
+ const timer = setInterval(() => {
57
+ if (state.disposed ||
58
+ state.animationTimer !== timer ||
59
+ (!state.workingLifecycleActive && !state.compacting)) {
60
+ return;
61
+ }
62
+ if (state.workingLifecycleActive || state.compacting) {
63
+ state.workingFrame = (state.workingFrame + 1) % ATOMIC_WORKING_FRAMES.length;
64
+ }
24
65
  state.requestRender?.();
25
- }, ANIMATION_FRAME_MS);
66
+ }, intervalMs);
67
+ state.animationTimer = timer;
26
68
  state.animationTimer.unref?.();
27
69
  return;
28
70
  }
29
- if (!shouldAnimate && state.animationTimer) {
30
- clearInterval(state.animationTimer);
31
- state.animationTimer = undefined;
32
- }
71
+ if (!shouldAnimate)
72
+ clearChatSessionAnimation(state);
33
73
  }
34
74
  export function clearChatSessionBusyForTerminalWorkflowStage(state) {
35
75
  state.sdkBusy = false;
36
76
  state.workingMessage = undefined;
77
+ state.compacting = false;
78
+ stopChatSessionWorkingLifecycle(state, false);
37
79
  if (finalizeTerminalWorkflowToolEntries(state.transcript)) {
38
80
  state.transcriptComponent.invalidate();
39
81
  }
@@ -42,14 +84,9 @@ export function clearChatSessionBusyForTerminalWorkflowStage(state) {
42
84
  syncChatSessionAnimationTick(state);
43
85
  }
44
86
  export function disposeChatSession(state) {
45
- if (state.animationTimer) {
46
- clearInterval(state.animationTimer);
47
- state.animationTimer = undefined;
48
- }
49
- if (state.renderThrottleTimer) {
50
- clearTimeout(state.renderThrottleTimer);
51
- state.renderThrottleTimer = undefined;
52
- }
87
+ state.disposed = true;
88
+ state.compacting = false;
89
+ stopChatSessionWorkingLifecycle(state, false);
53
90
  state.transcriptComponent.invalidate();
54
91
  state.editor = undefined;
55
92
  }
@@ -92,9 +129,16 @@ export function requiredChatSessionCommand(state, name) {
92
129
  }
93
130
  }
94
131
  export function afterChatSessionEvent(state, changed) {
132
+ if (state.disposed)
133
+ return;
95
134
  syncChatSessionAnimationTick(state);
96
135
  if (!changed)
97
136
  return;
137
+ if (state.immediateEventRenderPending) {
138
+ state.immediateEventRenderPending = false;
139
+ state.requestRender?.();
140
+ return;
141
+ }
98
142
  requestChatSessionEventRender(state);
99
143
  }
100
144
  function requestChatSessionEventRender(state) {
@@ -102,12 +146,17 @@ function requestChatSessionEventRender(state) {
102
146
  state.requestRender?.();
103
147
  return;
104
148
  }
149
+ if (state.animationTimer)
150
+ return;
105
151
  if (state.renderThrottleTimer)
106
152
  return;
107
- state.renderThrottleTimer = setTimeout(() => {
153
+ const timer = setTimeout(() => {
154
+ if (state.disposed || state.renderThrottleTimer !== timer)
155
+ return;
108
156
  state.renderThrottleTimer = undefined;
109
157
  state.requestRender?.();
110
158
  }, STREAMING_RENDER_THROTTLE_MS);
159
+ state.renderThrottleTimer = timer;
111
160
  state.renderThrottleTimer.unref?.();
112
161
  }
113
162
  //# sourceMappingURL=chat-session-host-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-runtime.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport { finalizeTerminalWorkflowToolEntries } from \"./chat-session-host-terminal-cleanup.ts\";\nimport {\n ANIMATION_FRAME_MS,\n STREAMING_RENDER_THROTTLE_MS,\n} from \"./chat-session-host-utils.ts\";\n\nexport function isChatSessionStreaming<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): boolean {\n return state.sdkBusy || state.isStreamingOverride?.() === true;\n}\n\nexport function isChatSessionBashRunning<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): boolean {\n return state.localBashRunning || state.isBashRunningOverride?.() === true;\n}\n\nexport function incrementOptimisticUserSignature<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n signature: string,\n): void {\n state.optimisticUserSignatureCounts.set(\n signature,\n (state.optimisticUserSignatureCounts.get(signature) ?? 0) + 1,\n );\n}\n\nexport function decrementOptimisticUserSignature<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n signature: string,\n): void {\n const count = state.optimisticUserSignatureCounts.get(signature) ?? 0;\n if (count <= 1) state.optimisticUserSignatureCounts.delete(signature);\n else state.optimisticUserSignatureCounts.set(signature, count - 1);\n}\n\nexport function syncChatSessionAnimationTick<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n const shouldAnimate =\n isChatSessionStreaming(state) ||\n (state.sdkBusy && state.liveChat.pendingToolIds().length > 0);\n if (shouldAnimate && !state.animationTimer) {\n state.animationTimer = setInterval(() => {\n state.requestRender?.();\n }, ANIMATION_FRAME_MS);\n state.animationTimer.unref?.();\n return;\n }\n if (!shouldAnimate && state.animationTimer) {\n clearInterval(state.animationTimer);\n state.animationTimer = undefined;\n }\n}\n\nexport function clearChatSessionBusyForTerminalWorkflowStage<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n if (finalizeTerminalWorkflowToolEntries(state.transcript)) {\n state.transcriptComponent.invalidate();\n }\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n syncChatSessionAnimationTick(state);\n}\n\nexport function disposeChatSession<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): void {\n if (state.animationTimer) {\n clearInterval(state.animationTimer);\n state.animationTimer = undefined;\n }\n if (state.renderThrottleTimer) {\n clearTimeout(state.renderThrottleTimer);\n state.renderThrottleTimer = undefined;\n }\n state.transcriptComponent.invalidate();\n state.editor = undefined;\n}\n\nexport function notifyChatSessionWarning<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n message: string,\n): void {\n state.statusMessage = message;\n state.showWarning?.(message);\n state.requestRender?.();\n}\n\nexport function notifyChatSessionStatus<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n message: string,\n): void {\n state.statusMessage = message;\n state.showStatus?.(message);\n state.requestRender?.();\n}\n\nexport function requiredChatSessionCommand<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n name: \"prompt\" | \"steer\" | \"followUp\" | \"resume\",\n): (text?: string) => Promise<void> {\n switch (name) {\n case \"prompt\":\n return async (text) => {\n if (!state.commands.prompt) throw new Error(\"no prompt command configured for this chat session\");\n await state.commands.prompt(text ?? \"\");\n };\n case \"steer\":\n return async (text) => {\n if (!state.commands.steer) throw new Error(\"no steer command configured for this chat session\");\n await state.commands.steer(text ?? \"\");\n };\n case \"followUp\":\n return async (text) => {\n if (!state.commands.followUp) throw new Error(\"no followUp command configured for this chat session\");\n await state.commands.followUp(text ?? \"\");\n };\n case \"resume\":\n return async (text) => {\n if (!state.commands.resume) throw new Error(\"no resume command configured for this chat session\");\n await state.commands.resume(text);\n };\n }\n}\n\nexport function afterChatSessionEvent<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n changed: boolean,\n): void {\n syncChatSessionAnimationTick(state);\n if (!changed) return;\n requestChatSessionEventRender(state);\n}\n\nfunction requestChatSessionEventRender<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n if (!isChatSessionStreaming(state)) {\n state.requestRender?.();\n return;\n }\n if (state.renderThrottleTimer) return;\n state.renderThrottleTimer = setTimeout(() => {\n state.renderThrottleTimer = undefined;\n state.requestRender?.();\n }, STREAMING_RENDER_THROTTLE_MS);\n state.renderThrottleTimer.unref?.();\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-runtime.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { ATOMIC_WORKING_FRAME_MS, ATOMIC_WORKING_FRAMES } from \"./atomic-working-status.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport { finalizeTerminalWorkflowToolEntries } from \"./chat-session-host-terminal-cleanup.ts\";\nimport {\n ANIMATION_FRAME_MS,\n STREAMING_RENDER_THROTTLE_MS,\n} from \"./chat-session-host-utils.ts\";\n\nexport function isChatSessionStreaming<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): boolean {\n return !state.disposed && (state.sdkBusy || state.isStreamingOverride?.() === true);\n}\n\nexport function isChatSessionBashRunning<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): boolean {\n return state.localBashRunning || state.isBashRunningOverride?.() === true;\n}\n\nexport function incrementOptimisticUserSignature<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n signature: string,\n): void {\n state.optimisticUserSignatureCounts.set(\n signature,\n (state.optimisticUserSignatureCounts.get(signature) ?? 0) + 1,\n );\n}\n\nexport function decrementOptimisticUserSignature<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n signature: string,\n): void {\n const count = state.optimisticUserSignatureCounts.get(signature) ?? 0;\n if (count <= 1) state.optimisticUserSignatureCounts.delete(signature);\n else state.optimisticUserSignatureCounts.set(signature, count - 1);\n}\n\nexport function startChatSessionWorkingLifecycle<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n if (state.disposed) return;\n clearChatSessionAnimation(state);\n clearChatSessionEventRender(state);\n state.immediateEventRenderPending = true;\n state.workingLifecycleActive = true;\n state.workingLifecycleGeneration += 1;\n state.workingFrame = 0;\n}\n\nexport function stopChatSessionWorkingLifecycle<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n immediateEventRender = true,\n): void {\n state.workingLifecycleActive = false;\n clearChatSessionAnimation(state);\n clearChatSessionEventRender(state);\n state.immediateEventRenderPending = !state.disposed && immediateEventRender;\n}\n\nfunction clearChatSessionAnimation<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n if (!state.animationTimer) return;\n clearInterval(state.animationTimer);\n state.animationTimer = undefined;\n}\n\nfunction clearChatSessionEventRender<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n if (!state.renderThrottleTimer) return;\n clearTimeout(state.renderThrottleTimer);\n state.renderThrottleTimer = undefined;\n}\n\nexport function syncChatSessionAnimationTick<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n const shouldAnimate = !state.disposed &&\n process.env.ATOMIC_REDUCED_MOTION !== \"1\" &&\n (state.workingLifecycleActive || state.compacting);\n if (shouldAnimate && !state.animationTimer) {\n const intervalMs = state.workingLifecycleActive || state.compacting\n ? ATOMIC_WORKING_FRAME_MS\n : ANIMATION_FRAME_MS;\n const timer = setInterval(() => {\n if (\n state.disposed ||\n state.animationTimer !== timer ||\n (!state.workingLifecycleActive && !state.compacting)\n ) {\n return;\n }\n if (state.workingLifecycleActive || state.compacting) {\n state.workingFrame = (state.workingFrame + 1) % ATOMIC_WORKING_FRAMES.length;\n }\n state.requestRender?.();\n }, intervalMs);\n state.animationTimer = timer;\n state.animationTimer.unref?.();\n return;\n }\n if (!shouldAnimate) clearChatSessionAnimation(state);\n}\n\nexport function clearChatSessionBusyForTerminalWorkflowStage<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n state.compacting = false;\n stopChatSessionWorkingLifecycle(state, false);\n if (finalizeTerminalWorkflowToolEntries(state.transcript)) {\n state.transcriptComponent.invalidate();\n }\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n syncChatSessionAnimationTick(state);\n}\n\nexport function disposeChatSession<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): void {\n state.disposed = true;\n state.compacting = false;\n stopChatSessionWorkingLifecycle(state, false);\n state.transcriptComponent.invalidate();\n state.editor = undefined;\n}\n\nexport function notifyChatSessionWarning<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n message: string,\n): void {\n state.statusMessage = message;\n state.showWarning?.(message);\n state.requestRender?.();\n}\n\nexport function notifyChatSessionStatus<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n message: string,\n): void {\n state.statusMessage = message;\n state.showStatus?.(message);\n state.requestRender?.();\n}\n\nexport function requiredChatSessionCommand<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n name: \"prompt\" | \"steer\" | \"followUp\" | \"resume\",\n): (text?: string) => Promise<void> {\n switch (name) {\n case \"prompt\":\n return async (text) => {\n if (!state.commands.prompt) throw new Error(\"no prompt command configured for this chat session\");\n await state.commands.prompt(text ?? \"\");\n };\n case \"steer\":\n return async (text) => {\n if (!state.commands.steer) throw new Error(\"no steer command configured for this chat session\");\n await state.commands.steer(text ?? \"\");\n };\n case \"followUp\":\n return async (text) => {\n if (!state.commands.followUp) throw new Error(\"no followUp command configured for this chat session\");\n await state.commands.followUp(text ?? \"\");\n };\n case \"resume\":\n return async (text) => {\n if (!state.commands.resume) throw new Error(\"no resume command configured for this chat session\");\n await state.commands.resume(text);\n };\n }\n}\n\nexport function afterChatSessionEvent<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n changed: boolean,\n): void {\n if (state.disposed) return;\n syncChatSessionAnimationTick(state);\n if (!changed) return;\n if (state.immediateEventRenderPending) {\n state.immediateEventRenderPending = false;\n state.requestRender?.();\n return;\n }\n requestChatSessionEventRender(state);\n}\n\nfunction requestChatSessionEventRender<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n if (!isChatSessionStreaming(state)) {\n state.requestRender?.();\n return;\n }\n if (state.animationTimer) return;\n if (state.renderThrottleTimer) return;\n const timer = setTimeout(() => {\n if (state.disposed || state.renderThrottleTimer !== timer) return;\n state.renderThrottleTimer = undefined;\n state.requestRender?.();\n }, STREAMING_RENDER_THROTTLE_MS);\n state.renderThrottleTimer = timer;\n state.renderThrottleTimer.unref?.();\n}\n"]}
@@ -34,7 +34,16 @@ export declare class ChatSessionHostState<TExtraEntry extends ChatTranscriptEntr
34
34
  isBashMode: boolean;
35
35
  localBashRunning: boolean;
36
36
  sdkBusy: boolean;
37
+ /** Escape interrupt plus asynchronous workflow pause acknowledgement. */
38
+ interruptSettlement: Promise<void> | undefined;
39
+ /** Recorded pause failure consumed by the first submit after settlement. */
40
+ interruptFailureMessage: string | undefined;
37
41
  workingMessage: string | undefined;
42
+ workingFrame: number;
43
+ workingLifecycleActive: boolean;
44
+ workingLifecycleGeneration: number;
45
+ immediateEventRenderPending: boolean;
46
+ disposed: boolean;
38
47
  pendingSteeringMessages: readonly string[];
39
48
  pendingFollowUpMessages: readonly string[];
40
49
  compactionQueuedMessages: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-state.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session-host-state.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-state.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export class ChatSessionHostState {
9
9
  this.isBashMode = false;
10
10
  this.localBashRunning = false;
11
11
  this.sdkBusy = false;
12
+ this.workingFrame = 0;
13
+ this.workingLifecycleGeneration = 0;
14
+ this.immediateEventRenderPending = false;
15
+ this.disposed = false;
12
16
  this.pendingSteeringMessages = [];
13
17
  this.pendingFollowUpMessages = [];
14
18
  this.compactionQueuedMessages = [];
@@ -23,6 +27,7 @@ export class ChatSessionHostState {
23
27
  this.requestRender = opts.requestRender;
24
28
  this.getAgentSession = opts.getAgentSession;
25
29
  this.isStreamingOverride = opts.isStreaming;
30
+ this.workingLifecycleActive = opts.isStreaming?.() === true;
26
31
  this.isPaused = opts.isPaused;
27
32
  this.isDisabled = opts.isDisabled;
28
33
  this.isBashRunningOverride = opts.isBashRunning;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-state.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-state.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAE5B,MAAM,sBAAsB,CAAC;AAsB9B,MAAM,OAAO,oBAAoB;IA6C/B,YACE,IAAsC,EACtC,SAAqD;QAzBvD,gBAAW,GAAG,EAAE,CAAC;QACjB,eAAU,GAAwC,EAAE,CAAC;QACrD,iBAAY,GAAkB,EAAE,CAAC;QACjC,kBAAa,GAAG,EAAE,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,qBAAgB,GAAG,KAAK,CAAC;QACzB,YAAO,GAAG,KAAK,CAAC;QAEhB,4BAAuB,GAAsB,EAAE,CAAC;QAChD,4BAAuB,GAAsB,EAAE,CAAC;QAChD,6BAAwB,GAAsB,EAAE,CAAC;QACjD,eAAU,GAAG,KAAK,CAAC;QAGnB,iBAAY,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAEjD,gCAA2B,GAAG,EAAE,CAAC;QACjC,sBAAiB,GAAG,IAAI,OAAO,EAAkB,CAAC;QAClD,yBAAoB,GAAG,CAAC,CAAC;QAGzB,kCAA6B,GAAG,IAAI,GAAG,EAAkB,CAAC;QAMxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,uBAAuB,CACpD,IAAI,CAAC,UAAU,EACf,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAC7C,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CACnE,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { AgentSession } from \"../../../core/agent-session.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport type {\n Component,\n EditorComponent,\n MarkdownTheme,\n TUI,\n} from \"@earendil-works/pi-tui\";\nimport { LiveChatEntriesController } from \"./chat-message-renderer.ts\";\nimport {\n ChatTranscriptComponent,\n ScrollableComponentViewport,\n type ChatTranscriptEntryLike,\n} from \"./chat-transcript.ts\";\nimport type {\n ChatSessionHostCommands,\n ChatSessionHostEntry,\n ChatSessionHostOpts,\n ChatSessionHostStyle,\n} from \"./chat-session-host-types.ts\";\n\nexport interface ChatSessionHostStateCallbacks<\n TExtraEntry extends ChatTranscriptEntryLike,\n> {\n renderEntry: (\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n ) => Component;\n transcriptCacheKey: (\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n index: number,\n ) => string;\n}\n\nexport class ChatSessionHostState<\n TExtraEntry extends ChatTranscriptEntryLike = never,\n> {\n readonly style: ChatSessionHostStyle;\n readonly commands: ChatSessionHostCommands;\n readonly requestRender: (() => void) | undefined;\n readonly getAgentSession: (() => AgentSession | undefined) | undefined;\n readonly isStreamingOverride: (() => boolean) | undefined;\n readonly isPaused: (() => boolean) | undefined;\n readonly isDisabled: (() => boolean) | undefined;\n readonly isBashRunningOverride: (() => boolean) | undefined;\n readonly showWarning: ((message: string) => void) | undefined;\n readonly showStatus: ((message: string) => void) | undefined;\n readonly actions: Record<string, () => void | Promise<void>> | undefined;\n readonly getActionKeyDisplay: ((action: string) => string) | undefined;\n readonly getMarkdownTheme: (() => MarkdownTheme) | undefined;\n readonly getChatRenderSettings: ChatSessionHostOpts<TExtraEntry>[\"getChatRenderSettings\"];\n readonly getCwd: (() => string) | undefined;\n readonly footerData: ReadonlyFooterDataProvider | undefined;\n readonly renderExtraEntry: ((entry: TExtraEntry) => Component) | undefined;\n readonly tui: TUI | undefined;\n\n inputBuffer = \"\";\n transcript: ChatSessionHostEntry<TExtraEntry>[] = [];\n extraEntries: TExtraEntry[] = [];\n statusMessage = \"\";\n isBashMode = false;\n localBashRunning = false;\n sdkBusy = false;\n workingMessage: string | undefined;\n pendingSteeringMessages: readonly string[] = [];\n pendingFollowUpMessages: readonly string[] = [];\n compactionQueuedMessages: readonly string[] = [];\n compacting = false;\n animationTimer: ReturnType<typeof setInterval> | undefined;\n renderThrottleTimer: ReturnType<typeof setTimeout> | undefined;\n bodyViewport = new ScrollableComponentViewport();\n transcriptComponent: ChatTranscriptComponent<ChatSessionHostEntry<TExtraEntry>>;\n transcriptRenderSettingsKey = \"\";\n renderIdentityIds = new WeakMap<object, number>();\n nextRenderIdentityId = 1;\n liveChat: LiveChatEntriesController;\n editor: EditorComponent | undefined;\n optimisticUserSignatureCounts = new Map<string, number>();\n\n constructor(\n opts: ChatSessionHostOpts<TExtraEntry>,\n callbacks: ChatSessionHostStateCallbacks<TExtraEntry>,\n ) {\n this.style = opts.style;\n this.commands = opts.commands ?? {};\n this.requestRender = opts.requestRender;\n this.getAgentSession = opts.getAgentSession;\n this.isStreamingOverride = opts.isStreaming;\n this.isPaused = opts.isPaused;\n this.isDisabled = opts.isDisabled;\n this.isBashRunningOverride = opts.isBashRunning;\n this.showWarning = opts.showWarning;\n this.showStatus = opts.showStatus;\n this.actions = opts.actions;\n this.getActionKeyDisplay = opts.getActionKeyDisplay;\n this.getMarkdownTheme = opts.getMarkdownTheme;\n this.getChatRenderSettings = opts.getChatRenderSettings;\n this.getCwd = opts.getCwd;\n this.footerData = opts.footerData;\n this.renderExtraEntry = opts.renderExtraEntry;\n this.tui = opts.tui;\n this.liveChat = new LiveChatEntriesController(this.transcript);\n this.transcriptComponent = new ChatTranscriptComponent(\n this.transcript,\n (entry) => callbacks.renderEntry(this, entry),\n (entry, index) => callbacks.transcriptCacheKey(this, entry, index),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-state.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-state.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAE5B,MAAM,sBAAsB,CAAC;AAsB9B,MAAM,OAAO,oBAAoB;IAsD/B,YACE,IAAsC,EACtC,SAAqD;QAlCvD,gBAAW,GAAG,EAAE,CAAC;QACjB,eAAU,GAAwC,EAAE,CAAC;QACrD,iBAAY,GAAkB,EAAE,CAAC;QACjC,kBAAa,GAAG,EAAE,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,qBAAgB,GAAG,KAAK,CAAC;QACzB,YAAO,GAAG,KAAK,CAAC;QAMhB,iBAAY,GAAG,CAAC,CAAC;QAEjB,+BAA0B,GAAG,CAAC,CAAC;QAC/B,gCAA2B,GAAG,KAAK,CAAC;QACpC,aAAQ,GAAG,KAAK,CAAC;QACjB,4BAAuB,GAAsB,EAAE,CAAC;QAChD,4BAAuB,GAAsB,EAAE,CAAC;QAChD,6BAAwB,GAAsB,EAAE,CAAC;QACjD,eAAU,GAAG,KAAK,CAAC;QAGnB,iBAAY,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAEjD,gCAA2B,GAAG,EAAE,CAAC;QACjC,sBAAiB,GAAG,IAAI,OAAO,EAAkB,CAAC;QAClD,yBAAoB,GAAG,CAAC,CAAC;QAGzB,kCAA6B,GAAG,IAAI,GAAG,EAAkB,CAAC;QAMxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,uBAAuB,CACpD,IAAI,CAAC,UAAU,EACf,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAC7C,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CACnE,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { AgentSession } from \"../../../core/agent-session.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport type {\n Component,\n EditorComponent,\n MarkdownTheme,\n TUI,\n} from \"@earendil-works/pi-tui\";\nimport { LiveChatEntriesController } from \"./chat-message-renderer.ts\";\nimport {\n ChatTranscriptComponent,\n ScrollableComponentViewport,\n type ChatTranscriptEntryLike,\n} from \"./chat-transcript.ts\";\nimport type {\n ChatSessionHostCommands,\n ChatSessionHostEntry,\n ChatSessionHostOpts,\n ChatSessionHostStyle,\n} from \"./chat-session-host-types.ts\";\n\nexport interface ChatSessionHostStateCallbacks<\n TExtraEntry extends ChatTranscriptEntryLike,\n> {\n renderEntry: (\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n ) => Component;\n transcriptCacheKey: (\n state: ChatSessionHostState<TExtraEntry>,\n entry: ChatSessionHostEntry<TExtraEntry>,\n index: number,\n ) => string;\n}\n\nexport class ChatSessionHostState<\n TExtraEntry extends ChatTranscriptEntryLike = never,\n> {\n readonly style: ChatSessionHostStyle;\n readonly commands: ChatSessionHostCommands;\n readonly requestRender: (() => void) | undefined;\n readonly getAgentSession: (() => AgentSession | undefined) | undefined;\n readonly isStreamingOverride: (() => boolean) | undefined;\n readonly isPaused: (() => boolean) | undefined;\n readonly isDisabled: (() => boolean) | undefined;\n readonly isBashRunningOverride: (() => boolean) | undefined;\n readonly showWarning: ((message: string) => void) | undefined;\n readonly showStatus: ((message: string) => void) | undefined;\n readonly actions: Record<string, () => void | Promise<void>> | undefined;\n readonly getActionKeyDisplay: ((action: string) => string) | undefined;\n readonly getMarkdownTheme: (() => MarkdownTheme) | undefined;\n readonly getChatRenderSettings: ChatSessionHostOpts<TExtraEntry>[\"getChatRenderSettings\"];\n readonly getCwd: (() => string) | undefined;\n readonly footerData: ReadonlyFooterDataProvider | undefined;\n readonly renderExtraEntry: ((entry: TExtraEntry) => Component) | undefined;\n readonly tui: TUI | undefined;\n\n inputBuffer = \"\";\n transcript: ChatSessionHostEntry<TExtraEntry>[] = [];\n extraEntries: TExtraEntry[] = [];\n statusMessage = \"\";\n isBashMode = false;\n localBashRunning = false;\n sdkBusy = false;\n /** Escape interrupt plus asynchronous workflow pause acknowledgement. */\n interruptSettlement: Promise<void> | undefined;\n /** Recorded pause failure consumed by the first submit after settlement. */\n interruptFailureMessage: string | undefined;\n workingMessage: string | undefined;\n workingFrame = 0;\n workingLifecycleActive: boolean;\n workingLifecycleGeneration = 0;\n immediateEventRenderPending = false;\n disposed = false;\n pendingSteeringMessages: readonly string[] = [];\n pendingFollowUpMessages: readonly string[] = [];\n compactionQueuedMessages: readonly string[] = [];\n compacting = false;\n animationTimer: ReturnType<typeof setInterval> | undefined;\n renderThrottleTimer: ReturnType<typeof setTimeout> | undefined;\n bodyViewport = new ScrollableComponentViewport();\n transcriptComponent: ChatTranscriptComponent<ChatSessionHostEntry<TExtraEntry>>;\n transcriptRenderSettingsKey = \"\";\n renderIdentityIds = new WeakMap<object, number>();\n nextRenderIdentityId = 1;\n liveChat: LiveChatEntriesController;\n editor: EditorComponent | undefined;\n optimisticUserSignatureCounts = new Map<string, number>();\n\n constructor(\n opts: ChatSessionHostOpts<TExtraEntry>,\n callbacks: ChatSessionHostStateCallbacks<TExtraEntry>,\n ) {\n this.style = opts.style;\n this.commands = opts.commands ?? {};\n this.requestRender = opts.requestRender;\n this.getAgentSession = opts.getAgentSession;\n this.isStreamingOverride = opts.isStreaming;\n this.workingLifecycleActive = opts.isStreaming?.() === true;\n this.isPaused = opts.isPaused;\n this.isDisabled = opts.isDisabled;\n this.isBashRunningOverride = opts.isBashRunning;\n this.showWarning = opts.showWarning;\n this.showStatus = opts.showStatus;\n this.actions = opts.actions;\n this.getActionKeyDisplay = opts.getActionKeyDisplay;\n this.getMarkdownTheme = opts.getMarkdownTheme;\n this.getChatRenderSettings = opts.getChatRenderSettings;\n this.getCwd = opts.getCwd;\n this.footerData = opts.footerData;\n this.renderExtraEntry = opts.renderExtraEntry;\n this.tui = opts.tui;\n this.liveChat = new LiveChatEntriesController(this.transcript);\n this.transcriptComponent = new ChatTranscriptComponent(\n this.transcript,\n (entry) => callbacks.renderEntry(this, entry),\n (entry, index) => callbacks.transcriptCacheKey(this, entry, index),\n );\n }\n}\n"]}