@bastani/atomic 0.9.12 → 0.9.13-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1187) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +35 -17
  3. package/dist/builtin/i-have-adhd/CHANGELOG.md +17 -0
  4. package/dist/builtin/i-have-adhd/LICENSE +21 -0
  5. package/dist/builtin/i-have-adhd/README.md +18 -0
  6. package/dist/builtin/i-have-adhd/index.ts +238 -0
  7. package/dist/builtin/i-have-adhd/package.json +56 -0
  8. package/dist/builtin/i-have-adhd/skills/i-have-adhd/SKILL.md +140 -0
  9. package/dist/builtin/intercom/CHANGELOG.md +25 -0
  10. package/dist/builtin/intercom/README.md +30 -16
  11. package/dist/builtin/intercom/broker/bounded-stderr-install.ts +18 -0
  12. package/dist/builtin/intercom/broker/bounded-stderr.ts +132 -0
  13. package/dist/builtin/intercom/broker/broker.ts +12 -23
  14. package/dist/builtin/intercom/broker/client.ts +81 -5
  15. package/dist/builtin/intercom/broker/paths.ts +9 -0
  16. package/dist/builtin/intercom/broker/presence-handler.ts +103 -0
  17. package/dist/builtin/intercom/broker/spawn.ts +128 -29
  18. package/dist/builtin/intercom/contact-supervisor-tool.ts +13 -3
  19. package/dist/builtin/intercom/foreground-detach-handoff.ts +30 -14
  20. package/dist/builtin/intercom/group.ts +64 -25
  21. package/dist/builtin/intercom/index-heavy.ts +51 -8
  22. package/dist/builtin/intercom/index.ts +50 -22
  23. package/dist/builtin/intercom/intercom-tool.ts +82 -5
  24. package/dist/builtin/intercom/intercom-utils.ts +15 -29
  25. package/dist/builtin/intercom/lazy-subagent-ack.ts +11 -6
  26. package/dist/builtin/intercom/package.json +2 -3
  27. package/dist/builtin/intercom/runtime-group.ts +13 -0
  28. package/dist/builtin/intercom/skills/intercom/SKILL.md +30 -2
  29. package/dist/builtin/intercom/source-ownership.ts +9 -12
  30. package/dist/builtin/intercom/subagent-relay.ts +32 -16
  31. package/dist/builtin/intercom/terminal-ordering-barrier.ts +21 -4
  32. package/dist/builtin/intercom/types.ts +3 -1
  33. package/dist/builtin/intercom/ui/compose.ts +8 -6
  34. package/dist/builtin/intercom/ui/session-list.ts +7 -5
  35. package/dist/builtin/mcp/CHANGELOG.md +19 -0
  36. package/dist/builtin/mcp/README.md +3 -1
  37. package/dist/builtin/mcp/glimpse-ui.ts +2 -1
  38. package/dist/builtin/mcp/index.ts +10 -26
  39. package/dist/builtin/mcp/mcp-panel.ts +35 -34
  40. package/dist/builtin/mcp/mcp-setup-panel.ts +35 -33
  41. package/dist/builtin/mcp/npx-resolver.ts +3 -2
  42. package/dist/builtin/mcp/package.json +3 -3
  43. package/dist/builtin/mcp/sampling-handler.ts +5 -1
  44. package/dist/builtin/mcp/server-manager.ts +4 -7
  45. package/dist/builtin/mcp/startup-warmup.ts +20 -8
  46. package/dist/builtin/subagents/CHANGELOG.md +63 -0
  47. package/dist/builtin/subagents/README.md +144 -351
  48. package/dist/builtin/subagents/agents/worker.md +1 -1
  49. package/dist/builtin/subagents/package.json +5 -5
  50. package/dist/builtin/subagents/prompts/parallel-context-build.md +2 -2
  51. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +4 -4
  52. package/dist/builtin/subagents/prompts/review-loop.md +1 -1
  53. package/dist/builtin/subagents/skills/subagent/SKILL.md +39 -102
  54. package/dist/builtin/subagents/src/agents/agent-discovery.ts +1 -29
  55. package/dist/builtin/subagents/src/agents/agent-loaders.ts +1 -40
  56. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +6 -135
  57. package/dist/builtin/subagents/src/agents/agent-management.ts +52 -282
  58. package/dist/builtin/subagents/src/agents/agent-paths.ts +0 -22
  59. package/dist/builtin/subagents/src/agents/agent-types.ts +0 -40
  60. package/dist/builtin/subagents/src/agents/agents.ts +0 -3
  61. package/dist/builtin/subagents/src/agents/identity.ts +2 -4
  62. package/dist/builtin/subagents/src/agents/skills-paths.ts +8 -1
  63. package/dist/builtin/subagents/src/extension/doctor.ts +4 -24
  64. package/dist/builtin/subagents/src/extension/fanout-child.ts +76 -56
  65. package/dist/builtin/subagents/src/extension/index.ts +32 -39
  66. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +2 -2
  67. package/dist/builtin/subagents/src/extension/schemas.ts +1 -157
  68. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +25 -46
  69. package/dist/builtin/subagents/src/extension/tool-description.ts +4 -13
  70. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +6 -2
  71. package/dist/builtin/subagents/src/intercom/result-intercom.ts +27 -29
  72. package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +9 -2
  73. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +248 -435
  74. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +8 -3
  75. package/dist/builtin/subagents/src/runs/background/notify.ts +83 -26
  76. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +1 -281
  77. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +0 -5
  78. package/dist/builtin/subagents/src/runs/foreground/execution.ts +1 -4
  79. package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +559 -0
  80. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +103 -259
  81. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +29 -31
  82. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +10 -173
  83. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +7 -5
  84. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +13 -6
  85. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +1 -646
  86. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +2 -7
  87. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +14 -7
  88. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +39 -20
  89. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +16 -11
  90. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +1 -14
  91. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +194 -104
  92. package/dist/builtin/subagents/src/runs/inprocess/background-single.ts +195 -0
  93. package/dist/builtin/subagents/src/runs/inprocess/background.ts +90 -0
  94. package/dist/builtin/subagents/src/runs/inprocess/child-policy.ts +27 -0
  95. package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +55 -0
  96. package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +106 -0
  97. package/dist/builtin/subagents/src/runs/inprocess/index.ts +50 -0
  98. package/dist/builtin/subagents/src/runs/inprocess/nested-routing.ts +218 -0
  99. package/dist/builtin/subagents/src/runs/{shared/subagent-prompt-runtime.ts → inprocess/prompt-behavior.ts} +37 -75
  100. package/dist/builtin/subagents/src/runs/inprocess/runner.ts +1392 -0
  101. package/dist/builtin/subagents/src/runs/{shared/nested-events.ts → inprocess/runtime-support/nested-api.ts} +13 -7
  102. package/dist/builtin/subagents/src/runs/{shared/nested-events-control.ts → inprocess/runtime-support/nested-control.ts} +18 -17
  103. package/dist/builtin/subagents/src/runs/{shared/nested-events-core.ts → inprocess/runtime-support/nested-core.ts} +14 -61
  104. package/dist/builtin/subagents/src/runs/{shared/nested-events-projection.ts → inprocess/runtime-support/nested-projection.ts} +4 -12
  105. package/dist/builtin/subagents/src/runs/{shared/nested-events-registry.ts → inprocess/runtime-support/nested-registry.ts} +19 -4
  106. package/dist/builtin/subagents/src/runs/{shared/nested-render.ts → inprocess/runtime-support/nested-rendering.ts} +3 -3
  107. package/dist/builtin/subagents/src/runs/{shared/nested-events-sanitize.ts → inprocess/runtime-support/nested-sanitize.ts} +4 -6
  108. package/dist/builtin/subagents/src/runs/inprocess.ts +1 -0
  109. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +23 -7
  110. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +0 -1
  111. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +15 -492
  112. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +13 -97
  113. package/dist/builtin/subagents/src/runs/shared/run-history.ts +3 -5
  114. package/dist/builtin/subagents/src/runs/shared/single-output.ts +4 -4
  115. package/dist/builtin/subagents/src/runs/shared/worktree.ts +7 -2
  116. package/dist/builtin/subagents/src/shared/formatters.ts +2 -56
  117. package/dist/builtin/subagents/src/shared/settings.ts +14 -350
  118. package/dist/builtin/subagents/src/shared/types-async.ts +8 -32
  119. package/dist/builtin/subagents/src/shared/types-config.ts +29 -13
  120. package/dist/builtin/subagents/src/shared/types-depth.ts +30 -56
  121. package/dist/builtin/subagents/src/shared/types-results.ts +18 -60
  122. package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -1
  123. package/dist/builtin/subagents/src/shared/utils.ts +5 -0
  124. package/dist/builtin/subagents/src/slash/bridge-settlement.ts +87 -0
  125. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +49 -10
  126. package/dist/builtin/subagents/src/slash/slash-bridge.ts +27 -7
  127. package/dist/builtin/subagents/src/slash/slash-commands.ts +37 -82
  128. package/dist/builtin/subagents/src/slash/slash-live-state.ts +3 -94
  129. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +3 -35
  130. package/dist/builtin/subagents/src/tui/render-progress.ts +89 -0
  131. package/dist/builtin/subagents/src/tui/render-result-compact.ts +77 -68
  132. package/dist/builtin/subagents/src/tui/render-result.ts +79 -99
  133. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -6
  134. package/dist/builtin/subagents/src/tui/render-status-progress.ts +8 -5
  135. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +6 -63
  136. package/dist/builtin/subagents/src/tui/render-widget.ts +0 -24
  137. package/dist/builtin/web-access/CHANGELOG.md +14 -0
  138. package/dist/builtin/web-access/chrome-cookies.ts +3 -2
  139. package/dist/builtin/web-access/github-api.ts +7 -6
  140. package/dist/builtin/web-access/github-extract.ts +2 -1
  141. package/dist/builtin/web-access/package.json +3 -3
  142. package/dist/builtin/web-access/subprocess.ts +3 -1
  143. package/dist/builtin/web-access/summary-review.ts +2 -2
  144. package/dist/builtin/web-access/web-search-features.ts +38 -22
  145. package/dist/builtin/web-access/web-search-summary.ts +2 -2
  146. package/dist/builtin/workflows/CHANGELOG.md +70 -0
  147. package/dist/builtin/workflows/README.md +54 -4
  148. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +3 -0
  149. package/dist/builtin/workflows/builtin/ralph-models.ts +25 -20
  150. package/dist/builtin/workflows/builtin/shared-prompts.ts +5 -2
  151. package/dist/builtin/workflows/package.json +2 -2
  152. package/dist/builtin/workflows/src/durable/backend.ts +25 -1
  153. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +60 -3
  154. package/dist/builtin/workflows/src/durable/completed-catalog.ts +67 -1
  155. package/dist/builtin/workflows/src/durable/completed-subtree.ts +22 -7
  156. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +15 -1
  157. package/dist/builtin/workflows/src/durable/local-command.ts +2 -1
  158. package/dist/builtin/workflows/src/durable/resume-runtime.ts +1 -0
  159. package/dist/builtin/workflows/src/durable/tool-primitive.ts +4 -28
  160. package/dist/builtin/workflows/src/durable/types.ts +22 -1
  161. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +3 -1
  162. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +1 -1
  163. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +10 -2
  164. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +9 -2
  165. package/dist/builtin/workflows/src/engine/run.ts +17 -1
  166. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +18 -39
  167. package/dist/builtin/workflows/src/extension/companions.ts +1 -1
  168. package/dist/builtin/workflows/src/extension/config-file-loader.ts +10 -1
  169. package/dist/builtin/workflows/src/extension/config-loader.ts +1 -1
  170. package/dist/builtin/workflows/src/extension/dispatcher.ts +4 -0
  171. package/dist/builtin/workflows/src/extension/index.bundle.mjs +2095 -1181
  172. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +332 -39
  173. package/dist/builtin/workflows/src/extension/mcp.ts +13 -2
  174. package/dist/builtin/workflows/src/extension/render-result.ts +5 -0
  175. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +6 -3
  176. package/dist/builtin/workflows/src/extension/runtime.ts +7 -1
  177. package/dist/builtin/workflows/src/extension/ui-surface.ts +7 -20
  178. package/dist/builtin/workflows/src/extension/wiring.ts +86 -17
  179. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +12 -3
  180. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +5 -2
  181. package/dist/builtin/workflows/src/extension/workflow-ports.ts +14 -6
  182. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +11 -6
  183. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +17 -7
  184. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +11 -0
  185. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +18 -1
  186. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +12 -8
  187. package/dist/builtin/workflows/src/extension/workflow-tool.ts +9 -4
  188. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +12 -6
  189. package/dist/builtin/workflows/src/intercom/result-intercom.ts +35 -4
  190. package/dist/builtin/workflows/src/runs/background/quit.ts +28 -4
  191. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +2 -1
  192. package/dist/builtin/workflows/src/runs/background/status.ts +70 -8
  193. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +11 -3
  194. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +2 -1
  195. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +4 -0
  196. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +26 -2
  197. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +3 -1
  198. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +3 -2
  199. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +1 -1
  200. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +1 -1
  201. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +688 -38
  202. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +3 -1
  203. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +19 -514
  204. package/dist/builtin/workflows/src/runs/shared/retry.ts +44 -0
  205. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +5 -2
  206. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +2 -0
  207. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +10 -3
  208. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +11 -3
  209. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -1
  210. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
  211. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +34 -2
  212. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +28 -6
  213. package/dist/builtin/workflows/src/shared/persistence-restore.ts +3 -0
  214. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
  215. package/dist/builtin/workflows/src/shared/run-indicator-status.ts +75 -0
  216. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +10 -4
  217. package/dist/builtin/workflows/src/shared/store-public-types.ts +47 -9
  218. package/dist/builtin/workflows/src/shared/store-run-methods.ts +42 -8
  219. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +31 -8
  220. package/dist/builtin/workflows/src/shared/store-types.ts +35 -1
  221. package/dist/builtin/workflows/src/shared/timing.ts +10 -0
  222. package/dist/builtin/workflows/src/shared/workflow-artifact-env.ts +21 -0
  223. package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +2 -5
  224. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +22 -2
  225. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +37 -2
  226. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +0 -15
  227. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +38 -47
  228. package/dist/builtin/workflows/src/tui/graph-view-input.ts +48 -45
  229. package/dist/builtin/workflows/src/tui/graph-view-layout.ts +266 -0
  230. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +1 -86
  231. package/dist/builtin/workflows/src/tui/graph-view-render.ts +209 -91
  232. package/dist/builtin/workflows/src/tui/graph-view-state.ts +5 -7
  233. package/dist/builtin/workflows/src/tui/graph-view-types.ts +13 -7
  234. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +8 -6
  235. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +2 -1
  236. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +7 -4
  237. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +66 -0
  238. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +1 -0
  239. package/dist/builtin/workflows/src/tui/node-card.ts +1 -1
  240. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +18 -46
  241. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +15 -26
  242. package/dist/builtin/workflows/src/tui/session-list.ts +1 -1
  243. package/dist/builtin/workflows/src/tui/session-overlays.ts +19 -12
  244. package/dist/builtin/workflows/src/tui/session-picker.ts +47 -4
  245. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +5 -14
  246. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +8 -7
  247. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +12 -3
  248. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +1 -11
  249. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +0 -8
  250. package/dist/builtin/workflows/src/tui/status-list.ts +32 -47
  251. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +9 -5
  252. package/dist/builtin/workflows/src/tui/widget.ts +16 -46
  253. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -15
  254. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +2 -26
  255. package/dist/builtin/workflows/src/tui/workflow-status.ts +3 -3
  256. package/dist/bun/split-loader.js +2 -0
  257. package/dist/bun/split-loader.js.map +1 -1
  258. package/dist/cli/args.d.ts.map +1 -1
  259. package/dist/cli/args.js +6 -2
  260. package/dist/cli/args.js.map +1 -1
  261. package/dist/cli/auth-check.d.ts +35 -0
  262. package/dist/cli/auth-check.d.ts.map +1 -0
  263. package/dist/cli/auth-check.js +100 -0
  264. package/dist/cli/auth-check.js.map +1 -0
  265. package/dist/cli/auth-command.d.ts +27 -0
  266. package/dist/cli/auth-command.d.ts.map +1 -0
  267. package/dist/cli/auth-command.js +150 -0
  268. package/dist/cli/auth-command.js.map +1 -0
  269. package/dist/cli/config-selector.js +2 -2
  270. package/dist/cli/config-selector.js.map +1 -1
  271. package/dist/cli/credential-print.d.ts +18 -23
  272. package/dist/cli/credential-print.d.ts.map +1 -1
  273. package/dist/cli/credential-print.js +42 -88
  274. package/dist/cli/credential-print.js.map +1 -1
  275. package/dist/cli/experimental/auth.d.ts +16 -0
  276. package/dist/cli/experimental/auth.d.ts.map +1 -0
  277. package/dist/cli/experimental/auth.js +13 -0
  278. package/dist/cli/experimental/auth.js.map +1 -0
  279. package/dist/cli/experimental/cli.d.ts +6 -0
  280. package/dist/cli/experimental/cli.d.ts.map +1 -0
  281. package/dist/cli/experimental/cli.js +5 -0
  282. package/dist/cli/experimental/cli.js.map +1 -0
  283. package/dist/cli/experimental/command-options.d.ts +17 -0
  284. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  285. package/dist/cli/experimental/command-options.js +35 -0
  286. package/dist/cli/experimental/command-options.js.map +1 -0
  287. package/dist/cli/experimental/command.d.ts +63 -0
  288. package/dist/cli/experimental/command.d.ts.map +1 -0
  289. package/dist/cli/experimental/command.js +127 -0
  290. package/dist/cli/experimental/command.js.map +1 -0
  291. package/dist/cli/experimental/commands/client.d.ts +13 -0
  292. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  293. package/dist/cli/experimental/commands/client.js +25 -0
  294. package/dist/cli/experimental/commands/client.js.map +1 -0
  295. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  296. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  297. package/dist/cli/experimental/commands/pi.js +28 -0
  298. package/dist/cli/experimental/commands/pi.js.map +1 -0
  299. package/dist/cli/experimental/commands/server.d.ts +13 -0
  300. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  301. package/dist/cli/experimental/commands/server.js +25 -0
  302. package/dist/cli/experimental/commands/server.js.map +1 -0
  303. package/dist/cli/experimental/transport-address.d.ts +10 -0
  304. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  305. package/dist/cli/experimental/transport-address.js +38 -0
  306. package/dist/cli/experimental/transport-address.js.map +1 -0
  307. package/dist/cli/session-picker.js +2 -2
  308. package/dist/cli/session-picker.js.map +1 -1
  309. package/dist/cli/startup-ui.d.ts.map +1 -1
  310. package/dist/cli/startup-ui.js +4 -10
  311. package/dist/cli/startup-ui.js.map +1 -1
  312. package/dist/cli.js +2 -0
  313. package/dist/cli.js.map +1 -1
  314. package/dist/client/index.d.ts +3 -0
  315. package/dist/client/index.d.ts.map +1 -0
  316. package/dist/client/index.js +3 -0
  317. package/dist/client/index.js.map +1 -0
  318. package/dist/client/remote-session.d.ts +64 -0
  319. package/dist/client/remote-session.d.ts.map +1 -0
  320. package/dist/client/remote-session.js +351 -0
  321. package/dist/client/remote-session.js.map +1 -0
  322. package/dist/client/transcript.d.ts +12 -0
  323. package/dist/client/transcript.d.ts.map +1 -0
  324. package/dist/client/transcript.js +98 -0
  325. package/dist/client/transcript.js.map +1 -0
  326. package/dist/core/agent-session-auto-compaction.d.ts +17 -13
  327. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  328. package/dist/core/agent-session-auto-compaction.js +192 -67
  329. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  330. package/dist/core/agent-session-bash.d.ts.map +1 -1
  331. package/dist/core/agent-session-bash.js +2 -0
  332. package/dist/core/agent-session-bash.js.map +1 -1
  333. package/dist/core/agent-session-compaction.d.ts +3 -6
  334. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  335. package/dist/core/agent-session-compaction.js +64 -28
  336. package/dist/core/agent-session-compaction.js.map +1 -1
  337. package/dist/core/agent-session-events.d.ts +1 -11
  338. package/dist/core/agent-session-events.d.ts.map +1 -1
  339. package/dist/core/agent-session-events.js +64 -37
  340. package/dist/core/agent-session-events.js.map +1 -1
  341. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  342. package/dist/core/agent-session-extension-bindings.js +4 -2
  343. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  344. package/dist/core/agent-session-methods.d.ts +19 -2
  345. package/dist/core/agent-session-methods.d.ts.map +1 -1
  346. package/dist/core/agent-session-methods.js.map +1 -1
  347. package/dist/core/agent-session-models.d.ts +1 -0
  348. package/dist/core/agent-session-models.d.ts.map +1 -1
  349. package/dist/core/agent-session-models.js +23 -5
  350. package/dist/core/agent-session-models.js.map +1 -1
  351. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  352. package/dist/core/agent-session-post-tool-compaction.js +22 -6
  353. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  354. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  355. package/dist/core/agent-session-prompt.js +4 -0
  356. package/dist/core/agent-session-prompt.js.map +1 -1
  357. package/dist/core/agent-session-retry.d.ts +21 -4
  358. package/dist/core/agent-session-retry.d.ts.map +1 -1
  359. package/dist/core/agent-session-retry.js +232 -106
  360. package/dist/core/agent-session-retry.js.map +1 -1
  361. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
  362. package/dist/core/agent-session-runtime-auth.js +3 -0
  363. package/dist/core/agent-session-runtime-auth.js.map +1 -1
  364. package/dist/core/agent-session-state.d.ts.map +1 -1
  365. package/dist/core/agent-session-state.js +2 -1
  366. package/dist/core/agent-session-state.js.map +1 -1
  367. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  368. package/dist/core/agent-session-tool-hooks.js +37 -14
  369. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  370. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  371. package/dist/core/agent-session-tool-registry.js +5 -1
  372. package/dist/core/agent-session-tool-registry.js.map +1 -1
  373. package/dist/core/agent-session-types.d.ts +5 -1
  374. package/dist/core/agent-session-types.d.ts.map +1 -1
  375. package/dist/core/agent-session-types.js.map +1 -1
  376. package/dist/core/agent-session.d.ts +18 -1
  377. package/dist/core/agent-session.d.ts.map +1 -1
  378. package/dist/core/agent-session.js +37 -0
  379. package/dist/core/agent-session.js.map +1 -1
  380. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  381. package/dist/core/atomic-guide-command.js +2 -3
  382. package/dist/core/atomic-guide-command.js.map +1 -1
  383. package/dist/core/auth-storage.d.ts +18 -1
  384. package/dist/core/auth-storage.d.ts.map +1 -1
  385. package/dist/core/auth-storage.js +83 -0
  386. package/dist/core/auth-storage.js.map +1 -1
  387. package/dist/core/bash-executor.d.ts +5 -0
  388. package/dist/core/bash-executor.d.ts.map +1 -1
  389. package/dist/core/bash-executor.js +43 -19
  390. package/dist/core/bash-executor.js.map +1 -1
  391. package/dist/core/builtin-packages.d.ts.map +1 -1
  392. package/dist/core/builtin-packages.js +6 -0
  393. package/dist/core/builtin-packages.js.map +1 -1
  394. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  395. package/dist/core/codex-fast-mode.js +8 -3
  396. package/dist/core/codex-fast-mode.js.map +1 -1
  397. package/dist/core/exec.d.ts.map +1 -1
  398. package/dist/core/exec.js +4 -3
  399. package/dist/core/exec.js.map +1 -1
  400. package/dist/core/extensions/agent-events.d.ts +0 -1
  401. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  402. package/dist/core/extensions/agent-events.js.map +1 -1
  403. package/dist/core/extensions/api-types.d.ts +5 -3
  404. package/dist/core/extensions/api-types.d.ts.map +1 -1
  405. package/dist/core/extensions/api-types.js.map +1 -1
  406. package/dist/core/extensions/context-types.d.ts +40 -0
  407. package/dist/core/extensions/context-types.d.ts.map +1 -1
  408. package/dist/core/extensions/context-types.js.map +1 -1
  409. package/dist/core/extensions/event-results.d.ts +5 -0
  410. package/dist/core/extensions/event-results.d.ts.map +1 -1
  411. package/dist/core/extensions/event-results.js.map +1 -1
  412. package/dist/core/extensions/index.d.ts +2 -1
  413. package/dist/core/extensions/index.d.ts.map +1 -1
  414. package/dist/core/extensions/index.js +1 -0
  415. package/dist/core/extensions/index.js.map +1 -1
  416. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  417. package/dist/core/extensions/loader-api.js +14 -1
  418. package/dist/core/extensions/loader-api.js.map +1 -1
  419. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  420. package/dist/core/extensions/loader-discovery.js +3 -23
  421. package/dist/core/extensions/loader-discovery.js.map +1 -1
  422. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  423. package/dist/core/extensions/loader-runtime.js +20 -3
  424. package/dist/core/extensions/loader-runtime.js.map +1 -1
  425. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  426. package/dist/core/extensions/loader-virtual-modules.js +7 -1
  427. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  428. package/dist/core/extensions/message-types.d.ts +6 -0
  429. package/dist/core/extensions/message-types.d.ts.map +1 -1
  430. package/dist/core/extensions/message-types.js.map +1 -1
  431. package/dist/core/extensions/provider-types.d.ts +9 -3
  432. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  433. package/dist/core/extensions/provider-types.js.map +1 -1
  434. package/dist/core/extensions/runner-context.d.ts +2 -1
  435. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  436. package/dist/core/extensions/runner-context.js +4 -0
  437. package/dist/core/extensions/runner-context.js.map +1 -1
  438. package/dist/core/extensions/runner-registries.d.ts +2 -1
  439. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  440. package/dist/core/extensions/runner-registries.js +3 -0
  441. package/dist/core/extensions/runner-registries.js.map +1 -1
  442. package/dist/core/extensions/runner-ui.d.ts.map +1 -1
  443. package/dist/core/extensions/runner-ui.js +1 -0
  444. package/dist/core/extensions/runner-ui.js.map +1 -1
  445. package/dist/core/extensions/runner.d.ts +4 -2
  446. package/dist/core/extensions/runner.d.ts.map +1 -1
  447. package/dist/core/extensions/runner.js +9 -3
  448. package/dist/core/extensions/runner.js.map +1 -1
  449. package/dist/core/extensions/runtime-types.d.ts +4 -1
  450. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  451. package/dist/core/extensions/runtime-types.js.map +1 -1
  452. package/dist/core/extensions/stale-context.d.ts +5 -0
  453. package/dist/core/extensions/stale-context.d.ts.map +1 -0
  454. package/dist/core/extensions/stale-context.js +11 -0
  455. package/dist/core/extensions/stale-context.js.map +1 -0
  456. package/dist/core/extensions/ui-types.d.ts +14 -11
  457. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  458. package/dist/core/extensions/ui-types.js.map +1 -1
  459. package/dist/core/footer-data-provider.d.ts.map +1 -1
  460. package/dist/core/footer-data-provider.js +3 -2
  461. package/dist/core/footer-data-provider.js.map +1 -1
  462. package/dist/core/index.d.ts +1 -1
  463. package/dist/core/index.d.ts.map +1 -1
  464. package/dist/core/index.js.map +1 -1
  465. package/dist/core/intercom-runtime-group.d.ts +13 -0
  466. package/dist/core/intercom-runtime-group.d.ts.map +1 -0
  467. package/dist/core/intercom-runtime-group.js +23 -0
  468. package/dist/core/intercom-runtime-group.js.map +1 -0
  469. package/dist/core/keybindings.d.ts +44 -4
  470. package/dist/core/keybindings.d.ts.map +1 -1
  471. package/dist/core/model-config.d.ts +39 -5
  472. package/dist/core/model-config.d.ts.map +1 -1
  473. package/dist/core/model-config.js +6 -0
  474. package/dist/core/model-config.js.map +1 -1
  475. package/dist/core/model-fallback-failures.d.ts +30 -0
  476. package/dist/core/model-fallback-failures.d.ts.map +1 -0
  477. package/dist/core/model-fallback-failures.js +610 -0
  478. package/dist/core/model-fallback-failures.js.map +1 -0
  479. package/dist/core/model-registry.d.ts +12 -5
  480. package/dist/core/model-registry.d.ts.map +1 -1
  481. package/dist/core/model-registry.js +20 -12
  482. package/dist/core/model-registry.js.map +1 -1
  483. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  484. package/dist/core/model-resolver-cli.js +46 -14
  485. package/dist/core/model-resolver-cli.js.map +1 -1
  486. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  487. package/dist/core/model-resolver-defaults.js +2 -0
  488. package/dist/core/model-resolver-defaults.js.map +1 -1
  489. package/dist/core/model-resolver-scope.d.ts +2 -0
  490. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  491. package/dist/core/model-resolver-scope.js +12 -9
  492. package/dist/core/model-resolver-scope.js.map +1 -1
  493. package/dist/core/model-resolver.d.ts +1 -1
  494. package/dist/core/model-resolver.d.ts.map +1 -1
  495. package/dist/core/model-resolver.js +1 -1
  496. package/dist/core/model-resolver.js.map +1 -1
  497. package/dist/core/model-runtime-snapshot.d.ts +10 -0
  498. package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
  499. package/dist/core/model-runtime-snapshot.js +14 -1
  500. package/dist/core/model-runtime-snapshot.js.map +1 -1
  501. package/dist/core/model-runtime-streaming.d.ts +3 -1
  502. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  503. package/dist/core/model-runtime-streaming.js +16 -0
  504. package/dist/core/model-runtime-streaming.js.map +1 -1
  505. package/dist/core/model-runtime-types.d.ts +2 -0
  506. package/dist/core/model-runtime-types.d.ts.map +1 -1
  507. package/dist/core/model-runtime-types.js.map +1 -1
  508. package/dist/core/model-runtime.d.ts +37 -10
  509. package/dist/core/model-runtime.d.ts.map +1 -1
  510. package/dist/core/model-runtime.js +312 -113
  511. package/dist/core/model-runtime.js.map +1 -1
  512. package/dist/core/oauth-login.d.ts.map +1 -1
  513. package/dist/core/oauth-login.js +2 -1
  514. package/dist/core/oauth-login.js.map +1 -1
  515. package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -1
  516. package/dist/core/openai-responses-payload-sanitizer.js +18 -2
  517. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  518. package/dist/core/package-manager-git.d.ts.map +1 -1
  519. package/dist/core/package-manager-git.js +56 -10
  520. package/dist/core/package-manager-git.js.map +1 -1
  521. package/dist/core/package-manager-manifest.d.ts +1 -1
  522. package/dist/core/package-manager-manifest.d.ts.map +1 -1
  523. package/dist/core/package-manager-manifest.js +19 -9
  524. package/dist/core/package-manager-manifest.js.map +1 -1
  525. package/dist/core/package-manager-resource-collector.js.map +1 -1
  526. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  527. package/dist/core/package-manager-resource-files.js +1 -2
  528. package/dist/core/package-manager-resource-files.js.map +1 -1
  529. package/dist/core/provider-composer-internal.d.ts +10 -2
  530. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  531. package/dist/core/provider-composer-internal.js +7 -3
  532. package/dist/core/provider-composer-internal.js.map +1 -1
  533. package/dist/core/provider-composer.d.ts.map +1 -1
  534. package/dist/core/provider-composer.js +19 -12
  535. package/dist/core/provider-composer.js.map +1 -1
  536. package/dist/core/provider-display-names.d.ts.map +1 -1
  537. package/dist/core/provider-display-names.js +2 -0
  538. package/dist/core/provider-display-names.js.map +1 -1
  539. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  540. package/dist/core/remote-catalog-provider.js +77 -67
  541. package/dist/core/remote-catalog-provider.js.map +1 -1
  542. package/dist/core/resolve-config-value.d.ts.map +1 -1
  543. package/dist/core/resolve-config-value.js +3 -0
  544. package/dist/core/resolve-config-value.js.map +1 -1
  545. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  546. package/dist/core/resource-loader-context-files.js +13 -5
  547. package/dist/core/resource-loader-context-files.js.map +1 -1
  548. package/dist/core/retry-policy.d.ts +30 -0
  549. package/dist/core/retry-policy.d.ts.map +1 -0
  550. package/dist/core/retry-policy.js +25 -0
  551. package/dist/core/retry-policy.js.map +1 -0
  552. package/dist/core/runtime-credentials.d.ts +5 -5
  553. package/dist/core/runtime-credentials.d.ts.map +1 -1
  554. package/dist/core/runtime-credentials.js +8 -8
  555. package/dist/core/runtime-credentials.js.map +1 -1
  556. package/dist/core/sdk-types.d.ts +8 -2
  557. package/dist/core/sdk-types.d.ts.map +1 -1
  558. package/dist/core/sdk-types.js.map +1 -1
  559. package/dist/core/sdk.d.ts.map +1 -1
  560. package/dist/core/sdk.js +6 -1
  561. package/dist/core/sdk.js.map +1 -1
  562. package/dist/core/session-manager-core.d.ts +2 -0
  563. package/dist/core/session-manager-core.d.ts.map +1 -1
  564. package/dist/core/session-manager-core.js +7 -0
  565. package/dist/core/session-manager-core.js.map +1 -1
  566. package/dist/core/session-manager-list.d.ts.map +1 -1
  567. package/dist/core/session-manager-list.js +3 -1
  568. package/dist/core/session-manager-list.js.map +1 -1
  569. package/dist/core/settings-manager-ui-accessors.d.ts +8 -1
  570. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  571. package/dist/core/settings-manager-ui-accessors.js +31 -0
  572. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  573. package/dist/core/settings-manager.d.ts +2 -1
  574. package/dist/core/settings-manager.d.ts.map +1 -1
  575. package/dist/core/settings-manager.js.map +1 -1
  576. package/dist/core/settings-merge.d.ts.map +1 -1
  577. package/dist/core/settings-merge.js +13 -16
  578. package/dist/core/settings-merge.js.map +1 -1
  579. package/dist/core/settings-types.d.ts +5 -0
  580. package/dist/core/settings-types.d.ts.map +1 -1
  581. package/dist/core/settings-types.js.map +1 -1
  582. package/dist/core/slash-commands.d.ts.map +1 -1
  583. package/dist/core/slash-commands.js +0 -2
  584. package/dist/core/slash-commands.js.map +1 -1
  585. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +2 -2
  586. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  587. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +39 -2
  588. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  589. package/dist/core/tools/bash-async-execution.d.ts +2 -0
  590. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  591. package/dist/core/tools/bash-async-execution.js +4 -1
  592. package/dist/core/tools/bash-async-execution.js.map +1 -1
  593. package/dist/core/tools/bash-async-output.d.ts +1 -0
  594. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  595. package/dist/core/tools/bash-async-output.js +62 -27
  596. package/dist/core/tools/bash-async-output.js.map +1 -1
  597. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  598. package/dist/core/tools/bash-pty-native.js +2 -1
  599. package/dist/core/tools/bash-pty-native.js.map +1 -1
  600. package/dist/core/tools/bash.d.ts +9 -0
  601. package/dist/core/tools/bash.d.ts.map +1 -1
  602. package/dist/core/tools/bash.js +34 -16
  603. package/dist/core/tools/bash.js.map +1 -1
  604. package/dist/core/tools/directory-tree.d.ts +11 -0
  605. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  606. package/dist/core/tools/directory-tree.js +26 -0
  607. package/dist/core/tools/directory-tree.js.map +1 -1
  608. package/dist/core/tools/edit.d.ts +4 -0
  609. package/dist/core/tools/edit.d.ts.map +1 -1
  610. package/dist/core/tools/edit.js +12 -8
  611. package/dist/core/tools/edit.js.map +1 -1
  612. package/dist/core/tools/errno.d.ts +25 -0
  613. package/dist/core/tools/errno.d.ts.map +1 -0
  614. package/dist/core/tools/errno.js +29 -0
  615. package/dist/core/tools/errno.js.map +1 -0
  616. package/dist/core/tools/find.d.ts +8 -1
  617. package/dist/core/tools/find.d.ts.map +1 -1
  618. package/dist/core/tools/find.js +20 -15
  619. package/dist/core/tools/find.js.map +1 -1
  620. package/dist/core/tools/grep.d.ts.map +1 -1
  621. package/dist/core/tools/grep.js +5 -1
  622. package/dist/core/tools/grep.js.map +1 -1
  623. package/dist/core/tools/index.d.ts +7 -7
  624. package/dist/core/tools/index.d.ts.map +1 -1
  625. package/dist/core/tools/index.js +7 -7
  626. package/dist/core/tools/index.js.map +1 -1
  627. package/dist/core/tools/ls.d.ts +4 -0
  628. package/dist/core/tools/ls.d.ts.map +1 -1
  629. package/dist/core/tools/ls.js +5 -1
  630. package/dist/core/tools/ls.js.map +1 -1
  631. package/dist/core/tools/output-accumulator.d.ts +8 -1
  632. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  633. package/dist/core/tools/output-accumulator.js +50 -28
  634. package/dist/core/tools/output-accumulator.js.map +1 -1
  635. package/dist/core/tools/oversized-tool-result.d.ts.map +1 -1
  636. package/dist/core/tools/oversized-tool-result.js +129 -22
  637. package/dist/core/tools/oversized-tool-result.js.map +1 -1
  638. package/dist/core/tools/persisted-output-file.d.ts +80 -0
  639. package/dist/core/tools/persisted-output-file.d.ts.map +1 -0
  640. package/dist/core/tools/persisted-output-file.js +284 -0
  641. package/dist/core/tools/persisted-output-file.js.map +1 -0
  642. package/dist/core/tools/read.d.ts +10 -0
  643. package/dist/core/tools/read.d.ts.map +1 -1
  644. package/dist/core/tools/read.js +20 -8
  645. package/dist/core/tools/read.js.map +1 -1
  646. package/dist/core/tools/search.d.ts +4 -0
  647. package/dist/core/tools/search.d.ts.map +1 -1
  648. package/dist/core/tools/search.js +5 -1
  649. package/dist/core/tools/search.js.map +1 -1
  650. package/dist/core/tools/session-temp-cleanup.d.ts +133 -0
  651. package/dist/core/tools/session-temp-cleanup.d.ts.map +1 -0
  652. package/dist/core/tools/session-temp-cleanup.js +669 -0
  653. package/dist/core/tools/session-temp-cleanup.js.map +1 -0
  654. package/dist/core/tools/session-temp-dir.d.ts +116 -0
  655. package/dist/core/tools/session-temp-dir.d.ts.map +1 -0
  656. package/dist/core/tools/session-temp-dir.js +409 -0
  657. package/dist/core/tools/session-temp-dir.js.map +1 -0
  658. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  659. package/dist/core/tools/tool-definition-wrapper.js +2 -0
  660. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  661. package/dist/core/tools/tool-limits.d.ts +11 -0
  662. package/dist/core/tools/tool-limits.d.ts.map +1 -1
  663. package/dist/core/tools/tool-limits.js +11 -0
  664. package/dist/core/tools/tool-limits.js.map +1 -1
  665. package/dist/core/tools/windows-directory-security.d.ts +82 -0
  666. package/dist/core/tools/windows-directory-security.d.ts.map +1 -0
  667. package/dist/core/tools/windows-directory-security.js +238 -0
  668. package/dist/core/tools/windows-directory-security.js.map +1 -0
  669. package/dist/core/tools/write.d.ts +4 -0
  670. package/dist/core/tools/write.d.ts.map +1 -1
  671. package/dist/core/tools/write.js +8 -4
  672. package/dist/core/tools/write.js.map +1 -1
  673. package/dist/core/trust-manager.js +1 -1
  674. package/dist/core/trust-manager.js.map +1 -1
  675. package/dist/extensions/llama/huggingface-ui.d.ts +1 -1
  676. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -1
  677. package/dist/extensions/llama/huggingface-ui.js +6 -5
  678. package/dist/extensions/llama/huggingface-ui.js.map +1 -1
  679. package/dist/extensions/llama/index.d.ts.map +1 -1
  680. package/dist/extensions/llama/index.js +11 -2
  681. package/dist/extensions/llama/index.js.map +1 -1
  682. package/dist/extensions/llama/provider.d.ts.map +1 -1
  683. package/dist/extensions/llama/provider.js +24 -8
  684. package/dist/extensions/llama/provider.js.map +1 -1
  685. package/dist/extensions/llama/ui.d.ts.map +1 -1
  686. package/dist/extensions/llama/ui.js +5 -2
  687. package/dist/extensions/llama/ui.js.map +1 -1
  688. package/dist/index-extensions.d.ts +2 -2
  689. package/dist/index-extensions.d.ts.map +1 -1
  690. package/dist/index-extensions.js +1 -1
  691. package/dist/index-extensions.js.map +1 -1
  692. package/dist/index.d.ts +8 -2
  693. package/dist/index.d.ts.map +1 -1
  694. package/dist/index.js +8 -2
  695. package/dist/index.js.map +1 -1
  696. package/dist/main-runtime-api-key.d.ts +2 -2
  697. package/dist/main-runtime-api-key.d.ts.map +1 -1
  698. package/dist/main-runtime-api-key.js +7 -2
  699. package/dist/main-runtime-api-key.js.map +1 -1
  700. package/dist/main-session.js +2 -2
  701. package/dist/main-session.js.map +1 -1
  702. package/dist/main.d.ts.map +1 -1
  703. package/dist/main.js +130 -26
  704. package/dist/main.js.map +1 -1
  705. package/dist/modes/index.d.ts +1 -0
  706. package/dist/modes/index.d.ts.map +1 -1
  707. package/dist/modes/index.js.map +1 -1
  708. package/dist/modes/interactive/components/assistant-message.d.ts +6 -2
  709. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  710. package/dist/modes/interactive/components/assistant-message.js +18 -5
  711. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  712. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  713. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  714. package/dist/modes/interactive/components/bordered-loader.js +5 -4
  715. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  716. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
  717. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  718. package/dist/modes/interactive/components/branch-summary-message.js +3 -2
  719. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  720. package/dist/modes/interactive/components/chat-message-renderer.d.ts +17 -7
  721. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  722. package/dist/modes/interactive/components/chat-message-renderer.js +35 -69
  723. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  724. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  725. package/dist/modes/interactive/components/chat-session-host-actions.js +11 -3
  726. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  727. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  728. package/dist/modes/interactive/components/chat-session-host-events.js +25 -15
  729. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  730. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  731. package/dist/modes/interactive/components/chat-session-host-rendering.js +9 -4
  732. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  733. package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -0
  734. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  735. package/dist/modes/interactive/components/chat-session-host-state.js +2 -0
  736. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  737. package/dist/modes/interactive/components/chat-session-host.d.ts +9 -0
  738. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  739. package/dist/modes/interactive/components/chat-session-host.js +14 -0
  740. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  741. package/dist/modes/interactive/components/chat-transcript.d.ts +32 -0
  742. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  743. package/dist/modes/interactive/components/chat-transcript.js +173 -5
  744. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  745. package/dist/modes/interactive/components/config-selector-list.d.ts +1 -1
  746. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  747. package/dist/modes/interactive/components/config-selector-list.js +9 -8
  748. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  749. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  750. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  751. package/dist/modes/interactive/components/custom-editor.js +32 -10
  752. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  753. package/dist/modes/interactive/components/custom-message.d.ts +2 -1
  754. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  755. package/dist/modes/interactive/components/custom-message.js +3 -2
  756. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  757. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  758. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  759. package/dist/modes/interactive/components/extension-editor.js +3 -2
  760. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  761. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  762. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  763. package/dist/modes/interactive/components/extension-input.js +1 -0
  764. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  765. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  766. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  767. package/dist/modes/interactive/components/extension-selector.js +4 -0
  768. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  769. package/dist/modes/interactive/components/fast-mode-selector.d.ts +1 -1
  770. package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +1 -1
  771. package/dist/modes/interactive/components/fast-mode-selector.js +7 -5
  772. package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
  773. package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
  774. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  775. package/dist/modes/interactive/components/first-time-setup.js +3 -0
  776. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  777. package/dist/modes/interactive/components/footer.js +1 -1
  778. package/dist/modes/interactive/components/footer.js.map +1 -1
  779. package/dist/modes/interactive/components/host-input-form.d.ts +1 -1
  780. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  781. package/dist/modes/interactive/components/host-input-form.js +6 -5
  782. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  783. package/dist/modes/interactive/components/index.d.ts +1 -1
  784. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  785. package/dist/modes/interactive/components/index.js.map +1 -1
  786. package/dist/modes/interactive/components/login-dialog.d.ts +1 -1
  787. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  788. package/dist/modes/interactive/components/login-dialog.js +2 -1
  789. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  790. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  791. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  792. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  793. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  794. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  795. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  796. package/dist/modes/interactive/components/mermaid.js +81 -0
  797. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  798. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  799. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  800. package/dist/modes/interactive/components/model-selector.js +9 -6
  801. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  802. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  803. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  804. package/dist/modes/interactive/components/oauth-selector.js +3 -2
  805. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  806. package/dist/modes/interactive/components/scoped-models-selector.d.ts +6 -2
  807. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  808. package/dist/modes/interactive/components/scoped-models-selector.js +39 -13
  809. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  810. package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -1
  811. package/dist/modes/interactive/components/session-selector-delete.js +2 -1
  812. package/dist/modes/interactive/components/session-selector-delete.js.map +1 -1
  813. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  814. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  815. package/dist/modes/interactive/components/session-selector-list.js +12 -11
  816. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  817. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  818. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  819. package/dist/modes/interactive/components/session-selector.js +3 -3
  820. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  821. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  822. package/dist/modes/interactive/components/settings-selector-handlers.js +9 -0
  823. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  824. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  825. package/dist/modes/interactive/components/settings-selector-items.js +21 -0
  826. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  827. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +3 -3
  828. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  829. package/dist/modes/interactive/components/settings-selector-submenus.js +6 -1
  830. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  831. package/dist/modes/interactive/components/settings-selector-types.d.ts +8 -1
  832. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  833. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  834. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
  835. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  836. package/dist/modes/interactive/components/skill-invocation-message.js +3 -2
  837. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  838. package/dist/modes/interactive/components/tool-execution.d.ts +2 -0
  839. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  840. package/dist/modes/interactive/components/tool-execution.js +50 -27
  841. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  842. package/dist/modes/interactive/components/tree-selector-component.d.ts +1 -1
  843. package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -1
  844. package/dist/modes/interactive/components/tree-selector-component.js +2 -3
  845. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
  846. package/dist/modes/interactive/components/tree-selector-help.d.ts +1 -1
  847. package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -1
  848. package/dist/modes/interactive/components/tree-selector-help.js +3 -1
  849. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
  850. package/dist/modes/interactive/components/tree-selector-label-input.d.ts +1 -1
  851. package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -1
  852. package/dist/modes/interactive/components/tree-selector-label-input.js +1 -0
  853. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
  854. package/dist/modes/interactive/components/tree-selector-list.d.ts +1 -1
  855. package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -1
  856. package/dist/modes/interactive/components/tree-selector-list.js +3 -0
  857. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
  858. package/dist/modes/interactive/components/trust-selector.d.ts +1 -1
  859. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  860. package/dist/modes/interactive/components/trust-selector.js +4 -0
  861. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  862. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  863. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  864. package/dist/modes/interactive/components/user-message-selector.js +4 -0
  865. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  866. package/dist/modes/interactive/components/user-message.d.ts +4 -1
  867. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  868. package/dist/modes/interactive/components/user-message.js +10 -2
  869. package/dist/modes/interactive/components/user-message.js.map +1 -1
  870. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  871. package/dist/modes/interactive/external-editor.js +2 -1
  872. package/dist/modes/interactive/external-editor.js.map +1 -1
  873. package/dist/modes/interactive/interactive-agent-events.js +36 -18
  874. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  875. package/dist/modes/interactive/interactive-auth-login.js +9 -2
  876. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  877. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  878. package/dist/modes/interactive/interactive-auth-routing.js +5 -1
  879. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  880. package/dist/modes/interactive/interactive-bash-compact.js +16 -4
  881. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  882. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  883. package/dist/modes/interactive/interactive-deferred-startup.js +3 -0
  884. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  885. package/dist/modes/interactive/interactive-editor-actions.js +2 -0
  886. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  887. package/dist/modes/interactive/interactive-extension-context.js +12 -7
  888. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  889. package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -0
  890. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  891. package/dist/modes/interactive/interactive-extension-dialogs.js +7 -0
  892. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  893. package/dist/modes/interactive/interactive-extension-widgets.js +7 -24
  894. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  895. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  896. package/dist/modes/interactive/interactive-input-handling.js +9 -8
  897. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  898. package/dist/modes/interactive/interactive-mode-base.d.ts +52 -3
  899. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  900. package/dist/modes/interactive/interactive-mode-base.js +143 -5
  901. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  902. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -2
  903. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  904. package/dist/modes/interactive/interactive-mode-deps.js +2 -2
  905. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  906. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -3
  907. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  908. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  909. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  910. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  911. package/dist/modes/interactive/interactive-mode.js +1 -0
  912. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  913. package/dist/modes/interactive/interactive-model-routing.js +107 -41
  914. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  915. package/dist/modes/interactive/interactive-process-lifecycle.js +1 -1
  916. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  917. package/dist/modes/interactive/interactive-render-chat.js +24 -6
  918. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  919. package/dist/modes/interactive/interactive-selectors.js +44 -5
  920. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  921. package/dist/modes/interactive/interactive-session-runtime.js +1 -0
  922. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  923. package/dist/modes/interactive/interactive-slash-commands.js +9 -4
  924. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  925. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  926. package/dist/modes/interactive/interactive-startup.js +37 -18
  927. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  928. package/dist/modes/interactive/interactive-tui.d.ts +21 -0
  929. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -0
  930. package/dist/modes/interactive/interactive-tui.js +279 -0
  931. package/dist/modes/interactive/interactive-tui.js.map +1 -0
  932. package/dist/modes/interactive/streaming-assistant-message.d.ts +34 -0
  933. package/dist/modes/interactive/streaming-assistant-message.d.ts.map +1 -0
  934. package/dist/modes/interactive/streaming-assistant-message.js +76 -0
  935. package/dist/modes/interactive/streaming-assistant-message.js.map +1 -0
  936. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -0
  937. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -0
  938. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -0
  939. package/dist/modes/interactive/theme/catppuccin-mocha.json +1 -0
  940. package/dist/modes/interactive/theme/dark.json +1 -0
  941. package/dist/modes/interactive/theme/light.json +1 -0
  942. package/dist/modes/interactive/theme/terminal-detection.d.ts +10 -0
  943. package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -1
  944. package/dist/modes/interactive/theme/terminal-detection.js +19 -0
  945. package/dist/modes/interactive/theme/terminal-detection.js.map +1 -1
  946. package/dist/modes/interactive/theme/theme-class.d.ts +2 -2
  947. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  948. package/dist/modes/interactive/theme/theme-class.js +5 -1
  949. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  950. package/dist/modes/interactive/theme/theme-controller.d.ts +3 -1
  951. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  952. package/dist/modes/interactive/theme/theme-controller.js +10 -13
  953. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  954. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  955. package/dist/modes/interactive/theme/theme-loading.js +1 -0
  956. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  957. package/dist/modes/interactive/theme/theme-schema.d.ts +4 -0
  958. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  959. package/dist/modes/interactive/theme/theme-schema.js +2 -1
  960. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  961. package/dist/modes/interactive/theme/theme-schema.json +5 -1
  962. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  963. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  964. package/dist/modes/interactive/theme/theme.js +1 -1
  965. package/dist/modes/interactive/theme/theme.js.map +1 -1
  966. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +1 -1
  967. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  968. package/dist/modes/interactive-engine/engine-custom-ui.js +28 -11
  969. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  970. package/dist/modes/interactive-engine/engine-render-service.js +3 -3
  971. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  972. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -1
  973. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  974. package/dist/modes/interactive-engine/extension-ui-bridge.js +2 -2
  975. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  976. package/dist/modes/interactive-engine/isolated-runtime.d.ts +7 -0
  977. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  978. package/dist/modes/interactive-engine/isolated-runtime.js +7 -0
  979. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  980. package/dist/modes/interactive-engine/protocol.d.ts +12 -10
  981. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  982. package/dist/modes/interactive-engine/protocol.js +14 -11
  983. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  984. package/dist/modes/interactive-engine/remote-component.d.ts +11 -1
  985. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  986. package/dist/modes/interactive-engine/remote-component.js +48 -8
  987. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  988. package/dist/modes/interactive-engine/terminal-mode-controller.d.ts +19 -12
  989. package/dist/modes/interactive-engine/terminal-mode-controller.d.ts.map +1 -1
  990. package/dist/modes/interactive-engine/terminal-mode-controller.js +54 -35
  991. package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -1
  992. package/dist/modes/json-event.d.ts +28 -0
  993. package/dist/modes/json-event.d.ts.map +1 -0
  994. package/dist/modes/json-event.js +12 -0
  995. package/dist/modes/json-event.js.map +1 -0
  996. package/dist/modes/print-mode.d.ts.map +1 -1
  997. package/dist/modes/print-mode.js +2 -1
  998. package/dist/modes/print-mode.js.map +1 -1
  999. package/dist/modes/rpc/rpc-client-process.d.ts +1 -0
  1000. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  1001. package/dist/modes/rpc/rpc-client-process.js +5 -1
  1002. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  1003. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1004. package/dist/modes/rpc/rpc-client.js +7 -2
  1005. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1006. package/dist/modes/rpc/rpc-command-handler.js +1 -1
  1007. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  1008. package/dist/modes/rpc/rpc-event-buffer.d.ts +9 -0
  1009. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  1010. package/dist/modes/rpc/rpc-event-buffer.js +10 -5
  1011. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  1012. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  1013. package/dist/modes/rpc/rpc-extension-ui.js +3 -0
  1014. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  1015. package/dist/modes/rpc/rpc-input.js +1 -1
  1016. package/dist/modes/rpc/rpc-input.js.map +1 -1
  1017. package/dist/modes/rpc/rpc-output-buffer.d.ts +9 -0
  1018. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  1019. package/dist/modes/rpc/rpc-output-buffer.js +10 -5
  1020. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  1021. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
  1022. package/dist/modes/rpc/rpc-provider-auth.js +3 -0
  1023. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  1024. package/dist/modes/rpc/rpc-responses.d.ts +1 -1
  1025. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  1026. package/dist/modes/rpc/rpc-responses.js +13 -1
  1027. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  1028. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  1029. package/dist/modes/rpc/rpc-session-binding.js +2 -1
  1030. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  1031. package/dist/modes/rpc/rpc-types.d.ts +9 -2
  1032. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1033. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1034. package/dist/rpc-entry.js +2 -0
  1035. package/dist/rpc-entry.js.map +1 -1
  1036. package/dist/self-update-plan.d.ts.map +1 -1
  1037. package/dist/self-update-plan.js +5 -4
  1038. package/dist/self-update-plan.js.map +1 -1
  1039. package/dist/server/create-harness.d.ts +53 -0
  1040. package/dist/server/create-harness.d.ts.map +1 -0
  1041. package/dist/server/create-harness.js +349 -0
  1042. package/dist/server/create-harness.js.map +1 -0
  1043. package/dist/utils/agent-attribution.d.ts +2 -0
  1044. package/dist/utils/agent-attribution.d.ts.map +1 -0
  1045. package/dist/utils/agent-attribution.js +2 -0
  1046. package/dist/utils/agent-attribution.js.map +1 -0
  1047. package/dist/utils/child-process.d.ts +3 -1
  1048. package/dist/utils/child-process.d.ts.map +1 -1
  1049. package/dist/utils/child-process.js +24 -4
  1050. package/dist/utils/child-process.js.map +1 -1
  1051. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1052. package/dist/utils/clipboard-image.js +2 -1
  1053. package/dist/utils/clipboard-image.js.map +1 -1
  1054. package/dist/utils/clipboard.d.ts.map +1 -1
  1055. package/dist/utils/clipboard.js +12 -3
  1056. package/dist/utils/clipboard.js.map +1 -1
  1057. package/dist/utils/management-http.d.ts +23 -0
  1058. package/dist/utils/management-http.d.ts.map +1 -0
  1059. package/dist/utils/management-http.js +50 -0
  1060. package/dist/utils/management-http.js.map +1 -0
  1061. package/dist/utils/open-browser.d.ts.map +1 -1
  1062. package/dist/utils/open-browser.js +2 -1
  1063. package/dist/utils/open-browser.js.map +1 -1
  1064. package/dist/utils/paths.d.ts +2 -0
  1065. package/dist/utils/paths.d.ts.map +1 -1
  1066. package/dist/utils/paths.js +13 -0
  1067. package/dist/utils/paths.js.map +1 -1
  1068. package/dist/utils/shell.d.ts.map +1 -1
  1069. package/dist/utils/shell.js +17 -4
  1070. package/dist/utils/shell.js.map +1 -1
  1071. package/dist/utils/tool-result-images.d.ts +17 -0
  1072. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1073. package/dist/utils/tool-result-images.js +41 -0
  1074. package/dist/utils/tool-result-images.js.map +1 -0
  1075. package/dist/utils/tools-manager.d.ts.map +1 -1
  1076. package/dist/utils/tools-manager.js +7 -8
  1077. package/dist/utils/tools-manager.js.map +1 -1
  1078. package/dist/utils/version-check.d.ts +4 -0
  1079. package/dist/utils/version-check.d.ts.map +1 -1
  1080. package/dist/utils/version-check.js +20 -2
  1081. package/dist/utils/version-check.js.map +1 -1
  1082. package/docs/compaction.md +2 -1
  1083. package/docs/custom-provider.md +15 -7
  1084. package/docs/development.md +1 -0
  1085. package/docs/docs.json +1 -0
  1086. package/docs/environment-variables.md +4 -0
  1087. package/docs/extensions.md +102 -18
  1088. package/docs/i-have-adhd.md +36 -0
  1089. package/docs/intercom.md +31 -16
  1090. package/docs/json.md +2 -2
  1091. package/docs/keybindings.md +55 -12
  1092. package/docs/models/model-selection.md +34 -8
  1093. package/docs/models.md +28 -3
  1094. package/docs/providers.md +20 -2
  1095. package/docs/quickstart.md +5 -5
  1096. package/docs/rpc.md +18 -12
  1097. package/docs/sdk.md +43 -7
  1098. package/docs/security.md +10 -10
  1099. package/docs/sessions.md +2 -0
  1100. package/docs/settings.md +32 -6
  1101. package/docs/subagents.md +30 -45
  1102. package/docs/themes.md +5 -3
  1103. package/docs/tools.md +21 -1
  1104. package/docs/tui.md +41 -24
  1105. package/docs/usage.md +40 -14
  1106. package/docs/windows.md +2 -0
  1107. package/docs/workflows.md +237 -25
  1108. package/examples/extensions/custom-provider-anthropic/index.ts +9 -2
  1109. package/examples/extensions/custom-provider-gitlab-duo/index.ts +9 -2
  1110. package/examples/extensions/gondolin/package-lock.json +3 -3
  1111. package/examples/extensions/modal-editor.ts +8 -10
  1112. package/examples/extensions/rainbow-editor.ts +3 -2
  1113. package/examples/extensions/subagent/README.md +16 -45
  1114. package/examples/extensions/subagent/index.ts +6 -96
  1115. package/examples/extensions/subagent/render.ts +0 -78
  1116. package/examples/extensions/subagent/runner.ts +0 -3
  1117. package/examples/extensions/subagent/schemas.ts +0 -13
  1118. package/examples/extensions/subagent/types.ts +1 -2
  1119. package/examples/sdk/09-api-keys-and-oauth.ts +6 -2
  1120. package/examples/sdk/12-full-control.ts +8 -2
  1121. package/examples/sdk/README.md +4 -1
  1122. package/npm-shrinkwrap.json +191 -634
  1123. package/package.json +14 -7
  1124. package/dist/builtin/subagents/src/agents/chain-serializer.ts +0 -257
  1125. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +0 -112
  1126. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +0 -543
  1127. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +0 -140
  1128. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +0 -279
  1129. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +0 -99
  1130. package/dist/builtin/subagents/src/runs/background/async-execution.ts +0 -17
  1131. package/dist/builtin/subagents/src/runs/background/async-resume.ts +0 -402
  1132. package/dist/builtin/subagents/src/runs/background/async-status.ts +0 -411
  1133. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +0 -196
  1134. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +0 -102
  1135. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +0 -59
  1136. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +0 -300
  1137. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +0 -166
  1138. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +0 -77
  1139. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +0 -48
  1140. package/dist/builtin/subagents/src/runs/background/result-status.ts +0 -87
  1141. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +0 -72
  1142. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +0 -320
  1143. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +0 -105
  1144. package/dist/builtin/subagents/src/runs/background/run-status.ts +0 -358
  1145. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +0 -457
  1146. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +0 -376
  1147. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +0 -150
  1148. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +0 -109
  1149. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +0 -128
  1150. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +0 -309
  1151. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +0 -173
  1152. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +0 -578
  1153. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +0 -330
  1154. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +0 -330
  1155. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +0 -210
  1156. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +0 -69
  1157. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +0 -90
  1158. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +0 -12
  1159. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +0 -38
  1160. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +0 -280
  1161. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +0 -217
  1162. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +0 -271
  1163. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +0 -271
  1164. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +0 -200
  1165. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +0 -184
  1166. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +0 -140
  1167. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +0 -108
  1168. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +0 -17
  1169. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +0 -558
  1170. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +0 -83
  1171. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +0 -109
  1172. package/dist/builtin/subagents/src/runs/shared/attempt-watchdog.ts +0 -126
  1173. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +0 -126
  1174. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +0 -387
  1175. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +0 -39
  1176. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +0 -339
  1177. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +0 -165
  1178. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +0 -21
  1179. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +0 -150
  1180. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +0 -232
  1181. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +0 -86
  1182. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +0 -60
  1183. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +0 -335
  1184. package/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
  1185. package/examples/extensions/subagent/prompts/implement.md +0 -10
  1186. package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
  1187. /package/dist/builtin/subagents/src/runs/{shared/nested-path.ts → inprocess/runtime-support/nested-paths.ts} +0 -0
@@ -3,6 +3,7 @@ import { isProtectedStreamingCustomMessage, markProtectedStreamingCustomMessageC
3
3
  import { customMessageExcludesContext, isSingleGenericAbortTextContent, replacementAbortContent, } from "./agent-session-types.js";
4
4
  import { disposeSessionAsyncJobManager } from "./async/session-manager.js";
5
5
  import { formatCodexProviderError } from "./codex-errors.js";
6
+ import { STALE_EXTENSION_CONTEXT_MESSAGE } from "./extensions/stale-context.js";
6
7
  import { normalizeMessageContent } from "./messages.js";
7
8
  export function _emit(event) {
8
9
  for (const l of this._eventListeners) {
@@ -30,11 +31,11 @@ export function _handleAgentEvent(event) {
30
31
  const processing = this._agentEventQueue.then(() => this._processAgentEvent(event), () => this._processAgentEvent(event));
31
32
  this._agentEventQueue = processing;
32
33
  // Keep queue alive if an event handler fails. Agent-core must additionally
33
- // await the hidden reconciliation's persistence boundary before its provider
34
- // request, but an extension-listener failure retains the legacy nonblocking
35
- // event behavior.
34
+ // await protected persistence and fallback reconciliation before the next
35
+ // provider request; other listener work stays nonblocking.
36
36
  processing.catch(() => { });
37
- if (awaitProtectedPersistence)
37
+ if (awaitProtectedPersistence ||
38
+ (event.type === "agent_end" && (this._fallbackModels.length > 0 || this._fallbackOriginModel !== undefined)))
38
39
  return processing.catch(() => { });
39
40
  }
40
41
  export function _createRetryPromiseForAgentEnd(event) {
@@ -49,9 +50,11 @@ export function _createRetryPromiseForAgentEnd(event) {
49
50
  if (!lastAssistant) {
50
51
  return;
51
52
  }
52
- const shouldRetry = this._isRetryableError(lastAssistant) ||
53
- this._isEmptyCompletion(lastAssistant) ||
54
- this._isSafetyRefusal(lastAssistant);
53
+ const fallbackable = typeof this._isFallbackableError === "function"
54
+ ? this._isFallbackableError(lastAssistant)
55
+ : this._isRetryableError(lastAssistant);
56
+ const retryable = this._isRetryableError(lastAssistant);
57
+ const shouldRetry = retryable || fallbackable || this._isEmptyCompletion(lastAssistant) || this._isSafetyRefusal(lastAssistant);
55
58
  if (!shouldRetry) {
56
59
  return;
57
60
  }
@@ -78,7 +81,9 @@ export async function _processAgentEvent(event) {
78
81
  // This ensures the UI sees the updated queue state
79
82
  if (event.type === "message_start" && event.message.role === "user") {
80
83
  this._overflowRecoveryAttempted = false;
84
+ this._recoverableLengthRecoveryAttempted = false;
81
85
  this._fallbackAttemptedKeys.clear();
86
+ this._fallbackBlockedModels.length = 0;
82
87
  const messageText = this._getUserMessageText(event.message);
83
88
  if (messageText) {
84
89
  // Check steering queue first
@@ -137,19 +142,23 @@ export async function _processAgentEvent(event) {
137
142
  if (event.message.role === "assistant") {
138
143
  this._lastAssistantMessage = event.message;
139
144
  const assistantMsg = event.message;
140
- // Treat degenerate empty completions (no content, zero output tokens) and
141
- // intercepted canned safety refusals as failures alongside stopReason ===
142
- // "error". Otherwise such a turn that stops with reason "stop"/"length"
143
- // would reset the retry counter on every attempt, causing unbounded
144
- // retries instead of honoring maxRetries.
145
+ // A length stop preserves its one-shot recovery budget. Reset both
146
+ // recovery kinds only once a non-truncated response completes.
145
147
  const assistantFailed = assistantMsg.stopReason === "error" ||
146
148
  this._isEmptyCompletion(assistantMsg) ||
147
149
  this._isSafetyRefusal(assistantMsg);
148
- if (!assistantFailed) {
149
- this._fallbackAttemptedKeys.clear();
150
+ if (!assistantFailed && assistantMsg.stopReason !== "length") {
150
151
  this._overflowRecoveryAttempted = false;
152
+ this._recoverableLengthRecoveryAttempted = false;
153
+ }
154
+ if (!assistantFailed) {
155
+ this._contextOverflowUnresolved = false;
151
156
  this._outputBudgetErrorContinuationAttempts = 0;
152
157
  }
158
+ if (!assistantFailed && assistantMsg.stopReason === "stop") {
159
+ this._fallbackAttemptedKeys.clear();
160
+ this._fallbackBlockedModels.length = 0;
161
+ }
153
162
  // A non-truncated assistant response means the length-continuation loop
154
163
  // made progress (or the turn completed cleanly), so reset the bounded
155
164
  // output-cap continuation counter.
@@ -177,13 +186,23 @@ export async function _processAgentEvent(event) {
177
186
  this._lastAssistantMessage = undefined;
178
187
  const postToolPreflightFailed = this._postToolCompactionPreflightError !== undefined &&
179
188
  msg.errorMessage === this._postToolCompactionPreflightError;
180
- // Check for retryable errors first (overloaded, rate limit, server errors,
181
- // transient provider finish_reason errors, degenerate empty completions,
182
- // or intercepted canned safety refusals)
189
+ // Check provider/model failures before compaction. Fallback eligibility is
190
+ // broader than same-model retry eligibility: auth and request-incompatible
191
+ // failures advance without re-requesting the failed model.
192
+ const fallbackableError = !postToolPreflightFailed &&
193
+ (typeof this._isFallbackableError === "function"
194
+ ? this._isFallbackableError(msg)
195
+ : this._isRetryableError(msg));
183
196
  const retryableError = !postToolPreflightFailed && this._isRetryableError(msg);
184
- const emptyCompletion = !postToolPreflightFailed && !retryableError && this._isEmptyCompletion(msg);
185
- const safetyRefusal = !postToolPreflightFailed && !retryableError && !emptyCompletion && this._isSafetyRefusal(msg);
186
- if (retryableError || emptyCompletion || safetyRefusal) {
197
+ const emptyCompletion = !postToolPreflightFailed && !retryableError && !fallbackableError && this._isEmptyCompletion(msg);
198
+ const safetyRefusal = !postToolPreflightFailed &&
199
+ !retryableError &&
200
+ !fallbackableError &&
201
+ !emptyCompletion &&
202
+ this._isSafetyRefusal(msg);
203
+ const modelFailure = retryableError || fallbackableError || emptyCompletion || safetyRefusal;
204
+ let restoreAfterTurn = !modelFailure;
205
+ if (modelFailure) {
187
206
  if (emptyCompletion && !msg.errorMessage) {
188
207
  // Surface a clear reason in the retry banner; empty completions carry no
189
208
  // provider error message of their own.
@@ -195,9 +214,27 @@ export async function _processAgentEvent(event) {
195
214
  const didRetry = await this._handleRetryableError(msg);
196
215
  if (didRetry)
197
216
  return; // Retry was initiated, don't proceed to compaction
217
+ restoreAfterTurn = true;
198
218
  }
199
219
  this._resolveRetry();
220
+ this._contextOverflowUnresolved = false;
200
221
  await this._checkCompaction(msg);
222
+ // Compaction owns context overflow first. Only once it is disabled, fails,
223
+ // or reports the overflow unresolved may the chain spend a candidate on a
224
+ // larger-context model, so a compactable first overflow costs nothing.
225
+ if (this._contextOverflowUnresolved) {
226
+ this._contextOverflowUnresolved = false;
227
+ if (typeof this._trySwitchToFallbackModel === "function" && (await this._trySwitchToFallbackModel(msg)))
228
+ return;
229
+ restoreAfterTurn = true;
230
+ }
231
+ // Keep a fallback active across the compact-and-continue probe that belongs
232
+ // to this same user turn. The probe restores it before a queued next turn,
233
+ // or after a continuation settles.
234
+ if (restoreAfterTurn && this._pendingPostCompactionContinuation === undefined) {
235
+ if (typeof this._restoreFallbackModel === "function")
236
+ await this._restoreFallbackModel();
237
+ }
201
238
  }
202
239
  }
203
240
  export function _applyInterruptAbortMessage(event) {
@@ -313,7 +350,6 @@ export async function _emitExtensionEvent(event) {
313
350
  else if (event.type === "message_update") {
314
351
  const extensionEvent = {
315
352
  type: "message_update",
316
- message: event.message,
317
353
  assistantMessageEvent: event.assistantMessageEvent,
318
354
  };
319
355
  await this._extensionRunner.emit(extensionEvent);
@@ -373,26 +409,13 @@ export function subscribe(listener) {
373
409
  }
374
410
  };
375
411
  }
376
- /**
377
- * Temporarily disconnect from agent events.
378
- * User listeners are preserved and will receive events again after resubscribe().
379
- * Used internally during operations that need to pause event processing.
380
- */
412
+ /** Disconnect from agent events during disposal. */
381
413
  export function _disconnectFromAgent() {
382
414
  if (this._unsubscribeAgent) {
383
415
  this._unsubscribeAgent();
384
416
  this._unsubscribeAgent = undefined;
385
417
  }
386
418
  }
387
- /**
388
- * Reconnect to agent events after _disconnectFromAgent().
389
- * Preserves all existing listeners.
390
- */
391
- export function _reconnectToAgent() {
392
- if (this._unsubscribeAgent)
393
- return; // Already connected
394
- this._unsubscribeAgent = this.agent.subscribe(this._handleAgentEvent);
395
- }
396
419
  /**
397
420
  * Remove all listeners and disconnect from agent.
398
421
  * Call this when completely done with the session.
@@ -401,11 +424,16 @@ export function dispose() {
401
424
  // Fail closed while protected input remains queued, or flush a consumed
402
425
  // reconciliation before invalidation can discard its recovery state.
403
426
  prepareProtectedStreamingCustomMessagesForDisposal(this);
404
- this._extensionRunner.invalidate("This extension ctx is stale after session replacement or reload. Do not use a captured pi or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().");
427
+ this._extensionRunner.invalidate(STALE_EXTENSION_CONTEXT_MESSAGE);
405
428
  disposeSessionAsyncJobManager(this._asyncJobManager, this._asyncJobManagerSessionId);
406
429
  this._disconnectFromAgent();
407
430
  this._eventListeners = [];
408
431
  cleanupSessionResources(this.sessionId);
432
+ // Last: an async spill writer started by this session holds its own lease, so
433
+ // releasing here stops protecting a tree nothing is using without cutting a
434
+ // writer that outlived the session object.
435
+ this._tempStorageLease?.release();
436
+ this._tempStorageLease = undefined;
409
437
  }
410
438
  // =========================================================================
411
439
  // Read-only State Access
@@ -427,7 +455,6 @@ export const agentSessionEventsMethods = {
427
455
  _emitExtensionEvent,
428
456
  subscribe,
429
457
  _disconnectFromAgent,
430
- _reconnectToAgent,
431
458
  dispose,
432
459
  };
433
460
  //# sourceMappingURL=agent-session-events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-events.js","sourceRoot":"","sources":["../../src/core/agent-session-events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentEvent, AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { AssistantMessage, Message, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { cleanupSessionResources } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport {\n\tisProtectedStreamingCustomMessage,\n\tmarkProtectedStreamingCustomMessageConsumed,\n\tmarkProtectedStreamingCustomMessagePersistenceFailed,\n\tpersistProtectedStreamingCustomMessage,\n\tprepareProtectedStreamingCustomMessagesForDisposal,\n\tretryConsumedProtectedStreamingCustomMessages,\n} from \"./agent-session-persistent-custom-messages.ts\";\nimport {\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\tcustomMessageExcludesContext,\n\tisSingleGenericAbortTextContent,\n\treplacementAbortContent,\n} from \"./agent-session-types.ts\";\nimport { disposeSessionAsyncJobManager } from \"./async/session-manager.js\";\nimport { formatCodexProviderError } from \"./codex-errors.ts\";\nimport type {\n\tMessageEndEvent,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tToolExecutionEndEvent,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n} from \"./extensions/index.ts\";\nimport type { StageAdmittedCustomMessage } from \"./messages.ts\";\nimport { normalizeMessageContent } from \"./messages.ts\";\n\nexport function _emit(this: AgentSession, event: AgentSessionEvent): void {\n\tfor (const l of this._eventListeners) {\n\t\tl(event);\n\t}\n}\n\nexport function _emitQueueUpdate(this: AgentSession): void {\n\tthis._emit({\n\t\ttype: \"queue_update\",\n\t\tsteering: [...this._steeringMessages],\n\t\tfollowUp: [...this._followUpMessages],\n\t});\n}\n\n/** Internal handler for agent events - shared by subscribe and reconnect */\n\nexport function _handleAgentEvent(this: AgentSession, event: AgentEvent): Promise<void> | void {\n\t// Create retry promise synchronously before queueing async processing.\n\t// Agent.emit() calls this handler synchronously, and prompt() calls waitForRetry()\n\t// as soon as agent.prompt() resolves. If _retryPromise is created only inside\n\t// _processAgentEvent, slow earlier queued events can delay agent_end processing\n\t// and waitForRetry() can miss the in-flight retry.\n\tthis._createRetryPromiseForAgentEnd(event);\n\tconst awaitProtectedPersistence =\n\t\tevent.type === \"message_end\" && event.message.role === \"custom\"\n\t\t\t? markProtectedStreamingCustomMessageConsumed(this, event.message)\n\t\t\t: false;\n\n\tconst processing = this._agentEventQueue.then(\n\t\t() => this._processAgentEvent(event),\n\t\t() => this._processAgentEvent(event),\n\t);\n\tthis._agentEventQueue = processing;\n\n\t// Keep queue alive if an event handler fails. Agent-core must additionally\n\t// await the hidden reconciliation's persistence boundary before its provider\n\t// request, but an extension-listener failure retains the legacy nonblocking\n\t// event behavior.\n\tprocessing.catch(() => {});\n\tif (awaitProtectedPersistence) return processing.catch(() => {});\n}\n\nexport function _createRetryPromiseForAgentEnd(this: AgentSession, event: AgentEvent): void {\n\tif (event.type !== \"agent_end\" || this._retryPromise) {\n\t\treturn;\n\t}\n\n\tconst settings = this.settingsManager.getRetrySettings();\n\tif (!settings.enabled && this._fallbackModels.length === 0) {\n\t\treturn;\n\t}\n\n\tconst lastAssistant = this._findLastAssistantInMessages(event.messages);\n\tif (!lastAssistant) {\n\t\treturn;\n\t}\n\n\tconst shouldRetry =\n\t\tthis._isRetryableError(lastAssistant) ||\n\t\tthis._isEmptyCompletion(lastAssistant) ||\n\t\tthis._isSafetyRefusal(lastAssistant);\n\tif (!shouldRetry) {\n\t\treturn;\n\t}\n\n\tthis._retryPromise = new Promise((resolve) => {\n\t\tthis._retryResolve = resolve;\n\t});\n}\n\nexport function _findLastAssistantInMessages(\n\tthis: AgentSession,\n\tmessages: AgentMessage[],\n): AssistantMessage | undefined {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (message.role === \"assistant\") {\n\t\t\treturn message as AssistantMessage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function _processAgentEvent(this: AgentSession, event: AgentEvent): Promise<void> {\n\tconst protectedMessage =\n\t\tevent.type === \"message_end\" &&\n\t\tevent.message.role === \"custom\" &&\n\t\tisProtectedStreamingCustomMessage(this, event.message)\n\t\t\t? event.message\n\t\t\t: undefined;\n\t// When a user message starts, check if it's from either queue and remove it BEFORE emitting\n\t// This ensures the UI sees the updated queue state\n\tif (event.type === \"message_start\" && event.message.role === \"user\") {\n\t\tthis._overflowRecoveryAttempted = false;\n\t\tthis._fallbackAttemptedKeys.clear();\n\t\tconst messageText = this._getUserMessageText(event.message);\n\t\tif (messageText) {\n\t\t\t// Check steering queue first\n\t\t\tconst steeringIndex = this._steeringMessages.indexOf(messageText);\n\t\t\tif (steeringIndex !== -1) {\n\t\t\t\tthis._steeringMessages.splice(steeringIndex, 1);\n\t\t\t\tthis._emitQueueUpdate();\n\t\t\t} else {\n\t\t\t\t// Check follow-up queue\n\t\t\t\tconst followUpIndex = this._followUpMessages.indexOf(messageText);\n\t\t\t\tif (followUpIndex !== -1) {\n\t\t\t\t\tthis._followUpMessages.splice(followUpIndex, 1);\n\t\t\t\t\tthis._emitQueueUpdate();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tthis._applyInterruptAbortMessage(event);\n\tthis._applyProviderErrorGuidance(event);\n\n\ttry {\n\t\t// Emit to extensions first, then notify all public listeners.\n\t\tawait this._emitExtensionEvent(event);\n\t\tthis._emit(event);\n\t} finally {\n\t\t// Agent-core has consumed this protected input already. Its durability\n\t\t// boundary cannot be skipped by a fallible extension or session listener.\n\t\tif (protectedMessage !== undefined) {\n\t\t\ttry {\n\t\t\t\tpersistProtectedStreamingCustomMessage(this, protectedMessage);\n\t\t\t} catch {\n\t\t\t\tmarkProtectedStreamingCustomMessagePersistenceFailed(this, protectedMessage);\n\t\t\t}\n\t\t\tretryConsumedProtectedStreamingCustomMessages(this);\n\t\t}\n\t}\n\n\t// Handle session persistence\n\tif (event.type === \"message_end\") {\n\t\t// Check if this is a custom message from extensions\n\t\tif (event.message.role === \"custom\") {\n\t\t\tconst admitted = event.message as StageAdmittedCustomMessage;\n\t\t\tif (protectedMessage === undefined) {\n\t\t\t\tthis.sessionManager.appendCustomMessageEntry(\n\t\t\t\t\tevent.message.customType,\n\t\t\t\t\tevent.message.content,\n\t\t\t\t\tevent.message.display,\n\t\t\t\t\tevent.message.details,\n\t\t\t\t\tcustomMessageExcludesContext(event.message),\n\t\t\t\t\tundefined,\n\t\t\t\t\tadmitted.stageAdmissionKey,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tevent.message.role === \"user\" ||\n\t\t\tevent.message.role === \"assistant\" ||\n\t\t\tevent.message.role === \"toolResult\"\n\t\t) {\n\t\t\t// Regular LLM message - persist as SessionMessageEntry\n\t\t\tthis.sessionManager.appendMessage(event.message);\n\t\t}\n\t\t// Other message types (bashExecution, branchSummary) are persisted elsewhere\n\n\t\t// Track assistant message for auto-compaction (checked on agent_end)\n\t\tif (event.message.role === \"assistant\") {\n\t\t\tthis._lastAssistantMessage = event.message;\n\n\t\t\tconst assistantMsg = event.message as AssistantMessage;\n\t\t\t// Treat degenerate empty completions (no content, zero output tokens) and\n\t\t\t// intercepted canned safety refusals as failures alongside stopReason ===\n\t\t\t// \"error\". Otherwise such a turn that stops with reason \"stop\"/\"length\"\n\t\t\t// would reset the retry counter on every attempt, causing unbounded\n\t\t\t// retries instead of honoring maxRetries.\n\t\t\tconst assistantFailed =\n\t\t\t\tassistantMsg.stopReason === \"error\" ||\n\t\t\t\tthis._isEmptyCompletion(assistantMsg) ||\n\t\t\t\tthis._isSafetyRefusal(assistantMsg);\n\t\t\tif (!assistantFailed) {\n\t\t\t\tthis._fallbackAttemptedKeys.clear();\n\t\t\t\tthis._overflowRecoveryAttempted = false;\n\t\t\t\tthis._outputBudgetErrorContinuationAttempts = 0;\n\t\t\t}\n\n\t\t\t// A non-truncated assistant response means the length-continuation loop\n\t\t\t// made progress (or the turn completed cleanly), so reset the bounded\n\t\t\t// output-cap continuation counter.\n\t\t\tif (assistantMsg.stopReason !== \"length\") {\n\t\t\t\tthis._lengthContinuationAttempts = 0;\n\t\t\t}\n\n\t\t\t// Reset retry counter immediately on successful assistant response\n\t\t\t// This prevents accumulation across multiple LLM calls within a turn\n\t\t\tif (!assistantFailed && this._retryAttempt > 0) {\n\t\t\t\tthis._emit({\n\t\t\t\t\ttype: \"auto_retry_end\",\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tattempt: this._retryAttempt,\n\t\t\t\t});\n\t\t\t\tthis._retryAttempt = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t// A transient hidden-reconciliation write failure retries independently of\n\t// provider/card delivery and can never create another visible lifecycle card.\n\tretryConsumedProtectedStreamingCustomMessages(this);\n\n\t// Check auto-retry and auto-compaction after agent completes\n\tif (event.type === \"agent_end\" && this._lastAssistantMessage) {\n\t\tconst msg = this._lastAssistantMessage;\n\t\tthis._lastAssistantMessage = undefined;\n\t\tconst postToolPreflightFailed =\n\t\t\tthis._postToolCompactionPreflightError !== undefined &&\n\t\t\tmsg.errorMessage === this._postToolCompactionPreflightError;\n\n\t\t// Check for retryable errors first (overloaded, rate limit, server errors,\n\t\t// transient provider finish_reason errors, degenerate empty completions,\n\t\t// or intercepted canned safety refusals)\n\t\tconst retryableError = !postToolPreflightFailed && this._isRetryableError(msg);\n\t\tconst emptyCompletion = !postToolPreflightFailed && !retryableError && this._isEmptyCompletion(msg);\n\t\tconst safetyRefusal =\n\t\t\t!postToolPreflightFailed && !retryableError && !emptyCompletion && this._isSafetyRefusal(msg);\n\t\tif (retryableError || emptyCompletion || safetyRefusal) {\n\t\t\tif (emptyCompletion && !msg.errorMessage) {\n\t\t\t\t// Surface a clear reason in the retry banner; empty completions carry no\n\t\t\t\t// provider error message of their own.\n\t\t\t\tmsg.errorMessage = \"Provider returned an empty completion\";\n\t\t\t} else if (safetyRefusal && !msg.errorMessage) {\n\t\t\t\tmsg.errorMessage = \"Provider returned a canned safety refusal\";\n\t\t\t}\n\t\t\tconst didRetry = await this._handleRetryableError(msg);\n\t\t\tif (didRetry) return; // Retry was initiated, don't proceed to compaction\n\t\t}\n\n\t\tthis._resolveRetry();\n\t\tawait this._checkCompaction(msg);\n\t}\n}\n\nexport function _applyInterruptAbortMessage(this: AgentSession, event: AgentEvent): void {\n\tconst abortMessage = this._activeInterruptAbortMessage;\n\tif (!abortMessage) return;\n\n\tif (event.type === \"tool_execution_end\" && event.isError && isSingleGenericAbortTextContent(event.result.content)) {\n\t\tevent.result.content = replacementAbortContent(abortMessage);\n\t\treturn;\n\t}\n\n\tif (event.type !== \"message_start\" && event.type !== \"message_end\") return;\n\n\tif (\n\t\tevent.message.role === \"toolResult\" &&\n\t\tevent.message.isError &&\n\t\tisSingleGenericAbortTextContent(event.message.content)\n\t) {\n\t\tevent.message.content = replacementAbortContent(abortMessage);\n\t\treturn;\n\t}\n\n\tif (event.message.role === \"assistant\") {\n\t\tconst assistantMessage = event.message as AssistantMessage;\n\t\tif (assistantMessage.stopReason === \"aborted\") {\n\t\t\tassistantMessage.errorMessage = abortMessage;\n\t\t}\n\t}\n}\n\nexport function _applyProviderErrorGuidance(this: AgentSession, event: AgentEvent): void {\n\tif (event.type !== \"message_start\" && event.type !== \"message_update\" && event.type !== \"message_end\") return;\n\tif (event.message.role !== \"assistant\") return;\n\n\tconst assistantMessage = event.message as AssistantMessage;\n\tif (assistantMessage.stopReason !== \"error\" || !assistantMessage.errorMessage) return;\n\n\tassistantMessage.errorMessage = formatCodexProviderError(assistantMessage.provider, assistantMessage.errorMessage);\n}\n\n/** Resolve the pending retry promise */\n\nexport function _resolveRetry(this: AgentSession): void {\n\tif (this._retryResolve) {\n\t\tthis._retryResolve();\n\t\tthis._retryResolve = undefined;\n\t\tthis._retryPromise = undefined;\n\t}\n}\n\n/** Extract text content from a message */\n\nexport function _getUserMessageText(this: AgentSession, message: Message): string {\n\tif (message.role !== \"user\") return \"\";\n\tconst content = message.content;\n\tif (typeof content === \"string\") return content;\n\tconst textBlocks = content.filter((c) => c.type === \"text\");\n\treturn textBlocks.map((c) => (c as TextContent).text).join(\"\");\n}\n\n/** Find the last assistant message in agent state (including aborted ones) */\n\nexport function _findLastAssistantMessage(this: AgentSession): AssistantMessage | undefined {\n\tconst messages = this.agent.state.messages;\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst msg = messages[i];\n\t\tif (msg.role === \"assistant\") {\n\t\t\treturn msg as AssistantMessage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function _replaceMessageInPlace(this: AgentSession, target: AgentMessage, replacement: AgentMessage): void {\n\t// Agent-core stores the finalized message object in its state before emitting message_end.\n\t// SessionManager persistence happens later in _processAgentEvent() with event.message.\n\t// Mutating this object in place keeps agent state, later turn/agent events, listeners,\n\t// and the eventual SessionManager.appendMessage(event.message) persistence in sync.\n\tif (target === replacement) {\n\t\treturn;\n\t}\n\n\tconst targetRecord = target as unknown as Record<string, unknown>;\n\tfor (const key of Object.keys(targetRecord)) {\n\t\tdelete targetRecord[key];\n\t}\n\tObject.assign(targetRecord, replacement);\n}\n\n/** Emit extension events based on agent events */\n\nexport async function _emitExtensionEvent(this: AgentSession, event: AgentEvent): Promise<void> {\n\tif (event.type === \"agent_start\") {\n\t\tthis._turnIndex = 0;\n\t\tawait this._extensionRunner.emit({ type: \"agent_start\" });\n\t} else if (event.type === \"agent_end\") {\n\t\tawait this._extensionRunner.emit({ type: \"agent_end\", messages: event.messages });\n\t} else if (event.type === \"turn_start\") {\n\t\tconst extensionEvent: TurnStartEvent = {\n\t\t\ttype: \"turn_start\",\n\t\t\tturnIndex: this._turnIndex,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"turn_end\") {\n\t\tconst extensionEvent: TurnEndEvent = {\n\t\t\ttype: \"turn_end\",\n\t\t\tturnIndex: this._turnIndex,\n\t\t\tmessage: event.message,\n\t\t\ttoolResults: event.toolResults,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t\tthis._turnIndex++;\n\t} else if (event.type === \"message_start\") {\n\t\tconst extensionEvent: MessageStartEvent = {\n\t\t\ttype: \"message_start\",\n\t\t\tmessage: event.message,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"message_update\") {\n\t\tconst extensionEvent: MessageUpdateEvent = {\n\t\t\ttype: \"message_update\",\n\t\t\tmessage: event.message,\n\t\t\tassistantMessageEvent: event.assistantMessageEvent,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"message_end\") {\n\t\tconst extensionEvent: MessageEndEvent = {\n\t\t\ttype: \"message_end\",\n\t\t\tmessage: event.message,\n\t\t};\n\t\tconst replacement = await this._extensionRunner.emitMessageEnd(extensionEvent);\n\t\tif (replacement) {\n\t\t\tthis._replaceMessageInPlace(event.message, normalizeMessageContent(replacement));\n\t\t}\n\t} else if (event.type === \"tool_execution_start\") {\n\t\tconst extensionEvent: ToolExecutionStartEvent = {\n\t\t\ttype: \"tool_execution_start\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\targs: event.args,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"tool_execution_update\") {\n\t\tconst extensionEvent: ToolExecutionUpdateEvent = {\n\t\t\ttype: \"tool_execution_update\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\targs: event.args,\n\t\t\tpartialResult: event.partialResult,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"tool_execution_end\") {\n\t\tconst extensionEvent: ToolExecutionEndEvent = {\n\t\t\ttype: \"tool_execution_end\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\tresult: event.result,\n\t\t\tisError: event.isError,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t}\n}\n\n/**\n * Subscribe to agent events.\n * Session persistence is handled internally (saves messages on message_end).\n * Multiple listeners can be added. Returns unsubscribe function for this listener.\n */\n\nexport function subscribe(this: AgentSession, listener: AgentSessionEventListener): () => void {\n\tthis._eventListeners.push(listener);\n\n\t// Return unsubscribe function for this specific listener\n\treturn () => {\n\t\tconst index = this._eventListeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tthis._eventListeners.splice(index, 1);\n\t\t}\n\t};\n}\n\n/**\n * Temporarily disconnect from agent events.\n * User listeners are preserved and will receive events again after resubscribe().\n * Used internally during operations that need to pause event processing.\n */\n\nexport function _disconnectFromAgent(this: AgentSession): void {\n\tif (this._unsubscribeAgent) {\n\t\tthis._unsubscribeAgent();\n\t\tthis._unsubscribeAgent = undefined;\n\t}\n}\n\n/**\n * Reconnect to agent events after _disconnectFromAgent().\n * Preserves all existing listeners.\n */\n\nexport function _reconnectToAgent(this: AgentSession): void {\n\tif (this._unsubscribeAgent) return; // Already connected\n\tthis._unsubscribeAgent = this.agent.subscribe(this._handleAgentEvent);\n}\n\n/**\n * Remove all listeners and disconnect from agent.\n * Call this when completely done with the session.\n */\n\nexport function dispose(this: AgentSession): void {\n\t// Fail closed while protected input remains queued, or flush a consumed\n\t// reconciliation before invalidation can discard its recovery state.\n\tprepareProtectedStreamingCustomMessagesForDisposal(this);\n\tthis._extensionRunner.invalidate(\n\t\t\"This extension ctx is stale after session replacement or reload. Do not use a captured pi or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().\",\n\t);\n\tdisposeSessionAsyncJobManager(this._asyncJobManager, this._asyncJobManagerSessionId);\n\tthis._disconnectFromAgent();\n\tthis._eventListeners = [];\n\tcleanupSessionResources(this.sessionId);\n}\n\n// =========================================================================\n// Read-only State Access\n// =========================================================================\n\n/** Full agent state */\n\nexport const agentSessionEventsMethods = {\n\t_emit,\n\t_emitQueueUpdate,\n\t_handleAgentEvent,\n\t_createRetryPromiseForAgentEnd,\n\t_findLastAssistantInMessages,\n\t_processAgentEvent,\n\t_applyInterruptAbortMessage,\n\t_applyProviderErrorGuidance,\n\t_resolveRetry,\n\t_getUserMessageText,\n\t_findLastAssistantMessage,\n\t_replaceMessageInPlace,\n\t_emitExtensionEvent,\n\tsubscribe,\n\t_disconnectFromAgent,\n\t_reconnectToAgent,\n\tdispose,\n};\n"]}
1
+ {"version":3,"file":"agent-session-events.js","sourceRoot":"","sources":["../../src/core/agent-session-events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentEvent, AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { AssistantMessage, Message, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { cleanupSessionResources } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport {\n\tisProtectedStreamingCustomMessage,\n\tmarkProtectedStreamingCustomMessageConsumed,\n\tmarkProtectedStreamingCustomMessagePersistenceFailed,\n\tpersistProtectedStreamingCustomMessage,\n\tprepareProtectedStreamingCustomMessagesForDisposal,\n\tretryConsumedProtectedStreamingCustomMessages,\n} from \"./agent-session-persistent-custom-messages.ts\";\nimport {\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\tcustomMessageExcludesContext,\n\tisSingleGenericAbortTextContent,\n\treplacementAbortContent,\n} from \"./agent-session-types.ts\";\nimport { disposeSessionAsyncJobManager } from \"./async/session-manager.js\";\nimport { formatCodexProviderError } from \"./codex-errors.ts\";\nimport type {\n\tMessageEndEvent,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tToolExecutionEndEvent,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n} from \"./extensions/index.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./extensions/stale-context.ts\";\nimport type { StageAdmittedCustomMessage } from \"./messages.ts\";\nimport { normalizeMessageContent } from \"./messages.ts\";\n\nexport function _emit(this: AgentSession, event: AgentSessionEvent): void {\n\tfor (const l of this._eventListeners) {\n\t\tl(event);\n\t}\n}\n\nexport function _emitQueueUpdate(this: AgentSession): void {\n\tthis._emit({\n\t\ttype: \"queue_update\",\n\t\tsteering: [...this._steeringMessages],\n\t\tfollowUp: [...this._followUpMessages],\n\t});\n}\n\n/** Internal handler for agent events - shared by subscribe and reconnect */\n\nexport function _handleAgentEvent(this: AgentSession, event: AgentEvent): Promise<void> | void {\n\t// Create retry promise synchronously before queueing async processing.\n\t// Agent.emit() calls this handler synchronously, and prompt() calls waitForRetry()\n\t// as soon as agent.prompt() resolves. If _retryPromise is created only inside\n\t// _processAgentEvent, slow earlier queued events can delay agent_end processing\n\t// and waitForRetry() can miss the in-flight retry.\n\tthis._createRetryPromiseForAgentEnd(event);\n\tconst awaitProtectedPersistence =\n\t\tevent.type === \"message_end\" && event.message.role === \"custom\"\n\t\t\t? markProtectedStreamingCustomMessageConsumed(this, event.message)\n\t\t\t: false;\n\n\tconst processing = this._agentEventQueue.then(\n\t\t() => this._processAgentEvent(event),\n\t\t() => this._processAgentEvent(event),\n\t);\n\tthis._agentEventQueue = processing;\n\n\t// Keep queue alive if an event handler fails. Agent-core must additionally\n\t// await protected persistence and fallback reconciliation before the next\n\t// provider request; other listener work stays nonblocking.\n\tprocessing.catch(() => {});\n\tif (\n\t\tawaitProtectedPersistence ||\n\t\t(event.type === \"agent_end\" && (this._fallbackModels.length > 0 || this._fallbackOriginModel !== undefined))\n\t)\n\t\treturn processing.catch(() => {});\n}\n\nexport function _createRetryPromiseForAgentEnd(this: AgentSession, event: AgentEvent): void {\n\tif (event.type !== \"agent_end\" || this._retryPromise) {\n\t\treturn;\n\t}\n\n\tconst settings = this.settingsManager.getRetrySettings();\n\tif (!settings.enabled && this._fallbackModels.length === 0) {\n\t\treturn;\n\t}\n\n\tconst lastAssistant = this._findLastAssistantInMessages(event.messages);\n\tif (!lastAssistant) {\n\t\treturn;\n\t}\n\n\tconst fallbackable =\n\t\ttypeof this._isFallbackableError === \"function\"\n\t\t\t? this._isFallbackableError(lastAssistant)\n\t\t\t: this._isRetryableError(lastAssistant);\n\tconst retryable = this._isRetryableError(lastAssistant);\n\tconst shouldRetry =\n\t\tretryable || fallbackable || this._isEmptyCompletion(lastAssistant) || this._isSafetyRefusal(lastAssistant);\n\tif (!shouldRetry) {\n\t\treturn;\n\t}\n\n\tthis._retryPromise = new Promise((resolve) => {\n\t\tthis._retryResolve = resolve;\n\t});\n}\n\nexport function _findLastAssistantInMessages(\n\tthis: AgentSession,\n\tmessages: AgentMessage[],\n): AssistantMessage | undefined {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (message.role === \"assistant\") {\n\t\t\treturn message as AssistantMessage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function _processAgentEvent(this: AgentSession, event: AgentEvent): Promise<void> {\n\tconst protectedMessage =\n\t\tevent.type === \"message_end\" &&\n\t\tevent.message.role === \"custom\" &&\n\t\tisProtectedStreamingCustomMessage(this, event.message)\n\t\t\t? event.message\n\t\t\t: undefined;\n\t// When a user message starts, check if it's from either queue and remove it BEFORE emitting\n\t// This ensures the UI sees the updated queue state\n\tif (event.type === \"message_start\" && event.message.role === \"user\") {\n\t\tthis._overflowRecoveryAttempted = false;\n\t\tthis._recoverableLengthRecoveryAttempted = false;\n\t\tthis._fallbackAttemptedKeys.clear();\n\t\tthis._fallbackBlockedModels.length = 0;\n\t\tconst messageText = this._getUserMessageText(event.message);\n\t\tif (messageText) {\n\t\t\t// Check steering queue first\n\t\t\tconst steeringIndex = this._steeringMessages.indexOf(messageText);\n\t\t\tif (steeringIndex !== -1) {\n\t\t\t\tthis._steeringMessages.splice(steeringIndex, 1);\n\t\t\t\tthis._emitQueueUpdate();\n\t\t\t} else {\n\t\t\t\t// Check follow-up queue\n\t\t\t\tconst followUpIndex = this._followUpMessages.indexOf(messageText);\n\t\t\t\tif (followUpIndex !== -1) {\n\t\t\t\t\tthis._followUpMessages.splice(followUpIndex, 1);\n\t\t\t\t\tthis._emitQueueUpdate();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tthis._applyInterruptAbortMessage(event);\n\tthis._applyProviderErrorGuidance(event);\n\n\ttry {\n\t\t// Emit to extensions first, then notify all public listeners.\n\t\tawait this._emitExtensionEvent(event);\n\t\tthis._emit(event);\n\t} finally {\n\t\t// Agent-core has consumed this protected input already. Its durability\n\t\t// boundary cannot be skipped by a fallible extension or session listener.\n\t\tif (protectedMessage !== undefined) {\n\t\t\ttry {\n\t\t\t\tpersistProtectedStreamingCustomMessage(this, protectedMessage);\n\t\t\t} catch {\n\t\t\t\tmarkProtectedStreamingCustomMessagePersistenceFailed(this, protectedMessage);\n\t\t\t}\n\t\t\tretryConsumedProtectedStreamingCustomMessages(this);\n\t\t}\n\t}\n\n\t// Handle session persistence\n\tif (event.type === \"message_end\") {\n\t\t// Check if this is a custom message from extensions\n\t\tif (event.message.role === \"custom\") {\n\t\t\tconst admitted = event.message as StageAdmittedCustomMessage;\n\t\t\tif (protectedMessage === undefined) {\n\t\t\t\tthis.sessionManager.appendCustomMessageEntry(\n\t\t\t\t\tevent.message.customType,\n\t\t\t\t\tevent.message.content,\n\t\t\t\t\tevent.message.display,\n\t\t\t\t\tevent.message.details,\n\t\t\t\t\tcustomMessageExcludesContext(event.message),\n\t\t\t\t\tundefined,\n\t\t\t\t\tadmitted.stageAdmissionKey,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tevent.message.role === \"user\" ||\n\t\t\tevent.message.role === \"assistant\" ||\n\t\t\tevent.message.role === \"toolResult\"\n\t\t) {\n\t\t\t// Regular LLM message - persist as SessionMessageEntry\n\t\t\tthis.sessionManager.appendMessage(event.message);\n\t\t}\n\t\t// Other message types (bashExecution, branchSummary) are persisted elsewhere\n\n\t\t// Track assistant message for auto-compaction (checked on agent_end)\n\t\tif (event.message.role === \"assistant\") {\n\t\t\tthis._lastAssistantMessage = event.message;\n\n\t\t\tconst assistantMsg = event.message as AssistantMessage;\n\t\t\t// A length stop preserves its one-shot recovery budget. Reset both\n\t\t\t// recovery kinds only once a non-truncated response completes.\n\t\t\tconst assistantFailed =\n\t\t\t\tassistantMsg.stopReason === \"error\" ||\n\t\t\t\tthis._isEmptyCompletion(assistantMsg) ||\n\t\t\t\tthis._isSafetyRefusal(assistantMsg);\n\t\t\tif (!assistantFailed && assistantMsg.stopReason !== \"length\") {\n\t\t\t\tthis._overflowRecoveryAttempted = false;\n\t\t\t\tthis._recoverableLengthRecoveryAttempted = false;\n\t\t\t}\n\t\t\tif (!assistantFailed) {\n\t\t\t\tthis._contextOverflowUnresolved = false;\n\t\t\t\tthis._outputBudgetErrorContinuationAttempts = 0;\n\t\t\t}\n\t\t\tif (!assistantFailed && assistantMsg.stopReason === \"stop\") {\n\t\t\t\tthis._fallbackAttemptedKeys.clear();\n\t\t\t\tthis._fallbackBlockedModels.length = 0;\n\t\t\t}\n\n\t\t\t// A non-truncated assistant response means the length-continuation loop\n\t\t\t// made progress (or the turn completed cleanly), so reset the bounded\n\t\t\t// output-cap continuation counter.\n\t\t\tif (assistantMsg.stopReason !== \"length\") {\n\t\t\t\tthis._lengthContinuationAttempts = 0;\n\t\t\t}\n\n\t\t\t// Reset retry counter immediately on successful assistant response\n\t\t\t// This prevents accumulation across multiple LLM calls within a turn\n\t\t\tif (!assistantFailed && this._retryAttempt > 0) {\n\t\t\t\tthis._emit({\n\t\t\t\t\ttype: \"auto_retry_end\",\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tattempt: this._retryAttempt,\n\t\t\t\t});\n\t\t\t\tthis._retryAttempt = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t// A transient hidden-reconciliation write failure retries independently of\n\t// provider/card delivery and can never create another visible lifecycle card.\n\tretryConsumedProtectedStreamingCustomMessages(this);\n\n\t// Check auto-retry and auto-compaction after agent completes\n\tif (event.type === \"agent_end\" && this._lastAssistantMessage) {\n\t\tconst msg = this._lastAssistantMessage;\n\t\tthis._lastAssistantMessage = undefined;\n\t\tconst postToolPreflightFailed =\n\t\t\tthis._postToolCompactionPreflightError !== undefined &&\n\t\t\tmsg.errorMessage === this._postToolCompactionPreflightError;\n\n\t\t// Check provider/model failures before compaction. Fallback eligibility is\n\t\t// broader than same-model retry eligibility: auth and request-incompatible\n\t\t// failures advance without re-requesting the failed model.\n\t\tconst fallbackableError =\n\t\t\t!postToolPreflightFailed &&\n\t\t\t(typeof this._isFallbackableError === \"function\"\n\t\t\t\t? this._isFallbackableError(msg)\n\t\t\t\t: this._isRetryableError(msg));\n\t\tconst retryableError = !postToolPreflightFailed && this._isRetryableError(msg);\n\t\tconst emptyCompletion =\n\t\t\t!postToolPreflightFailed && !retryableError && !fallbackableError && this._isEmptyCompletion(msg);\n\t\tconst safetyRefusal =\n\t\t\t!postToolPreflightFailed &&\n\t\t\t!retryableError &&\n\t\t\t!fallbackableError &&\n\t\t\t!emptyCompletion &&\n\t\t\tthis._isSafetyRefusal(msg);\n\t\tconst modelFailure = retryableError || fallbackableError || emptyCompletion || safetyRefusal;\n\t\tlet restoreAfterTurn = !modelFailure;\n\t\tif (modelFailure) {\n\t\t\tif (emptyCompletion && !msg.errorMessage) {\n\t\t\t\t// Surface a clear reason in the retry banner; empty completions carry no\n\t\t\t\t// provider error message of their own.\n\t\t\t\tmsg.errorMessage = \"Provider returned an empty completion\";\n\t\t\t} else if (safetyRefusal && !msg.errorMessage) {\n\t\t\t\tmsg.errorMessage = \"Provider returned a canned safety refusal\";\n\t\t\t}\n\t\t\tconst didRetry = await this._handleRetryableError(msg);\n\t\t\tif (didRetry) return; // Retry was initiated, don't proceed to compaction\n\t\t\trestoreAfterTurn = true;\n\t\t}\n\n\t\tthis._resolveRetry();\n\t\tthis._contextOverflowUnresolved = false;\n\t\tawait this._checkCompaction(msg);\n\t\t// Compaction owns context overflow first. Only once it is disabled, fails,\n\t\t// or reports the overflow unresolved may the chain spend a candidate on a\n\t\t// larger-context model, so a compactable first overflow costs nothing.\n\t\tif (this._contextOverflowUnresolved) {\n\t\t\tthis._contextOverflowUnresolved = false;\n\t\t\tif (typeof this._trySwitchToFallbackModel === \"function\" && (await this._trySwitchToFallbackModel(msg)))\n\t\t\t\treturn;\n\t\t\trestoreAfterTurn = true;\n\t\t}\n\t\t// Keep a fallback active across the compact-and-continue probe that belongs\n\t\t// to this same user turn. The probe restores it before a queued next turn,\n\t\t// or after a continuation settles.\n\t\tif (restoreAfterTurn && this._pendingPostCompactionContinuation === undefined) {\n\t\t\tif (typeof this._restoreFallbackModel === \"function\") await this._restoreFallbackModel();\n\t\t}\n\t}\n}\n\nexport function _applyInterruptAbortMessage(this: AgentSession, event: AgentEvent): void {\n\tconst abortMessage = this._activeInterruptAbortMessage;\n\tif (!abortMessage) return;\n\n\tif (event.type === \"tool_execution_end\" && event.isError && isSingleGenericAbortTextContent(event.result.content)) {\n\t\tevent.result.content = replacementAbortContent(abortMessage);\n\t\treturn;\n\t}\n\n\tif (event.type !== \"message_start\" && event.type !== \"message_end\") return;\n\n\tif (\n\t\tevent.message.role === \"toolResult\" &&\n\t\tevent.message.isError &&\n\t\tisSingleGenericAbortTextContent(event.message.content)\n\t) {\n\t\tevent.message.content = replacementAbortContent(abortMessage);\n\t\treturn;\n\t}\n\n\tif (event.message.role === \"assistant\") {\n\t\tconst assistantMessage = event.message as AssistantMessage;\n\t\tif (assistantMessage.stopReason === \"aborted\") {\n\t\t\tassistantMessage.errorMessage = abortMessage;\n\t\t}\n\t}\n}\n\nexport function _applyProviderErrorGuidance(this: AgentSession, event: AgentEvent): void {\n\tif (event.type !== \"message_start\" && event.type !== \"message_update\" && event.type !== \"message_end\") return;\n\tif (event.message.role !== \"assistant\") return;\n\n\tconst assistantMessage = event.message as AssistantMessage;\n\tif (assistantMessage.stopReason !== \"error\" || !assistantMessage.errorMessage) return;\n\n\tassistantMessage.errorMessage = formatCodexProviderError(assistantMessage.provider, assistantMessage.errorMessage);\n}\n\n/** Resolve the pending retry promise */\n\nexport function _resolveRetry(this: AgentSession): void {\n\tif (this._retryResolve) {\n\t\tthis._retryResolve();\n\t\tthis._retryResolve = undefined;\n\t\tthis._retryPromise = undefined;\n\t}\n}\n\n/** Extract text content from a message */\n\nexport function _getUserMessageText(this: AgentSession, message: Message): string {\n\tif (message.role !== \"user\") return \"\";\n\tconst content = message.content;\n\tif (typeof content === \"string\") return content;\n\tconst textBlocks = content.filter((c) => c.type === \"text\");\n\treturn textBlocks.map((c) => (c as TextContent).text).join(\"\");\n}\n\n/** Find the last assistant message in agent state (including aborted ones) */\n\nexport function _findLastAssistantMessage(this: AgentSession): AssistantMessage | undefined {\n\tconst messages = this.agent.state.messages;\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst msg = messages[i];\n\t\tif (msg.role === \"assistant\") {\n\t\t\treturn msg as AssistantMessage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function _replaceMessageInPlace(this: AgentSession, target: AgentMessage, replacement: AgentMessage): void {\n\t// Agent-core stores the finalized message object in its state before emitting message_end.\n\t// SessionManager persistence happens later in _processAgentEvent() with event.message.\n\t// Mutating this object in place keeps agent state, later turn/agent events, listeners,\n\t// and the eventual SessionManager.appendMessage(event.message) persistence in sync.\n\tif (target === replacement) {\n\t\treturn;\n\t}\n\n\tconst targetRecord = target as unknown as Record<string, unknown>;\n\tfor (const key of Object.keys(targetRecord)) {\n\t\tdelete targetRecord[key];\n\t}\n\tObject.assign(targetRecord, replacement);\n}\n\n/** Emit extension events based on agent events */\n\nexport async function _emitExtensionEvent(this: AgentSession, event: AgentEvent): Promise<void> {\n\tif (event.type === \"agent_start\") {\n\t\tthis._turnIndex = 0;\n\t\tawait this._extensionRunner.emit({ type: \"agent_start\" });\n\t} else if (event.type === \"agent_end\") {\n\t\tawait this._extensionRunner.emit({ type: \"agent_end\", messages: event.messages });\n\t} else if (event.type === \"turn_start\") {\n\t\tconst extensionEvent: TurnStartEvent = {\n\t\t\ttype: \"turn_start\",\n\t\t\tturnIndex: this._turnIndex,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"turn_end\") {\n\t\tconst extensionEvent: TurnEndEvent = {\n\t\t\ttype: \"turn_end\",\n\t\t\tturnIndex: this._turnIndex,\n\t\t\tmessage: event.message,\n\t\t\ttoolResults: event.toolResults,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t\tthis._turnIndex++;\n\t} else if (event.type === \"message_start\") {\n\t\tconst extensionEvent: MessageStartEvent = {\n\t\t\ttype: \"message_start\",\n\t\t\tmessage: event.message,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"message_update\") {\n\t\tconst extensionEvent: MessageUpdateEvent = {\n\t\t\ttype: \"message_update\",\n\t\t\tassistantMessageEvent: event.assistantMessageEvent,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"message_end\") {\n\t\tconst extensionEvent: MessageEndEvent = {\n\t\t\ttype: \"message_end\",\n\t\t\tmessage: event.message,\n\t\t};\n\t\tconst replacement = await this._extensionRunner.emitMessageEnd(extensionEvent);\n\t\tif (replacement) {\n\t\t\tthis._replaceMessageInPlace(event.message, normalizeMessageContent(replacement));\n\t\t}\n\t} else if (event.type === \"tool_execution_start\") {\n\t\tconst extensionEvent: ToolExecutionStartEvent = {\n\t\t\ttype: \"tool_execution_start\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\targs: event.args,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"tool_execution_update\") {\n\t\tconst extensionEvent: ToolExecutionUpdateEvent = {\n\t\t\ttype: \"tool_execution_update\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\targs: event.args,\n\t\t\tpartialResult: event.partialResult,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t} else if (event.type === \"tool_execution_end\") {\n\t\tconst extensionEvent: ToolExecutionEndEvent = {\n\t\t\ttype: \"tool_execution_end\",\n\t\t\ttoolCallId: event.toolCallId,\n\t\t\ttoolName: event.toolName,\n\t\t\tresult: event.result,\n\t\t\tisError: event.isError,\n\t\t};\n\t\tawait this._extensionRunner.emit(extensionEvent);\n\t}\n}\n\n/**\n * Subscribe to agent events.\n * Session persistence is handled internally (saves messages on message_end).\n * Multiple listeners can be added. Returns unsubscribe function for this listener.\n */\n\nexport function subscribe(this: AgentSession, listener: AgentSessionEventListener): () => void {\n\tthis._eventListeners.push(listener);\n\n\t// Return unsubscribe function for this specific listener\n\treturn () => {\n\t\tconst index = this._eventListeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tthis._eventListeners.splice(index, 1);\n\t\t}\n\t};\n}\n\n/** Disconnect from agent events during disposal. */\nexport function _disconnectFromAgent(this: AgentSession): void {\n\tif (this._unsubscribeAgent) {\n\t\tthis._unsubscribeAgent();\n\t\tthis._unsubscribeAgent = undefined;\n\t}\n}\n\n/**\n * Remove all listeners and disconnect from agent.\n * Call this when completely done with the session.\n */\n\nexport function dispose(this: AgentSession): void {\n\t// Fail closed while protected input remains queued, or flush a consumed\n\t// reconciliation before invalidation can discard its recovery state.\n\tprepareProtectedStreamingCustomMessagesForDisposal(this);\n\tthis._extensionRunner.invalidate(STALE_EXTENSION_CONTEXT_MESSAGE);\n\tdisposeSessionAsyncJobManager(this._asyncJobManager, this._asyncJobManagerSessionId);\n\tthis._disconnectFromAgent();\n\tthis._eventListeners = [];\n\tcleanupSessionResources(this.sessionId);\n\t// Last: an async spill writer started by this session holds its own lease, so\n\t// releasing here stops protecting a tree nothing is using without cutting a\n\t// writer that outlived the session object.\n\tthis._tempStorageLease?.release();\n\tthis._tempStorageLease = undefined;\n}\n\n// =========================================================================\n// Read-only State Access\n// =========================================================================\n\n/** Full agent state */\n\nexport const agentSessionEventsMethods = {\n\t_emit,\n\t_emitQueueUpdate,\n\t_handleAgentEvent,\n\t_createRetryPromiseForAgentEnd,\n\t_findLastAssistantInMessages,\n\t_processAgentEvent,\n\t_applyInterruptAbortMessage,\n\t_applyProviderErrorGuidance,\n\t_resolveRetry,\n\t_getUserMessageText,\n\t_findLastAssistantMessage,\n\t_replaceMessageInPlace,\n\t_emitExtensionEvent,\n\tsubscribe,\n\t_disconnectFromAgent,\n\tdispose,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-extension-bindings.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-extension-bindings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,wBAAsB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBnG;AAED,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnH;AAED,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,KAAK,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;CACvB,CAAC,CAwBD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAOzF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAQzF;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAExE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAiBzE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAuIpF;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BnG;AAMD;;;GAGG;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;CAUhD,CAAC"}
1
+ {"version":3,"file":"agent-session-extension-bindings.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-extension-bindings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,wBAAsB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBnG;AAED,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnH;AAED,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,KAAK,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;CACvB,CAAC,CAwBD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAOzF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAQzF;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAExE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAiBzE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAuIpF;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BnG;AAMD;;;GAGG;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;CAUhD,CAAC"}
@@ -233,10 +233,12 @@ export function _bindExtensionCore(runner) {
233
233
  }
234
234
  export async function reload(options) {
235
235
  const reason = options?.reason ?? "reload";
236
- const previousFlagValues = this._extensionRunner.getExplicitFlagValues();
236
+ const oldRunner = this._extensionRunner;
237
+ const previousFlagValues = oldRunner.getExplicitFlagValues();
237
238
  if (reason === "reload") {
238
- await emitSessionShutdownEvent(this._extensionRunner, { type: "session_shutdown", reason: "reload" });
239
+ await emitSessionShutdownEvent(oldRunner, { type: "session_shutdown", reason: "reload" });
239
240
  }
241
+ oldRunner.invalidate();
240
242
  await this.settingsManager.reload();
241
243
  resetApiProviders();
242
244
  await this._resourceLoader.reload();
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-extension-bindings.js","sourceRoot":"","sources":["../../src/core/agent-session-extension-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import { basename, dirname } from \"node:path\";\nimport { resetApiProviders } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { recoverProtectedStreamingCustomMessages } from \"./agent-session-persistent-custom-messages.ts\";\nimport type { AgentSessionReloadOptions, ExtensionBindings } from \"./agent-session-types.ts\";\nimport type { ExtensionRunner } from \"./extensions/index.ts\";\nimport { emitSessionShutdownEvent } from \"./extensions/runner.ts\";\nimport type { PathMetadata } from \"./package-manager.ts\";\nimport type { ResourceExtensionPaths } from \"./resource-loader.ts\";\nimport type { SlashCommandInfo } from \"./slash-commands.ts\";\n\nexport async function bindExtensions(this: AgentSession, bindings: ExtensionBindings): Promise<void> {\n\tif (bindings.uiContext !== undefined) {\n\t\tthis._extensionUIContext = bindings.uiContext;\n\t}\n\tif (bindings.mode !== undefined) {\n\t\tthis._extensionMode = bindings.mode;\n\t}\n\tif (bindings.commandContextActions !== undefined) {\n\t\tthis._extensionCommandContextActions = bindings.commandContextActions;\n\t}\n\tif (bindings.shutdownHandler !== undefined) {\n\t\tthis._extensionShutdownHandler = bindings.shutdownHandler;\n\t}\n\tif (bindings.onError !== undefined) {\n\t\tthis._extensionErrorListener = bindings.onError;\n\t}\n\n\tthis._applyExtensionBindings(this._extensionRunner);\n\tawait this._extensionRunner.emit(this._sessionStartEvent);\n\tawait this.extendResourcesFromExtensions(this._sessionStartEvent.reason === \"reload\" ? \"reload\" : \"startup\");\n\tif (recoverProtectedStreamingCustomMessages(this) > 0) {\n\t\tawait this._continueQueuedAgentMessages();\n\t}\n}\n\nexport async function extendResourcesFromExtensions(this: AgentSession, reason: \"startup\" | \"reload\"): Promise<void> {\n\tif (!this._extensionRunner.hasHandlers(\"resources_discover\")) {\n\t\treturn;\n\t}\n\n\tconst { skillPaths, promptPaths, themePaths } = await this._extensionRunner.emitResourcesDiscover(this._cwd, reason);\n\n\tif (skillPaths.length === 0 && promptPaths.length === 0 && themePaths.length === 0) {\n\t\treturn;\n\t}\n\n\tconst extensionPaths: ResourceExtensionPaths = {\n\t\tskillPaths: this.buildExtensionResourcePaths(skillPaths),\n\t\tpromptPaths: this.buildExtensionResourcePaths(promptPaths),\n\t\tthemePaths: this.buildExtensionResourcePaths(themePaths),\n\t};\n\n\tawait this._resourceLoader.extendResources(extensionPaths);\n\tthis._baseSystemPrompt = this._rebuildSystemPrompt(this.getActiveToolNames());\n\tthis.agent.state.systemPrompt = this._systemPromptOverride ?? this._baseSystemPrompt;\n}\n\nexport function buildExtensionResourcePaths(\n\tthis: AgentSession,\n\tentries: Array<{ path: string; extensionPath: string }>,\n): Array<{\n\tpath: string;\n\tmetadata: PathMetadata;\n}> {\n\treturn entries.map((entry) => {\n\t\tconst extensions = this._resourceLoader?.getExtensions().extensions ?? [];\n\t\tconst extension = extensions.find(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.path === entry.extensionPath ||\n\t\t\t\tcandidate.resolvedPath === entry.extensionPath ||\n\t\t\t\tcandidate.sourceInfo.path === entry.extensionPath,\n\t\t);\n\t\tconst sourceInfo = extension?.sourceInfo;\n\t\tconst source = sourceInfo?.source ?? this.getExtensionSourceLabel(entry.extensionPath);\n\t\tconst baseDir =\n\t\t\tsourceInfo?.baseDir ?? (entry.extensionPath.startsWith(\"<\") ? undefined : dirname(entry.extensionPath));\n\t\treturn {\n\t\t\tpath: entry.path,\n\t\t\tmetadata: {\n\t\t\t\tsource,\n\t\t\t\tscope: sourceInfo?.scope ?? \"temporary\",\n\t\t\t\torigin: sourceInfo?.origin ?? \"top-level\",\n\t\t\t\tbaseDir,\n\t\t\t\tconfigurationOrigin: sourceInfo?.configurationOrigin,\n\t\t\t},\n\t\t};\n\t});\n}\n\nexport function getExtensionSourceLabel(this: AgentSession, extensionPath: string): string {\n\tif (extensionPath.startsWith(\"<\")) {\n\t\treturn `extension:${extensionPath.replace(/[<>]/g, \"\")}`;\n\t}\n\tconst base = basename(extensionPath);\n\tconst name = base.replace(/\\.(ts|js)$/, \"\");\n\treturn `extension:${name}`;\n}\n\nexport function _applyExtensionBindings(this: AgentSession, runner: ExtensionRunner): void {\n\trunner.setUIContext(this._extensionUIContext, this._extensionMode);\n\trunner.bindCommandContext(this._extensionCommandContextActions);\n\n\tthis._extensionErrorUnsubscriber?.();\n\tthis._extensionErrorUnsubscriber = this._extensionErrorListener\n\t\t? runner.onError(this._extensionErrorListener)\n\t\t: undefined;\n}\n\nexport function refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tthis._refreshCurrentModelFromRegistry();\n}\n\nexport function _refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tconst currentModel = this.model;\n\tif (!currentModel) {\n\t\treturn;\n\t}\n\n\tconst refreshedModel = this._modelRuntime.getModel(currentModel.provider, currentModel.id);\n\tif (!refreshedModel || refreshedModel === currentModel) {\n\t\treturn;\n\t}\n\n\tconst previousModel = currentModel;\n\tconst previousThinkingLevel = this.thinkingLevel;\n\tthis.agent.state.model = refreshedModel;\n\tthis.setThinkingLevel(previousThinkingLevel);\n\tthis._refreshBaseSystemPromptFromActiveTools();\n\tthis._emit({ type: \"model_changed\", model: refreshedModel, previousModel, source: \"restore\" });\n}\n\nexport function _bindExtensionCore(this: AgentSession, runner: ExtensionRunner): void {\n\tconst getCommands = (): SlashCommandInfo[] => {\n\t\tconst extensionCommands: SlashCommandInfo[] = runner.getRegisteredCommands().map((command) => ({\n\t\t\tname: command.invocationName,\n\t\t\tdescription: command.description,\n\t\t\tsource: \"extension\",\n\t\t\tsourceInfo: command.sourceInfo,\n\t\t}));\n\n\t\tconst templates: SlashCommandInfo[] = this.promptTemplates.map((template) => ({\n\t\t\tname: template.name,\n\t\t\tdescription: template.description,\n\t\t\tsource: \"prompt\",\n\t\t\tsourceInfo: template.sourceInfo,\n\t\t}));\n\n\t\tconst skills: SlashCommandInfo[] = this._resourceLoader.getSkills().skills.map((skill) => ({\n\t\t\tname: `skill:${skill.name}`,\n\t\t\tdescription: skill.description,\n\t\t\tsource: \"skill\",\n\t\t\tsourceInfo: skill.sourceInfo,\n\t\t}));\n\n\t\treturn [...extensionCommands, ...templates, ...skills];\n\t};\n\n\trunner.bindCore(\n\t\t{\n\t\t\tsendMessage: (message, options) => {\n\t\t\t\tconst delivery = this.sendCustomMessage(message, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_message\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendMessages: (messages, options) => {\n\t\t\t\tconst delivery = this.sendCustomMessages(messages, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_messages\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendUserMessage: (content, options) => {\n\t\t\t\tthis.sendUserMessage(content, options).catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_user_message\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tappendEntry: (customType, data) => {\n\t\t\t\tconst id = this.sessionManager.appendCustomEntry(customType, data);\n\t\t\t\tconst entry = this.sessionManager.getEntry(id);\n\t\t\t\tif (entry) this._emit({ type: \"entry_appended\", entry });\n\t\t\t},\n\t\t\tsetSessionName: (name) => {\n\t\t\t\tthis.setSessionName(name);\n\t\t\t},\n\t\t\tgetSessionName: () => {\n\t\t\t\treturn this.sessionManager.getSessionName();\n\t\t\t},\n\t\t\tsetLabel: (entryId, label) => {\n\t\t\t\tthis.sessionManager.appendLabelChange(entryId, label);\n\t\t\t},\n\t\t\tgetActiveTools: () => this.getActiveToolNames(),\n\t\t\tgetAllTools: () => this.getAllTools(),\n\t\t\tsetActiveTools: (toolNames) => this.setActiveToolsByName(toolNames),\n\t\t\trefreshTools: () => this._refreshToolRegistry(),\n\t\t\tgetCommands,\n\t\t\tsetModel: async (model) => {\n\t\t\t\tif (!this.modelRuntime.hasConfiguredAuth(model.provider)) return false;\n\t\t\t\tawait this.setModel(model);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tsetThinkingLevel: (level) => this.setThinkingLevel(level),\n\t\t},\n\t\t{\n\t\t\tgetModel: () => this.model,\n\t\t\t// Read through the public accessor, not `_scopedModels`: in the isolated\n\t\t\t// engine the host-side facade session has `scopedModels` redefined by\n\t\t\t// RemoteModelCatalog to the engine's catalogue, and the private field it\n\t\t\t// shadows is never refreshed.\n\t\t\tgetScopedModels: () => this.scopedModels,\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tisIdle: () => !this.isStreaming,\n\t\t\tisProjectTrusted: () => this.settingsManager.isProjectTrusted(),\n\t\t\tgetSignal: () => this.agent.signal,\n\t\t\tabort: () => this.abort(),\n\t\t\thasPendingMessages: () => this.pendingMessageCount > 0,\n\t\t\tshutdown: () => {\n\t\t\t\tthis._extensionShutdownHandler?.();\n\t\t\t},\n\t\t\tgetContextUsage: () => this.getContextUsage(),\n\t\t\tcompact: (options) => {\n\t\t\t\tvoid (async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.compact({\n\t\t\t\t\t\t\t...(options?.compression_ratio === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { compression_ratio: options.compression_ratio }),\n\t\t\t\t\t\t\t...(options?.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t\t\t\t\t...(options?.query === undefined ? {} : { query: options.query }),\n\t\t\t\t\t\t});\n\t\t\t\t\t\toptions?.onComplete?.(result);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\toptions?.onError?.(err);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t},\n\t\t\tgetSystemPrompt: () => this.systemPrompt,\n\t\t\tgetSystemPromptOptions: () => this._baseSystemPromptOptions,\n\t\t},\n\t\t{\n\t\t\tregisterProvider: (providerOrName, config) => {\n\t\t\t\tif (typeof providerOrName === \"string\") this._modelRuntime.registerProvider(providerOrName, config!);\n\t\t\t\telse this._modelRuntime.registerNativeProvider(providerOrName);\n\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t},\n\t\t\tunregisterProvider: (name) => {\n\t\t\t\tthis._modelRuntime.unregisterProvider(name);\n\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t},\n\t\t},\n\t);\n}\n\nexport async function reload(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\tconst reason = options?.reason ?? \"reload\";\n\tconst previousFlagValues = this._extensionRunner.getExplicitFlagValues();\n\tif (reason === \"reload\") {\n\t\tawait emitSessionShutdownEvent(this._extensionRunner, { type: \"session_shutdown\", reason: \"reload\" });\n\t}\n\tawait this.settingsManager.reload();\n\tresetApiProviders();\n\tawait this._resourceLoader.reload();\n\tthis._buildRuntime({\n\t\tactiveToolNames: this.getActiveToolNames(),\n\t\tflagValues: previousFlagValues,\n\t\tincludeAllExtensionTools: true,\n\t});\n\n\t// Runtime-dependent state must be refreshed here so newly loaded extensions\n\t// observe it during session_start rather than only after reload() resolves.\n\tawait options?.beforeSessionStart?.();\n\n\tconst hasBindings =\n\t\tthis._extensionUIContext ||\n\t\tthis._extensionCommandContextActions ||\n\t\tthis._extensionShutdownHandler ||\n\t\tthis._extensionErrorListener;\n\tif (hasBindings) {\n\t\tawait this._extensionRunner.emit({ type: \"session_start\", reason });\n\t\tawait this.extendResourcesFromExtensions(reason);\n\t}\n}\n\n// =========================================================================\n// Auto-Retry\n// =========================================================================\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\n\nexport const agentSessionExtensionBindingsMethods = {\n\tbindExtensions,\n\textendResourcesFromExtensions,\n\tbuildExtensionResourcePaths,\n\tgetExtensionSourceLabel,\n\t_applyExtensionBindings,\n\trefreshCurrentModelFromRegistry,\n\t_refreshCurrentModelFromRegistry,\n\t_bindExtensionCore,\n\treload,\n};\n"]}
1
+ {"version":3,"file":"agent-session-extension-bindings.js","sourceRoot":"","sources":["../../src/core/agent-session-extension-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import { basename, dirname } from \"node:path\";\nimport { resetApiProviders } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { recoverProtectedStreamingCustomMessages } from \"./agent-session-persistent-custom-messages.ts\";\nimport type { AgentSessionReloadOptions, ExtensionBindings } from \"./agent-session-types.ts\";\nimport type { ExtensionRunner } from \"./extensions/index.ts\";\nimport { emitSessionShutdownEvent } from \"./extensions/runner.ts\";\nimport type { PathMetadata } from \"./package-manager.ts\";\nimport type { ResourceExtensionPaths } from \"./resource-loader.ts\";\nimport type { SlashCommandInfo } from \"./slash-commands.ts\";\n\nexport async function bindExtensions(this: AgentSession, bindings: ExtensionBindings): Promise<void> {\n\tif (bindings.uiContext !== undefined) {\n\t\tthis._extensionUIContext = bindings.uiContext;\n\t}\n\tif (bindings.mode !== undefined) {\n\t\tthis._extensionMode = bindings.mode;\n\t}\n\tif (bindings.commandContextActions !== undefined) {\n\t\tthis._extensionCommandContextActions = bindings.commandContextActions;\n\t}\n\tif (bindings.shutdownHandler !== undefined) {\n\t\tthis._extensionShutdownHandler = bindings.shutdownHandler;\n\t}\n\tif (bindings.onError !== undefined) {\n\t\tthis._extensionErrorListener = bindings.onError;\n\t}\n\n\tthis._applyExtensionBindings(this._extensionRunner);\n\tawait this._extensionRunner.emit(this._sessionStartEvent);\n\tawait this.extendResourcesFromExtensions(this._sessionStartEvent.reason === \"reload\" ? \"reload\" : \"startup\");\n\tif (recoverProtectedStreamingCustomMessages(this) > 0) {\n\t\tawait this._continueQueuedAgentMessages();\n\t}\n}\n\nexport async function extendResourcesFromExtensions(this: AgentSession, reason: \"startup\" | \"reload\"): Promise<void> {\n\tif (!this._extensionRunner.hasHandlers(\"resources_discover\")) {\n\t\treturn;\n\t}\n\n\tconst { skillPaths, promptPaths, themePaths } = await this._extensionRunner.emitResourcesDiscover(this._cwd, reason);\n\n\tif (skillPaths.length === 0 && promptPaths.length === 0 && themePaths.length === 0) {\n\t\treturn;\n\t}\n\n\tconst extensionPaths: ResourceExtensionPaths = {\n\t\tskillPaths: this.buildExtensionResourcePaths(skillPaths),\n\t\tpromptPaths: this.buildExtensionResourcePaths(promptPaths),\n\t\tthemePaths: this.buildExtensionResourcePaths(themePaths),\n\t};\n\n\tawait this._resourceLoader.extendResources(extensionPaths);\n\tthis._baseSystemPrompt = this._rebuildSystemPrompt(this.getActiveToolNames());\n\tthis.agent.state.systemPrompt = this._systemPromptOverride ?? this._baseSystemPrompt;\n}\n\nexport function buildExtensionResourcePaths(\n\tthis: AgentSession,\n\tentries: Array<{ path: string; extensionPath: string }>,\n): Array<{\n\tpath: string;\n\tmetadata: PathMetadata;\n}> {\n\treturn entries.map((entry) => {\n\t\tconst extensions = this._resourceLoader?.getExtensions().extensions ?? [];\n\t\tconst extension = extensions.find(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.path === entry.extensionPath ||\n\t\t\t\tcandidate.resolvedPath === entry.extensionPath ||\n\t\t\t\tcandidate.sourceInfo.path === entry.extensionPath,\n\t\t);\n\t\tconst sourceInfo = extension?.sourceInfo;\n\t\tconst source = sourceInfo?.source ?? this.getExtensionSourceLabel(entry.extensionPath);\n\t\tconst baseDir =\n\t\t\tsourceInfo?.baseDir ?? (entry.extensionPath.startsWith(\"<\") ? undefined : dirname(entry.extensionPath));\n\t\treturn {\n\t\t\tpath: entry.path,\n\t\t\tmetadata: {\n\t\t\t\tsource,\n\t\t\t\tscope: sourceInfo?.scope ?? \"temporary\",\n\t\t\t\torigin: sourceInfo?.origin ?? \"top-level\",\n\t\t\t\tbaseDir,\n\t\t\t\tconfigurationOrigin: sourceInfo?.configurationOrigin,\n\t\t\t},\n\t\t};\n\t});\n}\n\nexport function getExtensionSourceLabel(this: AgentSession, extensionPath: string): string {\n\tif (extensionPath.startsWith(\"<\")) {\n\t\treturn `extension:${extensionPath.replace(/[<>]/g, \"\")}`;\n\t}\n\tconst base = basename(extensionPath);\n\tconst name = base.replace(/\\.(ts|js)$/, \"\");\n\treturn `extension:${name}`;\n}\n\nexport function _applyExtensionBindings(this: AgentSession, runner: ExtensionRunner): void {\n\trunner.setUIContext(this._extensionUIContext, this._extensionMode);\n\trunner.bindCommandContext(this._extensionCommandContextActions);\n\n\tthis._extensionErrorUnsubscriber?.();\n\tthis._extensionErrorUnsubscriber = this._extensionErrorListener\n\t\t? runner.onError(this._extensionErrorListener)\n\t\t: undefined;\n}\n\nexport function refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tthis._refreshCurrentModelFromRegistry();\n}\n\nexport function _refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tconst currentModel = this.model;\n\tif (!currentModel) {\n\t\treturn;\n\t}\n\n\tconst refreshedModel = this._modelRuntime.getModel(currentModel.provider, currentModel.id);\n\tif (!refreshedModel || refreshedModel === currentModel) {\n\t\treturn;\n\t}\n\n\tconst previousModel = currentModel;\n\tconst previousThinkingLevel = this.thinkingLevel;\n\tthis.agent.state.model = refreshedModel;\n\tthis.setThinkingLevel(previousThinkingLevel);\n\tthis._refreshBaseSystemPromptFromActiveTools();\n\tthis._emit({ type: \"model_changed\", model: refreshedModel, previousModel, source: \"restore\" });\n}\n\nexport function _bindExtensionCore(this: AgentSession, runner: ExtensionRunner): void {\n\tconst getCommands = (): SlashCommandInfo[] => {\n\t\tconst extensionCommands: SlashCommandInfo[] = runner.getRegisteredCommands().map((command) => ({\n\t\t\tname: command.invocationName,\n\t\t\tdescription: command.description,\n\t\t\tsource: \"extension\",\n\t\t\tsourceInfo: command.sourceInfo,\n\t\t}));\n\n\t\tconst templates: SlashCommandInfo[] = this.promptTemplates.map((template) => ({\n\t\t\tname: template.name,\n\t\t\tdescription: template.description,\n\t\t\tsource: \"prompt\",\n\t\t\tsourceInfo: template.sourceInfo,\n\t\t}));\n\n\t\tconst skills: SlashCommandInfo[] = this._resourceLoader.getSkills().skills.map((skill) => ({\n\t\t\tname: `skill:${skill.name}`,\n\t\t\tdescription: skill.description,\n\t\t\tsource: \"skill\",\n\t\t\tsourceInfo: skill.sourceInfo,\n\t\t}));\n\n\t\treturn [...extensionCommands, ...templates, ...skills];\n\t};\n\n\trunner.bindCore(\n\t\t{\n\t\t\tsendMessage: (message, options) => {\n\t\t\t\tconst delivery = this.sendCustomMessage(message, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_message\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendMessages: (messages, options) => {\n\t\t\t\tconst delivery = this.sendCustomMessages(messages, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_messages\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendUserMessage: (content, options) => {\n\t\t\t\tthis.sendUserMessage(content, options).catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_user_message\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tappendEntry: (customType, data) => {\n\t\t\t\tconst id = this.sessionManager.appendCustomEntry(customType, data);\n\t\t\t\tconst entry = this.sessionManager.getEntry(id);\n\t\t\t\tif (entry) this._emit({ type: \"entry_appended\", entry });\n\t\t\t},\n\t\t\tsetSessionName: (name) => {\n\t\t\t\tthis.setSessionName(name);\n\t\t\t},\n\t\t\tgetSessionName: () => {\n\t\t\t\treturn this.sessionManager.getSessionName();\n\t\t\t},\n\t\t\tsetLabel: (entryId, label) => {\n\t\t\t\tthis.sessionManager.appendLabelChange(entryId, label);\n\t\t\t},\n\t\t\tgetActiveTools: () => this.getActiveToolNames(),\n\t\t\tgetAllTools: () => this.getAllTools(),\n\t\t\tsetActiveTools: (toolNames) => this.setActiveToolsByName(toolNames),\n\t\t\trefreshTools: () => this._refreshToolRegistry(),\n\t\t\tgetCommands,\n\t\t\tsetModel: async (model) => {\n\t\t\t\tif (!this.modelRuntime.hasConfiguredAuth(model.provider)) return false;\n\t\t\t\tawait this.setModel(model);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tsetThinkingLevel: (level) => this.setThinkingLevel(level),\n\t\t},\n\t\t{\n\t\t\tgetModel: () => this.model,\n\t\t\t// Read through the public accessor, not `_scopedModels`: in the isolated\n\t\t\t// engine the host-side facade session has `scopedModels` redefined by\n\t\t\t// RemoteModelCatalog to the engine's catalogue, and the private field it\n\t\t\t// shadows is never refreshed.\n\t\t\tgetScopedModels: () => this.scopedModels,\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tisIdle: () => !this.isStreaming,\n\t\t\tisProjectTrusted: () => this.settingsManager.isProjectTrusted(),\n\t\t\tgetSignal: () => this.agent.signal,\n\t\t\tabort: () => this.abort(),\n\t\t\thasPendingMessages: () => this.pendingMessageCount > 0,\n\t\t\tshutdown: () => {\n\t\t\t\tthis._extensionShutdownHandler?.();\n\t\t\t},\n\t\t\tgetContextUsage: () => this.getContextUsage(),\n\t\t\tcompact: (options) => {\n\t\t\t\tvoid (async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.compact({\n\t\t\t\t\t\t\t...(options?.compression_ratio === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { compression_ratio: options.compression_ratio }),\n\t\t\t\t\t\t\t...(options?.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t\t\t\t\t...(options?.query === undefined ? {} : { query: options.query }),\n\t\t\t\t\t\t});\n\t\t\t\t\t\toptions?.onComplete?.(result);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\toptions?.onError?.(err);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t},\n\t\t\tgetSystemPrompt: () => this.systemPrompt,\n\t\t\tgetSystemPromptOptions: () => this._baseSystemPromptOptions,\n\t\t},\n\t\t{\n\t\t\tregisterProvider: (providerOrName, config) => {\n\t\t\t\tif (typeof providerOrName === \"string\") this._modelRuntime.registerProvider(providerOrName, config!);\n\t\t\t\telse this._modelRuntime.registerNativeProvider(providerOrName);\n\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t},\n\t\t\tunregisterProvider: (name) => {\n\t\t\t\tthis._modelRuntime.unregisterProvider(name);\n\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t},\n\t\t},\n\t);\n}\n\nexport async function reload(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\tconst reason = options?.reason ?? \"reload\";\n\tconst oldRunner = this._extensionRunner;\n\tconst previousFlagValues = oldRunner.getExplicitFlagValues();\n\tif (reason === \"reload\") {\n\t\tawait emitSessionShutdownEvent(oldRunner, { type: \"session_shutdown\", reason: \"reload\" });\n\t}\n\toldRunner.invalidate();\n\tawait this.settingsManager.reload();\n\tresetApiProviders();\n\tawait this._resourceLoader.reload();\n\tthis._buildRuntime({\n\t\tactiveToolNames: this.getActiveToolNames(),\n\t\tflagValues: previousFlagValues,\n\t\tincludeAllExtensionTools: true,\n\t});\n\n\t// Runtime-dependent state must be refreshed here so newly loaded extensions\n\t// observe it during session_start rather than only after reload() resolves.\n\tawait options?.beforeSessionStart?.();\n\n\tconst hasBindings =\n\t\tthis._extensionUIContext ||\n\t\tthis._extensionCommandContextActions ||\n\t\tthis._extensionShutdownHandler ||\n\t\tthis._extensionErrorListener;\n\tif (hasBindings) {\n\t\tawait this._extensionRunner.emit({ type: \"session_start\", reason });\n\t\tawait this.extendResourcesFromExtensions(reason);\n\t}\n}\n\n// =========================================================================\n// Auto-Retry\n// =========================================================================\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\n\nexport const agentSessionExtensionBindingsMethods = {\n\tbindExtensions,\n\textendResourcesFromExtensions,\n\tbuildExtensionResourcePaths,\n\tgetExtensionSourceLabel,\n\t_applyExtensionBindings,\n\trefreshCurrentModelFromRegistry,\n\t_refreshCurrentModelFromRegistry,\n\t_bindExtensionCore,\n\treload,\n};\n"]}
@@ -38,6 +38,8 @@ export interface VerbatimCompactionApplyOptions {
38
38
  */
39
39
  allowSmallRegion?: boolean;
40
40
  }
41
+ /** Outcome of an automatic compaction admission and persistence attempt. */
42
+ export type AutoCompactionRunOutcome = "compacted" | "not_compactable" | "deferred" | "failed";
41
43
  export interface ExtensionResourcePathEntry {
42
44
  path: string;
43
45
  extensionPath: string;
@@ -109,7 +111,6 @@ export interface AgentSessionMethodSurface extends AgentSessionQueuePauseControl
109
111
  _emitExtensionEvent(event: AgentEvent): Promise<void>;
110
112
  subscribe(listener: AgentSessionEventListener): () => void;
111
113
  _disconnectFromAgent(): void;
112
- _reconnectToAgent(): void;
113
114
  dispose(): void;
114
115
  getActiveToolNames(): string[];
115
116
  getAllTools(): ToolInfo[];
@@ -181,7 +182,7 @@ export interface AgentSessionMethodSurface extends AgentSessionQueuePauseControl
181
182
  _awaitPendingPostCompactionContinuation(): Promise<void>;
182
183
  _resumeAfterAutoCompaction(): Promise<void>;
183
184
  _resumeAfterLengthTruncation(): void;
184
- _runAutoCompaction(reason: "overflow" | "threshold", willRetry: boolean): Promise<void>;
185
+ _runAutoCompaction(reason: "overflow" | "threshold", willRetry: boolean, urgency?: CompactionUrgency): Promise<AutoCompactionRunOutcome>;
185
186
  _preflightPostToolContext(messages: AgentMessage[], signal?: AbortSignal): Promise<AgentMessage[]>;
186
187
  _finishPostToolCompactionPreflight(messages: AgentMessage[]): AgentMessage[];
187
188
  setAutoCompactionEnabled(enabled: boolean): void;
@@ -200,10 +201,14 @@ export interface AgentSessionMethodSurface extends AgentSessionQueuePauseControl
200
201
  _buildRuntime(options: RuntimeBuildOptions): void;
201
202
  reload(options?: AgentSessionReloadOptions): Promise<void>;
202
203
  _isRetryableError(message: AssistantMessage): boolean;
204
+ _isFallbackableError(message: AssistantMessage): boolean;
203
205
  _isEmptyCompletion(message: AssistantMessage): boolean;
204
206
  _isSafetyRefusal(message: AssistantMessage): boolean;
205
207
  _handleRetryableError(message: AssistantMessage): Promise<boolean>;
206
208
  _trySwitchToFallbackModel(message: AssistantMessage): Promise<boolean>;
209
+ _beginFallbackModelScope(): void;
210
+ _clearFallbackModelScope(): void;
211
+ _restoreFallbackModel(): Promise<boolean>;
207
212
  abortRetry(): void;
208
213
  waitForRetry(): Promise<void>;
209
214
  setAutoRetryEnabled(enabled: boolean): void;
@@ -265,6 +270,12 @@ export interface AgentSessionInternalSurface extends AgentSessionMethodSurface,
265
270
  }>;
266
271
  _fallbackModels: string[];
267
272
  _fallbackAttemptedKeys: Set<string>;
273
+ _fallbackBlockedModels: Array<Model<Api>>;
274
+ _fallbackOriginModel: Model<Api> | undefined;
275
+ _fallbackOriginThinkingLevel: ThinkingLevel | undefined;
276
+ _fallbackScopeGeneration: number;
277
+ _fallbackOriginGeneration: number | undefined;
278
+ _fallbackRestoreError: string | undefined;
268
279
  _unsubscribeAgent?: () => void;
269
280
  _eventListeners: AgentSessionEventListener[];
270
281
  _agentEventQueue: Promise<void>;
@@ -293,8 +304,11 @@ export interface AgentSessionInternalSurface extends AgentSessionMethodSurface,
293
304
  _compactionAbortController: AbortController | undefined;
294
305
  _manualCompactionPromise: Promise<VerbatimCompactionResult> | undefined;
295
306
  _autoCompactionAbortController: AbortController | undefined;
307
+ _autoCompactionCompletion: Promise<void> | undefined;
296
308
  _compactionReason: import("./agent-session-types.ts").CompactionReason | undefined;
297
309
  _overflowRecoveryAttempted: boolean;
310
+ _recoverableLengthRecoveryAttempted: boolean;
311
+ _contextOverflowUnresolved: boolean;
298
312
  _branchSummaryAbortController: AbortController | undefined;
299
313
  _retryAbortController: AbortController | undefined;
300
314
  _retryAttempt: number;
@@ -317,6 +331,7 @@ export interface AgentSessionInternalSurface extends AgentSessionMethodSurface,
317
331
  _baseToolsOverride?: Record<string, AgentTool>;
318
332
  _sessionStartEvent: SessionStartEvent;
319
333
  _orchestrationContext?: OrchestrationContext;
334
+ _subagentPolicy?: import("./extensions/index.ts").SubagentChildPolicy;
320
335
  _extensionUIContext?: ExtensionUIContext;
321
336
  _extensionMode: ExtensionMode;
322
337
  _extensionCommandContextActions?: ExtensionCommandContextActions;
@@ -330,10 +345,12 @@ export interface AgentSessionInternalSurface extends AgentSessionMethodSurface,
330
345
  _toolPromptGuidelines: Map<string, string[]>;
331
346
  _baseSystemPrompt: string;
332
347
  _baseSystemPromptOptions: BuildSystemPromptOptions;
348
+ _systemPromptTransform?: (prompt: string) => string;
333
349
  _systemPromptOverride?: string;
334
350
  _lastAssistantMessage: AssistantMessage | undefined;
335
351
  _asyncJobManager: AsyncJobManager;
336
352
  _asyncJobManagerSessionId: symbol;
353
+ _tempStorageLease: import("./tools/session-temp-dir.ts").ProtectedPathLease | undefined;
337
354
  _workflowStageAdmission: import("./workflow-stage-admission.ts").WorkflowStageAdmissionBoundary | undefined;
338
355
  }
339
356
  //# sourceMappingURL=agent-session-methods.d.ts.map