@bastani/atomic 0.9.13-alpha.1 → 0.9.13-alpha.3

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 (1174) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/README.md +36 -18
  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 +33 -0
  10. package/dist/builtin/intercom/README.md +36 -15
  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 +70 -3
  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/foreground-detach-handoff.ts +30 -14
  19. package/dist/builtin/intercom/group.ts +64 -25
  20. package/dist/builtin/intercom/incoming-message-delivery.ts +1 -1
  21. package/dist/builtin/intercom/index-heavy.ts +38 -5
  22. package/dist/builtin/intercom/index.ts +8 -4
  23. package/dist/builtin/intercom/intercom-tool.ts +83 -6
  24. package/dist/builtin/intercom/intercom-utils.ts +3 -6
  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/result-renderers.ts +1 -1
  28. package/dist/builtin/intercom/runtime-group.ts +13 -0
  29. package/dist/builtin/intercom/session-target.ts +1 -15
  30. package/dist/builtin/intercom/skills/intercom/SKILL.md +35 -7
  31. package/dist/builtin/intercom/subagent-relay.ts +32 -16
  32. package/dist/builtin/intercom/terminal-ordering-barrier.ts +23 -6
  33. package/dist/builtin/intercom/types.ts +3 -1
  34. package/dist/builtin/intercom/ui/compose.ts +8 -6
  35. package/dist/builtin/intercom/ui/inline-message.ts +7 -5
  36. package/dist/builtin/intercom/ui/session-list.ts +30 -15
  37. package/dist/builtin/mcp/CHANGELOG.md +13 -0
  38. package/dist/builtin/mcp/glimpse-ui.ts +2 -1
  39. package/dist/builtin/mcp/index.ts +1 -11
  40. package/dist/builtin/mcp/mcp-panel.ts +35 -34
  41. package/dist/builtin/mcp/mcp-setup-panel.ts +35 -33
  42. package/dist/builtin/mcp/npx-resolver.ts +3 -2
  43. package/dist/builtin/mcp/package.json +3 -3
  44. package/dist/builtin/mcp/sampling-handler.ts +5 -1
  45. package/dist/builtin/mcp/server-manager.ts +4 -7
  46. package/dist/builtin/subagents/CHANGELOG.md +52 -0
  47. package/dist/builtin/subagents/README.md +140 -383
  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-cleanup.md +1 -1
  51. package/dist/builtin/subagents/prompts/parallel-context-build.md +2 -2
  52. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +4 -4
  53. package/dist/builtin/subagents/prompts/parallel-review.md +1 -1
  54. package/dist/builtin/subagents/prompts/review-loop.md +2 -2
  55. package/dist/builtin/subagents/skills/subagent/SKILL.md +55 -154
  56. package/dist/builtin/subagents/skills/tmux/SKILL.md +1 -1
  57. package/dist/builtin/subagents/src/agents/agent-discovery.ts +1 -29
  58. package/dist/builtin/subagents/src/agents/agent-loaders.ts +1 -40
  59. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +6 -135
  60. package/dist/builtin/subagents/src/agents/agent-management.ts +52 -282
  61. package/dist/builtin/subagents/src/agents/agent-paths.ts +0 -22
  62. package/dist/builtin/subagents/src/agents/agent-types.ts +0 -40
  63. package/dist/builtin/subagents/src/agents/agents.ts +0 -3
  64. package/dist/builtin/subagents/src/agents/identity.ts +2 -4
  65. package/dist/builtin/subagents/src/agents/skills-paths.ts +8 -1
  66. package/dist/builtin/subagents/src/extension/control-notices.ts +2 -3
  67. package/dist/builtin/subagents/src/extension/doctor.ts +4 -36
  68. package/dist/builtin/subagents/src/extension/fanout-child.ts +1 -17
  69. package/dist/builtin/subagents/src/extension/index.ts +18 -77
  70. package/dist/builtin/subagents/src/extension/notification-content.ts +1 -1
  71. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +3 -3
  72. package/dist/builtin/subagents/src/extension/schemas.ts +3 -165
  73. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +0 -2
  74. package/dist/builtin/subagents/src/extension/tool-description.ts +6 -16
  75. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +7 -3
  76. package/dist/builtin/subagents/src/intercom/result-intercom.ts +25 -68
  77. package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +9 -2
  78. package/dist/builtin/subagents/src/runs/{background → foreground}/completion-notification.ts +10 -5
  79. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +0 -5
  80. package/dist/builtin/subagents/src/runs/foreground/execution.ts +1 -4
  81. package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +119 -80
  82. package/dist/builtin/subagents/src/runs/{background → foreground}/notify.ts +58 -22
  83. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +22 -50
  84. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +10 -173
  85. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +9 -4
  86. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +11 -2
  87. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +0 -5
  88. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +39 -22
  89. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +36 -16
  90. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -19
  91. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +1 -14
  92. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +150 -69
  93. package/dist/builtin/subagents/src/runs/inprocess/index.ts +1 -1
  94. package/dist/builtin/subagents/src/runs/inprocess/runner.ts +348 -94
  95. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-api.ts +0 -7
  96. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-core.ts +0 -10
  97. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-projection.ts +3 -110
  98. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-sanitize.ts +1 -7
  99. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +23 -7
  100. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +0 -86
  101. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +1 -1
  102. package/dist/builtin/subagents/src/runs/shared/worktree.ts +7 -2
  103. package/dist/builtin/subagents/src/shared/formatters.ts +5 -61
  104. package/dist/builtin/subagents/src/shared/model-resolution.ts +78 -0
  105. package/dist/builtin/subagents/src/shared/settings.ts +14 -350
  106. package/dist/builtin/subagents/src/shared/status-format.ts +4 -11
  107. package/dist/builtin/subagents/src/shared/types-config.ts +30 -31
  108. package/dist/builtin/subagents/src/shared/types-depth.ts +30 -56
  109. package/dist/builtin/subagents/src/shared/types-nested.ts +127 -0
  110. package/dist/builtin/subagents/src/shared/types-results.ts +11 -66
  111. package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -10
  112. package/dist/builtin/subagents/src/shared/types.ts +1 -1
  113. package/dist/builtin/subagents/src/shared/utils.ts +6 -109
  114. package/dist/builtin/subagents/src/slash/bridge-settlement.ts +87 -0
  115. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +47 -7
  116. package/dist/builtin/subagents/src/slash/slash-bridge.ts +27 -7
  117. package/dist/builtin/subagents/src/slash/slash-commands.ts +44 -99
  118. package/dist/builtin/subagents/src/slash/slash-live-state.ts +1 -92
  119. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +2 -285
  120. package/dist/builtin/subagents/src/tui/render-layout.ts +4 -4
  121. package/dist/builtin/subagents/src/tui/render-progress.ts +89 -0
  122. package/dist/builtin/subagents/src/tui/render-result-compact.ts +43 -71
  123. package/dist/builtin/subagents/src/tui/render-result.ts +41 -99
  124. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -39
  125. package/dist/builtin/subagents/src/tui/render.ts +0 -2
  126. package/dist/builtin/web-access/CHANGELOG.md +14 -0
  127. package/dist/builtin/web-access/chrome-cookies.ts +3 -2
  128. package/dist/builtin/web-access/github-api.ts +7 -6
  129. package/dist/builtin/web-access/github-extract.ts +2 -1
  130. package/dist/builtin/web-access/package.json +3 -3
  131. package/dist/builtin/web-access/subprocess.ts +3 -1
  132. package/dist/builtin/web-access/summary-review.ts +2 -2
  133. package/dist/builtin/web-access/web-search-features.ts +38 -22
  134. package/dist/builtin/web-access/web-search-summary.ts +2 -2
  135. package/dist/builtin/workflows/CHANGELOG.md +57 -0
  136. package/dist/builtin/workflows/README.md +44 -4
  137. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +3 -0
  138. package/dist/builtin/workflows/builtin/ralph-models.ts +25 -20
  139. package/dist/builtin/workflows/builtin/shared-prompts.ts +5 -2
  140. package/dist/builtin/workflows/package.json +2 -2
  141. package/dist/builtin/workflows/src/durable/backend.ts +29 -1
  142. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +123 -28
  143. package/dist/builtin/workflows/src/durable/completed-catalog.ts +230 -23
  144. package/dist/builtin/workflows/src/durable/completed-subtree.ts +22 -7
  145. package/dist/builtin/workflows/src/durable/dbos-backend.ts +42 -24
  146. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +2 -1
  147. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +4 -0
  148. package/dist/builtin/workflows/src/durable/local-command.ts +2 -1
  149. package/dist/builtin/workflows/src/durable/run-timing.ts +28 -7
  150. package/dist/builtin/workflows/src/durable/scoped-backend.ts +4 -0
  151. package/dist/builtin/workflows/src/durable/targeted-inspection.ts +110 -0
  152. package/dist/builtin/workflows/src/durable/types.ts +17 -1
  153. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +3 -1
  154. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +1 -1
  155. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +10 -2
  156. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +2 -2
  157. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +9 -2
  158. package/dist/builtin/workflows/src/engine/runtime.ts +19 -2
  159. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +7 -1
  160. package/dist/builtin/workflows/src/extension/companions.ts +1 -1
  161. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +3 -0
  162. package/dist/builtin/workflows/src/extension/index.bundle.mjs +1624 -596
  163. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +31 -3
  164. package/dist/builtin/workflows/src/extension/mcp.ts +13 -2
  165. package/dist/builtin/workflows/src/extension/render-result.ts +1 -0
  166. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +6 -0
  167. package/dist/builtin/workflows/src/extension/ui-surface.ts +9 -20
  168. package/dist/builtin/workflows/src/extension/wiring.ts +33 -6
  169. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +6 -1
  170. package/dist/builtin/workflows/src/extension/workflow-ports.ts +14 -6
  171. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +11 -6
  172. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +8 -0
  173. package/dist/builtin/workflows/src/extension/workflow-targets.ts +18 -10
  174. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +2 -0
  175. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +31 -16
  176. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +75 -3
  177. package/dist/builtin/workflows/src/extension/workflow-tool.ts +53 -6
  178. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +12 -6
  179. package/dist/builtin/workflows/src/intercom/result-intercom.ts +35 -4
  180. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +5 -1
  181. package/dist/builtin/workflows/src/runs/background/status.ts +15 -0
  182. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +11 -3
  183. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +2 -1
  184. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +26 -2
  185. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +3 -2
  186. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +94 -60
  187. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +1 -1
  188. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +7 -7
  189. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +25 -4
  190. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
  191. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +2 -0
  192. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +142 -4
  193. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +2 -0
  194. package/dist/builtin/workflows/src/runs/foreground/stage-session-heartbeat.ts +88 -0
  195. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +5 -2
  196. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +2 -0
  197. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +5 -3
  198. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +5 -3
  199. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +34 -2
  200. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +23 -6
  201. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +10 -4
  202. package/dist/builtin/workflows/src/shared/store-public-types.ts +4 -2
  203. package/dist/builtin/workflows/src/shared/store-types.ts +1 -1
  204. package/dist/builtin/workflows/src/shared/workflow-artifact-env.ts +21 -0
  205. package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +2 -5
  206. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +37 -2
  207. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +0 -15
  208. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +38 -47
  209. package/dist/builtin/workflows/src/tui/graph-view-input.ts +48 -45
  210. package/dist/builtin/workflows/src/tui/graph-view-layout.ts +266 -0
  211. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +1 -86
  212. package/dist/builtin/workflows/src/tui/graph-view-render.ts +209 -91
  213. package/dist/builtin/workflows/src/tui/graph-view-state.ts +5 -7
  214. package/dist/builtin/workflows/src/tui/graph-view-types.ts +13 -7
  215. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +8 -6
  216. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +2 -1
  217. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +7 -4
  218. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +66 -0
  219. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +1 -0
  220. package/dist/builtin/workflows/src/tui/node-card.ts +1 -1
  221. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +18 -46
  222. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +15 -26
  223. package/dist/builtin/workflows/src/tui/run-detail.ts +25 -12
  224. package/dist/builtin/workflows/src/tui/session-overlays.ts +5 -2
  225. package/dist/builtin/workflows/src/tui/session-picker.ts +27 -0
  226. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +5 -14
  227. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +8 -7
  228. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +12 -3
  229. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +1 -11
  230. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +0 -8
  231. package/dist/builtin/workflows/src/tui/status-list.ts +1 -0
  232. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +2 -6
  233. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -15
  234. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +2 -26
  235. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +1 -0
  236. package/dist/builtin/workflows/src/tui/workflow-status.ts +3 -3
  237. package/dist/bun/split-loader.js +2 -0
  238. package/dist/bun/split-loader.js.map +1 -1
  239. package/dist/cli/args.d.ts.map +1 -1
  240. package/dist/cli/args.js +6 -2
  241. package/dist/cli/args.js.map +1 -1
  242. package/dist/cli/auth-check.d.ts +35 -0
  243. package/dist/cli/auth-check.d.ts.map +1 -0
  244. package/dist/cli/auth-check.js +100 -0
  245. package/dist/cli/auth-check.js.map +1 -0
  246. package/dist/cli/auth-command.d.ts +27 -0
  247. package/dist/cli/auth-command.d.ts.map +1 -0
  248. package/dist/cli/auth-command.js +150 -0
  249. package/dist/cli/auth-command.js.map +1 -0
  250. package/dist/cli/config-selector.js +2 -2
  251. package/dist/cli/config-selector.js.map +1 -1
  252. package/dist/cli/credential-print.d.ts +18 -23
  253. package/dist/cli/credential-print.d.ts.map +1 -1
  254. package/dist/cli/credential-print.js +42 -88
  255. package/dist/cli/credential-print.js.map +1 -1
  256. package/dist/cli/experimental/auth.d.ts +16 -0
  257. package/dist/cli/experimental/auth.d.ts.map +1 -0
  258. package/dist/cli/experimental/auth.js +13 -0
  259. package/dist/cli/experimental/auth.js.map +1 -0
  260. package/dist/cli/experimental/cli.d.ts +6 -0
  261. package/dist/cli/experimental/cli.d.ts.map +1 -0
  262. package/dist/cli/experimental/cli.js +5 -0
  263. package/dist/cli/experimental/cli.js.map +1 -0
  264. package/dist/cli/experimental/command-options.d.ts +17 -0
  265. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  266. package/dist/cli/experimental/command-options.js +35 -0
  267. package/dist/cli/experimental/command-options.js.map +1 -0
  268. package/dist/cli/experimental/command.d.ts +63 -0
  269. package/dist/cli/experimental/command.d.ts.map +1 -0
  270. package/dist/cli/experimental/command.js +127 -0
  271. package/dist/cli/experimental/command.js.map +1 -0
  272. package/dist/cli/experimental/commands/client.d.ts +13 -0
  273. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  274. package/dist/cli/experimental/commands/client.js +25 -0
  275. package/dist/cli/experimental/commands/client.js.map +1 -0
  276. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  277. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  278. package/dist/cli/experimental/commands/pi.js +28 -0
  279. package/dist/cli/experimental/commands/pi.js.map +1 -0
  280. package/dist/cli/experimental/commands/server.d.ts +13 -0
  281. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  282. package/dist/cli/experimental/commands/server.js +25 -0
  283. package/dist/cli/experimental/commands/server.js.map +1 -0
  284. package/dist/cli/experimental/transport-address.d.ts +10 -0
  285. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  286. package/dist/cli/experimental/transport-address.js +38 -0
  287. package/dist/cli/experimental/transport-address.js.map +1 -0
  288. package/dist/cli/session-picker.js +2 -2
  289. package/dist/cli/session-picker.js.map +1 -1
  290. package/dist/cli/startup-ui.d.ts.map +1 -1
  291. package/dist/cli/startup-ui.js +4 -10
  292. package/dist/cli/startup-ui.js.map +1 -1
  293. package/dist/cli.js +2 -0
  294. package/dist/cli.js.map +1 -1
  295. package/dist/client/index.d.ts +3 -0
  296. package/dist/client/index.d.ts.map +1 -0
  297. package/dist/client/index.js +3 -0
  298. package/dist/client/index.js.map +1 -0
  299. package/dist/client/remote-session.d.ts +64 -0
  300. package/dist/client/remote-session.d.ts.map +1 -0
  301. package/dist/client/remote-session.js +351 -0
  302. package/dist/client/remote-session.js.map +1 -0
  303. package/dist/client/transcript.d.ts +12 -0
  304. package/dist/client/transcript.d.ts.map +1 -0
  305. package/dist/client/transcript.js +98 -0
  306. package/dist/client/transcript.js.map +1 -0
  307. package/dist/core/agent-session-auto-compaction.d.ts +17 -13
  308. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  309. package/dist/core/agent-session-auto-compaction.js +146 -64
  310. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  311. package/dist/core/agent-session-bash.d.ts.map +1 -1
  312. package/dist/core/agent-session-bash.js +2 -0
  313. package/dist/core/agent-session-bash.js.map +1 -1
  314. package/dist/core/agent-session-compaction.d.ts +3 -6
  315. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  316. package/dist/core/agent-session-compaction.js +64 -28
  317. package/dist/core/agent-session-compaction.js.map +1 -1
  318. package/dist/core/agent-session-events.d.ts +1 -11
  319. package/dist/core/agent-session-events.d.ts.map +1 -1
  320. package/dist/core/agent-session-events.js +28 -25
  321. package/dist/core/agent-session-events.js.map +1 -1
  322. package/dist/core/agent-session-export.d.ts.map +1 -1
  323. package/dist/core/agent-session-export.js +2 -1
  324. package/dist/core/agent-session-export.js.map +1 -1
  325. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  326. package/dist/core/agent-session-extension-bindings.js +4 -2
  327. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  328. package/dist/core/agent-session-methods.d.ts +14 -6
  329. package/dist/core/agent-session-methods.d.ts.map +1 -1
  330. package/dist/core/agent-session-methods.js.map +1 -1
  331. package/dist/core/agent-session-models.d.ts +1 -0
  332. package/dist/core/agent-session-models.d.ts.map +1 -1
  333. package/dist/core/agent-session-models.js +11 -4
  334. package/dist/core/agent-session-models.js.map +1 -1
  335. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  336. package/dist/core/agent-session-post-tool-compaction.js +22 -6
  337. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  338. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  339. package/dist/core/agent-session-prompt.js +5 -0
  340. package/dist/core/agent-session-prompt.js.map +1 -1
  341. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
  342. package/dist/core/agent-session-runtime-auth.js +3 -0
  343. package/dist/core/agent-session-runtime-auth.js.map +1 -1
  344. package/dist/core/agent-session-summary.d.ts +21 -0
  345. package/dist/core/agent-session-summary.d.ts.map +1 -0
  346. package/dist/core/agent-session-summary.js +156 -0
  347. package/dist/core/agent-session-summary.js.map +1 -0
  348. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  349. package/dist/core/agent-session-tool-hooks.js +25 -14
  350. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  351. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  352. package/dist/core/agent-session-tool-registry.js +4 -4
  353. package/dist/core/agent-session-tool-registry.js.map +1 -1
  354. package/dist/core/agent-session-transfer.d.ts.map +1 -1
  355. package/dist/core/agent-session-transfer.js +0 -2
  356. package/dist/core/agent-session-transfer.js.map +1 -1
  357. package/dist/core/agent-session-tree.d.ts.map +1 -1
  358. package/dist/core/agent-session-tree.js +6 -0
  359. package/dist/core/agent-session-tree.js.map +1 -1
  360. package/dist/core/agent-session-types.d.ts +2 -0
  361. package/dist/core/agent-session-types.d.ts.map +1 -1
  362. package/dist/core/agent-session-types.js.map +1 -1
  363. package/dist/core/agent-session.d.ts +13 -3
  364. package/dist/core/agent-session.d.ts.map +1 -1
  365. package/dist/core/agent-session.js +38 -5
  366. package/dist/core/agent-session.js.map +1 -1
  367. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  368. package/dist/core/atomic-guide-command.js +4 -5
  369. package/dist/core/atomic-guide-command.js.map +1 -1
  370. package/dist/core/auth-storage.d.ts +18 -1
  371. package/dist/core/auth-storage.d.ts.map +1 -1
  372. package/dist/core/auth-storage.js +83 -0
  373. package/dist/core/auth-storage.js.map +1 -1
  374. package/dist/core/bash-executor.d.ts +5 -0
  375. package/dist/core/bash-executor.d.ts.map +1 -1
  376. package/dist/core/bash-executor.js +43 -19
  377. package/dist/core/bash-executor.js.map +1 -1
  378. package/dist/core/builtin-packages.d.ts.map +1 -1
  379. package/dist/core/builtin-packages.js +6 -0
  380. package/dist/core/builtin-packages.js.map +1 -1
  381. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  382. package/dist/core/codex-fast-mode.js +8 -3
  383. package/dist/core/codex-fast-mode.js.map +1 -1
  384. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  385. package/dist/core/compaction/branch-summarization.js +1 -0
  386. package/dist/core/compaction/branch-summarization.js.map +1 -1
  387. package/dist/core/compaction/index.d.ts +1 -0
  388. package/dist/core/compaction/index.d.ts.map +1 -1
  389. package/dist/core/compaction/index.js +1 -0
  390. package/dist/core/compaction/index.js.map +1 -1
  391. package/dist/core/compaction/session-summarization.d.ts +41 -0
  392. package/dist/core/compaction/session-summarization.d.ts.map +1 -0
  393. package/dist/core/compaction/session-summarization.js +97 -0
  394. package/dist/core/compaction/session-summarization.js.map +1 -0
  395. package/dist/core/exec.d.ts.map +1 -1
  396. package/dist/core/exec.js +4 -3
  397. package/dist/core/exec.js.map +1 -1
  398. package/dist/core/extensions/agent-events.d.ts +0 -1
  399. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  400. package/dist/core/extensions/agent-events.js.map +1 -1
  401. package/dist/core/extensions/api-types.d.ts +5 -3
  402. package/dist/core/extensions/api-types.d.ts.map +1 -1
  403. package/dist/core/extensions/api-types.js.map +1 -1
  404. package/dist/core/extensions/context-types.d.ts +15 -0
  405. package/dist/core/extensions/context-types.d.ts.map +1 -1
  406. package/dist/core/extensions/context-types.js.map +1 -1
  407. package/dist/core/extensions/event-results.d.ts +5 -0
  408. package/dist/core/extensions/event-results.d.ts.map +1 -1
  409. package/dist/core/extensions/event-results.js.map +1 -1
  410. package/dist/core/extensions/index.d.ts +2 -1
  411. package/dist/core/extensions/index.d.ts.map +1 -1
  412. package/dist/core/extensions/index.js +1 -0
  413. package/dist/core/extensions/index.js.map +1 -1
  414. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  415. package/dist/core/extensions/loader-api.js +14 -1
  416. package/dist/core/extensions/loader-api.js.map +1 -1
  417. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  418. package/dist/core/extensions/loader-discovery.js +3 -23
  419. package/dist/core/extensions/loader-discovery.js.map +1 -1
  420. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  421. package/dist/core/extensions/loader-runtime.js +20 -3
  422. package/dist/core/extensions/loader-runtime.js.map +1 -1
  423. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  424. package/dist/core/extensions/loader-virtual-modules.js +7 -1
  425. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  426. package/dist/core/extensions/message-types.d.ts +6 -0
  427. package/dist/core/extensions/message-types.d.ts.map +1 -1
  428. package/dist/core/extensions/message-types.js.map +1 -1
  429. package/dist/core/extensions/provider-types.d.ts +9 -3
  430. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  431. package/dist/core/extensions/provider-types.js.map +1 -1
  432. package/dist/core/extensions/runner-registries.d.ts +2 -1
  433. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  434. package/dist/core/extensions/runner-registries.js +3 -0
  435. package/dist/core/extensions/runner-registries.js.map +1 -1
  436. package/dist/core/extensions/runner-ui.d.ts.map +1 -1
  437. package/dist/core/extensions/runner-ui.js +1 -0
  438. package/dist/core/extensions/runner-ui.js.map +1 -1
  439. package/dist/core/extensions/runner.d.ts +2 -1
  440. package/dist/core/extensions/runner.d.ts.map +1 -1
  441. package/dist/core/extensions/runner.js +6 -2
  442. package/dist/core/extensions/runner.js.map +1 -1
  443. package/dist/core/extensions/runtime-types.d.ts +4 -1
  444. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  445. package/dist/core/extensions/runtime-types.js.map +1 -1
  446. package/dist/core/extensions/stale-context.d.ts +5 -0
  447. package/dist/core/extensions/stale-context.d.ts.map +1 -0
  448. package/dist/core/extensions/stale-context.js +11 -0
  449. package/dist/core/extensions/stale-context.js.map +1 -0
  450. package/dist/core/extensions/ui-types.d.ts +16 -11
  451. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  452. package/dist/core/extensions/ui-types.js.map +1 -1
  453. package/dist/core/footer-data-provider.d.ts.map +1 -1
  454. package/dist/core/footer-data-provider.js +3 -2
  455. package/dist/core/footer-data-provider.js.map +1 -1
  456. package/dist/core/index.d.ts +1 -1
  457. package/dist/core/index.d.ts.map +1 -1
  458. package/dist/core/index.js.map +1 -1
  459. package/dist/core/intercom-runtime-group.d.ts +13 -0
  460. package/dist/core/intercom-runtime-group.d.ts.map +1 -0
  461. package/dist/core/intercom-runtime-group.js +23 -0
  462. package/dist/core/intercom-runtime-group.js.map +1 -0
  463. package/dist/core/keybindings.d.ts +44 -4
  464. package/dist/core/keybindings.d.ts.map +1 -1
  465. package/dist/core/model-config.d.ts +39 -5
  466. package/dist/core/model-config.d.ts.map +1 -1
  467. package/dist/core/model-config.js +6 -0
  468. package/dist/core/model-config.js.map +1 -1
  469. package/dist/core/model-registry.d.ts +12 -5
  470. package/dist/core/model-registry.d.ts.map +1 -1
  471. package/dist/core/model-registry.js +20 -12
  472. package/dist/core/model-registry.js.map +1 -1
  473. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  474. package/dist/core/model-resolver-cli.js +46 -14
  475. package/dist/core/model-resolver-cli.js.map +1 -1
  476. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  477. package/dist/core/model-resolver-defaults.js +2 -0
  478. package/dist/core/model-resolver-defaults.js.map +1 -1
  479. package/dist/core/model-resolver-scope.d.ts +2 -0
  480. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  481. package/dist/core/model-resolver-scope.js +12 -9
  482. package/dist/core/model-resolver-scope.js.map +1 -1
  483. package/dist/core/model-resolver.d.ts +1 -1
  484. package/dist/core/model-resolver.d.ts.map +1 -1
  485. package/dist/core/model-resolver.js +1 -1
  486. package/dist/core/model-resolver.js.map +1 -1
  487. package/dist/core/model-runtime-snapshot.d.ts +10 -0
  488. package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
  489. package/dist/core/model-runtime-snapshot.js +14 -1
  490. package/dist/core/model-runtime-snapshot.js.map +1 -1
  491. package/dist/core/model-runtime-streaming.d.ts +3 -1
  492. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  493. package/dist/core/model-runtime-streaming.js +16 -0
  494. package/dist/core/model-runtime-streaming.js.map +1 -1
  495. package/dist/core/model-runtime-types.d.ts +2 -0
  496. package/dist/core/model-runtime-types.d.ts.map +1 -1
  497. package/dist/core/model-runtime-types.js.map +1 -1
  498. package/dist/core/model-runtime.d.ts +37 -10
  499. package/dist/core/model-runtime.d.ts.map +1 -1
  500. package/dist/core/model-runtime.js +312 -113
  501. package/dist/core/model-runtime.js.map +1 -1
  502. package/dist/core/oauth-login.d.ts.map +1 -1
  503. package/dist/core/oauth-login.js +2 -1
  504. package/dist/core/oauth-login.js.map +1 -1
  505. package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -1
  506. package/dist/core/openai-responses-payload-sanitizer.js +18 -2
  507. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  508. package/dist/core/package-manager-git.d.ts.map +1 -1
  509. package/dist/core/package-manager-git.js +56 -10
  510. package/dist/core/package-manager-git.js.map +1 -1
  511. package/dist/core/package-manager-manifest.d.ts +1 -1
  512. package/dist/core/package-manager-manifest.d.ts.map +1 -1
  513. package/dist/core/package-manager-manifest.js +19 -9
  514. package/dist/core/package-manager-manifest.js.map +1 -1
  515. package/dist/core/package-manager-resource-collector.js.map +1 -1
  516. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  517. package/dist/core/package-manager-resource-files.js +1 -2
  518. package/dist/core/package-manager-resource-files.js.map +1 -1
  519. package/dist/core/provider-composer-internal.d.ts +10 -2
  520. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  521. package/dist/core/provider-composer-internal.js +7 -3
  522. package/dist/core/provider-composer-internal.js.map +1 -1
  523. package/dist/core/provider-composer.d.ts.map +1 -1
  524. package/dist/core/provider-composer.js +19 -12
  525. package/dist/core/provider-composer.js.map +1 -1
  526. package/dist/core/provider-display-names.d.ts.map +1 -1
  527. package/dist/core/provider-display-names.js +2 -0
  528. package/dist/core/provider-display-names.js.map +1 -1
  529. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  530. package/dist/core/remote-catalog-provider.js +77 -67
  531. package/dist/core/remote-catalog-provider.js.map +1 -1
  532. package/dist/core/resolve-config-value.d.ts.map +1 -1
  533. package/dist/core/resolve-config-value.js +3 -0
  534. package/dist/core/resolve-config-value.js.map +1 -1
  535. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  536. package/dist/core/resource-loader-context-files.js +13 -5
  537. package/dist/core/resource-loader-context-files.js.map +1 -1
  538. package/dist/core/runtime-credentials.d.ts +5 -5
  539. package/dist/core/runtime-credentials.d.ts.map +1 -1
  540. package/dist/core/runtime-credentials.js +8 -8
  541. package/dist/core/runtime-credentials.js.map +1 -1
  542. package/dist/core/session-manager-core.d.ts +3 -1
  543. package/dist/core/session-manager-core.d.ts.map +1 -1
  544. package/dist/core/session-manager-core.js +9 -1
  545. package/dist/core/session-manager-core.js.map +1 -1
  546. package/dist/core/session-manager-entries.d.ts +24 -1
  547. package/dist/core/session-manager-entries.d.ts.map +1 -1
  548. package/dist/core/session-manager-entries.js +48 -0
  549. package/dist/core/session-manager-entries.js.map +1 -1
  550. package/dist/core/session-manager-list.d.ts.map +1 -1
  551. package/dist/core/session-manager-list.js +13 -1
  552. package/dist/core/session-manager-list.js.map +1 -1
  553. package/dist/core/session-manager-types.d.ts +10 -1
  554. package/dist/core/session-manager-types.d.ts.map +1 -1
  555. package/dist/core/session-manager-types.js.map +1 -1
  556. package/dist/core/settings-manager-basic-accessors.d.ts +3 -0
  557. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  558. package/dist/core/settings-manager-basic-accessors.js +5 -0
  559. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  560. package/dist/core/settings-manager-ui-accessors.d.ts +8 -1
  561. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  562. package/dist/core/settings-manager-ui-accessors.js +31 -0
  563. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  564. package/dist/core/settings-manager.d.ts +2 -1
  565. package/dist/core/settings-manager.d.ts.map +1 -1
  566. package/dist/core/settings-manager.js.map +1 -1
  567. package/dist/core/settings-merge.d.ts.map +1 -1
  568. package/dist/core/settings-merge.js +13 -16
  569. package/dist/core/settings-merge.js.map +1 -1
  570. package/dist/core/settings-types.d.ts +9 -0
  571. package/dist/core/settings-types.d.ts.map +1 -1
  572. package/dist/core/settings-types.js.map +1 -1
  573. package/dist/core/slash-commands.d.ts.map +1 -1
  574. package/dist/core/slash-commands.js +2 -4
  575. package/dist/core/slash-commands.js.map +1 -1
  576. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +2 -2
  577. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  578. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +39 -2
  579. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  580. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  581. package/dist/core/tools/bash-pty-native.js +2 -1
  582. package/dist/core/tools/bash-pty-native.js.map +1 -1
  583. package/dist/core/tools/bash.d.ts +9 -15
  584. package/dist/core/tools/bash.d.ts.map +1 -1
  585. package/dist/core/tools/bash.js +36 -96
  586. package/dist/core/tools/bash.js.map +1 -1
  587. package/dist/core/tools/directory-tree.d.ts +11 -0
  588. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  589. package/dist/core/tools/directory-tree.js +26 -0
  590. package/dist/core/tools/directory-tree.js.map +1 -1
  591. package/dist/core/tools/edit.d.ts +4 -0
  592. package/dist/core/tools/edit.d.ts.map +1 -1
  593. package/dist/core/tools/edit.js +12 -8
  594. package/dist/core/tools/edit.js.map +1 -1
  595. package/dist/core/tools/errno.d.ts +25 -0
  596. package/dist/core/tools/errno.d.ts.map +1 -0
  597. package/dist/core/tools/errno.js +29 -0
  598. package/dist/core/tools/errno.js.map +1 -0
  599. package/dist/core/tools/fetch-url.d.ts +12 -0
  600. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  601. package/dist/core/tools/fetch-url.js +76 -10
  602. package/dist/core/tools/fetch-url.js.map +1 -1
  603. package/dist/core/tools/find.d.ts +8 -1
  604. package/dist/core/tools/find.d.ts.map +1 -1
  605. package/dist/core/tools/find.js +20 -15
  606. package/dist/core/tools/find.js.map +1 -1
  607. package/dist/core/tools/grep.d.ts.map +1 -1
  608. package/dist/core/tools/grep.js +5 -1
  609. package/dist/core/tools/grep.js.map +1 -1
  610. package/dist/core/tools/index.d.ts +7 -7
  611. package/dist/core/tools/index.d.ts.map +1 -1
  612. package/dist/core/tools/index.js +11 -11
  613. package/dist/core/tools/index.js.map +1 -1
  614. package/dist/core/tools/ls.d.ts +4 -0
  615. package/dist/core/tools/ls.d.ts.map +1 -1
  616. package/dist/core/tools/ls.js +5 -1
  617. package/dist/core/tools/ls.js.map +1 -1
  618. package/dist/core/tools/output-accumulator.d.ts +8 -1
  619. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  620. package/dist/core/tools/output-accumulator.js +50 -28
  621. package/dist/core/tools/output-accumulator.js.map +1 -1
  622. package/dist/core/tools/oversized-tool-result.d.ts.map +1 -1
  623. package/dist/core/tools/oversized-tool-result.js +129 -22
  624. package/dist/core/tools/oversized-tool-result.js.map +1 -1
  625. package/dist/core/tools/persisted-output-file.d.ts +80 -0
  626. package/dist/core/tools/persisted-output-file.d.ts.map +1 -0
  627. package/dist/core/tools/persisted-output-file.js +284 -0
  628. package/dist/core/tools/persisted-output-file.js.map +1 -0
  629. package/dist/core/tools/read.d.ts +10 -0
  630. package/dist/core/tools/read.d.ts.map +1 -1
  631. package/dist/core/tools/read.js +20 -8
  632. package/dist/core/tools/read.js.map +1 -1
  633. package/dist/core/tools/search.d.ts +4 -0
  634. package/dist/core/tools/search.d.ts.map +1 -1
  635. package/dist/core/tools/search.js +5 -1
  636. package/dist/core/tools/search.js.map +1 -1
  637. package/dist/core/tools/session-temp-cleanup.d.ts +133 -0
  638. package/dist/core/tools/session-temp-cleanup.d.ts.map +1 -0
  639. package/dist/core/tools/session-temp-cleanup.js +669 -0
  640. package/dist/core/tools/session-temp-cleanup.js.map +1 -0
  641. package/dist/core/tools/session-temp-dir.d.ts +116 -0
  642. package/dist/core/tools/session-temp-dir.d.ts.map +1 -0
  643. package/dist/core/tools/session-temp-dir.js +408 -0
  644. package/dist/core/tools/session-temp-dir.js.map +1 -0
  645. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  646. package/dist/core/tools/tool-definition-wrapper.js +2 -0
  647. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  648. package/dist/core/tools/tool-limits.d.ts +11 -0
  649. package/dist/core/tools/tool-limits.d.ts.map +1 -1
  650. package/dist/core/tools/tool-limits.js +11 -0
  651. package/dist/core/tools/tool-limits.js.map +1 -1
  652. package/dist/core/tools/windows-directory-security.d.ts +82 -0
  653. package/dist/core/tools/windows-directory-security.d.ts.map +1 -0
  654. package/dist/core/tools/windows-directory-security.js +238 -0
  655. package/dist/core/tools/windows-directory-security.js.map +1 -0
  656. package/dist/core/tools/write.d.ts +4 -0
  657. package/dist/core/tools/write.d.ts.map +1 -1
  658. package/dist/core/tools/write.js +8 -4
  659. package/dist/core/tools/write.js.map +1 -1
  660. package/dist/core/trust-manager.js +1 -1
  661. package/dist/core/trust-manager.js.map +1 -1
  662. package/dist/core/usage-totals.js +1 -1
  663. package/dist/core/usage-totals.js.map +1 -1
  664. package/dist/extensions/llama/huggingface-ui.d.ts +1 -1
  665. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -1
  666. package/dist/extensions/llama/huggingface-ui.js +6 -5
  667. package/dist/extensions/llama/huggingface-ui.js.map +1 -1
  668. package/dist/extensions/llama/index.d.ts.map +1 -1
  669. package/dist/extensions/llama/index.js +11 -2
  670. package/dist/extensions/llama/index.js.map +1 -1
  671. package/dist/extensions/llama/provider.d.ts.map +1 -1
  672. package/dist/extensions/llama/provider.js +24 -8
  673. package/dist/extensions/llama/provider.js.map +1 -1
  674. package/dist/extensions/llama/ui.d.ts.map +1 -1
  675. package/dist/extensions/llama/ui.js +5 -2
  676. package/dist/extensions/llama/ui.js.map +1 -1
  677. package/dist/index-extensions.d.ts +2 -2
  678. package/dist/index-extensions.d.ts.map +1 -1
  679. package/dist/index-extensions.js +1 -1
  680. package/dist/index-extensions.js.map +1 -1
  681. package/dist/index.d.ts +5 -2
  682. package/dist/index.d.ts.map +1 -1
  683. package/dist/index.js +6 -2
  684. package/dist/index.js.map +1 -1
  685. package/dist/main-runtime-api-key.d.ts +2 -2
  686. package/dist/main-runtime-api-key.d.ts.map +1 -1
  687. package/dist/main-runtime-api-key.js +7 -2
  688. package/dist/main-runtime-api-key.js.map +1 -1
  689. package/dist/main-session.js +2 -2
  690. package/dist/main-session.js.map +1 -1
  691. package/dist/main.d.ts.map +1 -1
  692. package/dist/main.js +130 -26
  693. package/dist/main.js.map +1 -1
  694. package/dist/modes/index.d.ts +1 -0
  695. package/dist/modes/index.d.ts.map +1 -1
  696. package/dist/modes/index.js.map +1 -1
  697. package/dist/modes/interactive/components/assistant-message.d.ts +6 -2
  698. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  699. package/dist/modes/interactive/components/assistant-message.js +18 -5
  700. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  701. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  702. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  703. package/dist/modes/interactive/components/bordered-loader.js +5 -4
  704. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  705. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
  706. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  707. package/dist/modes/interactive/components/branch-summary-message.js +3 -2
  708. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  709. package/dist/modes/interactive/components/chat-message-renderer.d.ts +17 -7
  710. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  711. package/dist/modes/interactive/components/chat-message-renderer.js +35 -69
  712. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  713. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  714. package/dist/modes/interactive/components/chat-session-host-actions.js +11 -3
  715. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  716. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  717. package/dist/modes/interactive/components/chat-session-host-events.js +25 -15
  718. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  719. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  720. package/dist/modes/interactive/components/chat-session-host-rendering.js +9 -4
  721. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  722. package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -0
  723. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  724. package/dist/modes/interactive/components/chat-session-host-state.js +2 -0
  725. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  726. package/dist/modes/interactive/components/chat-session-host.d.ts +9 -0
  727. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  728. package/dist/modes/interactive/components/chat-session-host.js +14 -0
  729. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  730. package/dist/modes/interactive/components/chat-transcript.d.ts +32 -0
  731. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  732. package/dist/modes/interactive/components/chat-transcript.js +173 -5
  733. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  734. package/dist/modes/interactive/components/config-selector-list.d.ts +1 -1
  735. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  736. package/dist/modes/interactive/components/config-selector-list.js +9 -8
  737. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  738. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  739. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  740. package/dist/modes/interactive/components/custom-editor.js +32 -10
  741. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  742. package/dist/modes/interactive/components/custom-message.d.ts +2 -1
  743. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  744. package/dist/modes/interactive/components/custom-message.js +3 -2
  745. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  746. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  747. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  748. package/dist/modes/interactive/components/extension-editor.js +3 -2
  749. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  750. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  751. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  752. package/dist/modes/interactive/components/extension-input.js +1 -0
  753. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  754. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  755. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  756. package/dist/modes/interactive/components/extension-selector.js +4 -0
  757. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  758. package/dist/modes/interactive/components/fast-mode-selector.d.ts +1 -1
  759. package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +1 -1
  760. package/dist/modes/interactive/components/fast-mode-selector.js +7 -5
  761. package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
  762. package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
  763. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  764. package/dist/modes/interactive/components/first-time-setup.js +3 -0
  765. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  766. package/dist/modes/interactive/components/footer.js +2 -2
  767. package/dist/modes/interactive/components/footer.js.map +1 -1
  768. package/dist/modes/interactive/components/host-input-form.d.ts +1 -1
  769. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  770. package/dist/modes/interactive/components/host-input-form.js +6 -5
  771. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  772. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  773. package/dist/modes/interactive/components/host-session-picker.js +1 -0
  774. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  775. package/dist/modes/interactive/components/index.d.ts +1 -1
  776. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  777. package/dist/modes/interactive/components/index.js.map +1 -1
  778. package/dist/modes/interactive/components/login-dialog.d.ts +1 -1
  779. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  780. package/dist/modes/interactive/components/login-dialog.js +2 -1
  781. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  782. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  783. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  784. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  785. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  786. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  787. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  788. package/dist/modes/interactive/components/mermaid.js +81 -0
  789. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  790. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  791. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  792. package/dist/modes/interactive/components/model-selector.js +9 -6
  793. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  794. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  795. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  796. package/dist/modes/interactive/components/oauth-selector.js +3 -2
  797. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  798. package/dist/modes/interactive/components/scoped-models-selector.d.ts +6 -2
  799. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  800. package/dist/modes/interactive/components/scoped-models-selector.js +39 -13
  801. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  802. package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -1
  803. package/dist/modes/interactive/components/session-selector-delete.js +2 -1
  804. package/dist/modes/interactive/components/session-selector-delete.js.map +1 -1
  805. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  806. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  807. package/dist/modes/interactive/components/session-selector-list.js +41 -15
  808. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  809. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  810. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  811. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  812. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  813. package/dist/modes/interactive/components/session-selector.js +3 -3
  814. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  815. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  816. package/dist/modes/interactive/components/settings-selector-handlers.js +9 -0
  817. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  818. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  819. package/dist/modes/interactive/components/settings-selector-items.js +21 -0
  820. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  821. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +3 -3
  822. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  823. package/dist/modes/interactive/components/settings-selector-submenus.js +6 -1
  824. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  825. package/dist/modes/interactive/components/settings-selector-types.d.ts +8 -1
  826. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  827. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  828. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
  829. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  830. package/dist/modes/interactive/components/skill-invocation-message.js +3 -2
  831. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  832. package/dist/modes/interactive/components/tool-execution.d.ts +2 -0
  833. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  834. package/dist/modes/interactive/components/tool-execution.js +50 -27
  835. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  836. package/dist/modes/interactive/components/tree-selector-component.d.ts +1 -1
  837. package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -1
  838. package/dist/modes/interactive/components/tree-selector-component.js +2 -3
  839. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
  840. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  841. package/dist/modes/interactive/components/tree-selector-content.js +6 -0
  842. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  843. package/dist/modes/interactive/components/tree-selector-help.d.ts +1 -1
  844. package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -1
  845. package/dist/modes/interactive/components/tree-selector-help.js +3 -1
  846. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
  847. package/dist/modes/interactive/components/tree-selector-label-input.d.ts +1 -1
  848. package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -1
  849. package/dist/modes/interactive/components/tree-selector-label-input.js +1 -0
  850. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
  851. package/dist/modes/interactive/components/tree-selector-list.d.ts +1 -1
  852. package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -1
  853. package/dist/modes/interactive/components/tree-selector-list.js +3 -0
  854. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
  855. package/dist/modes/interactive/components/trust-selector.d.ts +1 -1
  856. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  857. package/dist/modes/interactive/components/trust-selector.js +4 -0
  858. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  859. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  860. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  861. package/dist/modes/interactive/components/user-message-selector.js +4 -0
  862. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  863. package/dist/modes/interactive/components/user-message.d.ts +4 -1
  864. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  865. package/dist/modes/interactive/components/user-message.js +10 -2
  866. package/dist/modes/interactive/components/user-message.js.map +1 -1
  867. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  868. package/dist/modes/interactive/external-editor.js +2 -1
  869. package/dist/modes/interactive/external-editor.js.map +1 -1
  870. package/dist/modes/interactive/interactive-agent-events.js +36 -18
  871. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  872. package/dist/modes/interactive/interactive-auth-login.js +9 -2
  873. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  874. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  875. package/dist/modes/interactive/interactive-auth-routing.js +5 -1
  876. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  877. package/dist/modes/interactive/interactive-bash-compact.js +16 -4
  878. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  879. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  880. package/dist/modes/interactive/interactive-deferred-startup.js +3 -0
  881. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  882. package/dist/modes/interactive/interactive-editor-actions.js +2 -0
  883. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  884. package/dist/modes/interactive/interactive-extension-context.js +12 -7
  885. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  886. package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -0
  887. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  888. package/dist/modes/interactive/interactive-extension-dialogs.js +7 -0
  889. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  890. package/dist/modes/interactive/interactive-extension-widgets.js +7 -24
  891. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  892. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  893. package/dist/modes/interactive/interactive-input-handling.js +9 -8
  894. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  895. package/dist/modes/interactive/interactive-mode-base.d.ts +52 -3
  896. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  897. package/dist/modes/interactive/interactive-mode-base.js +143 -5
  898. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  899. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -2
  900. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  901. package/dist/modes/interactive/interactive-mode-deps.js +2 -2
  902. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  903. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -3
  904. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  905. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  906. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  907. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  908. package/dist/modes/interactive/interactive-mode.js +1 -0
  909. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  910. package/dist/modes/interactive/interactive-model-routing.js +107 -41
  911. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  912. package/dist/modes/interactive/interactive-process-lifecycle.js +1 -1
  913. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  914. package/dist/modes/interactive/interactive-render-chat.js +24 -6
  915. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  916. package/dist/modes/interactive/interactive-selectors.js +44 -5
  917. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  918. package/dist/modes/interactive/interactive-session-runtime.js +1 -0
  919. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  920. package/dist/modes/interactive/interactive-slash-commands.js +9 -4
  921. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  922. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  923. package/dist/modes/interactive/interactive-startup.js +37 -18
  924. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  925. package/dist/modes/interactive/interactive-tui.d.ts +21 -0
  926. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -0
  927. package/dist/modes/interactive/interactive-tui.js +279 -0
  928. package/dist/modes/interactive/interactive-tui.js.map +1 -0
  929. package/dist/modes/interactive/streaming-assistant-message.d.ts +34 -0
  930. package/dist/modes/interactive/streaming-assistant-message.d.ts.map +1 -0
  931. package/dist/modes/interactive/streaming-assistant-message.js +76 -0
  932. package/dist/modes/interactive/streaming-assistant-message.js.map +1 -0
  933. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -0
  934. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -0
  935. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -0
  936. package/dist/modes/interactive/theme/catppuccin-mocha.json +1 -0
  937. package/dist/modes/interactive/theme/dark.json +1 -0
  938. package/dist/modes/interactive/theme/light.json +1 -0
  939. package/dist/modes/interactive/theme/terminal-detection.d.ts +10 -0
  940. package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -1
  941. package/dist/modes/interactive/theme/terminal-detection.js +19 -0
  942. package/dist/modes/interactive/theme/terminal-detection.js.map +1 -1
  943. package/dist/modes/interactive/theme/theme-class.d.ts +2 -2
  944. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  945. package/dist/modes/interactive/theme/theme-class.js +5 -1
  946. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  947. package/dist/modes/interactive/theme/theme-controller.d.ts +3 -1
  948. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  949. package/dist/modes/interactive/theme/theme-controller.js +10 -13
  950. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  951. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  952. package/dist/modes/interactive/theme/theme-loading.js +1 -0
  953. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  954. package/dist/modes/interactive/theme/theme-schema.d.ts +4 -0
  955. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  956. package/dist/modes/interactive/theme/theme-schema.js +2 -1
  957. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  958. package/dist/modes/interactive/theme/theme-schema.json +5 -1
  959. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  960. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  961. package/dist/modes/interactive/theme/theme.js +1 -1
  962. package/dist/modes/interactive/theme/theme.js.map +1 -1
  963. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +1 -1
  964. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  965. package/dist/modes/interactive-engine/engine-custom-ui.js +28 -11
  966. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  967. package/dist/modes/interactive-engine/engine-render-service.js +3 -3
  968. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  969. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -1
  970. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  971. package/dist/modes/interactive-engine/extension-ui-bridge.js +2 -2
  972. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  973. package/dist/modes/interactive-engine/isolated-runtime.d.ts +7 -0
  974. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  975. package/dist/modes/interactive-engine/isolated-runtime.js +7 -0
  976. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  977. package/dist/modes/interactive-engine/protocol.d.ts +12 -10
  978. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  979. package/dist/modes/interactive-engine/protocol.js +18 -12
  980. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  981. package/dist/modes/interactive-engine/remote-component.d.ts +11 -1
  982. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  983. package/dist/modes/interactive-engine/remote-component.js +48 -8
  984. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  985. package/dist/modes/interactive-engine/terminal-mode-controller.d.ts +19 -12
  986. package/dist/modes/interactive-engine/terminal-mode-controller.d.ts.map +1 -1
  987. package/dist/modes/interactive-engine/terminal-mode-controller.js +54 -35
  988. package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -1
  989. package/dist/modes/json-event.d.ts +28 -0
  990. package/dist/modes/json-event.d.ts.map +1 -0
  991. package/dist/modes/json-event.js +12 -0
  992. package/dist/modes/json-event.js.map +1 -0
  993. package/dist/modes/print-mode.d.ts.map +1 -1
  994. package/dist/modes/print-mode.js +2 -1
  995. package/dist/modes/print-mode.js.map +1 -1
  996. package/dist/modes/rpc/rpc-client-process.d.ts +1 -0
  997. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  998. package/dist/modes/rpc/rpc-client-process.js +5 -1
  999. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  1000. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1001. package/dist/modes/rpc/rpc-client.js +7 -2
  1002. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1003. package/dist/modes/rpc/rpc-command-handler.js +1 -1
  1004. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  1005. package/dist/modes/rpc/rpc-event-buffer.d.ts +9 -0
  1006. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  1007. package/dist/modes/rpc/rpc-event-buffer.js +10 -5
  1008. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  1009. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  1010. package/dist/modes/rpc/rpc-extension-ui.js +3 -0
  1011. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  1012. package/dist/modes/rpc/rpc-input.js +1 -1
  1013. package/dist/modes/rpc/rpc-input.js.map +1 -1
  1014. package/dist/modes/rpc/rpc-output-buffer.d.ts +9 -0
  1015. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  1016. package/dist/modes/rpc/rpc-output-buffer.js +10 -5
  1017. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  1018. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
  1019. package/dist/modes/rpc/rpc-provider-auth.js +3 -0
  1020. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  1021. package/dist/modes/rpc/rpc-responses.d.ts +1 -1
  1022. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  1023. package/dist/modes/rpc/rpc-responses.js +13 -1
  1024. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  1025. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  1026. package/dist/modes/rpc/rpc-session-binding.js +2 -1
  1027. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  1028. package/dist/modes/rpc/rpc-types.d.ts +9 -2
  1029. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1030. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1031. package/dist/rpc-entry.js +2 -0
  1032. package/dist/rpc-entry.js.map +1 -1
  1033. package/dist/self-update-plan.d.ts.map +1 -1
  1034. package/dist/self-update-plan.js +5 -4
  1035. package/dist/self-update-plan.js.map +1 -1
  1036. package/dist/server/create-harness.d.ts +53 -0
  1037. package/dist/server/create-harness.d.ts.map +1 -0
  1038. package/dist/server/create-harness.js +349 -0
  1039. package/dist/server/create-harness.js.map +1 -0
  1040. package/dist/utils/agent-attribution.d.ts +2 -0
  1041. package/dist/utils/agent-attribution.d.ts.map +1 -0
  1042. package/dist/utils/agent-attribution.js +2 -0
  1043. package/dist/utils/agent-attribution.js.map +1 -0
  1044. package/dist/utils/child-process.d.ts +3 -1
  1045. package/dist/utils/child-process.d.ts.map +1 -1
  1046. package/dist/utils/child-process.js +24 -4
  1047. package/dist/utils/child-process.js.map +1 -1
  1048. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1049. package/dist/utils/clipboard-image.js +2 -1
  1050. package/dist/utils/clipboard-image.js.map +1 -1
  1051. package/dist/utils/clipboard.d.ts.map +1 -1
  1052. package/dist/utils/clipboard.js +12 -3
  1053. package/dist/utils/clipboard.js.map +1 -1
  1054. package/dist/utils/management-http.d.ts +23 -0
  1055. package/dist/utils/management-http.d.ts.map +1 -0
  1056. package/dist/utils/management-http.js +50 -0
  1057. package/dist/utils/management-http.js.map +1 -0
  1058. package/dist/utils/open-browser.d.ts.map +1 -1
  1059. package/dist/utils/open-browser.js +2 -1
  1060. package/dist/utils/open-browser.js.map +1 -1
  1061. package/dist/utils/paths.d.ts +2 -0
  1062. package/dist/utils/paths.d.ts.map +1 -1
  1063. package/dist/utils/paths.js +13 -0
  1064. package/dist/utils/paths.js.map +1 -1
  1065. package/dist/utils/shell.d.ts.map +1 -1
  1066. package/dist/utils/shell.js +17 -4
  1067. package/dist/utils/shell.js.map +1 -1
  1068. package/dist/utils/tool-result-images.d.ts +17 -0
  1069. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1070. package/dist/utils/tool-result-images.js +41 -0
  1071. package/dist/utils/tool-result-images.js.map +1 -0
  1072. package/dist/utils/tools-manager.d.ts.map +1 -1
  1073. package/dist/utils/tools-manager.js +7 -8
  1074. package/dist/utils/tools-manager.js.map +1 -1
  1075. package/dist/utils/version-check.d.ts +4 -0
  1076. package/dist/utils/version-check.d.ts.map +1 -1
  1077. package/dist/utils/version-check.js +20 -2
  1078. package/dist/utils/version-check.js.map +1 -1
  1079. package/docs/compaction.md +2 -1
  1080. package/docs/custom-provider.md +15 -7
  1081. package/docs/development.md +1 -0
  1082. package/docs/docs.json +1 -0
  1083. package/docs/environment-variables.md +5 -1
  1084. package/docs/extensions.md +102 -18
  1085. package/docs/i-have-adhd.md +36 -0
  1086. package/docs/intercom.md +45 -26
  1087. package/docs/json.md +2 -2
  1088. package/docs/keybindings.md +55 -12
  1089. package/docs/models/model-selection.md +34 -8
  1090. package/docs/models.md +28 -3
  1091. package/docs/providers.md +20 -2
  1092. package/docs/quickstart.md +10 -6
  1093. package/docs/rpc.md +18 -12
  1094. package/docs/sdk.md +44 -8
  1095. package/docs/security.md +10 -10
  1096. package/docs/session-format.md +15 -0
  1097. package/docs/sessions.md +10 -0
  1098. package/docs/settings.md +31 -5
  1099. package/docs/subagents.md +27 -54
  1100. package/docs/themes.md +5 -3
  1101. package/docs/tools.md +23 -5
  1102. package/docs/tui.md +41 -24
  1103. package/docs/usage.md +41 -15
  1104. package/docs/windows.md +3 -1
  1105. package/docs/workflows.md +262 -38
  1106. package/examples/extensions/custom-provider-anthropic/index.ts +9 -2
  1107. package/examples/extensions/custom-provider-gitlab-duo/index.ts +9 -2
  1108. package/examples/extensions/modal-editor.ts +8 -10
  1109. package/examples/extensions/rainbow-editor.ts +3 -2
  1110. package/examples/extensions/subagent/README.md +16 -45
  1111. package/examples/extensions/subagent/index.ts +6 -96
  1112. package/examples/extensions/subagent/render.ts +0 -78
  1113. package/examples/extensions/subagent/runner.ts +0 -3
  1114. package/examples/extensions/subagent/schemas.ts +0 -13
  1115. package/examples/extensions/subagent/types.ts +1 -2
  1116. package/examples/sdk/09-api-keys-and-oauth.ts +6 -2
  1117. package/examples/sdk/12-full-control.ts +8 -2
  1118. package/examples/sdk/README.md +4 -1
  1119. package/npm-shrinkwrap.json +191 -634
  1120. package/package.json +14 -7
  1121. package/dist/builtin/subagents/src/agents/chain-serializer.ts +0 -257
  1122. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +0 -250
  1123. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +0 -38
  1124. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +0 -280
  1125. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +0 -217
  1126. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +0 -271
  1127. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +0 -271
  1128. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +0 -200
  1129. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +0 -184
  1130. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +0 -19
  1131. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +0 -190
  1132. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +0 -109
  1133. package/dist/builtin/subagents/src/runs/inprocess/background-single.ts +0 -179
  1134. package/dist/builtin/subagents/src/runs/inprocess/background.ts +0 -89
  1135. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +0 -126
  1136. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +0 -393
  1137. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +0 -150
  1138. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +0 -232
  1139. package/dist/builtin/subagents/src/shared/types-async.ts +0 -270
  1140. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +0 -60
  1141. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +0 -341
  1142. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +0 -266
  1143. package/dist/builtin/subagents/src/tui/render-widget.ts +0 -366
  1144. package/dist/core/async/format.d.ts +0 -3
  1145. package/dist/core/async/format.d.ts.map +0 -1
  1146. package/dist/core/async/format.js +0 -52
  1147. package/dist/core/async/format.js.map +0 -1
  1148. package/dist/core/async/job-manager.d.ts +0 -40
  1149. package/dist/core/async/job-manager.d.ts.map +0 -1
  1150. package/dist/core/async/job-manager.js +0 -293
  1151. package/dist/core/async/job-manager.js.map +0 -1
  1152. package/dist/core/async/session-manager.d.ts +0 -16
  1153. package/dist/core/async/session-manager.d.ts.map +0 -1
  1154. package/dist/core/async/session-manager.js +0 -34
  1155. package/dist/core/async/session-manager.js.map +0 -1
  1156. package/dist/core/async/types.d.ts +0 -23
  1157. package/dist/core/async/types.d.ts.map +0 -1
  1158. package/dist/core/async/types.js +0 -2
  1159. package/dist/core/async/types.js.map +0 -1
  1160. package/dist/core/tools/bash-async-execution.d.ts +0 -25
  1161. package/dist/core/tools/bash-async-execution.d.ts.map +0 -1
  1162. package/dist/core/tools/bash-async-execution.js +0 -78
  1163. package/dist/core/tools/bash-async-execution.js.map +0 -1
  1164. package/dist/core/tools/bash-async-jobs.d.ts +0 -30
  1165. package/dist/core/tools/bash-async-jobs.d.ts.map +0 -1
  1166. package/dist/core/tools/bash-async-jobs.js +0 -87
  1167. package/dist/core/tools/bash-async-jobs.js.map +0 -1
  1168. package/dist/core/tools/bash-async-output.d.ts +0 -12
  1169. package/dist/core/tools/bash-async-output.d.ts.map +0 -1
  1170. package/dist/core/tools/bash-async-output.js +0 -87
  1171. package/dist/core/tools/bash-async-output.js.map +0 -1
  1172. package/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
  1173. package/examples/extensions/subagent/prompts/implement.md +0 -10
  1174. package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"bash-executor.js","sourceRoot":"","sources":["../../src/core/bash-executor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Bash command execution with streaming support and cancellation.\n *\n * This module provides a unified bash execution implementation used by:\n * - AgentSession.executeBash() for interactive and RPC modes\n * - Direct calls from modes that need bash execution\n */\n\nimport { randomBytes } from \"node:crypto\";\nimport { createWriteStream, type WriteStream } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { APP_NAME } from \"../config.ts\";\nimport { stripAnsi } from \"../utils/ansi.ts\";\nimport { sanitizeBinaryOutput } from \"../utils/shell.ts\";\nimport type { BashOperations, BashOutputChannel } from \"./tools/bash.ts\";\nimport { DEFAULT_MAX_BYTES, truncateTail } from \"./tools/truncate.ts\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BashExecutorOptions {\n\t/** Callback for streaming output chunks (already sanitized), preserving the source channel. */\n\tonChunk?: (chunk: string, channel: BashOutputChannel) => void;\n\t/** AbortSignal for cancellation */\n\tsignal?: AbortSignal;\n\t/** Complete environment for the execution backend. */\n\tenv?: NodeJS.ProcessEnv;\n\t/** Run with PTY handling when supported by the operations backend */\n\tpty?: boolean;\n}\n\nexport interface BashResult {\n\t/** Combined stdout + stderr output (sanitized, possibly truncated) */\n\toutput: string;\n\t/** Process exit code (undefined if killed/cancelled) */\n\texitCode: number | undefined;\n\t/** Whether the command was cancelled via signal */\n\tcancelled: boolean;\n\t/** Whether the output was truncated */\n\ttruncated: boolean;\n\t/** Path to temp file containing full output (if output exceeded truncation threshold) */\n\tfullOutputPath?: string;\n}\n\n// ============================================================================\n// Implementation\n// ============================================================================\n\n/**\n * Execute a bash command using custom BashOperations.\n * Used for remote execution (SSH, containers, etc.).\n */\nexport async function executeBashWithOperations(\n\tcommand: string,\n\tcwd: string,\n\toperations: BashOperations,\n\toptions?: BashExecutorOptions,\n): Promise<BashResult> {\n\tconst outputChunks: string[] = [];\n\tlet outputBytes = 0;\n\tconst maxOutputBytes = DEFAULT_MAX_BYTES * 2;\n\n\tlet tempFilePath: string | undefined;\n\tlet tempFileStream: WriteStream | undefined;\n\tlet totalBytes = 0;\n\n\tconst ensureTempFile = () => {\n\t\tif (tempFilePath) {\n\t\t\treturn;\n\t\t}\n\t\tconst id = randomBytes(8).toString(\"hex\");\n\t\ttempFilePath = join(tmpdir(), `${APP_NAME}-bash-${id}.log`);\n\t\ttempFileStream = createWriteStream(tempFilePath);\n\t\tfor (const chunk of outputChunks) {\n\t\t\ttempFileStream.write(chunk);\n\t\t}\n\t};\n\n\tconst decoders: Record<BashOutputChannel, TextDecoder> = { stdout: new TextDecoder(), stderr: new TextDecoder() };\n\tconst onData = (data: Buffer, channel: BashOutputChannel = \"stdout\") => {\n\t\ttotalBytes += data.length;\n\n\t\t// Sanitize: strip ANSI, replace binary garbage, normalize newlines\n\t\tconst text = sanitizeBinaryOutput(stripAnsi(decoders[channel].decode(data, { stream: true }))).replace(/\\r/g, \"\");\n\n\t\t// Start writing to temp file if exceeds threshold\n\t\tif (totalBytes > DEFAULT_MAX_BYTES) {\n\t\t\tensureTempFile();\n\t\t}\n\n\t\tif (tempFileStream) {\n\t\t\ttempFileStream.write(text);\n\t\t}\n\n\t\t// Keep rolling buffer\n\t\toutputChunks.push(text);\n\t\toutputBytes += text.length;\n\t\twhile (outputBytes > maxOutputBytes && outputChunks.length > 1) {\n\t\t\tconst removed = outputChunks.shift()!;\n\t\t\toutputBytes -= removed.length;\n\t\t}\n\n\t\t// Stream to callback\n\t\tif (options?.onChunk) {\n\t\t\toptions.onChunk(text, channel);\n\t\t}\n\t};\n\n\ttry {\n\t\tconst result = await operations.exec(command, cwd, {\n\t\t\tonData,\n\t\t\tsignal: options?.signal,\n\t\t\tenv: options?.env,\n\t\t\tpty: options?.pty,\n\t\t});\n\n\t\tconst fullOutput = outputChunks.join(\"\");\n\t\tconst truncationResult = truncateTail(fullOutput);\n\t\tif (truncationResult.truncated) {\n\t\t\tensureTempFile();\n\t\t}\n\t\tif (tempFileStream) {\n\t\t\ttempFileStream.end();\n\t\t}\n\t\tconst cancelled = options?.signal?.aborted ?? false;\n\n\t\treturn {\n\t\t\toutput: truncationResult.truncated ? truncationResult.content : fullOutput,\n\t\t\texitCode: cancelled ? undefined : (result.exitCode ?? undefined),\n\t\t\tcancelled,\n\t\t\ttruncated: truncationResult.truncated,\n\t\t\tfullOutputPath: tempFilePath,\n\t\t};\n\t} catch (err) {\n\t\t// Check if it was an abort\n\t\tif (options?.signal?.aborted) {\n\t\t\tconst fullOutput = outputChunks.join(\"\");\n\t\t\tconst truncationResult = truncateTail(fullOutput);\n\t\t\tif (truncationResult.truncated) {\n\t\t\t\tensureTempFile();\n\t\t\t}\n\t\t\tif (tempFileStream) {\n\t\t\t\ttempFileStream.end();\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toutput: truncationResult.truncated ? truncationResult.content : fullOutput,\n\t\t\t\texitCode: undefined,\n\t\t\t\tcancelled: true,\n\t\t\t\ttruncated: truncationResult.truncated,\n\t\t\t\tfullOutputPath: tempFilePath,\n\t\t\t};\n\t\t}\n\n\t\tif (tempFileStream) {\n\t\t\ttempFileStream.end();\n\t\t}\n\n\t\tthrow err;\n\t}\n}\n"]}
1
+ {"version":3,"file":"bash-executor.js","sourceRoot":"","sources":["../../src/core/bash-executor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Bash command execution with streaming support and cancellation.\n *\n * This module provides a unified bash execution implementation used by:\n * - AgentSession.executeBash() for interactive and RPC modes\n * - Direct calls from modes that need bash execution\n */\n\nimport { randomBytes } from \"node:crypto\";\nimport { join } from \"node:path\";\nimport { APP_NAME } from \"../config.ts\";\nimport { stripAnsi } from \"../utils/ansi.ts\";\nimport { sanitizeBinaryOutput } from \"../utils/shell.ts\";\nimport type { BashOperations, BashOutputChannel } from \"./tools/bash.ts\";\nimport { PersistedOutputFile } from \"./tools/persisted-output-file.ts\";\nimport { ensureSessionTempDir } from \"./tools/session-temp-dir.ts\";\nimport { DEFAULT_MAX_BYTES, truncateTail } from \"./tools/truncate.ts\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BashExecutorOptions {\n\t/** Callback for streaming output chunks (already sanitized), preserving the source channel. */\n\tonChunk?: (chunk: string, channel: BashOutputChannel) => void;\n\t/** AbortSignal for cancellation */\n\tsignal?: AbortSignal;\n\t/** Complete environment for the execution backend. */\n\tenv?: NodeJS.ProcessEnv;\n\t/** Run with PTY handling when supported by the operations backend */\n\tpty?: boolean;\n\t/**\n\t * Session-scoped directory for the overflow log. Defaults to the active\n\t * session's temp directory so the log is reaped with that session.\n\t */\n\tsessionTempDir?: string;\n}\n\nexport interface BashResult {\n\t/** Combined stdout + stderr output (sanitized, possibly truncated) */\n\toutput: string;\n\t/** Process exit code (undefined if killed/cancelled) */\n\texitCode: number | undefined;\n\t/** Whether the command was cancelled via signal */\n\tcancelled: boolean;\n\t/** Whether the output was truncated */\n\ttruncated: boolean;\n\t/** Path to temp file containing full output (if output exceeded truncation threshold) */\n\tfullOutputPath?: string;\n}\n\n// ============================================================================\n// Implementation\n// ============================================================================\n\n/**\n * Execute a bash command using custom BashOperations.\n * Used for remote execution (SSH, containers, etc.).\n */\nexport async function executeBashWithOperations(\n\tcommand: string,\n\tcwd: string,\n\toperations: BashOperations,\n\toptions?: BashExecutorOptions,\n): Promise<BashResult> {\n\tconst outputChunks: string[] = [];\n\tlet outputBytes = 0;\n\tconst maxOutputBytes = DEFAULT_MAX_BYTES * 2;\n\n\tlet tempFilePath: string | undefined;\n\tlet tempFile: PersistedOutputFile | undefined;\n\tlet totalBytes = 0;\n\n\tlet tempFileUnavailable = false;\n\n\tconst ensureTempFile = () => {\n\t\tif (tempFilePath || tempFileUnavailable) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst dir = ensureSessionTempDir(options?.sessionTempDir);\n\t\t\tconst id = randomBytes(8).toString(\"hex\");\n\t\t\ttempFilePath = join(dir, `${APP_NAME}-bash-${id}.log`);\n\t\t\ttempFile = new PersistedOutputFile(tempFilePath);\n\t\t} catch {\n\t\t\t// The session temp directory was refused (see ensureTempDir). Run without\n\t\t\t// an overflow log rather than advertising a path outside the owned tree.\n\t\t\ttempFileUnavailable = true;\n\t\t\ttempFilePath = undefined;\n\t\t\ttempFile = undefined;\n\t\t\treturn;\n\t\t}\n\t\tfor (const chunk of outputChunks) {\n\t\t\ttempFile.write(chunk);\n\t\t}\n\t};\n\n\t/**\n\t * Close the overflow log and confirm it landed. A spill file that failed to\n\t * write must not be advertised: `fullOutputPath` is dropped instead, so the\n\t * `Full output:` contract never points at a file that is not there.\n\t */\n\tconst finishTempFile = async () => {\n\t\tconst file = tempFile;\n\t\tif (!file) {\n\t\t\treturn;\n\t\t}\n\t\ttempFile = undefined;\n\t\ttry {\n\t\t\tawait file.close();\n\t\t} catch {\n\t\t\ttempFilePath = undefined;\n\t\t}\n\t};\n\n\tconst decoders: Record<BashOutputChannel, TextDecoder> = { stdout: new TextDecoder(), stderr: new TextDecoder() };\n\tconst onData = (data: Buffer, channel: BashOutputChannel = \"stdout\") => {\n\t\ttotalBytes += data.length;\n\n\t\t// Sanitize: strip ANSI, replace binary garbage, normalize newlines\n\t\tconst text = sanitizeBinaryOutput(stripAnsi(decoders[channel].decode(data, { stream: true }))).replace(/\\r/g, \"\");\n\n\t\t// Start writing to temp file if exceeds threshold\n\t\tif (totalBytes > DEFAULT_MAX_BYTES) {\n\t\t\tensureTempFile();\n\t\t}\n\n\t\tif (tempFile) {\n\t\t\ttempFile.write(text);\n\t\t}\n\n\t\t// Keep rolling buffer\n\t\toutputChunks.push(text);\n\t\toutputBytes += text.length;\n\t\twhile (outputBytes > maxOutputBytes && outputChunks.length > 1) {\n\t\t\tconst removed = outputChunks.shift()!;\n\t\t\toutputBytes -= removed.length;\n\t\t}\n\n\t\t// Stream to callback\n\t\tif (options?.onChunk) {\n\t\t\toptions.onChunk(text, channel);\n\t\t}\n\t};\n\n\ttry {\n\t\tconst result = await operations.exec(command, cwd, {\n\t\t\tonData,\n\t\t\tsignal: options?.signal,\n\t\t\tenv: options?.env,\n\t\t\tpty: options?.pty,\n\t\t});\n\n\t\tconst fullOutput = outputChunks.join(\"\");\n\t\tconst truncationResult = truncateTail(fullOutput);\n\t\tif (truncationResult.truncated) {\n\t\t\tensureTempFile();\n\t\t}\n\t\tawait finishTempFile();\n\t\tconst cancelled = options?.signal?.aborted ?? false;\n\n\t\treturn {\n\t\t\toutput: truncationResult.truncated ? truncationResult.content : fullOutput,\n\t\t\texitCode: cancelled ? undefined : (result.exitCode ?? undefined),\n\t\t\tcancelled,\n\t\t\ttruncated: truncationResult.truncated,\n\t\t\tfullOutputPath: tempFilePath,\n\t\t};\n\t} catch (err) {\n\t\t// Check if it was an abort\n\t\tif (options?.signal?.aborted) {\n\t\t\tconst fullOutput = outputChunks.join(\"\");\n\t\t\tconst truncationResult = truncateTail(fullOutput);\n\t\t\tif (truncationResult.truncated) {\n\t\t\t\tensureTempFile();\n\t\t\t}\n\t\t\tawait finishTempFile();\n\t\t\treturn {\n\t\t\t\toutput: truncationResult.truncated ? truncationResult.content : fullOutput,\n\t\t\t\texitCode: undefined,\n\t\t\t\tcancelled: true,\n\t\t\t\ttruncated: truncationResult.truncated,\n\t\t\t\tfullOutputPath: tempFilePath,\n\t\t\t};\n\t\t}\n\n\t\tawait finishTempFile();\n\n\t\tthrow err;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-packages.d.ts","sourceRoot":"","sources":["../../src/core/builtin-packages.ts"],"names":[],"mappings":"AA+HA;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAUjD"}
1
+ {"version":3,"file":"builtin-packages.d.ts","sourceRoot":"","sources":["../../src/core/builtin-packages.ts"],"names":[],"mappings":"AAqIA;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAUjD"}
@@ -27,6 +27,12 @@ const WORKSPACE_BUILTINS = [
27
27
  distDirName: "web-access",
28
28
  requiredEntry: "index.ts",
29
29
  },
30
+ {
31
+ packageName: "@bastani/i-have-adhd",
32
+ workspaceDirName: "i-have-adhd",
33
+ distDirName: "i-have-adhd",
34
+ requiredEntry: "index.ts",
35
+ },
30
36
  {
31
37
  packageName: "@bastani/intercom",
32
38
  workspaceDirName: "intercom",
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-packages.js","sourceRoot":"","sources":["../../src/core/builtin-packages.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { getPackageDir } from \"../config.ts\";\nimport { moduleDirFromMetaUrl } from \"../utils/split-launcher.ts\";\n\ninterface BuiltinPackageDescriptor {\n\treadonly packageName: string;\n\treadonly distDirName: string;\n\treadonly requiredEntry: string;\n\treadonly sourceCandidates: (context: BuiltinPackageCandidateContext) => string[];\n}\n\ninterface BuiltinPackageCandidateContext {\n\treadonly here: string;\n\treadonly packageDir: string;\n\treadonly isSourceCheckout: boolean;\n}\n\ninterface WorkspaceBuiltinSpec {\n\treadonly packageName: string;\n\treadonly workspaceDirName: string;\n\treadonly distDirName: string;\n\treadonly requiredEntry: string;\n}\n\nconst WORKSPACE_BUILTINS: readonly WorkspaceBuiltinSpec[] = [\n\t{\n\t\tpackageName: \"@bastani/workflows\",\n\t\tworkspaceDirName: \"workflows\",\n\t\tdistDirName: \"workflows\",\n\t\trequiredEntry: join(\"src\", \"extension\", \"index.ts\"),\n\t},\n\t{\n\t\tpackageName: \"@bastani/subagents\",\n\t\tworkspaceDirName: \"subagents\",\n\t\tdistDirName: \"subagents\",\n\t\trequiredEntry: join(\"src\", \"extension\", \"index.ts\"),\n\t},\n\t{\n\t\tpackageName: \"@bastani/mcp\",\n\t\tworkspaceDirName: \"mcp\",\n\t\tdistDirName: \"mcp\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n\t{\n\t\tpackageName: \"@bastani/web-access\",\n\t\tworkspaceDirName: \"web-access\",\n\t\tdistDirName: \"web-access\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n\t{\n\t\tpackageName: \"@bastani/intercom\",\n\t\tworkspaceDirName: \"intercom\",\n\t\tdistDirName: \"intercom\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n];\n\nconst BUILTIN_PACKAGES: readonly BuiltinPackageDescriptor[] = WORKSPACE_BUILTINS.map(\n\t(spec): BuiltinPackageDescriptor => ({\n\t\tpackageName: spec.packageName,\n\t\tdistDirName: spec.distDirName,\n\t\trequiredEntry: spec.requiredEntry,\n\t\tsourceCandidates: ({ here, packageDir, isSourceCheckout }) =>\n\t\t\tisSourceCheckout\n\t\t\t\t? [join(packageDir, \"..\", spec.workspaceDirName), join(here, \"..\", \"..\", \"..\", spec.workspaceDirName)]\n\t\t\t\t: [],\n\t}),\n);\n\nfunction readPackageName(packageJsonPath: string): string | undefined {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { name?: string };\n\t\treturn pkg.name;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction isPackageDir(dir: string, descriptor: BuiltinPackageDescriptor): boolean {\n\treturn (\n\t\texistsSync(join(dir, descriptor.requiredEntry)) &&\n\t\treadPackageName(join(dir, \"package.json\")) === descriptor.packageName\n\t);\n}\n\nfunction firstExistingPackageDir(candidates: string[], descriptor: BuiltinPackageDescriptor): string | undefined {\n\tconst seen = new Set<string>();\n\n\tfor (const candidate of candidates) {\n\t\tconst resolved = resolve(candidate);\n\t\tif (seen.has(resolved)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(resolved);\n\t\tif (isPackageDir(resolved, descriptor)) {\n\t\t\treturn resolved;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction distCandidates(context: BuiltinPackageCandidateContext, descriptor: BuiltinPackageDescriptor): string[] {\n\tconst { here, packageDir } = context;\n\treturn [\n\t\tjoin(here, \"..\", \"builtin\", descriptor.distDirName),\n\t\tjoin(packageDir, \"builtin\", descriptor.distDirName),\n\t\tjoin(packageDir, \"dist\", \"builtin\", descriptor.distDirName),\n\t];\n}\nfunction getBuiltinPackageCandidateContext(): BuiltinPackageCandidateContext {\n\tconst packageDir = getPackageDir();\n\t// In the split launcher the bundled import.meta.url is a foreign-OS build\n\t// path; fall back to the package dir (the executable dir), where `builtin/`\n\t// sits, so distCandidates still resolves.\n\tconst context: BuiltinPackageCandidateContext = {\n\t\there: moduleDirFromMetaUrl(import.meta.url),\n\t\tpackageDir,\n\t\tisSourceCheckout: false,\n\t};\n\treturn {\n\t\t...context,\n\t\tisSourceCheckout: existsSync(join(context.packageDir, \"src\", \"main.ts\")),\n\t};\n}\n\n/**\n * Built-in pi package roots shipped with this Atomic distribution.\n *\n * Development layout:\n * packages/coding-agent/src/core -> packages/<builtin>\n *\n * npm/dist layout:\n * packages/coding-agent/dist/core -> packages/coding-agent/dist/builtin/<package>\n *\n * Bun binary layout:\n * process executable dir -> builtin/<package>\n */\nexport function getBuiltinPackagePaths(): string[] {\n\tconst context = getBuiltinPackageCandidateContext();\n\n\treturn BUILTIN_PACKAGES.flatMap((descriptor) => {\n\t\tconst packageDir = firstExistingPackageDir(\n\t\t\t[...descriptor.sourceCandidates(context), ...distCandidates(context, descriptor)],\n\t\t\tdescriptor,\n\t\t);\n\t\treturn packageDir ? [packageDir] : [];\n\t});\n}\n"]}
1
+ {"version":3,"file":"builtin-packages.js","sourceRoot":"","sources":["../../src/core/builtin-packages.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { getPackageDir } from \"../config.ts\";\nimport { moduleDirFromMetaUrl } from \"../utils/split-launcher.ts\";\n\ninterface BuiltinPackageDescriptor {\n\treadonly packageName: string;\n\treadonly distDirName: string;\n\treadonly requiredEntry: string;\n\treadonly sourceCandidates: (context: BuiltinPackageCandidateContext) => string[];\n}\n\ninterface BuiltinPackageCandidateContext {\n\treadonly here: string;\n\treadonly packageDir: string;\n\treadonly isSourceCheckout: boolean;\n}\n\ninterface WorkspaceBuiltinSpec {\n\treadonly packageName: string;\n\treadonly workspaceDirName: string;\n\treadonly distDirName: string;\n\treadonly requiredEntry: string;\n}\n\nconst WORKSPACE_BUILTINS: readonly WorkspaceBuiltinSpec[] = [\n\t{\n\t\tpackageName: \"@bastani/workflows\",\n\t\tworkspaceDirName: \"workflows\",\n\t\tdistDirName: \"workflows\",\n\t\trequiredEntry: join(\"src\", \"extension\", \"index.ts\"),\n\t},\n\t{\n\t\tpackageName: \"@bastani/subagents\",\n\t\tworkspaceDirName: \"subagents\",\n\t\tdistDirName: \"subagents\",\n\t\trequiredEntry: join(\"src\", \"extension\", \"index.ts\"),\n\t},\n\t{\n\t\tpackageName: \"@bastani/mcp\",\n\t\tworkspaceDirName: \"mcp\",\n\t\tdistDirName: \"mcp\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n\t{\n\t\tpackageName: \"@bastani/web-access\",\n\t\tworkspaceDirName: \"web-access\",\n\t\tdistDirName: \"web-access\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n\t{\n\t\tpackageName: \"@bastani/i-have-adhd\",\n\t\tworkspaceDirName: \"i-have-adhd\",\n\t\tdistDirName: \"i-have-adhd\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n\t{\n\t\tpackageName: \"@bastani/intercom\",\n\t\tworkspaceDirName: \"intercom\",\n\t\tdistDirName: \"intercom\",\n\t\trequiredEntry: \"index.ts\",\n\t},\n];\n\nconst BUILTIN_PACKAGES: readonly BuiltinPackageDescriptor[] = WORKSPACE_BUILTINS.map(\n\t(spec): BuiltinPackageDescriptor => ({\n\t\tpackageName: spec.packageName,\n\t\tdistDirName: spec.distDirName,\n\t\trequiredEntry: spec.requiredEntry,\n\t\tsourceCandidates: ({ here, packageDir, isSourceCheckout }) =>\n\t\t\tisSourceCheckout\n\t\t\t\t? [join(packageDir, \"..\", spec.workspaceDirName), join(here, \"..\", \"..\", \"..\", spec.workspaceDirName)]\n\t\t\t\t: [],\n\t}),\n);\n\nfunction readPackageName(packageJsonPath: string): string | undefined {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { name?: string };\n\t\treturn pkg.name;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction isPackageDir(dir: string, descriptor: BuiltinPackageDescriptor): boolean {\n\treturn (\n\t\texistsSync(join(dir, descriptor.requiredEntry)) &&\n\t\treadPackageName(join(dir, \"package.json\")) === descriptor.packageName\n\t);\n}\n\nfunction firstExistingPackageDir(candidates: string[], descriptor: BuiltinPackageDescriptor): string | undefined {\n\tconst seen = new Set<string>();\n\n\tfor (const candidate of candidates) {\n\t\tconst resolved = resolve(candidate);\n\t\tif (seen.has(resolved)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(resolved);\n\t\tif (isPackageDir(resolved, descriptor)) {\n\t\t\treturn resolved;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction distCandidates(context: BuiltinPackageCandidateContext, descriptor: BuiltinPackageDescriptor): string[] {\n\tconst { here, packageDir } = context;\n\treturn [\n\t\tjoin(here, \"..\", \"builtin\", descriptor.distDirName),\n\t\tjoin(packageDir, \"builtin\", descriptor.distDirName),\n\t\tjoin(packageDir, \"dist\", \"builtin\", descriptor.distDirName),\n\t];\n}\nfunction getBuiltinPackageCandidateContext(): BuiltinPackageCandidateContext {\n\tconst packageDir = getPackageDir();\n\t// In the split launcher the bundled import.meta.url is a foreign-OS build\n\t// path; fall back to the package dir (the executable dir), where `builtin/`\n\t// sits, so distCandidates still resolves.\n\tconst context: BuiltinPackageCandidateContext = {\n\t\there: moduleDirFromMetaUrl(import.meta.url),\n\t\tpackageDir,\n\t\tisSourceCheckout: false,\n\t};\n\treturn {\n\t\t...context,\n\t\tisSourceCheckout: existsSync(join(context.packageDir, \"src\", \"main.ts\")),\n\t};\n}\n\n/**\n * Built-in pi package roots shipped with this Atomic distribution.\n *\n * Development layout:\n * packages/coding-agent/src/core -> packages/<builtin>\n *\n * npm/dist layout:\n * packages/coding-agent/dist/core -> packages/coding-agent/dist/builtin/<package>\n *\n * Bun binary layout:\n * process executable dir -> builtin/<package>\n */\nexport function getBuiltinPackagePaths(): string[] {\n\tconst context = getBuiltinPackageCandidateContext();\n\n\treturn BUILTIN_PACKAGES.flatMap((descriptor) => {\n\t\tconst packageDir = firstExistingPackageDir(\n\t\t\t[...descriptor.sourceCandidates(context), ...distCandidates(context, descriptor)],\n\t\t\tdescriptor,\n\t\t);\n\t\treturn packageDir ? [packageDir] : [];\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-fast-mode.d.ts","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-fast-mode.d.ts","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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"}
@@ -53,8 +53,13 @@ export function shouldUseNativeCodexFastMode(model, options) {
53
53
  isCodexFastModeNativeApi(model.api) &&
54
54
  options?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER);
55
55
  }
56
- function buildCodexFastModeBaseProviderOptions(options) {
56
+ function buildCodexFastModeBaseProviderOptions(model, options) {
57
+ // Native fast-mode streams bypass pi-ai's streamSimple base-options merge.
58
+ const samplingParams = model.samplingParams || options?.samplingParams
59
+ ? { ...model.samplingParams, ...options?.samplingParams }
60
+ : undefined;
57
61
  return {
62
+ samplingParams,
58
63
  temperature: options?.temperature,
59
64
  maxTokens: options?.maxTokens,
60
65
  signal: options?.signal,
@@ -78,14 +83,14 @@ export function mapCodexFastModeReasoningEffort(model, reasoning) {
78
83
  }
79
84
  export function buildOpenAIResponsesCodexFastModeOptions(model, options) {
80
85
  return {
81
- ...buildCodexFastModeBaseProviderOptions(options),
86
+ ...buildCodexFastModeBaseProviderOptions(model, options),
82
87
  reasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),
83
88
  serviceTier: options?.serviceTier,
84
89
  };
85
90
  }
86
91
  export function buildOpenAICodexResponsesCodexFastModeOptions(model, options) {
87
92
  return {
88
- ...buildCodexFastModeBaseProviderOptions(options),
93
+ ...buildCodexFastModeBaseProviderOptions(model, options),
89
94
  reasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),
90
95
  serviceTier: options?.serviceTier,
91
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"codex-fast-mode.js","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tclampThinkingLevel,\n\ttype Model,\n\ttype OpenAICodexResponsesOptions,\n\ttype OpenAIResponsesOptions,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n\tstreamOpenAICodexResponses,\n\tstreamOpenAIResponses,\n\tstreamSimple,\n\ttype ThinkingLevel,\n} from \"@earendil-works/pi-ai/compat\";\nimport type { OrchestrationContext } from \"./extensions/index.ts\";\n\nexport const CODEX_FAST_MODE_SERVICE_TIER = \"priority\" as const;\n\nexport interface CodexFastModeResolvedSettings {\n\tchat: boolean;\n\tworkflow: boolean;\n}\n\nexport type CodexFastModeScope = \"chat\" | \"workflow\";\n\nexport interface CodexFastModeStreamOptions extends SimpleStreamOptions {\n\tserviceTier?: typeof CODEX_FAST_MODE_SERVICE_TIER;\n}\n\nexport interface CodexFastModeStreamers {\n\tstreamSimple: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\tstreamOpenAIResponses: (\n\t\tmodel: Model<\"openai-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAIResponsesOptions,\n\t) => AssistantMessageEventStream;\n\tstreamOpenAICodexResponses: (\n\t\tmodel: Model<\"openai-codex-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAICodexResponsesOptions,\n\t) => AssistantMessageEventStream;\n}\n\nconst DEFAULT_CODEX_FAST_MODE_STREAMERS: CodexFastModeStreamers = {\n\tstreamSimple,\n\tstreamOpenAIResponses,\n\tstreamOpenAICodexResponses,\n};\n\nexport function isCodexFastModeSupportedProvider(provider: string): boolean {\n\treturn provider === \"openai\" || provider === \"openai-codex\";\n}\n\nexport function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean {\n\tconst provider = modelId?.split(\"/\", 1)[0];\n\treturn provider !== undefined && isCodexFastModeSupportedProvider(provider);\n}\n\nexport function isCodexFastModeSupportedModel(model: Pick<Model<Api>, \"provider\">): boolean {\n\treturn isCodexFastModeSupportedProvider(model.provider);\n}\n\nexport function hasSupportedCodexFastModeModel(models: readonly Pick<Model<Api>, \"provider\">[]): boolean {\n\treturn models.some(isCodexFastModeSupportedModel);\n}\n\nexport function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean {\n\treturn context?.kind === \"workflow-stage\";\n}\n\nexport function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope {\n\treturn isWorkflowStageOrchestrationContext(context) ? \"workflow\" : \"chat\";\n}\n\nexport function isCodexFastModeEnabledForScope(\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn settings[scope];\n}\n\nexport function isCodexFastModeEnabledForSession(\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn isCodexFastModeEnabledForScope(settings, getCodexFastModeScope(context));\n}\n\nexport function shouldApplyCodexFastModeForScope(\n\tmodel: Pick<Model<Api>, \"provider\">,\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn isCodexFastModeSupportedModel(model) && isCodexFastModeEnabledForScope(settings, scope);\n}\n\nexport function shouldApplyCodexFastMode(\n\tmodel: Pick<Model<Api>, \"provider\">,\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context));\n}\n\nexport function withCodexFastModeStreamOptions(\n\toptions: SimpleStreamOptions | undefined,\n\tenabled: boolean,\n): CodexFastModeStreamOptions | undefined {\n\tif (!enabled) {\n\t\treturn options;\n\t}\n\n\treturn {\n\t\t...(options ?? {}),\n\t\tserviceTier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function isCodexFastModeNativeApi(api: Api): api is \"openai-responses\" | \"openai-codex-responses\" {\n\treturn api === \"openai-responses\" || api === \"openai-codex-responses\";\n}\n\nexport function shouldUseNativeCodexFastMode(\n\tmodel: Pick<Model<Api>, \"api\" | \"provider\">,\n\toptions: CodexFastModeStreamOptions | undefined,\n): boolean {\n\treturn (\n\t\tisCodexFastModeSupportedModel(model) &&\n\t\tisCodexFastModeNativeApi(model.api) &&\n\t\toptions?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER\n\t);\n}\n\nfunction buildCodexFastModeBaseProviderOptions(options: CodexFastModeStreamOptions | undefined): StreamOptions {\n\treturn {\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: options?.apiKey,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\theaders: options?.headers,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t};\n}\n\nexport function mapCodexFastModeReasoningEffort(\n\tmodel: Model<Api>,\n\treasoning: ThinkingLevel | undefined,\n): ThinkingLevel | undefined {\n\tconst clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;\n\treturn clampedReasoning === \"off\" ? undefined : clampedReasoning;\n}\n\nexport function buildOpenAIResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAIResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function buildOpenAICodexResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAICodexResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function streamWithCodexFastMode(\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: CodexFastModeStreamOptions | undefined,\n\tstreamers: CodexFastModeStreamers = DEFAULT_CODEX_FAST_MODE_STREAMERS,\n): AssistantMessageEventStream {\n\tif (shouldUseNativeCodexFastMode(model, options)) {\n\t\tif (model.api === \"openai-responses\") {\n\t\t\treturn streamers.streamOpenAIResponses(\n\t\t\t\tmodel as Model<\"openai-responses\">,\n\t\t\t\tcontext,\n\t\t\t\tbuildOpenAIResponsesCodexFastModeOptions(model, options),\n\t\t\t);\n\t\t}\n\n\t\treturn streamers.streamOpenAICodexResponses(\n\t\t\tmodel as Model<\"openai-codex-responses\">,\n\t\t\tcontext,\n\t\t\tbuildOpenAICodexResponsesCodexFastModeOptions(model, options),\n\t\t);\n\t}\n\n\treturn streamers.streamSimple(model, context, options);\n}\n\nfunction isObjectPayload(payload: unknown): payload is Record<string, unknown> {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload);\n}\n\nexport function withCodexFastModePayload(payload: unknown, enabled: boolean): unknown {\n\tif (!enabled || !isObjectPayload(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string {\n\treturn enabled ? `${modelName} fast` : modelName;\n}\n"]}
1
+ {"version":3,"file":"codex-fast-mode.js","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tclampThinkingLevel,\n\ttype Model,\n\ttype OpenAICodexResponsesOptions,\n\ttype OpenAIResponsesOptions,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n\tstreamOpenAICodexResponses,\n\tstreamOpenAIResponses,\n\tstreamSimple,\n\ttype ThinkingLevel,\n} from \"@earendil-works/pi-ai/compat\";\nimport type { OrchestrationContext } from \"./extensions/index.ts\";\n\nexport const CODEX_FAST_MODE_SERVICE_TIER = \"priority\" as const;\n\nexport interface CodexFastModeResolvedSettings {\n\tchat: boolean;\n\tworkflow: boolean;\n}\n\nexport type CodexFastModeScope = \"chat\" | \"workflow\";\n\nexport interface CodexFastModeStreamOptions extends SimpleStreamOptions {\n\tserviceTier?: typeof CODEX_FAST_MODE_SERVICE_TIER;\n}\n\nexport interface CodexFastModeStreamers {\n\tstreamSimple: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\tstreamOpenAIResponses: (\n\t\tmodel: Model<\"openai-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAIResponsesOptions,\n\t) => AssistantMessageEventStream;\n\tstreamOpenAICodexResponses: (\n\t\tmodel: Model<\"openai-codex-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAICodexResponsesOptions,\n\t) => AssistantMessageEventStream;\n}\n\nconst DEFAULT_CODEX_FAST_MODE_STREAMERS: CodexFastModeStreamers = {\n\tstreamSimple,\n\tstreamOpenAIResponses,\n\tstreamOpenAICodexResponses,\n};\n\nexport function isCodexFastModeSupportedProvider(provider: string): boolean {\n\treturn provider === \"openai\" || provider === \"openai-codex\";\n}\n\nexport function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean {\n\tconst provider = modelId?.split(\"/\", 1)[0];\n\treturn provider !== undefined && isCodexFastModeSupportedProvider(provider);\n}\n\nexport function isCodexFastModeSupportedModel(model: Pick<Model<Api>, \"provider\">): boolean {\n\treturn isCodexFastModeSupportedProvider(model.provider);\n}\n\nexport function hasSupportedCodexFastModeModel(models: readonly Pick<Model<Api>, \"provider\">[]): boolean {\n\treturn models.some(isCodexFastModeSupportedModel);\n}\n\nexport function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean {\n\treturn context?.kind === \"workflow-stage\";\n}\n\nexport function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope {\n\treturn isWorkflowStageOrchestrationContext(context) ? \"workflow\" : \"chat\";\n}\n\nexport function isCodexFastModeEnabledForScope(\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn settings[scope];\n}\n\nexport function isCodexFastModeEnabledForSession(\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn isCodexFastModeEnabledForScope(settings, getCodexFastModeScope(context));\n}\n\nexport function shouldApplyCodexFastModeForScope(\n\tmodel: Pick<Model<Api>, \"provider\">,\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn isCodexFastModeSupportedModel(model) && isCodexFastModeEnabledForScope(settings, scope);\n}\n\nexport function shouldApplyCodexFastMode(\n\tmodel: Pick<Model<Api>, \"provider\">,\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context));\n}\n\nexport function withCodexFastModeStreamOptions(\n\toptions: SimpleStreamOptions | undefined,\n\tenabled: boolean,\n): CodexFastModeStreamOptions | undefined {\n\tif (!enabled) {\n\t\treturn options;\n\t}\n\n\treturn {\n\t\t...(options ?? {}),\n\t\tserviceTier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function isCodexFastModeNativeApi(api: Api): api is \"openai-responses\" | \"openai-codex-responses\" {\n\treturn api === \"openai-responses\" || api === \"openai-codex-responses\";\n}\n\nexport function shouldUseNativeCodexFastMode(\n\tmodel: Pick<Model<Api>, \"api\" | \"provider\">,\n\toptions: CodexFastModeStreamOptions | undefined,\n): boolean {\n\treturn (\n\t\tisCodexFastModeSupportedModel(model) &&\n\t\tisCodexFastModeNativeApi(model.api) &&\n\t\toptions?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER\n\t);\n}\n\nfunction buildCodexFastModeBaseProviderOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): StreamOptions {\n\t// Native fast-mode streams bypass pi-ai's streamSimple base-options merge.\n\tconst samplingParams =\n\t\tmodel.samplingParams || options?.samplingParams\n\t\t\t? { ...model.samplingParams, ...options?.samplingParams }\n\t\t\t: undefined;\n\treturn {\n\t\tsamplingParams,\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: options?.apiKey,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\theaders: options?.headers,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t};\n}\n\nexport function mapCodexFastModeReasoningEffort(\n\tmodel: Model<Api>,\n\treasoning: ThinkingLevel | undefined,\n): ThinkingLevel | undefined {\n\tconst clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;\n\treturn clampedReasoning === \"off\" ? undefined : clampedReasoning;\n}\n\nexport function buildOpenAIResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAIResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function buildOpenAICodexResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAICodexResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function streamWithCodexFastMode(\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: CodexFastModeStreamOptions | undefined,\n\tstreamers: CodexFastModeStreamers = DEFAULT_CODEX_FAST_MODE_STREAMERS,\n): AssistantMessageEventStream {\n\tif (shouldUseNativeCodexFastMode(model, options)) {\n\t\tif (model.api === \"openai-responses\") {\n\t\t\treturn streamers.streamOpenAIResponses(\n\t\t\t\tmodel as Model<\"openai-responses\">,\n\t\t\t\tcontext,\n\t\t\t\tbuildOpenAIResponsesCodexFastModeOptions(model, options),\n\t\t\t);\n\t\t}\n\n\t\treturn streamers.streamOpenAICodexResponses(\n\t\t\tmodel as Model<\"openai-codex-responses\">,\n\t\t\tcontext,\n\t\t\tbuildOpenAICodexResponsesCodexFastModeOptions(model, options),\n\t\t);\n\t}\n\n\treturn streamers.streamSimple(model, context, options);\n}\n\nfunction isObjectPayload(payload: unknown): payload is Record<string, unknown> {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload);\n}\n\nexport function withCodexFastModePayload(payload: unknown, enabled: boolean): unknown {\n\tif (!enabled || !isObjectPayload(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string {\n\treturn enabled ? `${modelName} fast` : modelName;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"branch-summarization.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/branch-summarization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAGhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAuB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EAIN,KAAK,cAAc,EAInB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IACjC,mEAAmE;IACnE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,gDAAgD;IAChD,OAAO,EAAE,cAAc,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACpC,mDAAmD;IACnD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC5C,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yDAAyD;IACzD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,cAAc,CAAC;CAC3B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,MAAM,GACd,oBAAoB,CAkCtB;AA4CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,WAAW,GAAE,MAAU,GAAG,iBAAiB,CAqDxG;AAwCD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAiH9B"}
1
+ {"version":3,"file":"branch-summarization.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/branch-summarization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAGhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAuB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EAIN,KAAK,cAAc,EAInB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IACjC,mEAAmE;IACnE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,gDAAgD;IAChD,OAAO,EAAE,cAAc,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACpC,mDAAmD;IACnD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC5C,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yDAAyD;IACzD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,cAAc,CAAC;CAC3B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,QAAQ,EAAE,MAAM,GACd,oBAAoB,CAkCtB;AA6CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,WAAW,GAAE,MAAU,GAAG,iBAAiB,CAqDxG;AAwCD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAiH9B"}
@@ -81,6 +81,7 @@ function getMessageFromEntry(entry) {
81
81
  case "custom":
82
82
  case "label":
83
83
  case "session_info":
84
+ case "session_summary":
84
85
  case "context_compaction":
85
86
  return undefined;
86
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"branch-summarization.js","sourceRoot":"","sources":["../../../src/core/compaction/branch-summarization.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Branch summarization for tree navigation.\n *\n * When navigating to a different point in the session tree, this generates\n * a summary of the branch being left so context isn't lost.\n */\n\nimport type { AgentMessage, StreamFn, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport {\n\ttype ProviderHeaders,\n\ttype RetryCallbacks,\n\ttype RetryPolicy,\n\tretryAssistantCall,\n\tuuidv7,\n} from \"@earendil-works/pi-ai\";\nimport type { Api, Model, SimpleStreamOptions, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { completeSimple } from \"@earendil-works/pi-ai/compat\";\nimport { convertToLlm, createBranchSummaryMessage, createCustomMessage } from \"../messages.ts\";\nimport type { ReadonlySessionManager, SessionEntry } from \"../session-manager.ts\";\nimport { estimateTokens } from \"./compaction.ts\";\nimport { resolvePlannerRequest } from \"./range-planner.js\";\nimport {\n\tcomputeFileLists,\n\tcreateFileOps,\n\textractFileOpsFromMessage,\n\ttype FileOperations,\n\tformatFileOperations,\n\tSUMMARIZATION_SYSTEM_PROMPT,\n\tserializeConversation,\n} from \"./utils.ts\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BranchSummaryResult {\n\tsummary?: string;\n\treadFiles?: string[];\n\tmodifiedFiles?: string[];\n\tusage?: Usage;\n\taborted?: boolean;\n\terror?: string;\n}\n\n/** Details stored in BranchSummaryEntry.details for file tracking */\nexport interface BranchSummaryDetails {\n\treadFiles: string[];\n\tmodifiedFiles: string[];\n}\n\nexport type { FileOperations } from \"./utils.ts\";\n\nexport interface BranchPreparation {\n\t/** Messages extracted for summarization, in chronological order */\n\tmessages: AgentMessage[];\n\t/** File operations extracted from tool calls */\n\tfileOps: FileOperations;\n\t/** Total estimated tokens in messages */\n\ttotalTokens: number;\n}\n\nexport interface CollectEntriesResult {\n\t/** Entries to summarize, in chronological order */\n\tentries: SessionEntry[];\n\t/** Common ancestor between old and new position, if any */\n\tcommonAncestorId: string | null;\n}\n\nexport interface GenerateBranchSummaryOptions {\n\t/** Model to use for summarization */\n\tmodel: Model<Api>;\n\t/** API key for the model; omitted for header-only bearer authentication. */\n\tapiKey?: string;\n\t/** Request headers for the model */\n\theaders?: ProviderHeaders;\n\t/** Credential-specific request endpoint for the model */\n\tbaseUrl?: string;\n\t/** Abort signal for cancellation */\n\tsignal: AbortSignal;\n\t/** Optional custom instructions for summarization */\n\tcustomInstructions?: string;\n\t/** If true, customInstructions replaces the default prompt instead of being appended */\n\treplaceInstructions?: boolean;\n\t/** Tokens reserved for prompt + LLM response (default 16384) */\n\treserveTokens?: number;\n\t/**\n\t * Session reasoning level, inherited by the summarization request.\n\t * No output cap is sent, so thinking has no artificial budget to exhaust.\n\t */\n\tthinkingLevel?: ThinkingLevel;\n\t/** Optional session stream function. Used to preserve SDK request behavior without mutating agent state. */\n\tstreamFn?: StreamFn;\n\t/** Retry policy for transient summarization failures. */\n\tretry?: RetryPolicy;\n\t/** Retry lifecycle callbacks. */\n\tcallbacks?: RetryCallbacks;\n}\n\n// ============================================================================\n// Entry Collection\n// ============================================================================\n\n/**\n * Collect entries that should be summarized when navigating from one position to another.\n *\n * Walks from oldLeafId back to the common ancestor with targetId, collecting entries\n * along the way. Does NOT stop at legacy compaction entries, but those entries are\n * inert and are not fed into branch summarization prompts.\n *\n * @param session - Session manager (read-only access)\n * @param oldLeafId - Current position (where we're navigating from)\n * @param targetId - Target position (where we're navigating to)\n * @returns Entries to summarize and the common ancestor\n */\nexport function collectEntriesForBranchSummary(\n\tsession: ReadonlySessionManager,\n\toldLeafId: string | null,\n\ttargetId: string,\n): CollectEntriesResult {\n\t// If no old position, nothing to summarize\n\tif (!oldLeafId) {\n\t\treturn { entries: [], commonAncestorId: null };\n\t}\n\n\t// Find common ancestor (deepest node that's on both paths)\n\tconst oldPath = new Set(session.getBranch(oldLeafId).map((e) => e.id));\n\tconst targetPath = session.getBranch(targetId);\n\n\t// targetPath is root-first, so iterate backwards to find deepest common ancestor\n\tlet commonAncestorId: string | null = null;\n\tfor (let i = targetPath.length - 1; i >= 0; i--) {\n\t\tif (oldPath.has(targetPath[i].id)) {\n\t\t\tcommonAncestorId = targetPath[i].id;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Collect entries from old leaf back to common ancestor\n\tconst entries: SessionEntry[] = [];\n\tlet current: string | null = oldLeafId;\n\n\twhile (current && current !== commonAncestorId) {\n\t\tconst entry = session.getEntry(current);\n\t\tif (!entry) break;\n\t\tentries.push(entry);\n\t\tcurrent = entry.parentId;\n\t}\n\n\t// Reverse to get chronological order\n\tentries.reverse();\n\n\treturn { entries, commonAncestorId };\n}\n\n// ============================================================================\n// Entry to Message Conversion\n// ============================================================================\n\n/**\n * Extract AgentMessage from a session entry.\n * Similar to getMessageFromEntry in compaction.ts, with legacy compaction entries kept inert.\n */\nfunction getMessageFromEntry(entry: SessionEntry): AgentMessage | undefined {\n\tswitch (entry.type) {\n\t\tcase \"message\":\n\t\t\t// Skip tool results - context is in assistant's tool call\n\t\t\tif (entry.message.role === \"toolResult\") return undefined;\n\t\t\treturn entry.message;\n\n\t\tcase \"custom_message\":\n\t\t\treturn createCustomMessage(\n\t\t\t\tentry.customType,\n\t\t\t\tentry.content,\n\t\t\t\tentry.display,\n\t\t\t\tentry.details,\n\t\t\t\tentry.timestamp,\n\t\t\t\tentry.excludeFromContext,\n\t\t\t);\n\n\t\tcase \"branch_summary\":\n\t\t\treturn createBranchSummaryMessage(entry.summary, entry.fromId, entry.timestamp);\n\n\t\tcase \"compaction\":\n\t\t\treturn undefined;\n\n\t\t// These don't contribute to conversation content\n\t\tcase \"thinking_level_change\":\n\t\tcase \"model_change\":\n\t\tcase \"custom\":\n\t\tcase \"label\":\n\t\tcase \"session_info\":\n\t\tcase \"context_compaction\":\n\t\t\treturn undefined;\n\t}\n}\n\n/**\n * Prepare entries for summarization with token budget.\n *\n * Walks entries from NEWEST to OLDEST, adding messages until we hit the token budget.\n * This ensures we keep the most recent context when the branch is too long.\n *\n * Also collects file operations from:\n * - Tool calls in assistant messages\n * - Existing branch_summary entries' details (for cumulative tracking)\n *\n * @param entries - Entries in chronological order\n * @param tokenBudget - Maximum tokens to include (0 = no limit)\n */\nexport function prepareBranchEntries(entries: SessionEntry[], tokenBudget: number = 0): BranchPreparation {\n\tconst messages: AgentMessage[] = [];\n\tconst fileOps = createFileOps();\n\tconst filteredEntries = entries;\n\tlet totalTokens = 0;\n\n\t// First pass: collect file ops from ALL entries (even if they don't fit in token budget)\n\t// This ensures we capture cumulative file tracking from nested branch summaries\n\t// Only extract from pi-generated summaries (fromHook !== true), not extension-generated ones\n\tfor (const entry of filteredEntries) {\n\t\tif (entry.type === \"branch_summary\" && !entry.fromHook && entry.details) {\n\t\t\tconst details = entry.details as BranchSummaryDetails;\n\t\t\tif (Array.isArray(details.readFiles)) {\n\t\t\t\tfor (const f of details.readFiles) fileOps.read.add(f);\n\t\t\t}\n\t\t\tif (Array.isArray(details.modifiedFiles)) {\n\t\t\t\t// Modified files go into both edited and written for proper deduplication\n\t\t\t\tfor (const f of details.modifiedFiles) {\n\t\t\t\t\tfileOps.edited.add(f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Second pass: walk from newest to oldest, adding messages until token budget\n\tfor (let i = filteredEntries.length - 1; i >= 0; i--) {\n\t\tconst entry = filteredEntries[i];\n\t\tconst message = getMessageFromEntry(entry);\n\t\tif (!message) continue;\n\n\t\t// Extract file ops from assistant messages (tool calls)\n\t\textractFileOpsFromMessage(message, fileOps);\n\n\t\tconst tokens = estimateTokens(message);\n\n\t\t// Check budget before adding\n\t\tif (tokenBudget > 0 && totalTokens + tokens > tokenBudget) {\n\t\t\t// If this is a branch summary entry, try to fit it anyway as it's important context\n\t\t\tif (entry.type === \"branch_summary\") {\n\t\t\t\tif (totalTokens < tokenBudget * 0.9) {\n\t\t\t\t\tmessages.unshift(message);\n\t\t\t\t\ttotalTokens += tokens;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Stop - we've hit the budget\n\t\t\tbreak;\n\t\t}\n\n\t\tmessages.unshift(message);\n\t\ttotalTokens += tokens;\n\t}\n\n\treturn { messages, fileOps, totalTokens };\n}\n\n// ============================================================================\n// Summary Generation\n// ============================================================================\n\nconst BRANCH_SUMMARY_PREAMBLE = `The user explored a different conversation branch before returning here.\nSummary of that exploration:\n\n`;\n\nconst BRANCH_SUMMARY_PROMPT = `Create a structured summary of this conversation branch for context when returning later.\n\nUse this EXACT format:\n\n## Goal\n[What was the user trying to accomplish in this branch?]\n\n## Constraints & Preferences\n- [Any constraints, preferences, or requirements mentioned]\n- [Or \"(none)\" if none were mentioned]\n\n## Progress\n### Done\n- [x] [Completed tasks/changes]\n\n### In Progress\n- [ ] [Work that was started but not finished]\n\n### Blocked\n- [Issues preventing progress, if any]\n\n## Key Decisions\n- **[Decision]**: [Brief rationale]\n\n## Next Steps\n1. [What should happen next to continue this work]\n\nKeep each section concise. Preserve exact file paths, function names, and error messages.`;\n\n/**\n * Generate a summary of abandoned branch entries.\n *\n * @param entries - Session entries to summarize (chronological order)\n * @param options - Generation options\n */\nexport async function generateBranchSummary(\n\tentries: SessionEntry[],\n\toptions: GenerateBranchSummaryOptions,\n): Promise<BranchSummaryResult> {\n\tconst {\n\t\tmodel,\n\t\tapiKey,\n\t\theaders,\n\t\tbaseUrl,\n\t\tsignal,\n\t\tcustomInstructions,\n\t\treplaceInstructions,\n\t\treserveTokens = 16384,\n\t\tthinkingLevel,\n\t\tstreamFn,\n\t\tretry,\n\t\tcallbacks,\n\t} = options;\n\n\t// Token budget = context window minus reserved space for prompt + response\n\tconst contextWindow = model.contextWindow || 128000;\n\tconst tokenBudget = contextWindow - reserveTokens;\n\n\tconst { messages, fileOps } = prepareBranchEntries(entries, tokenBudget);\n\n\tif (messages.length === 0) {\n\t\treturn { summary: \"No content to summarize\" };\n\t}\n\n\t// Transform to LLM-compatible messages, then serialize to text\n\t// Serialization prevents the model from treating it as a conversation to continue\n\tconst llmMessages = convertToLlm(messages);\n\tconst conversationText = serializeConversation(llmMessages);\n\n\t// Build prompt\n\tlet instructions: string;\n\tif (replaceInstructions && customInstructions) {\n\t\tinstructions = customInstructions;\n\t} else if (customInstructions) {\n\t\tinstructions = `${BRANCH_SUMMARY_PROMPT}\\n\\nAdditional focus: ${customInstructions}`;\n\t} else {\n\t\tinstructions = BRANCH_SUMMARY_PROMPT;\n\t}\n\tconst promptText = `<conversation>\\n${conversationText}\\n</conversation>\\n\\n${instructions}`;\n\n\tconst summarizationMessages = [\n\t\t{\n\t\t\trole: \"user\" as const,\n\t\t\tcontent: [{ type: \"text\" as const, text: promptText }],\n\t\t\ttimestamp: Date.now(),\n\t\t},\n\t];\n\n\t// Call LLM for summarization. Prefer the session stream function so SDK\n\t// request behavior stays consistent without mutating agent state.\n\tconst context = { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages };\n\tconst requestModel = baseUrl === undefined || baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n\t// Same budget rule as the compaction planner: no output cap is sent, so\n\t// pi-ai's context clamp is the only bound and the inherited reasoning level\n\t// has no artificial budget to exhaust. `reserveTokens` keeps its input-side\n\t// meaning above, unchanged.\n\tconst budget = resolvePlannerRequest(requestModel, thinkingLevel);\n\tconst requestOptions: SimpleStreamOptions = {\n\t\tapiKey,\n\t\theaders,\n\t\tsignal,\n\t\tcacheRetention: \"none\",\n\t\tsessionId: uuidv7(),\n\t\t...(budget.reasoning && budget.reasoning !== \"off\" ? { reasoning: budget.reasoning } : {}),\n\t};\n\tconst response = await (async () => {\n\t\ttry {\n\t\t\treturn await retryAssistantCall(\n\t\t\t\tasync () =>\n\t\t\t\t\tstreamFn\n\t\t\t\t\t\t? (await streamFn(requestModel, context, requestOptions)).result()\n\t\t\t\t\t\t: completeSimple(requestModel, context, requestOptions),\n\t\t\t\tretry,\n\t\t\t\tsignal,\n\t\t\t\tcallbacks,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (signal.aborted) return undefined;\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\" as const,\n\t\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\t};\n\t\t}\n\t})();\n\n\t// Check if aborted or errored\n\tif (!response || response.stopReason === \"aborted\") {\n\t\treturn { aborted: true };\n\t}\n\tif (response.stopReason === \"error\") {\n\t\treturn { error: response.errorMessage || \"Summarization failed\" };\n\t}\n\n\tlet summary = response.content\n\t\t.filter((c): c is { type: \"text\"; text: string } => c.type === \"text\")\n\t\t.map((c) => c.text)\n\t\t.join(\"\\n\");\n\n\t// Prepend preamble to provide context about the branch summary\n\tsummary = BRANCH_SUMMARY_PREAMBLE + summary;\n\n\t// Compute file lists and append to summary\n\tconst { readFiles, modifiedFiles } = computeFileLists(fileOps);\n\tsummary += formatFileOperations(readFiles, modifiedFiles);\n\n\treturn {\n\t\tsummary: summary || \"No summary generated\",\n\t\tusage: response.usage,\n\t\treadFiles,\n\t\tmodifiedFiles,\n\t};\n}\n"]}
1
+ {"version":3,"file":"branch-summarization.js","sourceRoot":"","sources":["../../../src/core/compaction/branch-summarization.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Branch summarization for tree navigation.\n *\n * When navigating to a different point in the session tree, this generates\n * a summary of the branch being left so context isn't lost.\n */\n\nimport type { AgentMessage, StreamFn, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport {\n\ttype ProviderHeaders,\n\ttype RetryCallbacks,\n\ttype RetryPolicy,\n\tretryAssistantCall,\n\tuuidv7,\n} from \"@earendil-works/pi-ai\";\nimport type { Api, Model, SimpleStreamOptions, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { completeSimple } from \"@earendil-works/pi-ai/compat\";\nimport { convertToLlm, createBranchSummaryMessage, createCustomMessage } from \"../messages.ts\";\nimport type { ReadonlySessionManager, SessionEntry } from \"../session-manager.ts\";\nimport { estimateTokens } from \"./compaction.ts\";\nimport { resolvePlannerRequest } from \"./range-planner.js\";\nimport {\n\tcomputeFileLists,\n\tcreateFileOps,\n\textractFileOpsFromMessage,\n\ttype FileOperations,\n\tformatFileOperations,\n\tSUMMARIZATION_SYSTEM_PROMPT,\n\tserializeConversation,\n} from \"./utils.ts\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BranchSummaryResult {\n\tsummary?: string;\n\treadFiles?: string[];\n\tmodifiedFiles?: string[];\n\tusage?: Usage;\n\taborted?: boolean;\n\terror?: string;\n}\n\n/** Details stored in BranchSummaryEntry.details for file tracking */\nexport interface BranchSummaryDetails {\n\treadFiles: string[];\n\tmodifiedFiles: string[];\n}\n\nexport type { FileOperations } from \"./utils.ts\";\n\nexport interface BranchPreparation {\n\t/** Messages extracted for summarization, in chronological order */\n\tmessages: AgentMessage[];\n\t/** File operations extracted from tool calls */\n\tfileOps: FileOperations;\n\t/** Total estimated tokens in messages */\n\ttotalTokens: number;\n}\n\nexport interface CollectEntriesResult {\n\t/** Entries to summarize, in chronological order */\n\tentries: SessionEntry[];\n\t/** Common ancestor between old and new position, if any */\n\tcommonAncestorId: string | null;\n}\n\nexport interface GenerateBranchSummaryOptions {\n\t/** Model to use for summarization */\n\tmodel: Model<Api>;\n\t/** API key for the model; omitted for header-only bearer authentication. */\n\tapiKey?: string;\n\t/** Request headers for the model */\n\theaders?: ProviderHeaders;\n\t/** Credential-specific request endpoint for the model */\n\tbaseUrl?: string;\n\t/** Abort signal for cancellation */\n\tsignal: AbortSignal;\n\t/** Optional custom instructions for summarization */\n\tcustomInstructions?: string;\n\t/** If true, customInstructions replaces the default prompt instead of being appended */\n\treplaceInstructions?: boolean;\n\t/** Tokens reserved for prompt + LLM response (default 16384) */\n\treserveTokens?: number;\n\t/**\n\t * Session reasoning level, inherited by the summarization request.\n\t * No output cap is sent, so thinking has no artificial budget to exhaust.\n\t */\n\tthinkingLevel?: ThinkingLevel;\n\t/** Optional session stream function. Used to preserve SDK request behavior without mutating agent state. */\n\tstreamFn?: StreamFn;\n\t/** Retry policy for transient summarization failures. */\n\tretry?: RetryPolicy;\n\t/** Retry lifecycle callbacks. */\n\tcallbacks?: RetryCallbacks;\n}\n\n// ============================================================================\n// Entry Collection\n// ============================================================================\n\n/**\n * Collect entries that should be summarized when navigating from one position to another.\n *\n * Walks from oldLeafId back to the common ancestor with targetId, collecting entries\n * along the way. Does NOT stop at legacy compaction entries, but those entries are\n * inert and are not fed into branch summarization prompts.\n *\n * @param session - Session manager (read-only access)\n * @param oldLeafId - Current position (where we're navigating from)\n * @param targetId - Target position (where we're navigating to)\n * @returns Entries to summarize and the common ancestor\n */\nexport function collectEntriesForBranchSummary(\n\tsession: ReadonlySessionManager,\n\toldLeafId: string | null,\n\ttargetId: string,\n): CollectEntriesResult {\n\t// If no old position, nothing to summarize\n\tif (!oldLeafId) {\n\t\treturn { entries: [], commonAncestorId: null };\n\t}\n\n\t// Find common ancestor (deepest node that's on both paths)\n\tconst oldPath = new Set(session.getBranch(oldLeafId).map((e) => e.id));\n\tconst targetPath = session.getBranch(targetId);\n\n\t// targetPath is root-first, so iterate backwards to find deepest common ancestor\n\tlet commonAncestorId: string | null = null;\n\tfor (let i = targetPath.length - 1; i >= 0; i--) {\n\t\tif (oldPath.has(targetPath[i].id)) {\n\t\t\tcommonAncestorId = targetPath[i].id;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Collect entries from old leaf back to common ancestor\n\tconst entries: SessionEntry[] = [];\n\tlet current: string | null = oldLeafId;\n\n\twhile (current && current !== commonAncestorId) {\n\t\tconst entry = session.getEntry(current);\n\t\tif (!entry) break;\n\t\tentries.push(entry);\n\t\tcurrent = entry.parentId;\n\t}\n\n\t// Reverse to get chronological order\n\tentries.reverse();\n\n\treturn { entries, commonAncestorId };\n}\n\n// ============================================================================\n// Entry to Message Conversion\n// ============================================================================\n\n/**\n * Extract AgentMessage from a session entry.\n * Similar to getMessageFromEntry in compaction.ts, with legacy compaction entries kept inert.\n */\nfunction getMessageFromEntry(entry: SessionEntry): AgentMessage | undefined {\n\tswitch (entry.type) {\n\t\tcase \"message\":\n\t\t\t// Skip tool results - context is in assistant's tool call\n\t\t\tif (entry.message.role === \"toolResult\") return undefined;\n\t\t\treturn entry.message;\n\n\t\tcase \"custom_message\":\n\t\t\treturn createCustomMessage(\n\t\t\t\tentry.customType,\n\t\t\t\tentry.content,\n\t\t\t\tentry.display,\n\t\t\t\tentry.details,\n\t\t\t\tentry.timestamp,\n\t\t\t\tentry.excludeFromContext,\n\t\t\t);\n\n\t\tcase \"branch_summary\":\n\t\t\treturn createBranchSummaryMessage(entry.summary, entry.fromId, entry.timestamp);\n\n\t\tcase \"compaction\":\n\t\t\treturn undefined;\n\n\t\t// These don't contribute to conversation content\n\t\tcase \"thinking_level_change\":\n\t\tcase \"model_change\":\n\t\tcase \"custom\":\n\t\tcase \"label\":\n\t\tcase \"session_info\":\n\t\tcase \"session_summary\":\n\t\tcase \"context_compaction\":\n\t\t\treturn undefined;\n\t}\n}\n\n/**\n * Prepare entries for summarization with token budget.\n *\n * Walks entries from NEWEST to OLDEST, adding messages until we hit the token budget.\n * This ensures we keep the most recent context when the branch is too long.\n *\n * Also collects file operations from:\n * - Tool calls in assistant messages\n * - Existing branch_summary entries' details (for cumulative tracking)\n *\n * @param entries - Entries in chronological order\n * @param tokenBudget - Maximum tokens to include (0 = no limit)\n */\nexport function prepareBranchEntries(entries: SessionEntry[], tokenBudget: number = 0): BranchPreparation {\n\tconst messages: AgentMessage[] = [];\n\tconst fileOps = createFileOps();\n\tconst filteredEntries = entries;\n\tlet totalTokens = 0;\n\n\t// First pass: collect file ops from ALL entries (even if they don't fit in token budget)\n\t// This ensures we capture cumulative file tracking from nested branch summaries\n\t// Only extract from pi-generated summaries (fromHook !== true), not extension-generated ones\n\tfor (const entry of filteredEntries) {\n\t\tif (entry.type === \"branch_summary\" && !entry.fromHook && entry.details) {\n\t\t\tconst details = entry.details as BranchSummaryDetails;\n\t\t\tif (Array.isArray(details.readFiles)) {\n\t\t\t\tfor (const f of details.readFiles) fileOps.read.add(f);\n\t\t\t}\n\t\t\tif (Array.isArray(details.modifiedFiles)) {\n\t\t\t\t// Modified files go into both edited and written for proper deduplication\n\t\t\t\tfor (const f of details.modifiedFiles) {\n\t\t\t\t\tfileOps.edited.add(f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Second pass: walk from newest to oldest, adding messages until token budget\n\tfor (let i = filteredEntries.length - 1; i >= 0; i--) {\n\t\tconst entry = filteredEntries[i];\n\t\tconst message = getMessageFromEntry(entry);\n\t\tif (!message) continue;\n\n\t\t// Extract file ops from assistant messages (tool calls)\n\t\textractFileOpsFromMessage(message, fileOps);\n\n\t\tconst tokens = estimateTokens(message);\n\n\t\t// Check budget before adding\n\t\tif (tokenBudget > 0 && totalTokens + tokens > tokenBudget) {\n\t\t\t// If this is a branch summary entry, try to fit it anyway as it's important context\n\t\t\tif (entry.type === \"branch_summary\") {\n\t\t\t\tif (totalTokens < tokenBudget * 0.9) {\n\t\t\t\t\tmessages.unshift(message);\n\t\t\t\t\ttotalTokens += tokens;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Stop - we've hit the budget\n\t\t\tbreak;\n\t\t}\n\n\t\tmessages.unshift(message);\n\t\ttotalTokens += tokens;\n\t}\n\n\treturn { messages, fileOps, totalTokens };\n}\n\n// ============================================================================\n// Summary Generation\n// ============================================================================\n\nconst BRANCH_SUMMARY_PREAMBLE = `The user explored a different conversation branch before returning here.\nSummary of that exploration:\n\n`;\n\nconst BRANCH_SUMMARY_PROMPT = `Create a structured summary of this conversation branch for context when returning later.\n\nUse this EXACT format:\n\n## Goal\n[What was the user trying to accomplish in this branch?]\n\n## Constraints & Preferences\n- [Any constraints, preferences, or requirements mentioned]\n- [Or \"(none)\" if none were mentioned]\n\n## Progress\n### Done\n- [x] [Completed tasks/changes]\n\n### In Progress\n- [ ] [Work that was started but not finished]\n\n### Blocked\n- [Issues preventing progress, if any]\n\n## Key Decisions\n- **[Decision]**: [Brief rationale]\n\n## Next Steps\n1. [What should happen next to continue this work]\n\nKeep each section concise. Preserve exact file paths, function names, and error messages.`;\n\n/**\n * Generate a summary of abandoned branch entries.\n *\n * @param entries - Session entries to summarize (chronological order)\n * @param options - Generation options\n */\nexport async function generateBranchSummary(\n\tentries: SessionEntry[],\n\toptions: GenerateBranchSummaryOptions,\n): Promise<BranchSummaryResult> {\n\tconst {\n\t\tmodel,\n\t\tapiKey,\n\t\theaders,\n\t\tbaseUrl,\n\t\tsignal,\n\t\tcustomInstructions,\n\t\treplaceInstructions,\n\t\treserveTokens = 16384,\n\t\tthinkingLevel,\n\t\tstreamFn,\n\t\tretry,\n\t\tcallbacks,\n\t} = options;\n\n\t// Token budget = context window minus reserved space for prompt + response\n\tconst contextWindow = model.contextWindow || 128000;\n\tconst tokenBudget = contextWindow - reserveTokens;\n\n\tconst { messages, fileOps } = prepareBranchEntries(entries, tokenBudget);\n\n\tif (messages.length === 0) {\n\t\treturn { summary: \"No content to summarize\" };\n\t}\n\n\t// Transform to LLM-compatible messages, then serialize to text\n\t// Serialization prevents the model from treating it as a conversation to continue\n\tconst llmMessages = convertToLlm(messages);\n\tconst conversationText = serializeConversation(llmMessages);\n\n\t// Build prompt\n\tlet instructions: string;\n\tif (replaceInstructions && customInstructions) {\n\t\tinstructions = customInstructions;\n\t} else if (customInstructions) {\n\t\tinstructions = `${BRANCH_SUMMARY_PROMPT}\\n\\nAdditional focus: ${customInstructions}`;\n\t} else {\n\t\tinstructions = BRANCH_SUMMARY_PROMPT;\n\t}\n\tconst promptText = `<conversation>\\n${conversationText}\\n</conversation>\\n\\n${instructions}`;\n\n\tconst summarizationMessages = [\n\t\t{\n\t\t\trole: \"user\" as const,\n\t\t\tcontent: [{ type: \"text\" as const, text: promptText }],\n\t\t\ttimestamp: Date.now(),\n\t\t},\n\t];\n\n\t// Call LLM for summarization. Prefer the session stream function so SDK\n\t// request behavior stays consistent without mutating agent state.\n\tconst context = { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages };\n\tconst requestModel = baseUrl === undefined || baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n\t// Same budget rule as the compaction planner: no output cap is sent, so\n\t// pi-ai's context clamp is the only bound and the inherited reasoning level\n\t// has no artificial budget to exhaust. `reserveTokens` keeps its input-side\n\t// meaning above, unchanged.\n\tconst budget = resolvePlannerRequest(requestModel, thinkingLevel);\n\tconst requestOptions: SimpleStreamOptions = {\n\t\tapiKey,\n\t\theaders,\n\t\tsignal,\n\t\tcacheRetention: \"none\",\n\t\tsessionId: uuidv7(),\n\t\t...(budget.reasoning && budget.reasoning !== \"off\" ? { reasoning: budget.reasoning } : {}),\n\t};\n\tconst response = await (async () => {\n\t\ttry {\n\t\t\treturn await retryAssistantCall(\n\t\t\t\tasync () =>\n\t\t\t\t\tstreamFn\n\t\t\t\t\t\t? (await streamFn(requestModel, context, requestOptions)).result()\n\t\t\t\t\t\t: completeSimple(requestModel, context, requestOptions),\n\t\t\t\tretry,\n\t\t\t\tsignal,\n\t\t\t\tcallbacks,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (signal.aborted) return undefined;\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\" as const,\n\t\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\t};\n\t\t}\n\t})();\n\n\t// Check if aborted or errored\n\tif (!response || response.stopReason === \"aborted\") {\n\t\treturn { aborted: true };\n\t}\n\tif (response.stopReason === \"error\") {\n\t\treturn { error: response.errorMessage || \"Summarization failed\" };\n\t}\n\n\tlet summary = response.content\n\t\t.filter((c): c is { type: \"text\"; text: string } => c.type === \"text\")\n\t\t.map((c) => c.text)\n\t\t.join(\"\\n\");\n\n\t// Prepend preamble to provide context about the branch summary\n\tsummary = BRANCH_SUMMARY_PREAMBLE + summary;\n\n\t// Compute file lists and append to summary\n\tconst { readFiles, modifiedFiles } = computeFileLists(fileOps);\n\tsummary += formatFileOperations(readFiles, modifiedFiles);\n\n\treturn {\n\t\tsummary: summary || \"No summary generated\",\n\t\tusage: response.usage,\n\t\treadFiles,\n\t\tmodifiedFiles,\n\t};\n}\n"]}
@@ -13,6 +13,7 @@ export * from "./planner-outcome.js";
13
13
  export * from "./range-planner.js";
14
14
  export * from "./range-planner-diagnostics.js";
15
15
  export * from "./region-trimming.js";
16
+ export * from "./session-summarization.ts";
16
17
  export * from "./transcript-serialization.js";
17
18
  export * from "./utils.ts";
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
@@ -13,6 +13,7 @@ export * from "./planner-outcome.js";
13
13
  export * from "./range-planner.js";
14
14
  export * from "./range-planner-diagnostics.js";
15
15
  export * from "./region-trimming.js";
16
+ export * from "./session-summarization.js";
16
17
  export * from "./transcript-serialization.js";
17
18
  export * from "./utils.js";
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Compaction support utilities.\n */\n\nexport * from \"./branch-summarization.ts\";\nexport * from \"./compaction.ts\";\nexport * from \"./compaction-boundary.js\";\nexport * from \"./compaction-parameters.js\";\nexport * from \"./compaction-runner.js\";\nexport * from \"./compaction-types.js\";\nexport * from \"./deleted-ranges.js\";\nexport * from \"./fallback-planner.js\";\nexport * from \"./planner-outcome.js\";\nexport * from \"./range-planner.js\";\nexport * from \"./range-planner-diagnostics.js\";\nexport * from \"./region-trimming.js\";\nexport * from \"./transcript-serialization.js\";\nexport * from \"./utils.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Compaction support utilities.\n */\n\nexport * from \"./branch-summarization.ts\";\nexport * from \"./compaction.ts\";\nexport * from \"./compaction-boundary.js\";\nexport * from \"./compaction-parameters.js\";\nexport * from \"./compaction-runner.js\";\nexport * from \"./compaction-types.js\";\nexport * from \"./deleted-ranges.js\";\nexport * from \"./fallback-planner.js\";\nexport * from \"./planner-outcome.js\";\nexport * from \"./range-planner.js\";\nexport * from \"./range-planner-diagnostics.js\";\nexport * from \"./region-trimming.js\";\nexport * from \"./session-summarization.ts\";\nexport * from \"./transcript-serialization.js\";\nexport * from \"./utils.ts\";\n"]}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Session summarization for the resume picker.
3
+ *
4
+ * Produces one short line describing what a session was about, so `/resume` can show
5
+ * something recognizable instead of a truncated first message. Unlike a branch summary this
6
+ * never re-enters model context: it exists only as picker metadata.
7
+ */
8
+ import type { StreamFn } from "@earendil-works/pi-agent-core";
9
+ import { type ProviderHeaders, type RetryPolicy } from "@earendil-works/pi-ai";
10
+ import type { Api, Model, Usage } from "@earendil-works/pi-ai/compat";
11
+ import type { SessionEntry } from "../session-manager.ts";
12
+ export interface SessionSummaryResult {
13
+ summary?: string;
14
+ usage?: Usage;
15
+ aborted?: boolean;
16
+ error?: string;
17
+ }
18
+ export interface GenerateSessionSummaryOptions {
19
+ /** Model to use for summarization */
20
+ model: Model<Api>;
21
+ /** API key for the model; omitted for header-only bearer authentication. */
22
+ apiKey?: string;
23
+ /** Request headers for the model */
24
+ headers?: ProviderHeaders;
25
+ /** Credential-specific request endpoint for the model */
26
+ baseUrl?: string;
27
+ /** Abort signal for cancellation */
28
+ signal: AbortSignal;
29
+ /** Optional session stream function. Used to preserve SDK request behavior without mutating agent state. */
30
+ streamFn?: StreamFn;
31
+ /** Retry policy for transient failures. Retries stay silent: this is background work. */
32
+ retry?: RetryPolicy;
33
+ }
34
+ /**
35
+ * Generate a one-line summary of a session.
36
+ *
37
+ * @param entries - Session entries to summarize (chronological order)
38
+ * @param options - Generation options
39
+ */
40
+ export declare function generateSessionSummary(entries: SessionEntry[], options: GenerateSessionSummaryOptions): Promise<SessionSummaryResult>;
41
+ //# sourceMappingURL=session-summarization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-summarization.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/session-summarization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAA8B,MAAM,uBAAuB,CAAC;AAC3G,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAuB,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAQ1D,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,6BAA6B;IAC7C,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yFAAyF;IACzF,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AA2BD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,oBAAoB,CAAC,CAqE/B"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Session summarization for the resume picker.
3
+ *
4
+ * Produces one short line describing what a session was about, so `/resume` can show
5
+ * something recognizable instead of a truncated first message. Unlike a branch summary this
6
+ * never re-enters model context: it exists only as picker metadata.
7
+ */
8
+ import { retryAssistantCall, uuidv7 } from "@earendil-works/pi-ai";
9
+ import { completeSimple } from "@earendil-works/pi-ai/compat";
10
+ import { convertToLlm } from "../messages.js";
11
+ import { prepareBranchEntries } from "./branch-summarization.js";
12
+ import { SUMMARIZATION_SYSTEM_PROMPT, serializeConversation } from "./utils.js";
13
+ // ============================================================================
14
+ // Generation
15
+ // ============================================================================
16
+ /**
17
+ * Recent conversation fed to the summarizer. A one-line summary does not improve with more
18
+ * history, and this runs after every idle turn, so the input stays deliberately small.
19
+ */
20
+ const SESSION_SUMMARY_INPUT_TOKENS = 4000;
21
+ /** Hard ceiling on the stored line. The picker truncates to width; this bounds what we persist. */
22
+ const SESSION_SUMMARY_MAX_CHARS = 160;
23
+ const SESSION_SUMMARY_PROMPT = `Describe this coding session in one short sentence, at most 120 characters, so someone scanning a list of sessions can tell what it was about.
24
+
25
+ Name the concrete task and the main file, feature, or component involved. Write plain text: no markdown, no quotes, no line breaks, and do not refer to the session or the summary itself.`;
26
+ /** Collapse a model response into the single line the picker can render. */
27
+ function toSingleLine(text) {
28
+ const collapsed = text.replace(/\s+/g, " ").trim();
29
+ return collapsed.length > SESSION_SUMMARY_MAX_CHARS
30
+ ? `${collapsed.slice(0, SESSION_SUMMARY_MAX_CHARS - 1).trimEnd()}…`
31
+ : collapsed;
32
+ }
33
+ /**
34
+ * Generate a one-line summary of a session.
35
+ *
36
+ * @param entries - Session entries to summarize (chronological order)
37
+ * @param options - Generation options
38
+ */
39
+ export async function generateSessionSummary(entries, options) {
40
+ const { model, apiKey, headers, baseUrl, signal, streamFn, retry } = options;
41
+ const { messages } = prepareBranchEntries(entries, SESSION_SUMMARY_INPUT_TOKENS);
42
+ if (messages.length === 0) {
43
+ return {};
44
+ }
45
+ // Transform to LLM-compatible messages, then serialize to text.
46
+ // Serialization prevents the model from treating it as a conversation to continue.
47
+ const llmMessages = convertToLlm(messages);
48
+ const conversationText = serializeConversation(llmMessages);
49
+ const promptText = `<conversation>\n${conversationText}\n</conversation>\n\n${SESSION_SUMMARY_PROMPT}`;
50
+ const summarizationMessages = [
51
+ {
52
+ role: "user",
53
+ content: [{ type: "text", text: promptText }],
54
+ timestamp: Date.now(),
55
+ },
56
+ ];
57
+ // Call LLM for summarization. Prefer the session stream function so SDK
58
+ // request behavior stays consistent without mutating agent state.
59
+ const context = { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages };
60
+ const requestModel = baseUrl === undefined || baseUrl === model.baseUrl ? model : { ...model, baseUrl };
61
+ // No reasoning is requested. One sentence gains nothing from thinking tokens, and this
62
+ // request runs after every idle turn.
63
+ const requestOptions = {
64
+ apiKey,
65
+ headers,
66
+ signal,
67
+ cacheRetention: "none",
68
+ sessionId: uuidv7(),
69
+ };
70
+ const response = await (async () => {
71
+ try {
72
+ return await retryAssistantCall(async () => streamFn
73
+ ? (await streamFn(requestModel, context, requestOptions)).result()
74
+ : completeSimple(requestModel, context, requestOptions), retry, signal);
75
+ }
76
+ catch (error) {
77
+ if (signal.aborted)
78
+ return undefined;
79
+ return {
80
+ stopReason: "error",
81
+ errorMessage: error instanceof Error ? error.message : String(error),
82
+ };
83
+ }
84
+ })();
85
+ if (!response || response.stopReason === "aborted") {
86
+ return { aborted: true };
87
+ }
88
+ if (response.stopReason === "error") {
89
+ return { error: response.errorMessage || "Session summarization failed" };
90
+ }
91
+ const summary = toSingleLine(response.content
92
+ .filter((c) => c.type === "text")
93
+ .map((c) => c.text)
94
+ .join(" "));
95
+ return summary ? { summary, usage: response.usage } : { usage: response.usage };
96
+ }
97
+ //# sourceMappingURL=session-summarization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-summarization.js","sourceRoot":"","sources":["../../../src/core/compaction/session-summarization.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Session summarization for the resume picker.\n *\n * Produces one short line describing what a session was about, so `/resume` can show\n * something recognizable instead of a truncated first message. Unlike a branch summary this\n * never re-enters model context: it exists only as picker metadata.\n */\n\nimport type { StreamFn } from \"@earendil-works/pi-agent-core\";\nimport { type ProviderHeaders, type RetryPolicy, retryAssistantCall, uuidv7 } from \"@earendil-works/pi-ai\";\nimport type { Api, Model, SimpleStreamOptions, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { completeSimple } from \"@earendil-works/pi-ai/compat\";\nimport { convertToLlm } from \"../messages.ts\";\nimport type { SessionEntry } from \"../session-manager.ts\";\nimport { prepareBranchEntries } from \"./branch-summarization.ts\";\nimport { SUMMARIZATION_SYSTEM_PROMPT, serializeConversation } from \"./utils.ts\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SessionSummaryResult {\n\tsummary?: string;\n\tusage?: Usage;\n\taborted?: boolean;\n\terror?: string;\n}\n\nexport interface GenerateSessionSummaryOptions {\n\t/** Model to use for summarization */\n\tmodel: Model<Api>;\n\t/** API key for the model; omitted for header-only bearer authentication. */\n\tapiKey?: string;\n\t/** Request headers for the model */\n\theaders?: ProviderHeaders;\n\t/** Credential-specific request endpoint for the model */\n\tbaseUrl?: string;\n\t/** Abort signal for cancellation */\n\tsignal: AbortSignal;\n\t/** Optional session stream function. Used to preserve SDK request behavior without mutating agent state. */\n\tstreamFn?: StreamFn;\n\t/** Retry policy for transient failures. Retries stay silent: this is background work. */\n\tretry?: RetryPolicy;\n}\n\n// ============================================================================\n// Generation\n// ============================================================================\n\n/**\n * Recent conversation fed to the summarizer. A one-line summary does not improve with more\n * history, and this runs after every idle turn, so the input stays deliberately small.\n */\nconst SESSION_SUMMARY_INPUT_TOKENS = 4000;\n\n/** Hard ceiling on the stored line. The picker truncates to width; this bounds what we persist. */\nconst SESSION_SUMMARY_MAX_CHARS = 160;\n\nconst SESSION_SUMMARY_PROMPT = `Describe this coding session in one short sentence, at most 120 characters, so someone scanning a list of sessions can tell what it was about.\n\nName the concrete task and the main file, feature, or component involved. Write plain text: no markdown, no quotes, no line breaks, and do not refer to the session or the summary itself.`;\n\n/** Collapse a model response into the single line the picker can render. */\nfunction toSingleLine(text: string): string {\n\tconst collapsed = text.replace(/\\s+/g, \" \").trim();\n\treturn collapsed.length > SESSION_SUMMARY_MAX_CHARS\n\t\t? `${collapsed.slice(0, SESSION_SUMMARY_MAX_CHARS - 1).trimEnd()}…`\n\t\t: collapsed;\n}\n\n/**\n * Generate a one-line summary of a session.\n *\n * @param entries - Session entries to summarize (chronological order)\n * @param options - Generation options\n */\nexport async function generateSessionSummary(\n\tentries: SessionEntry[],\n\toptions: GenerateSessionSummaryOptions,\n): Promise<SessionSummaryResult> {\n\tconst { model, apiKey, headers, baseUrl, signal, streamFn, retry } = options;\n\n\tconst { messages } = prepareBranchEntries(entries, SESSION_SUMMARY_INPUT_TOKENS);\n\tif (messages.length === 0) {\n\t\treturn {};\n\t}\n\n\t// Transform to LLM-compatible messages, then serialize to text.\n\t// Serialization prevents the model from treating it as a conversation to continue.\n\tconst llmMessages = convertToLlm(messages);\n\tconst conversationText = serializeConversation(llmMessages);\n\tconst promptText = `<conversation>\\n${conversationText}\\n</conversation>\\n\\n${SESSION_SUMMARY_PROMPT}`;\n\n\tconst summarizationMessages = [\n\t\t{\n\t\t\trole: \"user\" as const,\n\t\t\tcontent: [{ type: \"text\" as const, text: promptText }],\n\t\t\ttimestamp: Date.now(),\n\t\t},\n\t];\n\n\t// Call LLM for summarization. Prefer the session stream function so SDK\n\t// request behavior stays consistent without mutating agent state.\n\tconst context = { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages };\n\tconst requestModel = baseUrl === undefined || baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n\t// No reasoning is requested. One sentence gains nothing from thinking tokens, and this\n\t// request runs after every idle turn.\n\tconst requestOptions: SimpleStreamOptions = {\n\t\tapiKey,\n\t\theaders,\n\t\tsignal,\n\t\tcacheRetention: \"none\",\n\t\tsessionId: uuidv7(),\n\t};\n\tconst response = await (async () => {\n\t\ttry {\n\t\t\treturn await retryAssistantCall(\n\t\t\t\tasync () =>\n\t\t\t\t\tstreamFn\n\t\t\t\t\t\t? (await streamFn(requestModel, context, requestOptions)).result()\n\t\t\t\t\t\t: completeSimple(requestModel, context, requestOptions),\n\t\t\t\tretry,\n\t\t\t\tsignal,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (signal.aborted) return undefined;\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\" as const,\n\t\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\t};\n\t\t}\n\t})();\n\n\tif (!response || response.stopReason === \"aborted\") {\n\t\treturn { aborted: true };\n\t}\n\tif (response.stopReason === \"error\") {\n\t\treturn { error: response.errorMessage || \"Session summarization failed\" };\n\t}\n\n\tconst summary = toSingleLine(\n\t\tresponse.content\n\t\t\t.filter((c): c is { type: \"text\"; text: string } => c.type === \"text\")\n\t\t\t.map((c) => c.text)\n\t\t\t.join(\" \"),\n\t);\n\n\treturn summary ? { summary, usage: response.usage } : { usage: response.usage };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/core/exec.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAyErB"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/core/exec.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA0ErB"}
package/dist/core/exec.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Shared command execution utilities for extensions and custom tools.
3
3
  */
4
4
  import { spawn } from "node:child_process";
5
- import { waitForChildProcess } from "../utils/child-process.js";
5
+ import { createChildProcessEnvironment, waitForChildProcess } from "../utils/child-process.js";
6
6
  /**
7
7
  * Execute a shell command and return stdout/stderr/code.
8
8
  * Supports timeout and abort signal.
@@ -15,8 +15,9 @@ export async function execCommand(command, args, cwd, options) {
15
15
  // Pass the environment explicitly. Bun snapshots the process environment
16
16
  // at startup for spawns that omit `env`, so an inherited default would
17
17
  // still carry values this process deleted from `process.env` — including
18
- // the interactive-engine control variables and their --api-key.
19
- env: { ...process.env },
18
+ // the interactive-engine control variables and their --api-key. Preserve
19
+ // Atomic's child attribution in the same explicit environment.
20
+ env: createChildProcessEnvironment(),
20
21
  stdio: ["ignore", "pipe", "pipe"],
21
22
  });
22
23
  let stdout = "";