@code-yeongyu/senpi 2026.9.9 → 2026.9.10

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 (1065) hide show
  1. package/CHANGELOG.md +82 -1
  2. package/README.md +2 -0
  3. package/dist/beta/omo-local-update-worker.js.map +1 -1
  4. package/dist/beta/omo-local-update.d.ts.map +1 -1
  5. package/dist/brand-dir-migration.js.map +1 -1
  6. package/dist/cli/args.d.ts.map +1 -1
  7. package/dist/cli/args.js +1 -0
  8. package/dist/cli/args.js.map +1 -1
  9. package/dist/cli/auth-check.js.map +1 -1
  10. package/dist/cli/experimental/command.d.ts.map +1 -1
  11. package/dist/cli/grok-neo-gate.js.map +1 -1
  12. package/dist/cli/startup-ui.js.map +1 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/client/remote-session.d.ts.map +1 -1
  15. package/dist/client/remote-session.js.map +1 -1
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +43 -19
  18. package/dist/config.js.map +1 -1
  19. package/dist/core/agent-abort-provenance.d.ts.map +1 -1
  20. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  21. package/dist/core/agent-session-runtime.js.map +1 -1
  22. package/dist/core/agent-session.d.ts +46 -7
  23. package/dist/core/agent-session.d.ts.map +1 -1
  24. package/dist/core/agent-session.js +109 -6
  25. package/dist/core/agent-session.js.map +1 -1
  26. package/dist/core/agent-settled-delivery.d.ts.map +1 -1
  27. package/dist/core/auth-providers.js.map +1 -1
  28. package/dist/core/auth-storage.d.ts.map +1 -1
  29. package/dist/core/auth-storage.js.map +1 -1
  30. package/dist/core/brand.js.map +1 -1
  31. package/dist/core/compaction/branch-summarization.js.map +1 -1
  32. package/dist/core/compaction/compaction.js.map +1 -1
  33. package/dist/core/compaction/lifecycle.d.ts.map +1 -1
  34. package/dist/core/compaction/stream-watchdog.d.ts.map +1 -1
  35. package/dist/core/compaction/utils.js.map +1 -1
  36. package/dist/core/credential-accounts.js.map +1 -1
  37. package/dist/core/credential-pool/classify.js.map +1 -1
  38. package/dist/core/credential-pool/failover.d.ts.map +1 -1
  39. package/dist/core/credential-pool/rotation-stream.js.map +1 -1
  40. package/dist/core/credential-pool/state-store.d.ts +2 -2
  41. package/dist/core/credential-pool/state-store.d.ts.map +1 -1
  42. package/dist/core/credential-pool/state-store.js.map +1 -1
  43. package/dist/core/dynamic-prompt/verification.d.ts.map +1 -1
  44. package/dist/core/edited-assistant-message.d.ts +24 -0
  45. package/dist/core/edited-assistant-message.d.ts.map +1 -0
  46. package/dist/core/edited-assistant-message.js +57 -0
  47. package/dist/core/edited-assistant-message.js.map +1 -0
  48. package/dist/core/experimental.d.ts.map +1 -1
  49. package/dist/core/extensions/builtin/ask-user/extension.d.ts +3 -0
  50. package/dist/core/extensions/builtin/ask-user/extension.d.ts.map +1 -0
  51. package/dist/core/extensions/builtin/ask-user/extension.js +47 -0
  52. package/dist/core/extensions/builtin/ask-user/extension.js.map +1 -0
  53. package/dist/core/extensions/builtin/ask-user/family.d.ts +8 -0
  54. package/dist/core/extensions/builtin/ask-user/family.d.ts.map +1 -0
  55. package/dist/core/extensions/builtin/ask-user/family.js +6 -0
  56. package/dist/core/extensions/builtin/ask-user/family.js.map +1 -0
  57. package/dist/core/extensions/builtin/ask-user/format.d.ts +22 -0
  58. package/dist/core/extensions/builtin/ask-user/format.d.ts.map +1 -0
  59. package/dist/core/extensions/builtin/ask-user/format.js +109 -0
  60. package/dist/core/extensions/builtin/ask-user/format.js.map +1 -0
  61. package/dist/core/extensions/builtin/ask-user/index.d.ts +4 -0
  62. package/dist/core/extensions/builtin/ask-user/index.d.ts.map +1 -0
  63. package/dist/core/extensions/builtin/ask-user/index.js +4 -0
  64. package/dist/core/extensions/builtin/ask-user/index.js.map +1 -0
  65. package/dist/core/extensions/builtin/ask-user/params.d.ts +27 -0
  66. package/dist/core/extensions/builtin/ask-user/params.d.ts.map +1 -0
  67. package/dist/core/extensions/builtin/ask-user/params.js +78 -0
  68. package/dist/core/extensions/builtin/ask-user/params.js.map +1 -0
  69. package/dist/core/extensions/builtin/ask-user/pending.d.ts +58 -0
  70. package/dist/core/extensions/builtin/ask-user/pending.d.ts.map +1 -0
  71. package/dist/core/extensions/builtin/ask-user/pending.js +130 -0
  72. package/dist/core/extensions/builtin/ask-user/pending.js.map +1 -0
  73. package/dist/core/extensions/builtin/ask-user/registry.d.ts +21 -0
  74. package/dist/core/extensions/builtin/ask-user/registry.d.ts.map +1 -0
  75. package/dist/core/extensions/builtin/ask-user/registry.js +20 -0
  76. package/dist/core/extensions/builtin/ask-user/registry.js.map +1 -0
  77. package/dist/core/extensions/builtin/ask-user/render.d.ts +4 -0
  78. package/dist/core/extensions/builtin/ask-user/render.d.ts.map +1 -0
  79. package/dist/core/extensions/builtin/ask-user/render.js +25 -0
  80. package/dist/core/extensions/builtin/ask-user/render.js.map +1 -0
  81. package/dist/core/extensions/builtin/ask-user/resume.d.ts +4 -0
  82. package/dist/core/extensions/builtin/ask-user/resume.d.ts.map +1 -0
  83. package/dist/core/extensions/builtin/ask-user/resume.js +85 -0
  84. package/dist/core/extensions/builtin/ask-user/resume.js.map +1 -0
  85. package/dist/core/extensions/builtin/ask-user/schema.d.ts +40 -0
  86. package/dist/core/extensions/builtin/ask-user/schema.d.ts.map +1 -0
  87. package/dist/core/extensions/builtin/ask-user/schema.js +102 -0
  88. package/dist/core/extensions/builtin/ask-user/schema.js.map +1 -0
  89. package/dist/core/extensions/builtin/ask-user/tool.d.ts +8 -0
  90. package/dist/core/extensions/builtin/ask-user/tool.d.ts.map +1 -0
  91. package/dist/core/extensions/builtin/ask-user/tool.js +195 -0
  92. package/dist/core/extensions/builtin/ask-user/tool.js.map +1 -0
  93. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  94. package/dist/core/extensions/builtin/btw/panel.d.ts.map +1 -1
  95. package/dist/core/extensions/builtin/btw/side-query.js.map +1 -1
  96. package/dist/core/extensions/builtin/cache-keepalive/index.d.ts.map +1 -1
  97. package/dist/core/extensions/builtin/cache-keepalive/index.js.map +1 -1
  98. package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.js.map +1 -1
  99. package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.js.map +1 -1
  100. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.d.ts.map +1 -1
  101. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.js.map +1 -1
  102. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.d.ts.map +1 -1
  103. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.js.map +1 -1
  104. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts +11 -0
  105. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts.map +1 -1
  106. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js +12 -1
  107. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js.map +1 -1
  108. package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.d.ts.map +1 -1
  109. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.d.ts.map +1 -1
  110. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
  111. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts +14 -0
  112. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts.map +1 -0
  113. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js +42 -0
  114. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js.map +1 -0
  115. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts +18 -0
  116. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts.map +1 -1
  117. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js +105 -36
  118. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js.map +1 -1
  119. package/dist/core/extensions/builtin/claude-sdk-oauth/failover.d.ts.map +1 -1
  120. package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -1
  121. package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.d.ts.map +1 -1
  122. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.d.ts.map +1 -1
  123. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
  124. package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.d.ts.map +1 -1
  125. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.d.ts.map +1 -1
  126. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -1
  127. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -1
  128. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -1
  129. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -1
  130. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -1
  131. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +4 -1
  132. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -1
  133. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
  134. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +1 -1
  135. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.d.ts.map +1 -1
  136. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -1
  137. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
  138. package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.js.map +1 -1
  139. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
  140. package/dist/core/extensions/builtin/compaction/context-reduction.js.map +1 -1
  141. package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -1
  142. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  143. package/dist/core/extensions/builtin/compaction/lane-policy.js.map +1 -1
  144. package/dist/core/extensions/builtin/compaction/log.js.map +1 -1
  145. package/dist/core/extensions/builtin/compaction/model-usability-budget.d.ts.map +1 -1
  146. package/dist/core/extensions/builtin/compaction/openai-remote-convert.js.map +1 -1
  147. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  148. package/dist/core/extensions/builtin/compaction/overflow-retry.d.ts.map +1 -1
  149. package/dist/core/extensions/builtin/compaction/resume-admission.d.ts +7 -0
  150. package/dist/core/extensions/builtin/compaction/resume-admission.d.ts.map +1 -0
  151. package/dist/core/extensions/builtin/compaction/resume-admission.js +7 -0
  152. package/dist/core/extensions/builtin/compaction/resume-admission.js.map +1 -0
  153. package/dist/core/extensions/builtin/compaction/resume-slice.d.ts +23 -0
  154. package/dist/core/extensions/builtin/compaction/resume-slice.d.ts.map +1 -0
  155. package/dist/core/extensions/builtin/compaction/resume-slice.js +99 -0
  156. package/dist/core/extensions/builtin/compaction/resume-slice.js.map +1 -0
  157. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  158. package/dist/core/extensions/builtin/compaction/summarization-retry.js.map +1 -1
  159. package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -1
  160. package/dist/core/extensions/builtin/config-reload/index.js.map +1 -1
  161. package/dist/core/extensions/builtin/config-reload/log.js.map +1 -1
  162. package/dist/core/extensions/builtin/config-reload/protocol.d.ts.map +1 -1
  163. package/dist/core/extensions/builtin/config-reload/reload-deferral.d.ts.map +1 -1
  164. package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts.map +1 -1
  165. package/dist/core/extensions/builtin/config-reload/watch-event-source.js.map +1 -1
  166. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js.map +1 -1
  167. package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.d.ts.map +1 -1
  168. package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.d.ts.map +1 -1
  169. package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.js.map +1 -1
  170. package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.d.ts.map +1 -1
  171. package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.js.map +1 -1
  172. package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts.map +1 -1
  173. package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js.map +1 -1
  174. package/dist/core/extensions/builtin/cursor-cli-oauth/failover.d.ts.map +1 -1
  175. package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.d.ts.map +1 -1
  176. package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.js.map +1 -1
  177. package/dist/core/extensions/builtin/cursor-cli-oauth/index.js.map +1 -1
  178. package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js.map +1 -1
  179. package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.d.ts.map +1 -1
  180. package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.js.map +1 -1
  181. package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.d.ts.map +1 -1
  182. package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.js.map +1 -1
  183. package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js.map +1 -1
  184. package/dist/core/extensions/builtin/cursor-cli-oauth/transport.d.ts.map +1 -1
  185. package/dist/core/extensions/builtin/goal/cache-warm-renderer.js.map +1 -1
  186. package/dist/core/extensions/builtin/goal/command-registration.js.map +1 -1
  187. package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -1
  188. package/dist/core/extensions/builtin/goal/elapsed-ticker.d.ts.map +1 -1
  189. package/dist/core/extensions/builtin/goal/errors.d.ts.map +1 -1
  190. package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
  191. package/dist/core/extensions/builtin/goal/monitor-continuation.js +57 -4
  192. package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
  193. package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
  194. package/dist/core/extensions/builtin/goal/prompt.d.ts.map +1 -1
  195. package/dist/core/extensions/builtin/goal/prompt.js +9 -6
  196. package/dist/core/extensions/builtin/goal/prompt.js.map +1 -1
  197. package/dist/core/extensions/builtin/goal/store.js.map +1 -1
  198. package/dist/core/extensions/builtin/goal/tool-registration.js +1 -1
  199. package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
  200. package/dist/core/extensions/builtin/goal/turn-usage.d.ts.map +1 -1
  201. package/dist/core/extensions/builtin/goal/types.d.ts.map +1 -1
  202. package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
  203. package/dist/core/extensions/builtin/goal/wait-progress.js.map +1 -1
  204. package/dist/core/extensions/builtin/goal/wait-ticker.d.ts.map +1 -1
  205. package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -1
  206. package/dist/core/extensions/builtin/gpt-account.js +1 -0
  207. package/dist/core/extensions/builtin/gpt-account.js.map +1 -1
  208. package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -1
  209. package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -1
  210. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
  211. package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -1
  212. package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -1
  213. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -1
  214. package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -1
  215. package/dist/core/extensions/builtin/help/panel.d.ts.map +1 -1
  216. package/dist/core/extensions/builtin/history-search/index.js.map +1 -1
  217. package/dist/core/extensions/builtin/history-search/overlay.d.ts.map +1 -1
  218. package/dist/core/extensions/builtin/hooks/command-runner.js.map +1 -1
  219. package/dist/core/extensions/builtin/hooks/dispatcher.js.map +1 -1
  220. package/dist/core/extensions/builtin/hooks/plugin-loader.js.map +1 -1
  221. package/dist/core/extensions/builtin/hooks/tool-adapter.js.map +1 -1
  222. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -1
  223. package/dist/core/extensions/builtin/hooks/trust.js.map +1 -1
  224. package/dist/core/extensions/builtin/hooks/types.d.ts.map +1 -1
  225. package/dist/core/extensions/builtin/imagegen/index.js.map +1 -1
  226. package/dist/core/extensions/builtin/imagegen/params.d.ts +45 -0
  227. package/dist/core/extensions/builtin/imagegen/params.d.ts.map +1 -0
  228. package/dist/core/extensions/builtin/imagegen/params.js +81 -0
  229. package/dist/core/extensions/builtin/imagegen/params.js.map +1 -0
  230. package/dist/core/extensions/builtin/imagegen/paths.d.ts +10 -4
  231. package/dist/core/extensions/builtin/imagegen/paths.d.ts.map +1 -1
  232. package/dist/core/extensions/builtin/imagegen/paths.js +43 -10
  233. package/dist/core/extensions/builtin/imagegen/paths.js.map +1 -1
  234. package/dist/core/extensions/builtin/imagegen/reference-images.d.ts +20 -0
  235. package/dist/core/extensions/builtin/imagegen/reference-images.d.ts.map +1 -0
  236. package/dist/core/extensions/builtin/imagegen/reference-images.js +70 -0
  237. package/dist/core/extensions/builtin/imagegen/reference-images.js.map +1 -0
  238. package/dist/core/extensions/builtin/imagegen/skill/SKILL.md +58 -33
  239. package/dist/core/extensions/builtin/imagegen/tool.d.ts +15 -19
  240. package/dist/core/extensions/builtin/imagegen/tool.d.ts.map +1 -1
  241. package/dist/core/extensions/builtin/imagegen/tool.js +74 -52
  242. package/dist/core/extensions/builtin/imagegen/tool.js.map +1 -1
  243. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  244. package/dist/core/extensions/builtin/index.js +2 -0
  245. package/dist/core/extensions/builtin/index.js.map +1 -1
  246. package/dist/core/extensions/builtin/look-at/model-selector.d.ts.map +1 -1
  247. package/dist/core/extensions/builtin/look-at/runner.js.map +1 -1
  248. package/dist/core/extensions/builtin/loop/command.js.map +1 -1
  249. package/dist/core/extensions/builtin/loop/cron-planner.js.map +1 -1
  250. package/dist/core/extensions/builtin/loop/index.d.ts.map +1 -1
  251. package/dist/core/extensions/builtin/loop/index.js.map +1 -1
  252. package/dist/core/extensions/builtin/loop/loopfile.d.ts.map +1 -1
  253. package/dist/core/extensions/builtin/loop/scheduler.js.map +1 -1
  254. package/dist/core/extensions/builtin/loop/status.d.ts.map +1 -1
  255. package/dist/core/extensions/builtin/loop/store.d.ts.map +1 -1
  256. package/dist/core/extensions/builtin/loop/types.d.ts.map +1 -1
  257. package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -1
  258. package/dist/core/extensions/builtin/loop-guard/escalation.d.ts.map +1 -1
  259. package/dist/core/extensions/builtin/loop-guard/escalation.js.map +1 -1
  260. package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -1
  261. package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -1
  262. package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -1
  263. package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -1
  264. package/dist/core/extensions/builtin/mcp/active-set.js.map +1 -1
  265. package/dist/core/extensions/builtin/mcp/auth/callback.d.ts.map +1 -1
  266. package/dist/core/extensions/builtin/mcp/auth/oauth-errors.d.ts.map +1 -1
  267. package/dist/core/extensions/builtin/mcp/auth/oauth-errors.js.map +1 -1
  268. package/dist/core/extensions/builtin/mcp/auth/oauth-provider.d.ts.map +1 -1
  269. package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.d.ts.map +1 -1
  270. package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.js.map +1 -1
  271. package/dist/core/extensions/builtin/mcp/auth/oauth.js.map +1 -1
  272. package/dist/core/extensions/builtin/mcp/auth/token-store.d.ts.map +1 -1
  273. package/dist/core/extensions/builtin/mcp/catalog.js.map +1 -1
  274. package/dist/core/extensions/builtin/mcp/config-schema.d.ts +28 -28
  275. package/dist/core/extensions/builtin/mcp/config.d.ts.map +1 -1
  276. package/dist/core/extensions/builtin/mcp/connection.d.ts.map +1 -1
  277. package/dist/core/extensions/builtin/mcp/elicitation.d.ts.map +1 -1
  278. package/dist/core/extensions/builtin/mcp/elicitation.js.map +1 -1
  279. package/dist/core/extensions/builtin/mcp/errors.d.ts.map +1 -1
  280. package/dist/core/extensions/builtin/mcp/errors.js.map +1 -1
  281. package/dist/core/extensions/builtin/mcp/expose/register.js.map +1 -1
  282. package/dist/core/extensions/builtin/mcp/expose/session.js.map +1 -1
  283. package/dist/core/extensions/builtin/mcp/guard/output-guard.d.ts.map +1 -1
  284. package/dist/core/extensions/builtin/mcp/guard/output-guard.js.map +1 -1
  285. package/dist/core/extensions/builtin/mcp/log.js.map +1 -1
  286. package/dist/core/extensions/builtin/mcp/reconnect.d.ts.map +1 -1
  287. package/dist/core/extensions/builtin/mcp/service-register.js.map +1 -1
  288. package/dist/core/extensions/builtin/mcp/service.d.ts.map +1 -1
  289. package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
  290. package/dist/core/extensions/builtin/nested-agents-md/core/errors.d.ts.map +1 -1
  291. package/dist/core/extensions/builtin/nested-agents-md/core/injection-cache.d.ts.map +1 -1
  292. package/dist/core/extensions/builtin/nested-agents-md/core/types.d.ts.map +1 -1
  293. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts +13 -6
  294. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts.map +1 -1
  295. package/dist/core/extensions/builtin/oauth-login-interaction.js +43 -19
  296. package/dist/core/extensions/builtin/oauth-login-interaction.js.map +1 -1
  297. package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts +5 -3
  298. package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts.map +1 -1
  299. package/dist/core/extensions/builtin/openai-image-gen/inject.js +7 -4
  300. package/dist/core/extensions/builtin/openai-image-gen/inject.js.map +1 -1
  301. package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -1
  302. package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
  303. package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -1
  304. package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -1
  305. package/dist/core/extensions/builtin/permission-system/service.js.map +1 -1
  306. package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -1
  307. package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -1
  308. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5-1.js +1 -1
  309. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5-1.js.map +1 -1
  310. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js +1 -1
  311. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js.map +1 -1
  312. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +1 -1
  313. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -1
  314. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts.map +1 -1
  315. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts +1 -1
  316. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts.map +1 -1
  317. package/dist/core/extensions/builtin/prompt-preset/glm-5.js +1 -1
  318. package/dist/core/extensions/builtin/prompt-preset/glm-5.js.map +1 -1
  319. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
  320. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -1
  321. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  322. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts +4 -4
  323. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts.map +1 -1
  324. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +4 -4
  325. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -1
  326. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +1 -1
  327. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
  328. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  329. package/dist/core/extensions/builtin/rule-activation/renderer.js.map +1 -1
  330. package/dist/core/extensions/builtin/rules/commands.js.map +1 -1
  331. package/dist/core/extensions/builtin/rules/config.js.map +1 -1
  332. package/dist/core/extensions/builtin/rules/rules/errors.d.ts.map +1 -1
  333. package/dist/core/extensions/builtin/rules/rules/project-root.js.map +1 -1
  334. package/dist/core/extensions/builtin/rules/ui/dynamic-border.d.ts.map +1 -1
  335. package/dist/core/extensions/builtin/rules/ui/rules-banner.d.ts.map +1 -1
  336. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  337. package/dist/core/extensions/builtin/terminal/manager.d.ts.map +1 -1
  338. package/dist/core/extensions/builtin/terminal/manager.js.map +1 -1
  339. package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts.map +1 -1
  340. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
  341. package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -1
  342. package/dist/core/extensions/builtin/terminal/notify.d.ts.map +1 -1
  343. package/dist/core/extensions/builtin/terminal/restore.d.ts.map +1 -1
  344. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts.map +1 -1
  345. package/dist/core/extensions/builtin/terminal/session-bundle.d.ts.map +1 -1
  346. package/dist/core/extensions/builtin/terminal/terminal-manifest.d.ts.map +1 -1
  347. package/dist/core/extensions/builtin/terminal/tools/render.d.ts.map +1 -1
  348. package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
  349. package/dist/core/extensions/builtin/todotools/normalize.js.map +1 -1
  350. package/dist/core/extensions/builtin/todotools/todo-operations.js.map +1 -1
  351. package/dist/core/extensions/builtin/todotools/todo-widget-component.d.ts.map +1 -1
  352. package/dist/core/extensions/builtin/todotools/todo-widget-component.js.map +1 -1
  353. package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
  354. package/dist/core/extensions/builtin/tool-search/native-search.d.ts.map +1 -1
  355. package/dist/core/extensions/builtin/tool-search/service.d.ts.map +1 -1
  356. package/dist/core/extensions/builtin/tool-search/service.js.map +1 -1
  357. package/dist/core/extensions/builtin/ttsr/detectors/leak-context.d.ts.map +1 -1
  358. package/dist/core/extensions/builtin/ttsr/detectors/token-grammar.d.ts.map +1 -1
  359. package/dist/core/extensions/builtin/ttsr/manager.d.ts.map +1 -1
  360. package/dist/core/extensions/builtin/ttsr/message-update.js.map +1 -1
  361. package/dist/core/extensions/builtin/ttsr/repetitive-turns-lane.d.ts.map +1 -1
  362. package/dist/core/extensions/builtin/ttsr/stream-utils.d.ts.map +1 -1
  363. package/dist/core/extensions/builtin/ttsr/watch.d.ts.map +1 -1
  364. package/dist/core/extensions/builtin/webfetch/webfetch/errors.d.ts.map +1 -1
  365. package/dist/core/extensions/builtin/webfetch/webfetch/tool.d.ts +1 -1
  366. package/dist/core/extensions/builtin/websearch/websearch/native.js.map +1 -1
  367. package/dist/core/extensions/loader.d.ts +2 -1
  368. package/dist/core/extensions/loader.d.ts.map +1 -1
  369. package/dist/core/extensions/loader.js +17 -8
  370. package/dist/core/extensions/loader.js.map +1 -1
  371. package/dist/core/extensions/notice/box.d.ts.map +1 -1
  372. package/dist/core/extensions/notice/box.js +13 -5
  373. package/dist/core/extensions/notice/box.js.map +1 -1
  374. package/dist/core/extensions/runner.d.ts +11 -0
  375. package/dist/core/extensions/runner.d.ts.map +1 -1
  376. package/dist/core/extensions/runner.js +23 -0
  377. package/dist/core/extensions/runner.js.map +1 -1
  378. package/dist/core/extensions/types.d.ts +76 -1
  379. package/dist/core/extensions/types.d.ts.map +1 -1
  380. package/dist/core/extensions/types.js.map +1 -1
  381. package/dist/core/footer-data-provider.d.ts.map +1 -1
  382. package/dist/core/footer-data-provider.js.map +1 -1
  383. package/dist/core/http-dispatcher.d.ts.map +1 -1
  384. package/dist/core/http-dispatcher.js.map +1 -1
  385. package/dist/core/keybindings.d.ts +182 -177
  386. package/dist/core/keybindings.d.ts.map +1 -1
  387. package/dist/core/keybindings.js +5 -0
  388. package/dist/core/keybindings.js.map +1 -1
  389. package/dist/core/lockfile-policy.d.ts.map +1 -1
  390. package/dist/core/messages.js.map +1 -1
  391. package/dist/core/model-config-schema.d.ts +150 -150
  392. package/dist/core/model-config-schema.d.ts.map +1 -1
  393. package/dist/core/model-config.d.ts.map +1 -1
  394. package/dist/core/model-config.js.map +1 -1
  395. package/dist/core/model-registry.d.ts.map +1 -1
  396. package/dist/core/model-registry.js.map +1 -1
  397. package/dist/core/model-resolver.d.ts.map +1 -1
  398. package/dist/core/model-resolver.js +1 -0
  399. package/dist/core/model-resolver.js.map +1 -1
  400. package/dist/core/model-runtime.d.ts.map +1 -1
  401. package/dist/core/model-runtime.js.map +1 -1
  402. package/dist/core/models-store.d.ts.map +1 -1
  403. package/dist/core/models-store.js.map +1 -1
  404. package/dist/core/package-manager.d.ts.map +1 -1
  405. package/dist/core/provider-display-names.d.ts.map +1 -1
  406. package/dist/core/provider-display-names.js +1 -0
  407. package/dist/core/provider-display-names.js.map +1 -1
  408. package/dist/core/remote-catalog-provider.js.map +1 -1
  409. package/dist/core/resource-loader.d.ts +2 -0
  410. package/dist/core/resource-loader.d.ts.map +1 -1
  411. package/dist/core/resource-loader.js +11 -7
  412. package/dist/core/resource-loader.js.map +1 -1
  413. package/dist/core/retry-fallback/controller.d.ts.map +1 -1
  414. package/dist/core/retry-fallback/cooldown.d.ts.map +1 -1
  415. package/dist/core/retry-fallback/cooldown.js.map +1 -1
  416. package/dist/core/retry-fallback/expansion.js.map +1 -1
  417. package/dist/core/retry-fallback/log.js.map +1 -1
  418. package/dist/core/retry-fallback/probe-scheduler.d.ts.map +1 -1
  419. package/dist/core/runtime-credentials.d.ts.map +1 -1
  420. package/dist/core/sdk.d.ts.map +1 -1
  421. package/dist/core/sdk.js +24 -1
  422. package/dist/core/sdk.js.map +1 -1
  423. package/dist/core/session-activity.d.ts.map +1 -1
  424. package/dist/core/session-cwd.d.ts.map +1 -1
  425. package/dist/core/session-log.js.map +1 -1
  426. package/dist/core/session-manager.d.ts.map +1 -1
  427. package/dist/core/session-manager.js.map +1 -1
  428. package/dist/core/session-resident-store.d.ts.map +1 -1
  429. package/dist/core/session-sidecar-store.d.ts.map +1 -1
  430. package/dist/core/session-summary-lru.d.ts.map +1 -1
  431. package/dist/core/session-work-barrier.d.ts.map +1 -1
  432. package/dist/core/settings-manager.d.ts +6 -1
  433. package/dist/core/settings-manager.d.ts.map +1 -1
  434. package/dist/core/settings-manager.js +14 -0
  435. package/dist/core/settings-manager.js.map +1 -1
  436. package/dist/core/settings-shapes.d.ts +7 -0
  437. package/dist/core/settings-shapes.d.ts.map +1 -1
  438. package/dist/core/settings-shapes.js +3 -1
  439. package/dist/core/settings-shapes.js.map +1 -1
  440. package/dist/core/telemetry.js.map +1 -1
  441. package/dist/core/timings.js.map +1 -1
  442. package/dist/core/tools/bash.d.ts.map +1 -1
  443. package/dist/core/tools/bounded-realpath.js.map +1 -1
  444. package/dist/core/tools/edit.d.ts.map +1 -1
  445. package/dist/core/tools/find.d.ts.map +1 -1
  446. package/dist/core/tools/find.js.map +1 -1
  447. package/dist/core/tools/grep.d.ts.map +1 -1
  448. package/dist/core/tools/ls.d.ts.map +1 -1
  449. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  450. package/dist/core/tools/output-accumulator.js.map +1 -1
  451. package/dist/core/tools/powershell.d.ts.map +1 -1
  452. package/dist/core/tools/read-classifiers.d.ts +17 -0
  453. package/dist/core/tools/read-classifiers.d.ts.map +1 -0
  454. package/dist/core/tools/read-classifiers.js +26 -0
  455. package/dist/core/tools/read-classifiers.js.map +1 -0
  456. package/dist/core/tools/read.d.ts +5 -1
  457. package/dist/core/tools/read.d.ts.map +1 -1
  458. package/dist/core/tools/read.js +21 -1
  459. package/dist/core/tools/read.js.map +1 -1
  460. package/dist/core/tools/tail-window.d.ts.map +1 -1
  461. package/dist/core/tools/truncate.js.map +1 -1
  462. package/dist/core/tools/write-result.js.map +1 -1
  463. package/dist/core/tools/write.d.ts.map +1 -1
  464. package/dist/core/trust-manager.d.ts.map +1 -1
  465. package/dist/extensions/llama/client.d.ts.map +1 -1
  466. package/dist/extensions/llama/client.js.map +1 -1
  467. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  468. package/dist/extensions/llama/huggingface.js.map +1 -1
  469. package/dist/extensions/llama/provider.js.map +1 -1
  470. package/dist/from-source-config-guard.js.map +1 -1
  471. package/dist/index.d.ts +1 -0
  472. package/dist/index.d.ts.map +1 -1
  473. package/dist/index.js +1 -0
  474. package/dist/index.js.map +1 -1
  475. package/dist/main.d.ts.map +1 -1
  476. package/dist/main.js +4 -0
  477. package/dist/main.js.map +1 -1
  478. package/dist/modes/app-server/daemon/occupancy.d.ts.map +1 -1
  479. package/dist/modes/app-server/daemon/process.d.ts.map +1 -1
  480. package/dist/modes/app-server/daemon/process.js.map +1 -1
  481. package/dist/modes/app-server/daemon.js.map +1 -1
  482. package/dist/modes/app-server/protocol/collaboration-mode.d.ts.map +1 -1
  483. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.d.ts +7 -0
  484. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.d.ts.map +1 -0
  485. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.js +4 -0
  486. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputAnswer.js.map +1 -0
  487. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.d.ts +8 -0
  488. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.d.ts.map +1 -0
  489. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.js +4 -0
  490. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputOption.js.map +1 -0
  491. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.d.ts +12 -0
  492. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.d.ts.map +1 -0
  493. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.js +4 -0
  494. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputParams.js.map +1 -0
  495. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.d.ts +13 -0
  496. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.d.ts.map +1 -0
  497. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.js +4 -0
  498. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputQuestion.js.map +1 -0
  499. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.d.ts +10 -0
  500. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.d.ts.map +1 -0
  501. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.js +4 -0
  502. package/dist/modes/app-server/protocol/generated/v2/ToolRequestUserInputResponse.js.map +1 -0
  503. package/dist/modes/app-server/protocol/index.d.ts +2 -0
  504. package/dist/modes/app-server/protocol/index.d.ts.map +1 -1
  505. package/dist/modes/app-server/protocol/index.js.map +1 -1
  506. package/dist/modes/app-server/protocol/methods.d.ts +1 -0
  507. package/dist/modes/app-server/protocol/methods.d.ts.map +1 -1
  508. package/dist/modes/app-server/protocol/methods.js +1 -0
  509. package/dist/modes/app-server/protocol/methods.js.map +1 -1
  510. package/dist/modes/app-server/rpc/errors.d.ts.map +1 -1
  511. package/dist/modes/app-server/runtime.d.ts.map +1 -1
  512. package/dist/modes/app-server/runtime.js +22 -6
  513. package/dist/modes/app-server/runtime.js.map +1 -1
  514. package/dist/modes/app-server/search/fuzzy-files.js.map +1 -1
  515. package/dist/modes/app-server/search/fuzzy-search-service.d.ts.map +1 -1
  516. package/dist/modes/app-server/server/account.js.map +1 -1
  517. package/dist/modes/app-server/server/approval-bridge.d.ts.map +1 -1
  518. package/dist/modes/app-server/server/approval-types.d.ts.map +1 -1
  519. package/dist/modes/app-server/server/approval-ui-context.d.ts +2 -1
  520. package/dist/modes/app-server/server/approval-ui-context.d.ts.map +1 -1
  521. package/dist/modes/app-server/server/approval-ui-context.js +9 -1
  522. package/dist/modes/app-server/server/approval-ui-context.js.map +1 -1
  523. package/dist/modes/app-server/server/catalogs.js.map +1 -1
  524. package/dist/modes/app-server/server/config.js.map +1 -1
  525. package/dist/modes/app-server/server/connection.d.ts.map +1 -1
  526. package/dist/modes/app-server/server/models.js.map +1 -1
  527. package/dist/modes/app-server/server/notifications.d.ts.map +1 -1
  528. package/dist/modes/app-server/server/notifications.js.map +1 -1
  529. package/dist/modes/app-server/server/server-core.d.ts.map +1 -1
  530. package/dist/modes/app-server/server/server-core.js.map +1 -1
  531. package/dist/modes/app-server/server/skills.js.map +1 -1
  532. package/dist/modes/app-server/server/user-input-bridge.d.ts +16 -0
  533. package/dist/modes/app-server/server/user-input-bridge.d.ts.map +1 -0
  534. package/dist/modes/app-server/server/user-input-bridge.js +142 -0
  535. package/dist/modes/app-server/server/user-input-bridge.js.map +1 -0
  536. package/dist/modes/app-server/server/user-input-types.d.ts +43 -0
  537. package/dist/modes/app-server/server/user-input-types.d.ts.map +1 -0
  538. package/dist/modes/app-server/server/user-input-types.js +51 -0
  539. package/dist/modes/app-server/server/user-input-types.js.map +1 -0
  540. package/dist/modes/app-server/threads/archive-state.d.ts.map +1 -1
  541. package/dist/modes/app-server/threads/handlers.js.map +1 -1
  542. package/dist/modes/app-server/threads/mcp-wire-status.d.ts.map +1 -1
  543. package/dist/modes/app-server/threads/metadata-state.d.ts.map +1 -1
  544. package/dist/modes/app-server/threads/projection-file-changes.js.map +1 -1
  545. package/dist/modes/app-server/threads/projection-message-items.d.ts.map +1 -1
  546. package/dist/modes/app-server/threads/projection-turn-diff.d.ts.map +1 -1
  547. package/dist/modes/app-server/threads/projection-web-search.js.map +1 -1
  548. package/dist/modes/app-server/threads/projection.d.ts.map +1 -1
  549. package/dist/modes/app-server/threads/registry.d.ts.map +1 -1
  550. package/dist/modes/app-server/threads/registry.js.map +1 -1
  551. package/dist/modes/app-server/threads/search-cache.d.ts.map +1 -1
  552. package/dist/modes/app-server/threads/turn-log.d.ts.map +1 -1
  553. package/dist/modes/app-server/threads/turn-runtime.d.ts.map +1 -1
  554. package/dist/modes/app-server/threads/turn-runtime.js.map +1 -1
  555. package/dist/modes/app-server/threads/turns.js.map +1 -1
  556. package/dist/modes/app-server/threads/wire-thread.js.map +1 -1
  557. package/dist/modes/app-server/transports/unix-socket.d.ts.map +1 -1
  558. package/dist/modes/app-server/transports/unix-socket.js.map +1 -1
  559. package/dist/modes/app-server/transports/websocket.d.ts.map +1 -1
  560. package/dist/modes/app-server/turn-adapter.d.ts +3 -3
  561. package/dist/modes/app-server/turn-adapter.d.ts.map +1 -1
  562. package/dist/modes/app-server/turn-adapter.js +36 -5
  563. package/dist/modes/app-server/turn-adapter.js.map +1 -1
  564. package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
  565. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  566. package/dist/modes/interactive/components/armin.js.map +1 -1
  567. package/dist/modes/interactive/components/ask-user-async-widget.d.ts +39 -0
  568. package/dist/modes/interactive/components/ask-user-async-widget.d.ts.map +1 -0
  569. package/dist/modes/interactive/components/ask-user-async-widget.js +82 -0
  570. package/dist/modes/interactive/components/ask-user-async-widget.js.map +1 -0
  571. package/dist/modes/interactive/components/ask-user-question-keys.d.ts +21 -0
  572. package/dist/modes/interactive/components/ask-user-question-keys.d.ts.map +1 -0
  573. package/dist/modes/interactive/components/ask-user-question-keys.js +115 -0
  574. package/dist/modes/interactive/components/ask-user-question-keys.js.map +1 -0
  575. package/dist/modes/interactive/components/ask-user-question-render.d.ts +17 -0
  576. package/dist/modes/interactive/components/ask-user-question-render.d.ts.map +1 -0
  577. package/dist/modes/interactive/components/ask-user-question-render.js +75 -0
  578. package/dist/modes/interactive/components/ask-user-question-render.js.map +1 -0
  579. package/dist/modes/interactive/components/ask-user-question-state.d.ts +52 -0
  580. package/dist/modes/interactive/components/ask-user-question-state.d.ts.map +1 -0
  581. package/dist/modes/interactive/components/ask-user-question-state.js +134 -0
  582. package/dist/modes/interactive/components/ask-user-question-state.js.map +1 -0
  583. package/dist/modes/interactive/components/ask-user-question.d.ts +50 -0
  584. package/dist/modes/interactive/components/ask-user-question.d.ts.map +1 -0
  585. package/dist/modes/interactive/components/ask-user-question.js +148 -0
  586. package/dist/modes/interactive/components/ask-user-question.js.map +1 -0
  587. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  588. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  589. package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
  590. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  591. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  592. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  593. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  594. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  595. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  596. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  597. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  598. package/dist/modes/interactive/components/continuity-notice.d.ts.map +1 -1
  599. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  600. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  601. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  602. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  603. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  604. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  605. package/dist/modes/interactive/components/diff.js.map +1 -1
  606. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  607. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  608. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  609. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  610. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  611. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  612. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  613. package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -1
  614. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  615. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  616. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  617. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  618. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  619. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  620. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  621. package/dist/modes/interactive/components/progressive-transcript-container.d.ts.map +1 -1
  622. package/dist/modes/interactive/components/render-signature.js.map +1 -1
  623. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  624. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  625. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  626. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  627. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  628. package/dist/modes/interactive/components/shortcut-overlay.d.ts.map +1 -1
  629. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  630. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  631. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  632. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  633. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  634. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  635. package/dist/modes/interactive/components/tool-execution-images.d.ts.map +1 -1
  636. package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -1
  637. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  638. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  639. package/dist/modes/interactive/components/tool-renderer-boundary.d.ts.map +1 -1
  640. package/dist/modes/interactive/components/tree-selector.d.ts +4 -0
  641. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  642. package/dist/modes/interactive/components/tree-selector.js +17 -0
  643. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  644. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  645. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  646. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  647. package/dist/modes/interactive/components/user-message.js.map +1 -1
  648. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  649. package/dist/modes/interactive/grok/chrome.d.ts.map +1 -1
  650. package/dist/modes/interactive/grok/footer.d.ts.map +1 -1
  651. package/dist/modes/interactive/grok/input-card.d.ts.map +1 -1
  652. package/dist/modes/interactive/grok/palette.d.ts.map +1 -1
  653. package/dist/modes/interactive/grok/tool-row.d.ts.map +1 -1
  654. package/dist/modes/interactive/grok/welcome-card.d.ts.map +1 -1
  655. package/dist/modes/interactive/interactive-host-runtime.d.ts +6 -0
  656. package/dist/modes/interactive/interactive-host-runtime.d.ts.map +1 -1
  657. package/dist/modes/interactive/interactive-host-runtime.js +32 -3
  658. package/dist/modes/interactive/interactive-host-runtime.js.map +1 -1
  659. package/dist/modes/interactive/interactive-mode.d.ts +35 -0
  660. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  661. package/dist/modes/interactive/interactive-mode.js +413 -100
  662. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  663. package/dist/modes/interactive/login-outcome.d.ts +20 -0
  664. package/dist/modes/interactive/login-outcome.d.ts.map +1 -0
  665. package/dist/modes/interactive/login-outcome.js +35 -0
  666. package/dist/modes/interactive/login-outcome.js.map +1 -0
  667. package/dist/modes/interactive/startup-tools.js.map +1 -1
  668. package/dist/modes/interactive/streaming-reveal-content.d.ts.map +1 -1
  669. package/dist/modes/interactive/streaming-reveal-content.js.map +1 -1
  670. package/dist/modes/interactive/streaming-reveal.d.ts.map +1 -1
  671. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  672. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  673. package/dist/modes/interactive/theme/theme.js.map +1 -1
  674. package/dist/modes/interactive/tips/catalog/input-tips.d.ts +7 -7
  675. package/dist/modes/interactive/tips/catalog/input-tips.d.ts.map +1 -1
  676. package/dist/modes/interactive/tips/catalog/input-tips.js +5 -0
  677. package/dist/modes/interactive/tips/catalog/input-tips.js.map +1 -1
  678. package/dist/modes/interactive/tips/catalog/model-tips.d.ts +1 -1
  679. package/dist/modes/interactive/tips/catalog/workspace-tips.d.ts +1 -1
  680. package/dist/modes/interactive/tips/scheduler.js.map +1 -1
  681. package/dist/modes/interactive/tips/working-tip.d.ts.map +1 -1
  682. package/dist/modes/interactive/tool-args-reveal.d.ts.map +1 -1
  683. package/dist/modes/interactive/tool-result-reveal.d.ts.map +1 -1
  684. package/dist/modes/print-mode.d.ts.map +1 -1
  685. package/dist/modes/print-mode.js +8 -0
  686. package/dist/modes/print-mode.js.map +1 -1
  687. package/dist/modes/provider-native-rendering.d.ts.map +1 -1
  688. package/dist/modes/provider-native-rendering.js +35 -0
  689. package/dist/modes/provider-native-rendering.js.map +1 -1
  690. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  691. package/dist/modes/rpc/connection-handler.js +72 -1
  692. package/dist/modes/rpc/connection-handler.js.map +1 -1
  693. package/dist/modes/rpc/connection-question-bridge.d.ts +18 -0
  694. package/dist/modes/rpc/connection-question-bridge.d.ts.map +1 -0
  695. package/dist/modes/rpc/connection-question-bridge.js +156 -0
  696. package/dist/modes/rpc/connection-question-bridge.js.map +1 -0
  697. package/dist/modes/rpc/custom-capability.d.ts +2 -0
  698. package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
  699. package/dist/modes/rpc/custom-capability.js +2 -0
  700. package/dist/modes/rpc/custom-capability.js.map +1 -1
  701. package/dist/modes/rpc/event-output-buffer.js.map +1 -1
  702. package/dist/modes/rpc/host-ensure.js.map +1 -1
  703. package/dist/modes/rpc/host-lifecycle.d.ts.map +1 -1
  704. package/dist/modes/rpc/host-lifecycle.js.map +1 -1
  705. package/dist/modes/rpc/host-watchdog.js.map +1 -1
  706. package/dist/modes/rpc/jsonl.js.map +1 -1
  707. package/dist/modes/rpc/multi-session-host.js.map +1 -1
  708. package/dist/modes/rpc/ownership-safe-lock.d.ts.map +1 -1
  709. package/dist/modes/rpc/ownership-safe-lock.js.map +1 -1
  710. package/dist/modes/rpc/rpc-client.d.ts +20 -1
  711. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  712. package/dist/modes/rpc/rpc-client.js +35 -3
  713. package/dist/modes/rpc/rpc-client.js.map +1 -1
  714. package/dist/modes/rpc/rpc-input-validation.js.map +1 -1
  715. package/dist/modes/rpc/rpc-types.d.ts +103 -3
  716. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  717. package/dist/modes/rpc/rpc-types.js +6 -0
  718. package/dist/modes/rpc/rpc-types.js.map +1 -1
  719. package/dist/modes/rpc/session-binding.js.map +1 -1
  720. package/dist/modes/rpc/session-command-router.d.ts +4 -4
  721. package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
  722. package/dist/modes/rpc/session-command-router.js +14 -8
  723. package/dist/modes/rpc/session-command-router.js.map +1 -1
  724. package/dist/modes/rpc/session-event-fanout.d.ts +2 -0
  725. package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
  726. package/dist/modes/rpc/session-event-fanout.js +25 -1
  727. package/dist/modes/rpc/session-event-fanout.js.map +1 -1
  728. package/dist/modes/rpc/session-event-writer.d.ts +7 -1
  729. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
  730. package/dist/modes/rpc/session-event-writer.js +17 -4
  731. package/dist/modes/rpc/session-event-writer.js.map +1 -1
  732. package/dist/modes/rpc/session-extension-ui-requests.d.ts.map +1 -1
  733. package/dist/modes/rpc/session-registry.d.ts.map +1 -1
  734. package/dist/modes/rpc/session-registry.js +11 -1
  735. package/dist/modes/rpc/session-registry.js.map +1 -1
  736. package/dist/modes/rpc/session-worker-client.d.ts.map +1 -1
  737. package/dist/modes/rpc/session-worker-client.js.map +1 -1
  738. package/dist/modes/rpc/session-worker-protocol.d.ts.map +1 -1
  739. package/dist/modes/rpc/session-worker-requests.d.ts.map +1 -1
  740. package/dist/modes/rpc/session-worker-requests.js +1 -1
  741. package/dist/modes/rpc/session-worker-requests.js.map +1 -1
  742. package/dist/modes/rpc/session-worker.js +10 -2
  743. package/dist/modes/rpc/session-worker.js.map +1 -1
  744. package/dist/modes/rpc/socket-event-fanout.d.ts +14 -1
  745. package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
  746. package/dist/modes/rpc/socket-event-fanout.js +48 -2
  747. package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
  748. package/dist/modes/rpc/socket-ownership.js.map +1 -1
  749. package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
  750. package/dist/modes/rpc/worker-session-registry.js +2 -1
  751. package/dist/modes/rpc/worker-session-registry.js.map +1 -1
  752. package/dist/package-manager-cli.js.map +1 -1
  753. package/dist/self-update-bootstrap.js.map +1 -1
  754. package/dist/utils/ansi.js.map +1 -1
  755. package/dist/utils/clipboard-image.js.map +1 -1
  756. package/dist/utils/clipboard-native.js.map +1 -1
  757. package/dist/utils/clipboard.js.map +1 -1
  758. package/dist/utils/exif-orientation.js.map +1 -1
  759. package/dist/utils/frontmatter.d.ts.map +1 -1
  760. package/dist/utils/image-resize.js.map +1 -1
  761. package/dist/utils/management-http.js.map +1 -1
  762. package/dist/utils/paths.js.map +1 -1
  763. package/dist/utils/photon.js.map +1 -1
  764. package/dist/utils/pi-user-agent.js.map +1 -1
  765. package/dist/utils/shell.d.ts.map +1 -1
  766. package/dist/utils/shell.js.map +1 -1
  767. package/dist/utils/syntax-highlight.js.map +1 -1
  768. package/dist/utils/version-check.js.map +1 -1
  769. package/docs/app-server.md +14 -0
  770. package/docs/extensions.md +28 -1
  771. package/docs/keybindings.md +1 -0
  772. package/docs/providers.md +1 -0
  773. package/docs/rpc.md +95 -3
  774. package/docs/settings.md +18 -0
  775. package/docs/skills.md +1 -1
  776. package/docs/tui.md +6 -0
  777. package/docs/usage.md +2 -1
  778. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +30 -0
  779. package/node_modules/@code-yeongyu/senpi-codemode/README.md +17 -2
  780. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  781. package/node_modules/@code-yeongyu/senpi-codemode/src/config/settings.ts +35 -15
  782. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +13 -2
  783. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt-template.ts +76 -0
  784. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +6 -77
  785. package/node_modules/@code-yeongyu/senpi-codemode/src/timeouts/run-budget.ts +107 -0
  786. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-deadlines.ts +76 -0
  787. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-execution.ts +25 -14
  788. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-contract.ts +4 -0
  789. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +47 -40
  790. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-notification.ts +2 -0
  791. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-snapshot.ts +5 -0
  792. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +8 -3
  793. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +17 -187
  794. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/run-eval-cell.ts +189 -0
  795. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +66 -56
  796. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  797. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +1 -1
  798. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  799. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  800. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  801. package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.d.ts.map +1 -1
  802. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  803. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  804. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  805. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  806. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  807. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts.map +1 -1
  808. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  809. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  810. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts.map +1 -1
  811. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js.map +1 -1
  812. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts.map +1 -1
  813. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js.map +1 -1
  814. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts.map +1 -1
  815. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts.map +1 -1
  816. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js.map +1 -1
  817. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts.map +1 -1
  818. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js.map +1 -1
  819. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts.map +1 -1
  820. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js.map +1 -1
  821. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  822. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  823. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts.map +1 -1
  824. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js.map +1 -1
  825. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js.map +1 -1
  826. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts.map +1 -1
  827. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts +36 -36
  828. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts.map +1 -1
  829. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  830. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
  831. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
  832. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
  833. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js.map +1 -1
  834. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +5 -0
  835. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  836. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  837. package/node_modules/@earendil-works/pi-agent-core/package.json +4 -4
  838. package/node_modules/@earendil-works/pi-ai/README.md +1 -0
  839. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts +3 -1
  840. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  841. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +6 -2
  842. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  843. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  844. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  845. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  846. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts.map +1 -1
  847. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.d.ts.map +1 -1
  848. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js.map +1 -1
  849. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/stream-retry.d.ts.map +1 -1
  850. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
  851. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.js.map +1 -1
  852. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.js.map +1 -1
  853. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  854. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
  855. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  856. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  857. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  858. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +5 -0
  859. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  860. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.d.ts +4 -0
  861. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.d.ts.map +1 -0
  862. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.js +15 -0
  863. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-edit.js.map +1 -0
  864. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.d.ts +60 -0
  865. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.d.ts.map +1 -0
  866. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.js +93 -0
  867. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-params.js.map +1 -0
  868. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.d.ts +12 -0
  869. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.d.ts.map +1 -0
  870. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.js +96 -0
  871. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images-result.js.map +1 -0
  872. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts +3 -6
  873. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts.map +1 -1
  874. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js +26 -119
  875. package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js.map +1 -1
  876. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  877. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  878. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
  879. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
  880. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js.map +1 -1
  881. package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js.map +1 -1
  882. package/node_modules/@earendil-works/pi-ai/dist/auth/credential-store.d.ts.map +1 -1
  883. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts.map +1 -1
  884. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js.map +1 -1
  885. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +1 -1
  886. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.d.ts +47 -0
  887. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.d.ts.map +1 -0
  888. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.js +126 -0
  889. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth-refresh.js.map +1 -0
  890. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/failover.d.ts.map +1 -1
  891. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/select.d.ts.map +1 -1
  892. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.d.ts +12 -0
  893. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.d.ts.map +1 -0
  894. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.js +44 -0
  895. package/node_modules/@earendil-works/pi-ai/dist/auth/refresh-credential.js.map +1 -0
  896. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts +2 -0
  897. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts.map +1 -1
  898. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +26 -35
  899. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js.map +1 -1
  900. package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
  901. package/node_modules/@earendil-works/pi-ai/dist/cursor/model-capabilities.js.map +1 -1
  902. package/node_modules/@earendil-works/pi-ai/dist/cursor/selection-descriptor.js.map +1 -1
  903. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  904. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +1 -0
  905. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  906. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +99 -66
  907. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  908. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +34 -1
  909. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  910. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts +1 -0
  911. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts.map +1 -1
  912. package/node_modules/@earendil-works/pi-ai/dist/images.js +1 -0
  913. package/node_modules/@earendil-works/pi-ai/dist/images.js.map +1 -1
  914. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts.map +1 -1
  915. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  916. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +2 -0
  917. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  918. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -0
  919. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  920. package/node_modules/@earendil-works/pi-ai/dist/models.js +3 -28
  921. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  922. package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.d.ts.map +1 -1
  923. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  924. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -0
  925. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  926. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  927. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  928. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  929. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  930. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  931. package/node_modules/@earendil-works/pi-ai/dist/providers/data/venice.json +1 -0
  932. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  933. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  934. package/node_modules/@earendil-works/pi-ai/dist/providers/ollama.js.map +1 -1
  935. package/node_modules/@earendil-works/pi-ai/dist/providers/radius.js.map +1 -1
  936. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.d.ts +3 -0
  937. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.d.ts.map +1 -0
  938. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.js +15 -0
  939. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.js.map +1 -0
  940. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.d.ts +4 -0
  941. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.d.ts.map +1 -0
  942. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.js +6 -0
  943. package/node_modules/@earendil-works/pi-ai/dist/providers/venice.models.js.map +1 -0
  944. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/context-transformer.js.map +1 -1
  945. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts.map +1 -1
  946. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/protocols/kimi-xtml/parse.js.map +1 -1
  947. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-content-lifecycle.d.ts.map +1 -1
  948. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-event-stream.d.ts.map +1 -1
  949. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.d.ts.map +1 -1
  950. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-native-projection.js.map +1 -1
  951. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-terminal.d.ts.map +1 -1
  952. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-stream-wrapper.js.map +1 -1
  953. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.d.ts.map +1 -1
  954. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/recovery-text-projection.js.map +1 -1
  955. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-thinking-projection.d.ts.map +1 -1
  956. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.d.ts.map +1 -1
  957. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper-shared.js.map +1 -1
  958. package/node_modules/@earendil-works/pi-ai/dist/tool-call-middleware/stream-wrapper.js.map +1 -1
  959. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +20 -3
  960. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  961. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  962. package/node_modules/@earendil-works/pi-ai/dist/utils/deferred-tools.js.map +1 -1
  963. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  964. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +3 -1
  965. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  966. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
  967. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js.map +1 -1
  968. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  969. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
  970. package/node_modules/@earendil-works/pi-ai/package.json +3 -3
  971. package/node_modules/@earendil-works/pi-pty/dist/loader.d.ts.map +1 -1
  972. package/node_modules/@earendil-works/pi-pty/dist/loader.js.map +1 -1
  973. package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.d.ts.map +1 -1
  974. package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.js.map +1 -1
  975. package/node_modules/@earendil-works/pi-pty/dist/quarantine.js.map +1 -1
  976. package/node_modules/@earendil-works/pi-pty/dist/registry-types.d.ts.map +1 -1
  977. package/node_modules/@earendil-works/pi-pty/dist/registry.d.ts.map +1 -1
  978. package/node_modules/@earendil-works/pi-pty/dist/registry.js.map +1 -1
  979. package/node_modules/@earendil-works/pi-pty/dist/screen.d.ts.map +1 -1
  980. package/node_modules/@earendil-works/pi-pty/dist/screen.js.map +1 -1
  981. package/node_modules/@earendil-works/pi-pty/dist/session-bun.js.map +1 -1
  982. package/node_modules/@earendil-works/pi-pty/dist/session.d.ts.map +1 -1
  983. package/node_modules/@earendil-works/pi-pty/dist/session.js.map +1 -1
  984. package/node_modules/@earendil-works/pi-pty/package.json +2 -2
  985. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  986. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts.map +1 -1
  987. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  988. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  989. package/node_modules/@earendil-works/pi-tui/dist/components/alt-screen-flash.d.ts.map +1 -1
  990. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  991. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +1 -1
  992. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  993. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  994. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.d.ts.map +1 -1
  995. package/node_modules/@earendil-works/pi-tui/dist/components/h-stack.js.map +1 -1
  996. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
  997. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
  998. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  999. package/node_modules/@earendil-works/pi-tui/dist/components/latex.d.ts.map +1 -1
  1000. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  1001. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  1002. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  1003. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  1004. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts.map +1 -1
  1005. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js.map +1 -1
  1006. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  1007. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  1008. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  1009. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  1010. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +1 -1
  1011. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +1 -1
  1012. package/node_modules/@earendil-works/pi-tui/dist/components/stack.d.ts.map +1 -1
  1013. package/node_modules/@earendil-works/pi-tui/dist/components/stack.js.map +1 -1
  1014. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
  1015. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
  1016. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +1 -1
  1017. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +1 -1
  1018. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.d.ts.map +1 -1
  1019. package/node_modules/@earendil-works/pi-tui/dist/components/v-stack.js.map +1 -1
  1020. package/node_modules/@earendil-works/pi-tui/dist/image-markers.d.ts.map +1 -1
  1021. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  1022. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  1023. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  1024. package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +1 -1
  1025. package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +1 -1
  1026. package/node_modules/@earendil-works/pi-tui/dist/kill-ring.d.ts.map +1 -1
  1027. package/node_modules/@earendil-works/pi-tui/dist/mux.js.map +1 -1
  1028. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  1029. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js.map +1 -1
  1030. package/node_modules/@earendil-works/pi-tui/dist/paste-markers.d.ts.map +1 -1
  1031. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  1032. package/node_modules/@earendil-works/pi-tui/dist/stdin-buffer.js.map +1 -1
  1033. package/node_modules/@earendil-works/pi-tui/dist/terminal-capabilities.js.map +1 -1
  1034. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  1035. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  1036. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  1037. package/node_modules/@earendil-works/pi-tui/dist/tmux-image-probe.js.map +1 -1
  1038. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  1039. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  1040. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -1
  1041. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  1042. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  1043. package/node_modules/@earendil-works/pi-tui/dist/undo-stack.d.ts.map +1 -1
  1044. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  1045. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  1046. package/node_modules/css-tree/cjs/data-patch.cjs +853 -5
  1047. package/node_modules/css-tree/cjs/data.cjs +13598 -3
  1048. package/node_modules/css-tree/cjs/version.cjs +1 -3
  1049. package/node_modules/css-tree/lib/data-patch.js +853 -4
  1050. package/node_modules/css-tree/lib/data.js +13598 -5
  1051. package/node_modules/css-tree/lib/version.js +1 -5
  1052. package/package.json +8 -8
  1053. package/vendor/pi-client/client.d.ts.map +1 -1
  1054. package/vendor/pi-client/client.js.map +1 -1
  1055. package/vendor/pi-client/connection.d.ts.map +1 -1
  1056. package/vendor/pi-client/connection.js.map +1 -1
  1057. package/vendor/pi-client/errors.d.ts.map +1 -1
  1058. package/vendor/pi-client/session-handle.d.ts.map +1 -1
  1059. package/vendor/pi-client/state.d.ts.map +1 -1
  1060. package/vendor/pi-protocol/cbor/decoder.js.map +1 -1
  1061. package/vendor/pi-protocol/cbor/options.d.ts.map +1 -1
  1062. package/vendor/pi-protocol/codec.d.ts.map +1 -1
  1063. package/vendor/pi-protocol/codec.js.map +1 -1
  1064. package/vendor/pi-protocol/framing.d.ts.map +1 -1
  1065. package/vendor/pi-protocol/schemas.d.ts +678 -678
@@ -1 +1 @@
1
- {"version":3,"file":"openai-completions.js","sourceRoot":"","sources":["../../src/api/openai-completions.ts"],"names":[],"mappings":"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","sourcesContent":["import OpenAI from \"openai\";\nimport type {\n\tChatCompletionAssistantMessageParam,\n\tChatCompletionChunk,\n\tChatCompletionContentPart,\n\tChatCompletionContentPartImage,\n\tChatCompletionContentPartText,\n\tChatCompletionDeveloperMessageParam,\n\tChatCompletionMessageParam,\n\tChatCompletionMessageToolCall,\n\tChatCompletionSystemMessageParam,\n\tChatCompletionToolMessageParam,\n} from \"openai/resources/chat/completions.js\";\nimport type { FunctionParameters } from \"openai/resources/shared.js\";\nimport {\n\tcalculateCost,\n\tclampThinkingLevel,\n\tinferOpenAIThinkingLevelMap,\n\tsupportsMax,\n\tsupportsXhigh,\n} from \"../models.ts\";\nimport type {\n\tAssistantMessage,\n\tCacheRetention,\n\tChatTemplateKwargValue,\n\tContext,\n\tImageContent,\n\tJsonValue,\n\tMessage,\n\tModel,\n\tOpenAICompletionsCompat,\n\tProviderEnv,\n\tProviderHeaders,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tThinkingContent,\n\tThinkingTokenBudgetField,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\nimport { formatProviderError, normalizeProviderError } from \"../utils/error-body.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { shortHash } from \"../utils/hash.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { getPiUserAgent } from \"../utils/pi-user-agent.ts\";\nimport {\n\tgetOpenAICompletionsCompat as getCompat,\n\ttype ResolvedOpenAICompletionsCompat,\n} from \"../utils/prompt-cache-ttl.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { retryProviderStreamRequest } from \"../utils/provider-retry.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { isForcedToolChoiceUnsupportedError, omitToolChoiceParam } from \"../utils/tool-choice-fallback.ts\";\nimport {\n\tnormalizeToolParametersForMoonshot,\n\tnormalizeToolParametersForOpenAICompat,\n} from \"../utils/tool-schema-compat.ts\";\nimport {\n\tappendGrammarToolInputJsonDelta,\n\tcreateGrammarToolInputProperties,\n\ttype GrammarToolInputJsonBuffer,\n\tgetGrammarToolInput,\n\tgetJsonSchemaToolParameters,\n\tresolveGrammarConstrainedSampling,\n\tresolveJsonSchemaStrictSampling,\n} from \"./constrained-sampling.ts\";\nimport { buildCopilotDynamicHeaders, hasCopilotVisionInput } from \"./github-copilot-headers.ts\";\nimport { resolveOpenAIClientAuth } from \"./openai-client-auth.ts\";\nimport { clampOpenAIPromptCacheKey } from \"./openai-prompt-cache.ts\";\nimport {\n\tapplyExtraBody,\n\tbuildBaseOptions,\n\tclampMaxForOpenAI,\n\tclampThinkingBudgetToAnswerRoom,\n\tOPENAI_COMPLETIONS_RESERVED_BODY_KEYS,\n\tthinkingBudgetForLevel,\n} from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\nexport {\n\tgetOpenAICompletionsCompat as getCompat,\n\ttype ResolvedOpenAICompletionsCompat,\n} from \"../utils/prompt-cache-ttl.ts\";\n\ntype ChatCompletionChoiceWithUsage = ChatCompletionChunk.Choice & {\n\tusage?: Parameters<typeof parseChunkUsage>[0];\n};\ntype OpenAICompletionsRequestParams = Omit<\n\tOpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming,\n\t\"max_tokens\" | \"reasoning_effort\"\n> & {\n\tmax_tokens?: number | null;\n\ttool_stream?: boolean;\n\tenable_thinking?: boolean;\n\tchat_template_kwargs?: { enable_thinking: boolean; preserve_thinking: boolean };\n\tthinking?: { type: \"enabled\" | \"disabled\" } | string;\n\treasoning_effort?: string;\n\tprovider?: OpenAICompletionsCompat[\"openRouterRouting\"];\n\tproviderOptions?: { gateway: Record<string, string[]> };\n\tsession_id?: string;\n};\n\ntype ReasoningEffort = NonNullable<OpenAICompletionsOptions[\"reasoningEffort\"]>;\ntype ThinkingLevelMap = NonNullable<Model<\"openai-completions\">[\"thinkingLevelMap\"]>;\n\nconst KIMI_K3_THINKING_LEVEL_MAP = {\n\toff: null,\n\tminimal: null,\n\tlow: \"low\",\n\tmedium: null,\n\thigh: \"high\",\n\txhigh: null,\n\tmax: \"max\",\n} satisfies ThinkingLevelMap;\n\nconst DEEPSEEK_THINKING_LEVEL_MAP = {\n\tminimal: \"high\",\n\tlow: \"high\",\n\tmedium: \"high\",\n\thigh: \"high\",\n\txhigh: \"max\",\n\tmax: \"max\",\n} satisfies ThinkingLevelMap;\n\nconst OPENROUTER_DEEPSEEK_THINKING_LEVEL_MAP = {\n\tminimal: \"high\",\n\tlow: \"high\",\n\tmedium: \"high\",\n\thigh: \"high\",\n\txhigh: \"high\",\n\tmax: \"high\",\n} satisfies ThinkingLevelMap;\n\nconst MIMO_THINKING_LEVEL_MAP = {\n\tminimal: \"low\",\n\tlow: \"low\",\n\tmedium: \"medium\",\n\thigh: \"high\",\n\txhigh: \"high\",\n\tmax: null,\n} satisfies ThinkingLevelMap;\n\nconst OLLAMA_THINKING_LEVEL_MAP = {\n\toff: \"none\",\n\tminimal: null,\n\tlow: \"low\",\n\tmedium: \"medium\",\n\thigh: \"high\",\n\txhigh: null,\n\tmax: \"high\",\n} satisfies ThinkingLevelMap;\n\nfunction getThinkingLevelMap(\n\tmodel: Model<\"openai-completions\">,\n\tcompat: ResolvedOpenAICompletionsCompat,\n): ThinkingLevelMap | undefined {\n\tconst inferred = inferOpenAIThinkingLevelMap(model);\n\tif (inferred !== undefined) return inferred;\n\n\tconst id = model.id.toLowerCase();\n\tconst isKimiK3 = id === \"k3\" || id.startsWith(\"k3-\") || /(?:^|[/:-])kimi-k3(?:$|[/.:_-])/.test(id);\n\tconst isDeepSeek = id.includes(\"deepseek\");\n\tconst isMiMo = /\\bmimo\\b/.test(id);\n\tconst isGlm5x = /(?:^|[/:-])glm-5\\.[23](?:$|[/.:_-])/.test(id);\n\n\tif (model.provider === \"ollama\") {\n\t\treturn OLLAMA_THINKING_LEVEL_MAP;\n\t}\n\tif (isKimiK3) {\n\t\treturn KIMI_K3_THINKING_LEVEL_MAP;\n\t}\n\tif (compat.thinkingFormat === \"openrouter\" && isDeepSeek) {\n\t\treturn OPENROUTER_DEEPSEEK_THINKING_LEVEL_MAP;\n\t}\n\tif ((compat.thinkingFormat === \"openai\" || compat.thinkingFormat === \"openrouter\") && isMiMo) {\n\t\treturn MIMO_THINKING_LEVEL_MAP;\n\t}\n\tif (isDeepSeek) {\n\t\treturn DEEPSEEK_THINKING_LEVEL_MAP;\n\t}\n\tif (isGlm5x) {\n\t\tif (compat.thinkingFormat === \"zai\") {\n\t\t\treturn DEEPSEEK_THINKING_LEVEL_MAP;\n\t\t}\n\t\tif (compat.thinkingFormat === \"openrouter\") {\n\t\t\treturn { xhigh: \"xhigh\" };\n\t\t}\n\t\treturn { max: \"max\" };\n\t}\n\n\treturn undefined;\n}\n\nfunction resolveReasoningEffort(\n\tthinkingLevelMap: ThinkingLevelMap | undefined,\n\teffort: ReasoningEffort,\n): string | undefined {\n\tconst mapped = thinkingLevelMap?.[effort];\n\treturn mapped === undefined ? effort : typeof mapped === \"string\" ? mapped : undefined;\n}\n\n/**\n * Check if conversation messages contain tool calls or tool results.\n * This is needed because Anthropic (via proxy) requires the tools param\n * to be present when messages include tool_calls or tool role messages.\n */\nfunction hasToolHistory(messages: Message[]): boolean {\n\tfor (const msg of messages) {\n\t\tif (msg.role === \"toolResult\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (msg.role === \"assistant\") {\n\t\t\tif (msg.content.some((block) => block.type === \"toolCall\")) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction getDeferredToolNames(messages: Message[]): Set<string> {\n\tconst names = new Set<string>();\n\tfor (const message of messages) {\n\t\tif (message.role === \"toolResult\") {\n\t\t\tfor (const name of message.addedToolNames ?? []) {\n\t\t\t\tnames.add(name);\n\t\t\t}\n\t\t}\n\t}\n\treturn names;\n}\n\nfunction getToolsByName(tools: Tool[] | undefined, names: Iterable<string>): Tool[] {\n\tif (!tools) return [];\n\tconst toolsByName = new Map(tools.map((tool) => [tool.name, tool]));\n\treturn Array.from(names)\n\t\t.map((name) => toolsByName.get(name))\n\t\t.filter((tool): tool is Tool => tool !== undefined);\n}\n\nfunction isTextContentBlock(block: { type: string }): block is TextContent {\n\treturn block.type === \"text\";\n}\n\nfunction isThinkingContentBlock(block: { type: string }): block is ThinkingContent {\n\treturn block.type === \"thinking\";\n}\n\nfunction isToolCallBlock(block: { type: string }): block is ToolCall {\n\treturn block.type === \"toolCall\";\n}\n\nfunction isImageContentBlock(block: { type: string }): block is ImageContent {\n\treturn block.type === \"image\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction getOpenRouterRawMetadata(error: unknown): string | undefined {\n\tif (!isRecord(error) || !isRecord(error.error) || !isRecord(error.error.metadata)) return undefined;\n\tconst rawMetadata = error.error.metadata.raw;\n\treturn typeof rawMetadata === \"string\" ? rawMetadata : undefined;\n}\n\nfunction isForcedOpenAICompletionsToolChoice(\n\ttoolChoice: OpenAICompletionsRequestParams[\"tool_choice\"] | undefined,\n): boolean {\n\treturn toolChoice !== undefined && toolChoice !== \"auto\" && toolChoice !== \"none\";\n}\n\nfunction isReasoningDetailObject(detail: unknown): detail is Record<string, unknown> {\n\treturn typeof detail === \"object\" && detail !== null && !Array.isArray(detail);\n}\n\nfunction hasValidCommonReasoningDetailFields(candidate: Record<string, unknown>): boolean {\n\treturn (\n\t\t(candidate.id === undefined || candidate.id === null || typeof candidate.id === \"string\") &&\n\t\t(candidate.format === undefined || typeof candidate.format === \"string\") &&\n\t\t(candidate.index === undefined || typeof candidate.index === \"number\")\n\t);\n}\n\nfunction isOpenAIReasoningDetail(detail: unknown): detail is OpenAIReasoningDetail {\n\tif (!isReasoningDetailObject(detail) || !hasValidCommonReasoningDetailFields(detail)) {\n\t\treturn false;\n\t}\n\tswitch (detail.type) {\n\t\tcase \"reasoning.summary\":\n\t\t\treturn typeof detail.summary === \"string\";\n\t\tcase \"reasoning.encrypted\":\n\t\t\treturn typeof detail.data === \"string\";\n\t\tcase \"reasoning.text\":\n\t\t\treturn (\n\t\t\t\ttypeof detail.text === \"string\" &&\n\t\t\t\t(detail.signature === undefined || detail.signature === null || typeof detail.signature === \"string\")\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport interface OpenAICompletionsOptions extends StreamOptions {\n\ttoolChoice?: OpenAI.Chat.Completions.ChatCompletionToolChoiceOption;\n\treasoningEffort?: \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\t/** Token budgets per thinking level. Used when `compat.thinkingTokenBudgetField` or `compat.supportsThinkingTokenBudget` is set, or by `{ \"$var\": \"thinking.budget\" }`. */\n\tthinkingBudgets?: ThinkingBudgets;\n}\n\nexport interface ConvertCompletionsMessagesOptions {\n\tpreserveThinking?: boolean;\n\tgrammarToolInputProperties?: ReadonlyMap<string, string>;\n}\n\ninterface OpenAICompatCacheControl {\n\ttype: \"ephemeral\";\n\tttl?: string;\n}\n\ntype ResolvedChatTemplateKwargValue = string | number | boolean | null;\n\ntype ChatCompletionInstructionMessageParam = ChatCompletionDeveloperMessageParam | ChatCompletionSystemMessageParam;\n\ntype KimiToolSystemMessageParam = {\n\trole: \"system\";\n\ttools: OpenAI.Chat.Completions.ChatCompletionTool[];\n};\n\ntype OpenAIReasoningDetailBase = Record<string, JsonValue> & {\n\tid?: string | null;\n\tformat?: string;\n\tindex?: number;\n};\n\ntype OpenAIReasoningSummaryDetail = OpenAIReasoningDetailBase & {\n\ttype: \"reasoning.summary\";\n\tsummary: string;\n};\n\ntype OpenAIEncryptedReasoningDetail = OpenAIReasoningDetailBase & {\n\ttype: \"reasoning.encrypted\";\n\tdata: string;\n};\n\ntype OpenAIReasoningTextDetail = OpenAIReasoningDetailBase & {\n\ttype: \"reasoning.text\";\n\ttext: string;\n\tsignature?: string | null;\n};\n\ntype OpenAIReasoningDetail = OpenAIReasoningSummaryDetail | OpenAIEncryptedReasoningDetail | OpenAIReasoningTextDetail;\n\nfunction parseOpenAIReasoningDetails(signature: string | undefined): OpenAIReasoningDetail[] | undefined {\n\tif (!signature) return undefined;\n\ttry {\n\t\tconst parsed = JSON.parse(signature) as unknown;\n\t\treturn Array.isArray(parsed) && parsed.length > 0 && parsed.every(isOpenAIReasoningDetail) ? parsed : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction parseLegacyEncryptedReasoningDetail(\n\tsignature: string | undefined,\n): OpenAIEncryptedReasoningDetail | undefined {\n\tif (!signature) return undefined;\n\ttry {\n\t\tconst parsed = JSON.parse(signature) as unknown;\n\t\treturn isOpenAIReasoningDetail(parsed) &&\n\t\t\tparsed.type === \"reasoning.encrypted\" &&\n\t\t\ttypeof parsed.id === \"string\" &&\n\t\t\tparsed.id.length > 0 &&\n\t\t\tparsed.data.length > 0\n\t\t\t? parsed\n\t\t\t: undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction fillMissingCommonReasoningDetailFields(\n\ttarget: OpenAIReasoningDetailBase,\n\tsource: OpenAIReasoningDetail,\n): void {\n\ttarget.id ??= source.id;\n\ttarget.format ||= source.format;\n\ttarget.index ??= source.index;\n}\n\nfunction appendOpenAIReasoningDetail(details: OpenAIReasoningDetail[], detail: OpenAIReasoningDetail): void {\n\tconst lastDetail = details[details.length - 1];\n\tif (detail.type === \"reasoning.text\" && lastDetail?.type === \"reasoning.text\") {\n\t\tlastDetail.text += detail.text;\n\t\tlastDetail.signature ||= detail.signature;\n\t\tfillMissingCommonReasoningDetailFields(lastDetail, detail);\n\t\treturn;\n\t}\n\tif (detail.type === \"reasoning.summary\" && lastDetail?.type === \"reasoning.summary\") {\n\t\tlastDetail.summary += detail.summary;\n\t\tfillMissingCommonReasoningDetailFields(lastDetail, detail);\n\t\treturn;\n\t}\n\tdetails.push({ ...detail });\n}\n\ntype OpenAICompletionsReasoningField = \"reasoning\" | \"reasoning_content\" | \"reasoning_text\";\n\ntype ChatCompletionAssistantMessageParamWithReasoning = ChatCompletionAssistantMessageParam &\n\tPartial<Record<OpenAICompletionsReasoningField, string>> & {\n\t\treasoning_details?: JsonValue[];\n\t};\n\ntype ChatCompletionTextPartWithCacheControl = ChatCompletionContentPartText & {\n\tcache_control?: OpenAICompatCacheControl;\n};\n\ntype ChatCompletionToolWithCacheControl = OpenAI.Chat.Completions.ChatCompletionTool & {\n\tcache_control?: OpenAICompatCacheControl;\n};\n\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nexport const stream: StreamFunction<\"openai-completions\", OpenAICompletionsOptions> = (\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\toptions?: OpenAICompletionsOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t(async () => {\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: model.api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"pending\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\t// `reasoning_details` are replay metadata, not user-visible stream deltas.\n\t\t// Keep them in memory during streaming and serialize once when the block is finalized.\n\t\tlet streamedReasoningDetails: OpenAIReasoningDetail[] | undefined;\n\t\tconst applyStreamedReasoningDetails = (block: ThinkingContent): void => {\n\t\t\tif (streamedReasoningDetails !== undefined) {\n\t\t\t\tblock.thinkingSignature = JSON.stringify(streamedReasoningDetails);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tconst clientAuth = resolveOpenAIClientAuth(model.provider, options?.apiKey, options?.headers);\n\t\t\tconst compat = getCompat(model);\n\t\t\tconst grammarToolInputProperties = createGrammarToolInputProperties(\n\t\t\t\tcontext.tools,\n\t\t\t\tcompat.supportsOpenAIGrammarTools,\n\t\t\t);\n\t\t\tconst cacheRetention = resolveCacheRetention(options?.cacheRetention ?? model.cacheRetention, options?.env);\n\t\t\tconst cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n\t\t\tconst client = createClient(\n\t\t\t\tmodel,\n\t\t\t\tcontext,\n\t\t\t\tclientAuth.apiKey,\n\t\t\t\tclientAuth.headers,\n\t\t\t\toptions?.fetch,\n\t\t\t\tcacheSessionId,\n\t\t\t\tcompat,\n\t\t\t);\n\t\t\tlet params = buildParams(model, context, options, compat, cacheRetention, grammarToolInputProperties);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as OpenAICompletionsRequestParams;\n\t\t\t}\n\t\t\tparams = normalizeRequestToolSchemas(params, compat);\n\t\t\tconst requestOptions = {\n\t\t\t\t...(options?.signal ? { signal: options.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: 0,\n\t\t\t};\n\t\t\tconst createChatCompletion = client.chat.completions.create.bind(client.chat.completions) as (\n\t\t\t\tbody: OpenAICompletionsRequestParams,\n\t\t\t\trequestConfig: typeof requestOptions,\n\t\t\t) => { withResponse(): Promise<{ data: AsyncIterable<ChatCompletionChunk>; response: Response }> };\n\t\t\tconst createStream = (body: OpenAICompletionsRequestParams) =>\n\t\t\t\tcreateChatCompletion(body, requestOptions).withResponse();\n\t\t\tconst createRequest = async () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn await createStream(params);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (isForcedToolChoiceUnsupportedError(error, isForcedOpenAICompletionsToolChoice(params.tool_choice))) {\n\t\t\t\t\t\tparams = omitToolChoiceParam(params);\n\t\t\t\t\t\treturn createStream(params);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst { stream: openaiStream } = await retryProviderStreamRequest(\n\t\t\t\tasync () => {\n\t\t\t\t\tconst { data, response } = await createRequest();\n\t\t\t\t\tawait options?.onResponse?.(\n\t\t\t\t\t\t{ status: response.status, headers: headersToRecord(response.headers) },\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t);\n\t\t\t\t\treturn { stream: data, metadata: response };\n\t\t\t\t},\n\t\t\t\t{ maxRetries: options?.maxRetries, maxRetryDelayMs: options?.maxRetryDelayMs, signal: options?.signal },\n\t\t\t);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tinterface StreamingToolCallBlock extends ToolCall {\n\t\t\t\tpartialArgs?: string;\n\t\t\t\tcustomInput?: {\n\t\t\t\t\tproperty: string;\n\t\t\t\t\tjsonBuffer: GrammarToolInputJsonBuffer;\n\t\t\t\t};\n\t\t\t\tstreamIndex?: number;\n\t\t\t}\n\t\t\ttype StreamingBlock = TextContent | ThinkingContent | StreamingToolCallBlock;\n\t\t\ttype StreamingToolCallDelta = {\n\t\t\t\tindex?: number;\n\t\t\t\tid?: string;\n\t\t\t\ttype?: string;\n\t\t\t\tfunction?: { name?: string; arguments?: string };\n\t\t\t\tcustom?: { name?: string; input?: string };\n\t\t\t};\n\n\t\t\tlet textBlock: TextContent | null = null;\n\t\t\tlet thinkingBlock: ThinkingContent | null = null;\n\t\t\tlet activeBlock: StreamingBlock | null = null;\n\t\t\tlet deferMixedEvents = false;\n\t\t\tlet hasFinishReason = false;\n\t\t\tconst deferredTextDeltas: string[] = [];\n\t\t\tconst deferredThinkingDeltas: string[] = [];\n\t\t\tconst deferredToolCallDeltas = new Map<StreamingToolCallBlock, string[]>();\n\t\t\tconst toolCallBlocksByIndex = new Map<number, StreamingToolCallBlock>();\n\t\t\tconst toolCallBlocksById = new Map<string, StreamingToolCallBlock>();\n\t\t\tconst blocks = output.content as StreamingBlock[];\n\t\t\tconst getContentIndex = (block: StreamingBlock) => blocks.indexOf(block);\n\t\t\tconst getCustomToolCallInput = (block: StreamingToolCallBlock): string => {\n\t\t\t\tconst property = block.customInput?.property;\n\t\t\t\tif (property === undefined) return \"\";\n\t\t\t\tconst value = block.arguments[property];\n\t\t\t\treturn typeof value === \"string\" ? value : \"\";\n\t\t\t};\n\t\t\tconst appendCustomToolCallInput = (\n\t\t\t\tblock: StreamingToolCallBlock,\n\t\t\t\tnextInput: string,\n\t\t\t\tclose: boolean,\n\t\t\t): string | undefined => {\n\t\t\t\tconst customInput = block.customInput;\n\t\t\t\tif (!customInput) return undefined;\n\t\t\t\tconst delta = appendGrammarToolInputJsonDelta(\n\t\t\t\t\tcustomInput.jsonBuffer,\n\t\t\t\t\tcustomInput.property,\n\t\t\t\t\tnextInput,\n\t\t\t\t\tclose,\n\t\t\t\t);\n\t\t\t\tblock.arguments = { [customInput.property]: nextInput };\n\t\t\t\treturn delta;\n\t\t\t};\n\t\t\tconst finishBlock = (block: StreamingBlock) => {\n\t\t\t\tconst contentIndex = getContentIndex(block);\n\t\t\t\tif (contentIndex === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"text_end\",\n\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\tcontent: block.text,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\tapplyStreamedReasoningDetails(block);\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"thinking_end\",\n\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\tcontent: block.thinking,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tif (block.customInput) {\n\t\t\t\t\t\tconst delta = appendCustomToolCallInput(block, getCustomToolCallInput(block), true);\n\t\t\t\t\t\tif (delta !== undefined) {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall_delta\",\n\t\t\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialArgs);\n\t\t\t\t\t}\n\t\t\t\t\t// Finalize in-place and strip the scratch buffers so replay only\n\t\t\t\t\t// carries parsed arguments.\n\t\t\t\t\tdelete block.partialArgs;\n\t\t\t\t\tdelete block.customInput;\n\t\t\t\t\tdelete block.streamIndex;\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"toolcall_end\",\n\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\ttoolCall: block,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst finishActiveBlock = () => {\n\t\t\t\tif (!activeBlock) return;\n\t\t\t\tfinishBlock(activeBlock);\n\t\t\t\tactiveBlock = null;\n\t\t\t};\n\t\t\tconst ensureTextBlock = () => {\n\t\t\t\tif (!textBlock) {\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tfinishActiveBlock();\n\t\t\t\t\t\tthinkingBlock = null;\n\t\t\t\t\t}\n\t\t\t\t\ttextBlock = { type: \"text\", text: \"\" };\n\t\t\t\t\tblocks.push(textBlock);\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tactiveBlock = textBlock;\n\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex: getContentIndex(textBlock), partial: output });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn textBlock;\n\t\t\t};\n\t\t\tconst ensureThinkingBlock = (thinkingSignature: string) => {\n\t\t\t\tif (!thinkingBlock) {\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tfinishActiveBlock();\n\t\t\t\t\t\ttextBlock = null;\n\t\t\t\t\t}\n\t\t\t\t\tthinkingBlock = {\n\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\tthinking: \"\",\n\t\t\t\t\t\tthinkingSignature,\n\t\t\t\t\t};\n\t\t\t\t\tblocks.push(thinkingBlock);\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tactiveBlock = thinkingBlock;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking_start\",\n\t\t\t\t\t\t\tcontentIndex: getContentIndex(thinkingBlock),\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn thinkingBlock;\n\t\t\t};\n\t\t\tconst ensureToolCallBlock = (toolCall: StreamingToolCallDelta) => {\n\t\t\t\tconst streamIndex = typeof toolCall.index === \"number\" ? toolCall.index : undefined;\n\t\t\t\tconst name = toolCall.function?.name ?? toolCall.custom?.name ?? \"\";\n\t\t\t\tlet block = streamIndex !== undefined ? toolCallBlocksByIndex.get(streamIndex) : undefined;\n\t\t\t\tif (!block && toolCall.id) {\n\t\t\t\t\tblock = toolCallBlocksById.get(toolCall.id);\n\t\t\t\t}\n\t\t\t\tif (!block) {\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tfinishActiveBlock();\n\t\t\t\t\t\ttextBlock = null;\n\t\t\t\t\t\tthinkingBlock = null;\n\t\t\t\t\t}\n\t\t\t\t\t// Note: the \"input\" fallback here should/must not be taken. in case the LLM makes up\n\t\t\t\t\t// a tool we don't knwo about, we at least have a place to stash our stuff.\n\t\t\t\t\tconst customInputProperty =\n\t\t\t\t\t\ttoolCall.custom && !toolCall.function ? (grammarToolInputProperties.get(name) ?? \"input\") : undefined;\n\t\t\t\t\tconst hasCustomInput = customInputProperty !== undefined;\n\t\t\t\t\tblock = {\n\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\tid: toolCall.id || \"\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\targuments: hasCustomInput ? { [customInputProperty]: \"\" } : {},\n\t\t\t\t\t\tpartialArgs: hasCustomInput ? undefined : \"\",\n\t\t\t\t\t\tcustomInput: hasCustomInput\n\t\t\t\t\t\t\t? { property: customInputProperty, jsonBuffer: { input: \"\", started: false, closed: false } }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tstreamIndex,\n\t\t\t\t\t};\n\t\t\t\t\tif (streamIndex !== undefined) {\n\t\t\t\t\t\ttoolCallBlocksByIndex.set(streamIndex, block);\n\t\t\t\t\t}\n\t\t\t\t\tif (toolCall.id) {\n\t\t\t\t\t\ttoolCallBlocksById.set(toolCall.id, block);\n\t\t\t\t\t}\n\t\t\t\t\tblocks.push(block);\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tactiveBlock = block;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"toolcall_start\",\n\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (streamIndex !== undefined && block.streamIndex === undefined) {\n\t\t\t\t\tblock.streamIndex = streamIndex;\n\t\t\t\t\ttoolCallBlocksByIndex.set(streamIndex, block);\n\t\t\t\t}\n\t\t\t\tif (toolCall.id) {\n\t\t\t\t\ttoolCallBlocksById.set(toolCall.id, block);\n\t\t\t\t}\n\t\t\t\tif (!block.name && name) {\n\t\t\t\t\tblock.name = name;\n\t\t\t\t}\n\t\t\t\tif (toolCall.custom && !toolCall.function && !block.customInput) {\n\t\t\t\t\tconst customInputProperty = grammarToolInputProperties.get(block.name) ?? \"input\";\n\t\t\t\t\tblock.arguments = { [customInputProperty]: \"\" };\n\t\t\t\t\tblock.customInput = {\n\t\t\t\t\t\tproperty: customInputProperty,\n\t\t\t\t\t\tjsonBuffer: { input: \"\", started: false, closed: false },\n\t\t\t\t\t};\n\t\t\t\t\tdelete block.partialArgs;\n\t\t\t\t}\n\t\t\t\treturn block;\n\t\t\t};\n\t\t\tconst flushDeferredBlocks = () => {\n\t\t\t\tfor (const block of blocks) {\n\t\t\t\t\tconst contentIndex = getContentIndex(block);\n\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex, partial: output });\n\t\t\t\t\t\tfor (const delta of deferredTextDeltas) {\n\t\t\t\t\t\t\tstream.push({ type: \"text_delta\", contentIndex, delta, partial: output });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\tstream.push({ type: \"thinking_start\", contentIndex, partial: output });\n\t\t\t\t\t\tfor (const delta of deferredThinkingDeltas) {\n\t\t\t\t\t\t\tstream.push({ type: \"thinking_delta\", contentIndex, delta, partial: output });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstream.push({ type: \"toolcall_start\", contentIndex, partial: output });\n\t\t\t\t\t\tfor (const delta of deferredToolCallDeltas.get(block) ?? []) {\n\t\t\t\t\t\t\tstream.push({ type: \"toolcall_delta\", contentIndex, delta, partial: output });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfinishBlock(block);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor await (const chunk of openaiStream) {\n\t\t\t\tif (!chunk || typeof chunk !== \"object\") continue;\n\n\t\t\t\t// OpenAI documents ChatCompletionChunk.id as the unique chat completion identifier,\n\t\t\t\t// and each chunk in a streamed completion carries the same id.\n\t\t\t\toutput.responseId ||= chunk.id;\n\t\t\t\tif (typeof chunk.model === \"string\" && chunk.model.length > 0 && chunk.model !== model.id) {\n\t\t\t\t\toutput.responseModel ||= chunk.model;\n\t\t\t\t}\n\t\t\t\tif (chunk.usage) {\n\t\t\t\t\toutput.usage = parseChunkUsage(chunk.usage, model);\n\t\t\t\t}\n\n\t\t\t\tconst choice = Array.isArray(chunk.choices) ? chunk.choices[0] : undefined;\n\t\t\t\tif (!choice) continue;\n\n\t\t\t\t// Fallback: some providers (e.g., Moonshot) return usage\n\t\t\t\t// in choice.usage instead of the standard chunk.usage\n\t\t\t\tconst choiceUsage = (choice as ChatCompletionChoiceWithUsage).usage;\n\t\t\t\tif (!chunk.usage && choiceUsage) {\n\t\t\t\t\toutput.usage = parseChunkUsage(choiceUsage, model);\n\t\t\t\t}\n\n\t\t\t\tif (choice.finish_reason) {\n\t\t\t\t\toutput.rawStopReason = choice.finish_reason;\n\t\t\t\t\tconst finishReasonResult = mapStopReason(choice.finish_reason);\n\t\t\t\t\toutput.stopReason = finishReasonResult.stopReason;\n\t\t\t\t\tif (finishReasonResult.errorMessage) {\n\t\t\t\t\t\toutput.errorMessage = finishReasonResult.errorMessage;\n\t\t\t\t\t}\n\t\t\t\t\thasFinishReason = true;\n\t\t\t\t}\n\n\t\t\t\tif (choice.delta) {\n\t\t\t\t\tconst contentDelta =\n\t\t\t\t\t\ttypeof choice.delta.content === \"string\" && choice.delta.content.length > 0\n\t\t\t\t\t\t\t? choice.delta.content\n\t\t\t\t\t\t\t: null;\n\t\t\t\t\tconst reasoningFields = [\"reasoning_content\", \"reasoning\", \"reasoning_text\"];\n\t\t\t\t\tconst deltaFields = choice.delta as Record<string, unknown>;\n\t\t\t\t\tlet foundReasoningField: string | null = null;\n\t\t\t\t\tfor (const field of reasoningFields) {\n\t\t\t\t\t\tconst value = deltaFields[field];\n\t\t\t\t\t\tif (typeof value === \"string\" && value.length > 0) {\n\t\t\t\t\t\t\tfoundReasoningField = field;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (blocks.length === 0 && contentDelta && foundReasoningField) {\n\t\t\t\t\t\tdeferMixedEvents = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (contentDelta) {\n\t\t\t\t\t\tconst block = ensureTextBlock();\n\t\t\t\t\t\tblock.text += contentDelta;\n\t\t\t\t\t\tif (deferMixedEvents) {\n\t\t\t\t\t\t\tdeferredTextDeltas.push(contentDelta);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\t\tdelta: contentDelta,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Some endpoints return reasoning in reasoning_content (llama.cpp),\n\t\t\t\t\t// or reasoning (other openai compatible endpoints)\n\t\t\t\t\t// Use the first non-empty reasoning field to avoid duplication\n\t\t\t\t\t// (e.g., chutes.ai returns both reasoning_content and reasoning with same content)\n\t\t\t\t\tif (foundReasoningField) {\n\t\t\t\t\t\tconst delta = deltaFields[foundReasoningField];\n\t\t\t\t\t\tif (typeof delta === \"string\" && delta.length > 0) {\n\t\t\t\t\t\t\tconst thinkingSignature =\n\t\t\t\t\t\t\t\tmodel.provider === \"opencode-go\" && foundReasoningField === \"reasoning\"\n\t\t\t\t\t\t\t\t\t? \"reasoning_content\"\n\t\t\t\t\t\t\t\t\t: foundReasoningField;\n\t\t\t\t\t\t\tconst block = ensureThinkingBlock(thinkingSignature);\n\t\t\t\t\t\t\tblock.thinking += delta;\n\t\t\t\t\t\t\tif (deferMixedEvents) {\n\t\t\t\t\t\t\t\tdeferredThinkingDeltas.push(delta);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (choice?.delta?.tool_calls) {\n\t\t\t\t\t\tfor (const toolCall of choice.delta.tool_calls as StreamingToolCallDelta[]) {\n\t\t\t\t\t\t\tconst block = ensureToolCallBlock(toolCall);\n\t\t\t\t\t\t\tif (!block.id && toolCall.id) {\n\t\t\t\t\t\t\t\tblock.id = toolCall.id;\n\t\t\t\t\t\t\t\ttoolCallBlocksById.set(toolCall.id, block);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst name = toolCall.function?.name ?? toolCall.custom?.name;\n\t\t\t\t\t\t\tif (!block.name && name) {\n\t\t\t\t\t\t\t\tblock.name = name;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet delta = \"\";\n\t\t\t\t\t\t\tif (toolCall.function?.arguments) {\n\t\t\t\t\t\t\t\tdelta = toolCall.function.arguments;\n\t\t\t\t\t\t\t\tblock.partialArgs = (block.partialArgs ?? \"\") + toolCall.function.arguments;\n\t\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialArgs);\n\t\t\t\t\t\t\t} else if (toolCall.custom?.input) {\n\t\t\t\t\t\t\t\tconst nextInput = getCustomToolCallInput(block) + toolCall.custom.input;\n\t\t\t\t\t\t\t\tdelta = appendCustomToolCallInput(block, nextInput, false) ?? \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (deferMixedEvents) {\n\t\t\t\t\t\t\t\tconst deltas = deferredToolCallDeltas.get(block) ?? [];\n\t\t\t\t\t\t\t\tdeltas.push(delta);\n\t\t\t\t\t\t\t\tdeferredToolCallDeltas.set(block, deltas);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: \"toolcall_delta\",\n\t\t\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst reasoningDetails = (choice.delta as { reasoning_details?: unknown }).reasoning_details;\n\t\t\t\t\tif (Array.isArray(reasoningDetails)) {\n\t\t\t\t\t\tfor (const detail of reasoningDetails) {\n\t\t\t\t\t\t\tif (!isOpenAIReasoningDetail(detail)) continue;\n\t\t\t\t\t\t\tconst block = ensureThinkingBlock(\"\");\n\t\t\t\t\t\t\tconst preservedDetails = parseOpenAIReasoningDetails(block.thinkingSignature) ?? [];\n\t\t\t\t\t\t\tappendOpenAIReasoningDetail(preservedDetails, detail);\n\t\t\t\t\t\t\t// Keep provider replay data in the existing signature slot. OpenRouter\n\t\t\t\t\t\t\t// requires the complete reasoning_details sequence in its original order.\n\t\t\t\t\t\t\tblock.thinkingSignature = JSON.stringify(preservedDetails);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (deferMixedEvents) flushDeferredBlocks();\n\t\t\telse finishActiveBlock();\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"aborted\") {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\t\t\tif (!hasFinishReason && !compat.supportsFinishReason) {\n\t\t\t\toutput.stopReason = output.content.some((block) => block.type === \"toolCall\") ? \"toolUse\" : \"stop\";\n\t\t\t}\n\t\t\tif (output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(output.errorMessage || \"Provider returned an error stop reason\");\n\t\t\t}\n\t\t\tif ((compat.supportsFinishReason && !hasFinishReason) || output.stopReason === \"pending\") {\n\t\t\t\tthrow new Error(\"Stream ended without finish_reason\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\tapplyStreamedReasoningDetails(block);\n\t\t\t\t}\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// Streaming scratch buffers are only used during parsing; never persist them.\n\t\t\t\tdelete (block as { partialArgs?: string }).partialArgs;\n\t\t\t\tdelete (block as { customInput?: unknown }).customInput;\n\t\t\t\tdelete (block as { streamIndex?: number }).streamIndex;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatProviderError(normalizeProviderError(error));\n\t\t\t// Some providers via OpenRouter give additional information in this field.\n\t\t\t// normalizeProviderError already stringifies the parsed body (error.error)\n\t\t\t// into errorMessage, so only append the raw metadata when it is not already\n\t\t\t// present to avoid double-printing it.\n\t\t\tconst rawMetadata = getOpenRouterRawMetadata(error);\n\t\t\tif (rawMetadata && !output.errorMessage.includes(String(rawMetadata))) {\n\t\t\t\toutput.errorMessage += `\\n${rawMetadata}`;\n\t\t\t}\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimple: StreamFunction<\"openai-completions\", SimpleStreamOptions> = (\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tresolveOpenAIClientAuth(model.provider, options?.apiKey, options?.headers);\n\n\tconst base = {\n\t\t...buildBaseOptions(model, context, options, options?.apiKey),\n\t\t// Adapter-native callers may pass the richer OpenAI tool_choice shape; the\n\t\t// provider-neutral SimpleStreamOptions value is the fallback.\n\t\ttoolChoice: (options as OpenAICompletionsOptions | undefined)?.toolChoice ?? options?.toolChoice,\n\t} satisfies OpenAICompletionsOptions;\n\tconst compat = getCompat(model);\n\tconst thinkingLevelMap = getThinkingLevelMap(model, compat);\n\tconst thinkingModel = thinkingLevelMap === model.thinkingLevelMap ? model : { ...model, thinkingLevelMap };\n\tconst clampedReasoning = options?.reasoning\n\t\t? clampThinkingLevel(thinkingModel, options.reasoning)\n\t\t: model.id.includes(\"gpt-6-astra\")\n\t\t\t? \"off\"\n\t\t\t: undefined;\n\tconst normalizedReasoning =\n\t\tclampedReasoning === \"off\" && model.id.includes(\"gpt-6-astra\") ? \"low\" : clampedReasoning;\n\tconst reasoningEffort =\n\t\tnormalizedReasoning === \"off\"\n\t\t\t? undefined\n\t\t\t: normalizedReasoning === \"max\" && supportsMax(thinkingModel)\n\t\t\t\t? \"max\"\n\t\t\t\t: clampMaxForOpenAI(normalizedReasoning, supportsXhigh(thinkingModel));\n\treturn stream(model, context, {\n\t\t...base,\n\t\treasoningEffort,\n\t\tthinkingBudgets: options?.thinkingBudgets,\n\t} satisfies OpenAICompletionsOptions);\n};\n\nfunction createClient(\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\tapiKey: string,\n\toptionsHeaders?: ProviderHeaders,\n\tfetch?: typeof globalThis.fetch,\n\tsessionId?: string,\n\tcompat: ResolvedOpenAICompletionsCompat = getCompat(model),\n) {\n\tconst headers: ProviderHeaders = { \"User-Agent\": getPiUserAgent(), ...model.headers };\n\tif (model.provider === \"github-copilot\") {\n\t\tconst hasImages = hasCopilotVisionInput(context.messages);\n\t\tconst copilotHeaders = buildCopilotDynamicHeaders({\n\t\t\tmessages: context.messages,\n\t\t\thasImages,\n\t\t});\n\t\tObject.assign(headers, copilotHeaders);\n\t}\n\n\tif (sessionId && compat.sendSessionAffinityHeaders) {\n\t\tif (compat.sessionAffinityFormat === \"openrouter\") {\n\t\t\theaders[\"x-session-id\"] = sessionId;\n\t\t} else {\n\t\t\tif (compat.sessionAffinityFormat === \"openai\") {\n\t\t\t\theaders.session_id = sessionId;\n\t\t\t}\n\t\t\theaders[\"x-client-request-id\"] = sessionId;\n\t\t\theaders[\"x-session-affinity\"] = sessionId;\n\t\t}\n\t}\n\n\t// Merge options headers last so they can override defaults\n\tif (optionsHeaders) {\n\t\tObject.assign(headers, optionsHeaders);\n\t}\n\n\treturn new OpenAI({\n\t\tapiKey,\n\t\tbaseURL: model.baseUrl,\n\t\tdangerouslyAllowBrowser: true,\n\t\tfetch,\n\t\tdefaultHeaders: headers,\n\t});\n}\n\nfunction buildParams(\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\toptions?: OpenAICompletionsOptions,\n\tcompat: ResolvedOpenAICompletionsCompat = getCompat(model),\n\tcacheRetention: CacheRetention = resolveCacheRetention(\n\t\toptions?.cacheRetention ?? model.cacheRetention,\n\t\toptions?.env,\n\t),\n\tgrammarToolInputProperties: ReadonlyMap<string, string> = createGrammarToolInputProperties(\n\t\tcontext.tools,\n\t\tcompat.supportsOpenAIGrammarTools,\n\t),\n) {\n\tconst messages = convertMessages(model, context, compat, {\n\t\tpreserveThinking: options?.reasoningEffort !== undefined,\n\t\tgrammarToolInputProperties,\n\t});\n\tconst cacheControl = getCompatCacheControl(compat, cacheRetention);\n\tconst thinkingLevelMap = getThinkingLevelMap(model, compat);\n\n\tconst params: OpenAICompletionsRequestParams = {\n\t\tmodel: model.id,\n\t\tmessages,\n\t\tstream: true,\n\t\tprompt_cache_key:\n\t\t\t(model.baseUrl.includes(\"api.openai.com\") && cacheRetention !== \"none\") ||\n\t\t\t(cacheRetention === \"long\" && compat.supportsLongCacheRetention) ||\n\t\t\t(compat.supportsPromptCacheKey && cacheRetention !== \"none\")\n\t\t\t\t? clampOpenAIPromptCacheKey(options?.sessionId)\n\t\t\t\t: undefined,\n\t\tprompt_cache_retention: cacheRetention === \"long\" && compat.supportsLongCacheRetention ? \"24h\" : undefined,\n\t\tsession_id:\n\t\t\tcompat.sendSessionAffinityHeaders && compat.sessionAffinityFormat === \"openrouter\" && cacheRetention !== \"none\"\n\t\t\t\t? options?.sessionId\n\t\t\t\t: undefined,\n\t};\n\n\tif (compat.supportsUsageInStreaming !== false) {\n\t\tparams.stream_options = { include_usage: true };\n\t}\n\n\tif (compat.supportsStore) {\n\t\tparams.store = false;\n\t}\n\n\tif (options?.maxTokens) {\n\t\tif (compat.maxTokensField === \"max_tokens\") {\n\t\t\tparams.max_tokens = options.maxTokens;\n\t\t} else {\n\t\t\tparams.max_completion_tokens = options.maxTokens;\n\t\t}\n\t}\n\n\tif (options?.temperature !== undefined) {\n\t\tparams.temperature = options.temperature;\n\t}\n\n\tconst deferredToolNames =\n\t\tcompat.deferredToolsMode === \"kimi\" ? getDeferredToolNames(context.messages) : new Set<string>();\n\tconst activeTools = context.tools?.filter((tool) => !deferredToolNames.has(tool.name));\n\tif (activeTools && activeTools.length > 0) {\n\t\tparams.tools = convertTools(activeTools, compat);\n\t\tif (compat.zaiToolStream) {\n\t\t\tparams.tool_stream = true;\n\t\t}\n\t} else if (hasToolHistory(context.messages)) {\n\t\t// Anthropic (via LiteLLM/proxy) requires tools param when conversation has tool_calls/tool_results\n\t\tparams.tools = [];\n\t}\n\n\tif (cacheControl) {\n\t\tapplyAnthropicCacheControl(messages, params.tools, cacheControl);\n\t}\n\n\tif (options?.toolChoice) {\n\t\tparams.tool_choice = options.toolChoice;\n\t}\n\n\tif (compat.vllmPriority !== undefined) {\n\t\t(params as any).priority = compat.vllmPriority;\n\t}\n\n\tconst thinkingTokenBudgetField = resolveThinkingTokenBudgetField(compat);\n\tconst thinkingBudget = resolveClampedThinkingBudget(model, options, params);\n\n\tif (compat.thinkingFormat === \"zai\" && model.reasoning) {\n\t\tconst isGlm53 = /(?:^|[/:-])glm-5\\.3(?:-(?:flash|highspeed))?(?:$|[/.:_])/.test(model.id.toLowerCase());\n\t\tconst zaiParams = params as Omit<typeof params, \"reasoning_effort\"> & {\n\t\t\tthinking?: { type: \"enabled\" | \"disabled\"; clear_thinking?: boolean };\n\t\t\treasoning_effort?: string;\n\t\t};\n\t\tzaiParams.thinking =\n\t\t\toptions?.reasoningEffort || isGlm53 ? { type: \"enabled\", clear_thinking: false } : { type: \"disabled\" };\n\t\tif (options?.reasoningEffort && compat.supportsReasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\tzaiParams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"qwen\" && model.reasoning) {\n\t\tparams.enable_thinking = !!options?.reasoningEffort;\n\t\tif (options?.reasoningEffort && compat.supportsReasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\tparams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"qwen-chat-template\" && model.reasoning) {\n\t\tparams.chat_template_kwargs = {\n\t\t\tenable_thinking: !!options?.reasoningEffort,\n\t\t\tpreserve_thinking: true,\n\t\t};\n\t} else if (compat.thinkingFormat === \"chat-template\" && model.reasoning) {\n\t\tconst chatTemplateKwargs = buildChatTemplateValues(\n\t\t\tmodel,\n\t\t\toptions,\n\t\t\tcompat,\n\t\t\tcompat.chatTemplateKwargs,\n\t\t\tthinkingBudget,\n\t\t);\n\t\tif (chatTemplateKwargs) {\n\t\t\t(params as any).chat_template_kwargs = chatTemplateKwargs;\n\t\t}\n\t} else if (compat.thinkingFormat === \"baseten\" && model.reasoning) {\n\t\tconst basetenParams = params as Omit<typeof params, \"reasoning_effort\"> & {\n\t\t\tchat_template_args?: Record<string, ResolvedChatTemplateKwargValue>;\n\t\t\treasoning_effort?: string;\n\t\t};\n\t\tconst chatTemplateArgs = buildChatTemplateValues(\n\t\t\tmodel,\n\t\t\toptions,\n\t\t\tcompat,\n\t\t\tcompat.chatTemplateArgs ?? {},\n\t\t\tthinkingBudget,\n\t\t);\n\t\tif (chatTemplateArgs) {\n\t\t\tbasetenParams.chat_template_args = chatTemplateArgs;\n\t\t}\n\t\tif (compat.supportsReasoningEffort) {\n\t\t\tconst requestedEffort = options?.reasoningEffort;\n\t\t\tconst mappedEffort = requestedEffort ? thinkingLevelMap?.[requestedEffort] : thinkingLevelMap?.off;\n\t\t\tconst effort = mappedEffort === undefined ? requestedEffort : mappedEffort;\n\t\t\tif (typeof effort === \"string\") {\n\t\t\t\tbasetenParams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"deepseek\" && model.reasoning) {\n\t\tif (options?.reasoningEffort) {\n\t\t\tparams.thinking = { type: \"enabled\" };\n\t\t\tif (compat.supportsReasoningEffort) {\n\t\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\t\tif (effort !== undefined) {\n\t\t\t\t\tparams.reasoning_effort = effort;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (compat.supportsDisabledThinking !== false && thinkingLevelMap?.off !== null) {\n\t\t\tparams.thinking = { type: \"disabled\" };\n\t\t}\n\t} else if (compat.thinkingFormat === \"openrouter\" && model.reasoning) {\n\t\t// OpenRouter normalizes reasoning across providers via a nested reasoning object.\n\t\tconst openRouterParams = params as typeof params & { reasoning?: { effort?: string } };\n\t\tif (options?.reasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\topenRouterParams.reasoning = { effort };\n\t\t\t}\n\t\t} else if (thinkingLevelMap?.off !== null) {\n\t\t\topenRouterParams.reasoning = { effort: thinkingLevelMap?.off ?? \"none\" };\n\t\t}\n\t} else if (compat.thinkingFormat === \"ant-ling\" && model.reasoning && options?.reasoningEffort) {\n\t\tconst effort = thinkingLevelMap?.[options.reasoningEffort];\n\t\tif (typeof effort === \"string\") {\n\t\t\t(params as typeof params & { reasoning?: { effort: string } }).reasoning = { effort };\n\t\t}\n\t} else if (compat.thinkingFormat === \"together\" && model.reasoning) {\n\t\tconst togetherParams = params as Omit<typeof params, \"reasoning_effort\"> & {\n\t\t\treasoning?: { enabled: boolean };\n\t\t\treasoning_effort?: string;\n\t\t};\n\t\ttogetherParams.reasoning = { enabled: !!options?.reasoningEffort };\n\t\tif (options?.reasoningEffort && compat.supportsReasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\ttogetherParams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"string-thinking\" && model.reasoning) {\n\t\tif (options?.reasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\tparams.thinking = effort;\n\t\t\t}\n\t\t} else if (thinkingLevelMap?.off !== null) {\n\t\t\tparams.thinking = thinkingLevelMap?.off ?? \"none\";\n\t\t}\n\t} else if (options?.reasoningEffort && model.reasoning && compat.supportsReasoningEffort) {\n\t\t// OpenAI-style reasoning_effort\n\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\tif (effort !== undefined) {\n\t\t\tparams.reasoning_effort = effort;\n\t\t}\n\t} else if (!options?.reasoningEffort && model.reasoning && compat.supportsReasoningEffort) {\n\t\tconst offValue = thinkingLevelMap?.off;\n\t\tif (typeof offValue === \"string\") {\n\t\t\tparams.reasoning_effort = offValue;\n\t\t}\n\t}\n\n\t// Cap reasoning with a top-level budget field. Independent of thinkingFormat: the\n\t// same server can serve zai, qwen or chat-template models. Reasoning and the answer\n\t// share max_tokens here, so an uncapped reasoning phase can consume the whole\n\t// response and leave no answer and no tool call.\n\tif (thinkingTokenBudgetField && thinkingBudget !== undefined) {\n\t\tObject.assign(params, { [thinkingTokenBudgetField]: thinkingBudget });\n\t}\n\n\t// OpenRouter provider routing preferences\n\tif (model.compat?.openRouterRouting) {\n\t\tparams.provider = model.compat.openRouterRouting;\n\t}\n\n\t// Vercel AI Gateway provider routing preferences\n\tif (model.compat?.vercelGatewayRouting) {\n\t\tconst routing = model.compat.vercelGatewayRouting;\n\t\tif (routing.only || routing.order) {\n\t\t\tconst gatewayOptions: Record<string, string[]> = {};\n\t\t\tif (routing.only) gatewayOptions.only = routing.only;\n\t\t\tif (routing.order) gatewayOptions.order = routing.order;\n\t\t\tparams.providerOptions = { gateway: gatewayOptions };\n\t\t}\n\t}\n\n\tapplyExtraBody(params, options?.extraBody, OPENAI_COMPLETIONS_RESERVED_BODY_KEYS);\n\n\t// Last so custom keys override the named request fields.\n\tif (options?.samplingParams) {\n\t\tObject.assign(params, options.samplingParams);\n\t}\n\n\treturn params;\n}\n\nfunction resolveThinkingTokenBudgetField(\n\tcompat: Pick<OpenAICompletionsCompat, \"thinkingTokenBudgetField\" | \"supportsThinkingTokenBudget\">,\n): ThinkingTokenBudgetField | undefined {\n\tif (compat.thinkingTokenBudgetField) return compat.thinkingTokenBudgetField;\n\tif (compat.supportsThinkingTokenBudget) return \"thinking_token_budget\";\n\treturn undefined;\n}\n\nfunction resolveClampedThinkingBudget(\n\tmodel: Model<\"openai-completions\">,\n\toptions: OpenAICompletionsOptions | undefined,\n\tparams: { max_tokens?: number | null; max_completion_tokens?: number | null },\n): number | undefined {\n\tif (!options?.reasoningEffort || !model.reasoning) return undefined;\n\tconst ceiling = params.max_tokens ?? params.max_completion_tokens ?? model.maxTokens;\n\tconst budget = clampThinkingBudgetToAnswerRoom(\n\t\tthinkingBudgetForLevel(options.reasoningEffort, options.thinkingBudgets),\n\t\tceiling,\n\t);\n\treturn budget > 0 ? budget : undefined;\n}\n\nfunction buildChatTemplateValues(\n\tmodel: Model<\"openai-completions\">,\n\toptions: OpenAICompletionsOptions | undefined,\n\tcompat: ResolvedOpenAICompletionsCompat,\n\tvalues: Record<string, ChatTemplateKwargValue>,\n\tthinkingBudget?: number,\n): Record<string, ResolvedChatTemplateKwargValue> | undefined {\n\tconst resolvedValues: Record<string, ResolvedChatTemplateKwargValue> = {};\n\n\tfor (const [key, value] of Object.entries(values)) {\n\t\tconst resolved = resolveChatTemplateKwargValue(model, options, compat, value, thinkingBudget);\n\t\tif (resolved !== undefined) {\n\t\t\tresolvedValues[key] = resolved;\n\t\t}\n\t}\n\n\treturn Object.keys(resolvedValues).length > 0 ? resolvedValues : undefined;\n}\n\nfunction resolveChatTemplateKwargValue(\n\tmodel: Model<\"openai-completions\">,\n\toptions: OpenAICompletionsOptions | undefined,\n\tcompat: ResolvedOpenAICompletionsCompat,\n\tvalue: ChatTemplateKwargValue,\n\tthinkingBudget?: number,\n): ResolvedChatTemplateKwargValue | undefined {\n\tif (typeof value !== \"object\" || value === null) {\n\t\treturn value;\n\t}\n\n\tconst reasoningEffort = options?.reasoningEffort;\n\tif (!reasoningEffort && value.omitWhenOff) {\n\t\treturn undefined;\n\t}\n\tif (value.$var === \"thinking.enabled\") {\n\t\treturn !!reasoningEffort;\n\t}\n\tif (value.$var === \"thinking.budget\") {\n\t\treturn thinkingBudget;\n\t}\n\n\tconst thinkingLevelMap = getThinkingLevelMap(model, compat);\n\tconst mappedValue = reasoningEffort ? thinkingLevelMap?.[reasoningEffort] : thinkingLevelMap?.off;\n\treturn mappedValue === undefined ? reasoningEffort : typeof mappedValue === \"string\" ? mappedValue : undefined;\n}\n\nfunction getCompatCacheControl(\n\tcompat: ResolvedOpenAICompletionsCompat,\n\tcacheRetention: CacheRetention,\n): OpenAICompatCacheControl | undefined {\n\tif (compat.cacheControlFormat !== \"anthropic\" || cacheRetention === \"none\") {\n\t\treturn undefined;\n\t}\n\n\tconst ttl = cacheRetention === \"long\" && compat.supportsLongCacheRetention ? \"1h\" : undefined;\n\treturn { type: \"ephemeral\", ...(ttl ? { ttl } : {}) };\n}\n\nfunction applyAnthropicCacheControl(\n\tmessages: ChatCompletionMessageParam[],\n\ttools: OpenAI.Chat.Completions.ChatCompletionTool[] | undefined,\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\taddCacheControlToSystemPrompt(messages, cacheControl);\n\taddCacheControlToLastTool(tools, cacheControl);\n\taddCacheControlToLastConversationMessage(messages, cacheControl);\n}\n\nfunction addCacheControlToSystemPrompt(\n\tmessages: ChatCompletionMessageParam[],\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\tfor (const message of messages) {\n\t\tif (message.role === \"system\" || message.role === \"developer\") {\n\t\t\taddCacheControlToInstructionMessage(message, cacheControl);\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nfunction addCacheControlToLastConversationMessage(\n\tmessages: ChatCompletionMessageParam[],\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (message.role === \"user\" || message.role === \"assistant\" || message.role === \"tool\") {\n\t\t\tif (addCacheControlToMessage(message, cacheControl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction addCacheControlToLastTool(\n\ttools: OpenAI.Chat.Completions.ChatCompletionTool[] | undefined,\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\tif (!tools || tools.length === 0) {\n\t\treturn;\n\t}\n\n\tconst lastTool = tools[tools.length - 1] as ChatCompletionToolWithCacheControl;\n\tlastTool.cache_control = cacheControl;\n}\n\nfunction addCacheControlToInstructionMessage(\n\tmessage: ChatCompletionInstructionMessageParam,\n\tcacheControl: OpenAICompatCacheControl,\n): boolean {\n\treturn addCacheControlToTextContent(message, cacheControl);\n}\n\nfunction addCacheControlToMessage(\n\tmessage: ChatCompletionMessageParam,\n\tcacheControl: OpenAICompatCacheControl,\n): boolean {\n\tif (message.role === \"user\" || message.role === \"assistant\" || message.role === \"tool\") {\n\t\treturn addCacheControlToTextContent(message, cacheControl);\n\t}\n\treturn false;\n}\n\nfunction addCacheControlToTextContent(\n\tmessage:\n\t\t| ChatCompletionInstructionMessageParam\n\t\t| ChatCompletionAssistantMessageParam\n\t\t| ChatCompletionToolMessageParam\n\t\t| Extract<ChatCompletionMessageParam, { role: \"user\" }>,\n\tcacheControl: OpenAICompatCacheControl,\n): boolean {\n\tconst content = message.content;\n\tif (typeof content === \"string\") {\n\t\tif (content.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tmessage.content = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: content,\n\t\t\t\tcache_control: cacheControl,\n\t\t\t},\n\t\t] as ChatCompletionTextPartWithCacheControl[];\n\t\treturn true;\n\t}\n\n\tif (!Array.isArray(content)) {\n\t\treturn false;\n\t}\n\n\tfor (let i = content.length - 1; i >= 0; i--) {\n\t\tconst part = content[i];\n\t\tif (part?.type === \"text\") {\n\t\t\tconst textPart = part as ChatCompletionTextPartWithCacheControl;\n\t\t\ttextPart.cache_control = cacheControl;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nexport function convertMessages(\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\tcompat: ResolvedOpenAICompletionsCompat,\n\toptions: ConvertCompletionsMessagesOptions = {},\n): ChatCompletionMessageParam[] {\n\tconst params: ChatCompletionMessageParam[] = [];\n\n\tconst normalizeToolCallId = (id: string): string => {\n\t\t// Handle pipe-separated IDs from OpenAI Responses API\n\t\t// Format: {call_id}|{id} where {id} can be 400+ chars with special chars (+, /, =)\n\t\t// These come from providers like github-copilot, openai-codex, opencode\n\t\t// Extract just the call_id part and normalize it\n\t\t// Multiple tool calls in the same turn can share call_id but differ by item_id.\n\t\t// Preserve item-level uniqueness when replaying into Chat Completions, which\n\t\t// requires distinct tool call ids.\n\t\tif (id.includes(\"|\")) {\n\t\t\t// Sanitize to allowed chars and truncate to 40 chars (OpenAI limit)\n\t\t\tconst separatorIndex = id.indexOf(\"|\");\n\t\t\tconst callId = id.slice(0, separatorIndex).replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\t\t\tconst itemId = id.slice(separatorIndex + 1).replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\t\t\tconst combinedId = itemId.length > 0 ? `${callId}_${itemId}` : callId;\n\t\t\tif (combinedId.length <= 40) {\n\t\t\t\treturn combinedId;\n\t\t\t}\n\t\t\tconst hash = shortHash(id).slice(0, 8);\n\t\t\tconst prefix = callId.slice(0, Math.max(1, 40 - hash.length - 1));\n\t\t\treturn `${prefix}_${hash}`;\n\t\t}\n\n\t\tconst sanitizedId = id.replace(/[^a-zA-Z0-9_-]/g, \"_\") || \"tool_call\";\n\t\tif (sanitizedId === id && sanitizedId.length <= 40) return id;\n\n\t\tconst hash = shortHash(id).slice(0, 8);\n\t\tconst prefix = sanitizedId.slice(0, Math.max(1, 40 - hash.length - 1));\n\t\treturn `${prefix}_${hash}`;\n\t};\n\n\tconst transformedMessages = transformMessages(context.messages, model, (id) => normalizeToolCallId(id), {\n\t\tpreserveThinking: options.preserveThinking,\n\t\tnormalizeSameModelToolCallIds: true,\n\t});\n\n\tif (context.systemPrompt) {\n\t\tconst useDeveloperRole = model.reasoning && compat.supportsDeveloperRole;\n\t\tconst role = useDeveloperRole ? \"developer\" : \"system\";\n\t\tparams.push({ role: role, content: sanitizeSurrogates(context.systemPrompt) });\n\t}\n\n\tlet lastRole: string | null = null;\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst msg = transformedMessages[i];\n\t\t// Some providers don't allow user messages directly after tool results\n\t\t// Insert a synthetic assistant message to bridge the gap\n\t\tif (compat.requiresAssistantAfterToolResult && lastRole === \"toolResult\" && msg.role === \"user\") {\n\t\t\tparams.push({\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: \"I have processed the tool results.\",\n\t\t\t});\n\t\t}\n\n\t\tif (msg.role === \"user\") {\n\t\t\tif (typeof msg.content === \"string\") {\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: sanitizeSurrogates(msg.content),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst content: ChatCompletionContentPart[] = msg.content.map((item): ChatCompletionContentPart => {\n\t\t\t\t\tif (item.type === \"text\") {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: sanitizeSurrogates(item.text),\n\t\t\t\t\t\t} satisfies ChatCompletionContentPartText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"image_url\",\n\t\t\t\t\t\t\timage_url: {\n\t\t\t\t\t\t\t\turl: `data:${item.mimeType};base64,${item.data}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} satisfies ChatCompletionContentPartImage;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (content.length === 0) continue;\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\t// Some providers don't accept null content, use empty string instead\n\t\t\tconst assistantMsg: ChatCompletionAssistantMessageParamWithReasoning = {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: compat.requiresAssistantAfterToolResult ? \"\" : null,\n\t\t\t};\n\n\t\t\tconst assistantTextParts = msg.content\n\t\t\t\t.filter(isTextContentBlock)\n\t\t\t\t.filter((block) => block.text.trim().length > 0)\n\t\t\t\t.map(\n\t\t\t\t\t(block) =>\n\t\t\t\t\t\t({\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t\t\t\t}) satisfies ChatCompletionContentPartText,\n\t\t\t\t);\n\t\t\tconst assistantText = assistantTextParts.map((part) => part.text).join(\"\");\n\n\t\t\tconst thinkingBlocks = msg.content.filter(isThinkingContentBlock);\n\t\t\tconst toolCalls = msg.content.filter(isToolCallBlock);\n\t\t\tconst signedReasoningDetails = thinkingBlocks\n\t\t\t\t.map((block) => parseOpenAIReasoningDetails(block.thinkingSignature))\n\t\t\t\t.find((details) => details !== undefined);\n\t\t\tconst legacyReasoningDetails = toolCalls\n\t\t\t\t.map((toolCall) => parseLegacyEncryptedReasoningDetail(toolCall.thoughtSignature))\n\t\t\t\t.filter((detail): detail is OpenAIEncryptedReasoningDetail => detail !== undefined);\n\t\t\tconst preservedReasoningDetails =\n\t\t\t\tsignedReasoningDetails ?? (legacyReasoningDetails.length > 0 ? legacyReasoningDetails : undefined);\n\n\t\t\tconst nonEmptyThinkingBlocks = thinkingBlocks.filter((block) => block.thinking.trim().length > 0);\n\t\t\tif (nonEmptyThinkingBlocks.length > 0) {\n\t\t\t\tif (compat.requiresThinkingAsText) {\n\t\t\t\t\t// Convert thinking blocks to plain text (no tags to avoid model mimicking them)\n\t\t\t\t\tconst thinkingText = nonEmptyThinkingBlocks\n\t\t\t\t\t\t.map((block) => sanitizeSurrogates(block.thinking))\n\t\t\t\t\t\t.join(\"\\n\\n\");\n\t\t\t\t\tassistantMsg.content = [{ type: \"text\", text: thinkingText }, ...assistantTextParts];\n\t\t\t\t} else {\n\t\t\t\t\t// Always send assistant content as a plain string (OpenAI Chat Completions\n\t\t\t\t\t// API standard format). Sending as an array of {type:\"text\", text:\"...\"}\n\t\t\t\t\t// objects is non-standard and causes some models (e.g. DeepSeek V3.2 via\n\t\t\t\t\t// NVIDIA NIM) to mirror the content-block structure literally in their\n\t\t\t\t\t// output, producing recursive nesting like [{'type':'text','text':'[{...}]'}].\n\t\t\t\t\tif (assistantText.length > 0) {\n\t\t\t\t\t\tassistantMsg.content = assistantText;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Use the signature from the first thinking block if available (for llama.cpp server + gpt-oss)\n\t\t\t\t\tlet signature = nonEmptyThinkingBlocks[0].thinkingSignature;\n\t\t\t\t\tif (model.provider === \"opencode-go\" && signature === \"reasoning\") {\n\t\t\t\t\t\tsignature = \"reasoning_content\";\n\t\t\t\t\t}\n\t\t\t\t\tif (signature && signature.length > 0) {\n\t\t\t\t\t\tObject.assign(assistantMsg, {\n\t\t\t\t\t\t\t[signature]: nonEmptyThinkingBlocks.map((block) => block.thinking).join(\"\\n\"),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (assistantText.length > 0) {\n\t\t\t\t// Always send assistant content as a plain string (OpenAI Chat Completions\n\t\t\t\t// API standard format). Sending as an array of {type:\"text\", text:\"...\"}\n\t\t\t\t// objects is non-standard and causes some models (e.g. DeepSeek V3.2 via\n\t\t\t\t// NVIDIA NIM) to mirror the content-block structure literally in their\n\t\t\t\t// output, producing recursive nesting like [{'type':'text','text':'[{...}]'}].\n\t\t\t\tassistantMsg.content = assistantText;\n\t\t\t}\n\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tassistantMsg.tool_calls = toolCalls.map((tc): ChatCompletionMessageToolCall => {\n\t\t\t\t\tconst customInputProperty = options?.grammarToolInputProperties?.get(tc.name);\n\t\t\t\t\tif (customInputProperty !== undefined) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: tc.id,\n\t\t\t\t\t\t\ttype: \"custom\",\n\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\tname: tc.name,\n\t\t\t\t\t\t\t\tinput: sanitizeSurrogates(getGrammarToolInput(tc.name, tc.arguments, customInputProperty)),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: tc.id,\n\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\tname: tc.name,\n\t\t\t\t\t\t\targuments: JSON.stringify(tc.arguments),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (preservedReasoningDetails) {\n\t\t\t\tassistantMsg.reasoning_details = preservedReasoningDetails;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tcompat.requiresReasoningContentOnAssistantMessages &&\n\t\t\t\tmodel.reasoning &&\n\t\t\t\tassistantMsg.reasoning_content === undefined\n\t\t\t) {\n\t\t\t\tassistantMsg.reasoning_content = \"\";\n\t\t\t}\n\t\t\t// Skip assistant messages that have no content and no tool calls.\n\t\t\t// Some providers require \"either content or tool_calls, but not none\".\n\t\t\t// Other providers also don't accept empty assistant messages.\n\t\t\t// This handles aborted assistant responses that got no content.\n\t\t\tconst content = assistantMsg.content;\n\t\t\tconst hasContent =\n\t\t\t\tcontent !== null &&\n\t\t\t\tcontent !== undefined &&\n\t\t\t\t(typeof content === \"string\" ? content.length > 0 : content.length > 0);\n\t\t\tif (!hasContent && !assistantMsg.tool_calls) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tparams.push(assistantMsg);\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\tconst imageBlocks: Array<{ type: \"image_url\"; image_url: { url: string } }> = [];\n\t\t\tconst deferredToolNames = new Set<string>();\n\t\t\tlet j = i;\n\n\t\t\tfor (; j < transformedMessages.length && transformedMessages[j].role === \"toolResult\"; j++) {\n\t\t\t\tconst toolMsg = transformedMessages[j] as ToolResultMessage;\n\n\t\t\t\t// Extract text and image content\n\t\t\t\tconst textResult = toolMsg.content\n\t\t\t\t\t.filter(isTextContentBlock)\n\t\t\t\t\t.map((block) => block.text)\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tconst hasImages = toolMsg.content.some((c) => c.type === \"image\");\n\n\t\t\t\t// Always send tool result with text (or placeholder if only images)\n\t\t\t\tconst hasText = textResult.length > 0;\n\t\t\t\tconst toolResultText = hasText ? textResult : hasImages ? \"(see attached image)\" : \"(no tool output)\";\n\t\t\t\t// Some providers require the 'name' field in tool results\n\t\t\t\tconst toolResultMsg: ChatCompletionToolMessageParam = {\n\t\t\t\t\trole: \"tool\",\n\t\t\t\t\tcontent: sanitizeSurrogates(toolResultText),\n\t\t\t\t\ttool_call_id: toolMsg.toolCallId,\n\t\t\t\t};\n\t\t\t\tif (compat.requiresToolResultName && toolMsg.toolName) {\n\t\t\t\t\tObject.assign(toolResultMsg, { name: toolMsg.toolName });\n\t\t\t\t}\n\t\t\t\tparams.push(toolResultMsg);\n\n\t\t\t\tif (compat.deferredToolsMode === \"kimi\") {\n\t\t\t\t\tfor (const name of toolMsg.addedToolNames ?? []) {\n\t\t\t\t\t\tdeferredToolNames.add(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hasImages && model.input.includes(\"image\")) {\n\t\t\t\t\tfor (const block of toolMsg.content) {\n\t\t\t\t\t\tif (isImageContentBlock(block)) {\n\t\t\t\t\t\t\timageBlocks.push({\n\t\t\t\t\t\t\t\ttype: \"image_url\",\n\t\t\t\t\t\t\t\timage_url: {\n\t\t\t\t\t\t\t\t\turl: `data:${block.mimeType};base64,${block.data}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = j - 1;\n\n\t\t\tif (imageBlocks.length > 0) {\n\t\t\t\tif (compat.requiresAssistantAfterToolResult) {\n\t\t\t\t\tparams.push({\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tcontent: \"I have processed the tool results.\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: \"Attached image(s) from tool result:\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...imageBlocks,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tlastRole = \"user\";\n\t\t\t} else {\n\t\t\t\tlastRole = \"toolResult\";\n\t\t\t}\n\n\t\t\tif (deferredToolNames.size > 0) {\n\t\t\t\tconst deferredTools = getToolsByName(context.tools, deferredToolNames);\n\t\t\t\tif (deferredTools.length > 0) {\n\t\t\t\t\tconst kimiToolMessage: KimiToolSystemMessageParam = {\n\t\t\t\t\t\trole: \"system\",\n\t\t\t\t\t\ttools: convertTools(deferredTools, compat),\n\t\t\t\t\t};\n\t\t\t\t\t// Kimi accepts a system message with tools but omits the standard content field.\n\t\t\t\t\tparams.push(kimiToolMessage as unknown as ChatCompletionMessageParam);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tlastRole = msg.role;\n\t}\n\n\treturn params;\n}\n\nfunction convertTools(\n\ttools: Tool[],\n\tcompat: ResolvedOpenAICompletionsCompat,\n): OpenAI.Chat.Completions.ChatCompletionTool[] {\n\treturn tools.map((tool) => {\n\t\tconst grammar = resolveGrammarConstrainedSampling(tool, compat.supportsOpenAIGrammarTools);\n\t\tif (grammar) {\n\t\t\treturn {\n\t\t\t\ttype: \"custom\",\n\t\t\t\tcustom: {\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tformat: {\n\t\t\t\t\t\ttype: \"grammar\",\n\t\t\t\t\t\tgrammar: {\n\t\t\t\t\t\t\tsyntax: grammar.format,\n\t\t\t\t\t\t\tdefinition: grammar.definition,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (tool.freeform) {\n\t\t\tthrow new Error(\"Freeform tools cannot be sent to OpenAI Chat Completions; use Responses API\");\n\t\t}\n\n\t\tconst strict = resolveJsonSchemaStrictSampling(tool, compat.supportsStrictMode !== false);\n\t\tconst schemaParameters = getJsonSchemaToolParameters(tool, strict) as Record<string, unknown>;\n\t\tconst normalizedParameters =\n\t\t\tcompat.toolSchemaFlavor === \"moonshot-mfjs\"\n\t\t\t\t? normalizeToolParametersForMoonshot(schemaParameters)\n\t\t\t\t: normalizeToolParametersForOpenAICompat(schemaParameters);\n\t\treturn {\n\t\t\ttype: \"function\",\n\t\t\tfunction: {\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: normalizedParameters as FunctionParameters,\n\t\t\t\t// Only include strict if provider supports it. Some reject unknown fields.\n\t\t\t\t...(compat.supportsStrictMode !== false && { strict: strict ?? false }),\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction normalizeRequestToolSchemas(\n\tparams: OpenAICompletionsRequestParams,\n\tcompat: ResolvedOpenAICompletionsCompat,\n): OpenAICompletionsRequestParams {\n\tif (!params.tools) return params;\n\n\treturn {\n\t\t...params,\n\t\ttools: params.tools.map((tool) => {\n\t\t\tif (tool.type !== \"function\" || !tool.function.parameters) return tool;\n\n\t\t\tconst parameters =\n\t\t\t\tcompat.toolSchemaFlavor === \"moonshot-mfjs\"\n\t\t\t\t\t? normalizeToolParametersForMoonshot(tool.function.parameters)\n\t\t\t\t\t: normalizeToolParametersForOpenAICompat(tool.function.parameters);\n\t\t\treturn {\n\t\t\t\t...tool,\n\t\t\t\tfunction: { ...tool.function, parameters },\n\t\t\t};\n\t\t}),\n\t};\n}\n\nfunction parseChunkUsage(\n\trawUsage: {\n\t\tprompt_tokens?: number;\n\t\tcompletion_tokens?: number;\n\t\tcached_tokens?: number;\n\t\tprompt_cache_hit_tokens?: number;\n\t\tprompt_tokens_details?: { cached_tokens?: number; cache_write_tokens?: number };\n\t\tcompletion_tokens_details?: { reasoning_tokens?: number };\n\t},\n\tmodel: Model<\"openai-completions\">,\n): AssistantMessage[\"usage\"] {\n\tconst promptTokens = rawUsage.prompt_tokens || 0;\n\tconst cacheReadTokens =\n\t\trawUsage.prompt_tokens_details?.cached_tokens ?? rawUsage.prompt_cache_hit_tokens ?? rawUsage.cached_tokens ?? 0;\n\tconst cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0;\n\n\t// Follow documented OpenAI/OpenRouter semantics: cached_tokens is cache-read\n\t// tokens (hits). Providers disagree on placement: OpenAI/OpenRouter use\n\t// prompt_tokens_details.cached_tokens, DeepSeek uses prompt_cache_hit_tokens,\n\t// and Kimi documents top-level usage.cached_tokens on the final usage chunk.\n\t// OpenAI does not document or emit cache_write_tokens, but\n\t// OpenRouter-compatible providers can include it as a separate write count.\n\t// OpenRouter's own provider/tests affirm the separate mapping:\n\t// https://github.com/OpenRouterTeam/ai-sdk-provider/pull/409\n\t// Do not subtract writes from cached_tokens, otherwise spec-compliant\n\t// providers are under-reported. DS4 mirrors this contract too:\n\t// https://github.com/antirez/ds4/pull/29\n\tconst input = Math.max(0, promptTokens - cacheReadTokens - cacheWriteTokens);\n\t// OpenAI completion_tokens already includes reasoning_tokens.\n\tconst outputTokens = rawUsage.completion_tokens || 0;\n\tconst usage: AssistantMessage[\"usage\"] = {\n\t\tinput,\n\t\toutput: outputTokens,\n\t\tcacheRead: cacheReadTokens,\n\t\tcacheWrite: cacheWriteTokens,\n\t\treasoning: rawUsage.completion_tokens_details?.reasoning_tokens || 0,\n\t\ttotalTokens: input + outputTokens + cacheReadTokens + cacheWriteTokens,\n\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t};\n\tcalculateCost(model, usage);\n\treturn usage;\n}\n\nfunction mapStopReason(reason: ChatCompletionChunk.Choice[\"finish_reason\"] | string): {\n\tstopReason: StopReason;\n\terrorMessage?: string;\n} {\n\tif (reason === null) return { stopReason: \"stop\" };\n\tswitch (reason) {\n\t\tcase \"stop\":\n\t\tcase \"end\":\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"length\":\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase \"function_call\":\n\t\tcase \"tool_calls\":\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tcase \"content_filter\":\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider finish_reason: content_filter\" };\n\t\tcase \"network_error\":\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider finish_reason: network_error\" };\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: `Provider finish_reason: ${reason}`,\n\t\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"openai-completions.js","sourceRoot":"","sources":["../../src/api/openai-completions.ts"],"names":[],"mappings":"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","sourcesContent":["import OpenAI from \"openai\";\nimport type {\n\tChatCompletionAssistantMessageParam,\n\tChatCompletionChunk,\n\tChatCompletionContentPart,\n\tChatCompletionContentPartImage,\n\tChatCompletionContentPartText,\n\tChatCompletionDeveloperMessageParam,\n\tChatCompletionMessageParam,\n\tChatCompletionMessageToolCall,\n\tChatCompletionSystemMessageParam,\n\tChatCompletionToolMessageParam,\n} from \"openai/resources/chat/completions.js\";\nimport type { FunctionParameters } from \"openai/resources/shared.js\";\nimport {\n\tcalculateCost,\n\tclampThinkingLevel,\n\tinferOpenAIThinkingLevelMap,\n\tsupportsMax,\n\tsupportsXhigh,\n} from \"../models.ts\";\nimport type {\n\tAssistantMessage,\n\tCacheRetention,\n\tChatTemplateKwargValue,\n\tContext,\n\tImageContent,\n\tJsonValue,\n\tMessage,\n\tModel,\n\tOpenAICompletionsCompat,\n\tProviderEnv,\n\tProviderHeaders,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tThinkingContent,\n\tThinkingTokenBudgetField,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\nimport { formatProviderError, normalizeProviderError } from \"../utils/error-body.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { shortHash } from \"../utils/hash.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { getPiUserAgent } from \"../utils/pi-user-agent.ts\";\nimport {\n\tgetOpenAICompletionsCompat as getCompat,\n\ttype ResolvedOpenAICompletionsCompat,\n} from \"../utils/prompt-cache-ttl.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { retryProviderStreamRequest } from \"../utils/provider-retry.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { isForcedToolChoiceUnsupportedError, omitToolChoiceParam } from \"../utils/tool-choice-fallback.ts\";\nimport {\n\tnormalizeToolParametersForMoonshot,\n\tnormalizeToolParametersForOpenAICompat,\n} from \"../utils/tool-schema-compat.ts\";\nimport {\n\tappendGrammarToolInputJsonDelta,\n\tcreateGrammarToolInputProperties,\n\ttype GrammarToolInputJsonBuffer,\n\tgetGrammarToolInput,\n\tgetJsonSchemaToolParameters,\n\tresolveGrammarConstrainedSampling,\n\tresolveJsonSchemaStrictSampling,\n} from \"./constrained-sampling.ts\";\nimport { buildCopilotDynamicHeaders, hasCopilotVisionInput } from \"./github-copilot-headers.ts\";\nimport { resolveOpenAIClientAuth } from \"./openai-client-auth.ts\";\nimport { clampOpenAIPromptCacheKey } from \"./openai-prompt-cache.ts\";\nimport {\n\tapplyExtraBody,\n\tbuildBaseOptions,\n\tclampMaxForOpenAI,\n\tclampThinkingBudgetToAnswerRoom,\n\tOPENAI_COMPLETIONS_RESERVED_BODY_KEYS,\n\tthinkingBudgetForLevel,\n} from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\nexport {\n\tgetOpenAICompletionsCompat as getCompat,\n\ttype ResolvedOpenAICompletionsCompat,\n} from \"../utils/prompt-cache-ttl.ts\";\n\ntype ChatCompletionChoiceWithUsage = ChatCompletionChunk.Choice & {\n\tusage?: Parameters<typeof parseChunkUsage>[0];\n};\ntype OpenAICompletionsRequestParams = Omit<\n\tOpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming,\n\t\"max_tokens\" | \"reasoning_effort\"\n> & {\n\tmax_tokens?: number | null;\n\ttool_stream?: boolean;\n\tenable_thinking?: boolean;\n\tchat_template_kwargs?: { enable_thinking: boolean; preserve_thinking: boolean };\n\tthinking?: { type: \"enabled\" | \"disabled\" } | string;\n\treasoning_effort?: string;\n\tprovider?: OpenAICompletionsCompat[\"openRouterRouting\"];\n\tproviderOptions?: { gateway: Record<string, string[]> };\n\tvenice_parameters?: OpenAICompletionsCompat[\"veniceParameters\"];\n\tsession_id?: string;\n};\n\ntype ReasoningEffort = NonNullable<OpenAICompletionsOptions[\"reasoningEffort\"]>;\ntype ThinkingLevelMap = NonNullable<Model<\"openai-completions\">[\"thinkingLevelMap\"]>;\n\nconst KIMI_K3_THINKING_LEVEL_MAP = {\n\toff: null,\n\tminimal: null,\n\tlow: \"low\",\n\tmedium: null,\n\thigh: \"high\",\n\txhigh: null,\n\tmax: \"max\",\n} satisfies ThinkingLevelMap;\n\nconst DEEPSEEK_THINKING_LEVEL_MAP = {\n\tminimal: \"high\",\n\tlow: \"high\",\n\tmedium: \"high\",\n\thigh: \"high\",\n\txhigh: \"max\",\n\tmax: \"max\",\n} satisfies ThinkingLevelMap;\n\nconst OPENROUTER_DEEPSEEK_THINKING_LEVEL_MAP = {\n\tminimal: \"high\",\n\tlow: \"high\",\n\tmedium: \"high\",\n\thigh: \"high\",\n\txhigh: \"high\",\n\tmax: \"high\",\n} satisfies ThinkingLevelMap;\n\nconst MIMO_THINKING_LEVEL_MAP = {\n\tminimal: \"low\",\n\tlow: \"low\",\n\tmedium: \"medium\",\n\thigh: \"high\",\n\txhigh: \"high\",\n\tmax: null,\n} satisfies ThinkingLevelMap;\n\nconst OLLAMA_THINKING_LEVEL_MAP = {\n\toff: \"none\",\n\tminimal: null,\n\tlow: \"low\",\n\tmedium: \"medium\",\n\thigh: \"high\",\n\txhigh: null,\n\tmax: \"high\",\n} satisfies ThinkingLevelMap;\n\nfunction getThinkingLevelMap(\n\tmodel: Model<\"openai-completions\">,\n\tcompat: ResolvedOpenAICompletionsCompat,\n): ThinkingLevelMap | undefined {\n\tconst inferred = inferOpenAIThinkingLevelMap(model);\n\tif (inferred !== undefined) return inferred;\n\n\tconst id = model.id.toLowerCase();\n\tconst isKimiK3 = id === \"k3\" || id.startsWith(\"k3-\") || /(?:^|[/:-])kimi-k3(?:$|[/.:_-])/.test(id);\n\tconst isDeepSeek = id.includes(\"deepseek\");\n\tconst isMiMo = /\\bmimo\\b/.test(id);\n\tconst isGlm5x = /(?:^|[/:-])glm-5\\.[23](?:$|[/.:_-])/.test(id);\n\n\tif (model.provider === \"ollama\") {\n\t\treturn OLLAMA_THINKING_LEVEL_MAP;\n\t}\n\tif (isKimiK3) {\n\t\treturn KIMI_K3_THINKING_LEVEL_MAP;\n\t}\n\tif (compat.thinkingFormat === \"openrouter\" && isDeepSeek) {\n\t\treturn OPENROUTER_DEEPSEEK_THINKING_LEVEL_MAP;\n\t}\n\tif ((compat.thinkingFormat === \"openai\" || compat.thinkingFormat === \"openrouter\") && isMiMo) {\n\t\treturn MIMO_THINKING_LEVEL_MAP;\n\t}\n\tif (isDeepSeek) {\n\t\treturn DEEPSEEK_THINKING_LEVEL_MAP;\n\t}\n\tif (isGlm5x) {\n\t\tif (compat.thinkingFormat === \"zai\") {\n\t\t\treturn DEEPSEEK_THINKING_LEVEL_MAP;\n\t\t}\n\t\tif (compat.thinkingFormat === \"openrouter\") {\n\t\t\treturn { xhigh: \"xhigh\" };\n\t\t}\n\t\treturn { max: \"max\" };\n\t}\n\n\treturn undefined;\n}\n\nfunction resolveReasoningEffort(\n\tthinkingLevelMap: ThinkingLevelMap | undefined,\n\teffort: ReasoningEffort,\n): string | undefined {\n\tconst mapped = thinkingLevelMap?.[effort];\n\treturn mapped === undefined ? effort : typeof mapped === \"string\" ? mapped : undefined;\n}\n\n/**\n * Check if conversation messages contain tool calls or tool results.\n * This is needed because Anthropic (via proxy) requires the tools param\n * to be present when messages include tool_calls or tool role messages.\n */\nfunction hasToolHistory(messages: Message[]): boolean {\n\tfor (const msg of messages) {\n\t\tif (msg.role === \"toolResult\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (msg.role === \"assistant\") {\n\t\t\tif (msg.content.some((block) => block.type === \"toolCall\")) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction getDeferredToolNames(messages: Message[]): Set<string> {\n\tconst names = new Set<string>();\n\tfor (const message of messages) {\n\t\tif (message.role === \"toolResult\") {\n\t\t\tfor (const name of message.addedToolNames ?? []) {\n\t\t\t\tnames.add(name);\n\t\t\t}\n\t\t}\n\t}\n\treturn names;\n}\n\nfunction getToolsByName(tools: Tool[] | undefined, names: Iterable<string>): Tool[] {\n\tif (!tools) return [];\n\tconst toolsByName = new Map(tools.map((tool) => [tool.name, tool]));\n\treturn Array.from(names)\n\t\t.map((name) => toolsByName.get(name))\n\t\t.filter((tool): tool is Tool => tool !== undefined);\n}\n\nfunction isTextContentBlock(block: { type: string }): block is TextContent {\n\treturn block.type === \"text\";\n}\n\nfunction isThinkingContentBlock(block: { type: string }): block is ThinkingContent {\n\treturn block.type === \"thinking\";\n}\n\nfunction isToolCallBlock(block: { type: string }): block is ToolCall {\n\treturn block.type === \"toolCall\";\n}\n\nfunction isImageContentBlock(block: { type: string }): block is ImageContent {\n\treturn block.type === \"image\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction getOpenRouterRawMetadata(error: unknown): string | undefined {\n\tif (!isRecord(error) || !isRecord(error.error) || !isRecord(error.error.metadata)) return undefined;\n\tconst rawMetadata = error.error.metadata.raw;\n\treturn typeof rawMetadata === \"string\" ? rawMetadata : undefined;\n}\n\nfunction isForcedOpenAICompletionsToolChoice(\n\ttoolChoice: OpenAICompletionsRequestParams[\"tool_choice\"] | undefined,\n): boolean {\n\treturn toolChoice !== undefined && toolChoice !== \"auto\" && toolChoice !== \"none\";\n}\n\nfunction isReasoningDetailObject(detail: unknown): detail is Record<string, unknown> {\n\treturn typeof detail === \"object\" && detail !== null && !Array.isArray(detail);\n}\n\nfunction hasValidCommonReasoningDetailFields(candidate: Record<string, unknown>): boolean {\n\treturn (\n\t\t(candidate.id === undefined || candidate.id === null || typeof candidate.id === \"string\") &&\n\t\t(candidate.format === undefined || typeof candidate.format === \"string\") &&\n\t\t(candidate.index === undefined || typeof candidate.index === \"number\")\n\t);\n}\n\nfunction isOpenAIReasoningDetail(detail: unknown): detail is OpenAIReasoningDetail {\n\tif (!isReasoningDetailObject(detail) || !hasValidCommonReasoningDetailFields(detail)) {\n\t\treturn false;\n\t}\n\tswitch (detail.type) {\n\t\tcase \"reasoning.summary\":\n\t\t\treturn typeof detail.summary === \"string\";\n\t\tcase \"reasoning.encrypted\":\n\t\t\treturn typeof detail.data === \"string\";\n\t\tcase \"reasoning.text\":\n\t\t\treturn (\n\t\t\t\ttypeof detail.text === \"string\" &&\n\t\t\t\t(detail.signature === undefined || detail.signature === null || typeof detail.signature === \"string\")\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport interface OpenAICompletionsOptions extends StreamOptions {\n\ttoolChoice?: OpenAI.Chat.Completions.ChatCompletionToolChoiceOption;\n\treasoningEffort?: \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\t/** Token budgets per thinking level. Used when `compat.thinkingTokenBudgetField` or `compat.supportsThinkingTokenBudget` is set, or by `{ \"$var\": \"thinking.budget\" }`. */\n\tthinkingBudgets?: ThinkingBudgets;\n}\n\nexport interface ConvertCompletionsMessagesOptions {\n\tpreserveThinking?: boolean;\n\tgrammarToolInputProperties?: ReadonlyMap<string, string>;\n}\n\ninterface OpenAICompatCacheControl {\n\ttype: \"ephemeral\";\n\tttl?: string;\n}\n\ntype ResolvedChatTemplateKwargValue = string | number | boolean | null;\n\ntype ChatCompletionInstructionMessageParam = ChatCompletionDeveloperMessageParam | ChatCompletionSystemMessageParam;\n\ntype KimiToolSystemMessageParam = {\n\trole: \"system\";\n\ttools: OpenAI.Chat.Completions.ChatCompletionTool[];\n};\n\ntype OpenAIReasoningDetailBase = Record<string, JsonValue> & {\n\tid?: string | null;\n\tformat?: string;\n\tindex?: number;\n};\n\ntype OpenAIReasoningSummaryDetail = OpenAIReasoningDetailBase & {\n\ttype: \"reasoning.summary\";\n\tsummary: string;\n};\n\ntype OpenAIEncryptedReasoningDetail = OpenAIReasoningDetailBase & {\n\ttype: \"reasoning.encrypted\";\n\tdata: string;\n};\n\ntype OpenAIReasoningTextDetail = OpenAIReasoningDetailBase & {\n\ttype: \"reasoning.text\";\n\ttext: string;\n\tsignature?: string | null;\n};\n\ntype OpenAIReasoningDetail = OpenAIReasoningSummaryDetail | OpenAIEncryptedReasoningDetail | OpenAIReasoningTextDetail;\n\nfunction parseOpenAIReasoningDetails(signature: string | undefined): OpenAIReasoningDetail[] | undefined {\n\tif (!signature) return undefined;\n\ttry {\n\t\tconst parsed = JSON.parse(signature) as unknown;\n\t\treturn Array.isArray(parsed) && parsed.length > 0 && parsed.every(isOpenAIReasoningDetail) ? parsed : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction parseLegacyEncryptedReasoningDetail(\n\tsignature: string | undefined,\n): OpenAIEncryptedReasoningDetail | undefined {\n\tif (!signature) return undefined;\n\ttry {\n\t\tconst parsed = JSON.parse(signature) as unknown;\n\t\treturn isOpenAIReasoningDetail(parsed) &&\n\t\t\tparsed.type === \"reasoning.encrypted\" &&\n\t\t\ttypeof parsed.id === \"string\" &&\n\t\t\tparsed.id.length > 0 &&\n\t\t\tparsed.data.length > 0\n\t\t\t? parsed\n\t\t\t: undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction fillMissingCommonReasoningDetailFields(\n\ttarget: OpenAIReasoningDetailBase,\n\tsource: OpenAIReasoningDetail,\n): void {\n\ttarget.id ??= source.id;\n\ttarget.format ||= source.format;\n\ttarget.index ??= source.index;\n}\n\nfunction appendOpenAIReasoningDetail(details: OpenAIReasoningDetail[], detail: OpenAIReasoningDetail): void {\n\tconst lastDetail = details[details.length - 1];\n\tif (detail.type === \"reasoning.text\" && lastDetail?.type === \"reasoning.text\") {\n\t\tlastDetail.text += detail.text;\n\t\tlastDetail.signature ||= detail.signature;\n\t\tfillMissingCommonReasoningDetailFields(lastDetail, detail);\n\t\treturn;\n\t}\n\tif (detail.type === \"reasoning.summary\" && lastDetail?.type === \"reasoning.summary\") {\n\t\tlastDetail.summary += detail.summary;\n\t\tfillMissingCommonReasoningDetailFields(lastDetail, detail);\n\t\treturn;\n\t}\n\tdetails.push({ ...detail });\n}\n\ntype OpenAICompletionsReasoningField = \"reasoning\" | \"reasoning_content\" | \"reasoning_text\";\n\ntype ChatCompletionAssistantMessageParamWithReasoning = ChatCompletionAssistantMessageParam &\n\tPartial<Record<OpenAICompletionsReasoningField, string>> & {\n\t\treasoning_details?: JsonValue[];\n\t};\n\ntype ChatCompletionTextPartWithCacheControl = ChatCompletionContentPartText & {\n\tcache_control?: OpenAICompatCacheControl;\n};\n\ntype ChatCompletionToolWithCacheControl = OpenAI.Chat.Completions.ChatCompletionTool & {\n\tcache_control?: OpenAICompatCacheControl;\n};\n\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nexport const stream: StreamFunction<\"openai-completions\", OpenAICompletionsOptions> = (\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\toptions?: OpenAICompletionsOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t(async () => {\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: model.api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"pending\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\t// `reasoning_details` are replay metadata, not user-visible stream deltas.\n\t\t// Keep them in memory during streaming and serialize once when the block is finalized.\n\t\tlet streamedReasoningDetails: OpenAIReasoningDetail[] | undefined;\n\t\tconst applyStreamedReasoningDetails = (block: ThinkingContent): void => {\n\t\t\tif (streamedReasoningDetails !== undefined) {\n\t\t\t\tblock.thinkingSignature = JSON.stringify(streamedReasoningDetails);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tconst clientAuth = resolveOpenAIClientAuth(model.provider, options?.apiKey, options?.headers);\n\t\t\tconst compat = getCompat(model);\n\t\t\tconst grammarToolInputProperties = createGrammarToolInputProperties(\n\t\t\t\tcontext.tools,\n\t\t\t\tcompat.supportsOpenAIGrammarTools,\n\t\t\t);\n\t\t\tconst cacheRetention = resolveCacheRetention(options?.cacheRetention ?? model.cacheRetention, options?.env);\n\t\t\tconst cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n\t\t\tconst client = createClient(\n\t\t\t\tmodel,\n\t\t\t\tcontext,\n\t\t\t\tclientAuth.apiKey,\n\t\t\t\tclientAuth.headers,\n\t\t\t\toptions?.fetch,\n\t\t\t\tcacheSessionId,\n\t\t\t\tcompat,\n\t\t\t);\n\t\t\tlet params = buildParams(model, context, options, compat, cacheRetention, grammarToolInputProperties);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as OpenAICompletionsRequestParams;\n\t\t\t}\n\t\t\tparams = normalizeRequestToolSchemas(params, compat);\n\t\t\tconst requestOptions = {\n\t\t\t\t...(options?.signal ? { signal: options.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: 0,\n\t\t\t};\n\t\t\tconst createChatCompletion = client.chat.completions.create.bind(client.chat.completions) as (\n\t\t\t\tbody: OpenAICompletionsRequestParams,\n\t\t\t\trequestConfig: typeof requestOptions,\n\t\t\t) => { withResponse(): Promise<{ data: AsyncIterable<ChatCompletionChunk>; response: Response }> };\n\t\t\tconst createStream = (body: OpenAICompletionsRequestParams) =>\n\t\t\t\tcreateChatCompletion(body, requestOptions).withResponse();\n\t\t\tconst createRequest = async () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn await createStream(params);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (isForcedToolChoiceUnsupportedError(error, isForcedOpenAICompletionsToolChoice(params.tool_choice))) {\n\t\t\t\t\t\tparams = omitToolChoiceParam(params);\n\t\t\t\t\t\treturn createStream(params);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst { stream: openaiStream } = await retryProviderStreamRequest(\n\t\t\t\tasync () => {\n\t\t\t\t\tconst { data, response } = await createRequest();\n\t\t\t\t\tawait options?.onResponse?.(\n\t\t\t\t\t\t{ status: response.status, headers: headersToRecord(response.headers) },\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t);\n\t\t\t\t\treturn { stream: data, metadata: response };\n\t\t\t\t},\n\t\t\t\t{ maxRetries: options?.maxRetries, maxRetryDelayMs: options?.maxRetryDelayMs, signal: options?.signal },\n\t\t\t);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tinterface StreamingToolCallBlock extends ToolCall {\n\t\t\t\tpartialArgs?: string;\n\t\t\t\tcustomInput?: {\n\t\t\t\t\tproperty: string;\n\t\t\t\t\tjsonBuffer: GrammarToolInputJsonBuffer;\n\t\t\t\t};\n\t\t\t\tstreamIndex?: number;\n\t\t\t}\n\t\t\ttype StreamingBlock = TextContent | ThinkingContent | StreamingToolCallBlock;\n\t\t\ttype StreamingToolCallDelta = {\n\t\t\t\tindex?: number;\n\t\t\t\tid?: string;\n\t\t\t\ttype?: string;\n\t\t\t\tfunction?: { name?: string; arguments?: string };\n\t\t\t\tcustom?: { name?: string; input?: string };\n\t\t\t};\n\n\t\t\tlet textBlock: TextContent | null = null;\n\t\t\tlet thinkingBlock: ThinkingContent | null = null;\n\t\t\tlet activeBlock: StreamingBlock | null = null;\n\t\t\tlet deferMixedEvents = false;\n\t\t\tlet hasFinishReason = false;\n\t\t\tconst deferredTextDeltas: string[] = [];\n\t\t\tconst deferredThinkingDeltas: string[] = [];\n\t\t\tconst deferredToolCallDeltas = new Map<StreamingToolCallBlock, string[]>();\n\t\t\tconst toolCallBlocksByIndex = new Map<number, StreamingToolCallBlock>();\n\t\t\tconst toolCallBlocksById = new Map<string, StreamingToolCallBlock>();\n\t\t\tconst blocks = output.content as StreamingBlock[];\n\t\t\tconst getContentIndex = (block: StreamingBlock) => blocks.indexOf(block);\n\t\t\tconst getCustomToolCallInput = (block: StreamingToolCallBlock): string => {\n\t\t\t\tconst property = block.customInput?.property;\n\t\t\t\tif (property === undefined) return \"\";\n\t\t\t\tconst value = block.arguments[property];\n\t\t\t\treturn typeof value === \"string\" ? value : \"\";\n\t\t\t};\n\t\t\tconst appendCustomToolCallInput = (\n\t\t\t\tblock: StreamingToolCallBlock,\n\t\t\t\tnextInput: string,\n\t\t\t\tclose: boolean,\n\t\t\t): string | undefined => {\n\t\t\t\tconst customInput = block.customInput;\n\t\t\t\tif (!customInput) return undefined;\n\t\t\t\tconst delta = appendGrammarToolInputJsonDelta(\n\t\t\t\t\tcustomInput.jsonBuffer,\n\t\t\t\t\tcustomInput.property,\n\t\t\t\t\tnextInput,\n\t\t\t\t\tclose,\n\t\t\t\t);\n\t\t\t\tblock.arguments = { [customInput.property]: nextInput };\n\t\t\t\treturn delta;\n\t\t\t};\n\t\t\tconst finishBlock = (block: StreamingBlock) => {\n\t\t\t\tconst contentIndex = getContentIndex(block);\n\t\t\t\tif (contentIndex === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"text_end\",\n\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\tcontent: block.text,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\tapplyStreamedReasoningDetails(block);\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"thinking_end\",\n\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\tcontent: block.thinking,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tif (block.customInput) {\n\t\t\t\t\t\tconst delta = appendCustomToolCallInput(block, getCustomToolCallInput(block), true);\n\t\t\t\t\t\tif (delta !== undefined) {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall_delta\",\n\t\t\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialArgs);\n\t\t\t\t\t}\n\t\t\t\t\t// Finalize in-place and strip the scratch buffers so replay only\n\t\t\t\t\t// carries parsed arguments.\n\t\t\t\t\tdelete block.partialArgs;\n\t\t\t\t\tdelete block.customInput;\n\t\t\t\t\tdelete block.streamIndex;\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"toolcall_end\",\n\t\t\t\t\t\tcontentIndex,\n\t\t\t\t\t\ttoolCall: block,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst finishActiveBlock = () => {\n\t\t\t\tif (!activeBlock) return;\n\t\t\t\tfinishBlock(activeBlock);\n\t\t\t\tactiveBlock = null;\n\t\t\t};\n\t\t\tconst ensureTextBlock = () => {\n\t\t\t\tif (!textBlock) {\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tfinishActiveBlock();\n\t\t\t\t\t\tthinkingBlock = null;\n\t\t\t\t\t}\n\t\t\t\t\ttextBlock = { type: \"text\", text: \"\" };\n\t\t\t\t\tblocks.push(textBlock);\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tactiveBlock = textBlock;\n\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex: getContentIndex(textBlock), partial: output });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn textBlock;\n\t\t\t};\n\t\t\tconst ensureThinkingBlock = (thinkingSignature: string) => {\n\t\t\t\tif (!thinkingBlock) {\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tfinishActiveBlock();\n\t\t\t\t\t\ttextBlock = null;\n\t\t\t\t\t}\n\t\t\t\t\tthinkingBlock = {\n\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\tthinking: \"\",\n\t\t\t\t\t\tthinkingSignature,\n\t\t\t\t\t};\n\t\t\t\t\tblocks.push(thinkingBlock);\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tactiveBlock = thinkingBlock;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking_start\",\n\t\t\t\t\t\t\tcontentIndex: getContentIndex(thinkingBlock),\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn thinkingBlock;\n\t\t\t};\n\t\t\tconst ensureToolCallBlock = (toolCall: StreamingToolCallDelta) => {\n\t\t\t\tconst streamIndex = typeof toolCall.index === \"number\" ? toolCall.index : undefined;\n\t\t\t\tconst name = toolCall.function?.name ?? toolCall.custom?.name ?? \"\";\n\t\t\t\tlet block = streamIndex !== undefined ? toolCallBlocksByIndex.get(streamIndex) : undefined;\n\t\t\t\tif (!block && toolCall.id) {\n\t\t\t\t\tblock = toolCallBlocksById.get(toolCall.id);\n\t\t\t\t}\n\t\t\t\tif (!block) {\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tfinishActiveBlock();\n\t\t\t\t\t\ttextBlock = null;\n\t\t\t\t\t\tthinkingBlock = null;\n\t\t\t\t\t}\n\t\t\t\t\t// Note: the \"input\" fallback here should/must not be taken. in case the LLM makes up\n\t\t\t\t\t// a tool we don't knwo about, we at least have a place to stash our stuff.\n\t\t\t\t\tconst customInputProperty =\n\t\t\t\t\t\ttoolCall.custom && !toolCall.function ? (grammarToolInputProperties.get(name) ?? \"input\") : undefined;\n\t\t\t\t\tconst hasCustomInput = customInputProperty !== undefined;\n\t\t\t\t\tblock = {\n\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\tid: toolCall.id || \"\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\targuments: hasCustomInput ? { [customInputProperty]: \"\" } : {},\n\t\t\t\t\t\tpartialArgs: hasCustomInput ? undefined : \"\",\n\t\t\t\t\t\tcustomInput: hasCustomInput\n\t\t\t\t\t\t\t? { property: customInputProperty, jsonBuffer: { input: \"\", started: false, closed: false } }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tstreamIndex,\n\t\t\t\t\t};\n\t\t\t\t\tif (streamIndex !== undefined) {\n\t\t\t\t\t\ttoolCallBlocksByIndex.set(streamIndex, block);\n\t\t\t\t\t}\n\t\t\t\t\tif (toolCall.id) {\n\t\t\t\t\t\ttoolCallBlocksById.set(toolCall.id, block);\n\t\t\t\t\t}\n\t\t\t\t\tblocks.push(block);\n\t\t\t\t\tif (!deferMixedEvents) {\n\t\t\t\t\t\tactiveBlock = block;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"toolcall_start\",\n\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (streamIndex !== undefined && block.streamIndex === undefined) {\n\t\t\t\t\tblock.streamIndex = streamIndex;\n\t\t\t\t\ttoolCallBlocksByIndex.set(streamIndex, block);\n\t\t\t\t}\n\t\t\t\tif (toolCall.id) {\n\t\t\t\t\ttoolCallBlocksById.set(toolCall.id, block);\n\t\t\t\t}\n\t\t\t\tif (!block.name && name) {\n\t\t\t\t\tblock.name = name;\n\t\t\t\t}\n\t\t\t\tif (toolCall.custom && !toolCall.function && !block.customInput) {\n\t\t\t\t\tconst customInputProperty = grammarToolInputProperties.get(block.name) ?? \"input\";\n\t\t\t\t\tblock.arguments = { [customInputProperty]: \"\" };\n\t\t\t\t\tblock.customInput = {\n\t\t\t\t\t\tproperty: customInputProperty,\n\t\t\t\t\t\tjsonBuffer: { input: \"\", started: false, closed: false },\n\t\t\t\t\t};\n\t\t\t\t\tdelete block.partialArgs;\n\t\t\t\t}\n\t\t\t\treturn block;\n\t\t\t};\n\t\t\tconst flushDeferredBlocks = () => {\n\t\t\t\tfor (const block of blocks) {\n\t\t\t\t\tconst contentIndex = getContentIndex(block);\n\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex, partial: output });\n\t\t\t\t\t\tfor (const delta of deferredTextDeltas) {\n\t\t\t\t\t\t\tstream.push({ type: \"text_delta\", contentIndex, delta, partial: output });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\tstream.push({ type: \"thinking_start\", contentIndex, partial: output });\n\t\t\t\t\t\tfor (const delta of deferredThinkingDeltas) {\n\t\t\t\t\t\t\tstream.push({ type: \"thinking_delta\", contentIndex, delta, partial: output });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstream.push({ type: \"toolcall_start\", contentIndex, partial: output });\n\t\t\t\t\t\tfor (const delta of deferredToolCallDeltas.get(block) ?? []) {\n\t\t\t\t\t\t\tstream.push({ type: \"toolcall_delta\", contentIndex, delta, partial: output });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfinishBlock(block);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor await (const chunk of openaiStream) {\n\t\t\t\tif (!chunk || typeof chunk !== \"object\") continue;\n\n\t\t\t\t// OpenAI documents ChatCompletionChunk.id as the unique chat completion identifier,\n\t\t\t\t// and each chunk in a streamed completion carries the same id.\n\t\t\t\toutput.responseId ||= chunk.id;\n\t\t\t\tif (typeof chunk.model === \"string\" && chunk.model.length > 0 && chunk.model !== model.id) {\n\t\t\t\t\toutput.responseModel ||= chunk.model;\n\t\t\t\t}\n\t\t\t\tif (chunk.usage) {\n\t\t\t\t\toutput.usage = parseChunkUsage(chunk.usage, model);\n\t\t\t\t}\n\n\t\t\t\tconst choice = Array.isArray(chunk.choices) ? chunk.choices[0] : undefined;\n\t\t\t\tif (!choice) continue;\n\n\t\t\t\t// Fallback: some providers (e.g., Moonshot) return usage\n\t\t\t\t// in choice.usage instead of the standard chunk.usage\n\t\t\t\tconst choiceUsage = (choice as ChatCompletionChoiceWithUsage).usage;\n\t\t\t\tif (!chunk.usage && choiceUsage) {\n\t\t\t\t\toutput.usage = parseChunkUsage(choiceUsage, model);\n\t\t\t\t}\n\n\t\t\t\tif (choice.finish_reason) {\n\t\t\t\t\toutput.rawStopReason = choice.finish_reason;\n\t\t\t\t\tconst finishReasonResult = mapStopReason(choice.finish_reason);\n\t\t\t\t\toutput.stopReason = finishReasonResult.stopReason;\n\t\t\t\t\tif (finishReasonResult.errorMessage) {\n\t\t\t\t\t\toutput.errorMessage = finishReasonResult.errorMessage;\n\t\t\t\t\t}\n\t\t\t\t\thasFinishReason = true;\n\t\t\t\t}\n\n\t\t\t\tif (choice.delta) {\n\t\t\t\t\tconst contentDelta =\n\t\t\t\t\t\ttypeof choice.delta.content === \"string\" && choice.delta.content.length > 0\n\t\t\t\t\t\t\t? choice.delta.content\n\t\t\t\t\t\t\t: null;\n\t\t\t\t\tconst reasoningFields = [\"reasoning_content\", \"reasoning\", \"reasoning_text\"];\n\t\t\t\t\tconst deltaFields = choice.delta as Record<string, unknown>;\n\t\t\t\t\tlet foundReasoningField: string | null = null;\n\t\t\t\t\tfor (const field of reasoningFields) {\n\t\t\t\t\t\tconst value = deltaFields[field];\n\t\t\t\t\t\tif (typeof value === \"string\" && value.length > 0) {\n\t\t\t\t\t\t\tfoundReasoningField = field;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (blocks.length === 0 && contentDelta && foundReasoningField) {\n\t\t\t\t\t\tdeferMixedEvents = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (contentDelta) {\n\t\t\t\t\t\tconst block = ensureTextBlock();\n\t\t\t\t\t\tblock.text += contentDelta;\n\t\t\t\t\t\tif (deferMixedEvents) {\n\t\t\t\t\t\t\tdeferredTextDeltas.push(contentDelta);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\t\tdelta: contentDelta,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Some endpoints return reasoning in reasoning_content (llama.cpp),\n\t\t\t\t\t// or reasoning (other openai compatible endpoints)\n\t\t\t\t\t// Use the first non-empty reasoning field to avoid duplication\n\t\t\t\t\t// (e.g., chutes.ai returns both reasoning_content and reasoning with same content)\n\t\t\t\t\tif (foundReasoningField) {\n\t\t\t\t\t\tconst delta = deltaFields[foundReasoningField];\n\t\t\t\t\t\tif (typeof delta === \"string\" && delta.length > 0) {\n\t\t\t\t\t\t\tconst thinkingSignature =\n\t\t\t\t\t\t\t\tmodel.provider === \"opencode-go\" && foundReasoningField === \"reasoning\"\n\t\t\t\t\t\t\t\t\t? \"reasoning_content\"\n\t\t\t\t\t\t\t\t\t: foundReasoningField;\n\t\t\t\t\t\t\tconst block = ensureThinkingBlock(thinkingSignature);\n\t\t\t\t\t\t\tblock.thinking += delta;\n\t\t\t\t\t\t\tif (deferMixedEvents) {\n\t\t\t\t\t\t\t\tdeferredThinkingDeltas.push(delta);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (choice?.delta?.tool_calls) {\n\t\t\t\t\t\tfor (const toolCall of choice.delta.tool_calls as StreamingToolCallDelta[]) {\n\t\t\t\t\t\t\tconst block = ensureToolCallBlock(toolCall);\n\t\t\t\t\t\t\tif (!block.id && toolCall.id) {\n\t\t\t\t\t\t\t\tblock.id = toolCall.id;\n\t\t\t\t\t\t\t\ttoolCallBlocksById.set(toolCall.id, block);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst name = toolCall.function?.name ?? toolCall.custom?.name;\n\t\t\t\t\t\t\tif (!block.name && name) {\n\t\t\t\t\t\t\t\tblock.name = name;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet delta = \"\";\n\t\t\t\t\t\t\tif (toolCall.function?.arguments) {\n\t\t\t\t\t\t\t\tdelta = toolCall.function.arguments;\n\t\t\t\t\t\t\t\tblock.partialArgs = (block.partialArgs ?? \"\") + toolCall.function.arguments;\n\t\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialArgs);\n\t\t\t\t\t\t\t} else if (toolCall.custom?.input) {\n\t\t\t\t\t\t\t\tconst nextInput = getCustomToolCallInput(block) + toolCall.custom.input;\n\t\t\t\t\t\t\t\tdelta = appendCustomToolCallInput(block, nextInput, false) ?? \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (deferMixedEvents) {\n\t\t\t\t\t\t\t\tconst deltas = deferredToolCallDeltas.get(block) ?? [];\n\t\t\t\t\t\t\t\tdeltas.push(delta);\n\t\t\t\t\t\t\t\tdeferredToolCallDeltas.set(block, deltas);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: \"toolcall_delta\",\n\t\t\t\t\t\t\t\t\tcontentIndex: getContentIndex(block),\n\t\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst reasoningDetails = (choice.delta as { reasoning_details?: unknown }).reasoning_details;\n\t\t\t\t\tif (Array.isArray(reasoningDetails)) {\n\t\t\t\t\t\tfor (const detail of reasoningDetails) {\n\t\t\t\t\t\t\tif (!isOpenAIReasoningDetail(detail)) continue;\n\t\t\t\t\t\t\tconst block = ensureThinkingBlock(\"\");\n\t\t\t\t\t\t\tconst preservedDetails = parseOpenAIReasoningDetails(block.thinkingSignature) ?? [];\n\t\t\t\t\t\t\tappendOpenAIReasoningDetail(preservedDetails, detail);\n\t\t\t\t\t\t\t// Keep provider replay data in the existing signature slot. OpenRouter\n\t\t\t\t\t\t\t// requires the complete reasoning_details sequence in its original order.\n\t\t\t\t\t\t\tblock.thinkingSignature = JSON.stringify(preservedDetails);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (deferMixedEvents) flushDeferredBlocks();\n\t\t\telse finishActiveBlock();\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"aborted\") {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\t\t\tif (!hasFinishReason && !compat.supportsFinishReason) {\n\t\t\t\toutput.stopReason = output.content.some((block) => block.type === \"toolCall\") ? \"toolUse\" : \"stop\";\n\t\t\t}\n\t\t\tif (output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(output.errorMessage || \"Provider returned an error stop reason\");\n\t\t\t}\n\t\t\tif ((compat.supportsFinishReason && !hasFinishReason) || output.stopReason === \"pending\") {\n\t\t\t\tthrow new Error(\"Stream ended without finish_reason\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\tapplyStreamedReasoningDetails(block);\n\t\t\t\t}\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// Streaming scratch buffers are only used during parsing; never persist them.\n\t\t\t\tdelete (block as { partialArgs?: string }).partialArgs;\n\t\t\t\tdelete (block as { customInput?: unknown }).customInput;\n\t\t\t\tdelete (block as { streamIndex?: number }).streamIndex;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatProviderError(normalizeProviderError(error));\n\t\t\t// Some providers via OpenRouter give additional information in this field.\n\t\t\t// normalizeProviderError already stringifies the parsed body (error.error)\n\t\t\t// into errorMessage, so only append the raw metadata when it is not already\n\t\t\t// present to avoid double-printing it.\n\t\t\tconst rawMetadata = getOpenRouterRawMetadata(error);\n\t\t\tif (rawMetadata && !output.errorMessage.includes(String(rawMetadata))) {\n\t\t\t\toutput.errorMessage += `\\n${rawMetadata}`;\n\t\t\t}\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimple: StreamFunction<\"openai-completions\", SimpleStreamOptions> = (\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tresolveOpenAIClientAuth(model.provider, options?.apiKey, options?.headers);\n\n\tconst base = {\n\t\t...buildBaseOptions(model, context, options, options?.apiKey),\n\t\t// Adapter-native callers may pass the richer OpenAI tool_choice shape; the\n\t\t// provider-neutral SimpleStreamOptions value is the fallback.\n\t\ttoolChoice: (options as OpenAICompletionsOptions | undefined)?.toolChoice ?? options?.toolChoice,\n\t} satisfies OpenAICompletionsOptions;\n\tconst compat = getCompat(model);\n\tconst thinkingLevelMap = getThinkingLevelMap(model, compat);\n\tconst thinkingModel = thinkingLevelMap === model.thinkingLevelMap ? model : { ...model, thinkingLevelMap };\n\tconst clampedReasoning = options?.reasoning\n\t\t? clampThinkingLevel(thinkingModel, options.reasoning)\n\t\t: model.id.includes(\"gpt-6-astra\")\n\t\t\t? \"off\"\n\t\t\t: undefined;\n\tconst normalizedReasoning =\n\t\tclampedReasoning === \"off\" && model.id.includes(\"gpt-6-astra\") ? \"low\" : clampedReasoning;\n\tconst reasoningEffort =\n\t\tnormalizedReasoning === \"off\"\n\t\t\t? undefined\n\t\t\t: normalizedReasoning === \"max\" && supportsMax(thinkingModel)\n\t\t\t\t? \"max\"\n\t\t\t\t: clampMaxForOpenAI(normalizedReasoning, supportsXhigh(thinkingModel));\n\treturn stream(model, context, {\n\t\t...base,\n\t\treasoningEffort,\n\t\tthinkingBudgets: options?.thinkingBudgets,\n\t} satisfies OpenAICompletionsOptions);\n};\n\nfunction createClient(\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\tapiKey: string,\n\toptionsHeaders?: ProviderHeaders,\n\tfetch?: typeof globalThis.fetch,\n\tsessionId?: string,\n\tcompat: ResolvedOpenAICompletionsCompat = getCompat(model),\n) {\n\tconst headers: ProviderHeaders = { \"User-Agent\": getPiUserAgent(), ...model.headers };\n\tif (model.provider === \"github-copilot\") {\n\t\tconst hasImages = hasCopilotVisionInput(context.messages);\n\t\tconst copilotHeaders = buildCopilotDynamicHeaders({\n\t\t\tmessages: context.messages,\n\t\t\thasImages,\n\t\t});\n\t\tObject.assign(headers, copilotHeaders);\n\t}\n\n\tif (sessionId && compat.sendSessionAffinityHeaders) {\n\t\tif (compat.sessionAffinityFormat === \"openrouter\") {\n\t\t\theaders[\"x-session-id\"] = sessionId;\n\t\t} else {\n\t\t\tif (compat.sessionAffinityFormat === \"openai\") {\n\t\t\t\theaders.session_id = sessionId;\n\t\t\t}\n\t\t\theaders[\"x-client-request-id\"] = sessionId;\n\t\t\theaders[\"x-session-affinity\"] = sessionId;\n\t\t}\n\t}\n\n\t// Merge options headers last so they can override defaults\n\tif (optionsHeaders) {\n\t\tObject.assign(headers, optionsHeaders);\n\t}\n\n\treturn new OpenAI({\n\t\tapiKey,\n\t\tbaseURL: model.baseUrl,\n\t\tdangerouslyAllowBrowser: true,\n\t\tfetch,\n\t\tdefaultHeaders: headers,\n\t});\n}\n\nfunction buildParams(\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\toptions?: OpenAICompletionsOptions,\n\tcompat: ResolvedOpenAICompletionsCompat = getCompat(model),\n\tcacheRetention: CacheRetention = resolveCacheRetention(\n\t\toptions?.cacheRetention ?? model.cacheRetention,\n\t\toptions?.env,\n\t),\n\tgrammarToolInputProperties: ReadonlyMap<string, string> = createGrammarToolInputProperties(\n\t\tcontext.tools,\n\t\tcompat.supportsOpenAIGrammarTools,\n\t),\n) {\n\tconst messages = convertMessages(model, context, compat, {\n\t\tpreserveThinking: options?.reasoningEffort !== undefined,\n\t\tgrammarToolInputProperties,\n\t});\n\tconst cacheControl = getCompatCacheControl(compat, cacheRetention);\n\tconst thinkingLevelMap = getThinkingLevelMap(model, compat);\n\n\tconst params: OpenAICompletionsRequestParams = {\n\t\tmodel: model.id,\n\t\tmessages,\n\t\tstream: true,\n\t\tprompt_cache_key:\n\t\t\t(model.baseUrl.includes(\"api.openai.com\") && cacheRetention !== \"none\") ||\n\t\t\t(cacheRetention === \"long\" && compat.supportsLongCacheRetention) ||\n\t\t\t(compat.supportsPromptCacheKey && cacheRetention !== \"none\")\n\t\t\t\t? clampOpenAIPromptCacheKey(options?.sessionId)\n\t\t\t\t: undefined,\n\t\tprompt_cache_retention: cacheRetention === \"long\" && compat.supportsLongCacheRetention ? \"24h\" : undefined,\n\t\tsession_id:\n\t\t\tcompat.sendSessionAffinityHeaders && compat.sessionAffinityFormat === \"openrouter\" && cacheRetention !== \"none\"\n\t\t\t\t? options?.sessionId\n\t\t\t\t: undefined,\n\t};\n\n\tif (compat.supportsUsageInStreaming !== false) {\n\t\tparams.stream_options = { include_usage: true };\n\t}\n\n\tif (compat.supportsStore) {\n\t\tparams.store = false;\n\t}\n\n\tif (options?.maxTokens) {\n\t\tif (compat.maxTokensField === \"max_tokens\") {\n\t\t\tparams.max_tokens = options.maxTokens;\n\t\t} else {\n\t\t\tparams.max_completion_tokens = options.maxTokens;\n\t\t}\n\t}\n\n\tif (options?.temperature !== undefined) {\n\t\tparams.temperature = options.temperature;\n\t}\n\n\tconst deferredToolNames =\n\t\tcompat.deferredToolsMode === \"kimi\" ? getDeferredToolNames(context.messages) : new Set<string>();\n\tconst activeTools = context.tools?.filter((tool) => !deferredToolNames.has(tool.name));\n\tif (activeTools && activeTools.length > 0) {\n\t\tparams.tools = convertTools(activeTools, compat);\n\t\tif (compat.zaiToolStream) {\n\t\t\tparams.tool_stream = true;\n\t\t}\n\t} else if (hasToolHistory(context.messages)) {\n\t\t// Anthropic (via LiteLLM/proxy) requires tools param when conversation has tool_calls/tool_results\n\t\tparams.tools = [];\n\t}\n\n\tif (cacheControl) {\n\t\tapplyAnthropicCacheControl(messages, params.tools, cacheControl);\n\t}\n\n\tif (options?.toolChoice) {\n\t\tparams.tool_choice = options.toolChoice;\n\t}\n\n\tif (compat.vllmPriority !== undefined) {\n\t\t(params as any).priority = compat.vllmPriority;\n\t}\n\n\tconst thinkingTokenBudgetField = resolveThinkingTokenBudgetField(compat);\n\tconst thinkingBudget = resolveClampedThinkingBudget(model, options, params);\n\n\tif (compat.thinkingFormat === \"zai\" && model.reasoning) {\n\t\tconst isGlm53 = /(?:^|[/:-])glm-5\\.3(?:-(?:flash|highspeed))?(?:$|[/.:_])/.test(model.id.toLowerCase());\n\t\tconst zaiParams = params as Omit<typeof params, \"reasoning_effort\"> & {\n\t\t\tthinking?: { type: \"enabled\" | \"disabled\"; clear_thinking?: boolean };\n\t\t\treasoning_effort?: string;\n\t\t};\n\t\tzaiParams.thinking =\n\t\t\toptions?.reasoningEffort || isGlm53 ? { type: \"enabled\", clear_thinking: false } : { type: \"disabled\" };\n\t\tif (options?.reasoningEffort && compat.supportsReasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\tzaiParams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"qwen\" && model.reasoning) {\n\t\tparams.enable_thinking = !!options?.reasoningEffort;\n\t\tif (options?.reasoningEffort && compat.supportsReasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\tparams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"qwen-chat-template\" && model.reasoning) {\n\t\tparams.chat_template_kwargs = {\n\t\t\tenable_thinking: !!options?.reasoningEffort,\n\t\t\tpreserve_thinking: true,\n\t\t};\n\t} else if (compat.thinkingFormat === \"chat-template\" && model.reasoning) {\n\t\tconst chatTemplateKwargs = buildChatTemplateValues(\n\t\t\tmodel,\n\t\t\toptions,\n\t\t\tcompat,\n\t\t\tcompat.chatTemplateKwargs,\n\t\t\tthinkingBudget,\n\t\t);\n\t\tif (chatTemplateKwargs) {\n\t\t\t(params as any).chat_template_kwargs = chatTemplateKwargs;\n\t\t}\n\t} else if (compat.thinkingFormat === \"baseten\" && model.reasoning) {\n\t\tconst basetenParams = params as Omit<typeof params, \"reasoning_effort\"> & {\n\t\t\tchat_template_args?: Record<string, ResolvedChatTemplateKwargValue>;\n\t\t\treasoning_effort?: string;\n\t\t};\n\t\tconst chatTemplateArgs = buildChatTemplateValues(\n\t\t\tmodel,\n\t\t\toptions,\n\t\t\tcompat,\n\t\t\tcompat.chatTemplateArgs ?? {},\n\t\t\tthinkingBudget,\n\t\t);\n\t\tif (chatTemplateArgs) {\n\t\t\tbasetenParams.chat_template_args = chatTemplateArgs;\n\t\t}\n\t\tif (compat.supportsReasoningEffort) {\n\t\t\tconst requestedEffort = options?.reasoningEffort;\n\t\t\tconst mappedEffort = requestedEffort ? thinkingLevelMap?.[requestedEffort] : thinkingLevelMap?.off;\n\t\t\tconst effort = mappedEffort === undefined ? requestedEffort : mappedEffort;\n\t\t\tif (typeof effort === \"string\") {\n\t\t\t\tbasetenParams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"deepseek\" && model.reasoning) {\n\t\tif (options?.reasoningEffort) {\n\t\t\tparams.thinking = { type: \"enabled\" };\n\t\t\tif (compat.supportsReasoningEffort) {\n\t\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\t\tif (effort !== undefined) {\n\t\t\t\t\tparams.reasoning_effort = effort;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (compat.supportsDisabledThinking !== false && thinkingLevelMap?.off !== null) {\n\t\t\tparams.thinking = { type: \"disabled\" };\n\t\t}\n\t} else if (compat.thinkingFormat === \"openrouter\" && model.reasoning) {\n\t\t// OpenRouter normalizes reasoning across providers via a nested reasoning object.\n\t\tconst openRouterParams = params as typeof params & { reasoning?: { effort?: string } };\n\t\tif (options?.reasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\topenRouterParams.reasoning = { effort };\n\t\t\t}\n\t\t} else if (thinkingLevelMap?.off !== null) {\n\t\t\topenRouterParams.reasoning = { effort: thinkingLevelMap?.off ?? \"none\" };\n\t\t}\n\t} else if (compat.thinkingFormat === \"ant-ling\" && model.reasoning && options?.reasoningEffort) {\n\t\tconst effort = thinkingLevelMap?.[options.reasoningEffort];\n\t\tif (typeof effort === \"string\") {\n\t\t\t(params as typeof params & { reasoning?: { effort: string } }).reasoning = { effort };\n\t\t}\n\t} else if (compat.thinkingFormat === \"together\" && model.reasoning) {\n\t\tconst togetherParams = params as Omit<typeof params, \"reasoning_effort\"> & {\n\t\t\treasoning?: { enabled: boolean };\n\t\t\treasoning_effort?: string;\n\t\t};\n\t\ttogetherParams.reasoning = { enabled: !!options?.reasoningEffort };\n\t\tif (options?.reasoningEffort && compat.supportsReasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\ttogetherParams.reasoning_effort = effort;\n\t\t\t}\n\t\t}\n\t} else if (compat.thinkingFormat === \"string-thinking\" && model.reasoning) {\n\t\tif (options?.reasoningEffort) {\n\t\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\t\tif (effort !== undefined) {\n\t\t\t\tparams.thinking = effort;\n\t\t\t}\n\t\t} else if (thinkingLevelMap?.off !== null) {\n\t\t\tparams.thinking = thinkingLevelMap?.off ?? \"none\";\n\t\t}\n\t} else if (options?.reasoningEffort && model.reasoning && compat.supportsReasoningEffort) {\n\t\t// OpenAI-style reasoning_effort\n\t\tconst effort = resolveReasoningEffort(thinkingLevelMap, options.reasoningEffort);\n\t\tif (effort !== undefined) {\n\t\t\tparams.reasoning_effort = effort;\n\t\t}\n\t} else if (!options?.reasoningEffort && model.reasoning && compat.supportsReasoningEffort) {\n\t\tconst offValue = thinkingLevelMap?.off;\n\t\tif (typeof offValue === \"string\") {\n\t\t\tparams.reasoning_effort = offValue;\n\t\t}\n\t}\n\n\t// Cap reasoning with a top-level budget field. Independent of thinkingFormat: the\n\t// same server can serve zai, qwen or chat-template models. Reasoning and the answer\n\t// share max_tokens here, so an uncapped reasoning phase can consume the whole\n\t// response and leave no answer and no tool call.\n\tif (thinkingTokenBudgetField && thinkingBudget !== undefined) {\n\t\tObject.assign(params, { [thinkingTokenBudgetField]: thinkingBudget });\n\t}\n\n\t// OpenRouter provider routing preferences\n\tif (model.compat?.openRouterRouting) {\n\t\tparams.provider = model.compat.openRouterRouting;\n\t}\n\n\t// Venice request options. Venice's schema is `additionalProperties: false`, so\n\t// this is the only sanctioned place to shape the object.\n\tif (model.compat?.veniceParameters) {\n\t\tparams.venice_parameters = model.compat.veniceParameters;\n\t}\n\n\t// Vercel AI Gateway provider routing preferences\n\tif (model.compat?.vercelGatewayRouting) {\n\t\tconst routing = model.compat.vercelGatewayRouting;\n\t\tif (routing.only || routing.order) {\n\t\t\tconst gatewayOptions: Record<string, string[]> = {};\n\t\t\tif (routing.only) gatewayOptions.only = routing.only;\n\t\t\tif (routing.order) gatewayOptions.order = routing.order;\n\t\t\tparams.providerOptions = { gateway: gatewayOptions };\n\t\t}\n\t}\n\n\tapplyExtraBody(params, options?.extraBody, OPENAI_COMPLETIONS_RESERVED_BODY_KEYS);\n\n\t// Last so custom keys override the named request fields.\n\tif (options?.samplingParams) {\n\t\tObject.assign(params, options.samplingParams);\n\t}\n\n\treturn params;\n}\n\nfunction resolveThinkingTokenBudgetField(\n\tcompat: Pick<OpenAICompletionsCompat, \"thinkingTokenBudgetField\" | \"supportsThinkingTokenBudget\">,\n): ThinkingTokenBudgetField | undefined {\n\tif (compat.thinkingTokenBudgetField) return compat.thinkingTokenBudgetField;\n\tif (compat.supportsThinkingTokenBudget) return \"thinking_token_budget\";\n\treturn undefined;\n}\n\nfunction resolveClampedThinkingBudget(\n\tmodel: Model<\"openai-completions\">,\n\toptions: OpenAICompletionsOptions | undefined,\n\tparams: { max_tokens?: number | null; max_completion_tokens?: number | null },\n): number | undefined {\n\tif (!options?.reasoningEffort || !model.reasoning) return undefined;\n\tconst ceiling = params.max_tokens ?? params.max_completion_tokens ?? model.maxTokens;\n\tconst budget = clampThinkingBudgetToAnswerRoom(\n\t\tthinkingBudgetForLevel(options.reasoningEffort, options.thinkingBudgets),\n\t\tceiling,\n\t);\n\treturn budget > 0 ? budget : undefined;\n}\n\nfunction buildChatTemplateValues(\n\tmodel: Model<\"openai-completions\">,\n\toptions: OpenAICompletionsOptions | undefined,\n\tcompat: ResolvedOpenAICompletionsCompat,\n\tvalues: Record<string, ChatTemplateKwargValue>,\n\tthinkingBudget?: number,\n): Record<string, ResolvedChatTemplateKwargValue> | undefined {\n\tconst resolvedValues: Record<string, ResolvedChatTemplateKwargValue> = {};\n\n\tfor (const [key, value] of Object.entries(values)) {\n\t\tconst resolved = resolveChatTemplateKwargValue(model, options, compat, value, thinkingBudget);\n\t\tif (resolved !== undefined) {\n\t\t\tresolvedValues[key] = resolved;\n\t\t}\n\t}\n\n\treturn Object.keys(resolvedValues).length > 0 ? resolvedValues : undefined;\n}\n\nfunction resolveChatTemplateKwargValue(\n\tmodel: Model<\"openai-completions\">,\n\toptions: OpenAICompletionsOptions | undefined,\n\tcompat: ResolvedOpenAICompletionsCompat,\n\tvalue: ChatTemplateKwargValue,\n\tthinkingBudget?: number,\n): ResolvedChatTemplateKwargValue | undefined {\n\tif (typeof value !== \"object\" || value === null) {\n\t\treturn value;\n\t}\n\n\tconst reasoningEffort = options?.reasoningEffort;\n\tif (!reasoningEffort && value.omitWhenOff) {\n\t\treturn undefined;\n\t}\n\tif (value.$var === \"thinking.enabled\") {\n\t\treturn !!reasoningEffort;\n\t}\n\tif (value.$var === \"thinking.budget\") {\n\t\treturn thinkingBudget;\n\t}\n\n\tconst thinkingLevelMap = getThinkingLevelMap(model, compat);\n\tconst mappedValue = reasoningEffort ? thinkingLevelMap?.[reasoningEffort] : thinkingLevelMap?.off;\n\treturn mappedValue === undefined ? reasoningEffort : typeof mappedValue === \"string\" ? mappedValue : undefined;\n}\n\nfunction getCompatCacheControl(\n\tcompat: ResolvedOpenAICompletionsCompat,\n\tcacheRetention: CacheRetention,\n): OpenAICompatCacheControl | undefined {\n\tif (compat.cacheControlFormat !== \"anthropic\" || cacheRetention === \"none\") {\n\t\treturn undefined;\n\t}\n\n\tconst ttl = cacheRetention === \"long\" && compat.supportsLongCacheRetention ? \"1h\" : undefined;\n\treturn { type: \"ephemeral\", ...(ttl ? { ttl } : {}) };\n}\n\nfunction applyAnthropicCacheControl(\n\tmessages: ChatCompletionMessageParam[],\n\ttools: OpenAI.Chat.Completions.ChatCompletionTool[] | undefined,\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\taddCacheControlToSystemPrompt(messages, cacheControl);\n\taddCacheControlToLastTool(tools, cacheControl);\n\taddCacheControlToLastConversationMessage(messages, cacheControl);\n}\n\nfunction addCacheControlToSystemPrompt(\n\tmessages: ChatCompletionMessageParam[],\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\tfor (const message of messages) {\n\t\tif (message.role === \"system\" || message.role === \"developer\") {\n\t\t\taddCacheControlToInstructionMessage(message, cacheControl);\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nfunction addCacheControlToLastConversationMessage(\n\tmessages: ChatCompletionMessageParam[],\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (message.role === \"user\" || message.role === \"assistant\" || message.role === \"tool\") {\n\t\t\tif (addCacheControlToMessage(message, cacheControl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction addCacheControlToLastTool(\n\ttools: OpenAI.Chat.Completions.ChatCompletionTool[] | undefined,\n\tcacheControl: OpenAICompatCacheControl,\n): void {\n\tif (!tools || tools.length === 0) {\n\t\treturn;\n\t}\n\n\tconst lastTool = tools[tools.length - 1] as ChatCompletionToolWithCacheControl;\n\tlastTool.cache_control = cacheControl;\n}\n\nfunction addCacheControlToInstructionMessage(\n\tmessage: ChatCompletionInstructionMessageParam,\n\tcacheControl: OpenAICompatCacheControl,\n): boolean {\n\treturn addCacheControlToTextContent(message, cacheControl);\n}\n\nfunction addCacheControlToMessage(\n\tmessage: ChatCompletionMessageParam,\n\tcacheControl: OpenAICompatCacheControl,\n): boolean {\n\tif (message.role === \"user\" || message.role === \"assistant\" || message.role === \"tool\") {\n\t\treturn addCacheControlToTextContent(message, cacheControl);\n\t}\n\treturn false;\n}\n\nfunction addCacheControlToTextContent(\n\tmessage:\n\t\t| ChatCompletionInstructionMessageParam\n\t\t| ChatCompletionAssistantMessageParam\n\t\t| ChatCompletionToolMessageParam\n\t\t| Extract<ChatCompletionMessageParam, { role: \"user\" }>,\n\tcacheControl: OpenAICompatCacheControl,\n): boolean {\n\tconst content = message.content;\n\tif (typeof content === \"string\") {\n\t\tif (content.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tmessage.content = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: content,\n\t\t\t\tcache_control: cacheControl,\n\t\t\t},\n\t\t] as ChatCompletionTextPartWithCacheControl[];\n\t\treturn true;\n\t}\n\n\tif (!Array.isArray(content)) {\n\t\treturn false;\n\t}\n\n\tfor (let i = content.length - 1; i >= 0; i--) {\n\t\tconst part = content[i];\n\t\tif (part?.type === \"text\") {\n\t\t\tconst textPart = part as ChatCompletionTextPartWithCacheControl;\n\t\t\ttextPart.cache_control = cacheControl;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nexport function convertMessages(\n\tmodel: Model<\"openai-completions\">,\n\tcontext: Context,\n\tcompat: ResolvedOpenAICompletionsCompat,\n\toptions: ConvertCompletionsMessagesOptions = {},\n): ChatCompletionMessageParam[] {\n\tconst params: ChatCompletionMessageParam[] = [];\n\n\tconst normalizeToolCallId = (id: string): string => {\n\t\t// Handle pipe-separated IDs from OpenAI Responses API\n\t\t// Format: {call_id}|{id} where {id} can be 400+ chars with special chars (+, /, =)\n\t\t// These come from providers like github-copilot, openai-codex, opencode\n\t\t// Extract just the call_id part and normalize it\n\t\t// Multiple tool calls in the same turn can share call_id but differ by item_id.\n\t\t// Preserve item-level uniqueness when replaying into Chat Completions, which\n\t\t// requires distinct tool call ids.\n\t\tif (id.includes(\"|\")) {\n\t\t\t// Sanitize to allowed chars and truncate to 40 chars (OpenAI limit)\n\t\t\tconst separatorIndex = id.indexOf(\"|\");\n\t\t\tconst callId = id.slice(0, separatorIndex).replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\t\t\tconst itemId = id.slice(separatorIndex + 1).replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\t\t\tconst combinedId = itemId.length > 0 ? `${callId}_${itemId}` : callId;\n\t\t\tif (combinedId.length <= 40) {\n\t\t\t\treturn combinedId;\n\t\t\t}\n\t\t\tconst hash = shortHash(id).slice(0, 8);\n\t\t\tconst prefix = callId.slice(0, Math.max(1, 40 - hash.length - 1));\n\t\t\treturn `${prefix}_${hash}`;\n\t\t}\n\n\t\tconst sanitizedId = id.replace(/[^a-zA-Z0-9_-]/g, \"_\") || \"tool_call\";\n\t\tif (sanitizedId === id && sanitizedId.length <= 40) return id;\n\n\t\tconst hash = shortHash(id).slice(0, 8);\n\t\tconst prefix = sanitizedId.slice(0, Math.max(1, 40 - hash.length - 1));\n\t\treturn `${prefix}_${hash}`;\n\t};\n\n\tconst transformedMessages = transformMessages(context.messages, model, (id) => normalizeToolCallId(id), {\n\t\tpreserveThinking: options.preserveThinking,\n\t\tnormalizeSameModelToolCallIds: true,\n\t});\n\n\tif (context.systemPrompt) {\n\t\tconst useDeveloperRole = model.reasoning && compat.supportsDeveloperRole;\n\t\tconst role = useDeveloperRole ? \"developer\" : \"system\";\n\t\tparams.push({ role: role, content: sanitizeSurrogates(context.systemPrompt) });\n\t}\n\n\tlet lastRole: string | null = null;\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst msg = transformedMessages[i];\n\t\t// Some providers don't allow user messages directly after tool results\n\t\t// Insert a synthetic assistant message to bridge the gap\n\t\tif (compat.requiresAssistantAfterToolResult && lastRole === \"toolResult\" && msg.role === \"user\") {\n\t\t\tparams.push({\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: \"I have processed the tool results.\",\n\t\t\t});\n\t\t}\n\n\t\tif (msg.role === \"user\") {\n\t\t\tif (typeof msg.content === \"string\") {\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: sanitizeSurrogates(msg.content),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst content: ChatCompletionContentPart[] = msg.content.map((item): ChatCompletionContentPart => {\n\t\t\t\t\tif (item.type === \"text\") {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: sanitizeSurrogates(item.text),\n\t\t\t\t\t\t} satisfies ChatCompletionContentPartText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"image_url\",\n\t\t\t\t\t\t\timage_url: {\n\t\t\t\t\t\t\t\turl: `data:${item.mimeType};base64,${item.data}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} satisfies ChatCompletionContentPartImage;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (content.length === 0) continue;\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\t// Some providers don't accept null content, use empty string instead\n\t\t\tconst assistantMsg: ChatCompletionAssistantMessageParamWithReasoning = {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: compat.requiresAssistantAfterToolResult ? \"\" : null,\n\t\t\t};\n\n\t\t\tconst assistantTextParts = msg.content\n\t\t\t\t.filter(isTextContentBlock)\n\t\t\t\t.filter((block) => block.text.trim().length > 0)\n\t\t\t\t.map(\n\t\t\t\t\t(block) =>\n\t\t\t\t\t\t({\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t\t\t\t}) satisfies ChatCompletionContentPartText,\n\t\t\t\t);\n\t\t\tconst assistantText = assistantTextParts.map((part) => part.text).join(\"\");\n\n\t\t\tconst thinkingBlocks = msg.content.filter(isThinkingContentBlock);\n\t\t\tconst toolCalls = msg.content.filter(isToolCallBlock);\n\t\t\tconst signedReasoningDetails = thinkingBlocks\n\t\t\t\t.map((block) => parseOpenAIReasoningDetails(block.thinkingSignature))\n\t\t\t\t.find((details) => details !== undefined);\n\t\t\tconst legacyReasoningDetails = toolCalls\n\t\t\t\t.map((toolCall) => parseLegacyEncryptedReasoningDetail(toolCall.thoughtSignature))\n\t\t\t\t.filter((detail): detail is OpenAIEncryptedReasoningDetail => detail !== undefined);\n\t\t\tconst preservedReasoningDetails =\n\t\t\t\tsignedReasoningDetails ?? (legacyReasoningDetails.length > 0 ? legacyReasoningDetails : undefined);\n\n\t\t\tconst nonEmptyThinkingBlocks = thinkingBlocks.filter((block) => block.thinking.trim().length > 0);\n\t\t\tif (nonEmptyThinkingBlocks.length > 0) {\n\t\t\t\tif (compat.requiresThinkingAsText) {\n\t\t\t\t\t// Convert thinking blocks to plain text (no tags to avoid model mimicking them)\n\t\t\t\t\tconst thinkingText = nonEmptyThinkingBlocks\n\t\t\t\t\t\t.map((block) => sanitizeSurrogates(block.thinking))\n\t\t\t\t\t\t.join(\"\\n\\n\");\n\t\t\t\t\tassistantMsg.content = [{ type: \"text\", text: thinkingText }, ...assistantTextParts];\n\t\t\t\t} else {\n\t\t\t\t\t// Always send assistant content as a plain string (OpenAI Chat Completions\n\t\t\t\t\t// API standard format). Sending as an array of {type:\"text\", text:\"...\"}\n\t\t\t\t\t// objects is non-standard and causes some models (e.g. DeepSeek V3.2 via\n\t\t\t\t\t// NVIDIA NIM) to mirror the content-block structure literally in their\n\t\t\t\t\t// output, producing recursive nesting like [{'type':'text','text':'[{...}]'}].\n\t\t\t\t\tif (assistantText.length > 0) {\n\t\t\t\t\t\tassistantMsg.content = assistantText;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Use the signature from the first thinking block if available (for llama.cpp server + gpt-oss)\n\t\t\t\t\tlet signature = nonEmptyThinkingBlocks[0].thinkingSignature;\n\t\t\t\t\tif (model.provider === \"opencode-go\" && signature === \"reasoning\") {\n\t\t\t\t\t\tsignature = \"reasoning_content\";\n\t\t\t\t\t}\n\t\t\t\t\tif (signature && signature.length > 0) {\n\t\t\t\t\t\tObject.assign(assistantMsg, {\n\t\t\t\t\t\t\t[signature]: nonEmptyThinkingBlocks.map((block) => block.thinking).join(\"\\n\"),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (assistantText.length > 0) {\n\t\t\t\t// Always send assistant content as a plain string (OpenAI Chat Completions\n\t\t\t\t// API standard format). Sending as an array of {type:\"text\", text:\"...\"}\n\t\t\t\t// objects is non-standard and causes some models (e.g. DeepSeek V3.2 via\n\t\t\t\t// NVIDIA NIM) to mirror the content-block structure literally in their\n\t\t\t\t// output, producing recursive nesting like [{'type':'text','text':'[{...}]'}].\n\t\t\t\tassistantMsg.content = assistantText;\n\t\t\t}\n\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tassistantMsg.tool_calls = toolCalls.map((tc): ChatCompletionMessageToolCall => {\n\t\t\t\t\tconst customInputProperty = options?.grammarToolInputProperties?.get(tc.name);\n\t\t\t\t\tif (customInputProperty !== undefined) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: tc.id,\n\t\t\t\t\t\t\ttype: \"custom\",\n\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\tname: tc.name,\n\t\t\t\t\t\t\t\tinput: sanitizeSurrogates(getGrammarToolInput(tc.name, tc.arguments, customInputProperty)),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: tc.id,\n\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\tname: tc.name,\n\t\t\t\t\t\t\targuments: JSON.stringify(tc.arguments),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (preservedReasoningDetails) {\n\t\t\t\tassistantMsg.reasoning_details = preservedReasoningDetails;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tcompat.requiresReasoningContentOnAssistantMessages &&\n\t\t\t\tmodel.reasoning &&\n\t\t\t\tassistantMsg.reasoning_content === undefined\n\t\t\t) {\n\t\t\t\tassistantMsg.reasoning_content = \"\";\n\t\t\t}\n\t\t\t// Skip assistant messages that have no content and no tool calls.\n\t\t\t// Some providers require \"either content or tool_calls, but not none\".\n\t\t\t// Other providers also don't accept empty assistant messages.\n\t\t\t// This handles aborted assistant responses that got no content.\n\t\t\tconst content = assistantMsg.content;\n\t\t\tconst hasContent =\n\t\t\t\tcontent !== null &&\n\t\t\t\tcontent !== undefined &&\n\t\t\t\t(typeof content === \"string\" ? content.length > 0 : content.length > 0);\n\t\t\tif (!hasContent && !assistantMsg.tool_calls) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tparams.push(assistantMsg);\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\tconst imageBlocks: Array<{ type: \"image_url\"; image_url: { url: string } }> = [];\n\t\t\tconst deferredToolNames = new Set<string>();\n\t\t\tlet j = i;\n\n\t\t\tfor (; j < transformedMessages.length && transformedMessages[j].role === \"toolResult\"; j++) {\n\t\t\t\tconst toolMsg = transformedMessages[j] as ToolResultMessage;\n\n\t\t\t\t// Extract text and image content\n\t\t\t\tconst textResult = toolMsg.content\n\t\t\t\t\t.filter(isTextContentBlock)\n\t\t\t\t\t.map((block) => block.text)\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tconst hasImages = toolMsg.content.some((c) => c.type === \"image\");\n\n\t\t\t\t// Always send tool result with text (or placeholder if only images)\n\t\t\t\tconst hasText = textResult.length > 0;\n\t\t\t\tconst toolResultText = hasText ? textResult : hasImages ? \"(see attached image)\" : \"(no tool output)\";\n\t\t\t\t// Some providers require the 'name' field in tool results\n\t\t\t\tconst toolResultMsg: ChatCompletionToolMessageParam = {\n\t\t\t\t\trole: \"tool\",\n\t\t\t\t\tcontent: sanitizeSurrogates(toolResultText),\n\t\t\t\t\ttool_call_id: toolMsg.toolCallId,\n\t\t\t\t};\n\t\t\t\tif (compat.requiresToolResultName && toolMsg.toolName) {\n\t\t\t\t\tObject.assign(toolResultMsg, { name: toolMsg.toolName });\n\t\t\t\t}\n\t\t\t\tparams.push(toolResultMsg);\n\n\t\t\t\tif (compat.deferredToolsMode === \"kimi\") {\n\t\t\t\t\tfor (const name of toolMsg.addedToolNames ?? []) {\n\t\t\t\t\t\tdeferredToolNames.add(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hasImages && model.input.includes(\"image\")) {\n\t\t\t\t\tfor (const block of toolMsg.content) {\n\t\t\t\t\t\tif (isImageContentBlock(block)) {\n\t\t\t\t\t\t\timageBlocks.push({\n\t\t\t\t\t\t\t\ttype: \"image_url\",\n\t\t\t\t\t\t\t\timage_url: {\n\t\t\t\t\t\t\t\t\turl: `data:${block.mimeType};base64,${block.data}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = j - 1;\n\n\t\t\tif (imageBlocks.length > 0) {\n\t\t\t\tif (compat.requiresAssistantAfterToolResult) {\n\t\t\t\t\tparams.push({\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tcontent: \"I have processed the tool results.\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: \"Attached image(s) from tool result:\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...imageBlocks,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tlastRole = \"user\";\n\t\t\t} else {\n\t\t\t\tlastRole = \"toolResult\";\n\t\t\t}\n\n\t\t\tif (deferredToolNames.size > 0) {\n\t\t\t\tconst deferredTools = getToolsByName(context.tools, deferredToolNames);\n\t\t\t\tif (deferredTools.length > 0) {\n\t\t\t\t\tconst kimiToolMessage: KimiToolSystemMessageParam = {\n\t\t\t\t\t\trole: \"system\",\n\t\t\t\t\t\ttools: convertTools(deferredTools, compat),\n\t\t\t\t\t};\n\t\t\t\t\t// Kimi accepts a system message with tools but omits the standard content field.\n\t\t\t\t\tparams.push(kimiToolMessage as unknown as ChatCompletionMessageParam);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tlastRole = msg.role;\n\t}\n\n\treturn params;\n}\n\nfunction convertTools(\n\ttools: Tool[],\n\tcompat: ResolvedOpenAICompletionsCompat,\n): OpenAI.Chat.Completions.ChatCompletionTool[] {\n\treturn tools.map((tool) => {\n\t\tconst grammar = resolveGrammarConstrainedSampling(tool, compat.supportsOpenAIGrammarTools);\n\t\tif (grammar) {\n\t\t\treturn {\n\t\t\t\ttype: \"custom\",\n\t\t\t\tcustom: {\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tformat: {\n\t\t\t\t\t\ttype: \"grammar\",\n\t\t\t\t\t\tgrammar: {\n\t\t\t\t\t\t\tsyntax: grammar.format,\n\t\t\t\t\t\t\tdefinition: grammar.definition,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (tool.freeform) {\n\t\t\tthrow new Error(\"Freeform tools cannot be sent to OpenAI Chat Completions; use Responses API\");\n\t\t}\n\n\t\tconst strict = resolveJsonSchemaStrictSampling(tool, compat.supportsStrictMode !== false);\n\t\tconst schemaParameters = getJsonSchemaToolParameters(tool, strict) as Record<string, unknown>;\n\t\tconst normalizedParameters =\n\t\t\tcompat.toolSchemaFlavor === \"moonshot-mfjs\"\n\t\t\t\t? normalizeToolParametersForMoonshot(schemaParameters)\n\t\t\t\t: normalizeToolParametersForOpenAICompat(schemaParameters);\n\t\treturn {\n\t\t\ttype: \"function\",\n\t\t\tfunction: {\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: normalizedParameters as FunctionParameters,\n\t\t\t\t// Only include strict if provider supports it. Some reject unknown fields.\n\t\t\t\t...(compat.supportsStrictMode !== false && { strict: strict ?? false }),\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction normalizeRequestToolSchemas(\n\tparams: OpenAICompletionsRequestParams,\n\tcompat: ResolvedOpenAICompletionsCompat,\n): OpenAICompletionsRequestParams {\n\tif (!params.tools) return params;\n\n\treturn {\n\t\t...params,\n\t\ttools: params.tools.map((tool) => {\n\t\t\tif (tool.type !== \"function\" || !tool.function.parameters) return tool;\n\n\t\t\tconst parameters =\n\t\t\t\tcompat.toolSchemaFlavor === \"moonshot-mfjs\"\n\t\t\t\t\t? normalizeToolParametersForMoonshot(tool.function.parameters)\n\t\t\t\t\t: normalizeToolParametersForOpenAICompat(tool.function.parameters);\n\t\t\treturn {\n\t\t\t\t...tool,\n\t\t\t\tfunction: { ...tool.function, parameters },\n\t\t\t};\n\t\t}),\n\t};\n}\n\nfunction parseChunkUsage(\n\trawUsage: {\n\t\tprompt_tokens?: number;\n\t\tcompletion_tokens?: number;\n\t\tcached_tokens?: number;\n\t\tprompt_cache_hit_tokens?: number;\n\t\tprompt_tokens_details?: { cached_tokens?: number; cache_write_tokens?: number };\n\t\tcompletion_tokens_details?: { reasoning_tokens?: number };\n\t},\n\tmodel: Model<\"openai-completions\">,\n): AssistantMessage[\"usage\"] {\n\tconst promptTokens = rawUsage.prompt_tokens || 0;\n\tconst cacheReadTokens =\n\t\trawUsage.prompt_tokens_details?.cached_tokens ?? rawUsage.prompt_cache_hit_tokens ?? rawUsage.cached_tokens ?? 0;\n\tconst cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0;\n\n\t// Follow documented OpenAI/OpenRouter semantics: cached_tokens is cache-read\n\t// tokens (hits). Providers disagree on placement: OpenAI/OpenRouter use\n\t// prompt_tokens_details.cached_tokens, DeepSeek uses prompt_cache_hit_tokens,\n\t// and Kimi documents top-level usage.cached_tokens on the final usage chunk.\n\t// OpenAI does not document or emit cache_write_tokens, but\n\t// OpenRouter-compatible providers can include it as a separate write count.\n\t// OpenRouter's own provider/tests affirm the separate mapping:\n\t// https://github.com/OpenRouterTeam/ai-sdk-provider/pull/409\n\t// Do not subtract writes from cached_tokens, otherwise spec-compliant\n\t// providers are under-reported. DS4 mirrors this contract too:\n\t// https://github.com/antirez/ds4/pull/29\n\tconst input = Math.max(0, promptTokens - cacheReadTokens - cacheWriteTokens);\n\t// OpenAI completion_tokens already includes reasoning_tokens.\n\tconst outputTokens = rawUsage.completion_tokens || 0;\n\tconst usage: AssistantMessage[\"usage\"] = {\n\t\tinput,\n\t\toutput: outputTokens,\n\t\tcacheRead: cacheReadTokens,\n\t\tcacheWrite: cacheWriteTokens,\n\t\treasoning: rawUsage.completion_tokens_details?.reasoning_tokens || 0,\n\t\ttotalTokens: input + outputTokens + cacheReadTokens + cacheWriteTokens,\n\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t};\n\tcalculateCost(model, usage);\n\treturn usage;\n}\n\nfunction mapStopReason(reason: ChatCompletionChunk.Choice[\"finish_reason\"] | string): {\n\tstopReason: StopReason;\n\terrorMessage?: string;\n} {\n\tif (reason === null) return { stopReason: \"stop\" };\n\tswitch (reason) {\n\t\tcase \"stop\":\n\t\tcase \"end\":\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"length\":\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase \"function_call\":\n\t\tcase \"tool_calls\":\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tcase \"content_filter\":\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider finish_reason: content_filter\" };\n\t\tcase \"network_error\":\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider finish_reason: network_error\" };\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: `Provider finish_reason: ${reason}`,\n\t\t\t};\n\t}\n}\n"]}