@code-yeongyu/senpi 2026.7.20 → 2026.7.22

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 (495) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +1 -0
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +1 -0
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-session.d.ts +32 -0
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +409 -68
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/auth-storage.js +1 -1
  11. package/dist/core/auth-storage.js.map +1 -1
  12. package/dist/core/compaction/compaction.d.ts +2 -2
  13. package/dist/core/compaction/compaction.d.ts.map +1 -1
  14. package/dist/core/compaction/compaction.js +67 -16
  15. package/dist/core/compaction/compaction.js.map +1 -1
  16. package/dist/core/compaction/stream-watchdog.d.ts +31 -0
  17. package/dist/core/compaction/stream-watchdog.d.ts.map +1 -0
  18. package/dist/core/compaction/stream-watchdog.js +78 -0
  19. package/dist/core/compaction/stream-watchdog.js.map +1 -0
  20. package/dist/core/extensions/builtin/btw/index.d.ts +3 -0
  21. package/dist/core/extensions/builtin/btw/index.d.ts.map +1 -0
  22. package/dist/core/extensions/builtin/btw/index.js +120 -0
  23. package/dist/core/extensions/builtin/btw/index.js.map +1 -0
  24. package/dist/core/extensions/builtin/btw/panel.d.ts +21 -0
  25. package/dist/core/extensions/builtin/btw/panel.d.ts.map +1 -0
  26. package/dist/core/extensions/builtin/btw/panel.js +61 -0
  27. package/dist/core/extensions/builtin/btw/panel.js.map +1 -0
  28. package/dist/core/extensions/builtin/btw/side-query.d.ts +31 -0
  29. package/dist/core/extensions/builtin/btw/side-query.d.ts.map +1 -0
  30. package/dist/core/extensions/builtin/btw/side-query.js +68 -0
  31. package/dist/core/extensions/builtin/btw/side-query.js.map +1 -0
  32. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  33. package/dist/core/extensions/builtin/compaction/index.js +47 -11
  34. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  35. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
  36. package/dist/core/extensions/builtin/compaction/openai-remote.js +3 -1
  37. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  38. package/dist/core/extensions/builtin/compaction/speculative.d.ts +17 -0
  39. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  40. package/dist/core/extensions/builtin/compaction/speculative.js +93 -26
  41. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  42. package/dist/core/extensions/builtin/config-reload/index.d.ts +39 -0
  43. package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -0
  44. package/dist/core/extensions/builtin/config-reload/index.js +659 -0
  45. package/dist/core/extensions/builtin/config-reload/index.js.map +1 -0
  46. package/dist/core/extensions/builtin/config-reload/log.d.ts +55 -0
  47. package/dist/core/extensions/builtin/config-reload/log.d.ts.map +1 -0
  48. package/dist/core/extensions/builtin/config-reload/log.js +128 -0
  49. package/dist/core/extensions/builtin/config-reload/log.js.map +1 -0
  50. package/dist/core/extensions/builtin/config-reload/protocol.d.ts +71 -0
  51. package/dist/core/extensions/builtin/config-reload/protocol.d.ts.map +1 -0
  52. package/dist/core/extensions/builtin/config-reload/protocol.js +83 -0
  53. package/dist/core/extensions/builtin/config-reload/protocol.js.map +1 -0
  54. package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts +43 -0
  55. package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts.map +1 -0
  56. package/dist/core/extensions/builtin/config-reload/watch-engine.js +298 -0
  57. package/dist/core/extensions/builtin/config-reload/watch-engine.js.map +1 -0
  58. package/dist/core/extensions/builtin/goal/command-registration.d.ts +2 -2
  59. package/dist/core/extensions/builtin/goal/command-registration.d.ts.map +1 -1
  60. package/dist/core/extensions/builtin/goal/command-registration.js +3 -4
  61. package/dist/core/extensions/builtin/goal/command-registration.js.map +1 -1
  62. package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
  63. package/dist/core/extensions/builtin/goal/index.js +11 -27
  64. package/dist/core/extensions/builtin/goal/index.js.map +1 -1
  65. package/dist/core/extensions/builtin/goal/tool-registration.d.ts +2 -2
  66. package/dist/core/extensions/builtin/goal/tool-registration.d.ts.map +1 -1
  67. package/dist/core/extensions/builtin/goal/tool-registration.js +2 -3
  68. package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
  69. package/dist/core/extensions/builtin/goal/turn-usage.d.ts +20 -0
  70. package/dist/core/extensions/builtin/goal/turn-usage.d.ts.map +1 -0
  71. package/dist/core/extensions/builtin/goal/turn-usage.js +61 -0
  72. package/dist/core/extensions/builtin/goal/turn-usage.js.map +1 -0
  73. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  74. package/dist/core/extensions/builtin/index.js +9 -0
  75. package/dist/core/extensions/builtin/index.js.map +1 -1
  76. package/dist/core/extensions/builtin/look-at/arguments.d.ts +27 -0
  77. package/dist/core/extensions/builtin/look-at/arguments.d.ts.map +1 -0
  78. package/dist/core/extensions/builtin/look-at/arguments.js +109 -0
  79. package/dist/core/extensions/builtin/look-at/arguments.js.map +1 -0
  80. package/dist/core/extensions/builtin/look-at/commands.d.ts +9 -0
  81. package/dist/core/extensions/builtin/look-at/commands.d.ts.map +1 -0
  82. package/dist/core/extensions/builtin/look-at/commands.js +102 -0
  83. package/dist/core/extensions/builtin/look-at/commands.js.map +1 -0
  84. package/dist/core/extensions/builtin/look-at/image-input.d.ts +21 -0
  85. package/dist/core/extensions/builtin/look-at/image-input.d.ts.map +1 -0
  86. package/dist/core/extensions/builtin/look-at/image-input.js +151 -0
  87. package/dist/core/extensions/builtin/look-at/image-input.js.map +1 -0
  88. package/dist/core/extensions/builtin/look-at/index.d.ts +3 -0
  89. package/dist/core/extensions/builtin/look-at/index.d.ts.map +1 -0
  90. package/dist/core/extensions/builtin/look-at/index.js +58 -0
  91. package/dist/core/extensions/builtin/look-at/index.js.map +1 -0
  92. package/dist/core/extensions/builtin/look-at/model-selector.d.ts +9 -0
  93. package/dist/core/extensions/builtin/look-at/model-selector.d.ts.map +1 -0
  94. package/dist/core/extensions/builtin/look-at/model-selector.js +77 -0
  95. package/dist/core/extensions/builtin/look-at/model-selector.js.map +1 -0
  96. package/dist/core/extensions/builtin/look-at/prompts.d.ts +5 -0
  97. package/dist/core/extensions/builtin/look-at/prompts.d.ts.map +1 -0
  98. package/dist/core/extensions/builtin/look-at/prompts.js +19 -0
  99. package/dist/core/extensions/builtin/look-at/prompts.js.map +1 -0
  100. package/dist/core/extensions/builtin/look-at/render.d.ts +26 -0
  101. package/dist/core/extensions/builtin/look-at/render.d.ts.map +1 -0
  102. package/dist/core/extensions/builtin/look-at/render.js +70 -0
  103. package/dist/core/extensions/builtin/look-at/render.js.map +1 -0
  104. package/dist/core/extensions/builtin/look-at/runner.d.ts +16 -0
  105. package/dist/core/extensions/builtin/look-at/runner.d.ts.map +1 -0
  106. package/dist/core/extensions/builtin/look-at/runner.js +108 -0
  107. package/dist/core/extensions/builtin/look-at/runner.js.map +1 -0
  108. package/dist/core/extensions/builtin/look-at/settings.d.ts +13 -0
  109. package/dist/core/extensions/builtin/look-at/settings.d.ts.map +1 -0
  110. package/dist/core/extensions/builtin/look-at/settings.js +20 -0
  111. package/dist/core/extensions/builtin/look-at/settings.js.map +1 -0
  112. package/dist/core/extensions/builtin/mcp/commands.d.ts.map +1 -1
  113. package/dist/core/extensions/builtin/mcp/commands.js +2 -0
  114. package/dist/core/extensions/builtin/mcp/commands.js.map +1 -1
  115. package/dist/core/extensions/builtin/mcp/config-schema.d.ts +6 -0
  116. package/dist/core/extensions/builtin/mcp/config-schema.d.ts.map +1 -1
  117. package/dist/core/extensions/builtin/mcp/config-schema.js +1 -0
  118. package/dist/core/extensions/builtin/mcp/config-schema.js.map +1 -1
  119. package/dist/core/extensions/builtin/mcp/config.d.ts.map +1 -1
  120. package/dist/core/extensions/builtin/mcp/config.js +9 -1
  121. package/dist/core/extensions/builtin/mcp/config.js.map +1 -1
  122. package/dist/core/extensions/builtin/mcp/service.d.ts.map +1 -1
  123. package/dist/core/extensions/builtin/mcp/service.js +22 -6
  124. package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
  125. package/dist/core/extensions/builtin/mcp/startup-race.d.ts +10 -0
  126. package/dist/core/extensions/builtin/mcp/startup-race.d.ts.map +1 -1
  127. package/dist/core/extensions/builtin/mcp/startup-race.js +18 -1
  128. package/dist/core/extensions/builtin/mcp/startup-race.js.map +1 -1
  129. package/dist/core/extensions/builtin/model-fallback/index.d.ts +4 -0
  130. package/dist/core/extensions/builtin/model-fallback/index.d.ts.map +1 -0
  131. package/dist/core/extensions/builtin/model-fallback/index.js +55 -0
  132. package/dist/core/extensions/builtin/model-fallback/index.js.map +1 -0
  133. package/dist/core/extensions/builtin/model-fallback/settings.d.ts +6 -0
  134. package/dist/core/extensions/builtin/model-fallback/settings.d.ts.map +1 -0
  135. package/dist/core/extensions/builtin/model-fallback/settings.js +11 -0
  136. package/dist/core/extensions/builtin/model-fallback/settings.js.map +1 -0
  137. package/dist/core/extensions/builtin/model-fallback/ui.d.ts +12 -0
  138. package/dist/core/extensions/builtin/model-fallback/ui.d.ts.map +1 -0
  139. package/dist/core/extensions/builtin/model-fallback/ui.js +72 -0
  140. package/dist/core/extensions/builtin/model-fallback/ui.js.map +1 -0
  141. package/dist/core/extensions/builtin/nested-agents-md/index.d.ts.map +1 -1
  142. package/dist/core/extensions/builtin/nested-agents-md/index.js +4 -1
  143. package/dist/core/extensions/builtin/nested-agents-md/index.js.map +1 -1
  144. package/dist/core/extensions/builtin/rules/index.d.ts.map +1 -1
  145. package/dist/core/extensions/builtin/rules/index.js +4 -1
  146. package/dist/core/extensions/builtin/rules/index.js.map +1 -1
  147. package/dist/core/extensions/builtin/terminal/output-format.d.ts +28 -0
  148. package/dist/core/extensions/builtin/terminal/output-format.d.ts.map +1 -0
  149. package/dist/core/extensions/builtin/terminal/output-format.js +74 -0
  150. package/dist/core/extensions/builtin/terminal/output-format.js.map +1 -0
  151. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts +3 -0
  152. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts.map +1 -1
  153. package/dist/core/extensions/builtin/terminal/runtime-session.js +22 -2
  154. package/dist/core/extensions/builtin/terminal/runtime-session.js.map +1 -1
  155. package/dist/core/extensions/builtin/terminal/shared.d.ts +7 -0
  156. package/dist/core/extensions/builtin/terminal/shared.d.ts.map +1 -1
  157. package/dist/core/extensions/builtin/terminal/shared.js +14 -0
  158. package/dist/core/extensions/builtin/terminal/shared.js.map +1 -1
  159. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts +5 -1
  160. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts.map +1 -1
  161. package/dist/core/extensions/builtin/terminal/tools/bash-output.js +88 -6
  162. package/dist/core/extensions/builtin/terminal/tools/bash-output.js.map +1 -1
  163. package/dist/core/extensions/builtin/terminal/tools/bash.d.ts +12 -1
  164. package/dist/core/extensions/builtin/terminal/tools/bash.d.ts.map +1 -1
  165. package/dist/core/extensions/builtin/terminal/tools/bash.js +82 -8
  166. package/dist/core/extensions/builtin/terminal/tools/bash.js.map +1 -1
  167. package/dist/core/extensions/builtin/terminal/tools/render.d.ts +16 -0
  168. package/dist/core/extensions/builtin/terminal/tools/render.d.ts.map +1 -0
  169. package/dist/core/extensions/builtin/terminal/tools/render.js +30 -0
  170. package/dist/core/extensions/builtin/terminal/tools/render.js.map +1 -0
  171. package/dist/core/extensions/builtin/terminal/tools/spawn.d.ts +2 -0
  172. package/dist/core/extensions/builtin/terminal/tools/spawn.d.ts.map +1 -1
  173. package/dist/core/extensions/builtin/terminal/tools/spawn.js +1 -1
  174. package/dist/core/extensions/builtin/terminal/tools/spawn.js.map +1 -1
  175. package/dist/core/extensions/builtin/todotools/tools/todo.d.ts.map +1 -1
  176. package/dist/core/extensions/builtin/todotools/tools/todo.js +22 -6
  177. package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
  178. package/dist/core/extensions/builtin/webfetch/webfetch/fetcher.d.ts +1 -0
  179. package/dist/core/extensions/builtin/webfetch/webfetch/fetcher.d.ts.map +1 -1
  180. package/dist/core/extensions/builtin/webfetch/webfetch/fetcher.js +13 -4
  181. package/dist/core/extensions/builtin/webfetch/webfetch/fetcher.js.map +1 -1
  182. package/dist/core/extensions/builtin/webfetch/webfetch/renderers.d.ts.map +1 -1
  183. package/dist/core/extensions/builtin/webfetch/webfetch/renderers.js +17 -2
  184. package/dist/core/extensions/builtin/webfetch/webfetch/renderers.js.map +1 -1
  185. package/dist/core/extensions/builtin/webfetch/webfetch/tool.d.ts +8 -1
  186. package/dist/core/extensions/builtin/webfetch/webfetch/tool.d.ts.map +1 -1
  187. package/dist/core/extensions/builtin/webfetch/webfetch/tool.js +45 -3
  188. package/dist/core/extensions/builtin/webfetch/webfetch/tool.js.map +1 -1
  189. package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
  190. package/dist/core/extensions/builtin/websearch/websearch/renderers.js +13 -4
  191. package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
  192. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts +3 -2
  193. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
  194. package/dist/core/extensions/builtin/websearch/websearch/search.js +2 -1
  195. package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
  196. package/dist/core/extensions/builtin/websearch/websearch/tool.d.ts.map +1 -1
  197. package/dist/core/extensions/builtin/websearch/websearch/tool.js +17 -1
  198. package/dist/core/extensions/builtin/websearch/websearch/tool.js.map +1 -1
  199. package/dist/core/extensions/builtin/websearch/websearch/types.d.ts +2 -0
  200. package/dist/core/extensions/builtin/websearch/websearch/types.d.ts.map +1 -1
  201. package/dist/core/extensions/builtin/websearch/websearch/types.js.map +1 -1
  202. package/dist/core/extensions/runner.d.ts +6 -0
  203. package/dist/core/extensions/runner.d.ts.map +1 -1
  204. package/dist/core/extensions/runner.js +71 -3
  205. package/dist/core/extensions/runner.js.map +1 -1
  206. package/dist/core/extensions/types.d.ts +96 -10
  207. package/dist/core/extensions/types.d.ts.map +1 -1
  208. package/dist/core/extensions/types.js.map +1 -1
  209. package/dist/core/model-config-schema.d.ts +1942 -0
  210. package/dist/core/model-config-schema.d.ts.map +1 -0
  211. package/dist/core/model-config-schema.js +197 -0
  212. package/dist/core/model-config-schema.js.map +1 -0
  213. package/dist/core/model-config.d.ts +2 -578
  214. package/dist/core/model-config.d.ts.map +1 -1
  215. package/dist/core/model-config.js +1 -194
  216. package/dist/core/model-config.js.map +1 -1
  217. package/dist/core/model-resolver.d.ts.map +1 -1
  218. package/dist/core/model-resolver.js +1 -0
  219. package/dist/core/model-resolver.js.map +1 -1
  220. package/dist/core/model-runtime.d.ts.map +1 -1
  221. package/dist/core/model-runtime.js +9 -3
  222. package/dist/core/model-runtime.js.map +1 -1
  223. package/dist/core/provider-composer.d.ts +1 -0
  224. package/dist/core/provider-composer.d.ts.map +1 -1
  225. package/dist/core/provider-composer.js +3 -2
  226. package/dist/core/provider-composer.js.map +1 -1
  227. package/dist/core/provider-display-names.d.ts.map +1 -1
  228. package/dist/core/provider-display-names.js +1 -0
  229. package/dist/core/provider-display-names.js.map +1 -1
  230. package/dist/core/retry-fallback/chains.d.ts +29 -0
  231. package/dist/core/retry-fallback/chains.d.ts.map +1 -0
  232. package/dist/core/retry-fallback/chains.js +109 -0
  233. package/dist/core/retry-fallback/chains.js.map +1 -0
  234. package/dist/core/retry-fallback/controller.d.ts +77 -0
  235. package/dist/core/retry-fallback/controller.d.ts.map +1 -0
  236. package/dist/core/retry-fallback/controller.js +157 -0
  237. package/dist/core/retry-fallback/controller.js.map +1 -0
  238. package/dist/core/retry-fallback/cooldown.d.ts +21 -0
  239. package/dist/core/retry-fallback/cooldown.d.ts.map +1 -0
  240. package/dist/core/retry-fallback/cooldown.js +49 -0
  241. package/dist/core/retry-fallback/cooldown.js.map +1 -0
  242. package/dist/core/retry-fallback/log.d.ts +10 -0
  243. package/dist/core/retry-fallback/log.d.ts.map +1 -0
  244. package/dist/core/retry-fallback/log.js +128 -0
  245. package/dist/core/retry-fallback/log.js.map +1 -0
  246. package/dist/core/retry-fallback/validate.d.ts +8 -0
  247. package/dist/core/retry-fallback/validate.d.ts.map +1 -0
  248. package/dist/core/retry-fallback/validate.js +63 -0
  249. package/dist/core/retry-fallback/validate.js.map +1 -0
  250. package/dist/core/sdk.d.ts.map +1 -1
  251. package/dist/core/sdk.js +1 -0
  252. package/dist/core/sdk.js.map +1 -1
  253. package/dist/core/session-manager.d.ts +39 -3
  254. package/dist/core/session-manager.d.ts.map +1 -1
  255. package/dist/core/session-manager.js +125 -16
  256. package/dist/core/session-manager.js.map +1 -1
  257. package/dist/core/settings-manager.d.ts +33 -0
  258. package/dist/core/settings-manager.d.ts.map +1 -1
  259. package/dist/core/settings-manager.js +153 -6
  260. package/dist/core/settings-manager.js.map +1 -1
  261. package/dist/modes/interactive/components/footer.d.ts +2 -1
  262. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  263. package/dist/modes/interactive/components/footer.js +30 -20
  264. package/dist/modes/interactive/components/footer.js.map +1 -1
  265. package/dist/modes/interactive/components/todo-strike.d.ts +8 -0
  266. package/dist/modes/interactive/components/todo-strike.d.ts.map +1 -0
  267. package/dist/modes/interactive/components/todo-strike.js +35 -0
  268. package/dist/modes/interactive/components/todo-strike.js.map +1 -0
  269. package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -1
  270. package/dist/modes/interactive/components/tool-execution-renderer.js +8 -1
  271. package/dist/modes/interactive/components/tool-execution-renderer.js.map +1 -1
  272. package/dist/modes/interactive/components/tool-execution.d.ts +4 -0
  273. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  274. package/dist/modes/interactive/components/tool-execution.js +51 -2
  275. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  276. package/dist/modes/interactive/interactive-mode.d.ts +6 -0
  277. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  278. package/dist/modes/interactive/interactive-mode.js +124 -4
  279. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  280. package/dist/modes/interactive/tool-progress.d.ts +8 -0
  281. package/dist/modes/interactive/tool-progress.d.ts.map +1 -0
  282. package/dist/modes/interactive/tool-progress.js +26 -0
  283. package/dist/modes/interactive/tool-progress.js.map +1 -0
  284. package/dist/modes/interactive/tool-result-reveal.d.ts +18 -0
  285. package/dist/modes/interactive/tool-result-reveal.d.ts.map +1 -0
  286. package/dist/modes/interactive/tool-result-reveal.js +155 -0
  287. package/dist/modes/interactive/tool-result-reveal.js.map +1 -0
  288. package/dist/utils/fs-watch.d.ts +2 -2
  289. package/dist/utils/fs-watch.d.ts.map +1 -1
  290. package/dist/utils/fs-watch.js +2 -2
  291. package/dist/utils/fs-watch.js.map +1 -1
  292. package/docs/extensions.md +79 -1
  293. package/docs/mcp.md +10 -1
  294. package/docs/models.md +102 -1
  295. package/docs/providers.md +3 -1
  296. package/docs/settings.md +35 -0
  297. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +24 -0
  298. package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
  299. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-handler.ts +13 -1
  300. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  301. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +76 -8
  302. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  303. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  304. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +26 -1
  305. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  306. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  307. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +24 -2
  308. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  309. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +5 -0
  310. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  311. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  312. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  313. package/node_modules/@earendil-works/pi-ai/README.md +2 -0
  314. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  315. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +68 -25
  316. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  317. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.d.ts.map +1 -1
  318. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.js +33 -6
  319. package/node_modules/@earendil-works/pi-ai/dist/api/lazy.js.map +1 -1
  320. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  321. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +6 -1
  322. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  323. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.d.ts.map +1 -1
  324. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js +62 -52
  325. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js.map +1 -1
  326. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +19 -0
  327. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -0
  328. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +50 -0
  329. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -0
  330. package/node_modules/@earendil-works/pi-ai/dist/compat.d.ts +2 -17
  331. package/node_modules/@earendil-works/pi-ai/dist/compat.d.ts.map +1 -1
  332. package/node_modules/@earendil-works/pi-ai/dist/compat.js +3 -52
  333. package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
  334. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  335. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +1 -0
  336. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  337. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +45 -0
  338. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  339. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +45 -0
  340. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  341. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +5 -0
  342. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  343. package/node_modules/@earendil-works/pi-ai/dist/index.js +5 -0
  344. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  345. package/node_modules/@earendil-works/pi-ai/dist/model.d.ts +27 -0
  346. package/node_modules/@earendil-works/pi-ai/dist/model.d.ts.map +1 -0
  347. package/node_modules/@earendil-works/pi-ai/dist/model.js +2 -0
  348. package/node_modules/@earendil-works/pi-ai/dist/model.js.map +1 -0
  349. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +1178 -1072
  350. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  351. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -0
  352. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  353. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.d.ts +3 -0
  354. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.d.ts.map +1 -0
  355. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.js +15 -0
  356. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.js.map +1 -0
  357. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.d.ts +64 -0
  358. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.d.ts.map +1 -0
  359. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.js +5 -0
  360. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.js.map +1 -0
  361. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  362. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -0
  363. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  364. package/node_modules/@earendil-works/pi-ai/dist/providers/data/alibaba-token-plan.json +1 -0
  365. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google.json +1 -1
  366. package/node_modules/@earendil-works/pi-ai/dist/providers/data/kimi-coding.json +1 -1
  367. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  368. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  369. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  370. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts +1 -0
  371. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts.map +1 -1
  372. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js +1 -0
  373. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  374. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.d.ts +8 -0
  375. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.d.ts.map +1 -1
  376. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.js.map +1 -1
  377. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.d.ts +0 -4
  378. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.d.ts.map +1 -1
  379. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.js.map +1 -1
  380. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.d.ts +12 -4
  381. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.d.ts.map +1 -1
  382. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js.map +1 -1
  383. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts +20 -4
  384. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts.map +1 -1
  385. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js.map +1 -1
  386. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts +16 -0
  387. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  388. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  389. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.d.ts +1 -0
  390. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.js +8 -0
  392. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-stream-helpers.d.ts +20 -0
  394. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-stream-helpers.d.ts.map +1 -0
  395. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-stream-helpers.js +79 -0
  396. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-stream-helpers.js.map +1 -0
  397. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-scanner.d.ts +2 -18
  398. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-scanner.d.ts.map +1 -1
  399. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-scanner.js +4 -218
  400. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-scanner.js.map +1 -1
  401. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-syntax.d.ts +38 -0
  402. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-syntax.d.ts.map +1 -0
  403. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-syntax.js +210 -0
  404. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/invoke-tag-syntax.js.map +1 -0
  405. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-stream.d.ts +9 -0
  406. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-stream.d.ts.map +1 -0
  407. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-stream.js +231 -0
  408. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-stream.js.map +1 -0
  409. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts +38 -0
  410. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts.map +1 -0
  411. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.js +84 -0
  412. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.js.map +1 -0
  413. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/stream-boundary.d.ts.map +1 -1
  414. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/stream-boundary.js +20 -57
  415. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/stream-boundary.js.map +1 -1
  416. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/stream.d.ts.map +1 -1
  417. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/stream.js +16 -99
  418. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/stream.js.map +1 -1
  419. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/index.d.ts +1 -0
  420. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/index.d.ts.map +1 -1
  421. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/index.js +1 -0
  422. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/index.js.map +1 -1
  423. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/recovery-stream.d.ts +5 -0
  424. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/recovery-stream.d.ts.map +1 -0
  425. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/recovery-stream.js +6 -0
  426. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/antml/recovery-stream.js.map +1 -0
  427. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-code-mask.d.ts +19 -0
  428. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-code-mask.d.ts.map +1 -0
  429. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-code-mask.js +185 -0
  430. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-code-mask.js.map +1 -0
  431. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.d.ts +11 -0
  432. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.d.ts.map +1 -0
  433. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.js +24 -0
  434. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.js.map +1 -0
  435. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-diagnostics.d.ts +4 -0
  436. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-diagnostics.d.ts.map +1 -0
  437. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-diagnostics.js +13 -0
  438. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-diagnostics.js.map +1 -0
  439. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.d.ts +15 -0
  440. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.d.ts.map +1 -0
  441. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.js +37 -0
  442. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.js.map +1 -0
  443. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-message-snapshot.d.ts +4 -0
  444. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-message-snapshot.d.ts.map +1 -0
  445. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-message-snapshot.js +61 -0
  446. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-message-snapshot.js.map +1 -0
  447. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.d.ts +29 -0
  448. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.d.ts.map +1 -0
  449. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.js +148 -0
  450. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.js.map +1 -0
  451. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-failure.d.ts +5 -0
  452. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-failure.d.ts.map +1 -0
  453. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-failure.js +36 -0
  454. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-failure.js.map +1 -0
  455. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.d.ts +15 -0
  456. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.d.ts.map +1 -0
  457. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.js +88 -0
  458. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.js.map +1 -0
  459. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.d.ts +3 -0
  460. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.d.ts.map +1 -0
  461. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.js +233 -0
  462. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.js.map +1 -0
  463. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.d.ts +23 -0
  464. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.d.ts.map +1 -0
  465. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.js +77 -0
  466. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.js.map +1 -0
  467. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-message-metadata.d.ts +5 -0
  468. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-message-metadata.d.ts.map +1 -0
  469. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-message-metadata.js +63 -0
  470. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-message-metadata.js.map +1 -0
  471. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.d.ts +13 -0
  472. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.d.ts.map +1 -0
  473. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.js +52 -0
  474. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.js.map +1 -0
  475. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.d.ts +41 -0
  476. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.d.ts.map +1 -0
  477. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.js +209 -0
  478. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.js.map +1 -0
  479. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.d.ts.map +1 -1
  480. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.js +70 -346
  481. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.js.map +1 -1
  482. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +18 -23
  483. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  484. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  485. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
  486. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +5 -1
  487. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  488. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.d.ts +4 -0
  489. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.d.ts.map +1 -0
  490. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.js +6 -0
  491. package/node_modules/@earendil-works/pi-ai/dist/utils/stop-details.js.map +1 -0
  492. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  493. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  494. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  495. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { Tool } from \"@earendil-works/pi-ai\";\nimport type { CompactionResult } from \"../../../compaction/index.ts\";\nimport { convertToLlm } from \"../../../messages.ts\";\nimport type { CompactionEntry } from \"../../../session-manager.ts\";\nimport type { ContextUsage, ExtensionAPI, ExtensionContext, SessionBeforeCompactEvent } from \"../../types.ts\";\nimport * as checkpointState from \"./checkpoint-state.ts\";\nimport * as breaker from \"./circuit-breaker.ts\";\nimport {\n\tBUILTIN_CONTEXT_REDUCTION_OPTIONS,\n\treduceContextMessages,\n\tshouldApplyContextReduction,\n} from \"./context-reduction.ts\";\nimport {\n\tcreateDegradationMonitorState,\n\thandleMessageEnd,\n\thandleTurnEnd,\n\tRECOVERY_INSTRUCTIONS,\n\tresetOnSessionCompact,\n} from \"./degradation-monitor.ts\";\nimport {\n\trewriteOpenAiPayloadWithRemoteCompaction,\n\trunOpenAiRemoteCompaction,\n\tSENPI_COMPACTION_EVENT,\n} from \"./openai-remote.ts\";\nimport * as cap from \"./per-turn-cap.ts\";\nimport * as policy from \"./policy.ts\";\nimport { repairOrphanedToolResults } from \"./repair-tool-pairs.ts\";\nimport * as restoration from \"./restoration-tracker.ts\";\nimport {\n\tapplyGeneratedCompaction,\n\tcreateSpeculativeCompactionSnapshot,\n\tgetPromptVariant,\n\thardLimitEmergencyPrune,\n\trunExtensionCompaction,\n\ttype SpeculativeCompactionResult,\n\ttype SpeculativeCompactionSnapshot,\n} from \"./speculative.ts\";\nimport { type CompactionExtensionState, createInitialState, resetTurnCounter } from \"./state.ts\";\nimport * as todoBridge from \"./todo-bridge.ts\";\n\nconst DEFAULT_CONTEXT_WINDOW = 200_000;\nconst EMERGENCY_COMPACTION_INSTRUCTIONS =\n\t\"EMERGENCY: hard context limit reached. Produce an aggressive recovery summary that preserves current goal, constraints, files touched, tool outcomes, and exact next steps. Prefer concise factual state over transcript detail.\";\nconst PROACTIVE_COMPACTION_INSTRUCTIONS = \"Proactively compact before the next agent turn.\";\nconst MAX_PENDING_METADATA = 8;\nconst IMAGE_PROMPT_TOKEN_ESTIMATE = 1_200;\nconst MAX_OUTPUT_RESERVE_RATIO = 0.5;\n\ninterface PendingCompactionMetadata {\n\tcheckpoint: checkpointState.AgentCheckpoint;\n\ttodoSnapshot: todoBridge.TodoSnapshotPayload;\n}\n\nfunction approxTokens(text: string): number {\n\treturn Math.ceil(text.length / 4);\n}\n\nfunction isOpenAiResponsesModel(model: ExtensionContext[\"model\"]): boolean {\n\treturn model?.provider === \"openai\" && model.api === \"openai-responses\";\n}\n\nfunction estimatePendingPromptTokens(event: { prompt?: string; images?: readonly unknown[] }): number {\n\treturn approxTokens(event.prompt ?? \"\") + (event.images?.length ?? 0) * IMAGE_PROMPT_TOKEN_ESTIMATE;\n}\n\nfunction getPromptContextWindow(contextWindow: number, maxTokens: number | undefined): number {\n\tif (typeof maxTokens !== \"number\" || !Number.isFinite(maxTokens) || maxTokens <= 0 || contextWindow <= 0) {\n\t\treturn contextWindow;\n\t}\n\tconst outputReserve = Math.min(maxTokens, Math.floor(contextWindow * MAX_OUTPUT_RESERVE_RATIO));\n\treturn contextWindow - outputReserve;\n}\n\nfunction withAdditionalTokens(usage: ContextUsage, additionalTokens: number): ContextUsage {\n\tif (usage.tokens === null || additionalTokens <= 0) return usage;\n\tconst tokens = usage.tokens + additionalTokens;\n\treturn {\n\t\t...usage,\n\t\ttokens,\n\t\tpercent: usage.contextWindow > 0 ? (tokens / usage.contextWindow) * 100 : usage.percent,\n\t};\n}\n\nfunction isMonitorableMessageEvent(event: { message: AgentMessage }): event is {\n\tmessage: AgentMessage & { content: Array<{ type: string; text?: string }> };\n} {\n\treturn \"content\" in event.message && Array.isArray(event.message.content);\n}\n\nfunction isAbortedAssistantMessage(event: { message: AgentMessage }): boolean {\n\treturn event.message.role === \"assistant\" && \"stopReason\" in event.message && event.message.stopReason === \"aborted\";\n}\n\nfunction updateLastYield(state: CompactionExtensionState, entry: CompactionEntry): CompactionExtensionState {\n\tconst savedTokens = Math.max(0, entry.tokensBefore - approxTokens(entry.summary));\n\treturn { ...state, lastYield: { savedTokens, tokensBefore: entry.tokensBefore } };\n}\n\nfunction recentCheckpoint(ctx: ExtensionContext): checkpointState.AgentCheckpoint | null {\n\tconst checkpoint = checkpointState.getLatestCheckpoint(ctx);\n\tif (!checkpoint?.timestamp) return null;\n\treturn Date.now() - checkpoint.timestamp <= 60_000 ? checkpoint : null;\n}\n\nfunction shouldEndFeedback(result: SpeculativeCompactionResult): boolean {\n\treturn !result.applied && result.reason !== \"rejected\";\n}\n\nfunction endCompactionFeedback(\n\tctx: ExtensionContext,\n\tsignal: AbortSignal | undefined,\n\tresult: SpeculativeCompactionResult,\n): void {\n\tif (shouldEndFeedback(result)) {\n\t\tctx.endCompaction?.({ reason: \"extension\", aborted: signal?.aborted });\n\t}\n}\n\nfunction linkAbortSignal(source: AbortSignal | undefined, target: AbortController): () => void {\n\tif (!source) return () => {};\n\tif (source.aborted) {\n\t\ttarget.abort();\n\t\treturn () => {};\n\t}\n\tconst abort = () => target.abort();\n\tsource.addEventListener(\"abort\", abort, { once: true });\n\treturn () => source.removeEventListener(\"abort\", abort);\n}\n\nfunction createBlockingRemoteCompactionEvent(\n\tctx: ExtensionContext,\n\tsnapshot: SpeculativeCompactionSnapshot,\n\tcustomInstructions: string,\n\tsignal: AbortSignal,\n): SessionBeforeCompactEvent {\n\treturn {\n\t\ttype: \"session_before_compact\",\n\t\treason: \"extension\",\n\t\twillRetry: false,\n\t\trequestId: randomUUID(),\n\t\tpreparation: snapshot.preparation,\n\t\tbranchEntries: ctx.sessionManager.getBranch(),\n\t\tcustomInstructions,\n\t\tsignal,\n\t};\n}\n\nexport default function compactionExtension(pi: ExtensionAPI): void {\n\tlet state: CompactionExtensionState = createInitialState();\n\tconst degradationState = createDegradationMonitorState();\n\tconst restorationState = state.restoration ?? restoration.createRestorationTrackerState();\n\tstate = { ...state, restoration: restorationState };\n\tlet speculativeGeneration = 0;\n\tlet speculativeJob:\n\t\t| {\n\t\t\t\tgeneration: number;\n\t\t\t\tsnapshot: SpeculativeCompactionSnapshot;\n\t\t\t\tcontroller: AbortController;\n\t\t\t\tpromise: Promise<CompactionResult | undefined>;\n\t\t }\n\t\t| undefined;\n\tconst pendingMetadata = new Map<string, PendingCompactionMetadata>();\n\n\tfunction getSummarizationTools(): Tool[] {\n\t\tif (typeof pi.getAllTools !== \"function\") return [];\n\t\ttry {\n\t\t\treturn pi.getAllTools().map((tool) => ({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters,\n\t\t\t}));\n\t\t} catch {\n\t\t\t// Tool registry not bound yet (extension still loading); the summary\n\t\t\t// request simply goes out without tool definitions.\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tfunction invalidateSpeculativeCompaction(): void {\n\t\tspeculativeGeneration++;\n\t\tspeculativeJob?.controller.abort();\n\t\tspeculativeJob = undefined;\n\t}\n\n\tfunction startSpeculativeCompaction(ctx: ExtensionContext, customInstructions: string): void {\n\t\tif (speculativeJob) return;\n\t\tconst generation = ++speculativeGeneration;\n\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, {\n\t\t\tgeneration,\n\t\t\tcustomInstructions,\n\t\t\ttools: getSummarizationTools(),\n\t\t});\n\t\tif (!snapshot) return;\n\n\t\tconst controller = new AbortController();\n\t\tconst promise = runExtensionCompaction(ctx, snapshot, controller.signal).catch(() => undefined);\n\t\tspeculativeJob = { generation, snapshot, controller, promise };\n\t}\n\n\tfunction capturePendingMetadata(requestId: string, ctx: ExtensionContext): void {\n\t\tpendingMetadata.set(requestId, {\n\t\t\tcheckpoint: checkpointState.captureAgentCheckpoint(pi, ctx),\n\t\t\ttodoSnapshot: todoBridge.createTodoSnapshot(ctx),\n\t\t});\n\t\twhile (pendingMetadata.size > MAX_PENDING_METADATA) {\n\t\t\tconst oldestRequestId = pendingMetadata.keys().next().value;\n\t\t\tif (oldestRequestId === undefined) break;\n\t\t\tpendingMetadata.delete(oldestRequestId);\n\t\t}\n\t}\n\n\tfunction persistAcceptedMetadata(requestId: string): void {\n\t\tconst metadata = pendingMetadata.get(requestId);\n\t\tif (!metadata) return;\n\t\tpendingMetadata.delete(requestId);\n\t\tcheckpointState.persistCheckpoint(pi, metadata.checkpoint);\n\t\ttodoBridge.persistTodoSnapshot(pi, metadata.todoSnapshot);\n\t}\n\n\tasync function applyBlockingCompaction(\n\t\tctx: ExtensionContext,\n\t\tcustomInstructions: string,\n\t): Promise<SpeculativeCompactionResult> {\n\t\tlet feedbackSignal = ctx.beginCompaction?.({ reason: \"extension\" });\n\t\ttry {\n\t\t\tif (isOpenAiResponsesModel(ctx.model)) {\n\t\t\t\tconst remoteGeneration = speculativeGeneration + 1;\n\t\t\t\tconst remoteSnapshot = createSpeculativeCompactionSnapshot(ctx, {\n\t\t\t\t\tgeneration: remoteGeneration,\n\t\t\t\t\tcustomInstructions,\n\t\t\t\t});\n\t\t\t\tif (remoteSnapshot) {\n\t\t\t\t\tconst remoteSignal = feedbackSignal ?? new AbortController().signal;\n\t\t\t\t\tconst remoteCompaction = await runOpenAiRemoteCompaction(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tcreateBlockingRemoteCompactionEvent(ctx, remoteSnapshot, customInstructions, remoteSignal),\n\t\t\t\t\t\t(data) => pi.events.emit(SENPI_COMPACTION_EVENT, data),\n\t\t\t\t\t);\n\t\t\t\t\tif (remoteCompaction) {\n\t\t\t\t\t\tif (speculativeGeneration !== remoteGeneration - 1) {\n\t\t\t\t\t\t\tconst result = { applied: false, reason: \"stale\" } as const;\n\t\t\t\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tspeculativeGeneration = remoteGeneration;\n\t\t\t\t\t\tspeculativeJob?.controller.abort();\n\t\t\t\t\t\tspeculativeJob = undefined;\n\t\t\t\t\t\tconst result = await applyGeneratedCompaction(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tremoteSnapshot,\n\t\t\t\t\t\t\t() => speculativeGeneration,\n\t\t\t\t\t\t\tremoteCompaction,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst pendingJob = speculativeJob;\n\t\t\tif (pendingJob) {\n\t\t\t\tconst unlinkAbort = linkAbortSignal(feedbackSignal, pendingJob.controller);\n\t\t\t\tlet compaction: CompactionResult | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tcompaction = await pendingJob.promise;\n\t\t\t\t} finally {\n\t\t\t\t\tunlinkAbort();\n\t\t\t\t}\n\t\t\t\tconst result = await applyGeneratedCompaction(\n\t\t\t\t\tctx,\n\t\t\t\t\tpendingJob.snapshot,\n\t\t\t\t\t() => speculativeGeneration,\n\t\t\t\t\tcompaction,\n\t\t\t\t);\n\t\t\t\tif (result.applied || result.reason === \"stale\") {\n\t\t\t\t\tspeculativeJob = undefined;\n\t\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tif (result.reason === \"rejected\") {\n\t\t\t\t\tfeedbackSignal = ctx.beginCompaction?.({ reason: \"extension\" });\n\t\t\t\t}\n\t\t\t\tspeculativeJob = undefined;\n\t\t\t}\n\n\t\t\tconst generation = ++speculativeGeneration;\n\t\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, {\n\t\t\t\tgeneration,\n\t\t\t\tcustomInstructions,\n\t\t\t\ttools: getSummarizationTools(),\n\t\t\t});\n\t\t\tif (!snapshot) {\n\t\t\t\tconst result = { applied: false, reason: \"unavailable\" } as const;\n\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tconst compaction = await runExtensionCompaction(ctx, snapshot, feedbackSignal, (delta) =>\n\t\t\t\tctx.updateCompaction?.({ reason: \"extension\", delta }),\n\t\t\t);\n\t\t\tconst result = await applyGeneratedCompaction(ctx, snapshot, () => speculativeGeneration, compaction);\n\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tctx.endCompaction?.({\n\t\t\t\treason: \"extension\",\n\t\t\t\taborted: feedbackSignal?.aborted,\n\t\t\t\terrorMessage: `Compaction failed: ${message}`,\n\t\t\t});\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tpi.on(\"session_before_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (cap.shouldRejectByCap(state, { reason: event.reason }).cancel) return { cancel: true };\n\t\tif (breaker.isTripped(state, Date.now()) && !breaker.shouldBypass(state, { reason: event.reason }))\n\t\t\treturn { cancel: true };\n\n\t\tcapturePendingMetadata(event.requestId, ctx);\n\n\t\tconst model = ctx.model;\n\t\tif (!model) return undefined;\n\t\tconst remoteCompaction = await runOpenAiRemoteCompaction(ctx, event, (data) =>\n\t\t\tpi.events.emit(SENPI_COMPACTION_EVENT, data),\n\t\t);\n\t\tif (remoteCompaction) {\n\t\t\treturn { compaction: remoteCompaction };\n\t\t}\n\n\t\tconst snapshot = {\n\t\t\tgeneration: ++speculativeGeneration,\n\t\t\texpectedRevision: ctx.getMessageRevision(),\n\t\t\tmodel,\n\t\t\tcontextWindow: ctx.getContextUsage()?.contextWindow ?? model.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\tpreparation: event.preparation,\n\t\t\tpromptVariant: getPromptVariant(event),\n\t\t\tcustomInstructions: event.customInstructions,\n\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\ttools: getSummarizationTools(),\n\t\t};\n\t\tlet compaction: CompactionResult | undefined;\n\t\ttry {\n\t\t\tcompaction = await runExtensionCompaction(ctx, snapshot, event.signal, (delta) =>\n\t\t\t\tctx.updateCompaction?.({ reason: event.reason, delta }),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\t// Surface the real provider failure (e.g. a policy refusal or rate\n\t\t\t// limit) instead of letting it degrade into a bare \"Compaction\n\t\t\t// cancelled\". Cancel rather than fall back: the core route would\n\t\t\t// re-send the same conversation and burn tokens on the same failure.\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tctx.ui.notify(`Compaction failed: ${message}`, \"error\");\n\t\t\tpendingMetadata.delete(event.requestId);\n\t\t\treturn { cancel: true };\n\t\t}\n\t\tif (!compaction) {\n\t\t\tpendingMetadata.delete(event.requestId);\n\t\t\treturn { cancel: true };\n\t\t}\n\n\t\treturn {\n\t\t\tcompaction,\n\t\t};\n\t});\n\n\tpi.on(\"model_select\", () => {\n\t\tinvalidateSpeculativeCompaction();\n\t});\n\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (event.accepted) {\n\t\t\tpersistAcceptedMetadata(event.requestId);\n\t\t\tconst branchEntries = ctx.sessionManager.getBranch();\n\t\t\tconst firstKeptIndex = branchEntries.findIndex((entry) => entry.id === event.compactionEntry.firstKeptEntryId);\n\t\t\tconst keptEntries = firstKeptIndex === -1 ? [] : branchEntries.slice(firstKeptIndex);\n\t\t\tstate = cap.incrementAccepted(state);\n\t\t\tstate = breaker.recordSuccess(state);\n\t\t\tstate = updateLastYield(state, event.compactionEntry);\n\t\t\tresetOnSessionCompact(degradationState);\n\t\t\ttodoBridge.restoreTodosIfMissing(pi, ctx);\n\t\t\tconst usage = ctx.getContextUsage();\n\t\t\tconst settings = ctx.getCompactionSettings();\n\t\t\tif (settings.restorationEnabled ?? true) {\n\t\t\t\trestoration.preparePendingPayload(restorationState, {\n\t\t\t\t\taccepted: true,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t\tcompactionEntryId: event.compactionEntry.id,\n\t\t\t\t\tcontextWindow: usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\t\t\tusageTokens: usage?.tokens ?? null,\n\t\t\t\t\treserveTokens: settings.reserveTokens,\n\t\t\t\t\tsettings,\n\t\t\t\t\tkeptMessages: keptEntries.flatMap((entry) => {\n\t\t\t\t\t\tif (entry.type !== \"message\") return [];\n\t\t\t\t\t\treturn [entry.message];\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tstate = breaker.recordFailure(state, Date.now(), { route: event.reason });\n\t\tctx.ui.notify(`Compaction rejected: ${event.rejectionCause ?? \"unknown\"}`, \"warning\");\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tlet systemPrompt = event.systemPrompt;\n\t\tconst message = restoration.consumePendingPayload(restorationState);\n\t\tconst checkpoint = recentCheckpoint(ctx);\n\t\tif (checkpoint) systemPrompt = checkpointState.injectRestorationDirective(systemPrompt, checkpoint);\n\n\t\tconst usage = ctx.getContextUsage();\n\t\tconst contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst settings = ctx.getCompactionSettings();\n\t\tconst pendingPromptTokens = estimatePendingPromptTokens(event);\n\t\tconst usageWithPendingPrompt = usage ? withAdditionalTokens(usage, pendingPromptTokens) : undefined;\n\t\tif (usage && policy.isAtHardLimit(usage, contextWindow, settings.reserveTokens, pendingPromptTokens)) {\n\t\t\tawait applyBlockingCompaction(ctx, EMERGENCY_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusageWithPendingPrompt &&\n\t\t\tpolicy.shouldTriggerCompaction(usageWithPendingPrompt, contextWindow, settings, state.lastYield ?? undefined)\n\t\t) {\n\t\t\tawait applyBlockingCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusageWithPendingPrompt &&\n\t\t\tpolicy.shouldStartSpeculativeCompaction(\n\t\t\t\tusageWithPendingPrompt,\n\t\t\t\tcontextWindow,\n\t\t\t\tsettings,\n\t\t\t\tstate.lastYield ?? undefined,\n\t\t\t)\n\t\t) {\n\t\t\tstartSpeculativeCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t}\n\n\t\tif (systemPrompt === event.systemPrompt && !message) return undefined;\n\t\treturn message ? { systemPrompt, message } : { systemPrompt };\n\t});\n\n\tpi.on(\"context\", (event, ctx) => {\n\t\tconst usage = ctx.getContextUsage();\n\t\tconst contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst promptContextWindow = getPromptContextWindow(contextWindow, ctx.model?.maxTokens);\n\t\tconst sourceMessages = shouldApplyContextReduction({\n\t\t\tusageTokens: usage?.tokens ?? null,\n\t\t\tcontextWindow,\n\t\t\tisProviderNativeCompactionPath: isOpenAiResponsesModel(ctx.model),\n\t\t})\n\t\t\t? reduceContextMessages(event.messages, BUILTIN_CONTEXT_REDUCTION_OPTIONS).messages\n\t\t\t: event.messages;\n\t\tconst emergency = hardLimitEmergencyPrune(sourceMessages, promptContextWindow);\n\t\treturn { messages: repairOrphanedToolResults(convertToLlm(emergency.messages)) };\n\t});\n\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\treturn rewriteOpenAiPayloadWithRemoteCompaction(\n\t\t\tevent.payload,\n\t\t\t{ model: ctx.model, branchEntries: ctx.sessionManager.getBranch() },\n\t\t\t(data) => pi.events.emit(SENPI_COMPACTION_EVENT, data),\n\t\t);\n\t});\n\n\tpi.on(\"turn_end\", async (_event, ctx) => {\n\t\thandleTurnEnd(degradationState);\n\t\tif (degradationState.recoveryTriggeredThisCycle) return;\n\t\tif (state.lastYield && state.lastYield.savedTokens <= 0) {\n\t\t\tvoid applyBlockingCompaction(ctx, RECOVERY_INSTRUCTIONS).catch(() => {\n\t\t\t\t// Fire-and-forget recovery: applyBlockingCompaction already ended\n\t\t\t\t// user-visible feedback with the error message.\n\t\t\t});\n\t\t}\n\t});\n\n\tpi.on(\"agent_end\", () => {\n\t\tstate = resetTurnCounter(state, \"\");\n\t});\n\n\tpi.on(\"message_end\", async (event, ctx) => {\n\t\tif (isAbortedAssistantMessage(event)) {\n\t\t\tinvalidateSpeculativeCompaction();\n\t\t}\n\t\tif (isMonitorableMessageEvent(event)) {\n\t\t\tawait handleMessageEnd(degradationState, event, {\n\t\t\t\tapplyCompaction: async (options) => {\n\t\t\t\t\treturn await applyBlockingCompaction(ctx, options.customInstructions);\n\t\t\t\t},\n\t\t\t\tnotify: (message) => ctx.ui.notify(message, \"warning\"),\n\t\t\t});\n\t\t}\n\t});\n\n\tpi.on(\"tool_call\", (event) => {\n\t\trestoration.trackToolCall(restorationState, event);\n\t});\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { Tool } from \"@earendil-works/pi-ai\";\nimport type { CompactionResult } from \"../../../compaction/index.ts\";\nimport { convertToLlm } from \"../../../messages.ts\";\nimport type { CompactionEntry } from \"../../../session-manager.ts\";\nimport type { ContextUsage, ExtensionAPI, ExtensionContext, SessionBeforeCompactEvent } from \"../../types.ts\";\nimport * as checkpointState from \"./checkpoint-state.ts\";\nimport * as breaker from \"./circuit-breaker.ts\";\nimport {\n\tBUILTIN_CONTEXT_REDUCTION_OPTIONS,\n\treduceContextMessages,\n\tshouldApplyContextReduction,\n} from \"./context-reduction.ts\";\nimport {\n\tcreateDegradationMonitorState,\n\thandleMessageEnd,\n\thandleTurnEnd,\n\tRECOVERY_INSTRUCTIONS,\n\tresetOnSessionCompact,\n} from \"./degradation-monitor.ts\";\nimport {\n\trewriteOpenAiPayloadWithRemoteCompaction,\n\trunOpenAiRemoteCompaction,\n\tSENPI_COMPACTION_EVENT,\n} from \"./openai-remote.ts\";\nimport * as cap from \"./per-turn-cap.ts\";\nimport * as policy from \"./policy.ts\";\nimport { repairOrphanedToolResults } from \"./repair-tool-pairs.ts\";\nimport * as restoration from \"./restoration-tracker.ts\";\nimport {\n\tapplyGeneratedCompaction,\n\tcreateSpeculativeCompactionSnapshot,\n\tgetPromptVariant,\n\thardLimitEmergencyPrune,\n\trunExtensionCompaction,\n\ttype SpeculativeCompactionResult,\n\ttype SpeculativeCompactionSnapshot,\n\tSummaryGenerationError,\n} from \"./speculative.ts\";\nimport { type CompactionExtensionState, createInitialState, resetTurnCounter } from \"./state.ts\";\nimport * as todoBridge from \"./todo-bridge.ts\";\n\nconst DEFAULT_CONTEXT_WINDOW = 200_000;\nconst EMERGENCY_COMPACTION_INSTRUCTIONS =\n\t\"EMERGENCY: hard context limit reached. Produce an aggressive recovery summary that preserves current goal, constraints, files touched, tool outcomes, and exact next steps. Prefer concise factual state over transcript detail.\";\nconst PROACTIVE_COMPACTION_INSTRUCTIONS = \"Proactively compact before the next agent turn.\";\nconst MAX_PENDING_METADATA = 8;\nconst IMAGE_PROMPT_TOKEN_ESTIMATE = 1_200;\nconst MAX_OUTPUT_RESERVE_RATIO = 0.5;\n\ninterface PendingCompactionMetadata {\n\tcheckpoint: checkpointState.AgentCheckpoint;\n\ttodoSnapshot: todoBridge.TodoSnapshotPayload;\n}\n\nfunction approxTokens(text: string): number {\n\treturn Math.ceil(text.length / 4);\n}\n\nfunction isOpenAiResponsesModel(model: ExtensionContext[\"model\"]): boolean {\n\treturn model?.provider === \"openai\" && model.api === \"openai-responses\";\n}\n\nfunction estimatePendingPromptTokens(event: { prompt?: string; images?: readonly unknown[] }): number {\n\treturn approxTokens(event.prompt ?? \"\") + (event.images?.length ?? 0) * IMAGE_PROMPT_TOKEN_ESTIMATE;\n}\n\nfunction getPromptContextWindow(contextWindow: number, maxTokens: number | undefined): number {\n\tif (typeof maxTokens !== \"number\" || !Number.isFinite(maxTokens) || maxTokens <= 0 || contextWindow <= 0) {\n\t\treturn contextWindow;\n\t}\n\tconst outputReserve = Math.min(maxTokens, Math.floor(contextWindow * MAX_OUTPUT_RESERVE_RATIO));\n\treturn contextWindow - outputReserve;\n}\n\nfunction withAdditionalTokens(usage: ContextUsage, additionalTokens: number): ContextUsage {\n\tif (usage.tokens === null || additionalTokens <= 0) return usage;\n\tconst tokens = usage.tokens + additionalTokens;\n\treturn {\n\t\t...usage,\n\t\ttokens,\n\t\tpercent: usage.contextWindow > 0 ? (tokens / usage.contextWindow) * 100 : usage.percent,\n\t};\n}\n\nfunction isMonitorableMessageEvent(event: { message: AgentMessage }): event is {\n\tmessage: AgentMessage & { content: Array<{ type: string; text?: string }> };\n} {\n\treturn \"content\" in event.message && Array.isArray(event.message.content);\n}\n\nfunction isAbortedAssistantMessage(event: { message: AgentMessage }): boolean {\n\treturn event.message.role === \"assistant\" && \"stopReason\" in event.message && event.message.stopReason === \"aborted\";\n}\n\nfunction updateLastYield(state: CompactionExtensionState, entry: CompactionEntry): CompactionExtensionState {\n\tconst savedTokens = Math.max(0, entry.tokensBefore - approxTokens(entry.summary));\n\treturn { ...state, lastYield: { savedTokens, tokensBefore: entry.tokensBefore } };\n}\n\nfunction recentCheckpoint(ctx: ExtensionContext): checkpointState.AgentCheckpoint | null {\n\tconst checkpoint = checkpointState.getLatestCheckpoint(ctx);\n\tif (!checkpoint?.timestamp) return null;\n\treturn Date.now() - checkpoint.timestamp <= 60_000 ? checkpoint : null;\n}\n\nfunction shouldEndFeedback(result: SpeculativeCompactionResult): boolean {\n\treturn !result.applied && result.reason !== \"rejected\";\n}\n\nfunction endCompactionFeedback(\n\tctx: ExtensionContext,\n\tsignal: AbortSignal | undefined,\n\tresult: SpeculativeCompactionResult,\n): void {\n\tif (shouldEndFeedback(result)) {\n\t\tctx.endCompaction?.({ reason: \"extension\", aborted: signal?.aborted });\n\t}\n}\n\nfunction linkAbortSignal(source: AbortSignal | undefined, target: AbortController): () => void {\n\tif (!source) return () => {};\n\tif (source.aborted) {\n\t\ttarget.abort();\n\t\treturn () => {};\n\t}\n\tconst abort = () => target.abort();\n\tsource.addEventListener(\"abort\", abort, { once: true });\n\treturn () => source.removeEventListener(\"abort\", abort);\n}\n\nfunction createBlockingRemoteCompactionEvent(\n\tctx: ExtensionContext,\n\tsnapshot: SpeculativeCompactionSnapshot,\n\tcustomInstructions: string,\n\tsignal: AbortSignal,\n): SessionBeforeCompactEvent {\n\treturn {\n\t\ttype: \"session_before_compact\",\n\t\treason: \"extension\",\n\t\twillRetry: false,\n\t\trequestId: randomUUID(),\n\t\tpreparation: snapshot.preparation,\n\t\tbranchEntries: ctx.sessionManager.getBranch(),\n\t\tcustomInstructions,\n\t\tsignal,\n\t};\n}\n\nexport default function compactionExtension(pi: ExtensionAPI): void {\n\tlet state: CompactionExtensionState = createInitialState();\n\tconst degradationState = createDegradationMonitorState();\n\tconst restorationState = state.restoration ?? restoration.createRestorationTrackerState();\n\tstate = { ...state, restoration: restorationState };\n\tlet speculativeGeneration = 0;\n\tlet speculativeJob:\n\t\t| {\n\t\t\t\tgeneration: number;\n\t\t\t\tsnapshot: SpeculativeCompactionSnapshot;\n\t\t\t\tcontroller: AbortController;\n\t\t\t\tpromise: Promise<CompactionResult | undefined>;\n\t\t }\n\t\t| undefined;\n\tconst pendingMetadata = new Map<string, PendingCompactionMetadata>();\n\n\tfunction getSummarizationTools(): Tool[] {\n\t\tif (typeof pi.getAllTools !== \"function\") return [];\n\t\ttry {\n\t\t\treturn pi.getAllTools().map((tool) => ({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters,\n\t\t\t}));\n\t\t} catch {\n\t\t\t// Tool registry not bound yet (extension still loading); the summary\n\t\t\t// request simply goes out without tool definitions.\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tfunction invalidateSpeculativeCompaction(): void {\n\t\tspeculativeGeneration++;\n\t\tspeculativeJob?.controller.abort();\n\t\tspeculativeJob = undefined;\n\t}\n\n\tfunction startSpeculativeCompaction(ctx: ExtensionContext, customInstructions: string): void {\n\t\tif (speculativeJob) return;\n\t\tconst generation = ++speculativeGeneration;\n\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, {\n\t\t\tgeneration,\n\t\t\tcustomInstructions,\n\t\t\ttools: getSummarizationTools(),\n\t\t});\n\t\tif (!snapshot) return;\n\n\t\tconst controller = new AbortController();\n\t\tconst promise = runExtensionCompaction(ctx, snapshot, controller.signal).catch(() => undefined);\n\t\tspeculativeJob = { generation, snapshot, controller, promise };\n\t}\n\n\tfunction capturePendingMetadata(requestId: string, ctx: ExtensionContext): void {\n\t\tpendingMetadata.set(requestId, {\n\t\t\tcheckpoint: checkpointState.captureAgentCheckpoint(pi, ctx),\n\t\t\ttodoSnapshot: todoBridge.createTodoSnapshot(ctx),\n\t\t});\n\t\twhile (pendingMetadata.size > MAX_PENDING_METADATA) {\n\t\t\tconst oldestRequestId = pendingMetadata.keys().next().value;\n\t\t\tif (oldestRequestId === undefined) break;\n\t\t\tpendingMetadata.delete(oldestRequestId);\n\t\t}\n\t}\n\n\tfunction persistAcceptedMetadata(requestId: string): void {\n\t\tconst metadata = pendingMetadata.get(requestId);\n\t\tif (!metadata) return;\n\t\tpendingMetadata.delete(requestId);\n\t\tcheckpointState.persistCheckpoint(pi, metadata.checkpoint);\n\t\ttodoBridge.persistTodoSnapshot(pi, metadata.todoSnapshot);\n\t}\n\n\tasync function applyBlockingCompaction(\n\t\tctx: ExtensionContext,\n\t\tcustomInstructions: string,\n\t): Promise<SpeculativeCompactionResult> {\n\t\tlet feedbackSignal = ctx.beginCompaction?.({ reason: \"extension\" });\n\t\ttry {\n\t\t\tif (isOpenAiResponsesModel(ctx.model)) {\n\t\t\t\tconst remoteGeneration = speculativeGeneration + 1;\n\t\t\t\tconst remoteSnapshot = createSpeculativeCompactionSnapshot(ctx, {\n\t\t\t\t\tgeneration: remoteGeneration,\n\t\t\t\t\tcustomInstructions,\n\t\t\t\t});\n\t\t\t\tif (remoteSnapshot) {\n\t\t\t\t\tconst remoteSignal = feedbackSignal ?? new AbortController().signal;\n\t\t\t\t\tconst remoteCompaction = await runOpenAiRemoteCompaction(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tcreateBlockingRemoteCompactionEvent(ctx, remoteSnapshot, customInstructions, remoteSignal),\n\t\t\t\t\t\t(data) => pi.events.emit(SENPI_COMPACTION_EVENT, data),\n\t\t\t\t\t);\n\t\t\t\t\tif (remoteCompaction) {\n\t\t\t\t\t\tif (speculativeGeneration !== remoteGeneration - 1) {\n\t\t\t\t\t\t\tconst result = { applied: false, reason: \"stale\" } as const;\n\t\t\t\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tspeculativeGeneration = remoteGeneration;\n\t\t\t\t\t\tspeculativeJob?.controller.abort();\n\t\t\t\t\t\tspeculativeJob = undefined;\n\t\t\t\t\t\tconst result = await applyGeneratedCompaction(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tremoteSnapshot,\n\t\t\t\t\t\t\t() => speculativeGeneration,\n\t\t\t\t\t\t\tremoteCompaction,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst pendingJob = speculativeJob;\n\t\t\tif (pendingJob) {\n\t\t\t\tconst unlinkAbort = linkAbortSignal(feedbackSignal, pendingJob.controller);\n\t\t\t\tlet compaction: CompactionResult | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tcompaction = await pendingJob.promise;\n\t\t\t\t} finally {\n\t\t\t\t\tunlinkAbort();\n\t\t\t\t}\n\t\t\t\tconst result = await applyGeneratedCompaction(\n\t\t\t\t\tctx,\n\t\t\t\t\tpendingJob.snapshot,\n\t\t\t\t\t() => speculativeGeneration,\n\t\t\t\t\tcompaction,\n\t\t\t\t);\n\t\t\t\tif (result.applied || result.reason === \"stale\") {\n\t\t\t\t\tspeculativeJob = undefined;\n\t\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tif (result.reason === \"rejected\") {\n\t\t\t\t\tfeedbackSignal = ctx.beginCompaction?.({ reason: \"extension\" });\n\t\t\t\t}\n\t\t\t\tspeculativeJob = undefined;\n\t\t\t}\n\n\t\t\tconst generation = ++speculativeGeneration;\n\t\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, {\n\t\t\t\tgeneration,\n\t\t\t\tcustomInstructions,\n\t\t\t\ttools: getSummarizationTools(),\n\t\t\t});\n\t\t\tif (!snapshot) {\n\t\t\t\tconst result = { applied: false, reason: \"unavailable\" } as const;\n\t\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tlet compaction: CompactionResult | undefined;\n\t\t\ttry {\n\t\t\t\tcompaction = await runExtensionCompaction(ctx, snapshot, feedbackSignal, (delta) =>\n\t\t\t\t\tctx.updateCompaction?.({ reason: \"extension\", delta }),\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\t// Auto-path parity: summary-generation failures (missing credentials,\n\t\t\t\t// text-less response) degrade to \"unavailable\" exactly as before\n\t\t\t\t// instead of erroring the turn; the precise reason still surfaces on\n\t\t\t\t// the session_before_compact route.\n\t\t\t\tif (!(error instanceof SummaryGenerationError)) throw error;\n\t\t\t}\n\t\t\tconst result = await applyGeneratedCompaction(ctx, snapshot, () => speculativeGeneration, compaction);\n\t\t\tendCompactionFeedback(ctx, feedbackSignal, result);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tctx.endCompaction?.({\n\t\t\t\treason: \"extension\",\n\t\t\t\taborted: feedbackSignal?.aborted,\n\t\t\t\terrorMessage: `Compaction failed: ${message}`,\n\t\t\t});\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tpi.on(\"session_before_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (cap.shouldRejectByCap(state, { reason: event.reason }).cancel) {\n\t\t\treturn {\n\t\t\t\tcancel: true,\n\t\t\t\trejectionCause: \"per-turn-cap\",\n\t\t\t\treason: \"per-turn compaction cap reached for this turn\",\n\t\t\t};\n\t\t}\n\t\tconst now = Date.now();\n\t\tif (breaker.isTripped(state, now) && !breaker.shouldBypass(state, { reason: event.reason })) {\n\t\t\tconst remainingMs = state.trippedAt !== null ? Math.max(0, state.trippedAt + breaker.COOLDOWN_MS - now) : 0;\n\t\t\tconst remainingSec = Math.ceil(remainingMs / 1000);\n\t\t\treturn {\n\t\t\t\tcancel: true,\n\t\t\t\trejectionCause: \"circuit-breaker\",\n\t\t\t\treason: `compaction circuit breaker cooling down (${remainingSec}s left)`,\n\t\t\t};\n\t\t}\n\n\t\tcapturePendingMetadata(event.requestId, ctx);\n\n\t\tconst model = ctx.model;\n\t\tif (!model) return undefined;\n\t\tconst remoteCompaction = await runOpenAiRemoteCompaction(ctx, event, (data) =>\n\t\t\tpi.events.emit(SENPI_COMPACTION_EVENT, data),\n\t\t);\n\t\tif (remoteCompaction) {\n\t\t\treturn { compaction: remoteCompaction };\n\t\t}\n\n\t\tconst snapshot = {\n\t\t\tgeneration: ++speculativeGeneration,\n\t\t\texpectedRevision: ctx.getMessageRevision(),\n\t\t\tmodel,\n\t\t\tcontextWindow: ctx.getContextUsage()?.contextWindow ?? model.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\tpreparation: event.preparation,\n\t\t\tpromptVariant: getPromptVariant(event),\n\t\t\tcustomInstructions: event.customInstructions,\n\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\ttools: getSummarizationTools(),\n\t\t};\n\t\tlet compaction: CompactionResult | undefined;\n\t\ttry {\n\t\t\tcompaction = await runExtensionCompaction(ctx, snapshot, event.signal, (delta) =>\n\t\t\t\tctx.updateCompaction?.({ reason: event.reason, delta }),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\t// Surface the real provider failure (e.g. a policy refusal or rate\n\t\t\t// limit) instead of letting it degrade into a bare \"Compaction\n\t\t\t// cancelled\". Cancel rather than fall back: the core route would\n\t\t\t// re-send the same conversation and burn tokens on the same failure.\n\t\t\t// The reason threads into compaction_end.errorMessage so the UI shows\n\t\t\t// the real provider message; ctx.ui.notify would be a duplicate toast.\n\t\t\tpendingMetadata.delete(event.requestId);\n\t\t\tif (error instanceof SummaryGenerationError) {\n\t\t\t\treturn { cancel: true, reason: error.message };\n\t\t\t}\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn { cancel: true, reason: `compaction generator failed: ${message}` };\n\t\t}\n\t\tif (!compaction) {\n\t\t\tpendingMetadata.delete(event.requestId);\n\t\t\tif (event.signal.aborted) {\n\t\t\t\t// User abort: returning no reason lets agent-session's aborted branch\n\t\t\t\t// render the plain \"Compaction cancelled\" instead of a misleading\n\t\t\t\t// \"returned no summary\" rejection.\n\t\t\t\treturn { cancel: true };\n\t\t\t}\n\t\t\treturn { cancel: true, reason: \"compaction generator returned no summary\" };\n\t\t}\n\n\t\treturn {\n\t\t\tcompaction,\n\t\t};\n\t});\n\n\tpi.on(\"model_select\", () => {\n\t\tinvalidateSpeculativeCompaction();\n\t});\n\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (event.accepted) {\n\t\t\tpersistAcceptedMetadata(event.requestId);\n\t\t\tconst branchEntries = ctx.sessionManager.getBranch();\n\t\t\tconst firstKeptIndex = branchEntries.findIndex((entry) => entry.id === event.compactionEntry.firstKeptEntryId);\n\t\t\tconst keptEntries = firstKeptIndex === -1 ? [] : branchEntries.slice(firstKeptIndex);\n\t\t\tstate = cap.incrementAccepted(state);\n\t\t\tstate = breaker.recordSuccess(state);\n\t\t\tstate = updateLastYield(state, event.compactionEntry);\n\t\t\tresetOnSessionCompact(degradationState);\n\t\t\ttodoBridge.restoreTodosIfMissing(pi, ctx);\n\t\t\tconst usage = ctx.getContextUsage();\n\t\t\tconst settings = ctx.getCompactionSettings();\n\t\t\tif (settings.restorationEnabled ?? true) {\n\t\t\t\trestoration.preparePendingPayload(restorationState, {\n\t\t\t\t\taccepted: true,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t\tcompactionEntryId: event.compactionEntry.id,\n\t\t\t\t\tcontextWindow: usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\t\t\tusageTokens: usage?.tokens ?? null,\n\t\t\t\t\treserveTokens: settings.reserveTokens,\n\t\t\t\t\tsettings,\n\t\t\t\t\tkeptMessages: keptEntries.flatMap((entry) => {\n\t\t\t\t\t\tif (entry.type !== \"message\") return [];\n\t\t\t\t\t\treturn [entry.message];\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t// Rejection feedback is emitted by core via compaction_end.errorMessage;\n\t\t// duplicating it as a ctx.ui.notify toast produces double surfaces while\n\t\t// the compaction status indicator is still animating (plan §1 Q3).\n\t\tstate = breaker.recordFailure(state, Date.now(), { route: event.reason });\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tlet systemPrompt = event.systemPrompt;\n\t\tconst message = restoration.consumePendingPayload(restorationState);\n\t\tconst checkpoint = recentCheckpoint(ctx);\n\t\tif (checkpoint) systemPrompt = checkpointState.injectRestorationDirective(systemPrompt, checkpoint);\n\n\t\tconst usage = ctx.getContextUsage();\n\t\tconst contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst settings = ctx.getCompactionSettings();\n\t\tconst pendingPromptTokens = estimatePendingPromptTokens(event);\n\t\tconst usageWithPendingPrompt = usage ? withAdditionalTokens(usage, pendingPromptTokens) : undefined;\n\t\tif (usage && policy.isAtHardLimit(usage, contextWindow, settings.reserveTokens, pendingPromptTokens)) {\n\t\t\tawait applyBlockingCompaction(ctx, EMERGENCY_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusageWithPendingPrompt &&\n\t\t\tpolicy.shouldTriggerCompaction(usageWithPendingPrompt, contextWindow, settings, state.lastYield ?? undefined)\n\t\t) {\n\t\t\tawait applyBlockingCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusageWithPendingPrompt &&\n\t\t\tpolicy.shouldStartSpeculativeCompaction(\n\t\t\t\tusageWithPendingPrompt,\n\t\t\t\tcontextWindow,\n\t\t\t\tsettings,\n\t\t\t\tstate.lastYield ?? undefined,\n\t\t\t)\n\t\t) {\n\t\t\tstartSpeculativeCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t}\n\n\t\tif (systemPrompt === event.systemPrompt && !message) return undefined;\n\t\treturn message ? { systemPrompt, message } : { systemPrompt };\n\t});\n\n\tpi.on(\"context\", (event, ctx) => {\n\t\tconst usage = ctx.getContextUsage();\n\t\tconst contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst promptContextWindow = getPromptContextWindow(contextWindow, ctx.model?.maxTokens);\n\t\tconst sourceMessages = shouldApplyContextReduction({\n\t\t\tusageTokens: usage?.tokens ?? null,\n\t\t\tcontextWindow,\n\t\t\tisProviderNativeCompactionPath: isOpenAiResponsesModel(ctx.model),\n\t\t})\n\t\t\t? reduceContextMessages(event.messages, BUILTIN_CONTEXT_REDUCTION_OPTIONS).messages\n\t\t\t: event.messages;\n\t\tconst emergency = hardLimitEmergencyPrune(sourceMessages, promptContextWindow);\n\t\treturn { messages: repairOrphanedToolResults(convertToLlm(emergency.messages)) };\n\t});\n\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\treturn rewriteOpenAiPayloadWithRemoteCompaction(\n\t\t\tevent.payload,\n\t\t\t{ model: ctx.model, branchEntries: ctx.sessionManager.getBranch() },\n\t\t\t(data) => pi.events.emit(SENPI_COMPACTION_EVENT, data),\n\t\t);\n\t});\n\n\tpi.on(\"turn_end\", async (_event, ctx) => {\n\t\thandleTurnEnd(degradationState);\n\t\tif (degradationState.recoveryTriggeredThisCycle) return;\n\t\tif (state.lastYield && state.lastYield.savedTokens <= 0) {\n\t\t\tvoid applyBlockingCompaction(ctx, RECOVERY_INSTRUCTIONS).catch(() => {\n\t\t\t\t// Fire-and-forget recovery: applyBlockingCompaction already ended\n\t\t\t\t// user-visible feedback with the error message.\n\t\t\t});\n\t\t}\n\t});\n\n\tpi.on(\"agent_end\", () => {\n\t\tstate = resetTurnCounter(state, \"\");\n\t});\n\n\tpi.on(\"message_end\", async (event, ctx) => {\n\t\tif (isAbortedAssistantMessage(event)) {\n\t\t\tinvalidateSpeculativeCompaction();\n\t\t}\n\t\tif (isMonitorableMessageEvent(event)) {\n\t\t\tawait handleMessageEnd(degradationState, event, {\n\t\t\t\tapplyCompaction: async (options) => {\n\t\t\t\t\treturn await applyBlockingCompaction(ctx, options.customInstructions);\n\t\t\t\t},\n\t\t\t\tnotify: (message) => ctx.ui.notify(message, \"warning\"),\n\t\t\t});\n\t\t}\n\t});\n\n\tpi.on(\"tool_call\", (event) => {\n\t\trestoration.trackToolCall(restorationState, event);\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"openai-remote.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/openai-remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-remote.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/openai-remote.ts"],"names":[],"mappings":"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"}
@@ -93,7 +93,9 @@ function convertToolCall(block) {
93
93
  const [callId = block.id, itemId] = block.id.split("|");
94
94
  return {
95
95
  type: "function_call",
96
- ...(itemId ? { id: itemId } : {}),
96
+ // The Responses API rejects item ids not beginning with "fc"; custom tool
97
+ // calls carry the "<call_id>|custom" sentinel, not a server-issued id.
98
+ ...(itemId?.startsWith("fc") ? { id: itemId } : {}),
97
99
  call_id: callId,
98
100
  name: block.name,
99
101
  arguments: JSON.stringify(block.arguments ?? {}),
@@ -1 +1 @@
1
- {"version":3,"file":"openai-remote.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/openai-remote.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tContext,\n\tImageContent,\n\tModel,\n\tSimpleStreamOptions,\n\tTextContent,\n\tToolCall,\n} from \"@earendil-works/pi-ai\";\nimport { streamSimple } from \"@earendil-works/pi-ai/compat\";\nimport type { CompactionResult } from \"../../../compaction/index.ts\";\nimport type { SessionEntry } from \"../../../session-manager.ts\";\nimport type { ServiceTier, SessionBeforeCompactEvent } from \"../../types.ts\";\n\nexport const OPENAI_REMOTE_COMPACTION_SCHEMA = \"senpi.compaction.openai-remote.v1\";\nexport const SENPI_COMPACTION_EVENT = \"senpi:compaction\";\n\ntype OpenAiInputText = { type: \"input_text\"; text: string };\ntype OpenAiInputImage = { type: \"input_image\"; detail: \"auto\"; image_url: string };\ntype OpenAiInputContent = OpenAiInputText | OpenAiInputImage;\ntype OpenAiOutputText = { type: \"output_text\"; text: string; annotations: [] };\ntype OpenAiMessageInputItem = {\n\ttype?: \"message\";\n\tid?: string;\n\trole: \"user\" | \"system\" | \"developer\";\n\tcontent: string | OpenAiInputContent[];\n\tstatus?: \"in_progress\" | \"completed\" | \"incomplete\";\n};\ntype OpenAiAssistantMessageItem = {\n\ttype: \"message\";\n\tid: string;\n\trole: \"assistant\";\n\tstatus: \"completed\";\n\tcontent: OpenAiOutputText[];\n\tphase?: \"commentary\" | \"final_answer\";\n};\ntype OpenAiFunctionCallItem = {\n\ttype: \"function_call\";\n\tid?: string;\n\tcall_id: string;\n\tname: string;\n\targuments: string;\n};\ntype OpenAiFunctionCallOutputItem = {\n\ttype: \"function_call_output\";\n\tcall_id: string;\n\toutput: string;\n};\ntype OpenAiRemoteTransport = \"websocket\" | \"compact-endpoint\";\ntype OpenAiCompactionItem = {\n\ttype: \"compaction\";\n\tencrypted_content: string;\n\tid?: string | null;\n\tcreated_by?: string;\n};\ntype OpenAiContextCompactionItem = {\n\ttype: \"context_compaction\";\n\tencrypted_content: string;\n\tid?: string | null;\n\tcreated_by?: string;\n};\ntype OpenAiContextCompactionTriggerItem = {\n\ttype: \"context_compaction\";\n};\ntype OpenAiProviderNativeItem = Record<string, unknown> & { type: string };\nexport type OpenAiRemoteInputItem =\n\t| OpenAiMessageInputItem\n\t| OpenAiAssistantMessageItem\n\t| OpenAiFunctionCallItem\n\t| OpenAiFunctionCallOutputItem\n\t| OpenAiCompactionItem\n\t| OpenAiContextCompactionItem\n\t| OpenAiProviderNativeItem;\n\ntype OpenAiCompactBody = {\n\tmodel: string;\n\tinput: OpenAiRemoteInputItem[];\n\tinstructions?: string;\n\tprompt_cache_key?: string;\n\tservice_tier?: ServiceTier;\n};\n\nexport type OpenAiRemoteCompactionDetails = {\n\tschema: typeof OPENAI_REMOTE_COMPACTION_SCHEMA;\n\tmode: \"openai-remote\";\n\tprovider: \"openai\";\n\tapi: \"openai-responses\";\n\ttransport: OpenAiRemoteTransport;\n\tmodelId: string;\n\tresponseId: string;\n\tcreatedAt: number;\n\trequestInputItemCount: number;\n\tretainedInputItemCount: number;\n\treplacementInput: OpenAiRemoteInputItem[];\n\tusage?: Record<string, unknown>;\n};\n\nexport type OpenAiRemoteCompactionRequest = {\n\tbody: OpenAiCompactBody;\n\tinputItemCount: number;\n\ttokensBefore: number;\n};\n\nexport type OpenAiRemoteCompactionResult = CompactionResult<OpenAiRemoteCompactionDetails> & {\n\tdetails: OpenAiRemoteCompactionDetails;\n};\n\ntype OpenAiCompactedResponse = {\n\tid: string;\n\tcreated_at: number;\n\tobject: \"response.compaction\";\n\toutput: OpenAiRemoteInputItem[];\n\tusage?: Record<string, unknown>;\n};\n\ntype OpenAiResponsesStream = {\n\tresult(): Promise<AssistantMessage>;\n};\n\ntype OpenAiResponsesStreamRunner = (\n\tmodel: Model<\"openai-responses\">,\n\tcontext: Context,\n\toptions: SimpleStreamOptions,\n) => OpenAiResponsesStream;\n\ntype OpenAiRemoteCompactionDependencies = {\n\tfetch?: typeof fetch;\n\tnow?: () => number;\n\tremoteTimeoutMs?: number;\n\tstreamRunner?: OpenAiResponsesStreamRunner;\n};\n\ntype OpenAiRemoteCompactionContext = {\n\tgetSystemPrompt(): string;\n\tmodel: Model<Api> | undefined;\n\tmodelRegistry: {\n\t\tgetApiKeyAndHeaders(model: Model<Api>): Promise<\n\t\t\t| {\n\t\t\t\t\tok: true;\n\t\t\t\t\tapiKey?: string;\n\t\t\t\t\theaders?: Record<string, string>;\n\t\t\t\t\textraBody?: Record<string, unknown>;\n\t\t\t\t\tupstreamModelId?: string;\n\t\t\t\t\tserviceTier?: ServiceTier;\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tok: false;\n\t\t\t\t\terror: string;\n\t\t\t }\n\t\t>;\n\t};\n\tserviceTier: ServiceTier | undefined;\n\tsessionManager: {\n\t\tgetSessionId(): string;\n\t};\n};\n\ntype OpenAiRemoteCompactionEvent =\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_started\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\trequestId: string;\n\t\t\tmodelId: string;\n\t\t\tinputItemCount: number;\n\t\t\ttransport: OpenAiRemoteTransport;\n\t }\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_completed\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\trequestId: string;\n\t\t\tmodelId: string;\n\t\t\tresponseId: string;\n\t\t\tretainedInputItemCount: number;\n\t\t\ttransport: OpenAiRemoteTransport;\n\t }\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_fallback\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\trequestId: string;\n\t\t\tmodelId?: string;\n\t\t\treason: string;\n\t\t\ttransport?: OpenAiRemoteTransport;\n\t }\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_payload_rewritten\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\tmodelId: string;\n\t\t\tcompactionEntryId: string;\n\t\t\tinputItemCount: number;\n\t };\n\ntype EmitCompactionEvent = (event: OpenAiRemoteCompactionEvent) => void;\n\nconst OPENAI_REMOTE_COMPACTION_TIMEOUT_MS = 15_000;\nconst REMOTE_COMPACTION_TIMEOUT_REASON = \"remote-compaction-timeout\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseJsonRecord(value: string | undefined): Record<string, unknown> | undefined {\n\tif (!value?.startsWith(\"{\")) return undefined;\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(value);\n\t\treturn isRecord(parsed) ? parsed : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction parseTextSignature(\n\tsignature: string | undefined,\n): { id: string; phase?: \"commentary\" | \"final_answer\" } | undefined {\n\tif (!signature) return undefined;\n\tconst parsed = parseJsonRecord(signature);\n\tif (parsed?.v === 1 && typeof parsed.id === \"string\") {\n\t\tif (parsed.phase === \"commentary\" || parsed.phase === \"final_answer\") {\n\t\t\treturn { id: parsed.id, phase: parsed.phase };\n\t\t}\n\t\treturn { id: parsed.id };\n\t}\n\treturn { id: signature };\n}\n\nfunction isOpenAiResponsesModel(model: Model<Api> | undefined): model is Model<\"openai-responses\"> {\n\treturn model?.provider === \"openai\" && model.api === \"openai-responses\";\n}\n\nfunction supportsOpenAiResponsesWebSocket(model: Model<\"openai-responses\">): boolean {\n\tif (model.compat?.supportsWebSocket !== undefined) return model.compat.supportsWebSocket;\n\ttry {\n\t\treturn new URL(model.baseUrl || \"https://api.openai.com/v1\").hostname === \"api.openai.com\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction toolResultText(content: string | TextContent[] | (TextContent | ImageContent)[]): string | undefined {\n\tif (typeof content === \"string\") return content;\n\tconst parts: string[] = [];\n\tfor (const block of content) {\n\t\tif (block.type !== \"text\") return undefined;\n\t\tparts.push(block.text);\n\t}\n\treturn parts.join(\"\\n\");\n}\n\nfunction convertUserContent(content: string | (TextContent | ImageContent)[]): OpenAiInputContent[] {\n\tif (typeof content === \"string\") return [{ type: \"input_text\", text: content }];\n\treturn content.map((block): OpenAiInputContent => {\n\t\tif (block.type === \"text\") return { type: \"input_text\", text: block.text };\n\t\treturn {\n\t\t\ttype: \"input_image\",\n\t\t\tdetail: \"auto\",\n\t\t\timage_url: `data:${block.mimeType};base64,${block.data}`,\n\t\t};\n\t});\n}\n\nfunction providerNativeItem(raw: unknown): OpenAiProviderNativeItem | undefined {\n\tif (!isRecord(raw) || typeof raw.type !== \"string\") return undefined;\n\treturn { ...raw, type: raw.type };\n}\n\nfunction convertThinking(block: { thinkingSignature?: string }): OpenAiProviderNativeItem | undefined {\n\tconst parsed = parseJsonRecord(block.thinkingSignature);\n\tif (parsed?.type !== \"reasoning\") return undefined;\n\treturn { ...parsed, type: \"reasoning\" };\n}\n\nfunction convertTextBlock(block: TextContent, messageIndex: number): OpenAiAssistantMessageItem {\n\tconst signature = parseTextSignature(block.textSignature);\n\tconst item = {\n\t\ttype: \"message\",\n\t\trole: \"assistant\",\n\t\tstatus: \"completed\",\n\t\tid: signature?.id ?? `msg_${messageIndex}`,\n\t\tcontent: [{ type: \"output_text\", text: block.text, annotations: [] }],\n\t\t...(signature?.phase ? { phase: signature.phase } : {}),\n\t} satisfies OpenAiAssistantMessageItem;\n\treturn item;\n}\n\nfunction convertToolCall(block: ToolCall): OpenAiFunctionCallItem {\n\tconst [callId = block.id, itemId] = block.id.split(\"|\");\n\treturn {\n\t\ttype: \"function_call\",\n\t\t...(itemId ? { id: itemId } : {}),\n\t\tcall_id: callId,\n\t\tname: block.name,\n\t\targuments: JSON.stringify(block.arguments ?? {}),\n\t};\n}\n\nfunction isSameOpenAiResponsesAssistant(message: AssistantMessage): boolean {\n\treturn message.provider === \"openai\" && message.api === \"openai-responses\";\n}\n\nfunction convertAssistantMessage(message: AssistantMessage, messageIndex: number): OpenAiRemoteInputItem[] | undefined {\n\tif (!isSameOpenAiResponsesAssistant(message)) return undefined;\n\n\tconst items: OpenAiRemoteInputItem[] = [];\n\tfor (const block of message.content) {\n\t\tswitch (block.type) {\n\t\t\tcase \"text\":\n\t\t\t\titems.push(convertTextBlock(block, messageIndex));\n\t\t\t\tbreak;\n\t\t\tcase \"thinking\": {\n\t\t\t\tconst reasoning = convertThinking(block);\n\t\t\t\tif (!reasoning) return undefined;\n\t\t\t\titems.push(reasoning);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolCall\":\n\t\t\t\titems.push(convertToolCall(block));\n\t\t\t\tbreak;\n\t\t\tcase \"providerNative\": {\n\t\t\t\tconst item = providerNativeItem(block.raw);\n\t\t\t\tif (!item) return undefined;\n\t\t\t\titems.push(item);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn items.length > 0 ? items : undefined;\n}\n\nfunction convertAgentMessage(message: AgentMessage, messageIndex: number): OpenAiRemoteInputItem[] | undefined {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\t\treturn [{ role: \"user\", content: convertUserContent(message.content) }];\n\t\tcase \"assistant\":\n\t\t\treturn convertAssistantMessage(message, messageIndex);\n\t\tcase \"toolResult\": {\n\t\t\tconst [callId = message.toolCallId] = message.toolCallId.split(\"|\");\n\t\t\tconst output = toolResultText(message.content);\n\t\t\tif (output === undefined) return undefined;\n\t\t\treturn [{ type: \"function_call_output\", call_id: callId, output }];\n\t\t}\n\t\tcase \"bashExecution\":\n\t\tcase \"branchSummary\":\n\t\tcase \"compactionSummary\":\n\t\tcase \"custom\":\n\t\t\treturn undefined;\n\t\tdefault: {\n\t\t\tconst exhaustive: never = message;\n\t\t\treturn exhaustive;\n\t\t}\n\t}\n}\n\nfunction detailsFromEntry(entry: SessionEntry): OpenAiRemoteCompactionDetails | undefined {\n\tif (entry.type !== \"compaction\") return undefined;\n\treturn getOpenAiRemoteCompactionDetails(entry.details);\n}\n\nexport function getOpenAiRemoteCompactionDetails(value: unknown): OpenAiRemoteCompactionDetails | undefined {\n\tif (!isRecord(value)) return undefined;\n\tif (value.schema !== OPENAI_REMOTE_COMPACTION_SCHEMA || value.mode !== \"openai-remote\") return undefined;\n\tif (value.provider !== \"openai\" || value.api !== \"openai-responses\") return undefined;\n\tif (typeof value.modelId !== \"string\" || typeof value.responseId !== \"string\") return undefined;\n\tif (typeof value.createdAt !== \"number\") return undefined;\n\tif (typeof value.requestInputItemCount !== \"number\" || typeof value.retainedInputItemCount !== \"number\") {\n\t\treturn undefined;\n\t}\n\tif (!Array.isArray(value.replacementInput)) return undefined;\n\treturn {\n\t\tschema: OPENAI_REMOTE_COMPACTION_SCHEMA,\n\t\tmode: \"openai-remote\",\n\t\tprovider: \"openai\",\n\t\tapi: \"openai-responses\",\n\t\ttransport: value.transport === \"websocket\" ? \"websocket\" : \"compact-endpoint\",\n\t\tmodelId: value.modelId,\n\t\tresponseId: value.responseId,\n\t\tcreatedAt: value.createdAt,\n\t\trequestInputItemCount: value.requestInputItemCount,\n\t\tretainedInputItemCount: value.retainedInputItemCount,\n\t\treplacementInput: value.replacementInput.filter((item): item is OpenAiRemoteInputItem => isRecord(item)),\n\t\t...(isRecord(value.usage) ? { usage: value.usage } : {}),\n\t};\n}\n\nfunction convertBranchEntries(entries: SessionEntry[]): OpenAiRemoteInputItem[] | undefined {\n\tconst items: OpenAiRemoteInputItem[] = [];\n\tlet messageIndex = 0;\n\tfor (const entry of entries) {\n\t\tswitch (entry.type) {\n\t\t\tcase \"message\": {\n\t\t\t\tconst converted = convertAgentMessage(entry.message, messageIndex);\n\t\t\t\tif (!converted) return undefined;\n\t\t\t\titems.push(...converted);\n\t\t\t\tmessageIndex++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"compaction\": {\n\t\t\t\tconst details = detailsFromEntry(entry);\n\t\t\t\tif (!details) return undefined;\n\t\t\t\titems.push(...details.replacementInput);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"branch_summary\":\n\t\t\tcase \"custom_message\":\n\t\t\t\treturn undefined;\n\t\t\tcase \"thinking_level_change\":\n\t\t\tcase \"model_change\":\n\t\t\tcase \"custom\":\n\t\t\tcase \"label\":\n\t\t\tcase \"session_info\":\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn items;\n}\n\nexport function createOpenAiRemoteCompactionRequest(options: {\n\tmodel: Model<Api> | undefined;\n\tsystemPrompt: string;\n\tbranchEntries: SessionEntry[];\n\ttokensBefore: number;\n\tpromptCacheKey?: string;\n\tserviceTier?: ServiceTier;\n}): OpenAiRemoteCompactionRequest | undefined {\n\tif (!isOpenAiResponsesModel(options.model)) return undefined;\n\tconst input = convertBranchEntries(options.branchEntries);\n\tif (!input || input.length === 0) return undefined;\n\treturn {\n\t\tbody: {\n\t\t\tmodel: options.model.id,\n\t\t\tinput,\n\t\t\t...(options.systemPrompt ? { instructions: options.systemPrompt } : {}),\n\t\t\t...(options.promptCacheKey ? { prompt_cache_key: options.promptCacheKey } : {}),\n\t\t\t...(options.serviceTier ? { service_tier: options.serviceTier } : {}),\n\t\t},\n\t\tinputItemCount: input.length,\n\t\ttokensBefore: options.tokensBefore,\n\t};\n}\n\nfunction isOpenAiCompactionItem(item: OpenAiRemoteInputItem): item is OpenAiCompactionItem {\n\treturn item.type === \"compaction\" && typeof item.encrypted_content === \"string\";\n}\n\nfunction isOpenAiContextCompactionItem(item: OpenAiRemoteInputItem): item is OpenAiContextCompactionItem {\n\treturn item.type === \"context_compaction\" && typeof item.encrypted_content === \"string\";\n}\n\nfunction isOpenAiRemoteCompactionOutputItem(\n\titem: OpenAiRemoteInputItem,\n): item is OpenAiCompactionItem | OpenAiContextCompactionItem {\n\treturn isOpenAiCompactionItem(item) || isOpenAiContextCompactionItem(item);\n}\n\nfunction isRetainedRemoteOutputItem(item: OpenAiRemoteInputItem): boolean {\n\tif (isOpenAiRemoteCompactionOutputItem(item)) return true;\n\treturn item.type === \"message\" && (item.role === \"user\" || item.role === \"system\" || item.role === \"developer\");\n}\n\nfunction isRetainedResponsesStreamInputItem(item: OpenAiRemoteInputItem): boolean {\n\tif (item.type === \"message\") return item.role === \"user\";\n\treturn \"role\" in item && item.role === \"user\";\n}\n\nfunction isOpenAiCompactedResponse(value: unknown): value is OpenAiCompactedResponse {\n\tif (!isRecord(value)) return false;\n\tif (value.object !== \"response.compaction\" || typeof value.id !== \"string\" || typeof value.created_at !== \"number\") {\n\t\treturn false;\n\t}\n\treturn Array.isArray(value.output);\n}\n\nexport function buildOpenAiRemoteCompactionResult(options: {\n\tmodel: Model<\"openai-responses\">;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\trequestInputItemCount: number;\n\tresponse: OpenAiCompactedResponse;\n}): OpenAiRemoteCompactionResult {\n\tconst replacementInput = options.response.output.filter(isRetainedRemoteOutputItem);\n\tconst compactionItem = replacementInput.find(isOpenAiRemoteCompactionOutputItem);\n\tif (!compactionItem) {\n\t\tthrow new Error(\"OpenAI remote compaction did not return a compaction item\");\n\t}\n\n\tconst details = {\n\t\tschema: OPENAI_REMOTE_COMPACTION_SCHEMA,\n\t\tmode: \"openai-remote\",\n\t\tprovider: \"openai\",\n\t\tapi: \"openai-responses\",\n\t\ttransport: \"compact-endpoint\",\n\t\tmodelId: options.model.id,\n\t\tresponseId: options.response.id,\n\t\tcreatedAt: options.response.created_at,\n\t\trequestInputItemCount: options.requestInputItemCount,\n\t\tretainedInputItemCount: replacementInput.length,\n\t\treplacementInput,\n\t\t...(options.response.usage ? { usage: options.response.usage } : {}),\n\t} satisfies OpenAiRemoteCompactionDetails;\n\n\treturn {\n\t\tsummary: [\n\t\t\t\"OpenAI remote compaction checkpoint.\",\n\t\t\t`Native /v1/responses/compact replay is active for ${replacementInput.length.toLocaleString()} retained item(s).`,\n\t\t\t`Original OpenAI input items compacted: ${options.requestInputItemCount.toLocaleString()}.`,\n\t\t].join(\"\\n\"),\n\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\ttokensBefore: options.tokensBefore,\n\t\tdetails,\n\t};\n}\n\nfunction compactEndpointUrl(model: Model<\"openai-responses\">): string {\n\tconst baseUrl = model.baseUrl || \"https://api.openai.com/v1\";\n\treturn new URL(\"responses/compact\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`).toString();\n}\n\nfunction createHeaders(auth: { apiKey?: string; headers?: Record<string, string> }): Headers | undefined {\n\tconst headers = new Headers(auth.headers);\n\theaders.set(\"content-type\", \"application/json\");\n\tif (!headers.has(\"authorization\") && auth.apiKey) {\n\t\theaders.set(\"authorization\", `Bearer ${auth.apiKey}`);\n\t}\n\treturn headers.has(\"authorization\") ? headers : undefined;\n}\n\nasync function runWithRemoteTimeout<T>(options: {\n\tsignal: AbortSignal;\n\ttimeoutMs: number;\n\trun: (signal: AbortSignal) => Promise<T>;\n\tonTimeout: () => void;\n}): Promise<T | undefined> {\n\tif (options.signal.aborted) {\n\t\tthrow new Error(\"Request was aborted\");\n\t}\n\n\tconst controller = new AbortController();\n\tlet timedOut = false;\n\tconst abortFromSource = () => controller.abort();\n\toptions.signal.addEventListener(\"abort\", abortFromSource, { once: true });\n\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tconst timeoutPromise = new Promise<\"timeout\">((resolve) => {\n\t\ttimeout = setTimeout(() => {\n\t\t\ttimedOut = true;\n\t\t\tcontroller.abort();\n\t\t\tresolve(\"timeout\");\n\t\t}, options.timeoutMs);\n\t\tconst unref = timeout.unref;\n\t\tif (unref) unref.call(timeout);\n\t});\n\n\tconst operation = options.run(controller.signal);\n\ttry {\n\t\tconst result = await Promise.race([operation, timeoutPromise]);\n\t\tif (result === \"timeout\") {\n\t\t\toptions.onTimeout();\n\t\t\toperation.catch(() => undefined);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn result;\n\t} catch (error) {\n\t\tif (timedOut && !options.signal.aborted) {\n\t\t\toptions.onTimeout();\n\t\t\treturn undefined;\n\t\t}\n\t\tthrow error;\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t\toptions.signal.removeEventListener(\"abort\", abortFromSource);\n\t}\n}\n\nfunction createOpenAiResponsesStreamCompactionInput(request: OpenAiRemoteCompactionRequest): OpenAiRemoteInputItem[] {\n\treturn [...request.body.input, { type: \"context_compaction\" } satisfies OpenAiContextCompactionTriggerItem];\n}\n\nexport function createOpenAiResponsesStreamCompactionPayload(\n\tpayload: unknown,\n\trequest: OpenAiRemoteCompactionRequest,\n): unknown | undefined {\n\tif (!isRecord(payload)) return undefined;\n\treturn {\n\t\t...payload,\n\t\tmodel: request.body.model,\n\t\tinput: [...leadingPromptMessages(payload.input), ...createOpenAiResponsesStreamCompactionInput(request)],\n\t\t...(request.body.prompt_cache_key ? { prompt_cache_key: request.body.prompt_cache_key } : {}),\n\t\t...(request.body.service_tier ? { service_tier: request.body.service_tier } : {}),\n\t};\n}\n\nfunction findResponsesStreamCompactionOutput(message: AssistantMessage): OpenAiContextCompactionItem | undefined {\n\tfor (const block of message.content) {\n\t\tif (block.type !== \"providerNative\") continue;\n\t\tconst item = providerNativeItem(block.raw);\n\t\tif (item && isOpenAiContextCompactionItem(item)) return item;\n\t}\n\treturn undefined;\n}\n\nfunction usageRecordFromAssistant(message: AssistantMessage): Record<string, unknown> {\n\treturn {\n\t\tinput: message.usage.input,\n\t\toutput: message.usage.output,\n\t\tcacheRead: message.usage.cacheRead,\n\t\tcacheWrite: message.usage.cacheWrite,\n\t\ttotalTokens: message.usage.totalTokens,\n\t};\n}\n\nexport function buildOpenAiResponsesStreamCompactionResult(options: {\n\tmodel: Model<\"openai-responses\">;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\trequestInput: OpenAiRemoteInputItem[];\n\tresponse: AssistantMessage;\n\tnow: () => number;\n}): OpenAiRemoteCompactionResult {\n\tconst compactionItem = findResponsesStreamCompactionOutput(options.response);\n\tif (!compactionItem) {\n\t\tthrow new Error(\"OpenAI Responses stream compaction did not return a context_compaction item\");\n\t}\n\n\tconst retainedInput = options.requestInput.filter(isRetainedResponsesStreamInputItem);\n\tconst replacementInput = [...retainedInput, compactionItem];\n\tconst details = {\n\t\tschema: OPENAI_REMOTE_COMPACTION_SCHEMA,\n\t\tmode: \"openai-remote\",\n\t\tprovider: \"openai\",\n\t\tapi: \"openai-responses\",\n\t\ttransport: \"websocket\",\n\t\tmodelId: options.model.id,\n\t\tresponseId: options.response.responseId ?? `response-${options.now()}`,\n\t\tcreatedAt: Math.floor(options.response.timestamp / 1000),\n\t\trequestInputItemCount: options.requestInput.length,\n\t\tretainedInputItemCount: replacementInput.length,\n\t\treplacementInput,\n\t\tusage: usageRecordFromAssistant(options.response),\n\t} satisfies OpenAiRemoteCompactionDetails;\n\n\treturn {\n\t\tsummary: [\n\t\t\t\"OpenAI remote compaction checkpoint.\",\n\t\t\t`Native Responses WebSocket replay is active for ${replacementInput.length.toLocaleString()} retained item(s).`,\n\t\t\t`Original OpenAI input items compacted: ${options.requestInput.length.toLocaleString()}.`,\n\t\t].join(\"\\n\"),\n\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\ttokensBefore: options.tokensBefore,\n\t\tdetails,\n\t};\n}\n\nasync function runOpenAiResponsesStreamCompaction(options: {\n\tmodel: Model<\"openai-responses\">;\n\tauth: { apiKey?: string; headers?: Record<string, string>; extraBody?: Record<string, unknown> };\n\tfirstKeptEntryId: string;\n\tnow: () => number;\n\trequest: OpenAiRemoteCompactionRequest;\n\tsignal: AbortSignal;\n\tstreamRunner: OpenAiResponsesStreamRunner;\n\tsystemPrompt: string;\n}): Promise<OpenAiRemoteCompactionResult | undefined> {\n\tconst stream = options.streamRunner(\n\t\toptions.model,\n\t\t{ systemPrompt: options.systemPrompt, messages: [] },\n\t\t{\n\t\t\tapiKey: options.auth.apiKey,\n\t\t\tcacheRetention: \"short\",\n\t\t\textraBody: options.auth.extraBody,\n\t\t\theaders: options.auth.headers,\n\t\t\tonPayload: (payload) => {\n\t\t\t\tconst rewritten = createOpenAiResponsesStreamCompactionPayload(payload, options.request);\n\t\t\t\tif (!isRecord(rewritten) || !Array.isArray(rewritten.input)) {\n\t\t\t\t\tthrow new Error(\"Unable to build OpenAI Responses stream compaction payload\");\n\t\t\t\t}\n\t\t\t\treturn rewritten;\n\t\t\t},\n\t\t\tsessionId: options.request.body.prompt_cache_key,\n\t\t\tsignal: options.signal,\n\t\t\ttransport: \"websocket\",\n\t\t},\n\t);\n\tconst response = await stream.result();\n\tif (response.stopReason === \"error\" || response.stopReason === \"aborted\") {\n\t\treturn undefined;\n\t}\n\treturn buildOpenAiResponsesStreamCompactionResult({\n\t\tmodel: options.model,\n\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\ttokensBefore: options.request.tokensBefore,\n\t\trequestInput: options.request.body.input,\n\t\tresponse,\n\t\tnow: options.now,\n\t});\n}\n\nasync function runOpenAiCompactEndpointCompaction(options: {\n\tfetchImpl: typeof fetch;\n\theaders: Headers;\n\tmodel: Model<\"openai-responses\">;\n\trequest: OpenAiRemoteCompactionRequest;\n\trequestId: string;\n\tsignal: AbortSignal;\n\tfirstKeptEntryId: string;\n\temit?: EmitCompactionEvent;\n}): Promise<OpenAiRemoteCompactionResult | undefined> {\n\toptions.emit?.({\n\t\tversion: 1,\n\t\taction: \"remote_started\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\trequestId: options.requestId,\n\t\tmodelId: options.model.id,\n\t\tinputItemCount: options.request.inputItemCount,\n\t\ttransport: \"compact-endpoint\",\n\t});\n\n\tlet response: Response;\n\ttry {\n\t\tresponse = await options.fetchImpl(compactEndpointUrl(options.model), {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: options.headers,\n\t\t\tbody: JSON.stringify(options.request.body),\n\t\t\tsignal: options.signal,\n\t\t});\n\t} catch (error) {\n\t\tif (options.signal.aborted) throw error;\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tif (!response.ok) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: `HTTP ${response.status}`,\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tlet payload: unknown;\n\ttry {\n\t\tpayload = await response.json();\n\t} catch (error) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tif (!isOpenAiCompactedResponse(payload)) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: \"invalid-compact-response\",\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tlet result: OpenAiRemoteCompactionResult;\n\ttry {\n\t\tresult = buildOpenAiRemoteCompactionResult({\n\t\t\tmodel: options.model,\n\t\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\t\ttokensBefore: options.request.tokensBefore,\n\t\t\trequestInputItemCount: options.request.inputItemCount,\n\t\t\tresponse: payload,\n\t\t});\n\t} catch (error) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\toptions.emit?.({\n\t\tversion: 1,\n\t\taction: \"remote_completed\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\trequestId: options.requestId,\n\t\tmodelId: options.model.id,\n\t\tresponseId: payload.id,\n\t\tretainedInputItemCount: result.details.retainedInputItemCount,\n\t\ttransport: \"compact-endpoint\",\n\t});\n\treturn result;\n}\n\nexport async function runOpenAiRemoteCompaction(\n\tctx: OpenAiRemoteCompactionContext,\n\tevent: SessionBeforeCompactEvent,\n\temit?: EmitCompactionEvent,\n\tdependencies: OpenAiRemoteCompactionDependencies = {},\n): Promise<OpenAiRemoteCompactionResult | undefined> {\n\tconst model = ctx.model;\n\tif (!isOpenAiResponsesModel(model) || event.reason === \"branch\") {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model?.id,\n\t\t\treason: event.reason === \"branch\" ? \"branch-compaction\" : \"not-openai-responses\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tconst auth = await ctx.modelRegistry.getApiKeyAndHeaders(model);\n\tif (!auth.ok) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model.id,\n\t\t\treason: auth.error,\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tconst requestModel = auth.upstreamModelId ? { ...model, id: auth.upstreamModelId } : model;\n\tconst serviceTier = ctx.serviceTier ?? auth.serviceTier;\n\tconst request = createOpenAiRemoteCompactionRequest({\n\t\tmodel: requestModel,\n\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\tbranchEntries: event.branchEntries,\n\t\ttokensBefore: event.preparation.tokensBefore,\n\t\tpromptCacheKey: ctx.sessionManager.getSessionId(),\n\t\tserviceTier,\n\t});\n\tif (!request) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model.id,\n\t\t\treason: \"session-not-openai-native\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst remoteTimeoutMs = dependencies.remoteTimeoutMs ?? OPENAI_REMOTE_COMPACTION_TIMEOUT_MS;\n\n\tif (supportsOpenAiResponsesWebSocket(requestModel)) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_started\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: requestModel.id,\n\t\t\tinputItemCount: request.inputItemCount,\n\t\t\ttransport: \"websocket\",\n\t\t});\n\t\ttry {\n\t\t\tconst result = await runWithRemoteTimeout({\n\t\t\t\tsignal: event.signal,\n\t\t\t\ttimeoutMs: remoteTimeoutMs,\n\t\t\t\tonTimeout: () =>\n\t\t\t\t\temit?.({\n\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\taction: \"remote_fallback\",\n\t\t\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\t\t\trequestId: event.requestId,\n\t\t\t\t\t\tmodelId: requestModel.id,\n\t\t\t\t\t\treason: REMOTE_COMPACTION_TIMEOUT_REASON,\n\t\t\t\t\t\ttransport: \"websocket\",\n\t\t\t\t\t}),\n\t\t\t\trun: (signal) =>\n\t\t\t\t\trunOpenAiResponsesStreamCompaction({\n\t\t\t\t\t\tmodel: requestModel,\n\t\t\t\t\t\tauth,\n\t\t\t\t\t\tfirstKeptEntryId: event.preparation.firstKeptEntryId,\n\t\t\t\t\t\tnow: dependencies.now ?? Date.now,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tstreamRunner:\n\t\t\t\t\t\t\tdependencies.streamRunner ??\n\t\t\t\t\t\t\t((streamModel, context, options) => streamSimple(streamModel, context, options)),\n\t\t\t\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\t\t\t}),\n\t\t\t});\n\t\t\tif (result) {\n\t\t\t\temit?.({\n\t\t\t\t\tversion: 1,\n\t\t\t\t\taction: \"remote_completed\",\n\t\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\t\trequestId: event.requestId,\n\t\t\t\t\tmodelId: requestModel.id,\n\t\t\t\t\tresponseId: result.details.responseId,\n\t\t\t\t\tretainedInputItemCount: result.details.retainedInputItemCount,\n\t\t\t\t\ttransport: \"websocket\",\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\temit?.({\n\t\t\t\tversion: 1,\n\t\t\t\taction: \"remote_fallback\",\n\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tmodelId: requestModel.id,\n\t\t\t\treason: \"websocket-compaction-no-result\",\n\t\t\t\ttransport: \"websocket\",\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (event.signal.aborted) throw error;\n\t\t\temit?.({\n\t\t\t\tversion: 1,\n\t\t\t\taction: \"remote_fallback\",\n\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tmodelId: requestModel.id,\n\t\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\t\ttransport: \"websocket\",\n\t\t\t});\n\t\t}\n\t}\n\n\tconst headers = createHeaders(auth);\n\tif (!headers) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model.id,\n\t\t\treason: \"missing-openai-auth\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\treturn runWithRemoteTimeout({\n\t\tsignal: event.signal,\n\t\ttimeoutMs: remoteTimeoutMs,\n\t\tonTimeout: () =>\n\t\t\temit?.({\n\t\t\t\tversion: 1,\n\t\t\t\taction: \"remote_fallback\",\n\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tmodelId: requestModel.id,\n\t\t\t\treason: REMOTE_COMPACTION_TIMEOUT_REASON,\n\t\t\t\ttransport: \"compact-endpoint\",\n\t\t\t}),\n\t\trun: (signal) =>\n\t\t\trunOpenAiCompactEndpointCompaction({\n\t\t\t\tfetchImpl: dependencies.fetch ?? fetch,\n\t\t\t\theaders,\n\t\t\t\tmodel: requestModel,\n\t\t\t\trequest,\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tsignal,\n\t\t\t\tfirstKeptEntryId: event.preparation.firstKeptEntryId,\n\t\t\t\temit,\n\t\t\t}),\n\t});\n}\n\nfunction latestRemoteCompaction(\n\tentries: SessionEntry[],\n): { entryId: string; index: number; details: OpenAiRemoteCompactionDetails } | undefined {\n\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\tconst entry = entries[index];\n\t\tif (entry?.type !== \"compaction\") continue;\n\t\tconst details = getOpenAiRemoteCompactionDetails(entry.details);\n\t\tif (details) return { entryId: entry.id, index, details };\n\t\treturn undefined;\n\t}\n\treturn undefined;\n}\n\nfunction leadingPromptMessages(input: unknown): OpenAiRemoteInputItem[] {\n\tif (!Array.isArray(input)) return [];\n\tconst result: OpenAiRemoteInputItem[] = [];\n\tfor (const item of input) {\n\t\tif (!isRecord(item)) break;\n\t\tconst role = item.role;\n\t\tif (role !== \"system\" && role !== \"developer\") break;\n\t\tresult.push(providerNativeItem(item) ?? { role, content: typeof item.content === \"string\" ? item.content : [] });\n\t}\n\treturn result;\n}\n\nexport function rewriteOpenAiPayloadWithRemoteCompaction(\n\tpayload: unknown,\n\toptions: { model: Model<Api> | undefined; branchEntries: SessionEntry[] },\n\temit?: EmitCompactionEvent,\n): unknown | undefined {\n\tif (!isOpenAiResponsesModel(options.model) || !isRecord(payload)) return undefined;\n\tconst remote = latestRemoteCompaction(options.branchEntries);\n\tif (!remote) return undefined;\n\n\tconst postCompactionItems = convertBranchEntries(options.branchEntries.slice(remote.index + 1));\n\tif (!postCompactionItems) return undefined;\n\n\tconst input = [...leadingPromptMessages(payload.input), ...remote.details.replacementInput, ...postCompactionItems];\n\temit?.({\n\t\tversion: 1,\n\t\taction: \"remote_payload_rewritten\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\tmodelId: options.model.id,\n\t\tcompactionEntryId: remote.entryId,\n\t\tinputItemCount: input.length,\n\t});\n\treturn { ...payload, input };\n}\n"]}
1
+ {"version":3,"file":"openai-remote.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/openai-remote.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tContext,\n\tImageContent,\n\tModel,\n\tSimpleStreamOptions,\n\tTextContent,\n\tToolCall,\n} from \"@earendil-works/pi-ai\";\nimport { streamSimple } from \"@earendil-works/pi-ai/compat\";\nimport type { CompactionResult } from \"../../../compaction/index.ts\";\nimport type { SessionEntry } from \"../../../session-manager.ts\";\nimport type { ServiceTier, SessionBeforeCompactEvent } from \"../../types.ts\";\n\nexport const OPENAI_REMOTE_COMPACTION_SCHEMA = \"senpi.compaction.openai-remote.v1\";\nexport const SENPI_COMPACTION_EVENT = \"senpi:compaction\";\n\ntype OpenAiInputText = { type: \"input_text\"; text: string };\ntype OpenAiInputImage = { type: \"input_image\"; detail: \"auto\"; image_url: string };\ntype OpenAiInputContent = OpenAiInputText | OpenAiInputImage;\ntype OpenAiOutputText = { type: \"output_text\"; text: string; annotations: [] };\ntype OpenAiMessageInputItem = {\n\ttype?: \"message\";\n\tid?: string;\n\trole: \"user\" | \"system\" | \"developer\";\n\tcontent: string | OpenAiInputContent[];\n\tstatus?: \"in_progress\" | \"completed\" | \"incomplete\";\n};\ntype OpenAiAssistantMessageItem = {\n\ttype: \"message\";\n\tid: string;\n\trole: \"assistant\";\n\tstatus: \"completed\";\n\tcontent: OpenAiOutputText[];\n\tphase?: \"commentary\" | \"final_answer\";\n};\ntype OpenAiFunctionCallItem = {\n\ttype: \"function_call\";\n\tid?: string;\n\tcall_id: string;\n\tname: string;\n\targuments: string;\n};\ntype OpenAiFunctionCallOutputItem = {\n\ttype: \"function_call_output\";\n\tcall_id: string;\n\toutput: string;\n};\ntype OpenAiRemoteTransport = \"websocket\" | \"compact-endpoint\";\ntype OpenAiCompactionItem = {\n\ttype: \"compaction\";\n\tencrypted_content: string;\n\tid?: string | null;\n\tcreated_by?: string;\n};\ntype OpenAiContextCompactionItem = {\n\ttype: \"context_compaction\";\n\tencrypted_content: string;\n\tid?: string | null;\n\tcreated_by?: string;\n};\ntype OpenAiContextCompactionTriggerItem = {\n\ttype: \"context_compaction\";\n};\ntype OpenAiProviderNativeItem = Record<string, unknown> & { type: string };\nexport type OpenAiRemoteInputItem =\n\t| OpenAiMessageInputItem\n\t| OpenAiAssistantMessageItem\n\t| OpenAiFunctionCallItem\n\t| OpenAiFunctionCallOutputItem\n\t| OpenAiCompactionItem\n\t| OpenAiContextCompactionItem\n\t| OpenAiProviderNativeItem;\n\ntype OpenAiCompactBody = {\n\tmodel: string;\n\tinput: OpenAiRemoteInputItem[];\n\tinstructions?: string;\n\tprompt_cache_key?: string;\n\tservice_tier?: ServiceTier;\n};\n\nexport type OpenAiRemoteCompactionDetails = {\n\tschema: typeof OPENAI_REMOTE_COMPACTION_SCHEMA;\n\tmode: \"openai-remote\";\n\tprovider: \"openai\";\n\tapi: \"openai-responses\";\n\ttransport: OpenAiRemoteTransport;\n\tmodelId: string;\n\tresponseId: string;\n\tcreatedAt: number;\n\trequestInputItemCount: number;\n\tretainedInputItemCount: number;\n\treplacementInput: OpenAiRemoteInputItem[];\n\tusage?: Record<string, unknown>;\n};\n\nexport type OpenAiRemoteCompactionRequest = {\n\tbody: OpenAiCompactBody;\n\tinputItemCount: number;\n\ttokensBefore: number;\n};\n\nexport type OpenAiRemoteCompactionResult = CompactionResult<OpenAiRemoteCompactionDetails> & {\n\tdetails: OpenAiRemoteCompactionDetails;\n};\n\ntype OpenAiCompactedResponse = {\n\tid: string;\n\tcreated_at: number;\n\tobject: \"response.compaction\";\n\toutput: OpenAiRemoteInputItem[];\n\tusage?: Record<string, unknown>;\n};\n\ntype OpenAiResponsesStream = {\n\tresult(): Promise<AssistantMessage>;\n};\n\ntype OpenAiResponsesStreamRunner = (\n\tmodel: Model<\"openai-responses\">,\n\tcontext: Context,\n\toptions: SimpleStreamOptions,\n) => OpenAiResponsesStream;\n\ntype OpenAiRemoteCompactionDependencies = {\n\tfetch?: typeof fetch;\n\tnow?: () => number;\n\tremoteTimeoutMs?: number;\n\tstreamRunner?: OpenAiResponsesStreamRunner;\n};\n\ntype OpenAiRemoteCompactionContext = {\n\tgetSystemPrompt(): string;\n\tmodel: Model<Api> | undefined;\n\tmodelRegistry: {\n\t\tgetApiKeyAndHeaders(model: Model<Api>): Promise<\n\t\t\t| {\n\t\t\t\t\tok: true;\n\t\t\t\t\tapiKey?: string;\n\t\t\t\t\theaders?: Record<string, string>;\n\t\t\t\t\textraBody?: Record<string, unknown>;\n\t\t\t\t\tupstreamModelId?: string;\n\t\t\t\t\tserviceTier?: ServiceTier;\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tok: false;\n\t\t\t\t\terror: string;\n\t\t\t }\n\t\t>;\n\t};\n\tserviceTier: ServiceTier | undefined;\n\tsessionManager: {\n\t\tgetSessionId(): string;\n\t};\n};\n\ntype OpenAiRemoteCompactionEvent =\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_started\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\trequestId: string;\n\t\t\tmodelId: string;\n\t\t\tinputItemCount: number;\n\t\t\ttransport: OpenAiRemoteTransport;\n\t }\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_completed\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\trequestId: string;\n\t\t\tmodelId: string;\n\t\t\tresponseId: string;\n\t\t\tretainedInputItemCount: number;\n\t\t\ttransport: OpenAiRemoteTransport;\n\t }\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_fallback\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\trequestId: string;\n\t\t\tmodelId?: string;\n\t\t\treason: string;\n\t\t\ttransport?: OpenAiRemoteTransport;\n\t }\n\t| {\n\t\t\tversion: 1;\n\t\t\taction: \"remote_payload_rewritten\";\n\t\t\troute: \"builtin.compaction.openai_remote\";\n\t\t\tmodelId: string;\n\t\t\tcompactionEntryId: string;\n\t\t\tinputItemCount: number;\n\t };\n\ntype EmitCompactionEvent = (event: OpenAiRemoteCompactionEvent) => void;\n\nconst OPENAI_REMOTE_COMPACTION_TIMEOUT_MS = 15_000;\nconst REMOTE_COMPACTION_TIMEOUT_REASON = \"remote-compaction-timeout\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseJsonRecord(value: string | undefined): Record<string, unknown> | undefined {\n\tif (!value?.startsWith(\"{\")) return undefined;\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(value);\n\t\treturn isRecord(parsed) ? parsed : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction parseTextSignature(\n\tsignature: string | undefined,\n): { id: string; phase?: \"commentary\" | \"final_answer\" } | undefined {\n\tif (!signature) return undefined;\n\tconst parsed = parseJsonRecord(signature);\n\tif (parsed?.v === 1 && typeof parsed.id === \"string\") {\n\t\tif (parsed.phase === \"commentary\" || parsed.phase === \"final_answer\") {\n\t\t\treturn { id: parsed.id, phase: parsed.phase };\n\t\t}\n\t\treturn { id: parsed.id };\n\t}\n\treturn { id: signature };\n}\n\nfunction isOpenAiResponsesModel(model: Model<Api> | undefined): model is Model<\"openai-responses\"> {\n\treturn model?.provider === \"openai\" && model.api === \"openai-responses\";\n}\n\nfunction supportsOpenAiResponsesWebSocket(model: Model<\"openai-responses\">): boolean {\n\tif (model.compat?.supportsWebSocket !== undefined) return model.compat.supportsWebSocket;\n\ttry {\n\t\treturn new URL(model.baseUrl || \"https://api.openai.com/v1\").hostname === \"api.openai.com\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction toolResultText(content: string | TextContent[] | (TextContent | ImageContent)[]): string | undefined {\n\tif (typeof content === \"string\") return content;\n\tconst parts: string[] = [];\n\tfor (const block of content) {\n\t\tif (block.type !== \"text\") return undefined;\n\t\tparts.push(block.text);\n\t}\n\treturn parts.join(\"\\n\");\n}\n\nfunction convertUserContent(content: string | (TextContent | ImageContent)[]): OpenAiInputContent[] {\n\tif (typeof content === \"string\") return [{ type: \"input_text\", text: content }];\n\treturn content.map((block): OpenAiInputContent => {\n\t\tif (block.type === \"text\") return { type: \"input_text\", text: block.text };\n\t\treturn {\n\t\t\ttype: \"input_image\",\n\t\t\tdetail: \"auto\",\n\t\t\timage_url: `data:${block.mimeType};base64,${block.data}`,\n\t\t};\n\t});\n}\n\nfunction providerNativeItem(raw: unknown): OpenAiProviderNativeItem | undefined {\n\tif (!isRecord(raw) || typeof raw.type !== \"string\") return undefined;\n\treturn { ...raw, type: raw.type };\n}\n\nfunction convertThinking(block: { thinkingSignature?: string }): OpenAiProviderNativeItem | undefined {\n\tconst parsed = parseJsonRecord(block.thinkingSignature);\n\tif (parsed?.type !== \"reasoning\") return undefined;\n\treturn { ...parsed, type: \"reasoning\" };\n}\n\nfunction convertTextBlock(block: TextContent, messageIndex: number): OpenAiAssistantMessageItem {\n\tconst signature = parseTextSignature(block.textSignature);\n\tconst item = {\n\t\ttype: \"message\",\n\t\trole: \"assistant\",\n\t\tstatus: \"completed\",\n\t\tid: signature?.id ?? `msg_${messageIndex}`,\n\t\tcontent: [{ type: \"output_text\", text: block.text, annotations: [] }],\n\t\t...(signature?.phase ? { phase: signature.phase } : {}),\n\t} satisfies OpenAiAssistantMessageItem;\n\treturn item;\n}\n\nfunction convertToolCall(block: ToolCall): OpenAiFunctionCallItem {\n\tconst [callId = block.id, itemId] = block.id.split(\"|\");\n\treturn {\n\t\ttype: \"function_call\",\n\t\t// The Responses API rejects item ids not beginning with \"fc\"; custom tool\n\t\t// calls carry the \"<call_id>|custom\" sentinel, not a server-issued id.\n\t\t...(itemId?.startsWith(\"fc\") ? { id: itemId } : {}),\n\t\tcall_id: callId,\n\t\tname: block.name,\n\t\targuments: JSON.stringify(block.arguments ?? {}),\n\t};\n}\n\nfunction isSameOpenAiResponsesAssistant(message: AssistantMessage): boolean {\n\treturn message.provider === \"openai\" && message.api === \"openai-responses\";\n}\n\nfunction convertAssistantMessage(message: AssistantMessage, messageIndex: number): OpenAiRemoteInputItem[] | undefined {\n\tif (!isSameOpenAiResponsesAssistant(message)) return undefined;\n\n\tconst items: OpenAiRemoteInputItem[] = [];\n\tfor (const block of message.content) {\n\t\tswitch (block.type) {\n\t\t\tcase \"text\":\n\t\t\t\titems.push(convertTextBlock(block, messageIndex));\n\t\t\t\tbreak;\n\t\t\tcase \"thinking\": {\n\t\t\t\tconst reasoning = convertThinking(block);\n\t\t\t\tif (!reasoning) return undefined;\n\t\t\t\titems.push(reasoning);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolCall\":\n\t\t\t\titems.push(convertToolCall(block));\n\t\t\t\tbreak;\n\t\t\tcase \"providerNative\": {\n\t\t\t\tconst item = providerNativeItem(block.raw);\n\t\t\t\tif (!item) return undefined;\n\t\t\t\titems.push(item);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn items.length > 0 ? items : undefined;\n}\n\nfunction convertAgentMessage(message: AgentMessage, messageIndex: number): OpenAiRemoteInputItem[] | undefined {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\t\treturn [{ role: \"user\", content: convertUserContent(message.content) }];\n\t\tcase \"assistant\":\n\t\t\treturn convertAssistantMessage(message, messageIndex);\n\t\tcase \"toolResult\": {\n\t\t\tconst [callId = message.toolCallId] = message.toolCallId.split(\"|\");\n\t\t\tconst output = toolResultText(message.content);\n\t\t\tif (output === undefined) return undefined;\n\t\t\treturn [{ type: \"function_call_output\", call_id: callId, output }];\n\t\t}\n\t\tcase \"bashExecution\":\n\t\tcase \"branchSummary\":\n\t\tcase \"compactionSummary\":\n\t\tcase \"custom\":\n\t\t\treturn undefined;\n\t\tdefault: {\n\t\t\tconst exhaustive: never = message;\n\t\t\treturn exhaustive;\n\t\t}\n\t}\n}\n\nfunction detailsFromEntry(entry: SessionEntry): OpenAiRemoteCompactionDetails | undefined {\n\tif (entry.type !== \"compaction\") return undefined;\n\treturn getOpenAiRemoteCompactionDetails(entry.details);\n}\n\nexport function getOpenAiRemoteCompactionDetails(value: unknown): OpenAiRemoteCompactionDetails | undefined {\n\tif (!isRecord(value)) return undefined;\n\tif (value.schema !== OPENAI_REMOTE_COMPACTION_SCHEMA || value.mode !== \"openai-remote\") return undefined;\n\tif (value.provider !== \"openai\" || value.api !== \"openai-responses\") return undefined;\n\tif (typeof value.modelId !== \"string\" || typeof value.responseId !== \"string\") return undefined;\n\tif (typeof value.createdAt !== \"number\") return undefined;\n\tif (typeof value.requestInputItemCount !== \"number\" || typeof value.retainedInputItemCount !== \"number\") {\n\t\treturn undefined;\n\t}\n\tif (!Array.isArray(value.replacementInput)) return undefined;\n\treturn {\n\t\tschema: OPENAI_REMOTE_COMPACTION_SCHEMA,\n\t\tmode: \"openai-remote\",\n\t\tprovider: \"openai\",\n\t\tapi: \"openai-responses\",\n\t\ttransport: value.transport === \"websocket\" ? \"websocket\" : \"compact-endpoint\",\n\t\tmodelId: value.modelId,\n\t\tresponseId: value.responseId,\n\t\tcreatedAt: value.createdAt,\n\t\trequestInputItemCount: value.requestInputItemCount,\n\t\tretainedInputItemCount: value.retainedInputItemCount,\n\t\treplacementInput: value.replacementInput.filter((item): item is OpenAiRemoteInputItem => isRecord(item)),\n\t\t...(isRecord(value.usage) ? { usage: value.usage } : {}),\n\t};\n}\n\nfunction convertBranchEntries(entries: SessionEntry[]): OpenAiRemoteInputItem[] | undefined {\n\tconst items: OpenAiRemoteInputItem[] = [];\n\tlet messageIndex = 0;\n\tfor (const entry of entries) {\n\t\tswitch (entry.type) {\n\t\t\tcase \"message\": {\n\t\t\t\tconst converted = convertAgentMessage(entry.message, messageIndex);\n\t\t\t\tif (!converted) return undefined;\n\t\t\t\titems.push(...converted);\n\t\t\t\tmessageIndex++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"compaction\": {\n\t\t\t\tconst details = detailsFromEntry(entry);\n\t\t\t\tif (!details) return undefined;\n\t\t\t\titems.push(...details.replacementInput);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"branch_summary\":\n\t\t\tcase \"custom_message\":\n\t\t\t\treturn undefined;\n\t\t\tcase \"thinking_level_change\":\n\t\t\tcase \"model_change\":\n\t\t\tcase \"custom\":\n\t\t\tcase \"label\":\n\t\t\tcase \"session_info\":\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn items;\n}\n\nexport function createOpenAiRemoteCompactionRequest(options: {\n\tmodel: Model<Api> | undefined;\n\tsystemPrompt: string;\n\tbranchEntries: SessionEntry[];\n\ttokensBefore: number;\n\tpromptCacheKey?: string;\n\tserviceTier?: ServiceTier;\n}): OpenAiRemoteCompactionRequest | undefined {\n\tif (!isOpenAiResponsesModel(options.model)) return undefined;\n\tconst input = convertBranchEntries(options.branchEntries);\n\tif (!input || input.length === 0) return undefined;\n\treturn {\n\t\tbody: {\n\t\t\tmodel: options.model.id,\n\t\t\tinput,\n\t\t\t...(options.systemPrompt ? { instructions: options.systemPrompt } : {}),\n\t\t\t...(options.promptCacheKey ? { prompt_cache_key: options.promptCacheKey } : {}),\n\t\t\t...(options.serviceTier ? { service_tier: options.serviceTier } : {}),\n\t\t},\n\t\tinputItemCount: input.length,\n\t\ttokensBefore: options.tokensBefore,\n\t};\n}\n\nfunction isOpenAiCompactionItem(item: OpenAiRemoteInputItem): item is OpenAiCompactionItem {\n\treturn item.type === \"compaction\" && typeof item.encrypted_content === \"string\";\n}\n\nfunction isOpenAiContextCompactionItem(item: OpenAiRemoteInputItem): item is OpenAiContextCompactionItem {\n\treturn item.type === \"context_compaction\" && typeof item.encrypted_content === \"string\";\n}\n\nfunction isOpenAiRemoteCompactionOutputItem(\n\titem: OpenAiRemoteInputItem,\n): item is OpenAiCompactionItem | OpenAiContextCompactionItem {\n\treturn isOpenAiCompactionItem(item) || isOpenAiContextCompactionItem(item);\n}\n\nfunction isRetainedRemoteOutputItem(item: OpenAiRemoteInputItem): boolean {\n\tif (isOpenAiRemoteCompactionOutputItem(item)) return true;\n\treturn item.type === \"message\" && (item.role === \"user\" || item.role === \"system\" || item.role === \"developer\");\n}\n\nfunction isRetainedResponsesStreamInputItem(item: OpenAiRemoteInputItem): boolean {\n\tif (item.type === \"message\") return item.role === \"user\";\n\treturn \"role\" in item && item.role === \"user\";\n}\n\nfunction isOpenAiCompactedResponse(value: unknown): value is OpenAiCompactedResponse {\n\tif (!isRecord(value)) return false;\n\tif (value.object !== \"response.compaction\" || typeof value.id !== \"string\" || typeof value.created_at !== \"number\") {\n\t\treturn false;\n\t}\n\treturn Array.isArray(value.output);\n}\n\nexport function buildOpenAiRemoteCompactionResult(options: {\n\tmodel: Model<\"openai-responses\">;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\trequestInputItemCount: number;\n\tresponse: OpenAiCompactedResponse;\n}): OpenAiRemoteCompactionResult {\n\tconst replacementInput = options.response.output.filter(isRetainedRemoteOutputItem);\n\tconst compactionItem = replacementInput.find(isOpenAiRemoteCompactionOutputItem);\n\tif (!compactionItem) {\n\t\tthrow new Error(\"OpenAI remote compaction did not return a compaction item\");\n\t}\n\n\tconst details = {\n\t\tschema: OPENAI_REMOTE_COMPACTION_SCHEMA,\n\t\tmode: \"openai-remote\",\n\t\tprovider: \"openai\",\n\t\tapi: \"openai-responses\",\n\t\ttransport: \"compact-endpoint\",\n\t\tmodelId: options.model.id,\n\t\tresponseId: options.response.id,\n\t\tcreatedAt: options.response.created_at,\n\t\trequestInputItemCount: options.requestInputItemCount,\n\t\tretainedInputItemCount: replacementInput.length,\n\t\treplacementInput,\n\t\t...(options.response.usage ? { usage: options.response.usage } : {}),\n\t} satisfies OpenAiRemoteCompactionDetails;\n\n\treturn {\n\t\tsummary: [\n\t\t\t\"OpenAI remote compaction checkpoint.\",\n\t\t\t`Native /v1/responses/compact replay is active for ${replacementInput.length.toLocaleString()} retained item(s).`,\n\t\t\t`Original OpenAI input items compacted: ${options.requestInputItemCount.toLocaleString()}.`,\n\t\t].join(\"\\n\"),\n\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\ttokensBefore: options.tokensBefore,\n\t\tdetails,\n\t};\n}\n\nfunction compactEndpointUrl(model: Model<\"openai-responses\">): string {\n\tconst baseUrl = model.baseUrl || \"https://api.openai.com/v1\";\n\treturn new URL(\"responses/compact\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`).toString();\n}\n\nfunction createHeaders(auth: { apiKey?: string; headers?: Record<string, string> }): Headers | undefined {\n\tconst headers = new Headers(auth.headers);\n\theaders.set(\"content-type\", \"application/json\");\n\tif (!headers.has(\"authorization\") && auth.apiKey) {\n\t\theaders.set(\"authorization\", `Bearer ${auth.apiKey}`);\n\t}\n\treturn headers.has(\"authorization\") ? headers : undefined;\n}\n\nasync function runWithRemoteTimeout<T>(options: {\n\tsignal: AbortSignal;\n\ttimeoutMs: number;\n\trun: (signal: AbortSignal) => Promise<T>;\n\tonTimeout: () => void;\n}): Promise<T | undefined> {\n\tif (options.signal.aborted) {\n\t\tthrow new Error(\"Request was aborted\");\n\t}\n\n\tconst controller = new AbortController();\n\tlet timedOut = false;\n\tconst abortFromSource = () => controller.abort();\n\toptions.signal.addEventListener(\"abort\", abortFromSource, { once: true });\n\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tconst timeoutPromise = new Promise<\"timeout\">((resolve) => {\n\t\ttimeout = setTimeout(() => {\n\t\t\ttimedOut = true;\n\t\t\tcontroller.abort();\n\t\t\tresolve(\"timeout\");\n\t\t}, options.timeoutMs);\n\t\tconst unref = timeout.unref;\n\t\tif (unref) unref.call(timeout);\n\t});\n\n\tconst operation = options.run(controller.signal);\n\ttry {\n\t\tconst result = await Promise.race([operation, timeoutPromise]);\n\t\tif (result === \"timeout\") {\n\t\t\toptions.onTimeout();\n\t\t\toperation.catch(() => undefined);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn result;\n\t} catch (error) {\n\t\tif (timedOut && !options.signal.aborted) {\n\t\t\toptions.onTimeout();\n\t\t\treturn undefined;\n\t\t}\n\t\tthrow error;\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t\toptions.signal.removeEventListener(\"abort\", abortFromSource);\n\t}\n}\n\nfunction createOpenAiResponsesStreamCompactionInput(request: OpenAiRemoteCompactionRequest): OpenAiRemoteInputItem[] {\n\treturn [...request.body.input, { type: \"context_compaction\" } satisfies OpenAiContextCompactionTriggerItem];\n}\n\nexport function createOpenAiResponsesStreamCompactionPayload(\n\tpayload: unknown,\n\trequest: OpenAiRemoteCompactionRequest,\n): unknown | undefined {\n\tif (!isRecord(payload)) return undefined;\n\treturn {\n\t\t...payload,\n\t\tmodel: request.body.model,\n\t\tinput: [...leadingPromptMessages(payload.input), ...createOpenAiResponsesStreamCompactionInput(request)],\n\t\t...(request.body.prompt_cache_key ? { prompt_cache_key: request.body.prompt_cache_key } : {}),\n\t\t...(request.body.service_tier ? { service_tier: request.body.service_tier } : {}),\n\t};\n}\n\nfunction findResponsesStreamCompactionOutput(message: AssistantMessage): OpenAiContextCompactionItem | undefined {\n\tfor (const block of message.content) {\n\t\tif (block.type !== \"providerNative\") continue;\n\t\tconst item = providerNativeItem(block.raw);\n\t\tif (item && isOpenAiContextCompactionItem(item)) return item;\n\t}\n\treturn undefined;\n}\n\nfunction usageRecordFromAssistant(message: AssistantMessage): Record<string, unknown> {\n\treturn {\n\t\tinput: message.usage.input,\n\t\toutput: message.usage.output,\n\t\tcacheRead: message.usage.cacheRead,\n\t\tcacheWrite: message.usage.cacheWrite,\n\t\ttotalTokens: message.usage.totalTokens,\n\t};\n}\n\nexport function buildOpenAiResponsesStreamCompactionResult(options: {\n\tmodel: Model<\"openai-responses\">;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\trequestInput: OpenAiRemoteInputItem[];\n\tresponse: AssistantMessage;\n\tnow: () => number;\n}): OpenAiRemoteCompactionResult {\n\tconst compactionItem = findResponsesStreamCompactionOutput(options.response);\n\tif (!compactionItem) {\n\t\tthrow new Error(\"OpenAI Responses stream compaction did not return a context_compaction item\");\n\t}\n\n\tconst retainedInput = options.requestInput.filter(isRetainedResponsesStreamInputItem);\n\tconst replacementInput = [...retainedInput, compactionItem];\n\tconst details = {\n\t\tschema: OPENAI_REMOTE_COMPACTION_SCHEMA,\n\t\tmode: \"openai-remote\",\n\t\tprovider: \"openai\",\n\t\tapi: \"openai-responses\",\n\t\ttransport: \"websocket\",\n\t\tmodelId: options.model.id,\n\t\tresponseId: options.response.responseId ?? `response-${options.now()}`,\n\t\tcreatedAt: Math.floor(options.response.timestamp / 1000),\n\t\trequestInputItemCount: options.requestInput.length,\n\t\tretainedInputItemCount: replacementInput.length,\n\t\treplacementInput,\n\t\tusage: usageRecordFromAssistant(options.response),\n\t} satisfies OpenAiRemoteCompactionDetails;\n\n\treturn {\n\t\tsummary: [\n\t\t\t\"OpenAI remote compaction checkpoint.\",\n\t\t\t`Native Responses WebSocket replay is active for ${replacementInput.length.toLocaleString()} retained item(s).`,\n\t\t\t`Original OpenAI input items compacted: ${options.requestInput.length.toLocaleString()}.`,\n\t\t].join(\"\\n\"),\n\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\ttokensBefore: options.tokensBefore,\n\t\tdetails,\n\t};\n}\n\nasync function runOpenAiResponsesStreamCompaction(options: {\n\tmodel: Model<\"openai-responses\">;\n\tauth: { apiKey?: string; headers?: Record<string, string>; extraBody?: Record<string, unknown> };\n\tfirstKeptEntryId: string;\n\tnow: () => number;\n\trequest: OpenAiRemoteCompactionRequest;\n\tsignal: AbortSignal;\n\tstreamRunner: OpenAiResponsesStreamRunner;\n\tsystemPrompt: string;\n}): Promise<OpenAiRemoteCompactionResult | undefined> {\n\tconst stream = options.streamRunner(\n\t\toptions.model,\n\t\t{ systemPrompt: options.systemPrompt, messages: [] },\n\t\t{\n\t\t\tapiKey: options.auth.apiKey,\n\t\t\tcacheRetention: \"short\",\n\t\t\textraBody: options.auth.extraBody,\n\t\t\theaders: options.auth.headers,\n\t\t\tonPayload: (payload) => {\n\t\t\t\tconst rewritten = createOpenAiResponsesStreamCompactionPayload(payload, options.request);\n\t\t\t\tif (!isRecord(rewritten) || !Array.isArray(rewritten.input)) {\n\t\t\t\t\tthrow new Error(\"Unable to build OpenAI Responses stream compaction payload\");\n\t\t\t\t}\n\t\t\t\treturn rewritten;\n\t\t\t},\n\t\t\tsessionId: options.request.body.prompt_cache_key,\n\t\t\tsignal: options.signal,\n\t\t\ttransport: \"websocket\",\n\t\t},\n\t);\n\tconst response = await stream.result();\n\tif (response.stopReason === \"error\" || response.stopReason === \"aborted\") {\n\t\treturn undefined;\n\t}\n\treturn buildOpenAiResponsesStreamCompactionResult({\n\t\tmodel: options.model,\n\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\ttokensBefore: options.request.tokensBefore,\n\t\trequestInput: options.request.body.input,\n\t\tresponse,\n\t\tnow: options.now,\n\t});\n}\n\nasync function runOpenAiCompactEndpointCompaction(options: {\n\tfetchImpl: typeof fetch;\n\theaders: Headers;\n\tmodel: Model<\"openai-responses\">;\n\trequest: OpenAiRemoteCompactionRequest;\n\trequestId: string;\n\tsignal: AbortSignal;\n\tfirstKeptEntryId: string;\n\temit?: EmitCompactionEvent;\n}): Promise<OpenAiRemoteCompactionResult | undefined> {\n\toptions.emit?.({\n\t\tversion: 1,\n\t\taction: \"remote_started\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\trequestId: options.requestId,\n\t\tmodelId: options.model.id,\n\t\tinputItemCount: options.request.inputItemCount,\n\t\ttransport: \"compact-endpoint\",\n\t});\n\n\tlet response: Response;\n\ttry {\n\t\tresponse = await options.fetchImpl(compactEndpointUrl(options.model), {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: options.headers,\n\t\t\tbody: JSON.stringify(options.request.body),\n\t\t\tsignal: options.signal,\n\t\t});\n\t} catch (error) {\n\t\tif (options.signal.aborted) throw error;\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tif (!response.ok) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: `HTTP ${response.status}`,\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tlet payload: unknown;\n\ttry {\n\t\tpayload = await response.json();\n\t} catch (error) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tif (!isOpenAiCompactedResponse(payload)) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: \"invalid-compact-response\",\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tlet result: OpenAiRemoteCompactionResult;\n\ttry {\n\t\tresult = buildOpenAiRemoteCompactionResult({\n\t\t\tmodel: options.model,\n\t\t\tfirstKeptEntryId: options.firstKeptEntryId,\n\t\t\ttokensBefore: options.request.tokensBefore,\n\t\t\trequestInputItemCount: options.request.inputItemCount,\n\t\t\tresponse: payload,\n\t\t});\n\t} catch (error) {\n\t\toptions.emit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: options.requestId,\n\t\t\tmodelId: options.model.id,\n\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\toptions.emit?.({\n\t\tversion: 1,\n\t\taction: \"remote_completed\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\trequestId: options.requestId,\n\t\tmodelId: options.model.id,\n\t\tresponseId: payload.id,\n\t\tretainedInputItemCount: result.details.retainedInputItemCount,\n\t\ttransport: \"compact-endpoint\",\n\t});\n\treturn result;\n}\n\nexport async function runOpenAiRemoteCompaction(\n\tctx: OpenAiRemoteCompactionContext,\n\tevent: SessionBeforeCompactEvent,\n\temit?: EmitCompactionEvent,\n\tdependencies: OpenAiRemoteCompactionDependencies = {},\n): Promise<OpenAiRemoteCompactionResult | undefined> {\n\tconst model = ctx.model;\n\tif (!isOpenAiResponsesModel(model) || event.reason === \"branch\") {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model?.id,\n\t\t\treason: event.reason === \"branch\" ? \"branch-compaction\" : \"not-openai-responses\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tconst auth = await ctx.modelRegistry.getApiKeyAndHeaders(model);\n\tif (!auth.ok) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model.id,\n\t\t\treason: auth.error,\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tconst requestModel = auth.upstreamModelId ? { ...model, id: auth.upstreamModelId } : model;\n\tconst serviceTier = ctx.serviceTier ?? auth.serviceTier;\n\tconst request = createOpenAiRemoteCompactionRequest({\n\t\tmodel: requestModel,\n\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\tbranchEntries: event.branchEntries,\n\t\ttokensBefore: event.preparation.tokensBefore,\n\t\tpromptCacheKey: ctx.sessionManager.getSessionId(),\n\t\tserviceTier,\n\t});\n\tif (!request) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model.id,\n\t\t\treason: \"session-not-openai-native\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst remoteTimeoutMs = dependencies.remoteTimeoutMs ?? OPENAI_REMOTE_COMPACTION_TIMEOUT_MS;\n\n\tif (supportsOpenAiResponsesWebSocket(requestModel)) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_started\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: requestModel.id,\n\t\t\tinputItemCount: request.inputItemCount,\n\t\t\ttransport: \"websocket\",\n\t\t});\n\t\ttry {\n\t\t\tconst result = await runWithRemoteTimeout({\n\t\t\t\tsignal: event.signal,\n\t\t\t\ttimeoutMs: remoteTimeoutMs,\n\t\t\t\tonTimeout: () =>\n\t\t\t\t\temit?.({\n\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\taction: \"remote_fallback\",\n\t\t\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\t\t\trequestId: event.requestId,\n\t\t\t\t\t\tmodelId: requestModel.id,\n\t\t\t\t\t\treason: REMOTE_COMPACTION_TIMEOUT_REASON,\n\t\t\t\t\t\ttransport: \"websocket\",\n\t\t\t\t\t}),\n\t\t\t\trun: (signal) =>\n\t\t\t\t\trunOpenAiResponsesStreamCompaction({\n\t\t\t\t\t\tmodel: requestModel,\n\t\t\t\t\t\tauth,\n\t\t\t\t\t\tfirstKeptEntryId: event.preparation.firstKeptEntryId,\n\t\t\t\t\t\tnow: dependencies.now ?? Date.now,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tstreamRunner:\n\t\t\t\t\t\t\tdependencies.streamRunner ??\n\t\t\t\t\t\t\t((streamModel, context, options) => streamSimple(streamModel, context, options)),\n\t\t\t\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\t\t\t}),\n\t\t\t});\n\t\t\tif (result) {\n\t\t\t\temit?.({\n\t\t\t\t\tversion: 1,\n\t\t\t\t\taction: \"remote_completed\",\n\t\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\t\trequestId: event.requestId,\n\t\t\t\t\tmodelId: requestModel.id,\n\t\t\t\t\tresponseId: result.details.responseId,\n\t\t\t\t\tretainedInputItemCount: result.details.retainedInputItemCount,\n\t\t\t\t\ttransport: \"websocket\",\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\temit?.({\n\t\t\t\tversion: 1,\n\t\t\t\taction: \"remote_fallback\",\n\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tmodelId: requestModel.id,\n\t\t\t\treason: \"websocket-compaction-no-result\",\n\t\t\t\ttransport: \"websocket\",\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (event.signal.aborted) throw error;\n\t\t\temit?.({\n\t\t\t\tversion: 1,\n\t\t\t\taction: \"remote_fallback\",\n\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tmodelId: requestModel.id,\n\t\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\t\ttransport: \"websocket\",\n\t\t\t});\n\t\t}\n\t}\n\n\tconst headers = createHeaders(auth);\n\tif (!headers) {\n\t\temit?.({\n\t\t\tversion: 1,\n\t\t\taction: \"remote_fallback\",\n\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\trequestId: event.requestId,\n\t\t\tmodelId: model.id,\n\t\t\treason: \"missing-openai-auth\",\n\t\t});\n\t\treturn undefined;\n\t}\n\n\treturn runWithRemoteTimeout({\n\t\tsignal: event.signal,\n\t\ttimeoutMs: remoteTimeoutMs,\n\t\tonTimeout: () =>\n\t\t\temit?.({\n\t\t\t\tversion: 1,\n\t\t\t\taction: \"remote_fallback\",\n\t\t\t\troute: \"builtin.compaction.openai_remote\",\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tmodelId: requestModel.id,\n\t\t\t\treason: REMOTE_COMPACTION_TIMEOUT_REASON,\n\t\t\t\ttransport: \"compact-endpoint\",\n\t\t\t}),\n\t\trun: (signal) =>\n\t\t\trunOpenAiCompactEndpointCompaction({\n\t\t\t\tfetchImpl: dependencies.fetch ?? fetch,\n\t\t\t\theaders,\n\t\t\t\tmodel: requestModel,\n\t\t\t\trequest,\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tsignal,\n\t\t\t\tfirstKeptEntryId: event.preparation.firstKeptEntryId,\n\t\t\t\temit,\n\t\t\t}),\n\t});\n}\n\nfunction latestRemoteCompaction(\n\tentries: SessionEntry[],\n): { entryId: string; index: number; details: OpenAiRemoteCompactionDetails } | undefined {\n\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\tconst entry = entries[index];\n\t\tif (entry?.type !== \"compaction\") continue;\n\t\tconst details = getOpenAiRemoteCompactionDetails(entry.details);\n\t\tif (details) return { entryId: entry.id, index, details };\n\t\treturn undefined;\n\t}\n\treturn undefined;\n}\n\nfunction leadingPromptMessages(input: unknown): OpenAiRemoteInputItem[] {\n\tif (!Array.isArray(input)) return [];\n\tconst result: OpenAiRemoteInputItem[] = [];\n\tfor (const item of input) {\n\t\tif (!isRecord(item)) break;\n\t\tconst role = item.role;\n\t\tif (role !== \"system\" && role !== \"developer\") break;\n\t\tresult.push(providerNativeItem(item) ?? { role, content: typeof item.content === \"string\" ? item.content : [] });\n\t}\n\treturn result;\n}\n\nexport function rewriteOpenAiPayloadWithRemoteCompaction(\n\tpayload: unknown,\n\toptions: { model: Model<Api> | undefined; branchEntries: SessionEntry[] },\n\temit?: EmitCompactionEvent,\n): unknown | undefined {\n\tif (!isOpenAiResponsesModel(options.model) || !isRecord(payload)) return undefined;\n\tconst remote = latestRemoteCompaction(options.branchEntries);\n\tif (!remote) return undefined;\n\n\tconst postCompactionItems = convertBranchEntries(options.branchEntries.slice(remote.index + 1));\n\tif (!postCompactionItems) return undefined;\n\n\tconst input = [...leadingPromptMessages(payload.input), ...remote.details.replacementInput, ...postCompactionItems];\n\temit?.({\n\t\tversion: 1,\n\t\taction: \"remote_payload_rewritten\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\tmodelId: options.model.id,\n\t\tcompactionEntryId: remote.entryId,\n\t\tinputItemCount: input.length,\n\t});\n\treturn { ...payload, input };\n}\n"]}
@@ -36,6 +36,15 @@ export type SpeculativeCompactionResult = ApplyCompactionResult | {
36
36
  applied: false;
37
37
  reason: "unavailable";
38
38
  };
39
+ /**
40
+ * Summary-generation failure with a user-facing diagnosis. Distinct from a
41
+ * user abort (which resolves `undefined`): callers surface `message` on the
42
+ * manual route and degrade to "unavailable" on automatic routes.
43
+ */
44
+ export declare class SummaryGenerationError extends Error {
45
+ readonly kind: "auth" | "empty-summary";
46
+ constructor(kind: "auth" | "empty-summary", message: string);
47
+ }
39
48
  export declare function truncateContextMessages(messages: AgentMessage[]): AgentMessage[];
40
49
  export declare function hardLimitEmergencyPrune(messages: AgentMessage[], contextWindow: number): {
41
50
  messages: AgentMessage[];
@@ -53,6 +62,14 @@ export declare function createSpeculativeCompactionSnapshot(context: Speculative
53
62
  generation: number;
54
63
  tools?: Tool[];
55
64
  }): SpeculativeCompactionSnapshot | undefined;
65
+ /**
66
+ * Generate a compaction summary for the snapshot. Resolves `undefined` only
67
+ * when the request was aborted (caller signal or an aborted stream); every
68
+ * other failure throws — {@link SummaryGenerationError} for diagnosable
69
+ * generation failures, the raw provider error otherwise. Abort is checked
70
+ * before and after credential resolution so a cancelled request never
71
+ * misreports as an auth failure.
72
+ */
56
73
  export declare function runExtensionCompaction(context: SpeculativeCompactionContext, snapshot: SpeculativeCompactionSnapshot, signal?: AbortSignal, onProgress?: CompactionProgressCallback): Promise<CompactionResult | undefined>;
57
74
  export declare function applyGeneratedCompaction(context: SpeculativeCompactionContext, snapshot: SpeculativeCompactionSnapshot | undefined, getCurrentGeneration: () => number, compaction: CompactionResult | undefined): Promise<SpeculativeCompactionResult>;
58
75
  export declare function applySpeculativeCompaction(context: SpeculativeCompactionContext, snapshot: SpeculativeCompactionSnapshot | undefined, getCurrentGeneration: () => number, generate: () => Promise<CompactionResult | undefined>): Promise<SpeculativeCompactionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"speculative.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/speculative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speculative.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/speculative.ts"],"names":[],"mappings":"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"}