@code-yeongyu/senpi 2026.7.30 → 2026.7.31-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/README.md +3 -0
  3. package/dist/core/agent-session.d.ts +55 -12
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +141 -21
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/compaction/compaction.d.ts +1 -0
  8. package/dist/core/compaction/compaction.d.ts.map +1 -1
  9. package/dist/core/compaction/compaction.js +1 -0
  10. package/dist/core/compaction/compaction.js.map +1 -1
  11. package/dist/core/dynamic-prompt/build.d.ts.map +1 -1
  12. package/dist/core/dynamic-prompt/build.js +4 -0
  13. package/dist/core/dynamic-prompt/build.js.map +1 -1
  14. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts +2 -2
  15. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts.map +1 -1
  16. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js +25 -25
  17. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js.map +1 -1
  18. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts.map +1 -1
  19. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js.map +1 -1
  20. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts +1 -1
  21. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts.map +1 -1
  22. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js +2 -2
  23. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js.map +1 -1
  24. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts +9 -9
  25. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts.map +1 -1
  26. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js +2 -2
  27. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js.map +1 -1
  28. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts +1 -1
  29. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts.map +1 -1
  30. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js +3 -3
  31. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js.map +1 -1
  32. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts +21 -0
  33. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts.map +1 -0
  34. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js +30 -0
  35. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js.map +1 -0
  36. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.d.ts +8 -4
  37. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -0
  38. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.js +34 -25
  39. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -0
  40. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts.map +1 -1
  41. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js.map +1 -1
  42. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts.map +1 -1
  43. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js.map +1 -1
  44. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts +1 -1
  45. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts.map +1 -1
  46. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js +1 -1
  47. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js.map +1 -1
  48. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts.map +1 -1
  49. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js.map +1 -1
  50. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts.map +1 -1
  51. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js +1 -1
  52. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js.map +1 -1
  53. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts +14 -0
  54. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -0
  55. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/guidance.js +37 -1
  56. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -0
  57. package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +4 -0
  58. package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +1 -0
  59. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/index.js +12 -10
  60. package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -0
  61. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts +3 -3
  62. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts.map +1 -1
  63. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.js +2 -2
  64. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -0
  65. package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts +18 -0
  66. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.d.ts.map +1 -1
  67. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.js +70 -10
  68. package/dist/core/extensions/builtin/claude-sdk-oauth/options.js.map +1 -0
  69. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts.map +1 -1
  70. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.js +32 -19
  71. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +1 -0
  72. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts +1 -0
  73. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts.map +1 -1
  74. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js.map +1 -1
  75. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts +30 -0
  76. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -0
  77. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js +197 -0
  78. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -0
  79. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts +18 -0
  80. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -0
  81. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js +33 -0
  82. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js.map +1 -0
  83. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts +3 -0
  84. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -0
  85. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +134 -0
  86. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -0
  87. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +85 -0
  88. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -0
  89. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +270 -0
  90. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -0
  91. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts +17 -0
  92. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -0
  93. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +217 -0
  94. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -0
  95. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts +49 -0
  96. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -0
  97. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +204 -0
  98. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -0
  99. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts +28 -0
  100. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts.map +1 -0
  101. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js +107 -0
  102. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -0
  103. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts +2 -0
  104. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +1 -0
  105. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js +10 -0
  106. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +1 -0
  107. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts.map +1 -1
  108. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js.map +1 -1
  109. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.d.ts +1 -1
  110. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +1 -0
  111. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.js +72 -53
  112. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +1 -0
  113. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts +3 -0
  114. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts.map +1 -0
  115. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js +25 -0
  116. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js.map +1 -0
  117. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts +1 -1
  118. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts.map +1 -1
  119. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js +2 -2
  120. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js.map +1 -1
  121. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts.map +1 -1
  122. package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js.map +1 -1
  123. package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +18 -0
  124. package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -0
  125. package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +69 -0
  126. package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -0
  127. package/dist/core/extensions/builtin/compaction/idle.d.ts +16 -0
  128. package/dist/core/extensions/builtin/compaction/idle.d.ts.map +1 -0
  129. package/dist/core/extensions/builtin/compaction/idle.js +21 -0
  130. package/dist/core/extensions/builtin/compaction/idle.js.map +1 -0
  131. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  132. package/dist/core/extensions/builtin/compaction/index.js +45 -2
  133. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  134. package/dist/core/extensions/builtin/compaction/log.d.ts +1 -1
  135. package/dist/core/extensions/builtin/compaction/log.d.ts.map +1 -1
  136. package/dist/core/extensions/builtin/compaction/log.js.map +1 -1
  137. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +3 -0
  138. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
  139. package/dist/core/extensions/builtin/compaction/openai-remote.js +15 -4
  140. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  141. package/dist/core/extensions/builtin/compaction/speculative.d.ts +4 -1
  142. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  143. package/dist/core/extensions/builtin/compaction/speculative.js +39 -20
  144. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  145. package/dist/core/extensions/builtin/compaction/task-intent.d.ts +2 -6
  146. package/dist/core/extensions/builtin/compaction/task-intent.d.ts.map +1 -1
  147. package/dist/core/extensions/builtin/compaction/task-intent.js +10 -9
  148. package/dist/core/extensions/builtin/compaction/task-intent.js.map +1 -1
  149. package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts +6 -0
  150. package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts.map +1 -0
  151. package/dist/core/extensions/builtin/goal/continuation-recovery.js +20 -0
  152. package/dist/core/extensions/builtin/goal/continuation-recovery.js.map +1 -0
  153. package/dist/core/extensions/builtin/goal/continuation.d.ts +4 -4
  154. package/dist/core/extensions/builtin/goal/continuation.d.ts.map +1 -1
  155. package/dist/core/extensions/builtin/goal/continuation.js +14 -8
  156. package/dist/core/extensions/builtin/goal/continuation.js.map +1 -1
  157. package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts +19 -0
  158. package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -0
  159. package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js +48 -0
  160. package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js.map +1 -0
  161. package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
  162. package/dist/core/extensions/builtin/goal/index.js +21 -16
  163. package/dist/core/extensions/builtin/goal/index.js.map +1 -1
  164. package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts.map +1 -1
  165. package/dist/core/extensions/builtin/goal/lifecycle-helpers.js +12 -10
  166. package/dist/core/extensions/builtin/goal/lifecycle-helpers.js.map +1 -1
  167. package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts +5 -1
  168. package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
  169. package/dist/core/extensions/builtin/goal/monitor-continuation.js +109 -63
  170. package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
  171. package/dist/core/extensions/builtin/goal/persistence.d.ts +1 -0
  172. package/dist/core/extensions/builtin/goal/persistence.d.ts.map +1 -1
  173. package/dist/core/extensions/builtin/goal/persistence.js +49 -7
  174. package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
  175. package/dist/core/extensions/builtin/goal/ui.d.ts +1 -0
  176. package/dist/core/extensions/builtin/goal/ui.d.ts.map +1 -1
  177. package/dist/core/extensions/builtin/goal/ui.js +11 -2
  178. package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
  179. package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts +1 -1
  180. package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts.map +1 -1
  181. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js +67 -66
  182. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -1
  183. package/dist/core/extensions/builtin/gpt-apply-patch/recovery.d.ts +4 -0
  184. package/dist/core/extensions/builtin/gpt-apply-patch/recovery.d.ts.map +1 -0
  185. package/dist/core/extensions/builtin/gpt-apply-patch/recovery.js +35 -0
  186. package/dist/core/extensions/builtin/gpt-apply-patch/recovery.js.map +1 -0
  187. package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts.map +1 -1
  188. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js +0 -5
  189. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -1
  190. package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts +2 -0
  191. package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts.map +1 -1
  192. package/dist/core/extensions/builtin/gpt-apply-patch/types.js.map +1 -1
  193. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  194. package/dist/core/extensions/builtin/index.js +5 -2
  195. package/dist/core/extensions/builtin/index.js.map +1 -1
  196. package/dist/core/extensions/builtin/loop-guard/detectors.d.ts +31 -0
  197. package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -0
  198. package/dist/core/extensions/builtin/loop-guard/detectors.js +111 -0
  199. package/dist/core/extensions/builtin/loop-guard/detectors.js.map +1 -0
  200. package/dist/core/extensions/builtin/loop-guard/index.d.ts +3 -0
  201. package/dist/core/extensions/builtin/loop-guard/index.d.ts.map +1 -0
  202. package/dist/core/extensions/builtin/loop-guard/index.js +31 -0
  203. package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -0
  204. package/dist/core/extensions/builtin/loop-guard/notice.d.ts +5 -0
  205. package/dist/core/extensions/builtin/loop-guard/notice.d.ts.map +1 -0
  206. package/dist/core/extensions/builtin/loop-guard/notice.js +42 -0
  207. package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -0
  208. package/dist/core/extensions/builtin/loop-guard/policy.d.ts +30 -0
  209. package/dist/core/extensions/builtin/loop-guard/policy.d.ts.map +1 -0
  210. package/dist/core/extensions/builtin/loop-guard/policy.js +30 -0
  211. package/dist/core/extensions/builtin/loop-guard/policy.js.map +1 -0
  212. package/dist/core/extensions/builtin/loop-guard/renderer.d.ts +4 -0
  213. package/dist/core/extensions/builtin/loop-guard/renderer.d.ts.map +1 -0
  214. package/dist/core/extensions/builtin/loop-guard/renderer.js +50 -0
  215. package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -0
  216. package/dist/core/extensions/builtin/loop-guard/similarity.d.ts +13 -0
  217. package/dist/core/extensions/builtin/loop-guard/similarity.d.ts.map +1 -0
  218. package/dist/core/extensions/builtin/loop-guard/similarity.js +51 -0
  219. package/dist/core/extensions/builtin/loop-guard/similarity.js.map +1 -0
  220. package/dist/core/extensions/builtin/loop-guard/tracker.d.ts +13 -0
  221. package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -0
  222. package/dist/core/extensions/builtin/loop-guard/tracker.js +39 -0
  223. package/dist/core/extensions/builtin/loop-guard/tracker.js.map +1 -0
  224. package/dist/core/extensions/builtin/monitor-state-event.d.ts +10 -0
  225. package/dist/core/extensions/builtin/monitor-state-event.d.ts.map +1 -1
  226. package/dist/core/extensions/builtin/monitor-state-event.js.map +1 -1
  227. package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -1
  228. package/dist/core/extensions/builtin/prompt-preset/index.js +8 -4
  229. package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -1
  230. package/dist/core/extensions/builtin/rules/index.js +4 -3
  231. package/dist/core/extensions/builtin/rules/index.js.map +1 -1
  232. package/dist/core/extensions/builtin/rules/rules/constants.d.ts +11 -0
  233. package/dist/core/extensions/builtin/rules/rules/constants.d.ts.map +1 -1
  234. package/dist/core/extensions/builtin/rules/rules/constants.js +11 -0
  235. package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
  236. package/dist/core/extensions/builtin/rules/rules/formatter.d.ts.map +1 -1
  237. package/dist/core/extensions/builtin/rules/rules/formatter.js +15 -1
  238. package/dist/core/extensions/builtin/rules/rules/formatter.js.map +1 -1
  239. package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -1
  240. package/dist/core/extensions/builtin/service-tier.js +23 -21
  241. package/dist/core/extensions/builtin/service-tier.js.map +1 -1
  242. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  243. package/dist/core/extensions/builtin/terminal/extension.js +21 -7
  244. package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
  245. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +2 -0
  246. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
  247. package/dist/core/extensions/builtin/terminal/monitor-registry.js +2 -0
  248. package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
  249. package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts +37 -0
  250. package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -0
  251. package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js +61 -0
  252. package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js.map +1 -0
  253. package/dist/core/extensions/builtin/terminal/monitor-status.d.ts +9 -1
  254. package/dist/core/extensions/builtin/terminal/monitor-status.d.ts.map +1 -1
  255. package/dist/core/extensions/builtin/terminal/monitor-status.js +35 -2
  256. package/dist/core/extensions/builtin/terminal/monitor-status.js.map +1 -1
  257. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +1 -1
  258. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -1
  259. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +88 -29
  260. package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -1
  261. package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts +4 -0
  262. package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts.map +1 -0
  263. package/dist/core/extensions/builtin/ttsr/builtin-rules.js +20 -0
  264. package/dist/core/extensions/builtin/ttsr/builtin-rules.js.map +1 -0
  265. package/dist/core/extensions/builtin/ttsr/commands.js +9 -1
  266. package/dist/core/extensions/builtin/ttsr/commands.js.map +1 -1
  267. package/dist/core/extensions/builtin/ttsr/index.d.ts.map +1 -1
  268. package/dist/core/extensions/builtin/ttsr/index.js +4 -3
  269. package/dist/core/extensions/builtin/ttsr/index.js.map +1 -1
  270. package/dist/core/extensions/builtin/ttsr/manager.js +1 -1
  271. package/dist/core/extensions/builtin/ttsr/manager.js.map +1 -1
  272. package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
  273. package/dist/core/extensions/builtin/websearch/websearch/renderers.js +1 -1
  274. package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
  275. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
  276. package/dist/core/extensions/builtin/websearch/websearch/search.js +1 -3
  277. package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
  278. package/dist/core/extensions/index.d.ts +1 -1
  279. package/dist/core/extensions/index.d.ts.map +1 -1
  280. package/dist/core/extensions/index.js.map +1 -1
  281. package/dist/core/extensions/loader.d.ts.map +1 -1
  282. package/dist/core/extensions/loader.js +5 -0
  283. package/dist/core/extensions/loader.js.map +1 -1
  284. package/dist/core/extensions/runner.d.ts +1 -1
  285. package/dist/core/extensions/runner.d.ts.map +1 -1
  286. package/dist/core/extensions/runner.js +3 -1
  287. package/dist/core/extensions/runner.js.map +1 -1
  288. package/dist/core/extensions/types.d.ts +22 -1
  289. package/dist/core/extensions/types.d.ts.map +1 -1
  290. package/dist/core/extensions/types.js.map +1 -1
  291. package/dist/core/high-reasoning-warning.d.ts +10 -0
  292. package/dist/core/high-reasoning-warning.d.ts.map +1 -0
  293. package/dist/core/high-reasoning-warning.js +28 -0
  294. package/dist/core/high-reasoning-warning.js.map +1 -0
  295. package/dist/core/model-runtime.d.ts.map +1 -1
  296. package/dist/core/model-runtime.js +3 -11
  297. package/dist/core/model-runtime.js.map +1 -1
  298. package/dist/core/settings-manager.d.ts +2 -0
  299. package/dist/core/settings-manager.d.ts.map +1 -1
  300. package/dist/core/settings-manager.js +1 -0
  301. package/dist/core/settings-manager.js.map +1 -1
  302. package/dist/core/thinking-levels.d.ts.map +1 -1
  303. package/dist/core/thinking-levels.js +23 -3
  304. package/dist/core/thinking-levels.js.map +1 -1
  305. package/dist/index.d.ts +1 -1
  306. package/dist/index.d.ts.map +1 -1
  307. package/dist/index.js.map +1 -1
  308. package/dist/modes/app-server/server/account.d.ts +1 -1
  309. package/dist/modes/app-server/server/account.js +1 -1
  310. package/dist/modes/app-server/server/account.js.map +1 -1
  311. package/dist/modes/app-server/server/server-core.js +1 -1
  312. package/dist/modes/app-server/server/server-core.js.map +1 -1
  313. package/dist/modes/interactive/compaction-queue-transfer.d.ts +2 -0
  314. package/dist/modes/interactive/compaction-queue-transfer.d.ts.map +1 -1
  315. package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
  316. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  317. package/dist/modes/interactive/components/footer.js +9 -5
  318. package/dist/modes/interactive/components/footer.js.map +1 -1
  319. package/dist/modes/interactive/interactive-mode.d.ts +8 -1
  320. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  321. package/dist/modes/interactive/interactive-mode.js +96 -24
  322. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  323. package/dist/modes/interactive/risky-main-model-warning.d.ts +5 -0
  324. package/dist/modes/interactive/risky-main-model-warning.d.ts.map +1 -0
  325. package/dist/modes/interactive/risky-main-model-warning.js +8 -0
  326. package/dist/modes/interactive/risky-main-model-warning.js.map +1 -0
  327. package/dist/modes/interactive/tips/catalog/subagent-tips.d.ts.map +1 -1
  328. package/dist/modes/interactive/tips/catalog/subagent-tips.js +30 -0
  329. package/dist/modes/interactive/tips/catalog/subagent-tips.js.map +1 -1
  330. package/dist/modes/rpc/connection-handler.js +3 -3
  331. package/dist/modes/rpc/connection-handler.js.map +1 -1
  332. package/dist/modes/rpc/rpc-types.d.ts +6 -0
  333. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  334. package/dist/modes/rpc/rpc-types.js.map +1 -1
  335. package/dist/utils/version-check.d.ts.map +1 -1
  336. package/dist/utils/version-check.js +22 -2
  337. package/dist/utils/version-check.js.map +1 -1
  338. package/docs/docs.json +4 -0
  339. package/docs/extensions.md +10 -0
  340. package/docs/providers.md +21 -5
  341. package/docs/quickstart.md +3 -0
  342. package/docs/release-guide.md +636 -0
  343. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +39 -0
  344. package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
  345. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status-ticker.ts +79 -0
  346. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status.ts +36 -3
  347. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +26 -12
  348. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +9 -0
  349. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  350. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +3 -2
  351. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  352. package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.d.ts +4 -0
  353. package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.d.ts.map +1 -0
  354. package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.js +106 -0
  355. package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.js.map +1 -0
  356. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.d.ts +1 -0
  357. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.d.ts.map +1 -1
  358. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.js +1 -0
  359. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.js.map +1 -1
  360. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  361. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  362. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +10 -15
  363. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  364. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +2 -2
  365. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  366. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +2 -2
  367. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  368. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +2 -2
  369. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  370. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -2
  371. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  372. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -1
  373. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  374. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -1
  375. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  376. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +1 -0
  377. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  378. package/node_modules/@earendil-works/pi-ai/dist/models.js +69 -19
  379. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  380. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  381. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  382. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  383. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  384. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  385. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  386. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  387. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  388. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  389. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/index.d.ts +2 -1
  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 +13 -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/kimi-xtml/recovery-stream.js +2 -2
  394. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/recovery-stream.js.map +1 -1
  395. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery-stream.d.ts +3 -0
  396. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery-stream.d.ts.map +1 -0
  397. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery-stream.js +29 -0
  398. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery-stream.js.map +1 -0
  399. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery.d.ts +3 -0
  400. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery.d.ts.map +1 -0
  401. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery.js +82 -0
  402. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/thinking-recovery.js.map +1 -0
  403. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -0
  404. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  405. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  406. package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts +3 -0
  407. package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts.map +1 -0
  408. package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js +36 -0
  409. package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js.map +1 -0
  410. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  411. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  412. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  413. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.d.ts.map +1 -1
  414. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js +1 -12
  415. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js.map +1 -1
  416. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts +7 -0
  417. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts.map +1 -1
  418. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.js +9 -3
  419. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.js.map +1 -1
  420. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts.map +1 -1
  421. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js +5 -3
  422. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js.map +1 -1
  423. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts.map +1 -1
  424. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.js +1 -12
  425. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.js.map +1 -1
  426. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.d.ts +5 -0
  427. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.d.ts.map +1 -0
  428. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.js +17 -0
  429. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.js.map +1 -0
  430. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts +9 -1
  431. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts.map +1 -1
  432. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.js +10 -4
  433. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.js.map +1 -1
  434. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.d.ts +21 -0
  435. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.d.ts.map +1 -1
  436. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.js +239 -41
  437. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.js.map +1 -1
  438. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.d.ts.map +1 -1
  439. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.js +25 -6
  440. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.js.map +1 -1
  441. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.d.ts +32 -0
  442. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.d.ts.map +1 -0
  443. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.js +64 -0
  444. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.js.map +1 -0
  445. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.d.ts +5 -0
  446. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.d.ts.map +1 -1
  447. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.js +10 -1
  448. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.js.map +1 -1
  449. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts.map +1 -1
  450. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +2 -13
  451. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -1
  452. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts +7 -0
  453. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts.map +1 -1
  454. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js +9 -3
  455. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js.map +1 -1
  456. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts.map +1 -1
  457. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +5 -3
  458. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -1
  459. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts.map +1 -1
  460. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +2 -13
  461. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -1
  462. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.d.ts +5 -0
  463. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.d.ts.map +1 -0
  464. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js +13 -0
  465. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js.map +1 -0
  466. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts +9 -1
  467. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts.map +1 -1
  468. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +10 -4
  469. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -1
  470. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.d.ts +21 -0
  471. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.d.ts.map +1 -1
  472. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +239 -41
  473. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js.map +1 -1
  474. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.d.ts.map +1 -1
  475. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +25 -6
  476. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -1
  477. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.d.ts +32 -0
  478. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.d.ts.map +1 -0
  479. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js +57 -0
  480. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js.map +1 -0
  481. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.d.ts +5 -0
  482. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.d.ts.map +1 -1
  483. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +9 -0
  484. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -1
  485. package/node_modules/@modelcontextprotocol/sdk/package.json +4 -3
  486. package/node_modules/brace-expansion/README.md +12 -0
  487. package/node_modules/brace-expansion/dist/commonjs/index.d.ts +2 -0
  488. package/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +1 -1
  489. package/node_modules/brace-expansion/dist/commonjs/index.js +138 -86
  490. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  491. package/node_modules/brace-expansion/dist/esm/index.d.ts +2 -0
  492. package/node_modules/brace-expansion/dist/esm/index.d.ts.map +1 -1
  493. package/node_modules/brace-expansion/dist/esm/index.js +137 -85
  494. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  495. package/node_modules/brace-expansion/package.json +2 -2
  496. package/package.json +7 -7
  497. package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.d.ts.map +0 -1
  498. package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.js.map +0 -1
  499. package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts +0 -6
  500. package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts.map +0 -1
  501. package/dist/core/extensions/builtin/claude-agent-sdk/guidance.js.map +0 -1
  502. package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts +0 -4
  503. package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts.map +0 -1
  504. package/dist/core/extensions/builtin/claude-agent-sdk/index.js.map +0 -1
  505. package/dist/core/extensions/builtin/claude-agent-sdk/oauth-login.js.map +0 -1
  506. package/dist/core/extensions/builtin/claude-agent-sdk/options.d.ts +0 -16
  507. package/dist/core/extensions/builtin/claude-agent-sdk/options.js.map +0 -1
  508. package/dist/core/extensions/builtin/claude-agent-sdk/prompt-bridge.js.map +0 -1
  509. package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts +0 -15
  510. package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts.map +0 -1
  511. package/dist/core/extensions/builtin/claude-agent-sdk/settings.js +0 -41
  512. package/dist/core/extensions/builtin/claude-agent-sdk/settings.js.map +0 -1
  513. package/dist/core/extensions/builtin/claude-agent-sdk/stream.d.ts.map +0 -1
  514. package/dist/core/extensions/builtin/claude-agent-sdk/stream.js.map +0 -1
  515. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts +0 -0
  516. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js +0 -0
  517. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts +0 -0
  518. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js +0 -0
  519. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts +0 -0
  520. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js +0 -0
  521. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts +0 -0
  522. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js +0 -0
  523. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts +0 -0
  524. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts +0 -0
  525. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js +0 -0
  526. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts +0 -0
  527. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js +0 -0
  528. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts +0 -0
  529. /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/log.ts"],"names":[],"mappings":"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","sourcesContent":["import { closeSync, mkdirSync, openSync, renameSync, statSync, writeSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\nconst DEFAULT_MAX_BYTES = 5 * 1024 * 1024;\nconst ALLOWED_KEYS = new Set([\n\t\"origin\",\n\t\"reason\",\n\t\"route\",\n\t\"variant\",\n\t\"generation\",\n\t\"requestId\",\n\t\"tokens\",\n\t\"tokensBefore\",\n\t\"savedTokens\",\n\t\"savingsRatio\",\n\t\"contextWindow\",\n\t\"threshold\",\n\t\"remainingSec\",\n\t\"count\",\n\t\"durationMs\",\n]);\nconst DEBUG_PREFIX = \"[senpi-compaction]\";\nconst EVENTS = new Set([\n\t\"speculative_started\",\n\t\"speculative_applied\",\n\t\"speculative_stale\",\n\t\"speculative_invalidated\",\n\t\"blocking_started\",\n\t\"warm_consumed\",\n\t\"core_route_generated\",\n\t\"skip_cap\",\n\t\"skip_breaker\",\n\t\"threshold_trigger\",\n\t\"hard_limit_trigger\",\n\t\"emergency_prune\",\n\t\"ineffective_counted\",\n\t\"summary_failed\",\n]);\n\nexport type CompactionLoggerEvent =\n\t| \"speculative_started\"\n\t| \"speculative_applied\"\n\t| \"speculative_stale\"\n\t| \"speculative_invalidated\"\n\t| \"blocking_started\"\n\t| \"warm_consumed\"\n\t| \"core_route_generated\"\n\t| \"skip_cap\"\n\t| \"skip_breaker\"\n\t| \"threshold_trigger\"\n\t| \"hard_limit_trigger\"\n\t| \"emergency_prune\"\n\t| \"ineffective_counted\"\n\t| \"summary_failed\";\n\nexport interface CompactionLoggerData {\n\torigin?: string;\n\treason?: string;\n\troute?: string;\n\tvariant?: string;\n\tgeneration?: number;\n\trequestId?: string;\n\ttokens?: number;\n\ttokensBefore?: number;\n\tsavedTokens?: number;\n\tsavingsRatio?: number;\n\tcontextWindow?: number;\n\tthreshold?: number;\n\tremainingSec?: number;\n\tcount?: number;\n\tdurationMs?: number;\n}\n\nexport interface CompactionLogger {\n\tdebug(event: CompactionLoggerEvent, data?: CompactionLoggerData): void;\n\tinfo(event: CompactionLoggerEvent, data?: CompactionLoggerData): void;\n}\n\nexport interface CompactionLoggerOptions {\n\tsink?: (line: string) => void;\n\tmirrorToStderr?: boolean;\n\tmaxBytes?: number;\n}\n\nexport function createCompactionLogger(\n\tagentDir: string | undefined,\n\toptions: CompactionLoggerOptions = {},\n): CompactionLogger {\n\tif (typeof agentDir !== \"string\" || agentDir.length === 0) {\n\t\treturn { debug: () => {}, info: () => {} };\n\t}\n\tconst filePath = join(agentDir, \"logs\", \"compaction.log\");\n\tconst maxBytes = validMaxBytes(options.maxBytes);\n\tlet reportedFailure = false;\n\n\tfunction log(level: \"debug\" | \"info\", event: CompactionLoggerEvent, data?: CompactionLoggerData): void {\n\t\ttry {\n\t\t\tif (!EVENTS.has(event)) return;\n\t\t\tconst line = formatLine(level, event, data);\n\t\t\twriteLine(filePath, line, maxBytes, options.sink);\n\t\t\tif (options.mirrorToStderr ?? process.env.SENPI_COMPACTION_DEBUG === \"1\") {\n\t\t\t\tconsole.error(DEBUG_PREFIX, line);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!reportedFailure) {\n\t\t\t\treportedFailure = true;\n\t\t\t\tconsole.error(\"Unable to write compaction log\", error);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tdebug: (event, data) => log(\"debug\", event, data),\n\t\tinfo: (event, data) => log(\"info\", event, data),\n\t};\n}\n\nfunction validMaxBytes(value: number | undefined): number {\n\treturn typeof value === \"number\" && Number.isFinite(value) && value > 0 ? Math.floor(value) : DEFAULT_MAX_BYTES;\n}\n\nfunction formatLine(level: \"debug\" | \"info\", event: CompactionLoggerEvent, data?: CompactionLoggerData): string {\n\tconst entry: Record<string, unknown> = { ts: new Date().toISOString(), level, event };\n\tif (data) {\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (!ALLOWED_KEYS.has(key)) continue;\n\t\t\tconst safeValue = safeValueOf(value, new WeakSet<object>());\n\t\t\tif (safeValue !== undefined) entry[key] = safeValue;\n\t\t}\n\t}\n\treturn JSON.stringify(entry);\n}\n\nfunction writeLine(filePath: string, line: string, maxBytes: number, sink?: (line: string) => void): void {\n\tconst text = `${line}\\n`;\n\tif (sink) sink(line);\n\tmkdirSync(dirname(filePath), { recursive: true, mode: 0o700 });\n\tif (needsRotate(filePath, Buffer.byteLength(text), maxBytes)) {\n\t\tconst rotated = `${filePath}.1`;\n\t\trenameSync(filePath, rotated);\n\t}\n\tconst fd = openSync(filePath, \"a\", 0o600);\n\ttry {\n\t\twriteSync(fd, text);\n\t} finally {\n\t\tcloseSync(fd);\n\t}\n}\n\nfunction needsRotate(filePath: string, incomingBytes: number, maxBytes: number): boolean {\n\ttry {\n\t\treturn statSync(filePath).size + incomingBytes > maxBytes;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction safeValueOf(value: unknown, seen: WeakSet<object>): unknown {\n\tif (value === undefined) return undefined;\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null)\n\t\treturn value;\n\tif (typeof value === \"bigint\") return value.toString();\n\tif (typeof value === \"symbol\" || typeof value === \"function\") return String(value);\n\tif (typeof value !== \"object\") return String(value);\n\tif (seen.has(value)) return \"[Circular]\";\n\tseen.add(value);\n\tif (Array.isArray(value)) return value.map((item) => safeValueOf(item, seen));\n\tconst out: Record<string, unknown> = {};\n\tfor (const [key, item] of Object.entries(value)) {\n\t\tif (ALLOWED_KEYS.has(key)) {\n\t\t\tconst safe = safeValueOf(item, seen);\n\t\t\tif (safe !== undefined) out[key] = safe;\n\t\t}\n\t}\n\treturn out;\n}\n"]}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/log.ts"],"names":[],"mappings":"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","sourcesContent":["import { closeSync, mkdirSync, openSync, renameSync, statSync, writeSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\nconst DEFAULT_MAX_BYTES = 5 * 1024 * 1024;\nconst ALLOWED_KEYS = new Set([\n\t\"origin\",\n\t\"reason\",\n\t\"route\",\n\t\"variant\",\n\t\"generation\",\n\t\"requestId\",\n\t\"tokens\",\n\t\"tokensBefore\",\n\t\"savedTokens\",\n\t\"savingsRatio\",\n\t\"contextWindow\",\n\t\"threshold\",\n\t\"remainingSec\",\n\t\"count\",\n\t\"durationMs\",\n]);\nconst DEBUG_PREFIX = \"[senpi-compaction]\";\nconst EVENTS = new Set([\n\t\"speculative_started\",\n\t\"speculative_applied\",\n\t\"speculative_stale\",\n\t\"speculative_invalidated\",\n\t\"blocking_started\",\n\t\"warm_consumed\",\n\t\"core_route_generated\",\n\t\"skip_cap\",\n\t\"skip_breaker\",\n\t\"threshold_trigger\",\n\t\"hard_limit_trigger\",\n\t\"emergency_prune\",\n\t\"ineffective_counted\",\n\t\"summary_failed\",\n]);\n\nexport type CompactionLoggerEvent =\n\t| \"speculative_started\"\n\t| \"speculative_applied\"\n\t| \"speculative_stale\"\n\t| \"speculative_invalidated\"\n\t| \"blocking_started\"\n\t| \"warm_consumed\"\n\t| \"core_route_generated\"\n\t| \"skip_cap\"\n\t| \"skip_breaker\"\n\t| \"threshold_trigger\"\n\t| \"hard_limit_trigger\"\n\t| \"emergency_prune\"\n\t| \"ineffective_counted\"\n\t| \"idle_trigger\"\n\t| \"summary_failed\";\n\nexport interface CompactionLoggerData {\n\torigin?: string;\n\treason?: string;\n\troute?: string;\n\tvariant?: string;\n\tgeneration?: number;\n\trequestId?: string;\n\ttokens?: number;\n\ttokensBefore?: number;\n\tsavedTokens?: number;\n\tsavingsRatio?: number;\n\tcontextWindow?: number;\n\tthreshold?: number;\n\tremainingSec?: number;\n\tcount?: number;\n\tdurationMs?: number;\n}\n\nexport interface CompactionLogger {\n\tdebug(event: CompactionLoggerEvent, data?: CompactionLoggerData): void;\n\tinfo(event: CompactionLoggerEvent, data?: CompactionLoggerData): void;\n}\n\nexport interface CompactionLoggerOptions {\n\tsink?: (line: string) => void;\n\tmirrorToStderr?: boolean;\n\tmaxBytes?: number;\n}\n\nexport function createCompactionLogger(\n\tagentDir: string | undefined,\n\toptions: CompactionLoggerOptions = {},\n): CompactionLogger {\n\tif (typeof agentDir !== \"string\" || agentDir.length === 0) {\n\t\treturn { debug: () => {}, info: () => {} };\n\t}\n\tconst filePath = join(agentDir, \"logs\", \"compaction.log\");\n\tconst maxBytes = validMaxBytes(options.maxBytes);\n\tlet reportedFailure = false;\n\n\tfunction log(level: \"debug\" | \"info\", event: CompactionLoggerEvent, data?: CompactionLoggerData): void {\n\t\ttry {\n\t\t\tif (!EVENTS.has(event)) return;\n\t\t\tconst line = formatLine(level, event, data);\n\t\t\twriteLine(filePath, line, maxBytes, options.sink);\n\t\t\tif (options.mirrorToStderr ?? process.env.SENPI_COMPACTION_DEBUG === \"1\") {\n\t\t\t\tconsole.error(DEBUG_PREFIX, line);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!reportedFailure) {\n\t\t\t\treportedFailure = true;\n\t\t\t\tconsole.error(\"Unable to write compaction log\", error);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tdebug: (event, data) => log(\"debug\", event, data),\n\t\tinfo: (event, data) => log(\"info\", event, data),\n\t};\n}\n\nfunction validMaxBytes(value: number | undefined): number {\n\treturn typeof value === \"number\" && Number.isFinite(value) && value > 0 ? Math.floor(value) : DEFAULT_MAX_BYTES;\n}\n\nfunction formatLine(level: \"debug\" | \"info\", event: CompactionLoggerEvent, data?: CompactionLoggerData): string {\n\tconst entry: Record<string, unknown> = { ts: new Date().toISOString(), level, event };\n\tif (data) {\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (!ALLOWED_KEYS.has(key)) continue;\n\t\t\tconst safeValue = safeValueOf(value, new WeakSet<object>());\n\t\t\tif (safeValue !== undefined) entry[key] = safeValue;\n\t\t}\n\t}\n\treturn JSON.stringify(entry);\n}\n\nfunction writeLine(filePath: string, line: string, maxBytes: number, sink?: (line: string) => void): void {\n\tconst text = `${line}\\n`;\n\tif (sink) sink(line);\n\tmkdirSync(dirname(filePath), { recursive: true, mode: 0o700 });\n\tif (needsRotate(filePath, Buffer.byteLength(text), maxBytes)) {\n\t\tconst rotated = `${filePath}.1`;\n\t\trenameSync(filePath, rotated);\n\t}\n\tconst fd = openSync(filePath, \"a\", 0o600);\n\ttry {\n\t\twriteSync(fd, text);\n\t} finally {\n\t\tcloseSync(fd);\n\t}\n}\n\nfunction needsRotate(filePath: string, incomingBytes: number, maxBytes: number): boolean {\n\ttry {\n\t\treturn statSync(filePath).size + incomingBytes > maxBytes;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction safeValueOf(value: unknown, seen: WeakSet<object>): unknown {\n\tif (value === undefined) return undefined;\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null)\n\t\treturn value;\n\tif (typeof value === \"bigint\") return value.toString();\n\tif (typeof value === \"symbol\" || typeof value === \"function\") return String(value);\n\tif (typeof value !== \"object\") return String(value);\n\tif (seen.has(value)) return \"[Circular]\";\n\tseen.add(value);\n\tif (Array.isArray(value)) return value.map((item) => safeValueOf(item, seen));\n\tconst out: Record<string, unknown> = {};\n\tfor (const [key, item] of Object.entries(value)) {\n\t\tif (ALLOWED_KEYS.has(key)) {\n\t\t\tconst safe = safeValueOf(item, seen);\n\t\t\tif (safe !== undefined) out[key] = safe;\n\t\t}\n\t}\n\treturn out;\n}\n"]}
@@ -49,6 +49,9 @@ type OpenAiRemoteCompactionContext = {
49
49
  ok: false;
50
50
  error: string;
51
51
  }>;
52
+ modelRuntime?: {
53
+ streamSimple: OpenAiResponsesStreamRunner;
54
+ };
52
55
  };
53
56
  serviceTier: ServiceTier | undefined;
54
57
  sessionManager: {
@@ -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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"}
@@ -308,6 +308,19 @@ async function runOpenAiCompactEndpointCompaction(options) {
308
308
  function isOpenAiCompactBody(value) {
309
309
  return (isRecord(value) && typeof value.model === "string" && Array.isArray(value.input) && value.input.every(isRecord));
310
310
  }
311
+ /**
312
+ * A provider registered through `pi.registerProvider()` owns its own transport for
313
+ * its api id and is absent from compat's builtin api-registry, so the remote route
314
+ * dispatches through the model runtime whenever it is reachable.
315
+ */
316
+ function resolveRemoteStreamRunner(ctx, dependencies) {
317
+ if (dependencies.streamRunner)
318
+ return dependencies.streamRunner;
319
+ const runtime = ctx.modelRegistry.modelRuntime;
320
+ if (runtime)
321
+ return (model, context, options) => runtime.streamSimple(model, context, options);
322
+ return (model, context, options) => streamSimple(model, context, options);
323
+ }
311
324
  export async function runOpenAiRemoteCompaction(ctx, event, emit, dependencies = {}) {
312
325
  const model = ctx.model;
313
326
  if (!isOpenAiRemoteCompactionModel(model) || event.reason === "branch") {
@@ -412,8 +425,7 @@ export async function runOpenAiRemoteCompaction(ctx, event, emit, dependencies =
412
425
  request,
413
426
  requestId: event.requestId,
414
427
  sessionId: ctx.sessionManager.getSessionId(),
415
- stream: dependencies.streamRunner ??
416
- ((streamModel, context, options) => streamSimple(streamModel, context, options)),
428
+ stream: resolveRemoteStreamRunner(ctx, dependencies),
417
429
  systemPrompt: ctx.getSystemPrompt(),
418
430
  timeoutMs: remoteTimeoutMs,
419
431
  });
@@ -452,8 +464,7 @@ export async function runOpenAiRemoteCompaction(ctx, event, emit, dependencies =
452
464
  now: dependencies.now ?? Date.now,
453
465
  request,
454
466
  signal,
455
- streamRunner: dependencies.streamRunner ??
456
- ((streamModel, context, options) => streamSimple(streamModel, context, options)),
467
+ streamRunner: resolveRemoteStreamRunner(ctx, dependencies),
457
468
  systemPrompt: ctx.getSystemPrompt(),
458
469
  headers: websocketHeaders,
459
470
  providerRequest,
@@ -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 {\n\ttype Api,\n\ttype AssistantMessage,\n\ttype Context,\n\ttype ContextProvenance,\n\tconvertResponsesMessages,\n\tgetContextProvenance,\n\ttype Model,\n\ttype ProviderHeaders,\n\ttype SimpleStreamOptions,\n} from \"@earendil-works/pi-ai\";\nimport { streamSimple } from \"@earendil-works/pi-ai/compat\";\nimport type { CompactionResult } from \"../../../compaction/index.ts\";\nimport { convertToLlm } from \"../../../messages.ts\";\nimport {\n\tbuildContextEntries,\n\tbuildSessionContext,\n\tgetSessionContextEntryId,\n\tSESSION_CONTEXT_ENTRY_ID,\n\ttype SessionEntry,\n\tsessionEntryToContextMessages,\n} from \"../../../session-manager.ts\";\nimport type { ProviderRequestPreparation, ServiceTier, SessionBeforeCompactEvent } from \"../../types.ts\";\nimport type {\n\tOpenAiCompactBody,\n\tOpenAiContextCompactionItem,\n\tOpenAiContextCompactionTriggerItem,\n\tOpenAiRemoteCompactionDetails,\n\tOpenAiRemoteInputItem,\n\tOpenAiRemoteTransport,\n} from \"./openai-remote-convert.ts\";\nimport {\n\tconvertBranchEntries,\n\tconvertPendingMessages,\n\tgetOpenAiRemoteCompactionDetails,\n\tisOpenAiContextCompactionItem,\n\tisOpenAiRemoteCompactionOutputItem,\n\tisRecord,\n\tisRetainedRemoteOutputItem,\n\tisRetainedResponsesStreamInputItem,\n\tOPENAI_REMOTE_COMPACTION_SCHEMA,\n\tproviderNativeItem,\n} from \"./openai-remote-convert.ts\";\nimport {\n\tcreateOpenAiRemoteCompactionHeaders,\n\tisOpenAiRemoteCompactionModel,\n\tmatchesOpenAiRemoteCompactionIdentity,\n\ttype OpenAiRemoteCompactionModel,\n\ttype OpenAiRemoteCompactionOrigin,\n\topenAiRemoteCompactionEndpointPath,\n\topenAiRemoteCompactionEndpointUrl,\n\topenAiRemoteCompactionIdentity,\n\topenAiRemoteCompactionOrigin,\n} from \"./openai-remote-model.ts\";\nimport {\n\tattemptOpenAiResponsesV2Compaction,\n\tsupportsOpenAiResponsesRemoteCompactionV2,\n\tsupportsOpenAiResponsesWebSocket,\n\twithRemoteCompactionV2Header,\n} from \"./openai-remote-responses-v2.ts\";\nimport { runWithRemoteTimeout } from \"./openai-remote-timeout.ts\";\n\nexport type {\n\tOpenAiRemoteCompactionDetails,\n\tOpenAiRemoteInputItem,\n} from \"./openai-remote-convert.ts\";\nexport { getOpenAiRemoteCompactionDetails, OPENAI_REMOTE_COMPACTION_SCHEMA } from \"./openai-remote-convert.ts\";\n\nexport const SENPI_COMPACTION_EVENT = \"senpi:compaction\";\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\nexport type 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\tbaseUrl?: string;\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\tprepareProviderRequest?(messages: AgentMessage[]): Promise<ProviderRequestPreparation>;\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\";\nconst INVALID_COMPACT_REQUEST_PAYLOAD_REASON = \"invalid-compact-request-payload\";\nconst MISSING_REMOTE_REPLAY_ORIGIN_REASON = \"missing-remote-replay-origin-provenance\";\nconst REMOTE_REPLAY_ORIGIN_MISMATCH_REASON = \"remote-replay-origin-mismatch\";\nconst UNPROVEN_REMOTE_REPLAY_BOUNDARY_REASON = \"unproven-remote-replay-boundary\";\nconst OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE = \"openai-remote-replay\";\nconst OPENAI_RESPONSES_TOOL_CALL_PROVIDERS = new Set([\"openai\", \"openai-codex\", \"opencode\"]);\n\nexport function createOpenAiRemoteCompactionRequest(options: {\n\tmodel: Model<Api> | undefined;\n\tsystemPrompt: string;\n\tbranchEntries: SessionEntry[];\n\tmessages?: AgentMessage[];\n\ttokensBefore: number;\n\tpromptCacheKey?: string;\n\tserviceTier?: ServiceTier;\n}): OpenAiRemoteCompactionRequest | undefined {\n\tif (!isOpenAiRemoteCompactionModel(options.model)) return undefined;\n\tconst input = options.messages\n\t\t? convertPendingMessages(options.messages, options.model)\n\t\t: convertBranchEntries(options.branchEntries, options.model);\n\tif (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 parseOpenAiCompactedResponse(options: {\n\tvalue: unknown;\n\tmodel: OpenAiRemoteCompactionModel;\n\trequestId: string;\n\tnow: () => number;\n}): OpenAiCompactedResponse | undefined {\n\tif (!isRecord(options.value) || !Array.isArray(options.value.output)) return undefined;\n\tif (options.model.api === \"openai-responses\") {\n\t\tif (\n\t\t\toptions.value.object !== \"response.compaction\" ||\n\t\t\ttypeof options.value.id !== \"string\" ||\n\t\t\ttypeof options.value.created_at !== \"number\"\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn {\n\t\tid: typeof options.value.id === \"string\" ? options.value.id : `codex-compact:${options.requestId}`,\n\t\tcreated_at:\n\t\t\ttypeof options.value.created_at === \"number\" ? options.value.created_at : Math.floor(options.now() / 1000),\n\t\tobject: \"response.compaction\",\n\t\toutput: options.value.output.filter((item): item is OpenAiRemoteInputItem => isRecord(item)),\n\t\t...(isRecord(options.value.usage) ? { usage: options.value.usage } : {}),\n\t};\n}\n\nexport function buildOpenAiRemoteCompactionResult(options: {\n\tmodel: OpenAiRemoteCompactionModel;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\trequestInputItemCount: number;\n\tresponse: OpenAiCompactedResponse;\n\torigin?: OpenAiRemoteCompactionOrigin;\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\t...openAiRemoteCompactionIdentity(options.model),\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.origin ? { origin: options.origin } : {}),\n\t\t...(options.response.usage ? { usage: options.response.usage } : {}),\n\t} satisfies OpenAiRemoteCompactionDetails;\n\tconst endpointPath =\n\t\toptions.model.api === \"openai-codex-responses\"\n\t\t\t? `/${openAiRemoteCompactionEndpointPath(options.model)}`\n\t\t\t: \"/v1/responses/compact\";\n\n\treturn {\n\t\tsummary: [\n\t\t\t\"OpenAI remote compaction checkpoint.\",\n\t\t\t`Native ${endpointPath} 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 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\torigin?: OpenAiRemoteCompactionOrigin;\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\t...(options.origin ? { origin: options.origin } : {}),\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\theaders?: ProviderHeaders;\n\tproviderRequest?: ProviderRequestPreparation;\n\torigin: OpenAiRemoteCompactionOrigin;\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.headers ?? options.auth.headers,\n\t\t\tonPayload: async (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\tconst transformedPayload = options.providerRequest\n\t\t\t\t\t? await options.providerRequest.transformPayload(rewritten)\n\t\t\t\t\t: rewritten;\n\t\t\t\tif (!isOpenAiCompactBody(transformedPayload)) {\n\t\t\t\t\tthrow new Error(INVALID_COMPACT_REQUEST_PAYLOAD_REASON);\n\t\t\t\t}\n\t\t\t\treturn transformedPayload;\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\torigin: options.origin,\n\t});\n}\n\nasync function runOpenAiCompactEndpointCompaction(options: {\n\tfetchImpl: typeof fetch;\n\theaders: Headers;\n\tmodel: OpenAiRemoteCompactionModel;\n\trequest: OpenAiRemoteCompactionRequest;\n\trequestId: string;\n\tsignal: AbortSignal;\n\tfirstKeptEntryId: string;\n\tnow: () => number;\n\temit?: EmitCompactionEvent;\n\torigin: OpenAiRemoteCompactionOrigin;\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(openAiRemoteCompactionEndpointUrl(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\tconst compactedResponse = parseOpenAiCompactedResponse({\n\t\tvalue: payload,\n\t\tmodel: options.model,\n\t\trequestId: options.requestId,\n\t\tnow: options.now,\n\t});\n\tif (!compactedResponse) {\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: compactedResponse,\n\t\t\torigin: options.origin,\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: compactedResponse.id,\n\t\tretainedInputItemCount: result.details.retainedInputItemCount,\n\t\ttransport: \"compact-endpoint\",\n\t});\n\treturn result;\n}\n\nfunction isOpenAiCompactBody(value: unknown): value is OpenAiCompactBody {\n\treturn (\n\t\tisRecord(value) && typeof value.model === \"string\" && Array.isArray(value.input) && value.input.every(isRecord)\n\t);\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 (!isOpenAiRemoteCompactionModel(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: OpenAiRemoteCompactionModel =\n\t\tauth.upstreamModelId || auth.baseUrl\n\t\t\t? {\n\t\t\t\t\t...model,\n\t\t\t\t\t...(auth.upstreamModelId ? { id: auth.upstreamModelId } : {}),\n\t\t\t\t\t...(auth.baseUrl ? { baseUrl: auth.baseUrl } : {}),\n\t\t\t\t}\n\t\t\t: model;\n\tconst serviceTier = ctx.serviceTier ?? auth.serviceTier;\n\tconst providerRequest = await ctx.prepareProviderRequest?.(buildSessionContext(event.branchEntries).messages);\n\tconst request = createOpenAiRemoteCompactionRequest({\n\t\tmodel: requestModel,\n\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\tbranchEntries: event.branchEntries,\n\t\tmessages: providerRequest?.messages,\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: \"empty-compaction-input\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst remoteTimeoutMs = dependencies.remoteTimeoutMs ?? OPENAI_REMOTE_COMPACTION_TIMEOUT_MS;\n\t// Normal provider requests transform configured headers before the Codex\n\t// transport applies its canonical auth/account fields. Mirror that ordering\n\t// so extension routing choices are retained but cannot impersonate another\n\t// OAuth account on either the wire or persisted provenance.\n\tconst transformedHeaders = providerRequest\n\t\t? await providerRequest.transformHeaders(auth.headers ?? {})\n\t\t: auth.headers;\n\tconst requestHeaders = createOpenAiRemoteCompactionHeaders(\n\t\trequestModel,\n\t\t{ ...auth, headers: transformedHeaders },\n\t\trequest.body.prompt_cache_key,\n\t);\n\tif (!requestHeaders) {\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\tconst origin = openAiRemoteCompactionOrigin(requestModel, requestHeaders);\n\tif (!origin) {\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: requestModel.id,\n\t\t\treason: MISSING_REMOTE_REPLAY_ORIGIN_REASON,\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tif (requestModel.api === \"openai-responses\") {\n\t\tconst responsesModel = requestModel as Model<\"openai-responses\">;\n\t\tif (supportsOpenAiResponsesRemoteCompactionV2(responsesModel)) {\n\t\t\tconst responseHeaders = withRemoteCompactionV2Header(Object.fromEntries(requestHeaders.entries()));\n\t\t\tconst responseOrigin = openAiRemoteCompactionOrigin(responsesModel, responseHeaders);\n\t\t\tif (!responseOrigin) return undefined;\n\t\t\tconst result = await attemptOpenAiResponsesV2Compaction({\n\t\t\t\tauth,\n\t\t\t\temit,\n\t\t\t\tevent,\n\t\t\t\theaders: responseHeaders,\n\t\t\t\tmodel: responsesModel,\n\t\t\t\torigin: responseOrigin,\n\t\t\t\tproviderRequest,\n\t\t\t\trequest,\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\t\t\tstream:\n\t\t\t\t\tdependencies.streamRunner ??\n\t\t\t\t\t((streamModel, context, options) => streamSimple(streamModel, context, options)),\n\t\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\t\ttimeoutMs: remoteTimeoutMs,\n\t\t\t});\n\t\t\tif (result) return result;\n\t\t}\n\t}\n\n\tif (supportsOpenAiResponsesWebSocket(requestModel)) {\n\t\tconst websocketHeaders = Object.fromEntries(requestHeaders.entries());\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\theaders: websocketHeaders,\n\t\t\t\t\t\tproviderRequest,\n\t\t\t\t\t\torigin,\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 transformedPayload = providerRequest ? await providerRequest.transformPayload(request.body) : request.body;\n\tif (!isOpenAiCompactBody(transformedPayload)) {\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: requestModel.id,\n\t\t\treason: INVALID_COMPACT_REQUEST_PAYLOAD_REASON,\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst transformedRequest = { ...request, body: transformedPayload };\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: requestHeaders,\n\t\t\t\tmodel: requestModel,\n\t\t\t\trequest: transformedRequest,\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tsignal,\n\t\t\t\tfirstKeptEntryId: event.preparation.firstKeptEntryId,\n\t\t\t\tnow: dependencies.now ?? Date.now,\n\t\t\t\temit,\n\t\t\t\torigin,\n\t\t\t}),\n\t});\n}\n\nfunction latestRemoteCompaction(\n\tentries: SessionEntry[],\n): { entryId: string; index: number; firstKeptEntryId: string; 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, firstKeptEntryId: entry.firstKeptEntryId, details };\n\t\treturn undefined;\n\t}\n\treturn undefined;\n}\n\ntype OpenAiRemoteReplayBoundary = ContextProvenance & {\n\tscope: typeof OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE;\n\tcompactionEntryId: string;\n\tordinal: number;\n\texpectedOrdinals: number[];\n\tintegrity?: string;\n};\n\ntype RemoteCompactionCheckpoint = {\n\tentryId: string;\n\tindex: number;\n\tfirstKeptEntryId: string;\n\tdetails: OpenAiRemoteCompactionDetails;\n};\n\nfunction checkpointContextEntries(entries: SessionEntry[], remote: RemoteCompactionCheckpoint): SessionEntry[] {\n\tconst checkpointEntryIds = new Set(entries.slice(0, remote.index + 1).map((entry) => entry.id));\n\treturn buildContextEntries(entries).filter((entry) => checkpointEntryIds.has(entry.id));\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\nfunction replayBoundaryConversionOptions(model: Model<Api>): {\n\tincludeSystemPrompt?: boolean;\n\tpreserveTextSignatures?: boolean;\n} {\n\treturn model.api === \"openai-codex-responses\" ? { includeSystemPrompt: false, preserveTextSignatures: true } : {};\n}\n\nfunction isRemoteReplayBoundary(value: unknown): value is OpenAiRemoteReplayBoundary {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst boundary = value as Record<string, unknown>;\n\treturn (\n\t\tboundary.scope === OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE &&\n\t\ttypeof boundary.compactionEntryId === \"string\" &&\n\t\ttypeof boundary.ordinal === \"number\" &&\n\t\tArray.isArray(boundary.expectedOrdinals) &&\n\t\tboundary.expectedOrdinals.every((ordinal) => typeof ordinal === \"number\") &&\n\t\ttypeof boundary.integrity === \"string\"\n\t);\n}\n\nfunction replayBoundaryForInputItem(value: unknown): OpenAiRemoteReplayBoundary | undefined {\n\tconst provenance = getContextProvenance(value);\n\treturn isRemoteReplayBoundary(provenance) ? provenance : undefined;\n}\n\nfunction sameOrdinals(left: readonly number[], right: readonly number[]): boolean {\n\treturn left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction emitReplayFallback(\n\temit: EmitCompactionEvent | undefined,\n\tremote: RemoteCompactionCheckpoint,\n\tmodelId: string,\n\treason: string,\n): void {\n\temit?.({\n\t\tversion: 1,\n\t\taction: \"remote_fallback\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\trequestId: `replay:${remote.entryId}`,\n\t\tmodelId,\n\t\treason,\n\t});\n}\n\nfunction matchingReplayOrigin(\n\tpersisted: OpenAiRemoteCompactionOrigin | undefined,\n\tcurrent: OpenAiRemoteCompactionOrigin | undefined,\n): boolean {\n\treturn (\n\t\tpersisted !== undefined &&\n\t\tcurrent !== undefined &&\n\t\tpersisted.endpoint === current.endpoint &&\n\t\tpersisted.trustDomain === current.trustDomain &&\n\t\tpersisted.authTenantFingerprint === current.authTenantFingerprint\n\t);\n}\n\n/**\n * Mark the exact checkpoint-owned messages before later context hooks run.\n * The markers carry entry identity, not payload values; the Responses converter\n * transports them as non-enumerable request-local metadata for final validation.\n */\nexport function markOpenAiRemoteReplayBoundary(\n\tmessages: AgentMessage[],\n\toptions: { model: Model<Api> | undefined; branchEntries: SessionEntry[] },\n): AgentMessage[] {\n\tif (!isOpenAiRemoteCompactionModel(options.model)) return messages;\n\tconst remote = latestRemoteCompaction(options.branchEntries);\n\tif (!remote?.details.origin || !matchesOpenAiRemoteCompactionIdentity(options.model, remote.details)) {\n\t\treturn messages;\n\t}\n\tconst entryIds = checkpointContextEntries(options.branchEntries, remote)\n\t\t.filter((entry) => sessionEntryToContextMessages(entry).length > 0)\n\t\t.map((entry) => entry.id);\n\tif (\n\t\tentryIds.length === 0 ||\n\t\tmessages.length < entryIds.length ||\n\t\t!entryIds.every((entryId, index) => {\n\t\t\tconst message = messages[index] as AgentMessage & { [SESSION_CONTEXT_ENTRY_ID]?: unknown };\n\t\t\treturn message?.[SESSION_CONTEXT_ENTRY_ID] === entryId || getSessionContextEntryId(message) === entryId;\n\t\t})\n\t) {\n\t\treturn messages;\n\t}\n\n\tconst expectedOrdinals: number[] = [];\n\tconst marked = messages.map((message, index) => {\n\t\tif (index >= entryIds.length) return message;\n\t\tconst boundary: OpenAiRemoteReplayBoundary = {\n\t\t\tscope: OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE,\n\t\t\tcompactionEntryId: remote.entryId,\n\t\t\tordinal: index,\n\t\t\texpectedOrdinals,\n\t\t};\n\t\treturn Object.assign({}, message, { __piContextProvenance: boundary }) as AgentMessage;\n\t});\n\tconst baseline = convertResponsesMessages(\n\t\toptions.model,\n\t\t{ messages: convertToLlm(marked) },\n\t\tOPENAI_RESPONSES_TOOL_CALL_PROVIDERS,\n\t\t{ ...replayBoundaryConversionOptions(options.model), sealContextProvenance: true },\n\t);\n\tfor (const item of baseline) {\n\t\tconst boundary = replayBoundaryForInputItem(item);\n\t\tif (boundary?.compactionEntryId === remote.entryId) expectedOrdinals.push(boundary.ordinal);\n\t}\n\treturn expectedOrdinals.length > 0 ? marked : messages;\n}\n\nexport function rewriteOpenAiPayloadWithRemoteCompaction(\n\tpayload: unknown,\n\toptions: {\n\t\tmodel: Model<Api> | undefined;\n\t\tbranchEntries: SessionEntry[];\n\t\torigin?: OpenAiRemoteCompactionOrigin;\n\t},\n\temit?: EmitCompactionEvent,\n): unknown | undefined {\n\tif (!isOpenAiRemoteCompactionModel(options.model) || !isRecord(payload)) {\n\t\treturn undefined;\n\t}\n\tconst payloadInput = payload.input;\n\tif (!Array.isArray(payloadInput)) return undefined;\n\tconst remote = latestRemoteCompaction(options.branchEntries);\n\tif (!remote) return undefined;\n\tif (!matchesOpenAiRemoteCompactionIdentity(options.model, remote.details)) {\n\t\temitReplayFallback(emit, remote, options.model.id, \"remote-replay-identity-mismatch\");\n\t\treturn undefined;\n\t}\n\tif (!remote.details.origin || !options.origin) {\n\t\temitReplayFallback(emit, remote, options.model.id, MISSING_REMOTE_REPLAY_ORIGIN_REASON);\n\t\treturn undefined;\n\t}\n\tif (!matchingReplayOrigin(remote.details.origin, options.origin)) {\n\t\temitReplayFallback(emit, remote, options.model.id, REMOTE_REPLAY_ORIGIN_MISMATCH_REASON);\n\t\treturn undefined;\n\t}\n\n\tconst checkpointStart = leadingPromptMessages(payloadInput).length;\n\tconst allBoundaries = payloadInput\n\t\t.map(replayBoundaryForInputItem)\n\t\t.filter((boundary): boundary is OpenAiRemoteReplayBoundary => boundary?.compactionEntryId === remote.entryId);\n\tconst expectedOrdinals = allBoundaries[0]?.expectedOrdinals;\n\tif (\n\t\t!expectedOrdinals ||\n\t\texpectedOrdinals.length === 0 ||\n\t\tallBoundaries.length !== expectedOrdinals.length ||\n\t\tpayloadInput.length < checkpointStart + expectedOrdinals.length ||\n\t\t!allBoundaries.every(\n\t\t\t(boundary, index) =>\n\t\t\t\tsameOrdinals(boundary.expectedOrdinals, expectedOrdinals) && boundary.ordinal === expectedOrdinals[index],\n\t\t) ||\n\t\t!expectedOrdinals.every((ordinal: number, index: number) => {\n\t\t\tconst boundary = replayBoundaryForInputItem(payloadInput[checkpointStart + index]);\n\t\t\treturn (\n\t\t\t\tboundary?.compactionEntryId === remote.entryId &&\n\t\t\t\tboundary.ordinal === ordinal &&\n\t\t\t\tsameOrdinals(boundary.expectedOrdinals, expectedOrdinals)\n\t\t\t);\n\t\t})\n\t) {\n\t\temitReplayFallback(emit, remote, options.model.id, UNPROVEN_REMOTE_REPLAY_BOUNDARY_REASON);\n\t\treturn undefined;\n\t}\n\n\tconst input = [\n\t\t...payloadInput.slice(0, checkpointStart).filter(isRecord),\n\t\t...remote.details.replacementInput,\n\t\t...payloadInput.slice(checkpointStart + expectedOrdinals.length).filter(isRecord),\n\t];\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 {\n\ttype Api,\n\ttype AssistantMessage,\n\ttype Context,\n\ttype ContextProvenance,\n\tconvertResponsesMessages,\n\tgetContextProvenance,\n\ttype Model,\n\ttype ProviderHeaders,\n\ttype SimpleStreamOptions,\n} from \"@earendil-works/pi-ai\";\nimport { streamSimple } from \"@earendil-works/pi-ai/compat\";\nimport type { CompactionResult } from \"../../../compaction/index.ts\";\nimport { convertToLlm } from \"../../../messages.ts\";\nimport {\n\tbuildContextEntries,\n\tbuildSessionContext,\n\tgetSessionContextEntryId,\n\tSESSION_CONTEXT_ENTRY_ID,\n\ttype SessionEntry,\n\tsessionEntryToContextMessages,\n} from \"../../../session-manager.ts\";\nimport type { ProviderRequestPreparation, ServiceTier, SessionBeforeCompactEvent } from \"../../types.ts\";\nimport type {\n\tOpenAiCompactBody,\n\tOpenAiContextCompactionItem,\n\tOpenAiContextCompactionTriggerItem,\n\tOpenAiRemoteCompactionDetails,\n\tOpenAiRemoteInputItem,\n\tOpenAiRemoteTransport,\n} from \"./openai-remote-convert.ts\";\nimport {\n\tconvertBranchEntries,\n\tconvertPendingMessages,\n\tgetOpenAiRemoteCompactionDetails,\n\tisOpenAiContextCompactionItem,\n\tisOpenAiRemoteCompactionOutputItem,\n\tisRecord,\n\tisRetainedRemoteOutputItem,\n\tisRetainedResponsesStreamInputItem,\n\tOPENAI_REMOTE_COMPACTION_SCHEMA,\n\tproviderNativeItem,\n} from \"./openai-remote-convert.ts\";\nimport {\n\tcreateOpenAiRemoteCompactionHeaders,\n\tisOpenAiRemoteCompactionModel,\n\tmatchesOpenAiRemoteCompactionIdentity,\n\ttype OpenAiRemoteCompactionModel,\n\ttype OpenAiRemoteCompactionOrigin,\n\topenAiRemoteCompactionEndpointPath,\n\topenAiRemoteCompactionEndpointUrl,\n\topenAiRemoteCompactionIdentity,\n\topenAiRemoteCompactionOrigin,\n} from \"./openai-remote-model.ts\";\nimport {\n\tattemptOpenAiResponsesV2Compaction,\n\tsupportsOpenAiResponsesRemoteCompactionV2,\n\tsupportsOpenAiResponsesWebSocket,\n\twithRemoteCompactionV2Header,\n} from \"./openai-remote-responses-v2.ts\";\nimport { runWithRemoteTimeout } from \"./openai-remote-timeout.ts\";\n\nexport type {\n\tOpenAiRemoteCompactionDetails,\n\tOpenAiRemoteInputItem,\n} from \"./openai-remote-convert.ts\";\nexport { getOpenAiRemoteCompactionDetails, OPENAI_REMOTE_COMPACTION_SCHEMA } from \"./openai-remote-convert.ts\";\n\nexport const SENPI_COMPACTION_EVENT = \"senpi:compaction\";\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\nexport type 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\tbaseUrl?: string;\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\tmodelRuntime?: { streamSimple: OpenAiResponsesStreamRunner };\n\t};\n\tserviceTier: ServiceTier | undefined;\n\tsessionManager: {\n\t\tgetSessionId(): string;\n\t};\n\tprepareProviderRequest?(messages: AgentMessage[]): Promise<ProviderRequestPreparation>;\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\";\nconst INVALID_COMPACT_REQUEST_PAYLOAD_REASON = \"invalid-compact-request-payload\";\nconst MISSING_REMOTE_REPLAY_ORIGIN_REASON = \"missing-remote-replay-origin-provenance\";\nconst REMOTE_REPLAY_ORIGIN_MISMATCH_REASON = \"remote-replay-origin-mismatch\";\nconst UNPROVEN_REMOTE_REPLAY_BOUNDARY_REASON = \"unproven-remote-replay-boundary\";\nconst OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE = \"openai-remote-replay\";\nconst OPENAI_RESPONSES_TOOL_CALL_PROVIDERS = new Set([\"openai\", \"openai-codex\", \"opencode\"]);\n\nexport function createOpenAiRemoteCompactionRequest(options: {\n\tmodel: Model<Api> | undefined;\n\tsystemPrompt: string;\n\tbranchEntries: SessionEntry[];\n\tmessages?: AgentMessage[];\n\ttokensBefore: number;\n\tpromptCacheKey?: string;\n\tserviceTier?: ServiceTier;\n}): OpenAiRemoteCompactionRequest | undefined {\n\tif (!isOpenAiRemoteCompactionModel(options.model)) return undefined;\n\tconst input = options.messages\n\t\t? convertPendingMessages(options.messages, options.model)\n\t\t: convertBranchEntries(options.branchEntries, options.model);\n\tif (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 parseOpenAiCompactedResponse(options: {\n\tvalue: unknown;\n\tmodel: OpenAiRemoteCompactionModel;\n\trequestId: string;\n\tnow: () => number;\n}): OpenAiCompactedResponse | undefined {\n\tif (!isRecord(options.value) || !Array.isArray(options.value.output)) return undefined;\n\tif (options.model.api === \"openai-responses\") {\n\t\tif (\n\t\t\toptions.value.object !== \"response.compaction\" ||\n\t\t\ttypeof options.value.id !== \"string\" ||\n\t\t\ttypeof options.value.created_at !== \"number\"\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn {\n\t\tid: typeof options.value.id === \"string\" ? options.value.id : `codex-compact:${options.requestId}`,\n\t\tcreated_at:\n\t\t\ttypeof options.value.created_at === \"number\" ? options.value.created_at : Math.floor(options.now() / 1000),\n\t\tobject: \"response.compaction\",\n\t\toutput: options.value.output.filter((item): item is OpenAiRemoteInputItem => isRecord(item)),\n\t\t...(isRecord(options.value.usage) ? { usage: options.value.usage } : {}),\n\t};\n}\n\nexport function buildOpenAiRemoteCompactionResult(options: {\n\tmodel: OpenAiRemoteCompactionModel;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\trequestInputItemCount: number;\n\tresponse: OpenAiCompactedResponse;\n\torigin?: OpenAiRemoteCompactionOrigin;\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\t...openAiRemoteCompactionIdentity(options.model),\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.origin ? { origin: options.origin } : {}),\n\t\t...(options.response.usage ? { usage: options.response.usage } : {}),\n\t} satisfies OpenAiRemoteCompactionDetails;\n\tconst endpointPath =\n\t\toptions.model.api === \"openai-codex-responses\"\n\t\t\t? `/${openAiRemoteCompactionEndpointPath(options.model)}`\n\t\t\t: \"/v1/responses/compact\";\n\n\treturn {\n\t\tsummary: [\n\t\t\t\"OpenAI remote compaction checkpoint.\",\n\t\t\t`Native ${endpointPath} 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 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\torigin?: OpenAiRemoteCompactionOrigin;\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\t...(options.origin ? { origin: options.origin } : {}),\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\theaders?: ProviderHeaders;\n\tproviderRequest?: ProviderRequestPreparation;\n\torigin: OpenAiRemoteCompactionOrigin;\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.headers ?? options.auth.headers,\n\t\t\tonPayload: async (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\tconst transformedPayload = options.providerRequest\n\t\t\t\t\t? await options.providerRequest.transformPayload(rewritten)\n\t\t\t\t\t: rewritten;\n\t\t\t\tif (!isOpenAiCompactBody(transformedPayload)) {\n\t\t\t\t\tthrow new Error(INVALID_COMPACT_REQUEST_PAYLOAD_REASON);\n\t\t\t\t}\n\t\t\t\treturn transformedPayload;\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\torigin: options.origin,\n\t});\n}\n\nasync function runOpenAiCompactEndpointCompaction(options: {\n\tfetchImpl: typeof fetch;\n\theaders: Headers;\n\tmodel: OpenAiRemoteCompactionModel;\n\trequest: OpenAiRemoteCompactionRequest;\n\trequestId: string;\n\tsignal: AbortSignal;\n\tfirstKeptEntryId: string;\n\tnow: () => number;\n\temit?: EmitCompactionEvent;\n\torigin: OpenAiRemoteCompactionOrigin;\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(openAiRemoteCompactionEndpointUrl(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\tconst compactedResponse = parseOpenAiCompactedResponse({\n\t\tvalue: payload,\n\t\tmodel: options.model,\n\t\trequestId: options.requestId,\n\t\tnow: options.now,\n\t});\n\tif (!compactedResponse) {\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: compactedResponse,\n\t\t\torigin: options.origin,\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: compactedResponse.id,\n\t\tretainedInputItemCount: result.details.retainedInputItemCount,\n\t\ttransport: \"compact-endpoint\",\n\t});\n\treturn result;\n}\n\nfunction isOpenAiCompactBody(value: unknown): value is OpenAiCompactBody {\n\treturn (\n\t\tisRecord(value) && typeof value.model === \"string\" && Array.isArray(value.input) && value.input.every(isRecord)\n\t);\n}\n\n/**\n * A provider registered through `pi.registerProvider()` owns its own transport for\n * its api id and is absent from compat's builtin api-registry, so the remote route\n * dispatches through the model runtime whenever it is reachable.\n */\nfunction resolveRemoteStreamRunner(\n\tctx: OpenAiRemoteCompactionContext,\n\tdependencies: OpenAiRemoteCompactionDependencies,\n): OpenAiResponsesStreamRunner {\n\tif (dependencies.streamRunner) return dependencies.streamRunner;\n\tconst runtime = ctx.modelRegistry.modelRuntime;\n\tif (runtime) return (model, context, options) => runtime.streamSimple(model, context, options);\n\treturn (model, context, options) => streamSimple(model, context, options);\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 (!isOpenAiRemoteCompactionModel(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: OpenAiRemoteCompactionModel =\n\t\tauth.upstreamModelId || auth.baseUrl\n\t\t\t? {\n\t\t\t\t\t...model,\n\t\t\t\t\t...(auth.upstreamModelId ? { id: auth.upstreamModelId } : {}),\n\t\t\t\t\t...(auth.baseUrl ? { baseUrl: auth.baseUrl } : {}),\n\t\t\t\t}\n\t\t\t: model;\n\tconst serviceTier = ctx.serviceTier ?? auth.serviceTier;\n\tconst providerRequest = await ctx.prepareProviderRequest?.(buildSessionContext(event.branchEntries).messages);\n\tconst request = createOpenAiRemoteCompactionRequest({\n\t\tmodel: requestModel,\n\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\tbranchEntries: event.branchEntries,\n\t\tmessages: providerRequest?.messages,\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: \"empty-compaction-input\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst remoteTimeoutMs = dependencies.remoteTimeoutMs ?? OPENAI_REMOTE_COMPACTION_TIMEOUT_MS;\n\t// Normal provider requests transform configured headers before the Codex\n\t// transport applies its canonical auth/account fields. Mirror that ordering\n\t// so extension routing choices are retained but cannot impersonate another\n\t// OAuth account on either the wire or persisted provenance.\n\tconst transformedHeaders = providerRequest\n\t\t? await providerRequest.transformHeaders(auth.headers ?? {})\n\t\t: auth.headers;\n\tconst requestHeaders = createOpenAiRemoteCompactionHeaders(\n\t\trequestModel,\n\t\t{ ...auth, headers: transformedHeaders },\n\t\trequest.body.prompt_cache_key,\n\t);\n\tif (!requestHeaders) {\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\tconst origin = openAiRemoteCompactionOrigin(requestModel, requestHeaders);\n\tif (!origin) {\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: requestModel.id,\n\t\t\treason: MISSING_REMOTE_REPLAY_ORIGIN_REASON,\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tif (requestModel.api === \"openai-responses\") {\n\t\tconst responsesModel = requestModel as Model<\"openai-responses\">;\n\t\tif (supportsOpenAiResponsesRemoteCompactionV2(responsesModel)) {\n\t\t\tconst responseHeaders = withRemoteCompactionV2Header(Object.fromEntries(requestHeaders.entries()));\n\t\t\tconst responseOrigin = openAiRemoteCompactionOrigin(responsesModel, responseHeaders);\n\t\t\tif (!responseOrigin) return undefined;\n\t\t\tconst result = await attemptOpenAiResponsesV2Compaction({\n\t\t\t\tauth,\n\t\t\t\temit,\n\t\t\t\tevent,\n\t\t\t\theaders: responseHeaders,\n\t\t\t\tmodel: responsesModel,\n\t\t\t\torigin: responseOrigin,\n\t\t\t\tproviderRequest,\n\t\t\t\trequest,\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\t\t\tstream: resolveRemoteStreamRunner(ctx, dependencies),\n\t\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\t\ttimeoutMs: remoteTimeoutMs,\n\t\t\t});\n\t\t\tif (result) return result;\n\t\t}\n\t}\n\n\tif (supportsOpenAiResponsesWebSocket(requestModel)) {\n\t\tconst websocketHeaders = Object.fromEntries(requestHeaders.entries());\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: resolveRemoteStreamRunner(ctx, dependencies),\n\t\t\t\t\t\tsystemPrompt: ctx.getSystemPrompt(),\n\t\t\t\t\t\theaders: websocketHeaders,\n\t\t\t\t\t\tproviderRequest,\n\t\t\t\t\t\torigin,\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 transformedPayload = providerRequest ? await providerRequest.transformPayload(request.body) : request.body;\n\tif (!isOpenAiCompactBody(transformedPayload)) {\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: requestModel.id,\n\t\t\treason: INVALID_COMPACT_REQUEST_PAYLOAD_REASON,\n\t\t\ttransport: \"compact-endpoint\",\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst transformedRequest = { ...request, body: transformedPayload };\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: requestHeaders,\n\t\t\t\tmodel: requestModel,\n\t\t\t\trequest: transformedRequest,\n\t\t\t\trequestId: event.requestId,\n\t\t\t\tsignal,\n\t\t\t\tfirstKeptEntryId: event.preparation.firstKeptEntryId,\n\t\t\t\tnow: dependencies.now ?? Date.now,\n\t\t\t\temit,\n\t\t\t\torigin,\n\t\t\t}),\n\t});\n}\n\nfunction latestRemoteCompaction(\n\tentries: SessionEntry[],\n): { entryId: string; index: number; firstKeptEntryId: string; 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, firstKeptEntryId: entry.firstKeptEntryId, details };\n\t\treturn undefined;\n\t}\n\treturn undefined;\n}\n\ntype OpenAiRemoteReplayBoundary = ContextProvenance & {\n\tscope: typeof OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE;\n\tcompactionEntryId: string;\n\tordinal: number;\n\texpectedOrdinals: number[];\n\tintegrity?: string;\n};\n\ntype RemoteCompactionCheckpoint = {\n\tentryId: string;\n\tindex: number;\n\tfirstKeptEntryId: string;\n\tdetails: OpenAiRemoteCompactionDetails;\n};\n\nfunction checkpointContextEntries(entries: SessionEntry[], remote: RemoteCompactionCheckpoint): SessionEntry[] {\n\tconst checkpointEntryIds = new Set(entries.slice(0, remote.index + 1).map((entry) => entry.id));\n\treturn buildContextEntries(entries).filter((entry) => checkpointEntryIds.has(entry.id));\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\nfunction replayBoundaryConversionOptions(model: Model<Api>): {\n\tincludeSystemPrompt?: boolean;\n\tpreserveTextSignatures?: boolean;\n} {\n\treturn model.api === \"openai-codex-responses\" ? { includeSystemPrompt: false, preserveTextSignatures: true } : {};\n}\n\nfunction isRemoteReplayBoundary(value: unknown): value is OpenAiRemoteReplayBoundary {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst boundary = value as Record<string, unknown>;\n\treturn (\n\t\tboundary.scope === OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE &&\n\t\ttypeof boundary.compactionEntryId === \"string\" &&\n\t\ttypeof boundary.ordinal === \"number\" &&\n\t\tArray.isArray(boundary.expectedOrdinals) &&\n\t\tboundary.expectedOrdinals.every((ordinal) => typeof ordinal === \"number\") &&\n\t\ttypeof boundary.integrity === \"string\"\n\t);\n}\n\nfunction replayBoundaryForInputItem(value: unknown): OpenAiRemoteReplayBoundary | undefined {\n\tconst provenance = getContextProvenance(value);\n\treturn isRemoteReplayBoundary(provenance) ? provenance : undefined;\n}\n\nfunction sameOrdinals(left: readonly number[], right: readonly number[]): boolean {\n\treturn left.length === right.length && left.every((value, index) => value === right[index]);\n}\n\nfunction emitReplayFallback(\n\temit: EmitCompactionEvent | undefined,\n\tremote: RemoteCompactionCheckpoint,\n\tmodelId: string,\n\treason: string,\n): void {\n\temit?.({\n\t\tversion: 1,\n\t\taction: \"remote_fallback\",\n\t\troute: \"builtin.compaction.openai_remote\",\n\t\trequestId: `replay:${remote.entryId}`,\n\t\tmodelId,\n\t\treason,\n\t});\n}\n\nfunction matchingReplayOrigin(\n\tpersisted: OpenAiRemoteCompactionOrigin | undefined,\n\tcurrent: OpenAiRemoteCompactionOrigin | undefined,\n): boolean {\n\treturn (\n\t\tpersisted !== undefined &&\n\t\tcurrent !== undefined &&\n\t\tpersisted.endpoint === current.endpoint &&\n\t\tpersisted.trustDomain === current.trustDomain &&\n\t\tpersisted.authTenantFingerprint === current.authTenantFingerprint\n\t);\n}\n\n/**\n * Mark the exact checkpoint-owned messages before later context hooks run.\n * The markers carry entry identity, not payload values; the Responses converter\n * transports them as non-enumerable request-local metadata for final validation.\n */\nexport function markOpenAiRemoteReplayBoundary(\n\tmessages: AgentMessage[],\n\toptions: { model: Model<Api> | undefined; branchEntries: SessionEntry[] },\n): AgentMessage[] {\n\tif (!isOpenAiRemoteCompactionModel(options.model)) return messages;\n\tconst remote = latestRemoteCompaction(options.branchEntries);\n\tif (!remote?.details.origin || !matchesOpenAiRemoteCompactionIdentity(options.model, remote.details)) {\n\t\treturn messages;\n\t}\n\tconst entryIds = checkpointContextEntries(options.branchEntries, remote)\n\t\t.filter((entry) => sessionEntryToContextMessages(entry).length > 0)\n\t\t.map((entry) => entry.id);\n\tif (\n\t\tentryIds.length === 0 ||\n\t\tmessages.length < entryIds.length ||\n\t\t!entryIds.every((entryId, index) => {\n\t\t\tconst message = messages[index] as AgentMessage & { [SESSION_CONTEXT_ENTRY_ID]?: unknown };\n\t\t\treturn message?.[SESSION_CONTEXT_ENTRY_ID] === entryId || getSessionContextEntryId(message) === entryId;\n\t\t})\n\t) {\n\t\treturn messages;\n\t}\n\n\tconst expectedOrdinals: number[] = [];\n\tconst marked = messages.map((message, index) => {\n\t\tif (index >= entryIds.length) return message;\n\t\tconst boundary: OpenAiRemoteReplayBoundary = {\n\t\t\tscope: OPENAI_REMOTE_REPLAY_BOUNDARY_SCOPE,\n\t\t\tcompactionEntryId: remote.entryId,\n\t\t\tordinal: index,\n\t\t\texpectedOrdinals,\n\t\t};\n\t\treturn Object.assign({}, message, { __piContextProvenance: boundary }) as AgentMessage;\n\t});\n\tconst baseline = convertResponsesMessages(\n\t\toptions.model,\n\t\t{ messages: convertToLlm(marked) },\n\t\tOPENAI_RESPONSES_TOOL_CALL_PROVIDERS,\n\t\t{ ...replayBoundaryConversionOptions(options.model), sealContextProvenance: true },\n\t);\n\tfor (const item of baseline) {\n\t\tconst boundary = replayBoundaryForInputItem(item);\n\t\tif (boundary?.compactionEntryId === remote.entryId) expectedOrdinals.push(boundary.ordinal);\n\t}\n\treturn expectedOrdinals.length > 0 ? marked : messages;\n}\n\nexport function rewriteOpenAiPayloadWithRemoteCompaction(\n\tpayload: unknown,\n\toptions: {\n\t\tmodel: Model<Api> | undefined;\n\t\tbranchEntries: SessionEntry[];\n\t\torigin?: OpenAiRemoteCompactionOrigin;\n\t},\n\temit?: EmitCompactionEvent,\n): unknown | undefined {\n\tif (!isOpenAiRemoteCompactionModel(options.model) || !isRecord(payload)) {\n\t\treturn undefined;\n\t}\n\tconst payloadInput = payload.input;\n\tif (!Array.isArray(payloadInput)) return undefined;\n\tconst remote = latestRemoteCompaction(options.branchEntries);\n\tif (!remote) return undefined;\n\tif (!matchesOpenAiRemoteCompactionIdentity(options.model, remote.details)) {\n\t\temitReplayFallback(emit, remote, options.model.id, \"remote-replay-identity-mismatch\");\n\t\treturn undefined;\n\t}\n\tif (!remote.details.origin || !options.origin) {\n\t\temitReplayFallback(emit, remote, options.model.id, MISSING_REMOTE_REPLAY_ORIGIN_REASON);\n\t\treturn undefined;\n\t}\n\tif (!matchingReplayOrigin(remote.details.origin, options.origin)) {\n\t\temitReplayFallback(emit, remote, options.model.id, REMOTE_REPLAY_ORIGIN_MISMATCH_REASON);\n\t\treturn undefined;\n\t}\n\n\tconst checkpointStart = leadingPromptMessages(payloadInput).length;\n\tconst allBoundaries = payloadInput\n\t\t.map(replayBoundaryForInputItem)\n\t\t.filter((boundary): boundary is OpenAiRemoteReplayBoundary => boundary?.compactionEntryId === remote.entryId);\n\tconst expectedOrdinals = allBoundaries[0]?.expectedOrdinals;\n\tif (\n\t\t!expectedOrdinals ||\n\t\texpectedOrdinals.length === 0 ||\n\t\tallBoundaries.length !== expectedOrdinals.length ||\n\t\tpayloadInput.length < checkpointStart + expectedOrdinals.length ||\n\t\t!allBoundaries.every(\n\t\t\t(boundary, index) =>\n\t\t\t\tsameOrdinals(boundary.expectedOrdinals, expectedOrdinals) && boundary.ordinal === expectedOrdinals[index],\n\t\t) ||\n\t\t!expectedOrdinals.every((ordinal: number, index: number) => {\n\t\t\tconst boundary = replayBoundaryForInputItem(payloadInput[checkpointStart + index]);\n\t\t\treturn (\n\t\t\t\tboundary?.compactionEntryId === remote.entryId &&\n\t\t\t\tboundary.ordinal === ordinal &&\n\t\t\t\tsameOrdinals(boundary.expectedOrdinals, expectedOrdinals)\n\t\t\t);\n\t\t})\n\t) {\n\t\temitReplayFallback(emit, remote, options.model.id, UNPROVEN_REMOTE_REPLAY_BOUNDARY_REASON);\n\t\treturn undefined;\n\t}\n\n\tconst input = [\n\t\t...payloadInput.slice(0, checkpointStart).filter(isRecord),\n\t\t...remote.details.replacementInput,\n\t\t...payloadInput.slice(checkpointStart + expectedOrdinals.length).filter(isRecord),\n\t];\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"]}
@@ -27,6 +27,7 @@ export interface SpeculativeCompactionSnapshot {
27
27
  model: Model<any>;
28
28
  contextWindow: number;
29
29
  preparation: CompactionPreparation;
30
+ branchEntries?: ReturnType<ReadonlySessionManager["getBranch"]>;
30
31
  promptVariant: MergedCompactionPromptVariant;
31
32
  origin?: "speculative" | "blocking" | "core-route";
32
33
  customInstructions?: string;
@@ -50,9 +51,11 @@ export type SpeculativeCompactionResult = ApplyCompactionResult | {
50
51
  * text happens to look retryable must still surface loudly; the message
51
52
  * string alone cannot encode that.
52
53
  */
54
+ export type SummaryRequestFailureKind = "upstream-stream-truncated";
53
55
  export declare class SummaryRequestError extends Error {
54
56
  readonly transient: boolean;
55
- constructor(message: string, transient: boolean);
57
+ readonly failureKind?: SummaryRequestFailureKind;
58
+ constructor(message: string, transient: boolean, failureKind?: SummaryRequestFailureKind);
56
59
  }
57
60
  export declare class SummaryGenerationError extends Error {
58
61
  readonly kind: "auth" | "empty-summary";
@@ -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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"}
@@ -1,4 +1,4 @@
1
- import { isContextOverflow, isRetryableAssistantError, } from "@earendil-works/pi-ai";
1
+ import { hasCredentialHeaders, isContextOverflow, isRetryableAssistantError, } from "@earendil-works/pi-ai";
2
2
  import { stream } from "@earendil-works/pi-ai/compat";
3
3
  import { DEFAULT_COMPACTION_SETTINGS, estimateContextTokens, estimateTokens, prepareCompaction, } from "../../../compaction/index.js";
4
4
  import { consumeStreamWithIdleTimeout, DEFAULT_SUMMARIZATION_IDLE_TIMEOUT_MS, DEFAULT_SUMMARIZATION_MAX_DURATION_MS, } from "../../../compaction/stream-watchdog.js";
@@ -7,6 +7,7 @@ import { sanitizeAnthropicPayload } from "../tool-pair-guard/sanitize-anthropic-
7
7
  import { computeEffectiveKeepRecentTokens, computeEffectiveThreshold } from "./policy.js";
8
8
  import { buildPrompt } from "./prompts.js";
9
9
  import { repairOrphanedToolResults } from "./repair-tool-pairs.js";
10
+ import { extractTaskIntent, resolveInheritedTaskIntent } from "./task-intent.js";
10
11
  import * as truncation from "./tool-truncation.js";
11
12
  import { computeStructuralYield } from "./yield.js";
12
13
  const DEFAULT_CONTEXT_WINDOW = 200_000;
@@ -24,24 +25,20 @@ const SUMMARY_SCHEMA = "senpi.compaction.summary.v1";
24
25
  function approxTokens(text) {
25
26
  return Math.ceil(text.length / 4);
26
27
  }
27
- /**
28
- * Summary-generation failure with a user-facing diagnosis. Distinct from a
29
- * user abort (which resolves `undefined`): callers surface `message` on the
30
- * manual route and degrade to "unavailable" on automatic routes.
31
- */
32
- /**
33
- * Provider `error` stop during summarization, carrying the metadata-aware
34
- * transient classification from the full assistant message. A refusal whose
35
- * text happens to look retryable must still surface loudly; the message
36
- * string alone cannot encode that.
37
- */
38
28
  export class SummaryRequestError extends Error {
39
- constructor(message, transient) {
29
+ constructor(message, transient, failureKind) {
40
30
  super(message);
41
31
  this.name = "SummaryRequestError";
42
32
  this.transient = transient;
33
+ this.failureKind = failureKind;
43
34
  }
44
35
  }
36
+ const UPSTREAM_STREAM_TRUNCATED_PATTERN = /(?:^|[^A-Za-z0-9_])upstream_stream_truncated(?:[^A-Za-z0-9_]|$)/;
37
+ function summaryRequestFailureKind(response) {
38
+ if (response.stopDetails?.type === "refusal" || response.stopDetails?.type === "sensitive")
39
+ return undefined;
40
+ return UPSTREAM_STREAM_TRUNCATED_PATTERN.test(response.errorMessage ?? "") ? "upstream-stream-truncated" : undefined;
41
+ }
45
42
  export class SummaryGenerationError extends Error {
46
43
  constructor(kind, message) {
47
44
  super(message);
@@ -105,6 +102,16 @@ function getSummaryText(message) {
105
102
  function isAssistantMessage(message) {
106
103
  return message.role === "assistant" && "stopReason" in message;
107
104
  }
105
+ /**
106
+ * Providers registered through `pi.registerProvider()` (claude-sdk-oauth, Kiro, any
107
+ * extension provider) exist only in Senpi's ModelRuntime, never in compat's builtin
108
+ * api-registry, which rejects their api id outright. Dispatch through the runtime
109
+ * whenever it is reachable and keep compat for contexts constructed without a registry.
110
+ */
111
+ function summarizationStream(context, model, requestContext, options) {
112
+ const runtime = context.modelRegistry?.modelRuntime;
113
+ return runtime ? runtime.stream(model, requestContext, options) : stream(model, requestContext, options);
114
+ }
108
115
  async function generateSummaryMessage(options) {
109
116
  // Send the conversation as native LLM messages with the summarization
110
117
  // instruction as a trailing user message, mirroring normal agent traffic.
@@ -140,7 +147,7 @@ async function generateSummaryMessage(options) {
140
147
  const headers = providerRequest
141
148
  ? await providerRequest.transformHeaders(options.auth.headers ?? {})
142
149
  : options.auth.headers;
143
- const responseStream = stream(options.snapshot.model, requestContext, {
150
+ const responseStream = summarizationStream(options.context, options.snapshot.model, requestContext, {
144
151
  apiKey: options.auth.apiKey,
145
152
  headers,
146
153
  extraBody: options.auth.extraBody,
@@ -345,6 +352,7 @@ export function createSpeculativeCompactionSnapshot(context, options) {
345
352
  model,
346
353
  contextWindow,
347
354
  preparation,
355
+ branchEntries,
348
356
  promptVariant: getPromptVariant({ reason: "extension", preparation }),
349
357
  ...(options.origin ? { origin: options.origin } : {}),
350
358
  customInstructions: options.customInstructions,
@@ -366,14 +374,19 @@ export async function runExtensionCompaction(context, snapshot, signal, onProgre
366
374
  const auth = await context.modelRegistry?.getApiKeyAndHeaders(snapshot.model);
367
375
  if (signal?.aborted)
368
376
  return undefined;
369
- if (!auth?.ok || !auth.apiKey) {
370
- const detail = auth && !auth.ok ? auth.error : `no API key resolved for provider "${snapshot.model.provider}"`;
377
+ // A provider is authenticated for summarization by either a resolved key or a
378
+ // credential request header: `headers`-authenticated providers (models.json and
379
+ // extension providers alike) never resolve an apiKey, yet their normal agent
380
+ // turns are fully authenticated.
381
+ if (!auth?.ok || !(auth.apiKey || hasCredentialHeaders(auth.headers))) {
382
+ const detail = auth && !auth.ok ? auth.error : `no credentials resolved for provider "${snapshot.model.provider}"`;
371
383
  throw new SummaryGenerationError("auth", `summarization credentials unavailable: ${detail}`);
372
384
  }
373
385
  let messages = pruneToolResults([...snapshot.preparation.messagesToSummarize, ...snapshot.preparation.turnPrefixMessages], snapshot.contextWindow);
374
386
  const prompt = buildPrompt({
375
387
  variant: snapshot.promptVariant,
376
388
  previousSummary: snapshot.preparation.previousSummary,
389
+ taskIntent: resolveInheritedTaskIntent(snapshot.branchEntries ?? []),
377
390
  customInstructions: snapshot.customInstructions,
378
391
  });
379
392
  while (true) {
@@ -408,8 +421,11 @@ export async function runExtensionCompaction(context, snapshot, signal, onProgre
408
421
  }
409
422
  if (isAssistantMessage(response) && response.stopReason === "error") {
410
423
  // Surface the real provider failure instead of silently degrading
411
- // into a generic "Compaction cancelled".
412
- throw new SummaryRequestError(response.errorMessage || "Compaction summary request failed", isRetryableAssistantError(response));
424
+ // into a generic "Compaction cancelled". Preserve the structured
425
+ // truncation class here so downstream recovery never trusts arbitrary
426
+ // thrown error text as authorization for destructive context reduction.
427
+ const failureKind = summaryRequestFailureKind(response);
428
+ throw new SummaryRequestError(response.errorMessage || "Compaction summary request failed", failureKind !== undefined || isRetryableAssistantError(response), failureKind);
413
429
  }
414
430
  const summary = getSummaryText(response);
415
431
  if (!summary) {
@@ -420,8 +436,10 @@ export async function runExtensionCompaction(context, snapshot, signal, onProgre
420
436
  // still overflow (_wouldCompactionOverflow). Rejecting here based on the
421
437
  // size of the *discarded* input made large sessions uncompactable.
422
438
  const tokenEstimate = estimateContextTokens(convertToLlm(messages)).tokens + approxTokens(summary);
439
+ const parsedSummary = extractTaskIntent(summary);
440
+ const taskIntent = parsedSummary.taskIntent ?? resolveInheritedTaskIntent(snapshot.branchEntries ?? []);
423
441
  return {
424
- summary,
442
+ summary: parsedSummary.summaryText,
425
443
  firstKeptEntryId: snapshot.preparation.firstKeptEntryId,
426
444
  tokensBefore: snapshot.preparation.tokensBefore,
427
445
  details: {
@@ -432,10 +450,11 @@ export async function runExtensionCompaction(context, snapshot, signal, onProgre
432
450
  previousSummary: snapshot.preparation.previousSummary ?? "",
433
451
  messagesToSummarize: snapshot.preparation.messagesToSummarize,
434
452
  turnPrefixMessages: snapshot.preparation.turnPrefixMessages,
435
- summary,
453
+ summary: parsedSummary.summaryText,
436
454
  tokensBefore: snapshot.preparation.tokensBefore,
437
455
  }),
438
456
  ...(snapshot.origin ? { origin: snapshot.origin } : {}),
457
+ ...(taskIntent ? { taskIntent } : {}),
439
458
  },
440
459
  };
441
460
  }