@bastani/atomic 0.9.11-alpha.5 → 0.9.11-alpha.7

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 (1127) hide show
  1. package/CHANGELOG.md +63 -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 +12 -0
  11. package/dist/builtin/subagents/README.md +1 -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 +27 -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/src/extension/prompt-guidance.ts +1 -1
  30. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +23 -4
  31. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
  32. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +10 -0
  33. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +1 -0
  34. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +2 -0
  35. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +8 -0
  36. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  37. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +6 -0
  38. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +2 -0
  39. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +7 -0
  40. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +1 -0
  41. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +3 -0
  42. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -2
  43. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -0
  44. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +5 -3
  45. package/dist/builtin/subagents/src/shared/settings.ts +4 -0
  46. package/dist/builtin/web-access/package.json +2 -2
  47. package/dist/builtin/workflows/CHANGELOG.md +44 -0
  48. package/dist/builtin/workflows/README.md +72 -70
  49. package/dist/builtin/workflows/ambient.d.ts +0 -5
  50. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  51. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  52. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  53. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  54. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  55. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  56. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  57. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  58. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  59. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  60. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  61. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  62. package/dist/builtin/workflows/builtin/goal-models.ts +14 -18
  63. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +39 -78
  64. package/dist/builtin/workflows/builtin/goal-prompts.ts +64 -244
  65. package/dist/builtin/workflows/builtin/goal-runner.ts +32 -64
  66. package/dist/builtin/workflows/builtin/goal.ts +2 -1
  67. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  68. package/dist/builtin/workflows/builtin/index.ts +1 -2
  69. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  70. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  71. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  72. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +52 -55
  73. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +45 -52
  74. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +41 -46
  75. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  76. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  77. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
  78. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
  79. package/dist/builtin/workflows/builtin/ralph-models.ts +33 -43
  80. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +35 -120
  81. package/dist/builtin/workflows/builtin/ralph-runner.ts +81 -108
  82. package/dist/builtin/workflows/builtin/ralph.ts +2 -1
  83. package/dist/builtin/workflows/builtin/shared-prompts.ts +110 -93
  84. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  85. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  86. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  87. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  88. package/dist/builtin/workflows/package.json +2 -2
  89. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  90. package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
  91. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
  92. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
  93. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
  94. package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
  95. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
  96. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
  97. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
  98. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
  99. package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
  100. package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
  101. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
  102. package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
  103. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
  104. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
  105. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
  106. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
  107. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  108. package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
  109. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
  110. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
  111. package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
  112. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
  113. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +23 -12
  114. package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
  115. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
  116. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
  117. package/dist/builtin/workflows/skills/impeccable/reference/live.md +47 -36
  118. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
  119. package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
  120. package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
  121. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
  122. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
  123. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
  124. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
  125. package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
  126. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
  127. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
  128. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
  129. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
  130. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
  131. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
  132. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
  133. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  134. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
  135. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
  136. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
  137. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  138. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
  139. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
  140. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
  141. package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
  142. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
  143. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
  144. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
  145. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
  146. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
  147. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
  148. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +92 -30
  149. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +414 -120
  150. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
  151. package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  152. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
  153. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
  154. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
  155. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
  156. package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
  157. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
  158. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  159. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  160. package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  161. package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  162. package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  163. package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
  164. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
  165. package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  166. package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  167. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
  168. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  169. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
  170. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
  171. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  172. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +208 -68
  173. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +565 -115
  174. package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  175. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -14
  176. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
  177. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +6 -1
  178. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
  179. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +398 -33
  180. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
  181. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
  182. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
  183. package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
  184. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  185. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
  186. package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
  187. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  188. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  189. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  190. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  191. package/dist/builtin/workflows/src/authoring.d.ts +5 -1
  192. package/dist/builtin/workflows/src/durable/backend.ts +68 -9
  193. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +148 -0
  194. package/dist/builtin/workflows/src/durable/boundary-topology.ts +420 -0
  195. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  196. package/dist/builtin/workflows/src/durable/child-primitive.ts +74 -44
  197. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +250 -0
  198. package/dist/builtin/workflows/src/durable/completed-catalog.ts +205 -131
  199. package/dist/builtin/workflows/src/durable/completed-inspection.ts +8 -2
  200. package/dist/builtin/workflows/src/durable/completed-subtree.ts +31 -0
  201. package/dist/builtin/workflows/src/durable/dbos-backend.ts +28 -24
  202. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +130 -3
  203. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +18 -0
  204. package/dist/builtin/workflows/src/durable/scoped-backend.ts +64 -17
  205. package/dist/builtin/workflows/src/durable/stage-primitive.ts +60 -60
  206. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +234 -0
  207. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  208. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  209. package/dist/builtin/workflows/src/durable/tool-outcome.ts +120 -0
  210. package/dist/builtin/workflows/src/durable/tool-primitive.ts +367 -58
  211. package/dist/builtin/workflows/src/durable/types.ts +97 -0
  212. package/dist/builtin/workflows/src/durable/ui-primitive.ts +46 -0
  213. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +58 -0
  214. package/dist/builtin/workflows/src/engine/options.ts +1 -0
  215. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +19 -10
  216. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +11 -1
  217. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +190 -18
  218. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +37 -0
  219. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +50 -0
  220. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +152 -0
  221. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +87 -0
  222. package/dist/builtin/workflows/src/engine/run.ts +111 -110
  223. package/dist/builtin/workflows/src/engine/runtime.ts +15 -2
  224. package/dist/builtin/workflows/src/extension/extension-factory.ts +1 -0
  225. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +11 -0
  226. package/dist/builtin/workflows/src/extension/index.bundle.mjs +6710 -4810
  227. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +16 -5
  228. package/dist/builtin/workflows/src/extension/render-result.ts +16 -2
  229. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
  230. package/dist/builtin/workflows/src/extension/runtime.ts +4 -0
  231. package/dist/builtin/workflows/src/extension/wiring.ts +3 -1
  232. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +1 -0
  233. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +9 -3
  234. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +18 -3
  235. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +22 -11
  236. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +43 -0
  237. package/dist/builtin/workflows/src/extension/workflow-targets.ts +34 -30
  238. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +12 -5
  239. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +162 -63
  240. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +7 -1
  241. package/dist/builtin/workflows/src/runs/background/status.ts +18 -8
  242. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +3 -11
  243. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +24 -21
  244. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  245. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +30 -13
  246. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +102 -53
  247. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +13 -5
  248. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +49 -17
  249. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +11 -4
  250. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +1 -0
  251. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
  252. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +7 -1
  253. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +53 -4
  254. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +146 -17
  255. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
  256. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +18 -6
  257. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +45 -46
  258. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +5 -1
  259. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +195 -0
  260. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +8 -0
  261. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -13
  262. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +30 -2
  263. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +3 -143
  264. package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
  265. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -11
  266. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -11
  267. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +57 -6
  268. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +76 -11
  269. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +206 -116
  270. package/dist/builtin/workflows/src/shared/intercom-group.ts +17 -10
  271. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +30 -0
  272. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +5 -0
  273. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +3 -3
  274. package/dist/builtin/workflows/src/shared/store-factory.ts +2 -0
  275. package/dist/builtin/workflows/src/shared/store-internal.ts +8 -0
  276. package/dist/builtin/workflows/src/shared/store-public-types.ts +8 -0
  277. package/dist/builtin/workflows/src/shared/store-run-methods.ts +9 -0
  278. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +2 -0
  279. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +46 -0
  280. package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
  281. package/dist/builtin/workflows/src/shared/types.ts +14 -24
  282. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +11 -5
  283. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +58 -0
  284. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +53 -0
  285. package/dist/builtin/workflows/src/tui/graph-view-input.ts +2 -8
  286. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +11 -4
  287. package/dist/builtin/workflows/src/tui/graph-view-render.ts +1 -0
  288. package/dist/builtin/workflows/src/tui/graph-view-state.ts +27 -9
  289. package/dist/builtin/workflows/src/tui/graph-view-types.ts +4 -3
  290. package/dist/builtin/workflows/src/tui/node-card.ts +4 -3
  291. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -4
  292. package/dist/builtin/workflows/src/tui/run-detail.ts +53 -17
  293. package/dist/builtin/workflows/src/tui/session-list.ts +8 -4
  294. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +121 -0
  295. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +42 -0
  296. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +12 -0
  297. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +21 -1
  298. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +19 -19
  299. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +4 -0
  300. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -2
  301. package/dist/builtin/workflows/src/tui/switcher.ts +13 -3
  302. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +1 -1
  303. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -9
  304. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +16 -49
  305. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  306. package/dist/builtin/workflows/src/workflows/identity.ts +1 -1
  307. package/dist/cli/args.d.ts +0 -1
  308. package/dist/cli/args.d.ts.map +1 -1
  309. package/dist/cli/args.js +1 -20
  310. package/dist/cli/args.js.map +1 -1
  311. package/dist/cli/config-selector.js +1 -1
  312. package/dist/cli/config-selector.js.map +1 -1
  313. package/dist/cli/list-models.d.ts.map +1 -1
  314. package/dist/cli/list-models.js +1 -2
  315. package/dist/cli/list-models.js.map +1 -1
  316. package/dist/cli/session-picker.d.ts.map +1 -1
  317. package/dist/cli/session-picker.js +2 -1
  318. package/dist/cli/session-picker.js.map +1 -1
  319. package/dist/cli/startup-ui.js +2 -2
  320. package/dist/cli/startup-ui.js.map +1 -1
  321. package/dist/config-self-update.js +1 -1
  322. package/dist/config-self-update.js.map +1 -1
  323. package/dist/config.d.ts +2 -0
  324. package/dist/config.d.ts.map +1 -1
  325. package/dist/config.js +34 -10
  326. package/dist/config.js.map +1 -1
  327. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  328. package/dist/core/agent-session-accessors.js +2 -1
  329. package/dist/core/agent-session-accessors.js.map +1 -1
  330. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  331. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  332. package/dist/core/agent-session-auto-compaction.js +55 -59
  333. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  334. package/dist/core/agent-session-bash.d.ts +9 -6
  335. package/dist/core/agent-session-bash.d.ts.map +1 -1
  336. package/dist/core/agent-session-bash.js +32 -13
  337. package/dist/core/agent-session-bash.js.map +1 -1
  338. package/dist/core/agent-session-compaction.d.ts +11 -1
  339. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  340. package/dist/core/agent-session-compaction.js +87 -19
  341. package/dist/core/agent-session-compaction.js.map +1 -1
  342. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  343. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  344. package/dist/core/agent-session-custom-message-commit.js +141 -0
  345. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  346. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  347. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  348. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  349. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  350. package/dist/core/agent-session-events.d.ts +1 -1
  351. package/dist/core/agent-session-events.d.ts.map +1 -1
  352. package/dist/core/agent-session-events.js +45 -14
  353. package/dist/core/agent-session-events.js.map +1 -1
  354. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  355. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  356. package/dist/core/agent-session-extension-bindings.js +18 -11
  357. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  358. package/dist/core/agent-session-message-queue.d.ts +5 -2
  359. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  360. package/dist/core/agent-session-message-queue.js +91 -97
  361. package/dist/core/agent-session-message-queue.js.map +1 -1
  362. package/dist/core/agent-session-methods.d.ts +47 -39
  363. package/dist/core/agent-session-methods.d.ts.map +1 -1
  364. package/dist/core/agent-session-methods.js.map +1 -1
  365. package/dist/core/agent-session-models.d.ts +2 -38
  366. package/dist/core/agent-session-models.d.ts.map +1 -1
  367. package/dist/core/agent-session-models.js +5 -147
  368. package/dist/core/agent-session-models.js.map +1 -1
  369. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  370. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  371. package/dist/core/agent-session-persistent-custom-messages.js +267 -0
  372. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  373. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  374. package/dist/core/agent-session-post-tool-compaction.js +34 -9
  375. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  376. package/dist/core/agent-session-prompt.d.ts +2 -0
  377. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  378. package/dist/core/agent-session-prompt.js +42 -16
  379. package/dist/core/agent-session-prompt.js.map +1 -1
  380. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  381. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  382. package/dist/core/agent-session-queue-pause.js +86 -0
  383. package/dist/core/agent-session-queue-pause.js.map +1 -0
  384. package/dist/core/agent-session-retry.d.ts +0 -11
  385. package/dist/core/agent-session-retry.d.ts.map +1 -1
  386. package/dist/core/agent-session-retry.js +8 -57
  387. package/dist/core/agent-session-retry.js.map +1 -1
  388. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  389. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  390. package/dist/core/agent-session-runtime-auth.js +26 -0
  391. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  392. package/dist/core/agent-session-runtime.d.ts +13 -2
  393. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  394. package/dist/core/agent-session-runtime.js +32 -6
  395. package/dist/core/agent-session-runtime.js.map +1 -1
  396. package/dist/core/agent-session-services.d.ts +0 -2
  397. package/dist/core/agent-session-services.d.ts.map +1 -1
  398. package/dist/core/agent-session-services.js +6 -7
  399. package/dist/core/agent-session-services.js.map +1 -1
  400. package/dist/core/agent-session-state.d.ts.map +1 -1
  401. package/dist/core/agent-session-state.js +3 -0
  402. package/dist/core/agent-session-state.js.map +1 -1
  403. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  404. package/dist/core/agent-session-tool-hooks.js +6 -1
  405. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  406. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  407. package/dist/core/agent-session-tool-registry.js +2 -18
  408. package/dist/core/agent-session-tool-registry.js.map +1 -1
  409. package/dist/core/agent-session-transfer.d.ts +4 -0
  410. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  411. package/dist/core/agent-session-transfer.js +71 -0
  412. package/dist/core/agent-session-transfer.js.map +1 -0
  413. package/dist/core/agent-session-tree.js +1 -1
  414. package/dist/core/agent-session-tree.js.map +1 -1
  415. package/dist/core/agent-session-types.d.ts +5 -11
  416. package/dist/core/agent-session-types.d.ts.map +1 -1
  417. package/dist/core/agent-session-types.js +0 -3
  418. package/dist/core/agent-session-types.js.map +1 -1
  419. package/dist/core/agent-session.d.ts +12 -2
  420. package/dist/core/agent-session.d.ts.map +1 -1
  421. package/dist/core/agent-session.js +8 -2
  422. package/dist/core/agent-session.js.map +1 -1
  423. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  424. package/dist/core/atomic-guide-command.js +31 -33
  425. package/dist/core/atomic-guide-command.js.map +1 -1
  426. package/dist/core/auth-storage.js +2 -2
  427. package/dist/core/auth-storage.js.map +1 -1
  428. package/dist/core/bash-executor.d.ts +5 -3
  429. package/dist/core/bash-executor.d.ts.map +1 -1
  430. package/dist/core/bash-executor.js +5 -4
  431. package/dist/core/bash-executor.js.map +1 -1
  432. package/dist/core/builtin-packages.d.ts.map +1 -1
  433. package/dist/core/builtin-packages.js +0 -6
  434. package/dist/core/builtin-packages.js.map +1 -1
  435. package/dist/core/compaction/branch-summarization.d.ts +8 -3
  436. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  437. package/dist/core/compaction/branch-summarization.js +17 -6
  438. package/dist/core/compaction/branch-summarization.js.map +1 -1
  439. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  440. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  441. package/dist/core/compaction/compaction-boundary.js +2 -2
  442. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  443. package/dist/core/compaction/compaction-runner.d.ts +61 -6
  444. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  445. package/dist/core/compaction/compaction-runner.js +242 -18
  446. package/dist/core/compaction/compaction-runner.js.map +1 -1
  447. package/dist/core/compaction/compaction-types.d.ts +53 -2
  448. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  449. package/dist/core/compaction/compaction-types.js.map +1 -1
  450. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  451. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  452. package/dist/core/compaction/fallback-planner.js +75 -0
  453. package/dist/core/compaction/fallback-planner.js.map +1 -0
  454. package/dist/core/compaction/index.d.ts +3 -0
  455. package/dist/core/compaction/index.d.ts.map +1 -1
  456. package/dist/core/compaction/index.js +3 -0
  457. package/dist/core/compaction/index.js.map +1 -1
  458. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  459. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  460. package/dist/core/compaction/planner-outcome.js +122 -0
  461. package/dist/core/compaction/planner-outcome.js.map +1 -0
  462. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  463. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  464. package/dist/core/compaction/range-planner-diagnostics.js +69 -31
  465. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  466. package/dist/core/compaction/range-planner.d.ts +36 -8
  467. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  468. package/dist/core/compaction/range-planner.js +136 -51
  469. package/dist/core/compaction/range-planner.js.map +1 -1
  470. package/dist/core/compaction/region-trimming.d.ts +34 -0
  471. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  472. package/dist/core/compaction/region-trimming.js +73 -0
  473. package/dist/core/compaction/region-trimming.js.map +1 -0
  474. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  475. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  476. package/dist/core/compaction/transcript-serialization.js +78 -27
  477. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  478. package/dist/core/context-tool-pairing.d.ts +19 -0
  479. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  480. package/dist/core/context-tool-pairing.js +50 -0
  481. package/dist/core/context-tool-pairing.js.map +1 -0
  482. package/dist/core/diagnostics.d.ts +8 -0
  483. package/dist/core/diagnostics.d.ts.map +1 -1
  484. package/dist/core/diagnostics.js.map +1 -1
  485. package/dist/core/extensions/context-types.d.ts +3 -0
  486. package/dist/core/extensions/context-types.d.ts.map +1 -1
  487. package/dist/core/extensions/context-types.js.map +1 -1
  488. package/dist/core/extensions/index.d.ts +2 -0
  489. package/dist/core/extensions/index.d.ts.map +1 -1
  490. package/dist/core/extensions/index.js.map +1 -1
  491. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  492. package/dist/core/extensions/loader-api.js +48 -27
  493. package/dist/core/extensions/loader-api.js.map +1 -1
  494. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  495. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  496. package/dist/core/extensions/loader-runtime.js +199 -18
  497. package/dist/core/extensions/loader-runtime.js.map +1 -1
  498. package/dist/core/extensions/message-types.d.ts +7 -4
  499. package/dist/core/extensions/message-types.d.ts.map +1 -1
  500. package/dist/core/extensions/message-types.js.map +1 -1
  501. package/dist/core/extensions/provider-types.d.ts +9 -4
  502. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  503. package/dist/core/extensions/provider-types.js.map +1 -1
  504. package/dist/core/extensions/runner-context.d.ts +2 -0
  505. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  506. package/dist/core/extensions/runner-context.js +4 -0
  507. package/dist/core/extensions/runner-context.js.map +1 -1
  508. package/dist/core/extensions/runner.d.ts +1 -0
  509. package/dist/core/extensions/runner.d.ts.map +1 -1
  510. package/dist/core/extensions/runner.js +28 -20
  511. package/dist/core/extensions/runner.js.map +1 -1
  512. package/dist/core/extensions/runtime-types.d.ts +25 -0
  513. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  514. package/dist/core/extensions/runtime-types.js.map +1 -1
  515. package/dist/core/extensions/tool-types.d.ts +7 -3
  516. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  517. package/dist/core/extensions/tool-types.js.map +1 -1
  518. package/dist/core/extensions/ui-types.d.ts +14 -4
  519. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  520. package/dist/core/extensions/ui-types.js.map +1 -1
  521. package/dist/core/fallback-models.d.ts +37 -0
  522. package/dist/core/fallback-models.d.ts.map +1 -0
  523. package/dist/core/fallback-models.js +48 -0
  524. package/dist/core/fallback-models.js.map +1 -0
  525. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  526. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  527. package/dist/core/flattened-tool-arguments.js +4 -7
  528. package/dist/core/flattened-tool-arguments.js.map +1 -1
  529. package/dist/core/http-dispatcher.d.ts.map +1 -1
  530. package/dist/core/http-dispatcher.js +0 -5
  531. package/dist/core/http-dispatcher.js.map +1 -1
  532. package/dist/core/messages.d.ts +14 -2
  533. package/dist/core/messages.d.ts.map +1 -1
  534. package/dist/core/messages.js +28 -4
  535. package/dist/core/messages.js.map +1 -1
  536. package/dist/core/model-capabilities.d.ts +18 -0
  537. package/dist/core/model-capabilities.d.ts.map +1 -0
  538. package/dist/core/model-capabilities.js +23 -0
  539. package/dist/core/model-capabilities.js.map +1 -0
  540. package/dist/core/model-registry-auth.d.ts.map +1 -1
  541. package/dist/core/model-registry-auth.js +0 -2
  542. package/dist/core/model-registry-auth.js.map +1 -1
  543. package/dist/core/model-registry-builtins.d.ts +0 -2
  544. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  545. package/dist/core/model-registry-builtins.js +9 -76
  546. package/dist/core/model-registry-builtins.js.map +1 -1
  547. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  548. package/dist/core/model-registry-custom-loader.js +1 -12
  549. package/dist/core/model-registry-custom-loader.js.map +1 -1
  550. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  551. package/dist/core/model-registry-dynamic.js +3 -15
  552. package/dist/core/model-registry-dynamic.js.map +1 -1
  553. package/dist/core/model-registry-extension-refresh.d.ts +23 -0
  554. package/dist/core/model-registry-extension-refresh.d.ts.map +1 -0
  555. package/dist/core/model-registry-extension-refresh.js +32 -0
  556. package/dist/core/model-registry-extension-refresh.js.map +1 -0
  557. package/dist/core/model-registry-schemas.d.ts +118 -9
  558. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  559. package/dist/core/model-registry-schemas.js +10 -3
  560. package/dist/core/model-registry-schemas.js.map +1 -1
  561. package/dist/core/model-registry-types.d.ts +5 -5
  562. package/dist/core/model-registry-types.d.ts.map +1 -1
  563. package/dist/core/model-registry-types.js.map +1 -1
  564. package/dist/core/model-registry-validation.d.ts +7 -0
  565. package/dist/core/model-registry-validation.d.ts.map +1 -0
  566. package/dist/core/model-registry-validation.js +12 -0
  567. package/dist/core/model-registry-validation.js.map +1 -0
  568. package/dist/core/model-registry.d.ts +5 -3
  569. package/dist/core/model-registry.d.ts.map +1 -1
  570. package/dist/core/model-registry.js +34 -33
  571. package/dist/core/model-registry.js.map +1 -1
  572. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  573. package/dist/core/model-resolver-defaults.js +0 -1
  574. package/dist/core/model-resolver-defaults.js.map +1 -1
  575. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  576. package/dist/core/model-resolver-initial.js +9 -0
  577. package/dist/core/model-resolver-initial.js.map +1 -1
  578. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  579. package/dist/core/model-resolver-patterns.js +0 -2
  580. package/dist/core/model-resolver-patterns.js.map +1 -1
  581. package/dist/core/model-resolver-scope.d.ts +2 -0
  582. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  583. package/dist/core/model-resolver-scope.js +18 -4
  584. package/dist/core/model-resolver-scope.js.map +1 -1
  585. package/dist/core/model-resolver-types.d.ts +2 -0
  586. package/dist/core/model-resolver-types.d.ts.map +1 -1
  587. package/dist/core/model-resolver-types.js.map +1 -1
  588. package/dist/core/oauth-provider-bridge.d.ts +21 -0
  589. package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
  590. package/dist/core/oauth-provider-bridge.js +68 -7
  591. package/dist/core/oauth-provider-bridge.js.map +1 -1
  592. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  593. package/dist/core/package-manager-auto-resources.js +12 -4
  594. package/dist/core/package-manager-auto-resources.js.map +1 -1
  595. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  596. package/dist/core/package-manager-resolver.js +42 -11
  597. package/dist/core/package-manager-resolver.js.map +1 -1
  598. package/dist/core/package-manager-types.d.ts +2 -0
  599. package/dist/core/package-manager-types.d.ts.map +1 -1
  600. package/dist/core/package-manager-types.js.map +1 -1
  601. package/dist/core/package-manager.d.ts +1 -1
  602. package/dist/core/package-manager.d.ts.map +1 -1
  603. package/dist/core/package-manager.js.map +1 -1
  604. package/dist/core/remote-catalog-provider.d.ts +1 -1
  605. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  606. package/dist/core/remote-catalog-provider.js +17 -11
  607. package/dist/core/remote-catalog-provider.js.map +1 -1
  608. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  609. package/dist/core/resource-loader-assets.js +30 -4
  610. package/dist/core/resource-loader-assets.js.map +1 -1
  611. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  612. package/dist/core/resource-loader-context-files.js +3 -1
  613. package/dist/core/resource-loader-context-files.js.map +1 -1
  614. package/dist/core/resource-loader-core.d.ts +2 -1
  615. package/dist/core/resource-loader-core.d.ts.map +1 -1
  616. package/dist/core/resource-loader-core.js +3 -0
  617. package/dist/core/resource-loader-core.js.map +1 -1
  618. package/dist/core/resource-loader-extensions.d.ts +1 -0
  619. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  620. package/dist/core/resource-loader-extensions.js +120 -7
  621. package/dist/core/resource-loader-extensions.js.map +1 -1
  622. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  623. package/dist/core/resource-loader-package-resources.js +14 -1
  624. package/dist/core/resource-loader-package-resources.js.map +1 -1
  625. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  626. package/dist/core/resource-loader-reload.js +2 -1
  627. package/dist/core/resource-loader-reload.js.map +1 -1
  628. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  629. package/dist/core/resource-loader-source-info.js +6 -3
  630. package/dist/core/resource-loader-source-info.js.map +1 -1
  631. package/dist/core/sdk-types.d.ts +11 -10
  632. package/dist/core/sdk-types.d.ts.map +1 -1
  633. package/dist/core/sdk-types.js.map +1 -1
  634. package/dist/core/sdk.d.ts +1 -0
  635. package/dist/core/sdk.d.ts.map +1 -1
  636. package/dist/core/sdk.js +13 -84
  637. package/dist/core/sdk.js.map +1 -1
  638. package/dist/core/session-manager-core.d.ts +3 -3
  639. package/dist/core/session-manager-core.d.ts.map +1 -1
  640. package/dist/core/session-manager-core.js +18 -25
  641. package/dist/core/session-manager-core.js.map +1 -1
  642. package/dist/core/session-manager-entries.d.ts +2 -5
  643. package/dist/core/session-manager-entries.d.ts.map +1 -1
  644. package/dist/core/session-manager-entries.js +2 -8
  645. package/dist/core/session-manager-entries.js.map +1 -1
  646. package/dist/core/session-manager-history.d.ts +3 -3
  647. package/dist/core/session-manager-history.d.ts.map +1 -1
  648. package/dist/core/session-manager-history.js +49 -27
  649. package/dist/core/session-manager-history.js.map +1 -1
  650. package/dist/core/session-manager-storage.d.ts +6 -0
  651. package/dist/core/session-manager-storage.d.ts.map +1 -1
  652. package/dist/core/session-manager-storage.js +38 -5
  653. package/dist/core/session-manager-storage.js.map +1 -1
  654. package/dist/core/session-manager-types.d.ts +6 -6
  655. package/dist/core/session-manager-types.d.ts.map +1 -1
  656. package/dist/core/session-manager-types.js.map +1 -1
  657. package/dist/core/session-manager.d.ts +1 -1
  658. package/dist/core/session-manager.d.ts.map +1 -1
  659. package/dist/core/session-manager.js.map +1 -1
  660. package/dist/core/settings-manager-basic-accessors.d.ts +0 -4
  661. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  662. package/dist/core/settings-manager-basic-accessors.js +0 -50
  663. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  664. package/dist/core/settings-manager-core.d.ts +2 -4
  665. package/dist/core/settings-manager-core.d.ts.map +1 -1
  666. package/dist/core/settings-manager-core.js +5 -51
  667. package/dist/core/settings-manager-core.js.map +1 -1
  668. package/dist/core/settings-manager.d.ts +1 -1
  669. package/dist/core/settings-manager.d.ts.map +1 -1
  670. package/dist/core/settings-manager.js.map +1 -1
  671. package/dist/core/settings-storage.d.ts +3 -1
  672. package/dist/core/settings-storage.d.ts.map +1 -1
  673. package/dist/core/settings-storage.js +22 -0
  674. package/dist/core/settings-storage.js.map +1 -1
  675. package/dist/core/settings-types.d.ts +2 -4
  676. package/dist/core/settings-types.d.ts.map +1 -1
  677. package/dist/core/settings-types.js.map +1 -1
  678. package/dist/core/slash-commands.d.ts.map +1 -1
  679. package/dist/core/slash-commands.js +68 -22
  680. package/dist/core/slash-commands.js.map +1 -1
  681. package/dist/core/source-info.d.ts +3 -1
  682. package/dist/core/source-info.d.ts.map +1 -1
  683. package/dist/core/source-info.js +2 -0
  684. package/dist/core/source-info.js.map +1 -1
  685. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  686. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  687. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  688. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  689. package/dist/core/tools/bash-session-environment.js +35 -0
  690. package/dist/core/tools/bash-session-environment.js.map +1 -0
  691. package/dist/core/tools/bash.d.ts +4 -1
  692. package/dist/core/tools/bash.d.ts.map +1 -1
  693. package/dist/core/tools/bash.js +16 -8
  694. package/dist/core/tools/bash.js.map +1 -1
  695. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  696. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  697. package/dist/core/tools/tool-definition-wrapper.js +10 -2
  698. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  699. package/dist/extensions/index.js +1 -1
  700. package/dist/extensions/index.js.map +1 -1
  701. package/dist/extensions/llama/provider.d.ts +3 -2
  702. package/dist/extensions/llama/provider.d.ts.map +1 -1
  703. package/dist/extensions/llama/provider.js +9 -3
  704. package/dist/extensions/llama/provider.js.map +1 -1
  705. package/dist/index-extensions.d.ts +1 -1
  706. package/dist/index-extensions.d.ts.map +1 -1
  707. package/dist/index-extensions.js.map +1 -1
  708. package/dist/index.d.ts +2 -3
  709. package/dist/index.d.ts.map +1 -1
  710. package/dist/index.js +1 -2
  711. package/dist/index.js.map +1 -1
  712. package/dist/main-session-options.d.ts.map +1 -1
  713. package/dist/main-session-options.js +0 -4
  714. package/dist/main-session-options.js.map +1 -1
  715. package/dist/main-session.d.ts.map +1 -1
  716. package/dist/main-session.js +2 -1
  717. package/dist/main-session.js.map +1 -1
  718. package/dist/main.d.ts.map +1 -1
  719. package/dist/main.js +1 -17
  720. package/dist/main.js.map +1 -1
  721. package/dist/modes/index.d.ts +1 -1
  722. package/dist/modes/index.d.ts.map +1 -1
  723. package/dist/modes/index.js.map +1 -1
  724. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  725. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  726. package/dist/modes/interactive/chat-input-actions.js +14 -96
  727. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  728. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  729. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  730. package/dist/modes/interactive/components/atomic-banner.js +68 -24
  731. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  732. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  733. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  734. package/dist/modes/interactive/components/atomic-working-status.js +202 -0
  735. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  736. package/dist/modes/interactive/components/chat-message-renderer.js +1 -1
  737. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  738. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  739. package/dist/modes/interactive/components/chat-session-host-actions.js +87 -7
  740. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  741. package/dist/modes/interactive/components/chat-session-host-editor.js +3 -3
  742. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  743. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  744. package/dist/modes/interactive/components/chat-session-host-events.js +61 -9
  745. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  746. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  747. package/dist/modes/interactive/components/chat-session-host-rendering.js +23 -7
  748. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  749. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +27 -0
  750. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  751. package/dist/modes/interactive/components/chat-session-host-runtime.js +120 -18
  752. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  753. package/dist/modes/interactive/components/chat-session-host-state.d.ts +9 -0
  754. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  755. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  756. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  757. package/dist/modes/interactive/components/chat-session-host-types.d.ts +10 -0
  758. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  759. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  760. package/dist/modes/interactive/components/chat-session-host.d.ts +13 -0
  761. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  762. package/dist/modes/interactive/components/chat-session-host.js +22 -1
  763. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  764. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  765. package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
  766. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  767. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  768. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  769. package/dist/modes/interactive/components/custom-message.js +9 -2
  770. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  771. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  772. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  773. package/dist/modes/interactive/components/extension-editor.js +14 -43
  774. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  775. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  776. package/dist/modes/interactive/components/scoped-models-selector.js +18 -13
  777. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  778. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  779. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  780. package/dist/modes/interactive/components/startup-identity.js +58 -0
  781. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  782. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  783. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  784. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  785. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  786. package/dist/modes/interactive/components/tree-selector-model.js +0 -1
  787. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  788. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  789. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  790. package/dist/modes/interactive/components/working-status.js +14 -15
  791. package/dist/modes/interactive/components/working-status.js.map +1 -1
  792. package/dist/modes/interactive/external-editor.d.ts +23 -0
  793. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  794. package/dist/modes/interactive/external-editor.js +120 -0
  795. package/dist/modes/interactive/external-editor.js.map +1 -0
  796. package/dist/modes/interactive/interactive-agent-events.js +33 -22
  797. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  798. package/dist/modes/interactive/interactive-auth-login.js +16 -6
  799. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  800. package/dist/modes/interactive/interactive-auth-routing.js +3 -0
  801. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  802. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  803. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  804. package/dist/modes/interactive/interactive-bash-compact.js +8 -0
  805. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  806. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  807. package/dist/modes/interactive/interactive-deferred-startup.js +49 -19
  808. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  809. package/dist/modes/interactive/interactive-editor-actions.js +4 -3
  810. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  811. package/dist/modes/interactive/interactive-extension-dialogs.js +1 -1
  812. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  813. package/dist/modes/interactive/interactive-extension-runtime.js +3 -2
  814. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  815. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  816. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  817. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  818. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  819. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  820. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  821. package/dist/modes/interactive/interactive-input-handling.js +27 -51
  822. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  823. package/dist/modes/interactive/interactive-mode-base.d.ts +11 -7
  824. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  825. package/dist/modes/interactive/interactive-mode-base.js +14 -6
  826. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  827. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -4
  828. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  829. package/dist/modes/interactive/interactive-mode-deps.js +2 -4
  830. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  831. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -8
  832. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  833. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  834. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  835. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  836. package/dist/modes/interactive/interactive-mode.js +1 -0
  837. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  838. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +2 -3
  839. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  840. package/dist/modes/interactive/interactive-model-catalog-startup.js +3 -6
  841. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  842. package/dist/modes/interactive/interactive-model-routing.js +26 -97
  843. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  844. package/dist/modes/interactive/interactive-pause.d.ts +4 -0
  845. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  846. package/dist/modes/interactive/interactive-pause.js +8 -0
  847. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  848. package/dist/modes/interactive/interactive-process-lifecycle.js +5 -4
  849. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  850. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  851. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  852. package/dist/modes/interactive/interactive-prompt-turn.js +41 -0
  853. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  854. package/dist/modes/interactive/interactive-render-chat.js +20 -8
  855. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  856. package/dist/modes/interactive/interactive-resource-paths.js +11 -2
  857. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  858. package/dist/modes/interactive/interactive-resource-rendering.js +99 -0
  859. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  860. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  861. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  862. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  863. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  864. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  865. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  866. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  867. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  868. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  869. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  870. package/dist/modes/interactive/interactive-startup.js +30 -25
  871. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  872. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
  873. package/dist/modes/interactive/interactive-summarization-retry-events.js +9 -3
  874. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  875. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  876. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  877. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  878. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  879. package/dist/modes/interactive/theme/dark.json +1 -1
  880. package/dist/modes/interactive/theme/light.json +1 -1
  881. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  882. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  883. package/dist/modes/interactive/theme/theme-class.js +7 -0
  884. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  885. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  886. package/dist/modes/interactive/theme/theme-loading.js +4 -0
  887. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  888. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  889. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  890. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  891. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  892. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  893. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  894. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  895. package/dist/modes/interactive/whimsical-messages.js +2 -2
  896. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  897. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  898. package/dist/modes/interactive-engine/create-isolated-runtime.js +3 -1
  899. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  900. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  901. package/dist/modes/interactive-engine/engine-args.js +0 -1
  902. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  903. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  904. package/dist/modes/interactive-engine/engine-custom-ui.js +5 -17
  905. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  906. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  907. package/dist/modes/interactive-engine/engine-render-service.js +8 -19
  908. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  909. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
  910. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  911. package/dist/modes/interactive-engine/extension-ui-bridge.js +3 -0
  912. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  913. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  914. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  915. package/dist/modes/interactive-engine/isolated-auth.js +14 -0
  916. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  917. package/dist/modes/interactive-engine/isolated-runtime.d.ts +9 -1
  918. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  919. package/dist/modes/interactive-engine/isolated-runtime.js +46 -34
  920. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  921. package/dist/modes/interactive-engine/protocol.d.ts +1 -1
  922. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  923. package/dist/modes/interactive-engine/protocol.js +3 -10
  924. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  925. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -0
  926. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  927. package/dist/modes/interactive-engine/remote-model-catalog.js +10 -1
  928. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  929. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  930. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  931. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  932. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  933. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  934. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  935. package/dist/modes/interactive-engine/remote-renderer.js +4 -1
  936. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  937. package/dist/modes/print-mode.d.ts.map +1 -1
  938. package/dist/modes/print-mode.js +5 -0
  939. package/dist/modes/print-mode.js.map +1 -1
  940. package/dist/modes/rpc/jsonl.d.ts +2 -7
  941. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  942. package/dist/modes/rpc/jsonl.js +7 -24
  943. package/dist/modes/rpc/jsonl.js.map +1 -1
  944. package/dist/modes/rpc/queued-writer.d.ts +19 -0
  945. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  946. package/dist/modes/rpc/{bounded-writer.js → queued-writer.js} +7 -30
  947. package/dist/modes/rpc/queued-writer.js.map +1 -0
  948. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  949. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  950. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  951. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  952. package/dist/modes/rpc/rpc-client-api.d.ts +8 -5
  953. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  954. package/dist/modes/rpc/rpc-client-api.js +10 -11
  955. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  956. package/dist/modes/rpc/rpc-client-process.d.ts +1 -4
  957. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  958. package/dist/modes/rpc/rpc-client-process.js +2 -14
  959. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  960. package/dist/modes/rpc/rpc-client.d.ts +8 -4
  961. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  962. package/dist/modes/rpc/rpc-client.js +21 -30
  963. package/dist/modes/rpc/rpc-client.js.map +1 -1
  964. package/dist/modes/rpc/rpc-command-handler.d.ts +7 -4
  965. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  966. package/dist/modes/rpc/rpc-command-handler.js +76 -93
  967. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  968. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  969. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  970. package/dist/modes/rpc/rpc-input-scheduler.js +7 -4
  971. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  972. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  973. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  974. package/dist/modes/rpc/rpc-mode.js +5 -5
  975. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  976. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  977. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  978. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  979. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  980. package/dist/modes/rpc/rpc-oauth-client.d.ts +22 -0
  981. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  982. package/dist/modes/rpc/rpc-oauth-client.js +74 -0
  983. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  984. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  985. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  986. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  987. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  988. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  989. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  990. package/dist/modes/rpc/rpc-output-buffer.js +4 -39
  991. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  992. package/dist/modes/rpc/rpc-provider-auth.d.ts +23 -0
  993. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  994. package/dist/modes/rpc/rpc-provider-auth.js +145 -0
  995. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  996. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  997. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  998. package/dist/modes/rpc/rpc-responses.js +0 -14
  999. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  1000. package/dist/modes/rpc/rpc-types.d.ts +83 -27
  1001. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1002. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1003. package/dist/utils/clipboard.d.ts.map +1 -1
  1004. package/dist/utils/clipboard.js +21 -8
  1005. package/dist/utils/clipboard.js.map +1 -1
  1006. package/dist/utils/version-check.d.ts.map +1 -1
  1007. package/dist/utils/version-check.js +3 -1
  1008. package/dist/utils/version-check.js.map +1 -1
  1009. package/docs/changelog.mdx +12 -1
  1010. package/docs/compaction.md +101 -18
  1011. package/docs/custom-provider.md +13 -4
  1012. package/docs/docs.json +1 -0
  1013. package/docs/environment-variables.md +37 -0
  1014. package/docs/extensions.md +45 -9
  1015. package/docs/index.md +1 -0
  1016. package/docs/intercom.md +1 -1
  1017. package/docs/json.md +4 -4
  1018. package/docs/keybindings.md +4 -2
  1019. package/docs/llama-cpp.md +3 -1
  1020. package/docs/models.md +29 -43
  1021. package/docs/providers.md +18 -24
  1022. package/docs/quickstart.md +19 -16
  1023. package/docs/rpc.md +38 -85
  1024. package/docs/sdk.md +15 -22
  1025. package/docs/session-format.md +2 -15
  1026. package/docs/sessions.md +1 -1
  1027. package/docs/settings.md +10 -15
  1028. package/docs/skills.md +8 -0
  1029. package/docs/subagents.md +17 -9
  1030. package/docs/themes.md +10 -1
  1031. package/docs/tui.md +10 -5
  1032. package/docs/usage.md +21 -2
  1033. package/docs/windows.md +1 -1
  1034. package/docs/workflows.md +1096 -518
  1035. package/examples/extensions/README.md +1 -1
  1036. package/examples/extensions/handoff.ts +8 -1
  1037. package/examples/extensions/message-renderer.ts +2 -2
  1038. package/examples/extensions/summarize.ts +3 -0
  1039. package/examples/extensions/working-indicator.ts +2 -2
  1040. package/npm-shrinkwrap.json +40 -46
  1041. package/package.json +9 -7
  1042. package/dist/builtin/cursor/CHANGELOG.md +0 -281
  1043. package/dist/builtin/cursor/LICENSE +0 -26
  1044. package/dist/builtin/cursor/README.md +0 -24
  1045. package/dist/builtin/cursor/index.ts +0 -9
  1046. package/dist/builtin/cursor/package.json +0 -47
  1047. package/dist/builtin/cursor/src/auth.ts +0 -352
  1048. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  1049. package/dist/builtin/cursor/src/config.ts +0 -123
  1050. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  1051. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  1052. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  1053. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  1054. package/dist/builtin/cursor/src/models.ts +0 -54
  1055. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  1056. package/dist/builtin/cursor/src/proto/README.md +0 -34
  1057. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  1058. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  1059. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  1060. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  1061. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  1062. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  1063. package/dist/builtin/cursor/src/provider.ts +0 -301
  1064. package/dist/builtin/cursor/src/stream.ts +0 -494
  1065. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  1066. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  1067. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  1068. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  1069. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  1070. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  1071. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  1072. package/dist/builtin/cursor/src/transport.ts +0 -26
  1073. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  1074. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  1075. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  1076. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  1077. package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
  1078. package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
  1079. package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
  1080. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  1081. package/dist/core/context-window.d.ts +0 -54
  1082. package/dist/core/context-window.d.ts.map +0 -1
  1083. package/dist/core/context-window.js +0 -110
  1084. package/dist/core/context-window.js.map +0 -1
  1085. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  1086. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  1087. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  1088. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  1089. package/dist/core/copilot-errors.d.ts +0 -9
  1090. package/dist/core/copilot-errors.d.ts.map +0 -1
  1091. package/dist/core/copilot-errors.js +0 -32
  1092. package/dist/core/copilot-errors.js.map +0 -1
  1093. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  1094. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  1095. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  1096. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  1097. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  1098. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  1099. package/dist/core/copilot-gemini-reasoning.js +0 -265
  1100. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  1101. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  1102. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  1103. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  1104. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  1105. package/dist/core/copilot-hosts.d.ts +0 -12
  1106. package/dist/core/copilot-hosts.d.ts.map +0 -1
  1107. package/dist/core/copilot-hosts.js +0 -33
  1108. package/dist/core/copilot-hosts.js.map +0 -1
  1109. package/dist/core/copilot-model-catalog.d.ts +0 -114
  1110. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  1111. package/dist/core/copilot-model-catalog.js +0 -392
  1112. package/dist/core/copilot-model-catalog.js.map +0 -1
  1113. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  1114. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  1115. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  1116. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  1117. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  1118. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  1119. package/dist/core/copilot-model-synthesis.js +0 -91
  1120. package/dist/core/copilot-model-synthesis.js.map +0 -1
  1121. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  1122. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  1123. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  1124. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  1125. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  1126. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  1127. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1,16 +1,61 @@
1
1
  import { combineQueuedMessagesForEditor } from "../chat-input-actions.js";
2
2
  import { setChatSessionEditorText } from "./chat-session-host-editor.js";
3
- import { decrementOptimisticUserSignature, incrementOptimisticUserSignature, isChatSessionBashRunning, isChatSessionStreaming, notifyChatSessionStatus, notifyChatSessionWarning, requiredChatSessionCommand, syncChatSessionAnimationTick, } from "./chat-session-host-runtime.js";
3
+ import { decrementOptimisticUserSignature, incrementOptimisticUserSignature, isChatSessionBashRunning, isChatSessionStreaming, notifyChatSessionStatus, notifyChatSessionWarning, requiredChatSessionCommand, settleChatSessionPromptLifecycle, startChatSessionWorkingLifecycle, stopChatSessionWorkingLifecycle, syncChatSessionAnimationTick, } from "./chat-session-host-runtime.js";
4
4
  import { errorMessage, parseBashInput, userMessageSignature, } from "./chat-session-host-utils.js";
5
- export async function interruptChatSession(state) {
5
+ function supportsQueuedMessagePause(session) {
6
+ return typeof session?.pauseQueuedMessages === "function"
7
+ && typeof session.resumeQueuedMessages === "function";
8
+ }
9
+ export function interruptChatSession(state) {
10
+ const active = state.interruptSettlement;
11
+ if (active !== undefined)
12
+ return active;
13
+ state.interruptFailureMessage = undefined;
14
+ const settlement = (async () => {
15
+ try {
16
+ const session = state.getAgentSession?.();
17
+ if (supportsQueuedMessagePause(session))
18
+ session.pauseQueuedMessages();
19
+ state.sdkBusy = false;
20
+ state.workingMessage = undefined;
21
+ stopChatSessionWorkingLifecycle(state, false);
22
+ await state.commands.interrupt?.();
23
+ }
24
+ catch (err) {
25
+ state.interruptFailureMessage = errorMessage(err);
26
+ state.statusMessage = state.interruptFailureMessage;
27
+ throw err;
28
+ }
29
+ finally {
30
+ syncChatSessionAnimationTick(state);
31
+ state.requestRender?.();
32
+ }
33
+ })();
34
+ state.interruptSettlement = settlement;
35
+ void settlement.finally(() => {
36
+ if (state.interruptSettlement === settlement)
37
+ state.interruptSettlement = undefined;
38
+ }).catch(() => { });
39
+ return settlement;
40
+ }
41
+ async function submitAfterInterruptSettlement(state, settlement, text) {
42
+ const editorText = state.inputBuffer;
6
43
  try {
7
- restoreQueuedMessagesToEditor(state);
44
+ state.sdkBusy = true;
45
+ state.statusMessage = "resuming…";
46
+ syncChatSessionAnimationTick(state);
47
+ state.requestRender?.();
48
+ await settlement;
49
+ await requiredChatSessionCommand(state, "resume")(text);
50
+ if (state.inputBuffer === editorText)
51
+ setChatSessionEditorText(state, "");
8
52
  state.sdkBusy = false;
9
- state.workingMessage = undefined;
10
- await state.commands.interrupt?.();
53
+ state.statusMessage = "";
11
54
  }
12
55
  catch (err) {
56
+ state.sdkBusy = false;
13
57
  state.statusMessage = errorMessage(err);
58
+ state.interruptFailureMessage = undefined;
14
59
  }
15
60
  finally {
16
61
  syncChatSessionAnimationTick(state);
@@ -21,6 +66,18 @@ export async function submitChatSession(state, mode = "auto", submittedText) {
21
66
  const text = (submittedText ?? state.inputBuffer).trim();
22
67
  if (!text)
23
68
  return;
69
+ const interruptSettlement = state.interruptSettlement;
70
+ if (interruptSettlement !== undefined) {
71
+ await submitAfterInterruptSettlement(state, interruptSettlement, text);
72
+ return;
73
+ }
74
+ if (state.interruptFailureMessage !== undefined) {
75
+ state.statusMessage = state.interruptFailureMessage;
76
+ state.interruptFailureMessage = undefined;
77
+ syncChatSessionAnimationTick(state);
78
+ state.requestRender?.();
79
+ return;
80
+ }
24
81
  if (text.startsWith("/") && state.commands.handleSlashCommand) {
25
82
  const handled = await state.commands.handleSlashCommand(text);
26
83
  if (handled) {
@@ -48,6 +105,9 @@ export async function submitChatSession(state, mode = "auto", submittedText) {
48
105
  }
49
106
  setChatSessionEditorText(state, "");
50
107
  const isPaused = state.isPaused?.() === true;
108
+ const agentSession = state.getAgentSession?.();
109
+ const nativeQueuePaused = supportsQueuedMessagePause(agentSession)
110
+ && agentSession.queuedMessagesPaused;
51
111
  const isStreaming = isChatSessionStreaming(state);
52
112
  const shouldAppendOptimisticUser = mode === "auto" && !isStreaming;
53
113
  const optimisticSignature = shouldAppendOptimisticUser
@@ -59,6 +119,7 @@ export async function submitChatSession(state, mode = "auto", submittedText) {
59
119
  incrementOptimisticUserSignature(state, optimisticSignature);
60
120
  }
61
121
  state.requestRender?.();
122
+ let submittedPromptLifecycleGeneration;
62
123
  try {
63
124
  if (isPaused) {
64
125
  state.sdkBusy = true;
@@ -71,6 +132,19 @@ export async function submitChatSession(state, mode = "auto", submittedText) {
71
132
  syncChatSessionAnimationTick(state);
72
133
  return;
73
134
  }
135
+ if (nativeQueuePaused) {
136
+ state.sdkBusy = true;
137
+ state.statusMessage = "resuming…";
138
+ syncChatSessionAnimationTick(state);
139
+ state.requestRender?.();
140
+ await agentSession.resumeQueuedMessages();
141
+ await state.commands.ensureAttached?.();
142
+ await requiredChatSessionCommand(state, "prompt")(text);
143
+ state.sdkBusy = false;
144
+ state.statusMessage = "";
145
+ syncChatSessionAnimationTick(state);
146
+ return;
147
+ }
74
148
  if (mode === "followUp" && isStreaming) {
75
149
  await queueChatSessionFollowUp(state, text);
76
150
  return;
@@ -79,24 +153,30 @@ export async function submitChatSession(state, mode = "auto", submittedText) {
79
153
  await queueChatSessionSteer(state, text);
80
154
  }
81
155
  else {
156
+ state.statusMessage = "";
82
157
  state.sdkBusy = true;
158
+ startChatSessionWorkingLifecycle(state);
159
+ submittedPromptLifecycleGeneration = state.workingLifecycleGeneration;
83
160
  syncChatSessionAnimationTick(state);
161
+ state.requestRender?.();
84
162
  await state.commands.ensureAttached?.();
85
163
  await requiredChatSessionCommand(state, "prompt")(text);
86
- state.sdkBusy = false;
164
+ settleSubmittedPromptLifecycle(state, submittedPromptLifecycleGeneration);
87
165
  syncChatSessionAnimationTick(state);
166
+ state.requestRender?.();
88
167
  }
89
168
  }
90
169
  catch (err) {
91
170
  if (optimisticSignature !== undefined) {
92
171
  decrementOptimisticUserSignature(state, optimisticSignature);
93
172
  }
94
- state.sdkBusy = false;
173
+ settleSubmittedPromptLifecycle(state, submittedPromptLifecycleGeneration);
95
174
  state.statusMessage = errorMessage(err);
96
175
  syncChatSessionAnimationTick(state);
97
176
  state.requestRender?.();
98
177
  }
99
178
  }
179
+ const settleSubmittedPromptLifecycle = settleChatSessionPromptLifecycle;
100
180
  export async function abortChatSessionCompaction(state) {
101
181
  try {
102
182
  await state.commands.abortCompaction?.();
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-actions.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BashExecutionMessage } from \"../../../core/messages.ts\";\nimport { combineQueuedMessagesForEditor } from \"../chat-input-actions.ts\";\nimport type { ChatMessageEntry } from \"./chat-message-renderer.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport { setChatSessionEditorText } from \"./chat-session-host-editor.ts\";\nimport {\n decrementOptimisticUserSignature,\n incrementOptimisticUserSignature,\n isChatSessionBashRunning,\n isChatSessionStreaming,\n notifyChatSessionStatus,\n notifyChatSessionWarning,\n requiredChatSessionCommand,\n syncChatSessionAnimationTick,\n} from \"./chat-session-host-runtime.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport {\n errorMessage,\n parseBashInput,\n userMessageSignature,\n} from \"./chat-session-host-utils.ts\";\n\nexport async function interruptChatSession<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n try {\n restoreQueuedMessagesToEditor(state);\n state.sdkBusy = false;\n state.workingMessage = undefined;\n await state.commands.interrupt?.();\n } catch (err) {\n state.statusMessage = errorMessage(err);\n } finally {\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n}\n\nexport async function submitChatSession<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n mode: \"auto\" | \"followUp\" = \"auto\",\n submittedText?: string,\n): Promise<void> {\n const text = (submittedText ?? state.inputBuffer).trim();\n if (!text) return;\n if (text.startsWith(\"/\") && state.commands.handleSlashCommand) {\n const handled = await state.commands.handleSlashCommand(text);\n if (handled) {\n setChatSessionEditorText(state, \"\");\n state.requestRender?.();\n return;\n }\n }\n if (state.compacting) {\n setChatSessionEditorText(state, \"\");\n state.compactionQueuedMessages = [...state.compactionQueuedMessages, text];\n notifyChatSessionStatus(state, \"Queued message until compaction completes\");\n return;\n }\n const bash = parseBashInput(text);\n if (bash?.command) {\n if (isChatSessionBashRunning(state)) {\n notifyChatSessionWarning(state, \"A bash command is already running. esc cancel first.\");\n setChatSessionEditorText(state, text);\n return;\n }\n setChatSessionEditorText(state, \"\");\n await runChatSessionBashCommand(state, bash.command, bash.excludeFromContext);\n return;\n }\n setChatSessionEditorText(state, \"\");\n const isPaused = state.isPaused?.() === true;\n const isStreaming = isChatSessionStreaming(state);\n const shouldAppendOptimisticUser = mode === \"auto\" && !isStreaming;\n const optimisticSignature = shouldAppendOptimisticUser\n ? userMessageSignature(text)\n : undefined;\n if (optimisticSignature !== undefined) {\n state.liveChat.appendUserText(text);\n state.bodyViewport.scrollToBottom();\n incrementOptimisticUserSignature(state, optimisticSignature);\n }\n state.requestRender?.();\n try {\n if (isPaused) {\n state.sdkBusy = true;\n state.statusMessage = \"resuming…\";\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n await requiredChatSessionCommand(state, \"resume\")(text);\n state.sdkBusy = false;\n state.statusMessage = \"\";\n syncChatSessionAnimationTick(state);\n return;\n }\n if (mode === \"followUp\" && isStreaming) {\n await queueChatSessionFollowUp(state, text);\n return;\n }\n if (isStreaming) {\n await queueChatSessionSteer(state, text);\n } else {\n state.sdkBusy = true;\n syncChatSessionAnimationTick(state);\n await state.commands.ensureAttached?.();\n await requiredChatSessionCommand(state, \"prompt\")(text);\n state.sdkBusy = false;\n syncChatSessionAnimationTick(state);\n }\n } catch (err) {\n if (optimisticSignature !== undefined) {\n decrementOptimisticUserSignature(state, optimisticSignature);\n }\n state.sdkBusy = false;\n state.statusMessage = errorMessage(err);\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n}\n\nexport async function abortChatSessionCompaction<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n try {\n await state.commands.abortCompaction?.();\n state.compacting = false;\n state.sdkBusy = false;\n notifyChatSessionStatus(state, \"Compaction cancelled\");\n } catch (err) {\n notifyChatSessionWarning(state, errorMessage(err));\n } finally {\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n}\n\nexport async function abortChatSessionBash<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): Promise<void> {\n try {\n await state.commands.abortBash?.();\n state.localBashRunning = false;\n notifyChatSessionStatus(state, \"Bash command cancelled\");\n } catch (err) {\n notifyChatSessionWarning(state, errorMessage(err));\n } finally {\n state.requestRender?.();\n }\n}\n\nexport async function flushChatSessionCompactionQueue<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n const queued = [...state.compactionQueuedMessages];\n state.compactionQueuedMessages = [];\n if (queued.length === 0) return;\n let nextIndex = 0;\n try {\n const first = queued[0];\n if (first !== undefined) {\n await requiredChatSessionCommand(state, \"prompt\")(first);\n nextIndex = 1;\n }\n for (; nextIndex < queued.length; nextIndex++) {\n await queueChatSessionFollowUp(state, queued[nextIndex]!);\n }\n } catch (err) {\n state.compactionQueuedMessages = [\n ...queued.slice(nextIndex),\n ...state.compactionQueuedMessages,\n ];\n notifyChatSessionWarning(state, errorMessage(err));\n state.requestRender?.();\n }\n}\n\nexport function restoreQueuedMessagesToEditor<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): boolean {\n const queuedMessages = [\n ...state.pendingSteeringMessages,\n ...state.pendingFollowUpMessages,\n ...state.compactionQueuedMessages,\n ];\n if (queuedMessages.length === 0) {\n notifyChatSessionStatus(state, \"No queued messages to restore\");\n return false;\n }\n const restoredText = combineQueuedMessagesForEditor(queuedMessages, state.inputBuffer);\n state.pendingSteeringMessages = [];\n state.pendingFollowUpMessages = [];\n state.compactionQueuedMessages = [];\n setChatSessionEditorText(state, restoredText);\n state.getAgentSession?.()?.clearQueue();\n state.requestRender?.();\n return true;\n}\n\nasync function runChatSessionBashCommand<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n command: string,\n excludeFromContext: boolean,\n): Promise<void> {\n const runBash = state.commands.runBash;\n if (!runBash) {\n notifyChatSessionWarning(state, \"no bash command configured for this chat session\");\n return;\n }\n const bashMessage: BashExecutionMessage = {\n role: \"bashExecution\",\n command,\n output: \"\",\n exitCode: undefined,\n cancelled: false,\n truncated: false,\n timestamp: Date.now(),\n ...(excludeFromContext ? { excludeFromContext: true } : {}),\n };\n const bashEntry: ChatMessageEntry = {\n role: \"tool\",\n kind: \"bashExecution\",\n message: bashMessage,\n isPartial: true,\n };\n state.transcript.push(bashEntry);\n state.localBashRunning = true;\n state.bodyViewport.scrollToBottom();\n state.requestRender?.();\n try {\n const result = await runBash({\n command,\n excludeFromContext,\n onChunk: (chunk) => {\n bashMessage.output += chunk;\n state.requestRender?.();\n },\n });\n bashMessage.output = result.output;\n bashMessage.exitCode = result.exitCode;\n bashMessage.cancelled = result.cancelled;\n bashMessage.truncated = result.truncated;\n if (result.fullOutputPath !== undefined) {\n bashMessage.fullOutputPath = result.fullOutputPath;\n }\n } catch (err) {\n bashMessage.output = errorMessage(err);\n bashMessage.exitCode = undefined;\n bashMessage.cancelled = false;\n bashMessage.truncated = false;\n } finally {\n bashEntry.isPartial = false;\n state.localBashRunning = false;\n state.requestRender?.();\n }\n}\n\nasync function queueChatSessionSteer<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n text: string,\n): Promise<void> {\n const agentSession = state.getAgentSession?.();\n if (agentSession?.isStreaming) {\n await agentSession.prompt(text, { streamingBehavior: \"steer\" });\n return;\n }\n await requiredChatSessionCommand(state, \"steer\")(text);\n}\n\nasync function queueChatSessionFollowUp<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n text: string,\n): Promise<void> {\n const agentSession = state.getAgentSession?.();\n if (agentSession?.isStreaming) {\n await agentSession.prompt(text, { streamingBehavior: \"followUp\" });\n return;\n }\n await requiredChatSessionCommand(state, \"followUp\")(text);\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-actions.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BashExecutionMessage } from \"../../../core/messages.ts\";\nimport type { AgentSessionQueuePauseControl } from \"../../../core/agent-session-methods.ts\";\nimport { combineQueuedMessagesForEditor } from \"../chat-input-actions.ts\";\nimport type { ChatMessageEntry } from \"./chat-message-renderer.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport { setChatSessionEditorText } from \"./chat-session-host-editor.ts\";\nimport {\n decrementOptimisticUserSignature,\n incrementOptimisticUserSignature,\n isChatSessionBashRunning,\n isChatSessionStreaming,\n notifyChatSessionStatus,\n notifyChatSessionWarning,\n requiredChatSessionCommand,\n settleChatSessionPromptLifecycle,\n startChatSessionWorkingLifecycle,\n stopChatSessionWorkingLifecycle,\n syncChatSessionAnimationTick,\n} from \"./chat-session-host-runtime.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport {\n errorMessage,\n parseBashInput,\n userMessageSignature,\n} from \"./chat-session-host-utils.ts\";\n\nfunction supportsQueuedMessagePause(\n session: AgentSessionQueuePauseControl | undefined,\n): session is AgentSessionQueuePauseControl {\n return typeof session?.pauseQueuedMessages === \"function\"\n && typeof session.resumeQueuedMessages === \"function\";\n}\n\nexport function interruptChatSession<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n const active = state.interruptSettlement;\n if (active !== undefined) return active;\n state.interruptFailureMessage = undefined;\n const settlement = (async (): Promise<void> => {\n try {\n const session = state.getAgentSession?.();\n if (supportsQueuedMessagePause(session)) session.pauseQueuedMessages();\n state.sdkBusy = false;\n state.workingMessage = undefined;\n stopChatSessionWorkingLifecycle(state, false);\n await state.commands.interrupt?.();\n } catch (err) {\n state.interruptFailureMessage = errorMessage(err);\n state.statusMessage = state.interruptFailureMessage;\n throw err;\n } finally {\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n })();\n state.interruptSettlement = settlement;\n void settlement.finally(() => {\n if (state.interruptSettlement === settlement) state.interruptSettlement = undefined;\n }).catch(() => {});\n return settlement;\n}\n\nasync function submitAfterInterruptSettlement<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n settlement: Promise<void>,\n text: string,\n): Promise<void> {\n const editorText = state.inputBuffer;\n try {\n state.sdkBusy = true;\n state.statusMessage = \"resuming…\";\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n await settlement;\n await requiredChatSessionCommand(state, \"resume\")(text);\n if (state.inputBuffer === editorText) setChatSessionEditorText(state, \"\");\n state.sdkBusy = false;\n state.statusMessage = \"\";\n } catch (err) {\n state.sdkBusy = false;\n state.statusMessage = errorMessage(err);\n state.interruptFailureMessage = undefined;\n } finally {\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n}\n\nexport async function submitChatSession<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n mode: \"auto\" | \"followUp\" = \"auto\",\n submittedText?: string,\n): Promise<void> {\n const text = (submittedText ?? state.inputBuffer).trim();\n if (!text) return;\n const interruptSettlement = state.interruptSettlement;\n if (interruptSettlement !== undefined) {\n await submitAfterInterruptSettlement(state, interruptSettlement, text);\n return;\n }\n if (state.interruptFailureMessage !== undefined) {\n state.statusMessage = state.interruptFailureMessage;\n state.interruptFailureMessage = undefined;\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n return;\n }\n if (text.startsWith(\"/\") && state.commands.handleSlashCommand) {\n const handled = await state.commands.handleSlashCommand(text);\n if (handled) {\n setChatSessionEditorText(state, \"\");\n state.requestRender?.();\n return;\n }\n }\n if (state.compacting) {\n setChatSessionEditorText(state, \"\");\n state.compactionQueuedMessages = [...state.compactionQueuedMessages, text];\n notifyChatSessionStatus(state, \"Queued message until compaction completes\");\n return;\n }\n const bash = parseBashInput(text);\n if (bash?.command) {\n if (isChatSessionBashRunning(state)) {\n notifyChatSessionWarning(state, \"A bash command is already running. esc cancel first.\");\n setChatSessionEditorText(state, text);\n return;\n }\n setChatSessionEditorText(state, \"\");\n await runChatSessionBashCommand(state, bash.command, bash.excludeFromContext);\n return;\n }\n setChatSessionEditorText(state, \"\");\n const isPaused = state.isPaused?.() === true;\n const agentSession = state.getAgentSession?.();\n const nativeQueuePaused = supportsQueuedMessagePause(agentSession)\n && agentSession.queuedMessagesPaused;\n const isStreaming = isChatSessionStreaming(state);\n const shouldAppendOptimisticUser = mode === \"auto\" && !isStreaming;\n const optimisticSignature = shouldAppendOptimisticUser\n ? userMessageSignature(text)\n : undefined;\n if (optimisticSignature !== undefined) {\n state.liveChat.appendUserText(text);\n state.bodyViewport.scrollToBottom();\n incrementOptimisticUserSignature(state, optimisticSignature);\n }\n state.requestRender?.();\n let submittedPromptLifecycleGeneration: number | undefined;\n try {\n if (isPaused) {\n state.sdkBusy = true;\n state.statusMessage = \"resuming…\";\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n await requiredChatSessionCommand(state, \"resume\")(text);\n state.sdkBusy = false;\n state.statusMessage = \"\";\n syncChatSessionAnimationTick(state);\n return;\n }\n if (nativeQueuePaused) {\n state.sdkBusy = true;\n state.statusMessage = \"resuming…\";\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n await agentSession.resumeQueuedMessages();\n await state.commands.ensureAttached?.();\n await requiredChatSessionCommand(state, \"prompt\")(text);\n state.sdkBusy = false;\n state.statusMessage = \"\";\n syncChatSessionAnimationTick(state);\n return;\n }\n if (mode === \"followUp\" && isStreaming) {\n await queueChatSessionFollowUp(state, text);\n return;\n }\n if (isStreaming) {\n await queueChatSessionSteer(state, text);\n } else {\n state.statusMessage = \"\";\n state.sdkBusy = true;\n startChatSessionWorkingLifecycle(state);\n submittedPromptLifecycleGeneration = state.workingLifecycleGeneration;\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n await state.commands.ensureAttached?.();\n await requiredChatSessionCommand(state, \"prompt\")(text);\n settleSubmittedPromptLifecycle(state, submittedPromptLifecycleGeneration);\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n } catch (err) {\n if (optimisticSignature !== undefined) {\n decrementOptimisticUserSignature(state, optimisticSignature);\n }\n settleSubmittedPromptLifecycle(state, submittedPromptLifecycleGeneration);\n state.statusMessage = errorMessage(err);\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n}\n\nconst settleSubmittedPromptLifecycle = settleChatSessionPromptLifecycle;\n\nexport async function abortChatSessionCompaction<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n try {\n await state.commands.abortCompaction?.();\n state.compacting = false;\n state.sdkBusy = false;\n notifyChatSessionStatus(state, \"Compaction cancelled\");\n } catch (err) {\n notifyChatSessionWarning(state, errorMessage(err));\n } finally {\n syncChatSessionAnimationTick(state);\n state.requestRender?.();\n }\n}\n\nexport async function abortChatSessionBash<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): Promise<void> {\n try {\n await state.commands.abortBash?.();\n state.localBashRunning = false;\n notifyChatSessionStatus(state, \"Bash command cancelled\");\n } catch (err) {\n notifyChatSessionWarning(state, errorMessage(err));\n } finally {\n state.requestRender?.();\n }\n}\n\nexport async function flushChatSessionCompactionQueue<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n const queued = [...state.compactionQueuedMessages];\n state.compactionQueuedMessages = [];\n if (queued.length === 0) return;\n let nextIndex = 0;\n try {\n const first = queued[0];\n if (first !== undefined) {\n await requiredChatSessionCommand(state, \"prompt\")(first);\n nextIndex = 1;\n }\n for (; nextIndex < queued.length; nextIndex++) {\n await queueChatSessionFollowUp(state, queued[nextIndex]!);\n }\n } catch (err) {\n state.compactionQueuedMessages = [\n ...queued.slice(nextIndex),\n ...state.compactionQueuedMessages,\n ];\n notifyChatSessionWarning(state, errorMessage(err));\n state.requestRender?.();\n }\n}\n\nexport function restoreQueuedMessagesToEditor<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): boolean {\n const queuedMessages = [\n ...state.pendingSteeringMessages,\n ...state.pendingFollowUpMessages,\n ...state.compactionQueuedMessages,\n ];\n if (queuedMessages.length === 0) {\n notifyChatSessionStatus(state, \"No queued messages to restore\");\n return false;\n }\n const restoredText = combineQueuedMessagesForEditor(queuedMessages, state.inputBuffer);\n state.pendingSteeringMessages = [];\n state.pendingFollowUpMessages = [];\n state.compactionQueuedMessages = [];\n setChatSessionEditorText(state, restoredText);\n state.getAgentSession?.()?.clearQueue();\n state.requestRender?.();\n return true;\n}\n\nasync function runChatSessionBashCommand<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n command: string,\n excludeFromContext: boolean,\n): Promise<void> {\n const runBash = state.commands.runBash;\n if (!runBash) {\n notifyChatSessionWarning(state, \"no bash command configured for this chat session\");\n return;\n }\n const bashMessage: BashExecutionMessage = {\n role: \"bashExecution\",\n command,\n output: \"\",\n exitCode: undefined,\n cancelled: false,\n truncated: false,\n timestamp: Date.now(),\n ...(excludeFromContext ? { excludeFromContext: true } : {}),\n };\n const bashEntry: ChatMessageEntry = {\n role: \"tool\",\n kind: \"bashExecution\",\n message: bashMessage,\n isPartial: true,\n };\n state.transcript.push(bashEntry);\n state.localBashRunning = true;\n state.bodyViewport.scrollToBottom();\n state.requestRender?.();\n try {\n const result = await runBash({\n command,\n excludeFromContext,\n onChunk: (chunk) => {\n bashMessage.output += chunk;\n state.requestRender?.();\n },\n });\n bashMessage.output = result.output;\n bashMessage.exitCode = result.exitCode;\n bashMessage.cancelled = result.cancelled;\n bashMessage.truncated = result.truncated;\n if (result.fullOutputPath !== undefined) {\n bashMessage.fullOutputPath = result.fullOutputPath;\n }\n } catch (err) {\n bashMessage.output = errorMessage(err);\n bashMessage.exitCode = undefined;\n bashMessage.cancelled = false;\n bashMessage.truncated = false;\n } finally {\n bashEntry.isPartial = false;\n state.localBashRunning = false;\n state.requestRender?.();\n }\n}\n\nasync function queueChatSessionSteer<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n text: string,\n): Promise<void> {\n const agentSession = state.getAgentSession?.();\n if (agentSession?.isStreaming) {\n await agentSession.prompt(text, { streamingBehavior: \"steer\" });\n return;\n }\n await requiredChatSessionCommand(state, \"steer\")(text);\n}\n\nasync function queueChatSessionFollowUp<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n text: string,\n): Promise<void> {\n const agentSession = state.getAgentSession?.();\n if (agentSession?.isStreaming) {\n await agentSession.prompt(text, { streamingBehavior: \"followUp\" });\n return;\n }\n await requiredChatSessionCommand(state, \"followUp\")(text);\n}\n"]}
@@ -22,7 +22,7 @@ export function createChatSessionEditor(state, tui, keybindings, editorTheme, ed
22
22
  callbacks.restoreQueuedMessagesToEditor();
23
23
  });
24
24
  actionEditor.onAction?.("app.editor.external", () => {
25
- openChatSessionExternalEditor(state);
25
+ void openChatSessionExternalEditor(state);
26
26
  });
27
27
  if (state.actions) {
28
28
  for (const [action, handler] of Object.entries(state.actions)) {
@@ -149,14 +149,14 @@ function chatSessionEditorAccess(state) {
149
149
  setText: (text) => setChatSessionEditorText(state, text),
150
150
  };
151
151
  }
152
- function openChatSessionExternalEditor(state) {
152
+ async function openChatSessionExternalEditor(state) {
153
153
  if (!state.editor)
154
154
  return;
155
155
  const host = state.tui;
156
156
  if (!host)
157
157
  return;
158
158
  const currentText = state.editor.getExpandedText?.() ?? state.editor.getText();
159
- const updated = openExternalEditorForText(currentText, host, {
159
+ const updated = await openExternalEditorForText(currentText, host, {
160
160
  showWarning: (message) => notifyChatSessionWarning(state, message),
161
161
  });
162
162
  if (updated !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-editor.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type EditorComponent,\n type EditorTheme,\n type Focusable,\n type TUI,\n} from \"@earendil-works/pi-tui\";\nimport {\n openExternalEditorForText,\n pasteClipboardImageToEditor,\n} from \"../chat-input-actions.ts\";\nimport { CustomEditor } from \"./custom-editor.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatSessionHostOpts } from \"./chat-session-host-types.ts\";\nimport {\n isChatSessionBashRunning,\n isChatSessionStreaming,\n notifyChatSessionStatus,\n notifyChatSessionWarning,\n} from \"./chat-session-host-runtime.ts\";\nimport { matchesKey } from \"./chat-session-host-utils.ts\";\n\nexport interface ChatSessionEditorCallbacks {\n submit: (mode: \"auto\" | \"followUp\", submittedText?: string) => void | Promise<void>;\n restoreQueuedMessagesToEditor: () => boolean;\n abortCompaction: () => void | Promise<void>;\n interrupt: () => void | Promise<void>;\n abortBash: () => void | Promise<void>;\n}\n\nexport function createChatSessionEditor<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n tui: TUI | undefined,\n keybindings: unknown,\n editorTheme: EditorTheme,\n editorFactory: ChatSessionHostOpts<TExtraEntry>[\"editorFactory\"],\n callbacks: ChatSessionEditorCallbacks,\n): EditorComponent | undefined {\n if (!tui || !keybindings) return undefined;\n const editor = createInheritedEditor(tui, editorTheme, keybindings, editorFactory) ??\n new CustomEditor(\n tui,\n editorTheme,\n keybindings as ConstructorParameters<typeof CustomEditor>[2],\n { paddingX: 0, autocompleteMaxVisible: 5 },\n );\n editor.onChange = (text) => {\n state.inputBuffer = text;\n state.isBashMode = text.trimStart().startsWith(\"!\");\n };\n editor.onSubmit = (text) => {\n void callbacks.submit(\"auto\", text);\n };\n const actionEditor = editor as EditorComponent & {\n onAction?: (action: string, handler: () => void) => void;\n onEscape?: () => void;\n onPasteImage?: () => void;\n };\n actionEditor.onAction?.(\"app.message.followUp\", () => {\n void callbacks.submit(\"followUp\");\n });\n actionEditor.onAction?.(\"app.message.dequeue\", () => {\n callbacks.restoreQueuedMessagesToEditor();\n });\n actionEditor.onAction?.(\"app.editor.external\", () => {\n openChatSessionExternalEditor(state);\n });\n if (state.actions) {\n for (const [action, handler] of Object.entries(state.actions)) {\n actionEditor.onAction?.(action, () => {\n void handler();\n });\n }\n }\n const previousPasteImage = actionEditor.onPasteImage;\n actionEditor.onPasteImage = () => {\n previousPasteImage?.();\n void pasteClipboardImageToEditor(\n chatSessionEditorAccess(state),\n () => state.requestRender?.(),\n { showWarning: (message) => notifyChatSessionWarning(state, message) },\n );\n };\n const previousEscape = actionEditor.onEscape;\n actionEditor.onEscape = () => {\n if (state.compacting) {\n void callbacks.abortCompaction();\n return;\n }\n if (isChatSessionStreaming(state)) {\n void callbacks.interrupt();\n return;\n }\n if (isChatSessionBashRunning(state)) {\n void callbacks.abortBash();\n return;\n }\n if (state.isBashMode) {\n setChatSessionEditorText(state, \"\");\n notifyChatSessionStatus(state, \"Bash mode cleared\");\n return;\n }\n previousEscape?.();\n };\n return editor;\n}\n\nexport function handleChatSessionInput<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n data: string,\n callbacks: ChatSessionEditorCallbacks,\n): boolean {\n if (state.bodyViewport.handleInput(data)) return true;\n if (matchesKey(data, \"alt+up\")) {\n callbacks.restoreQueuedMessagesToEditor();\n return true;\n }\n if (matchesKey(data, \"ctrl+f\")) {\n void callbacks.submit(\"followUp\");\n return true;\n }\n if (matchesKey(data, \"escape\")) {\n if (state.compacting) {\n void callbacks.abortCompaction();\n return true;\n }\n if (isChatSessionStreaming(state)) {\n void callbacks.interrupt();\n return true;\n }\n if (isChatSessionBashRunning(state)) {\n void callbacks.abortBash();\n return true;\n }\n if (state.isBashMode) {\n setChatSessionEditorText(state, \"\");\n notifyChatSessionStatus(state, \"Bash mode cleared\");\n return true;\n }\n }\n if (state.editor) {\n state.editor.handleInput(data);\n return true;\n }\n if (matchesKey(data, \"enter\")) {\n void callbacks.submit(\"auto\");\n return true;\n }\n if (matchesKey(data, \"backspace\")) {\n setChatSessionEditorText(state, state.inputBuffer.slice(0, -1));\n return true;\n }\n if (data.length === 1 && data >= \" \" && data <= \"~\") {\n setChatSessionEditorText(state, `${state.inputBuffer}${data}`);\n return true;\n }\n return false;\n}\n\nexport function setChatSessionEditorText<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>, text: string): void {\n state.inputBuffer = text;\n state.isBashMode = text.trimStart().startsWith(\"!\");\n state.editor?.setText(text);\n}\n\nexport function setEditorPlaceholder(\n editor: EditorComponent,\n placeholder: string | undefined,\n): void {\n const candidate = editor as EditorComponent & {\n setPlaceholder?: (value: string | undefined) => void;\n };\n candidate.setPlaceholder?.(placeholder);\n}\n\nexport function setEditorBorderColor(\n editor: EditorComponent,\n borderColor: (text: string) => string,\n): void {\n const candidate = editor as EditorComponent & {\n borderColor?: (text: string) => string;\n };\n if (candidate.borderColor !== undefined) candidate.borderColor = borderColor;\n}\n\nexport function setEditorFocused(editor: EditorComponent, focused: boolean): void {\n const candidate = editor as EditorComponent & Partial<Focusable>;\n if (\"focused\" in candidate) candidate.focused = focused;\n}\n\nfunction createInheritedEditor<TExtraEntry extends ChatTranscriptEntryLike>(\n tui: TUI,\n editorTheme: EditorTheme,\n keybindings: unknown,\n editorFactory: ChatSessionHostOpts<TExtraEntry>[\"editorFactory\"],\n): EditorComponent | undefined {\n if (!editorFactory) return undefined;\n try {\n return editorFactory(tui, editorTheme, keybindings);\n } catch {\n return undefined;\n }\n}\n\nfunction chatSessionEditorAccess<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): {\n insertTextAtCursor: (text: string) => void;\n getText: () => string;\n setText: (text: string) => void;\n} {\n return {\n insertTextAtCursor: (text: string) => {\n if (state.editor?.insertTextAtCursor) {\n state.editor.insertTextAtCursor(text);\n return;\n }\n setChatSessionEditorText(state, `${state.inputBuffer}${text}`);\n },\n getText: () => state.inputBuffer,\n setText: (text: string) => setChatSessionEditorText(state, text),\n };\n}\n\nfunction openChatSessionExternalEditor<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): void {\n if (!state.editor) return;\n const host = state.tui;\n if (!host) return;\n const currentText = state.editor.getExpandedText?.() ?? state.editor.getText();\n const updated = openExternalEditorForText(currentText, host, {\n showWarning: (message) => notifyChatSessionWarning(state, message),\n });\n if (updated !== undefined) setChatSessionEditorText(state, updated);\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-editor.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type EditorComponent,\n type EditorTheme,\n type Focusable,\n type TUI,\n} from \"@earendil-works/pi-tui\";\nimport {\n openExternalEditorForText,\n pasteClipboardImageToEditor,\n} from \"../chat-input-actions.ts\";\nimport { CustomEditor } from \"./custom-editor.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatSessionHostOpts } from \"./chat-session-host-types.ts\";\nimport {\n isChatSessionBashRunning,\n isChatSessionStreaming,\n notifyChatSessionStatus,\n notifyChatSessionWarning,\n} from \"./chat-session-host-runtime.ts\";\nimport { matchesKey } from \"./chat-session-host-utils.ts\";\n\nexport interface ChatSessionEditorCallbacks {\n submit: (mode: \"auto\" | \"followUp\", submittedText?: string) => void | Promise<void>;\n restoreQueuedMessagesToEditor: () => boolean;\n abortCompaction: () => void | Promise<void>;\n interrupt: () => void | Promise<void>;\n abortBash: () => void | Promise<void>;\n}\n\nexport function createChatSessionEditor<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n tui: TUI | undefined,\n keybindings: unknown,\n editorTheme: EditorTheme,\n editorFactory: ChatSessionHostOpts<TExtraEntry>[\"editorFactory\"],\n callbacks: ChatSessionEditorCallbacks,\n): EditorComponent | undefined {\n if (!tui || !keybindings) return undefined;\n const editor = createInheritedEditor(tui, editorTheme, keybindings, editorFactory) ??\n new CustomEditor(\n tui,\n editorTheme,\n keybindings as ConstructorParameters<typeof CustomEditor>[2],\n { paddingX: 0, autocompleteMaxVisible: 5 },\n );\n editor.onChange = (text) => {\n state.inputBuffer = text;\n state.isBashMode = text.trimStart().startsWith(\"!\");\n };\n editor.onSubmit = (text) => {\n void callbacks.submit(\"auto\", text);\n };\n const actionEditor = editor as EditorComponent & {\n onAction?: (action: string, handler: () => void) => void;\n onEscape?: () => void;\n onPasteImage?: () => void;\n };\n actionEditor.onAction?.(\"app.message.followUp\", () => {\n void callbacks.submit(\"followUp\");\n });\n actionEditor.onAction?.(\"app.message.dequeue\", () => {\n callbacks.restoreQueuedMessagesToEditor();\n });\n actionEditor.onAction?.(\"app.editor.external\", () => {\n void openChatSessionExternalEditor(state);\n });\n if (state.actions) {\n for (const [action, handler] of Object.entries(state.actions)) {\n actionEditor.onAction?.(action, () => {\n void handler();\n });\n }\n }\n const previousPasteImage = actionEditor.onPasteImage;\n actionEditor.onPasteImage = () => {\n previousPasteImage?.();\n void pasteClipboardImageToEditor(\n chatSessionEditorAccess(state),\n () => state.requestRender?.(),\n { showWarning: (message) => notifyChatSessionWarning(state, message) },\n );\n };\n const previousEscape = actionEditor.onEscape;\n actionEditor.onEscape = () => {\n if (state.compacting) {\n void callbacks.abortCompaction();\n return;\n }\n if (isChatSessionStreaming(state)) {\n void callbacks.interrupt();\n return;\n }\n if (isChatSessionBashRunning(state)) {\n void callbacks.abortBash();\n return;\n }\n if (state.isBashMode) {\n setChatSessionEditorText(state, \"\");\n notifyChatSessionStatus(state, \"Bash mode cleared\");\n return;\n }\n previousEscape?.();\n };\n return editor;\n}\n\nexport function handleChatSessionInput<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n data: string,\n callbacks: ChatSessionEditorCallbacks,\n): boolean {\n if (state.bodyViewport.handleInput(data)) return true;\n if (matchesKey(data, \"alt+up\")) {\n callbacks.restoreQueuedMessagesToEditor();\n return true;\n }\n if (matchesKey(data, \"ctrl+f\")) {\n void callbacks.submit(\"followUp\");\n return true;\n }\n if (matchesKey(data, \"escape\")) {\n if (state.compacting) {\n void callbacks.abortCompaction();\n return true;\n }\n if (isChatSessionStreaming(state)) {\n void callbacks.interrupt();\n return true;\n }\n if (isChatSessionBashRunning(state)) {\n void callbacks.abortBash();\n return true;\n }\n if (state.isBashMode) {\n setChatSessionEditorText(state, \"\");\n notifyChatSessionStatus(state, \"Bash mode cleared\");\n return true;\n }\n }\n if (state.editor) {\n state.editor.handleInput(data);\n return true;\n }\n if (matchesKey(data, \"enter\")) {\n void callbacks.submit(\"auto\");\n return true;\n }\n if (matchesKey(data, \"backspace\")) {\n setChatSessionEditorText(state, state.inputBuffer.slice(0, -1));\n return true;\n }\n if (data.length === 1 && data >= \" \" && data <= \"~\") {\n setChatSessionEditorText(state, `${state.inputBuffer}${data}`);\n return true;\n }\n return false;\n}\n\nexport function setChatSessionEditorText<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>, text: string): void {\n state.inputBuffer = text;\n state.isBashMode = text.trimStart().startsWith(\"!\");\n state.editor?.setText(text);\n}\n\nexport function setEditorPlaceholder(\n editor: EditorComponent,\n placeholder: string | undefined,\n): void {\n const candidate = editor as EditorComponent & {\n setPlaceholder?: (value: string | undefined) => void;\n };\n candidate.setPlaceholder?.(placeholder);\n}\n\nexport function setEditorBorderColor(\n editor: EditorComponent,\n borderColor: (text: string) => string,\n): void {\n const candidate = editor as EditorComponent & {\n borderColor?: (text: string) => string;\n };\n if (candidate.borderColor !== undefined) candidate.borderColor = borderColor;\n}\n\nexport function setEditorFocused(editor: EditorComponent, focused: boolean): void {\n const candidate = editor as EditorComponent & Partial<Focusable>;\n if (\"focused\" in candidate) candidate.focused = focused;\n}\n\nfunction createInheritedEditor<TExtraEntry extends ChatTranscriptEntryLike>(\n tui: TUI,\n editorTheme: EditorTheme,\n keybindings: unknown,\n editorFactory: ChatSessionHostOpts<TExtraEntry>[\"editorFactory\"],\n): EditorComponent | undefined {\n if (!editorFactory) return undefined;\n try {\n return editorFactory(tui, editorTheme, keybindings);\n } catch {\n return undefined;\n }\n}\n\nfunction chatSessionEditorAccess<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n): {\n insertTextAtCursor: (text: string) => void;\n getText: () => string;\n setText: (text: string) => void;\n} {\n return {\n insertTextAtCursor: (text: string) => {\n if (state.editor?.insertTextAtCursor) {\n state.editor.insertTextAtCursor(text);\n return;\n }\n setChatSessionEditorText(state, `${state.inputBuffer}${text}`);\n },\n getText: () => state.inputBuffer,\n setText: (text: string) => setChatSessionEditorText(state, text),\n };\n}\n\nasync function openChatSessionExternalEditor<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(state: ChatSessionHostState<TExtraEntry>): Promise<void> {\n if (!state.editor) return;\n const host = state.tui;\n if (!host) return;\n const currentText = state.editor.getExpandedText?.() ?? state.editor.getText();\n const updated = await openExternalEditorForText(currentText, host, {\n showWarning: (message) => notifyChatSessionWarning(state, message),\n });\n if (updated !== undefined) setChatSessionEditorText(state, updated);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-events.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAkBtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAkGpE,wBAAgB,0BAA0B,CACxC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CA6JT"}
1
+ {"version":3,"file":"chat-session-host-events.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAqBtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAoHpE,wBAAgB,0BAA0B,CACxC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CA+LT"}
@@ -2,7 +2,7 @@ import { VERBATIM_COMPACTION_PROMPT_VERSION, VERBATIM_COMPACTION_STRATEGY, } fro
2
2
  import { createVerbatimCompactionMessage, isVerbatimCompactionMessage, } from "../../../core/messages.js";
3
3
  import { pickWhimsicalWorkingMessage } from "../whimsical-messages.js";
4
4
  import { flushChatSessionCompactionQueue } from "./chat-session-host-actions.js";
5
- import { afterChatSessionEvent, decrementOptimisticUserSignature, } from "./chat-session-host-runtime.js";
5
+ import { afterChatSessionEvent, decrementOptimisticUserSignature, startChatSessionWorkingLifecycle, stopChatSessionWorkingLifecycle, } from "./chat-session-host-runtime.js";
6
6
  import { extractMessageText, isMessageLike, isUserMessageLike, userMessageSignature, } from "./chat-session-host-utils.js";
7
7
  function compactionStatusMessage(reason) {
8
8
  switch (reason) {
@@ -17,13 +17,19 @@ function compactionStatusMessage(reason) {
17
17
  function hasVerbatimCompactionMessage(messages) {
18
18
  return messages.some((message) => message.role === "custom" && isVerbatimCompactionMessage(message));
19
19
  }
20
+ /**
21
+ * Every durable rung, derived from the union so a new member cannot be silently
22
+ * rejected here. The event-only path (no session snapshot) is the one place a
23
+ * `fresh` boundary would otherwise be dropped.
24
+ */
25
+ const COMPACTION_RUNGS = new Set(["planned", "extension", "fresh"]);
20
26
  function isCompleteCompactionResult(result) {
21
27
  return (typeof result.compactedText === "string" &&
22
28
  typeof result.tokensBefore === "number" &&
23
29
  result.stats !== undefined &&
24
30
  result.parameters !== undefined &&
25
31
  result.promptVersion === VERBATIM_COMPACTION_PROMPT_VERSION &&
26
- (result.rung === "planned" || result.rung === "extension"));
32
+ COMPACTION_RUNGS.has(result.rung));
27
33
  }
28
34
  function boundaryMessageFromResult(result) {
29
35
  if (!isCompleteCompactionResult(result))
@@ -34,6 +40,9 @@ function boundaryMessageFromResult(result) {
34
40
  parameters: result.parameters,
35
41
  stats: result.stats,
36
42
  rung: result.rung,
43
+ // Preserve the borrowed-planner identity; the event-only path is otherwise
44
+ // the one place it is lost.
45
+ ...(result.plannerModel === undefined ? {} : { plannerModel: result.plannerModel }),
37
46
  ...(result.backupPath === undefined ? {} : { backupPath: result.backupPath }),
38
47
  };
39
48
  return createVerbatimCompactionMessage(result.compactedText, result.tokensBefore, new Date().toISOString(), details);
@@ -49,10 +58,17 @@ function customMessageText(message) {
49
58
  function transcriptHasBoundaryForResult(transcript, result) {
50
59
  return transcript.some((entry) => {
51
60
  const candidate = entry;
52
- return (candidate.kind === "custom" &&
53
- candidate.message?.role === "custom" &&
54
- isVerbatimCompactionMessage(candidate.message) &&
55
- customMessageText(candidate.message).endsWith(result.compactedText));
61
+ if (candidate.kind !== "custom" ||
62
+ candidate.message?.role !== "custom" ||
63
+ !isVerbatimCompactionMessage(candidate.message)) {
64
+ return false;
65
+ }
66
+ // The rung is part of the identity, not decoration. A planned and a fresh
67
+ // boundary can carry identical text, and treating them as the same result
68
+ // silently swallows the fresh event — the one the user is meant to see.
69
+ if (candidate.message?.details?.rung !== result.rung)
70
+ return false;
71
+ return customMessageText(candidate.message).endsWith(result.compactedText);
56
72
  });
57
73
  }
58
74
  function refreshCompactedTranscript(state, result) {
@@ -68,6 +84,8 @@ function refreshCompactedTranscript(state, result) {
68
84
  state.liveChat.appendMessages([boundary]);
69
85
  }
70
86
  export function applyChatSessionAgentEvent(state, event) {
87
+ if (state.disposed)
88
+ return false;
71
89
  const type = String(event.type ?? "");
72
90
  if (type === "message_start") {
73
91
  const message = event.message;
@@ -93,15 +111,19 @@ export function applyChatSessionAgentEvent(state, event) {
93
111
  switch (type) {
94
112
  case "agent_start":
95
113
  state.sdkBusy = true;
114
+ state.workingMessage = undefined;
115
+ startChatSessionWorkingLifecycle(state);
96
116
  state.liveChat.clearPendingTools();
97
117
  state.statusMessage = "";
98
118
  changed = true;
99
119
  break;
100
120
  case "agent_end":
101
121
  state.sdkBusy = false;
122
+ state.compacting = false;
102
123
  state.workingMessage = undefined;
103
124
  state.liveChat.clearPendingTools();
104
125
  state.statusMessage = "";
126
+ stopChatSessionWorkingLifecycle(state);
105
127
  changed = true;
106
128
  if (state.compactionQueuedMessages.length > 0) {
107
129
  const idle = state.getAgentSession?.()?.agent.waitForIdle() ?? Promise.resolve();
@@ -109,11 +131,14 @@ export function applyChatSessionAgentEvent(state, event) {
109
131
  }
110
132
  break;
111
133
  case "turn_start":
134
+ startChatSessionWorkingLifecycle(state);
112
135
  state.workingMessage = pickWhimsicalWorkingMessage();
113
136
  changed = true;
114
137
  break;
115
138
  case "turn_end":
139
+ state.compacting = false;
116
140
  state.workingMessage = undefined;
141
+ stopChatSessionWorkingLifecycle(state);
117
142
  changed = true;
118
143
  break;
119
144
  case "queue_update": {
@@ -143,6 +168,9 @@ export function applyChatSessionAgentEvent(state, event) {
143
168
  state.compacting = true;
144
169
  state.sdkBusy = true;
145
170
  state.statusMessage = compactionStatusMessage(compaction.reason);
171
+ // The animation timer this event starts would otherwise swallow the
172
+ // event's own paint request, delaying the factual status by a frame.
173
+ state.immediateEventRenderPending = true;
146
174
  changed = true;
147
175
  break;
148
176
  }
@@ -151,7 +179,21 @@ export function applyChatSessionAgentEvent(state, event) {
151
179
  state.compacting = false;
152
180
  state.sdkBusy = compaction.midTurn === true;
153
181
  state.statusMessage = compaction.errorMessage ?? "";
154
- if (!compaction.aborted && !compaction.errorMessage && compaction.result) {
182
+ if (compaction.midTurn !== true || compaction.aborted || compaction.errorMessage) {
183
+ state.workingMessage = undefined;
184
+ stopChatSessionWorkingLifecycle(state);
185
+ }
186
+ else if (!state.workingLifecycleActive) {
187
+ // A successful no-op ends before the next turn_start, so nothing else
188
+ // would restart ordinary Working for the continuing stream.
189
+ startChatSessionWorkingLifecycle(state);
190
+ }
191
+ state.immediateEventRenderPending = true;
192
+ // `result` and `errorMessage` are independent facts. The post-tool gate can
193
+ // report a hard-input-limit failure *after* the boundary was already
194
+ // committed, and skipping the refresh there hid a durable context
195
+ // destruction behind an error line. Show the boundary, then the status.
196
+ if (!compaction.aborted && compaction.result) {
155
197
  refreshCompactedTranscript(state, compaction.result);
156
198
  }
157
199
  if (!compaction.midTurn &&
@@ -181,39 +223,49 @@ export function applyChatSessionAgentEvent(state, event) {
181
223
  break;
182
224
  case "auto_retry_start":
183
225
  state.sdkBusy = true;
226
+ state.workingMessage = undefined;
184
227
  state.statusMessage = "retrying…";
228
+ stopChatSessionWorkingLifecycle(state);
185
229
  changed = true;
186
230
  break;
187
231
  case "model_fallback_start":
188
232
  state.sdkBusy = true;
233
+ state.workingMessage = undefined;
189
234
  state.statusMessage = "switching model…";
235
+ stopChatSessionWorkingLifecycle(state);
190
236
  changed = true;
191
237
  break;
192
238
  case "model_fallback_end": {
193
239
  const fallback = event;
194
240
  state.statusMessage = fallback.success ? "" : (fallback.finalError ?? "model fallback failed");
241
+ state.workingMessage = undefined;
195
242
  if (!fallback.success) {
196
243
  state.sdkBusy = false;
197
- state.workingMessage = undefined;
244
+ state.compacting = false;
198
245
  }
246
+ stopChatSessionWorkingLifecycle(state);
199
247
  changed = true;
200
248
  break;
201
249
  }
202
250
  case "auto_retry_end": {
203
251
  const retry = event;
204
252
  state.statusMessage = "";
253
+ state.workingMessage = undefined;
205
254
  if (!retry.success) {
206
255
  state.sdkBusy = false;
207
- state.workingMessage = undefined;
256
+ state.compacting = false;
208
257
  }
258
+ stopChatSessionWorkingLifecycle(state);
209
259
  changed = true;
210
260
  break;
211
261
  }
212
262
  case "agent_continue_error": {
213
263
  const continueError = event;
214
264
  state.sdkBusy = false;
265
+ state.compacting = false;
215
266
  state.statusMessage = continueError.errorMessage;
216
267
  state.workingMessage = undefined;
268
+ stopChatSessionWorkingLifecycle(state);
217
269
  changed = true;
218
270
  break;
219
271
  }