@code-yeongyu/senpi 2026.11.2-3 → 2026.11.3-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/bundle/chunks/anthropic-messages-LJAKRKMX.js +11 -0
  3. package/dist/bundle/chunks/{args-AOI4NEA6.js → args-GQTXDYS3.js} +1 -1
  4. package/dist/bundle/chunks/{azure-openai-responses-YLBBQXI7.js → azure-openai-responses-HDEKTPMZ.js} +1 -1
  5. package/dist/bundle/chunks/chatgpt-subscription.js +10 -2
  6. package/dist/bundle/chunks/{chunk-ED7VJGL4.js → chunk-2PGSRQBF.js} +1 -1
  7. package/dist/bundle/chunks/{chunk-LMIETUPG.js → chunk-3LDASCJN.js} +1 -1
  8. package/dist/bundle/chunks/{chunk-PIAY636U.js → chunk-3QPE75AR.js} +1 -1
  9. package/dist/bundle/chunks/{chunk-FQZZGSYH.js → chunk-4ZGQUOBV.js} +1 -1
  10. package/dist/bundle/chunks/{chunk-S2M5D5GS.js → chunk-5BMIET5O.js} +2 -2
  11. package/dist/bundle/chunks/{chunk-XLLQJALL.js → chunk-67M7HKXO.js} +1 -1
  12. package/dist/bundle/chunks/chunk-6ISOXWH2.js +2 -0
  13. package/dist/bundle/chunks/{chunk-IWM5QRAE.js → chunk-6NPK2O3C.js} +2 -2
  14. package/dist/bundle/chunks/{chunk-FO56LSUK.js → chunk-7C4W5HMU.js} +1 -1
  15. package/dist/bundle/chunks/chunk-7KIHKE2T.js +2 -0
  16. package/dist/bundle/chunks/{chunk-BW4YXS7X.js → chunk-A4KOQUHT.js} +1 -1
  17. package/dist/bundle/chunks/{chunk-FJSJUVQQ.js → chunk-A5PZGQCP.js} +3 -3
  18. package/dist/bundle/chunks/{chunk-TBARMJ75.js → chunk-AVP6DDBF.js} +1 -1
  19. package/dist/bundle/chunks/{chunk-KVPRQ5KN.js → chunk-B3GTID4P.js} +1 -1
  20. package/dist/bundle/chunks/{chunk-2XBKE2BZ.js → chunk-BIWFWGUA.js} +1 -1
  21. package/dist/bundle/chunks/{chunk-6LDUM5CL.js → chunk-DCI4QOUX.js} +1 -1
  22. package/dist/bundle/chunks/{chunk-2YFPDNNP.js → chunk-DNZKKG4V.js} +1 -1
  23. package/dist/bundle/chunks/{chunk-W2V7RIBF.js → chunk-E7SA75PP.js} +1 -1
  24. package/dist/bundle/chunks/{chunk-YWD54RHU.js → chunk-EBZ6IP4V.js} +1 -1
  25. package/dist/bundle/chunks/{chunk-N4TSAHRL.js → chunk-EVTTLPIY.js} +1 -1
  26. package/dist/bundle/chunks/{chunk-J2OBN7TI.js → chunk-G5XUGK4B.js} +1 -1
  27. package/dist/bundle/chunks/{chunk-IHOQR7TU.js → chunk-GKP34H3C.js} +2 -2
  28. package/dist/bundle/chunks/{chunk-PP52OWBB.js → chunk-GLTOBXZY.js} +1 -1
  29. package/dist/bundle/chunks/{chunk-ZSVWKOAJ.js → chunk-IJGXAACA.js} +263 -237
  30. package/dist/bundle/chunks/{chunk-LGO25HPL.js → chunk-JCTODLUP.js} +1 -1
  31. package/dist/bundle/chunks/{chunk-3ESZE3DG.js → chunk-KHBCZ6TR.js} +1 -1
  32. package/dist/bundle/chunks/chunk-KJR3XXMI.js +2 -0
  33. package/dist/bundle/chunks/{chunk-TVMW2SUP.js → chunk-KY4V3TSO.js} +2 -2
  34. package/dist/bundle/chunks/{chunk-T5ZJ2Q4O.js → chunk-MCXOJHN2.js} +1 -1
  35. package/dist/bundle/chunks/{chunk-GIY7PGOH.js → chunk-NKI7L5UM.js} +3 -3
  36. package/dist/bundle/chunks/{chunk-L3V65XW7.js → chunk-OD7RT7G7.js} +1 -1
  37. package/dist/bundle/chunks/{chunk-NYXXKS6D.js → chunk-OOU3BRUY.js} +3 -2
  38. package/dist/bundle/chunks/{chunk-LPHUMR6R.js → chunk-OT6ALXSJ.js} +1 -1
  39. package/dist/bundle/chunks/{chunk-XGBRBCIQ.js → chunk-Q5CKFBQT.js} +1 -1
  40. package/dist/bundle/chunks/{chunk-F7GBSQRV.js → chunk-QPYDQ4QK.js} +1 -1
  41. package/dist/bundle/chunks/{chunk-7FUO655J.js → chunk-QSMT5KVJ.js} +1 -1
  42. package/dist/bundle/chunks/{chunk-SAZ6E74O.js → chunk-RUOTFZQR.js} +1 -1
  43. package/dist/bundle/chunks/chunk-RWF6IJQL.js +448 -0
  44. package/dist/bundle/chunks/{chunk-P4AT7SBE.js → chunk-S5Y7NEHB.js} +1 -1
  45. package/dist/bundle/chunks/{chunk-QLTQ3UUI.js → chunk-SCBTASM4.js} +1 -1
  46. package/dist/bundle/chunks/chunk-SJWTZ3Z2.js +2 -0
  47. package/dist/bundle/chunks/{chunk-ISZ4EWIS.js → chunk-SODMQEHO.js} +1 -1
  48. package/dist/bundle/chunks/{chunk-WEGTCUO3.js → chunk-SQAQEITV.js} +1 -1
  49. package/dist/bundle/chunks/{chunk-UFVZTQKN.js → chunk-TQQG5L4D.js} +1 -1
  50. package/dist/bundle/chunks/{chunk-662SCMTH.js → chunk-U6A4X3FV.js} +1 -1
  51. package/dist/bundle/chunks/{chunk-ACIFXWJ6.js → chunk-UHUM55TR.js} +1 -1
  52. package/dist/bundle/chunks/{chunk-L5OFGHDA.js → chunk-USKWGPA6.js} +1 -1
  53. package/dist/bundle/chunks/{chunk-7ORS33CE.js → chunk-VDDJADPV.js} +1 -1
  54. package/dist/bundle/chunks/{chunk-R65P6LAT.js → chunk-VIHXG53S.js} +1 -1
  55. package/dist/bundle/chunks/{chunk-SGS76663.js → chunk-VPVD5G32.js} +1 -1
  56. package/dist/bundle/chunks/chunk-WO6I5PRF.js +3 -0
  57. package/dist/bundle/chunks/{chunk-ETCYVVVO.js → chunk-WVEIJ437.js} +1 -1
  58. package/dist/bundle/chunks/{chunk-VRWJJMHO.js → chunk-XKFG4N3Z.js} +1 -1
  59. package/dist/bundle/chunks/{chunk-57MRFI6E.js → chunk-XMWPCJU6.js} +1 -1
  60. package/dist/bundle/chunks/{chunk-GDPWQJDQ.js → chunk-XPSXUKSD.js} +1 -1
  61. package/dist/bundle/chunks/{chunk-FNBEICAA.js → chunk-YI6KRJDC.js} +1 -1
  62. package/dist/bundle/chunks/{chunk-UURGXV5B.js → chunk-YP47G4YP.js} +1 -1
  63. package/dist/bundle/chunks/{chunk-TXOR5BQL.js → chunk-YRYDCKUI.js} +1 -1
  64. package/dist/bundle/chunks/{chunk-QAM6AXA2.js → chunk-YTKZSGMQ.js} +12 -9
  65. package/dist/bundle/chunks/{chunk-V36CXIIB.js → chunk-YXL3PNTL.js} +1 -1
  66. package/dist/bundle/chunks/chunk-Z7HTHT6K.js +2 -0
  67. package/dist/bundle/chunks/{chunk-27XEDYQA.js → chunk-ZTPG27EJ.js} +1 -1
  68. package/dist/bundle/chunks/{cli-main-534A3WSC.js → cli-main-RN7YB427.js} +1 -1
  69. package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-FC7QLRU2.js → cloudflare-workers-ai-system-one-N5KFNKK4.js} +1 -1
  70. package/dist/bundle/chunks/credential-accounts-BJX55MTT.js +2 -0
  71. package/dist/bundle/chunks/devin.js +10 -2
  72. package/dist/bundle/chunks/{dispatch-UY6LBJJE.js → dispatch-M7UAPGVY.js} +1 -1
  73. package/dist/bundle/chunks/{google-generative-ai-7PQ4QRHJ.js → google-generative-ai-2TZSCSIS.js} +1 -1
  74. package/dist/bundle/chunks/{google-vertex-DY7EO4EJ.js → google-vertex-7NJJOI7V.js} +1 -1
  75. package/dist/bundle/chunks/{health-write-EB4CPHXN.js → health-write-YUSPVH7U.js} +1 -1
  76. package/dist/bundle/chunks/{help-fast-path-U2PSNNWO.js → help-fast-path-DWCA77QP.js} +1 -1
  77. package/dist/bundle/chunks/host-command-KJXUTSQ7.js +2 -0
  78. package/dist/bundle/chunks/{host-lifecycle-TGG7KGQH.js → host-lifecycle-QHIJ4G2K.js} +1 -1
  79. package/dist/bundle/chunks/host-lifecycle.js +1 -1
  80. package/dist/bundle/chunks/{host-session-command-PWVPQ2OV.js → host-session-command-IPH3WXSG.js} +1 -1
  81. package/dist/bundle/chunks/{host-socket-request-F2R5P34M.js → host-socket-request-XPXJV3CS.js} +1 -1
  82. package/dist/bundle/chunks/interactive-mode-XUXMDYLA.js +2 -0
  83. package/dist/bundle/chunks/{list-tips-3D3A6GFK.js → list-tips-XJY7EL5S.js} +1 -1
  84. package/dist/bundle/chunks/{login-health-7G2DZVOV.js → login-health-226NO44U.js} +1 -1
  85. package/dist/bundle/chunks/main-P7PKMJUG.js +2 -0
  86. package/dist/bundle/chunks/{mistral-conversations-6F2RAIB2.js → mistral-conversations-QMHMHSUF.js} +1 -1
  87. package/dist/bundle/chunks/{multi-session-host-7E26R5JF.js → multi-session-host-ZQY4AN46.js} +4 -4
  88. package/dist/bundle/chunks/{native-loader-NMDTMHMA.js → native-loader-A6DNMGCK.js} +1 -1
  89. package/dist/bundle/chunks/openai-chatgpt.js +11 -3
  90. package/dist/bundle/chunks/{openai-codex-responses-VNBMMIL3.js → openai-codex-responses-GUAHKQE2.js} +1 -1
  91. package/dist/bundle/chunks/{openai-completions-JLR32APM.js → openai-completions-UPRTFM54.js} +1 -1
  92. package/dist/bundle/chunks/{openai-images-LEBNERSM.js → openai-images-IKWNS6VB.js} +1 -1
  93. package/dist/bundle/chunks/{openai-responses-JCDUNMHA.js → openai-responses-AXN5NUHH.js} +1 -1
  94. package/dist/bundle/chunks/openrouter.js +10 -2
  95. package/dist/bundle/chunks/{package-manager-cli-CBSDV36M.js → package-manager-cli-PP7L2Q5M.js} +1 -1
  96. package/dist/bundle/chunks/radius.js +10 -2
  97. package/dist/bundle/chunks/{rg-engine-JDUYBM6L.js → rg-engine-VRSXT6HG.js} +1 -1
  98. package/dist/bundle/chunks/{role-LP6LVNCY.js → role-L5J7ZPCF.js} +1 -1
  99. package/dist/bundle/chunks/rotation-stream-6INZXQFC.js +2 -0
  100. package/dist/bundle/chunks/rpc-mode-W4UATRAT.js +2 -0
  101. package/dist/bundle/chunks/{rpc-monitor-source-5TUR27NY.js → rpc-monitor-source-RMMUPBMS.js} +1 -1
  102. package/dist/bundle/chunks/{run-attached-tui-PVLUHHJX.js → run-attached-tui-RLXFGCEP.js} +1 -1
  103. package/dist/bundle/chunks/{schedule-command-W45NYTTK.js → schedule-command-ZNFEJNTT.js} +1 -1
  104. package/dist/bundle/chunks/{session-control-endpoint-LFLUNALC.js → session-control-endpoint-TWTONJWF.js} +1 -1
  105. package/dist/bundle/chunks/{session-picker-OZUINLD7.js → session-picker-KRUVCHOV.js} +1 -1
  106. package/dist/bundle/chunks/session-slot-NJOZCOHQ.js +2 -0
  107. package/dist/bundle/chunks/session-worker.js +492 -461
  108. package/dist/bundle/chunks/{state-store-SZARKD36.js → state-store-ZAFZ4JOM.js} +1 -1
  109. package/dist/bundle/chunks/{typesafe-system-one-5JYDJK6S.js → typesafe-system-one-CICIRAYN.js} +1 -1
  110. package/dist/bundle/cli.js +2 -2
  111. package/dist/bundle/host-supervisor.js +1 -1
  112. package/dist/bundle/index.js +1 -1
  113. package/dist/bundle/rpc-entry.js +1 -1
  114. package/dist/bundle/runtime-manifest.json +1 -1
  115. package/dist/core/agent-session.d.ts +8 -0
  116. package/dist/core/agent-session.js +73 -63
  117. package/dist/core/auth-storage.d.ts +19 -0
  118. package/dist/core/auth-storage.js +99 -24
  119. package/dist/core/auth-store-load-error.d.ts +29 -0
  120. package/dist/core/auth-store-load-error.js +74 -0
  121. package/dist/core/brand.d.ts +2 -0
  122. package/dist/core/brand.js +1 -0
  123. package/dist/core/credential-pool/classify.d.ts +3 -2
  124. package/dist/core/credential-pool/classify.js +10 -3
  125. package/dist/core/credential-pool/failover.d.ts +8 -0
  126. package/dist/core/credential-pool/failover.js +18 -5
  127. package/dist/core/credential-pool/rotation-stream.d.ts +1 -1
  128. package/dist/core/credential-pool/rotation-stream.js +2 -7
  129. package/dist/core/credential-pool/session-slot.d.ts +20 -0
  130. package/dist/core/credential-pool/session-slot.js +26 -0
  131. package/dist/core/credential-recovery-revision.d.ts +10 -0
  132. package/dist/core/credential-recovery-revision.js +19 -0
  133. package/dist/core/dynamic-prompt/build.d.ts +2 -1
  134. package/dist/core/dynamic-prompt/build.js +1 -2
  135. package/dist/core/dynamic-prompt/handoff.d.ts +1 -1
  136. package/dist/core/dynamic-prompt/handoff.js +9 -9
  137. package/dist/core/dynamic-prompt/identity.js +1 -1
  138. package/dist/core/dynamic-prompt/intent-gate.d.ts +1 -1
  139. package/dist/core/dynamic-prompt/intent-gate.js +8 -8
  140. package/dist/core/dynamic-prompt/policies.d.ts +1 -1
  141. package/dist/core/dynamic-prompt/policies.js +5 -7
  142. package/dist/core/dynamic-prompt/style.js +5 -5
  143. package/dist/core/dynamic-prompt/tool-section.d.ts +5 -0
  144. package/dist/core/dynamic-prompt/tool-section.js +8 -6
  145. package/dist/core/dynamic-prompt/verification.d.ts +6 -6
  146. package/dist/core/dynamic-prompt/verification.js +12 -12
  147. package/dist/core/dynamic-prompt/working-task.d.ts +1 -1
  148. package/dist/core/dynamic-prompt/working-task.js +3 -3
  149. package/dist/core/dynamic-prompt/workstation.js +1 -1
  150. package/dist/core/execution/executor-body.d.ts +22 -0
  151. package/dist/core/execution/executor-body.js +73 -0
  152. package/dist/core/execution/executor-freeze.d.ts +17 -0
  153. package/dist/core/execution/executor-freeze.js +53 -0
  154. package/dist/core/execution/executor-pipeline.d.ts +9 -0
  155. package/dist/core/execution/executor-pipeline.js +25 -0
  156. package/dist/core/execution/executor-types.d.ts +82 -0
  157. package/dist/core/execution/executor-types.js +2 -0
  158. package/dist/core/execution/executor.d.ts +8 -0
  159. package/dist/core/execution/executor.js +216 -0
  160. package/dist/core/extensions/builtin/anthropic-subscription/account-block-log.d.ts +15 -0
  161. package/dist/core/extensions/builtin/anthropic-subscription/account-block-log.js +18 -0
  162. package/dist/core/extensions/builtin/anthropic-subscription/affinity.d.ts +9 -1
  163. package/dist/core/extensions/builtin/anthropic-subscription/affinity.js +15 -4
  164. package/dist/core/extensions/builtin/anthropic-subscription/failover.d.ts +7 -1
  165. package/dist/core/extensions/builtin/anthropic-subscription/failover.js +19 -2
  166. package/dist/core/extensions/builtin/anthropic-subscription/guidance.d.ts +8 -2
  167. package/dist/core/extensions/builtin/anthropic-subscription/guidance.js +25 -1
  168. package/dist/core/extensions/builtin/anthropic-subscription/provider-diagnostic.d.ts +9 -0
  169. package/dist/core/extensions/builtin/anthropic-subscription/provider-diagnostic.js +59 -0
  170. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.d.ts +13 -0
  171. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.js +64 -2
  172. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-wiring.js +7 -0
  173. package/dist/core/extensions/builtin/anthropic-subscription/session-stream.js +5 -1
  174. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.d.ts +7 -0
  175. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.js +28 -1
  176. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.d.ts +2 -0
  177. package/dist/core/extensions/builtin/anthropic-subscription/stream-guidance.js +5 -3
  178. package/dist/core/extensions/builtin/anthropic-subscription/stream.js +4 -0
  179. package/dist/core/extensions/builtin/bash-timeout/index.d.ts +1 -1
  180. package/dist/core/extensions/builtin/bash-timeout/index.js +3 -28
  181. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts +0 -11
  182. package/dist/core/extensions/builtin/bash-timeout/timeout.js +0 -11
  183. package/dist/core/extensions/builtin/btw/index.js +3 -1
  184. package/dist/core/extensions/builtin/cache-keepalive/index.js +3 -1
  185. package/dist/core/extensions/builtin/compaction/index.js +1 -1
  186. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +3 -1
  187. package/dist/core/extensions/builtin/compaction/openai-remote.js +1 -1
  188. package/dist/core/extensions/builtin/compaction/speculative.js +3 -2
  189. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js +3 -1
  190. package/dist/core/extensions/builtin/cursor-cli-oauth/native-bootstrap.js +3 -1
  191. package/dist/core/extensions/builtin/imagegen/index.d.ts +0 -1
  192. package/dist/core/extensions/builtin/imagegen/index.js +0 -11
  193. package/dist/core/extensions/builtin/look-at/runner.js +3 -1
  194. package/dist/core/extensions/builtin/mcp/auth/callback.js +3 -4
  195. package/dist/core/extensions/builtin/mcp/auth/oauth-provider.js +2 -1
  196. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts +5 -5
  197. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.js +5 -5
  198. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts +1 -1
  199. package/dist/core/extensions/builtin/prompt-preset/glm-5.js +1 -1
  200. package/dist/core/extensions/builtin/terminal/extension.js +8 -1
  201. package/dist/core/extensions/builtin/terminal/notify.js +9 -3
  202. package/dist/core/extensions/builtin/terminal/prompt.d.ts +7 -1
  203. package/dist/core/extensions/builtin/terminal/prompt.js +27 -60
  204. package/dist/core/extensions/builtin/terminal/tools/bash.js +10 -2
  205. package/dist/core/extensions/builtin/todotools/normalize.d.ts +20 -3
  206. package/dist/core/extensions/builtin/todotools/normalize.js +251 -5
  207. package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -2
  208. package/dist/core/extensions/builtin/todotools/prompt.js +5 -5
  209. package/dist/core/extensions/builtin/todotools/tools/todo.js +9 -8
  210. package/dist/core/extensions/builtin/webfetch/webfetch/tool.js +0 -5
  211. package/dist/core/extensions/builtin/websearch/index.js +9 -4
  212. package/dist/core/extensions/builtin/websearch/websearch/tool.d.ts +2 -0
  213. package/dist/core/extensions/builtin/websearch/websearch/tool.js +3 -1
  214. package/dist/core/model-registry.d.ts +10 -2
  215. package/dist/core/model-registry.js +12 -4
  216. package/dist/core/model-runtime.d.ts +8 -0
  217. package/dist/core/model-runtime.js +39 -1
  218. package/dist/core/provider-failure.d.ts +6 -0
  219. package/dist/core/provider-failure.js +6 -2
  220. package/dist/core/retry-fallback/controller-types.d.ts +7 -0
  221. package/dist/core/retry-fallback/controller.d.ts +2 -0
  222. package/dist/core/retry-fallback/controller.js +13 -4
  223. package/dist/core/retry-fallback/credential-recovery.d.ts +18 -0
  224. package/dist/core/retry-fallback/credential-recovery.js +32 -0
  225. package/dist/core/retry-fallback/exhaustion.d.ts +18 -0
  226. package/dist/core/retry-fallback/exhaustion.js +20 -0
  227. package/dist/core/retry-fallback/settings.d.ts +8 -1
  228. package/dist/core/retry-fallback/settings.js +12 -6
  229. package/dist/core/session-log.js +1 -1
  230. package/dist/core/settings-manager.js +4 -1
  231. package/dist/core/system-prompt.js +1 -1
  232. package/dist/core/tools/bash.d.ts +3 -1
  233. package/dist/core/tools/bash.js +14 -4
  234. package/dist/core/tools/edit.d.ts +1 -1
  235. package/dist/core/tools/edit.js +1 -6
  236. package/dist/core/tools/grep/index.js +2 -3
  237. package/dist/core/tools/powershell.d.ts +1 -1
  238. package/dist/core/tools/powershell.js +1 -1
  239. package/dist/core/tools/read.d.ts +1 -1
  240. package/dist/core/tools/read.js +1 -1
  241. package/dist/core/tools/write.d.ts +1 -1
  242. package/dist/core/tools/write.js +1 -1
  243. package/dist/engine-trust/shell-trust.d.ts +36 -0
  244. package/dist/engine-trust/shell-trust.js +44 -0
  245. package/dist/engine-trust/transport-failure.d.ts +12 -0
  246. package/dist/engine-trust/transport-failure.js +48 -0
  247. package/dist/modes/interactive/interactive-mode.js +9 -3
  248. package/dist/modes/print-mode.js +2 -1
  249. package/dist/modes/rpc/compact-catalog-families.d.ts +5 -2
  250. package/dist/modes/rpc/compact-catalog-families.js +5 -2
  251. package/dist/modes/rpc/compact-catalog-registry.d.ts +9 -1
  252. package/dist/modes/rpc/compact-catalog-registry.js +9 -2
  253. package/dist/modes/rpc/compact-recovery-manifest-kinds.d.ts +17 -0
  254. package/dist/modes/rpc/compact-recovery-manifest-kinds.js +21 -0
  255. package/dist/modes/rpc/compact-recovery-manifest-shape.d.ts +7 -0
  256. package/dist/modes/rpc/compact-recovery-manifest.js +11 -3
  257. package/dist/modes/rpc/compact-socket-commands.js +6 -0
  258. package/dist/modes/rpc/connection-handler.js +24 -6
  259. package/dist/modes/rpc/connection-question-bridge.d.ts +3 -1
  260. package/dist/modes/rpc/connection-question-bridge.js +4 -1
  261. package/dist/modes/rpc/connection-roles.d.ts +8 -0
  262. package/dist/modes/rpc/connection-roles.js +18 -0
  263. package/dist/modes/rpc/effect-commands.d.ts +1 -0
  264. package/dist/modes/rpc/loopless-execute-grant.d.ts +20 -0
  265. package/dist/modes/rpc/loopless-execute-grant.js +26 -0
  266. package/dist/modes/rpc/loopless-runtime-settings.d.ts +30 -0
  267. package/dist/modes/rpc/loopless-runtime-settings.js +69 -0
  268. package/dist/modes/rpc/loopless-tool-call.d.ts +12 -0
  269. package/dist/modes/rpc/loopless-tool-call.js +22 -0
  270. package/dist/modes/rpc/method-classes-schema-session.d.ts +4 -0
  271. package/dist/modes/rpc/method-classes-schema-session.js +1 -0
  272. package/dist/modes/rpc/method-classes-schema.d.ts +4 -0
  273. package/dist/modes/rpc/protocol-identity.js +2 -0
  274. package/dist/modes/rpc/remote-origin.d.ts +31 -0
  275. package/dist/modes/rpc/remote-origin.js +58 -0
  276. package/dist/modes/rpc/rpc-protocol-info-types.d.ts +8 -0
  277. package/dist/modes/rpc/rpc-question-types.d.ts +7 -0
  278. package/dist/modes/rpc/rpc-question-types.js +0 -3
  279. package/dist/modes/rpc/rpc-read-response-types.d.ts +2 -1
  280. package/dist/modes/rpc/rpc-session-command-types.d.ts +3 -0
  281. package/dist/modes/rpc/rpc-session-state-types.d.ts +10 -0
  282. package/dist/modes/rpc/rpc-types.d.ts +1 -1
  283. package/dist/modes/rpc/runtime-factory-loopless.d.ts +57 -0
  284. package/dist/modes/rpc/runtime-factory-loopless.js +131 -0
  285. package/dist/modes/rpc/session-registry.js +12 -3
  286. package/dist/modes/rpc/session-worker-client.js +2 -0
  287. package/dist/modes/rpc/session-worker-protocol.d.ts +3 -0
  288. package/dist/modes/rpc/session-worker.js +2 -0
  289. package/docs/development.md +1 -1
  290. package/docs/engine-socket/fixtures/admission-routes/c-baseline.json +3 -3
  291. package/docs/engine-socket/fixtures/admission-routes/h-legacy.json +1 -1
  292. package/docs/engine-socket/fixtures/admission-routes/i-reset-stream.json +3 -3
  293. package/docs/engine-socket/fixtures/recovery-manifest/index.json +32 -0
  294. package/docs/engine-socket/fixtures/recovery-manifest/one-partial-family.json +118 -0
  295. package/docs/rpc.md +95 -3
  296. package/package.json +6 -6
  297. package/dist/bundle/chunks/anthropic-messages-WUPLDYD6.js +0 -10
  298. package/dist/bundle/chunks/chunk-7UC4W2T2.js +0 -2
  299. package/dist/bundle/chunks/chunk-O4GRBX4R.js +0 -3
  300. package/dist/bundle/chunks/chunk-R23WXN4L.js +0 -448
  301. package/dist/bundle/chunks/chunk-W5NLCRB3.js +0 -2
  302. package/dist/bundle/chunks/credential-accounts-OAK2E5O2.js +0 -2
  303. package/dist/bundle/chunks/host-command-WJIMRBGN.js +0 -2
  304. package/dist/bundle/chunks/interactive-mode-NPHFDPGH.js +0 -2
  305. package/dist/bundle/chunks/main-I6FJAFUP.js +0 -2
  306. package/dist/bundle/chunks/rotation-stream-ZDCNHIBE.js +0 -2
  307. package/dist/bundle/chunks/rpc-mode-GBBTN2WP.js +0 -2
@@ -1,10 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url); { const __piWorkerThreads = require("node:worker_threads"); if (typeof __piWorkerThreads.markAsUncloneable !== "function") { __piWorkerThreads.markAsUncloneable = () => {}; } }
2
- import{normalizeToolCallId}from"./chunk-UFVZTQKN.js";import{resolveCloudflareBaseUrl}from"./chunk-OZNCR6E6.js";import{formatGitHubCopilotToolLimitError,limitGitHubCopilotTools,recordGitHubCopilotToolLimit,withGitHubCopilotFailureNote}from"./chunk-FQZZGSYH.js";import{getPiUserAgent}from"./chunk-QTG7MY2X.js";import{combineAbortSignals}from"./chunk-SJ5DSOBX.js";import{anthropicProviderDiagnosticFromError,anthropicProviderDiagnosticFromSseData,awaitProviderTransport}from"./chunk-VRWJJMHO.js";import{ANTHROPIC_RESERVED_BODY_KEYS,adjustMaxTokensForThinking,buildBaseOptions,clampMaxTokensToContext}from"./chunk-2XBKE2BZ.js";import{retryProviderRequest}from"./chunk-GIT63LXN.js";import{resolveRootObjectSchema}from"./chunk-IYL5E4QQ.js";import{sendWithForcedToolChoiceFallback}from"./chunk-OEFCY46F.js";import{buildCopilotDynamicHeaders,hasCopilotVisionInput}from"./chunk-KRNXUTZJ.js";import"./chunk-AC72EWI5.js";import{appendRetryAfterMsMarker,extract429RetryAfterMs}from"./chunk-RQFD6LG2.js";import{resolveToolNameMatch}from"./chunk-QTS2XGPQ.js";import{ANTHROPIC_FEDERATION_RULE_ID_ENV,ANTHROPIC_IDENTITY_TOKEN_FILE_ENV,ANTHROPIC_ORGANIZATION_ID_ENV,ANTHROPIC_SERVICE_ACCOUNT_ID_ENV,ANTHROPIC_WORKSPACE_ID_ENV,applyServerFallbackAbort,applyServerFallbackContinuation,parseServerFallbackReceipt,parseStickyFallbackReceipt,sanitizeAnthropicToolPairs,withGzipRequestBodies}from"./chunk-TG4E7Z7W.js";import{getAnthropicCompat,isAnthropicApiBaseUrl}from"./chunk-32R442XT.js";import{registerSessionResourceCleanup}from"./chunk-WHPDEDCC.js";import{readProviderDiagnostic}from"./chunk-7UC4W2T2.js";import{splitDeferredTools}from"./chunk-HK46JMSC.js";import{getJsonSchemaToolParameters,isVideoMimeType,resolveJsonSchemaStrictSampling,transformMessages}from"./chunk-ED7VJGL4.js";import{sanitizeSurrogates}from"./chunk-WDTJ6JKE.js";import{getProviderEnvValue}from"./chunk-5ROMKDLK.js";import{parseJsonWithRepair,parseStreamingJson}from"./chunk-3W47LTXQ.js";import{calculateCost,getCurrentTools,getDeclaredTools,getInitialSystemMessage,getSystemMessageText,hasToolRedefinitions,normalizeContext,renderSystemMessageUpdate,resolveTranscript}from"./chunk-TBARMJ75.js";import{attachProviderDiagnostic}from"./chunk-3SASTB6Y.js";import{AssistantMessageEventStream,appendAssistantMessageDiagnostic,pushAssistantProgress}from"./chunk-5CSZPC55.js";import{headersToRecord,providerHeadersToRecord}from"./chunk-PJ34QVL5.js";import{Anthropic}from"./chunk-E7VEA7K5.js";import"./chunk-IKOFCODM.js";var MAX_MESSAGE_CHARS=500,QUOTA_WORDING_PATTERN=/exceeded_current_quota_error|insufficient\s+balance|credits?_required|quota|billing/i,IMAGE_FORMAT_PATTERN=/unsupported image format|unsupported media type for base64 image|invalid data url for image/i;function sdkErrorClassName(error){if(!(error instanceof Error))return;let name=error.constructor?.name;return typeof name=="string"&&name.length>0?name:void 0}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function toShaped(error){return error instanceof Error?error:void 0}function numericStatus(shaped){let status=shaped?.status;return typeof status=="number"&&Number.isFinite(status)?status:void 0}function headerObject(shaped){return shaped?.headers instanceof Headers?shaped.headers:void 0}function nestedProviderCodes(body){if(!isRecord(body))return;let inner=body.error;if(!isRecord(inner))return;let codes=[];for(let key of["type","code"]){let value=inner[key];typeof value=="string"&&value.length>0&&codes.push(value)}return codes.length>0?codes:void 0}function parseLeadingJson(text){let candidate=text.slice(text.indexOf("{"),text.lastIndexOf("}")+1);if(!(!candidate.startsWith("{")||!candidate.endsWith("}")))try{return JSON.parse(candidate)}catch{return}}function quotaWording(shaped,bodyText){return[shaped?.message,bodyText].some(text=>typeof text=="string"&&QUOTA_WORDING_PATTERN.test(text))}function normalizeAnthropicRetryFailure(error,context){let message=error instanceof Error?error.message:String(error),shaped=toShaped(error),status=numericStatus(shaped),headers=headerObject(shaped),bodyText=context?.bodyText??message,kind,providerCodes;if(error instanceof Error&&error.name==="AbortError")kind="abort";else if(sdkErrorClassName(error)==="APIConnectionTimeoutError")kind="timeout";else if(sdkErrorClassName(error)==="APIConnectionError")kind="connection";else if(typeof message=="string"&&IMAGE_FORMAT_PATTERN.test(message))kind="image-format";else if(status!==void 0)kind=status===429&&quotaWording(shaped,bodyText)?"quota-exhausted":"http-status",providerCodes=nestedProviderCodes(shaped?.error);else{let parsed=parseLeadingJson(bodyText);providerCodes=nestedProviderCodes(parsed),kind=providerCodes!==void 0?"provider":"unknown"}let retryAfterMs=extract429RetryAfterMs({status,headers,bodyText}),shouldRetryHeader=headers?.get("x-should-retry"),shouldRetry=shouldRetryHeader==="true"?!0:shouldRetryHeader==="false"?!1:void 0;return{origin:"anthropic-messages",kind,message:message.slice(0,MAX_MESSAGE_CHARS),...status!==void 0?{statusCode:status}:{},...providerCodes!==void 0?{providerCodes}:{},...retryAfterMs!==void 0?{retryAfterMs}:{},...shouldRetry!==void 0?{shouldRetry}:{}}}var HAS_VISIBLE_TEXT=/\S/;function anthropicSystemTextBlocks(text,stablePrefix,cacheControl){let marker=cacheControl?{cache_control:cacheControl}:{},boundary=splitPoint(text,stablePrefix);return boundary===void 0?[{type:"text",text:sanitizeSurrogates(text),...marker}]:[{type:"text",text:sanitizeSurrogates(text.slice(0,boundary)),...marker},{type:"text",text:sanitizeSurrogates(text.slice(boundary))}]}function splitPoint(text,stablePrefix){if(stablePrefix===void 0||stablePrefix.length>=text.length||!text.startsWith(stablePrefix))return;let code=text.charCodeAt(stablePrefix.length-1),boundary=code>=55296&&code<=56319?stablePrefix.length-1:stablePrefix.length,stable=text.slice(0,boundary),rest=text.slice(boundary);return HAS_VISIBLE_TEXT.test(stable)&&HAS_VISIBLE_TEXT.test(rest)?boundary:void 0}var replayableTypes=new Set(["server_tool_use","web_search_tool_result","tool_result","web_fetch_tool_result","code_execution_tool_result","bash_code_execution_tool_result","text_editor_code_execution_tool_result","tool_search_tool_result","container_upload"]);function isRecord2(value){return value!==null&&typeof value=="object"}function isReplayableAnthropicProviderNativeBlock(raw){return isRecord2(raw)&&typeof raw.type=="string"&&replayableTypes.has(raw.type)}function isAnthropicWebSearchReplayBlock(raw){return isRecord2(raw)?raw.type==="web_search_tool_result"||raw.type==="tool_result"?!0:raw.type==="server_tool_use"&&raw.name==="web_search":!1}var REQUEST_SHAPE_LOG_ENV="SENPI_DEBUG_REQUEST_SHAPE";function isRecord3(value){return typeof value=="object"&&value!==null}function skeletonBlock(block){return isRecord3(block)?{type:typeof block.type=="string"?block.type:"unknown",...typeof block.id=="string"?{id:block.id}:{},...typeof block.tool_use_id=="string"?{toolUseId:block.tool_use_id}:{}}:{type:typeof block}}function anthropicRequestSkeleton(params){return(Array.isArray(params.messages)?params.messages:[]).map((message,index)=>{if(!isRecord3(message))return{index,role:"unknown",blocks:[]};let role=typeof message.role=="string"?message.role:"unknown",blocks=Array.isArray(message.content)?message.content.map(skeletonBlock):"string";return{index,role,blocks}})}function resolveAppendFile(){if(typeof process>"u")return;let fs=process.getBuiltinModule?.("node:fs");return fs?(path,data)=>fs.appendFileSync(path,data,{mode:384}):void 0}function processEnv(){return typeof process>"u"?{}:process.env}function logAnthropicRequestShape(model,params,env=processEnv(),appendFile=void 0){let path=env[REQUEST_SHAPE_LOG_ENV];if(path===void 0||path.length===0)return;let append=appendFile??resolveAppendFile();if(append===void 0)return;let record={ts:new Date().toISOString(),provider:model.provider,model:model.id,messages:anthropicRequestSkeleton(params)};append(path,`${JSON.stringify(record)}
3
- `)}function escapeXmlAttribute(value){return value.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("'","&apos;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function availableToolGuidance(availableToolNames){if(availableToolNames.length===0)return"To edit files, call only tools available in this request.";let listed=availableToolNames.slice(0,8).join(", "),omitted=availableToolNames.length-8,suffix=omitted>0?` (and ${omitted} more)`:"";return`To edit files, call your own tools: ${listed}${suffix}.`}function demotedToolCallText(name,availableToolNames,firstOccurrence){let escapedName=escapeXmlAttribute(name);return firstOccurrence?[`<unavailable-tool-call name="${escapedName}">`,"Transcript record, not an action available to you. An earlier model in this session",`called "${escapedName}"; that tool does not exist for you and its input is omitted.`,availableToolGuidance(availableToolNames),"</unavailable-tool-call>"].join(`
4
- `):`<unavailable-tool-call name="${escapedName}"/>`}function demotedToolResultText(name,content){let escapedName=escapeXmlAttribute(name),safeContent=content.replace(/<\/unavailable-tool-result/gi,match=>`&lt;${match.slice(1)}`);return`<unavailable-tool-result name="${escapedName}">${safeContent}</unavailable-tool-result>`}function isRecord4(value){return typeof value=="object"&&value!==null}function collectAvailableToolNames(tools){let defined=new Set;if(Array.isArray(tools))for(let tool of tools)isRecord4(tool)&&typeof tool.name=="string"&&defined.add(tool.name);return defined}function isNativeToolSearchResultBlock(block){return isRecord4(block)&&block.type==="tool_search_tool_result"&&typeof block.tool_use_id=="string"&&isRecord4(block.content)&&Array.isArray(block.content.tool_references)}function demoteUnavailableToolReferences(params){let messages=params.messages;if(!Array.isArray(messages)||messages.length===0)return params;let available=collectAvailableToolNames(params.tools),resolve=name=>resolveToolNameMatch(name,available),demotedCallNames=new Map,renamedCallNames=new Map;for(let message of messages)if(!(message.role!=="assistant"||!Array.isArray(message.content)))for(let block of message.content){if(!isRecord4(block)||block.type!=="tool_use"||typeof block.name!="string")continue;let resolved=resolve(block.name);resolved===void 0?demotedCallNames.set(block.id,block.name):resolved!==block.name&&renamedCallNames.set(block.id,resolved)}let changed=!1,availableToolNames=[...available],droppedSearchUseIds=new Set,droppedSearchNames=new Map;for(let message of messages)if(!(message.role!=="assistant"||!Array.isArray(message.content)))for(let block of message.content){if(!isNativeToolSearchResultBlock(block))continue;let names=block.content.tool_references.filter(item=>isRecord4(item)&&item.type==="tool_reference").map(item=>typeof item.tool_name=="string"?item.tool_name:"");names.length>0&&names.every(name=>resolve(name)===void 0)&&(droppedSearchUseIds.add(block.tool_use_id),droppedSearchNames.set(block.tool_use_id,names))}let seenDemotedCallNames=new Set,rewrittenMessages=[];for(let message of messages){if(!Array.isArray(message.content)){rewrittenMessages.push(message);continue}let messageChanged=!1,content=[];for(let block of message.content){if(message.role==="assistant"&&isRecord4(block)&&block.type==="tool_use"){let demotedName=demotedCallNames.get(block.id);if(demotedName!==void 0){messageChanged=!0;let firstOccurrence=!seenDemotedCallNames.has(demotedName);seenDemotedCallNames.add(demotedName),content.push({type:"text",text:demotedToolCallText(demotedName,availableToolNames,firstOccurrence)});continue}let renamedName=renamedCallNames.get(block.id);if(renamedName!==void 0){messageChanged=!0,content.push({...block,name:renamedName});continue}}if(message.role==="assistant"&&isRecord4(block)&&block.type==="server_tool_use"&&typeof block.id=="string"&&droppedSearchUseIds.has(block.id)){messageChanged=!0;continue}if(message.role==="assistant"&&isNativeToolSearchResultBlock(block)){let omitted=droppedSearchNames.get(block.tool_use_id);if(omitted!==void 0){messageChanged=!0,content.push({type:"text",text:`Tool reference unavailable: ${[...new Set(omitted)].join(", ")}`});continue}let rewritten=rewriteToolReferenceItems(block.content.tool_references,resolve);if(rewritten!==void 0){messageChanged=!0,content.push({...block,content:{...block.content,tool_references:rewritten.kept}});continue}}if(isRecord4(block)&&block.type==="tool_result"){let demotedName=demotedCallNames.get(block.tool_use_id);if(demotedName!==void 0){messageChanged=!0,content.push({type:"text",text:demotedToolResultText(demotedName,toolResultText(block.content))});continue}if(Array.isArray(block.content)){let rewritten=rewriteToolReferenceItems(block.content,resolve);if(rewritten!==void 0){messageChanged=!0;let nextContent=rewritten.kept.length>0?rewritten.kept:[{type:"text",text:`Tool reference unavailable: ${[...new Set(rewritten.omitted)].join(", ")}`}];content.push({...block,content:nextContent});continue}}}content.push(block)}if(messageChanged&&content.length===0){changed=!0;continue}if(messageChanged){changed=!0,rewrittenMessages.push({...message,content});continue}rewrittenMessages.push(message)}return changed?{...params,messages:rewrittenMessages}:params}function demoteToolReferenceReplay(params){let messages=params.messages;if(!Array.isArray(messages)||messages.length===0)return params;let searchUseIds=new Set;for(let message of messages)if(!(message.role!=="assistant"||!Array.isArray(message.content)))for(let block of message.content)isRecord4(block)&&block.type==="tool_search_tool_result"&&typeof block.tool_use_id=="string"&&searchUseIds.add(block.tool_use_id);let changed=!1,demotedNames=new Set,rewrittenMessages=[];for(let message of messages){if(!Array.isArray(message.content)){rewrittenMessages.push(message);continue}let messageChanged=!1,content=[];for(let block of message.content){if(message.role==="assistant"&&isRecord4(block)){if(block.type==="server_tool_use"&&typeof block.id=="string"&&searchUseIds.has(block.id)){messageChanged=!0;continue}if(block.type==="tool_search_tool_result"){messageChanged=!0;let names=isNativeToolSearchResultBlock(block)?toolReferenceNames(block.content.tool_references):[];for(let name of names)demotedNames.add(name);content.push({type:"text",text:names.length>0?`Tool search found: ${names.join(", ")}`:"Tool search found no tools."});continue}}if(isRecord4(block)&&block.type==="tool_result"&&Array.isArray(block.content)){let names=toolReferenceNames(block.content);if(names.length>0){messageChanged=!0;for(let name of names)demotedNames.add(name);let kept=block.content.filter(item=>!(isRecord4(item)&&item.type==="tool_reference"));content.push({...block,content:[...kept,{type:"text",text:`Tools loaded: ${names.join(", ")}`}]});continue}}content.push(block)}if(!messageChanged){rewrittenMessages.push(message);continue}changed=!0,content.length>0&&rewrittenMessages.push({...message,content})}return changed?{...params,messages:rewrittenMessages,...residentTools(params.tools,demotedNames)}:params}function residentTools(tools,names){if(!Array.isArray(tools)||names.size===0)return{};let changed=!1,rewritten=tools.map(tool=>{if(!isRecord4(tool)||tool.defer_loading!==!0||typeof tool.name!="string"||!names.has(tool.name))return tool;changed=!0;let{defer_loading:_deferLoading,...resident}=tool;return resident});return changed?{tools:rewritten}:{}}function toolReferenceNames(items){let names=new Set;for(let item of items)isRecord4(item)&&item.type==="tool_reference"&&typeof item.tool_name=="string"&&names.add(item.tool_name);return[...names]}function rewriteToolReferenceItems(items,resolve){let kept=[],omitted=[],rewritten=!1;for(let item of items){if(!isRecord4(item)||item.type!=="tool_reference"||typeof item.tool_name!="string"){kept.push(item);continue}let resolved=resolve(item.tool_name);if(resolved===void 0){omitted.push(item.tool_name),rewritten=!0;continue}if(resolved!==item.tool_name){kept.push({...item,tool_name:resolved}),rewritten=!0;continue}kept.push(item)}return rewritten?{kept,omitted}:void 0}function toolResultText(content){if(typeof content=="string")return content;if(Array.isArray(content)){let parts=[];for(let item of content)isRecord4(item)&&(item.type==="text"&&typeof item.text=="string"?parts.push(item.text):typeof item.type=="string"&&parts.push(`[${item.type}]`));if(parts.length>0)return parts.join(`
5
- `)}return"Tool output unavailable."}var EXPIRED_SEARCH_CONTENT=/Invalid `encrypted_content` in `search_result` block/i,REJECTED_MESSAGE_INDEX=/messages\.(\d+)\.content\.\d+: Invalid `encrypted_content`/i;function isRecord5(value){return typeof value=="object"&&value!==null}function isExpiredWebSearchContentError(error){return error instanceof Error&&"status"in error&&error.status===400&&EXPIRED_SEARCH_CONTENT.test(error.message)}function webSearchResultIds(message){if(message.role!=="assistant"||!Array.isArray(message.content))return[];let ids=[];for(let block of message.content)isRecord5(block)&&block.type==="web_search_tool_result"&&typeof block.tool_use_id=="string"&&ids.push(block.tool_use_id);return ids}function expiredWebSearchReplayIds(params,error){let match=REJECTED_MESSAGE_INDEX.exec(error.message),lastIndex=match?.[1]===void 0?params.messages.length-1:Number(match[1]);return params.messages.slice(0,lastIndex+1).flatMap(webSearchResultIds)}function searchQuery(block){let input=block.input;return isRecord5(input)&&typeof input.query=="string"?input.query:void 0}function demotedResultText(block){let results=Array.isArray(block.content)?block.content:[],lines=[];for(let result of results){if(!isRecord5(result)||result.type!=="web_search_result")continue;let title=typeof result.title=="string"?result.title:"",url=typeof result.url=="string"?result.url:"";lines.push(`- ${title} (${url})`)}return lines.length===0?"Web search returned no results.":["Web search results (page contents no longer available):",...lines].join(`
6
- `)}function demoteBlock(block,expired){if(isRecord5(block)){if(block.type==="server_tool_use"&&block.name==="web_search"&&typeof block.id=="string"){if(!expired.has(block.id))return;let query=searchQuery(block);return{type:"text",text:query===void 0?"Searched the web.":`Searched the web for: ${query}`}}if(block.type==="web_search_tool_result"&&typeof block.tool_use_id=="string")return expired.has(block.tool_use_id)?{type:"text",text:demotedResultText(block)}:void 0}}function demoteExpiredWebSearchReplay(params,expired){if(expired.size===0)return params;let changed=!1,messages=params.messages.map(message=>{if(message.role!=="assistant"||!Array.isArray(message.content))return message;let messageChanged=!1,content=message.content.map(block=>{let demoted=demoteBlock(block,expired);return demoted===void 0?block:(messageChanged=!0,demoted)});return messageChanged?(changed=!0,{...message,content}):message});return changed?{...params,messages}:params}function resolveCacheRetention(cacheRetention,env,fallback="short"){return cacheRetention||(getProviderEnvValue("PI_CACHE_RETENTION",env)==="long"?"long":typeof process<"u"&&process.env.PI_CACHE_RETENTION!==void 0?"short":fallback)}function getCacheControl(model,cacheRetention,env){let retention=resolveCacheRetention(cacheRetention,env,"short");if(retention==="none")return{retention};let ttl=retention==="long"&&isAnthropicApiBaseUrl(model.baseUrl)&&getAnthropicCompat(model).supportsLongCacheRetention?"1h":void 0;return{retention,cacheControl:{type:"ephemeral",...ttl&&{ttl}}}}function convertContentBlocks(content){if(!content.some(c=>c.type==="image"))return sanitizeSurrogates(content.map(c=>c.text).join(`
7
- `));let blocks=content.map(block=>block.type==="text"?{type:"text",text:sanitizeSurrogates(block.text)}:isVideoMimeType(block.mimeType)?{type:"video",source:{type:"base64",media_type:block.mimeType,data:block.data}}:{type:"image",source:{type:"base64",media_type:block.mimeType,data:block.data}});return blocks.some(b=>b.type==="text")||blocks.unshift({type:"text",text:"(see attached image)"}),blocks}var FINE_GRAINED_TOOL_STREAMING_BETA="fine-grained-tool-streaming-2025-05-14",INTERLEAVED_THINKING_BETA="interleaved-thinking-2025-05-14",COMPUTER_USE_BETA_PREFIX="computer-use-",NATIVE_COMPUTER_TOOL_TYPE="computer_20250124",ADAPTIVE_THINKING_MODEL_MARKERS=["opus-4-6","opus-4-7","opus-4-8","opus-5","sonnet-4-6","sonnet-5","haiku-5-5","fable-5","mythos-5"],NATIVE_XHIGH_EFFORT_MODEL_MARKERS=["opus-4-7","opus-4-8","opus-5","sonnet-5","haiku-5-5","fable-5","mythos-5"],DISABLED_THINKING_REJECTING_MODEL_MARKERS=["fable-5","mythos-5","opus-5-5","opus-5.5","sonnet-5-5","sonnet-5.5","haiku-5-5","haiku-5.5"],UNSUPPORTED_NATIVE_COMPUTER_TOOL_MODEL_MARKERS=["opus-4-6","opus-4.6","opus-4-7","opus-4.7","opus-4-8","opus-4.8"],SERVER_SIDE_FALLBACK_BETA="server-side-fallback-2026-07-01";function shouldUseServerSideFallbackBeta(model){return(model.compat?.allowedFallbackModels?.length??0)>0}var MID_CONVERSATION_OUTPUT_CONFIG_BETA="mid-conversation-output-config-2026-07-01",THINKING_BINDING_CONTROLS_BETA="thinking-binding-controls-2026-08-01",MID_CONVERSATION_TOOL_CHANGES_BETA="mid-conversation-tool-changes-2026-07-01",DEFERRED_TOOL_PLACEHOLDER={name:"__pi_deferred_placeholder__",description:"Reserved placeholder. Never available. Never call this.",input_schema:{type:"object",properties:{},required:[]},defer_loading:!0};function supportsMidConvoSystemMessages(model){return model.compat?.supportsMidConvoSystemMessages??!1}function supportsMidConvoToolChanges(model){return model.compat?.supportsMidConvoToolChanges??!1}var unsignedThinkingTextReplayFallbacks=new Set,toolReferenceReplayFallbacks=new Set,expiredWebSearchReplays=new Set;registerSessionResourceCleanup(sessionId=>{if(sessionId===void 0){unsignedThinkingTextReplayFallbacks.clear(),toolReferenceReplayFallbacks.clear(),expiredWebSearchReplays.clear();return}let prefix=`${sessionId}\0`;for(let fallbacks of[unsignedThinkingTextReplayFallbacks,toolReferenceReplayFallbacks,expiredWebSearchReplays])for(let key of fallbacks)key.startsWith(prefix)&&fallbacks.delete(key)});function unsignedThinkingFallbackKey(model,sessionId){return sessionId===void 0?void 0:`${sessionId}\0${model.baseUrl}\0${model.id}`}function isInvalidUnsignedThinkingSignatureError(error){return typeof error=="object"&&error!==null&&"status"in error&&error.status===400&&error instanceof Error&&/Invalid signature in thinking block/i.test(error.message)}function isToolReferenceNotFoundError(error){return error instanceof Error&&"status"in error&&error.status===400&&/Tool reference '[^']*' not found in available tools/i.test(error.message)}function mergeHeaders(...headerSources){let merged={};for(let headers of headerSources)headers&&Object.assign(merged,headers);return merged}function mergeClientHeaders(_model,...headerSources){return mergeHeaders({"User-Agent":getPiUserAgent()},...headerSources)}function hasHeader(headers,name){if(!headers)return!1;let expected=name.toLowerCase();for(let[key,value]of Object.entries(headers))if(key.toLowerCase()===expected&&value!==null&&value.trim().length>0)return!0;return!1}function hasRequestAuth(apiKey,headers){return!!apiKey||hasHeader(headers,"authorization")||hasHeader(headers,"x-api-key")||hasHeader(headers,"cf-aig-authorization")}function assertRequestAuth(provider,apiKey,headers){if(!hasRequestAuth(apiKey,headers))throw new Error(`No API key for provider: ${provider}`)}var CLAUDE_OAUTH_TOKEN_MARKER="sk-ant-oat",ClaudeOAuthTokenRefusedError=class extends Error{constructor(provider,modelId){super(`${provider}/${modelId}: a Claude OAuth token (${CLAUDE_OAUTH_TOKEN_MARKER}...) is not accepted as an API key; senpi does not send Claude subscription tokens to the Anthropic API directly. For a Claude Pro/Max subscription sign in with /login anthropic-subscription (or set CLAUDE_CODE_OAUTH_TOKEN) and use anthropic-subscription/${modelId}; otherwise use an Anthropic API key.`),this.code="claude_oauth_token_refused",this.name="ClaudeOAuthTokenRefusedError",this.provider=provider,this.modelId=modelId}};function isClaudeOAuthTokenRefusedError(error){return error instanceof ClaudeOAuthTokenRefusedError}function assertNotClaudeOAuthToken(model,apiKey){if(apiKey?.includes(CLAUDE_OAUTH_TOKEN_MARKER))throw new ClaudeOAuthTokenRefusedError(model.provider,model.id)}var PiAnthropic=class extends Anthropic{_shouldResolveDefaultCredentials(){return!1}};function getAnthropicFederation(model,apiKey,headers,env){if(model.provider!=="anthropic"||hasRequestAuth(apiKey,headers))return;let federationRuleId=getProviderEnvValue(ANTHROPIC_FEDERATION_RULE_ID_ENV,env),organizationId=getProviderEnvValue(ANTHROPIC_ORGANIZATION_ID_ENV,env),identityTokenFile=getProviderEnvValue(ANTHROPIC_IDENTITY_TOKEN_FILE_ENV,env);if(!(!federationRuleId||!organizationId||!identityTokenFile))return{organization_id:organizationId,workspace_id:getProviderEnvValue(ANTHROPIC_WORKSPACE_ID_ENV,env),authentication:{type:"oidc_federation",federation_rule_id:federationRuleId,service_account_id:getProviderEnvValue(ANTHROPIC_SERVICE_ACCOUNT_ID_ENV,env),identity_token:{source:"file",path:identityTokenFile}}}}var federationClient;function isRecord6(value){return typeof value=="object"&&value!==null}function isSameAnthropicModel(message,model){return message.provider===model.provider&&message.api===model.api&&message.model===model.id}function isAnthropicFallbackMarkerBlock(block){return block.type==="providerNative"&&block.subtype==="fallback"&&isRecord6(block.raw)&&block.raw.type==="fallback"}function lastAnthropicFallbackBoundary(content){let boundary=-1;for(let index=0;index<content.length;index++)isAnthropicFallbackMarkerBlock(content[index])&&(boundary=index);return boundary}function isAnthropicServerToolUseBlock(raw){return isRecord6(raw)&&raw.type==="server_tool_use"&&typeof raw.id=="string"}function isProviderNativeToolUseBlock(raw){return isRecord6(raw)&&(raw.type==="server_tool_use"||raw.type==="mcp_tool_use")}function userMessageClosesServerTurn(message){return typeof message.content=="string"?message.content.trim().length>0:message.content.some(block=>block.type==="text"&&block.text.trim().length>0||block.type==="image")}function collectProviderNativeToolPairing(messages,model,deferredToolNames,discardedFallbackToolCallIds){let resolvedUseIds=new Set,validResultIds=new Set,pendingUseIds=new Set,loadedReferenceNames=new Set;for(let message of messages){if(message.role==="assistant"){let priorUseIds=pendingUseIds;if(pendingUseIds=new Set,!isSameAnthropicModel(message,model))continue;for(let block of message.content){if(block.type!=="providerNative"||!isRecord6(block.raw))continue;let raw=block.raw;isReplayableAnthropicProviderNativeBlock(raw)&&isProviderNativeToolUseBlock(raw)&&typeof raw.id=="string"&&pendingUseIds.add(raw.id)}for(let block of message.content){if(block.type!=="providerNative"||!isRecord6(block.raw))continue;let raw=block.raw;if(!isReplayableAnthropicProviderNativeBlock(raw))continue;let toolUseId=raw.tool_use_id;typeof toolUseId=="string"&&(priorUseIds.has(toolUseId)||pendingUseIds.has(toolUseId))&&(resolvedUseIds.add(toolUseId),validResultIds.add(toolUseId))}continue}if(message.role==="toolResult"){if(discardedFallbackToolCallIds.has(message.toolCallId))continue;let emitsReferences=!1;for(let name of message.addedToolNames??[])!deferredToolNames.has(name)||loadedReferenceNames.has(name)||(loadedReferenceNames.add(name),emitsReferences=!0);emitsReferences&&(pendingUseIds=new Set);continue}message.role==="user"&&userMessageClosesServerTurn(message)&&(pendingUseIds=new Set)}return{resolvedUseIds,liveUseIds:pendingUseIds,validResultIds}}function isUnpairedProviderNativeToolBlock(raw,pairing){if(!isRecord6(raw))return!1;if(isProviderNativeToolUseBlock(raw))return typeof raw.id!="string"||!(pairing.resolvedUseIds.has(raw.id)||pairing.liveUseIds.has(raw.id));let toolUseId=raw.tool_use_id;return typeof toolUseId=="string"&&!pairing.validResultIds.has(toolUseId)}function pairedServerToolUseIdsBeforeBoundary(content,boundary){let paired=new Set;for(let index=0;index<boundary;index++){let block=content[index];if(block.type!=="providerNative"||!isRecord6(block.raw))continue;let toolUseId=block.raw.tool_use_id;typeof toolUseId=="string"&&paired.add(toolUseId)}return paired}function collectDiscardedFallbackToolCallIds(messages,model){let discarded=new Set;for(let message of messages){if(message.role!=="assistant"||!isSameAnthropicModel(message,model))continue;let boundary=lastAnthropicFallbackBoundary(message.content);if(!(boundary<0))for(let index=0;index<boundary;index++){let block=message.content[index];block.type==="toolCall"&&discarded.add(block.id)}}return discarded}function stringRecord(value){if(!isRecord6(value))return;let entries=Object.entries(value);if(!entries.some(([,item])=>typeof item!="string"))return Object.fromEntries(entries)}function isForcedAnthropicToolChoice(toolChoice){return isRecord6(toolChoice)&&(toolChoice.type==="any"||toolChoice.type==="tool")}function extractPayloadRequestMetadata(params){let payload=params,headers=stringRecord(payload.headers);if(!("headers"in payload)&&!("extra_body"in payload))return headers?{params,headers}:{params};let stripped={...payload};return delete stripped.headers,delete stripped.extra_body,headers?{params:stripped,headers}:{params:stripped}}function removeAnthropicBetaHeaders(headers,shouldRemoveBeta){if(!headers)return{changed:!1};let nextHeaders={},changed=!1;for(let[key,value]of Object.entries(headers)){if(key.toLowerCase()!=="anthropic-beta"||value===null){nextHeaders[key]=value;continue}let betas=value.split(",").map(beta=>beta.trim()).filter(beta=>beta.length>0),supportedBetas=betas.filter(beta=>!shouldRemoveBeta(beta));changed=changed||supportedBetas.length!==betas.length,supportedBetas.length>0&&(nextHeaders[key]=supportedBetas.join(", "))}return changed?{changed:!0,headers:Object.keys(nextHeaders).length>0?nextHeaders:void 0}:{changed:!1,headers}}function removeComputerUseBetaHeader(headers){return removeAnthropicBetaHeaders(headers,beta=>beta.startsWith(COMPUTER_USE_BETA_PREFIX))}function sanitizeAdaptiveThinkingHeaders(model,headers){if(!supportsAdaptiveThinking(model))return headers;let headerSanitization=removeAnthropicBetaHeaders(headers,beta=>beta===INTERLEAVED_THINKING_BETA);return headerSanitization.changed?headerSanitization.headers??{}:headers}function rejectsNativeComputerTool(model,toolType){return model.provider==="cloudflare-ai-gateway"&&model.baseUrl.includes("anthropic")?toolType.startsWith("computer_"):matchesModelMarker(model,UNSUPPORTED_NATIVE_COMPUTER_TOOL_MODEL_MARKERS)&&toolType===NATIVE_COMPUTER_TOOL_TYPE}function rejectsComputerUseBeta(model){return model.provider==="cloudflare-ai-gateway"&&model.baseUrl.includes("anthropic")||matchesModelMarker(model,UNSUPPORTED_NATIVE_COMPUTER_TOOL_MODEL_MARKERS)}function isAnthropicWebSearchToolType(toolType){return toolType.startsWith("web_search_")}function sanitizeUnsupportedNativeTools(model,params){let payload=params,headers=stringRecord(payload.headers),headerSanitization=rejectsComputerUseBeta(model)?removeComputerUseBetaHeader(headers):{changed:!1},rejectsNativeWebSearch=!getAnthropicCompat(model).supportsWebSearch,tools=payload.tools,sanitized={...payload},changed=!1;if(Array.isArray(tools)){let supportedTools=[];for(let tool of tools){let hookTool=tool;if(isRecord6(hookTool)&&typeof hookTool.type=="string"&&(rejectsNativeComputerTool(model,hookTool.type)||rejectsNativeWebSearch&&isAnthropicWebSearchToolType(hookTool.type))){changed=!0;continue}supportedTools.push(tool)}changed&&(supportedTools.length>0?sanitized.tools=supportedTools:delete sanitized.tools)}if(headerSanitization.changed&&(changed=!0,headerSanitization.headers?sanitized.headers=headerSanitization.headers:delete sanitized.headers),changed&&isRecord6(sanitized.tool_choice)){let toolChoiceName=sanitized.tool_choice.name,hasSelectedTool=typeof toolChoiceName=="string"&&Array.isArray(sanitized.tools)&&sanitized.tools.some(tool=>isRecord6(tool)&&tool.name===toolChoiceName);(sanitized.tools===void 0||typeof toolChoiceName=="string"&&!hasSelectedTool)&&delete sanitized.tool_choice}return changed?sanitized:params}function httpStatusOfError(error){if(!isRecord6(error))return;let status=error.status;return typeof status=="number"&&Number.isInteger(status)&&status>=100&&status<600?status:void 0}function sanitizeAdaptiveThinkingPayload(model,params,options){if(!supportsAdaptiveThinking(model))return params;let payload=params,headers=stringRecord(payload.headers),headerSanitization=removeAnthropicBetaHeaders(headers,beta=>beta===INTERLEAVED_THINKING_BETA),sanitized={...payload},changed=!1,thinking=isRecord6(payload.thinking)?payload.thinking:void 0;if(thinking?.type==="enabled"){let display=thinking.display==="omitted"||thinking.display==="summarized"?thinking.display:options?.thinkingDisplay??"summarized";sanitized.thinking={type:"adaptive",display},options?.effort!==void 0&&!isRecord6(payload.output_config)&&(sanitized.output_config={effort:options.effort}),changed=!0}return headerSanitization.changed&&(changed=!0,headerSanitization.headers?sanitized.headers=headerSanitization.headers:delete sanitized.headers),changed?sanitized:params}function isCacheableUserContentBlock(block){return block?.type==="text"||block?.type==="image"||block?.type==="tool_result"}function appendUserBlocks(params,newBlocks){if(newBlocks.length===0)return;let lastParam=params[params.length-1];lastParam?.role==="user"?typeof lastParam.content=="string"?lastParam.content=[{type:"text",text:lastParam.content},...newBlocks]:Array.isArray(lastParam.content)&&lastParam.content.push(...newBlocks):params.push({role:"user",content:newBlocks})}function isToolLoopContinuation(messages){let tail=messages[messages.length-1],preceding=messages[messages.length-2];return tail?.role==="user"&&Array.isArray(tail.content)&&tail.content.some(block=>block.type==="tool_result")&&preceding?.role==="assistant"&&Array.isArray(preceding.content)&&preceding.content.some(block=>block.type==="tool_use")}function markSystemMessageCacheCheckpoint(message,cacheControl){if(!Array.isArray(message.content))return;let lastBlock=message.content[message.content.length-1];lastBlock&&(lastBlock.type==="text"||lastBlock.type==="tool_addition"||lastBlock.type==="tool_removal")&&(lastBlock.cache_control=cacheControl)}function markAssistantMessageCacheCheckpoint(blocks,cacheControl){for(let index=blocks.length-1;index>=0;index--){let block=blocks[index];if(block.type==="text"||block.type==="tool_use")return block.cache_control=cacheControl,!0;if(block.type==="thinking"||block.type==="redacted_thinking")return!1}return!1}function markUserMessageCacheCheckpoint(message,cacheControl){if(message.role!=="user")return!1;if(Array.isArray(message.content)){let lastBlock=message.content[message.content.length-1];return isCacheableUserContentBlock(lastBlock)?(lastBlock.cache_control=cacheControl,!0):!1}return typeof message.content=="string"?(message.content=[{type:"text",text:message.content,cache_control:cacheControl}],!0):!1}var ANTHROPIC_MESSAGE_EVENTS=new Set(["message_start","message_delta","message_stop","content_block_start","content_block_delta","content_block_stop"]);function flushSseEvent(state){if(!state.event&&state.data.length===0)return null;let event={event:state.event,data:state.data.join(`
8
- `),raw:[...state.raw]};return state.event=null,state.data=[],state.raw=[],event}function decodeSseLine(line,state){if(line==="")return flushSseEvent(state);if(state.raw.push(line),line.startsWith(":"))return null;let delimiterIndex=line.indexOf(":"),fieldName=delimiterIndex===-1?line:line.slice(0,delimiterIndex),value=delimiterIndex===-1?"":line.slice(delimiterIndex+1);return value.startsWith(" ")&&(value=value.slice(1)),fieldName==="event"?state.event=value:fieldName==="data"&&state.data.push(value),null}function nextLineBreakIndex(text){let carriageReturnIndex=text.indexOf("\r"),newlineIndex=text.indexOf(`
9
- `);return carriageReturnIndex===-1?newlineIndex:newlineIndex===-1?carriageReturnIndex:Math.min(carriageReturnIndex,newlineIndex)}function consumeLine(text){let lineBreakIndex=nextLineBreakIndex(text);if(lineBreakIndex===-1)return null;let nextIndex=lineBreakIndex+1;return text[lineBreakIndex]==="\r"&&text[nextIndex]===`
10
- `&&(nextIndex+=1),{line:text.slice(0,lineBreakIndex),rest:text.slice(nextIndex)}}async function*iterateSseMessages(body,signal,onBytes){let reader=body.getReader(),decoder=new TextDecoder,state={event:null,data:[],raw:[]},buffer="";try{for(;;){if(signal?.aborted)throw new Error("Request was aborted");let{value,done}=await reader.read();if(done)break;value.byteLength>0&&onBytes?.(),buffer+=decoder.decode(value,{stream:!0});let consumed2=consumeLine(buffer);for(;consumed2;){buffer=consumed2.rest;let event=decodeSseLine(consumed2.line,state);event&&(yield event),consumed2=consumeLine(buffer)}}buffer+=decoder.decode();let consumed=consumeLine(buffer);for(;consumed;){buffer=consumed.rest;let event=decodeSseLine(consumed.line,state);event&&(yield event),consumed=consumeLine(buffer)}if(buffer.length>0){let event=decodeSseLine(buffer,state);event&&(yield event)}let trailingEvent=flushSseEvent(state);trailingEvent&&(yield trailingEvent)}finally{reader.releaseLock()}}async function*iterateAnthropicEvents(response,signal,onTransportActivity){if(!response.body)throw new Error("Attempted to iterate over an Anthropic response with no body");let sawMessageStart=!1,sawMessageEnd=!1;for await(let sse of iterateSseMessages(response.body,signal,onTransportActivity)){if(sse.event==="error"){let errorText=sse.data,hintMs=extract429RetryAfterMs({bodyText:sse.data});throw hintMs!==void 0&&(errorText=appendRetryAfterMsMarker(errorText,hintMs)),attachProviderDiagnostic(new Error(errorText),anthropicProviderDiagnosticFromSseData(sse.data))}if(ANTHROPIC_MESSAGE_EVENTS.has(sse.event??""))try{let event=parseJsonWithRepair(sse.data);event.type==="message_start"?sawMessageStart=!0:event.type==="message_stop"&&(sawMessageEnd=!0),yield event}catch(error){let message=error instanceof Error?error.message:String(error);throw new Error(`Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join("\\n")}`)}}if(sawMessageStart&&!sawMessageEnd)throw new Error("Anthropic stream ended before message_stop")}var stream=(model,context,options)=>{let stream2=new AssistantMessageEventStream({captureBlocks:!0}),normalizedContext=resolveTranscript(context,supportsMidConvoSystemMessages(model));return(async()=>{let providerThinkingLevel=managedEffortForRequest(model,options),output={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,...providerThinkingLevel===void 0?{}:{providerThinkingLevel},usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()},serverFallbackAbort=new AbortController,serverFallbackReceipt,combinedAbort=combineAbortSignals([options?.signal,serverFallbackAbort.signal]),requestSignal=combinedAbort.signal;try{let client,usageModel=model,inputTransformations,openClient;if(options?.client)client=options.client;else{let apiKey=options?.apiKey,optionsHeaders=providerHeadersToRecord(options?.headers),federation=getAnthropicFederation(model,apiKey,optionsHeaders,options?.env);federation||assertRequestAuth(model.provider,apiKey,optionsHeaders),assertNotClaudeOAuthToken(model,apiKey);let copilotDynamicHeaders;if(model.provider==="github-copilot"){let hasImages=hasCopilotVisionInput(normalizedContext.messages);copilotDynamicHeaders=buildCopilotDynamicHeaders({messages:normalizedContext.messages,hasImages})}let cacheSessionId=resolveCacheRetention(options?.cacheRetention??model.cacheRetention,options?.env,"short")==="none"?void 0:options?.sessionId;openClient=()=>{client=createClient(model,apiKey,options?.interleavedThinking??!0,shouldUseFineGrainedToolStreamingBeta(model,normalizedContext),options?.refusalFallbacks!==void 0&&configuredBetaHeader(model,options)!==null,optionsHeaders,getAnthropicCompat(model).supportsGzipRequestBody?withGzipRequestBodies(options?.fetch):options?.fetch,copilotDynamicHeaders,cacheSessionId,options?.env,federation)},openClient()}let fallbackKey=unsignedThinkingFallbackKey(model,options?.sessionId),unsignedThinkingReplay=fallbackKey&&unsignedThinkingTextReplayFallbacks.has(fallbackKey)?"text":getAnthropicCompat(model).unsignedThinkingReplay,demoteReferenceReplay=fallbackKey!==void 0&&toolReferenceReplayFallbacks.has(fallbackKey),requestReplaysReferences=!1,expiredSearchPrefix=fallbackKey===void 0?void 0:`${fallbackKey}\0`,expiredSearchIds=new Set;if(expiredSearchPrefix!==void 0)for(let key of expiredWebSearchReplays)key.startsWith(expiredSearchPrefix)&&expiredSearchIds.add(key.slice(expiredSearchPrefix.length));let lastSentParams,createRequest=async()=>{let params=buildParams(model,normalizedContext,options,unsignedThinkingReplay),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams),params=sanitizeAdaptiveThinkingPayload(model,params,options),params=sanitizeUnsupportedNativeTools(model,params),params=demoteUnavailableToolReferences(params);let withoutReferenceReplay=demoteToolReferenceReplay(params);requestReplaysReferences=withoutReferenceReplay!==params,demoteReferenceReplay&&(params=withoutReferenceReplay),params=demoteExpiredWebSearchReplay(params,expiredSearchIds),lastSentParams=params,params=sanitizeAnthropicToolPairs(params);let payloadRequestMetadata=extractPayloadRequestMetadata(params);params=payloadRequestMetadata.params;let limitedTools=limitGitHubCopilotTools(model.provider,params.tools,params.tool_choice);limitedTools.omittedCount>0&&(params={...params,tools:limitedTools.tools},recordGitHubCopilotToolLimit(output,limitedTools.omittedCount));let requestOptions={...requestSignal?{signal:requestSignal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0,...payloadRequestMetadata.headers?{headers:payloadRequestMetadata.headers}:{}},send=body=>(logAnthropicRequestShape(model,body),awaitProviderTransport(()=>client.beta.messages.create({...body,stream:!0},requestOptions).asResponse(),anthropicProviderDiagnosticFromError)),sent=await sendWithForcedToolChoiceFallback({target:model,params,acceptsForcedToolChoice:getAnthropicCompat(model).supportsForcedToolChoice,isForced:isForcedAnthropicToolChoice,send});return{params:sent.params,response:sent.result}},markNewlyExpiredSearches=error=>{if(!isExpiredWebSearchContentError(error)||lastSentParams===void 0)return!1;let newlyExpired=expiredWebSearchReplayIds(lastSentParams,error).filter(id=>!expiredSearchIds.has(id));for(let id of newlyExpired)expiredSearchIds.add(id),expiredSearchPrefix!==void 0&&expiredWebSearchReplays.add(expiredSearchPrefix+id);return newlyExpired.length>0},createRequestDemotingExpiredSearches=async()=>{try{return await createRequest()}catch(error){if(markNewlyExpiredSearches(error))return createRequestDemotingExpiredSearches();throw error}},requestOutcome;try{requestOutcome=await retryProviderRequest(async()=>{try{return await createRequest()}catch(error){if(unsignedThinkingReplay!=="text"&&isInvalidUnsignedThinkingSignatureError(error))return unsignedThinkingReplay="text",fallbackKey&&unsignedThinkingTextReplayFallbacks.add(fallbackKey),createRequest();if(!demoteReferenceReplay&&requestReplaysReferences&&isToolReferenceNotFoundError(error))return demoteReferenceReplay=!0,fallbackKey&&toolReferenceReplayFallbacks.add(fallbackKey),createRequest();if(markNewlyExpiredSearches(error))return createRequestDemotingExpiredSearches();throw error}},{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:requestSignal})}catch(error){let status=httpStatusOfError(error);throw status!==void 0&&await options?.onResponse?.({status,headers:{}},model),error}let{params:sentParams,response}=requestOutcome;await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream2.push({type:"start",partial:output});let blocks=output.content;for await(let event of iterateAnthropicEvents(response,requestSignal,options?.onTransportActivity))if(await options?.onProviderStreamEvent?.(event,model),event.type==="message_start"){output.responseId=event.message.id;let transformations=event.message.input_transformations;Array.isArray(transformations)&&(inputTransformations=transformations);let responseModel=event.message.model;responseModel!==model.id&&(output.responseModel=responseModel);let fallback=responseModel===model.id?void 0:model.compat?.allowedFallbackModels?.find(candidate=>typeof candidate=="string"?candidate===responseModel:candidate.provider===model.provider&&candidate.model===responseModel);fallback!==void 0&&(output.model=responseModel);let fallbackCost=typeof fallback=="string"?void 0:fallback?.cost;usageModel=fallbackCost?{...model,id:responseModel,cost:fallbackCost}:model,output.usage.input=event.message.usage.input_tokens||0,output.usage.output=event.message.usage.output_tokens||0,output.usage.cacheRead=event.message.usage.cache_read_input_tokens||0,output.usage.cacheWrite=event.message.usage.cache_creation_input_tokens||0,output.usage.cacheWrite1h=event.message.usage.cache_creation?.ephemeral_1h_input_tokens||0,output.usage.totalTokens=output.usage.input+output.usage.output+output.usage.cacheRead+output.usage.cacheWrite,calculateCost(model,output.usage);let stickyReceipt=options?.abortServerSideFallback===!0?parseStickyFallbackReceipt(event.message.usage,sentParams.model,event.message.model):void 0;if(stickyReceipt!==void 0){serverFallbackReceipt=stickyReceipt,serverFallbackAbort.abort();break}}else if(event.type==="content_block_start"){let receipt=parseServerFallbackReceipt(event.content_block);if(receipt!==void 0){if(options?.abortServerSideFallback===!0){serverFallbackReceipt=receipt,serverFallbackAbort.abort();break}usageModel=applyServerFallbackContinuation(output,model,receipt)}if(event.content_block.type==="text"){let block={type:"text",text:event.content_block.text??"",index:event.index};output.content.push(block),stream2.push({type:"text_start",contentIndex:output.content.length-1,partial:output})}else if(event.content_block.type==="thinking"){let block={type:"thinking",thinking:event.content_block.thinking??"",thinkingSignature:event.content_block.signature??"",index:event.index};output.content.push(block),stream2.push({type:"thinking_start",contentIndex:output.content.length-1,partial:output})}else if(event.content_block.type==="redacted_thinking"){let block={type:"thinking",thinking:"[Reasoning redacted]",thinkingSignature:event.content_block.data,redacted:!0,index:event.index};output.content.push(block),stream2.push({type:"thinking_start",contentIndex:output.content.length-1,partial:output})}else if(event.content_block.type==="tool_use"){let block={type:"toolCall",id:event.content_block.id,name:event.content_block.name,arguments:isRecord6(event.content_block.input)?event.content_block.input:{},partialJson:"",index:event.index};output.content.push(block),stream2.push({type:"toolcall_start",contentIndex:output.content.length-1,partial:output})}else{let block={type:"providerNative",subtype:event.content_block.type,raw:event.content_block,index:event.index};output.content.push(block),pushAssistantProgress(stream2,{type:"message_block_state",contentIndex:output.content.length-1,phase:"insert",block})}}else if(event.type==="content_block_delta"){if(event.delta.type==="text_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="text"&&(block.text+=event.delta.text,stream2.push({type:"text_delta",contentIndex:index,delta:event.delta.text,partial:output}))}else if(event.delta.type==="thinking_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="thinking"&&(block.thinking+=event.delta.thinking,stream2.push({type:"thinking_delta",contentIndex:index,delta:event.delta.thinking,partial:output}))}else if(event.delta.type==="input_json_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="toolCall"?(block.partialJson+=event.delta.partial_json,block.arguments=parseStreamingJson(block.partialJson),stream2.push({type:"toolcall_delta",contentIndex:index,delta:event.delta.partial_json,partial:output})):block&&block.type==="providerNative"&&isProviderNativeToolUseBlock(block.raw)&&(block.partialJson=(block.partialJson??"")+event.delta.partial_json)}else if(event.delta.type==="signature_delta"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];block&&block.type==="thinking"&&(block.thinkingSignature=block.thinkingSignature||"",block.thinkingSignature+=event.delta.signature,pushAssistantProgress(stream2,{type:"message_block_metadata",contentIndex:index,thinkingSignatureDelta:event.delta.signature}))}}else if(event.type==="content_block_stop"){let index=blocks.findIndex(b=>b.index===event.index),block=blocks[index];if(block){if(delete block.index,block.type==="text")stream2.push({type:"text_end",contentIndex:index,content:block.text,partial:output});else if(block.type==="thinking")stream2.push({type:"thinking_end",contentIndex:index,content:block.thinking,partial:output});else if(block.type==="toolCall")block.arguments=parseStreamingJson(block.partialJson),delete block.partialJson,stream2.push({type:"toolcall_end",contentIndex:index,toolCall:block,partial:output});else if(block.type==="providerNative"){let partialJson=block.partialJson;delete block.partialJson,partialJson!==void 0&&isRecord6(block.raw)&&(block.raw={...block.raw,input:parseStreamingJson(partialJson)}),pushAssistantProgress(stream2,{type:"message_block_state",contentIndex:index,phase:"end",block})}}}else if(event.type==="message_delta"){let transformations=event.input_transformations;if(Array.isArray(transformations)&&(inputTransformations=transformations),event.delta.stop_reason){output.rawStopReason=event.delta.stop_reason;let stopReasonResult=mapStopReason(event.delta.stop_reason,event.delta.stop_details);output.stopReason=stopReasonResult.stopReason,stopReasonResult.errorMessage&&(output.errorMessage=stopReasonResult.errorMessage),stopReasonResult.stopDetails&&(output.stopDetails=stopReasonResult.stopDetails)}if(event.usage){event.usage.input_tokens!=null&&(output.usage.input=event.usage.input_tokens),event.usage.output_tokens!=null&&(output.usage.output=event.usage.output_tokens),event.usage.cache_read_input_tokens!=null&&(output.usage.cacheRead=event.usage.cache_read_input_tokens),event.usage.cache_creation_input_tokens!=null&&(output.usage.cacheWrite=event.usage.cache_creation_input_tokens);let cacheCreation=event.usage.cache_creation;cacheCreation?.ephemeral_1h_input_tokens!=null&&(output.usage.cacheWrite1h=cacheCreation.ephemeral_1h_input_tokens);let thinkingTokens=event.usage.output_tokens_details?.thinking_tokens;thinkingTokens!=null&&(output.usage.reasoning=thinkingTokens)}output.usage.totalTokens=output.usage.input+output.usage.output+output.usage.cacheRead+output.usage.cacheWrite,calculateCost(usageModel,output.usage)}if(options?.signal?.aborted)throw new Error("Request was aborted");if(serverFallbackReceipt!==void 0&&applyServerFallbackAbort(output,serverFallbackReceipt),output.stopReason==="pending")throw new Error("Anthropic stream ended without a stop reason");if(output.stopReason==="aborted"||output.stopReason==="error")throw new Error(output.errorMessage||"An unknown error occurred");inputTransformations&&inputTransformations.length>0&&appendAssistantMessageDiagnostic(output,{type:"anthropic_input_transformations",timestamp:Date.now(),details:{transformations:inputTransformations.map(transformation=>({type:transformation.type??void 0,path:transformation.path??void 0,reason:transformation.reason??void 0}))}}),combinedAbort.cleanup(),stream2.push({type:"done",reason:output.stopReason,message:output}),stream2.end()}catch(error){combinedAbort.cleanup();for(let block of output.content){delete block.index;let scratch=block.partialJson;block.type==="providerNative"&&scratch!==void 0&&isRecord6(block.raw)&&(block.raw={...block.raw,input:parseStreamingJson(scratch)}),delete block.partialJson}output.stopReason=options?.signal?.aborted?"aborted":"error";let errorMessage=error instanceof Error?error.message:JSON.stringify(error);if(error instanceof Error&&error.status===429){let sdkHeaders=error.headers;if(sdkHeaders instanceof Headers){let hintMs=extract429RetryAfterMs({status:429,headers:sdkHeaders,bodyText:errorMessage});hintMs!==void 0&&(errorMessage=appendRetryAfterMsMarker(errorMessage,hintMs))}}let failure=normalizeAnthropicRetryFailure(error);appendAssistantMessageDiagnostic(output,{type:"provider_retry_failure",timestamp:Date.now(),details:{kind:failure.kind,...failure.statusCode!==void 0?{statusCode:failure.statusCode}:{},...failure.providerCodes!==void 0?{providerCodes:failure.providerCodes}:{},...failure.retryAfterMs!==void 0?{retryAfterMs:failure.retryAfterMs}:{},...failure.shouldRetry!==void 0?{shouldRetry:failure.shouldRetry}:{}}});let providerDiagnostic=output.stopReason==="error"?readProviderDiagnostic(error):void 0;providerDiagnostic!==void 0&&(output.providerDiagnostic=providerDiagnostic),output.errorMessage=withGitHubCopilotFailureNote(formatGitHubCopilotToolLimitError(output,errorMessage),model.provider,error),stream2.push({type:"error",reason:output.stopReason,error:output}),stream2.end()}})(),stream2};function getModelMatchCandidates(model){return[model.id,model.name].flatMap(value=>{let lower=value.toLowerCase();return[lower,lower.replace(/[\s_.:]+/g,"-")]})}function matchesModelMarker(model,markers){return getModelMatchCandidates(model).some(candidate=>markers.some(marker=>candidate.includes(marker)))}function supportsNativeXhighEffort(model){return matchesModelMarker(model,NATIVE_XHIGH_EFFORT_MODEL_MARKERS)}function cannotDisableThinking(model,compat){return compat.supportsDisabledThinking?matchesModelMarker(model,DISABLED_THINKING_REJECTING_MODEL_MARKERS):!0}function managedEffortForRequest(model,options){if(model.compat?.supportsMidConvoEffort===!0)return options?.thinkingEnabled===!1?cannotDisableThinking(model,getAnthropicCompat(model))?"low":void 0:options?.effort??"high"}function isEffortMarker(message){return message.role==="system"&&Array.isArray(message.content)&&message.content.length===0&&message.output_config?.effort!==void 0}function disableThinkingForRequest(params,model,compat){if(delete params.output_config,cannotDisableThinking(model,compat)){delete params.thinking,supportsAdaptiveThinking(model)&&(params.output_config={effort:"low"});return}params.thinking={type:"disabled"},params.messages=params.messages.filter(message=>!isEffortMarker(message))}function supportsAdaptiveThinking(model){return model.compat?.forceAdaptiveThinking!==void 0?model.compat.forceAdaptiveThinking:matchesModelMarker(model,ADAPTIVE_THINKING_MODEL_MARKERS)}function mapThinkingLevelToEffort(model,level){let mapped=level?model.thinkingLevelMap?.[level]:void 0;if(typeof mapped=="string")return mapped;switch(level){case"minimal":case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return supportsNativeXhighEffort(model)?"xhigh":"max";case"max":return"max";default:return"high"}}var streamSimple=(model,context,options)=>{let apiKey=options?.apiKey,optionsHeaders=providerHeadersToRecord(options?.headers);getAnthropicFederation(model,apiKey,optionsHeaders,options?.env)||assertRequestAuth(model.provider,apiKey,optionsHeaders),assertNotClaudeOAuthToken(model,apiKey);let base={...buildBaseOptions(model,context,options,options?.apiKey),toolChoice:options?.toolChoice};if(!options?.reasoning)return stream(model,context,{...base,thinkingEnabled:!1});if(supportsAdaptiveThinking(model)){let effort=mapThinkingLevelToEffort(model,options.reasoning);return stream(model,context,{...base,thinkingEnabled:!0,effort})}let adjusted=adjustMaxTokensForThinking(base.maxTokens,model.maxTokens,options.reasoning,options.thinkingBudgets),maxTokens=clampMaxTokensToContext(model,context,adjusted.maxTokens);return stream(model,context,{...base,maxTokens,thinkingEnabled:!0,thinkingBudgetTokens:Math.min(adjusted.thinkingBudget,Math.max(0,maxTokens-1024))})};function createClient(model,apiKey,interleavedThinking,useFineGrainedToolStreamingBeta,useServerSideFallbackBeta,optionsHeaders,fetch,dynamicHeaders,sessionId,env,federation){let needsInterleavedBeta=interleavedThinking&&!supportsAdaptiveThinking(model),betaFeatures=[];if(useFineGrainedToolStreamingBeta&&betaFeatures.push(FINE_GRAINED_TOOL_STREAMING_BETA),needsInterleavedBeta&&betaFeatures.push(INTERLEAVED_THINKING_BETA),useServerSideFallbackBeta&&betaFeatures.push(SERVER_SIDE_FALLBACK_BETA),model.provider==="cloudflare-ai-gateway")return new PiAnthropic({apiKey:null,authToken:null,baseURL:resolveCloudflareBaseUrl(model,env),dangerouslyAllowBrowser:!0,fetch,defaultHeaders:sanitizeAdaptiveThinkingHeaders(model,mergeHeaders({accept:"application/json","anthropic-dangerous-direct-browser-access":"true","cf-aig-authorization":`Bearer ${apiKey}`,"x-api-key":null,Authorization:null,...betaFeatures.length>0?{"anthropic-beta":betaFeatures.join(",")}:{}},model.headers,optionsHeaders))});if(model.provider==="github-copilot")return new PiAnthropic({apiKey:null,authToken:apiKey,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders:sanitizeAdaptiveThinkingHeaders(model,mergeClientHeaders(model,{accept:"application/json","anthropic-dangerous-direct-browser-access":"true",...betaFeatures.length>0?{"anthropic-beta":betaFeatures.join(",")}:{}},model.headers,dynamicHeaders,optionsHeaders))});let affinityCompat=getAnthropicCompat(model),sessionAffinityHeaders={};if(sessionId&&affinityCompat.sendSessionAffinityHeaders){let header=affinityCompat.sessionAffinityFormat==="openrouter"?"x-session-id":"x-session-affinity";sessionAffinityHeaders[header]=sessionId}let defaultHeaders=sanitizeAdaptiveThinkingHeaders(model,mergeClientHeaders(model,{accept:"application/json","anthropic-dangerous-direct-browser-access":"true",...betaFeatures.length>0?{"anthropic-beta":betaFeatures.join(",")}:{}},sessionAffinityHeaders,model.headers,optionsHeaders));if(federation){let key=JSON.stringify([model.baseUrl,federation]);if(federationClient?.key!==key||federationClient.fetch!==fetch){let client=new PiAnthropic({apiKey:null,authToken:null,config:federation,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch});federationClient={key,fetch,client}}return federationClient.client.withOptions({defaultHeaders})}return new PiAnthropic({apiKey:apiKey??null,authToken:null,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders})}function buildAnthropicWarmPromptCacheParams(model,context,options){let transcript=resolveTranscript(normalizeContext(context),supportsMidConvoSystemMessages(model)),params=buildParams(model,transcript,{...options,maxTokens:0,thinkingEnabled:void 0,toolChoice:void 0}),{stream:_stream,thinking:_thinking,output_config:_outputConfig,tool_choice:_toolChoice,...nonStreaming}=params;return sanitizeAnthropicToolPairs({...nonStreaming,max_tokens:0})}function configuredBetaHeader(model,options){let configured;for(let headers of[model.headers,options?.headers])for(let[name,value]of Object.entries(headers??{}))name.toLowerCase()==="anthropic-beta"&&(configured=value);return configured}function getBetaFeatures(model,context,shape,options){let configured=configuredBetaHeader(model,options);if(configured===null)return[];let required=[];shape.midConvoEffort&&required.push(MID_CONVERSATION_OUTPUT_CONFIG_BETA),shape.thinkingBinding&&required.push(THINKING_BINDING_CONTROLS_BETA),shape.nativeToolChanges&&required.push(MID_CONVERSATION_TOOL_CHANGES_BETA),shape.refusalFallbacks&&required.push(SERVER_SIDE_FALLBACK_BETA);let optional=configured===void 0?defaultOptionalBetas(model,context,options):configured.split(",").map(feature=>feature.trim()).filter(Boolean).filter(feature=>!(feature===INTERLEAVED_THINKING_BETA&&supportsAdaptiveThinking(model)));return[...new Set([...optional,...required])]}function defaultOptionalBetas(model,context,options){let features=[];return shouldUseFineGrainedToolStreamingBeta(model,context)&&features.push(FINE_GRAINED_TOOL_STREAMING_BETA),model.reasoning&&options?.thinkingEnabled===!0&&(options.interleavedThinking??!0)&&!supportsAdaptiveThinking(model)&&features.push(INTERLEAVED_THINKING_BETA),shouldUseServerSideFallbackBeta(model)&&features.push(SERVER_SIDE_FALLBACK_BETA),features}function buildParams(model,context,options,unsignedThinkingReplay=getAnthropicCompat(model).unsignedThinkingReplay){let compat=getAnthropicCompat(model),{cacheControl}=getCacheControl(model,options?.cacheRetention??model.cacheRetention,options?.env),initialSystemMessage=getInitialSystemMessage(context.messages),initialSystemText=initialSystemMessage?getSystemMessageText(initialSystemMessage):"",transformedMessages=transformMessages(context.messages,model,normalizeToolCallId,{preserveThinking:options?.thinkingEnabled===!0,preserveUnsignedThinking:!0}),conversationMessages=initialSystemMessage?transformedMessages.slice(1):transformedMessages,stablePrefixMarkers=conversationMessages.filter(message=>message.role==="assistant"&&message.promptCacheBreakpoint===!0).length,systemHoldsCheckpoint=initialSystemText.length>0,stablePrefixCheckpointLimit=stablePrefixMarkers>=2&&systemHoldsCheckpoint?2:Math.min(1,stablePrefixMarkers),initialTools=initialSystemMessage?.toolsAdded??[],betasSuppressed=configuredBetaHeader(model,options)===null,midConvoEffort=model.compat?.supportsMidConvoEffort===!0&&!betasSuppressed,nativeToolChanges=!betasSuppressed&&supportsMidConvoSystemMessages(model)&&supportsMidConvoToolChanges(model)&&initialTools.length>0&&!hasToolRedefinitions(context.messages),discardedFallbackToolCallIds=collectDiscardedFallbackToolCallIds(conversationMessages,model),partitionMessages=conversationMessages.filter(message=>!(message.role==="toolResult"&&discardedFallbackToolCallIds.has(message.toolCallId))),toolPlacement=nativeToolChanges?{immediate:[],deferred:new Map}:splitDeferredTools({tools:getCurrentTools(context.messages),messages:partitionMessages},compat.supportsToolReferences),immediateTools=toolPlacement.immediate,deferredTools=[...toolPlacement.deferred.values()];immediateTools.length===0&&deferredTools.length>0&&(immediateTools=deferredTools,deferredTools=[]);let deferredToolNames=new Set(deferredTools.map(tool=>tool.name)),activeEffort=managedEffortForRequest(model,options)??"high",sendFallbacks=options?.refusalFallbacks!==void 0&&!betasSuppressed,betaFeatures=getBetaFeatures(model,context,{midConvoEffort,thinkingBinding:midConvoEffort&&options?.thinkingEnabled!==!1,nativeToolChanges,refusalFallbacks:sendFallbacks},options),convertedMessages=convertMessages(conversationMessages,model,cacheControl,unsignedThinkingReplay,deferredToolNames,midConvoEffort?model.provider:void 0,nativeToolChanges,stablePrefixCheckpointLimit),messages=midConvoEffort?insertThinkingLevelMessages(convertedMessages,activeEffort):convertedMessages.messages;if(midConvoEffort&&cacheControl)for(let index=messages.length-1;index>=0;index--){let message=messages[index];if(message.role==="system"&&Array.isArray(message.content)&&message.content.length>0)break;if(message.role==="user"){markUserMessageCacheCheckpoint(message,cacheControl);break}}let params={model:model.id,messages,max_tokens:options?.maxTokens??model.maxTokens,stream:!0,...betaFeatures.length>0?{betas:betaFeatures}:{}};initialSystemText&&(params.system=anthropicSystemTextBlocks(initialSystemText,initialSystemMessage?.stablePrefix,cacheControl)),options?.temperature!==void 0&&!options?.thinkingEnabled&&compat.supportsTemperature&&Object.defineProperty(params,"temperature",{value:options.temperature,writable:!0,enumerable:!0,configurable:!0});let toolCacheControl=compat.supportsCacheControlOnTools&&stablePrefixCheckpointLimit<2?cacheControl:void 0;if(nativeToolChanges){let initialNames=new Set(initialTools.map(tool=>tool.name)),laterTools=getDeclaredTools(context.messages).filter(tool=>!initialNames.has(tool.name));params.tools=[...convertTools(initialTools,compat.supportsEagerToolInputStreaming,compat.supportsStrictTools,toolCacheControl),DEFERRED_TOOL_PLACEHOLDER,...convertTools(laterTools,compat.supportsEagerToolInputStreaming,compat.supportsStrictTools,void 0,!0)]}else(immediateTools.length>0||deferredTools.length>0)&&(params.tools=[...convertTools(immediateTools,compat.supportsEagerToolInputStreaming,compat.supportsStrictTools,toolCacheControl),...convertTools(deferredTools,compat.supportsEagerToolInputStreaming,compat.supportsStrictTools,void 0,!0)]);if(midConvoEffort&&options?.thinkingEnabled!==!1)params.thinking={type:"adaptive",display:options?.thinkingDisplay??"summarized",block_binding:{prefix_mismatch_behavior:"drop_block"}},params.output_config={effort:"high"};else if(model.reasoning)if(options?.thinkingEnabled){let display=options.thinkingDisplay??"summarized";supportsAdaptiveThinking(model)?(params.thinking={type:"adaptive",display},options.effort&&(params.output_config={effort:options.effort})):params.thinking={type:"enabled",budget_tokens:options.thinkingBudgetTokens||1024,display}}else options?.thinkingEnabled===!1&&disableThinkingForRequest(params,model,compat);if(params.thinking?.type==="enabled"&&finalAssistantTurnIsForeign(context.messages)&&finalAssistantTurnStartsWithToolUse(params.messages)&&disableThinkingForRequest(params,model,compat),options?.metadata){let userId=options.metadata.user_id;typeof userId=="string"&&(params.metadata={user_id:userId})}return options?.toolChoice&&compat.supportsToolChoice&&(!(options.toolChoice==="any"||typeof options.toolChoice=="object")||compat.supportsForcedToolChoice)&&(typeof options.toolChoice=="string"?params.tool_choice={type:options.toolChoice}:params.tool_choice=options.toolChoice),applyExtraBodyToAnthropicParams(params,options?.extraBody),sendFallbacks&&options?.refusalFallbacks!==void 0&&(params.fallbacks=options.refusalFallbacks==="default"?"default":[...options.refusalFallbacks]),params}function applyExtraBodyToAnthropicParams(params,extraBody){if(extraBody)for(let[key,value]of Object.entries(extraBody))ANTHROPIC_RESERVED_BODY_KEYS.has(key)||Object.defineProperty(params,key,{value,writable:!0,enumerable:!0,configurable:!0})}function finalAssistantTurnIsForeign(messages){for(let index=messages.length-1;index>=0;index--){let message=messages[index];if(message.role==="assistant")return message.api!=="anthropic-messages"}return!1}function finalAssistantTurnStartsWithToolUse(messages){for(let index=messages.length-1;index>=0;index--){let message=messages[index];if(message.role!=="assistant")continue;if(!Array.isArray(message.content)||message.content.length===0)return!1;let first=message.content[0];return first.type==="thinking"||first.type==="redacted_thinking"?!1:message.content.some(block=>block.type==="tool_use")}return!1}function convertToolResult(msg,deferredToolNames,loadedToolNames){let references=[];for(let name of msg.addedToolNames??[])!deferredToolNames.has(name)||loadedToolNames.has(name)||(loadedToolNames.add(name),references.push({type:"tool_reference",tool_name:name}));let convertedContent=convertContentBlocks(msg.content);return{toolResult:{type:"tool_result",tool_use_id:msg.toolCallId,content:references.length>0?references:convertedContent,is_error:msg.isError},siblingContent:references.length===0?[]:typeof convertedContent=="string"?[{type:"text",text:convertedContent}]:convertedContent}}function convertMessages(transformedMessages,model,cacheControl,unsignedThinkingReplay="text",deferredToolNames=new Set,managedProvider,nativeToolChanges=!1,stablePrefixCheckpointLimit=0){let params=[],assistantLevels=new Map,loadedToolNames=new Set,stablePrefixCheckpoints=0,pendingSystemMessages=[],flushPendingSystemMessages=()=>{params.push(...pendingSystemMessages),pendingSystemMessages.length=0},discardedFallbackToolCallIds=collectDiscardedFallbackToolCallIds(transformedMessages,model),rejectsNativeWebSearchReplay=!getAnthropicCompat(model).supportsWebSearch,providerNativeToolPairing=collectProviderNativeToolPairing(transformedMessages,model,deferredToolNames,discardedFallbackToolCallIds);for(let i=0;i<transformedMessages.length;i++){let msg=transformedMessages[i];if(msg.role==="system"){let text=renderSystemMessageUpdate(msg),blocks=[];if(text.length>0&&blocks.push({type:"text",text:sanitizeSurrogates(text)}),nativeToolChanges){for(let tool of msg.toolsRemoved??[])blocks.push({type:"tool_removal",tool:{type:"tool_reference",name:tool.name}});for(let tool of msg.toolsAdded??[])blocks.push({type:"tool_addition",tool:{type:"tool_reference",name:tool.name}})}blocks.length>0&&pendingSystemMessages.push({role:"system",content:blocks})}else if(msg.role==="user")if(typeof msg.content=="string"){if(msg.content.trim().length>0){let content=sanitizeSurrogates(msg.content);params[params.length-1]?.role==="user"?appendUserBlocks(params,[{type:"text",text:content}]):params.push({role:"user",content})}}else{let filteredBlocks=msg.content.map(item=>item.type==="text"?{type:"text",text:sanitizeSurrogates(item.text)}:isVideoMimeType(item.mimeType)?{type:"video",source:{type:"base64",media_type:item.mimeType,data:item.data}}:{type:"image",source:{type:"base64",media_type:item.mimeType,data:item.data}}).filter(b=>b.type==="text"?b.text.trim().length>0:!0);if(filteredBlocks.length===0)continue;appendUserBlocks(params,filteredBlocks)}else if(msg.role==="assistant"){let blocks=[],isSameModel=isSameAnthropicModel(msg,model),fallbackBoundary=isSameModel?lastAnthropicFallbackBoundary(msg.content):-1,preBoundaryPairedServerToolUseIds=fallbackBoundary>=0?pairedServerToolUseIdsBeforeBoundary(msg.content,fallbackBoundary):new Set;for(let blockIndex=0;blockIndex<msg.content.length;blockIndex++){let block=msg.content[blockIndex];if(!(fallbackBoundary>=0&&blockIndex<fallbackBoundary&&(block.type==="thinking"||block.type==="toolCall"||block.type==="providerNative"&&isAnthropicServerToolUseBlock(block.raw)&&!preBoundaryPairedServerToolUseIds.has(block.raw.id))))if(block.type==="text"){if(block.text.trim().length===0)continue;blocks.push({type:"text",text:sanitizeSurrogates(block.text)})}else if(block.type==="thinking"){if(block.redacted){blocks.push({type:"redacted_thinking",data:block.thinkingSignature});continue}let thinkingSignature=block.thinkingSignature,hasThinkingSignature=!!thinkingSignature&&thinkingSignature.trim().length>0;if(block.thinking.trim().length===0&&!hasThinkingSignature)continue;hasThinkingSignature?blocks.push({type:"thinking",thinking:block.thinking,signature:thinkingSignature}):blocks.push(unsignedThinkingReplay==="empty-signature"?{type:"thinking",thinking:sanitizeSurrogates(block.thinking),signature:""}:{type:"text",text:sanitizeSurrogates(block.thinking)})}else block.type==="toolCall"?blocks.push({type:"tool_use",id:block.id,name:block.name,input:block.arguments??{}}):block.type==="providerNative"&&isSameModel&&isReplayableAnthropicProviderNativeBlock(block.raw)&&!(rejectsNativeWebSearchReplay&&isAnthropicWebSearchReplayBlock(block.raw))&&!isUnpairedProviderNativeToolBlock(block.raw,providerNativeToolPairing)&&blocks.push(block.raw)}if(blocks.length===0)continue;flushPendingSystemMessages();let messageIndex=params.length;params.push({role:"assistant",content:blocks}),cacheControl&&msg.promptCacheBreakpoint===!0&&stablePrefixCheckpoints<stablePrefixCheckpointLimit&&markAssistantMessageCacheCheckpoint(blocks,cacheControl)&&stablePrefixCheckpoints++,managedProvider!==void 0&&msg.api==="anthropic-messages"&&msg.provider===managedProvider&&isAnthropicEffort(msg.providerThinkingLevel)&&assistantLevels.set(messageIndex,msg.providerThinkingLevel)}else if(msg.role==="toolResult"){let toolResults=[],siblingContent=[],j=i;for(;j<transformedMessages.length&&transformedMessages[j].role==="toolResult";){let nextMsg=transformedMessages[j];if(!discardedFallbackToolCallIds.has(nextMsg.toolCallId)){let converted=convertToolResult(nextMsg,deferredToolNames,loadedToolNames);toolResults.push(converted.toolResult),siblingContent.push(...converted.siblingContent)}j++}if(i=j-1,toolResults.length===0)continue;appendUserBlocks(params,[...toolResults,...siblingContent])}}flushPendingSystemMessages();let lastParam=params[params.length-1];if(cacheControl&&lastParam?.role==="system")return markSystemMessageCacheCheckpoint(lastParam,cacheControl),{messages:params,assistantLevels};let retainPrecedingCheckpoint=stablePrefixCheckpoints===0&&isToolLoopContinuation(params);if(cacheControl&&params.length>0&&markUserMessageCacheCheckpoint(params[params.length-1],cacheControl)&&retainPrecedingCheckpoint)for(let index=params.length-2;index>=0&&!markUserMessageCacheCheckpoint(params[index],cacheControl);index--);return{messages:params,assistantLevels}}function isAnthropicEffort(value){return value==="low"||value==="medium"||value==="high"||value==="xhigh"||value==="max"}function insertThinkingLevelMessages(converted,activeEffort){let messages=[];for(let index=0;index<converted.messages.length;index++){let historicalEffort=converted.assistantLevels.get(index);historicalEffort!==void 0&&messages.push({role:"system",content:[],output_config:{effort:historicalEffort}}),messages.push(converted.messages[index])}return messages.push({role:"system",content:[],output_config:{effort:activeEffort}}),messages}function shouldUseFineGrainedToolStreamingBeta(model,context){return getCurrentTools(context.messages).length>0&&!getAnthropicCompat(model).supportsEagerToolInputStreaming}var ANTHROPIC_STRICT_UNSUPPORTED_KEYWORDS=new Set(["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","maxItems","uniqueItems","minContains","maxContains","minProperties","maxProperties"]),ANTHROPIC_STRICT_STRING_FORMATS=new Set(["date-time","time","date","duration","email","hostname","uri","ipv4","ipv6","uuid"]),isAnthropicStrictUnsupportedKeyword=(key,value)=>ANTHROPIC_STRICT_UNSUPPORTED_KEYWORDS.has(key)?!0:key==="minItems"?value!==0&&value!==1:key==="format"?typeof value!="string"||!ANTHROPIC_STRICT_STRING_FORMATS.has(value):!1;function convertTools(tools,supportsEagerToolInputStreaming,supportsStrictTools,cacheControl,deferLoading=!1){return tools?tools.map((tool,index)=>{let strict=resolveJsonSchemaStrictSampling(tool,supportsStrictTools,isAnthropicStrictUnsupportedKeyword),parameters=getJsonSchemaToolParameters(tool,strict),schema=resolveRootObjectSchema(parameters),legacyInputSchema={type:"object",properties:schema.properties??{},required:schema.required??[]},inputSchema=strict===!0?{...parameters,...legacyInputSchema}:legacyInputSchema;return{name:tool.name,description:tool.description,...supportsEagerToolInputStreaming?{eager_input_streaming:!0}:{},...strict===!0?{strict:!0}:{},input_schema:inputSchema,...deferLoading?{defer_loading:!0}:{},...cacheControl&&index===tools.length-1?{cache_control:cacheControl}:{}}}):[]}function mapStopReason(reason,stopDetails){let explanation=stopDetails?.explanation;switch(reason){case"end_turn":return{stopReason:"stop"};case"max_tokens":return{stopReason:"length"};case"tool_use":return{stopReason:"toolUse"};case"refusal":return{stopReason:"error",errorMessage:explanation||"The model refused to complete the request",stopDetails:explanation==null?{type:"refusal"}:{type:"refusal",explanation}};case"pause_turn":return{stopReason:"stop"};case"stop_sequence":return{stopReason:"stop"};case"sensitive":return{stopReason:"error",errorMessage:"Provider stopped with: sensitive",stopDetails:{type:"sensitive"}};default:throw new Error(`Unhandled stop reason: ${reason}`)}}export{ClaudeOAuthTokenRefusedError,buildAnthropicWarmPromptCacheParams,getAnthropicCompat,isClaudeOAuthTokenRefusedError,stream,streamSimple};
@@ -1,2 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url); { const __piWorkerThreads = require("node:worker_threads"); if (typeof __piWorkerThreads.markAsUncloneable !== "function") { __piWorkerThreads.markAsUncloneable = () => {}; } }
2
- import{peekProviderDiagnostic,siwcErrorForCode}from"./chunk-3SASTB6Y.js";var PROVIDER_DIAGNOSTIC_MAX_BYTES=512;function categoryForProviderCode(code){let siwc=siwcErrorForCode(code);if(siwc!==void 0)return siwc.category;switch(code){case"authentication_error":case"invalid_api_key":return"auth";case"rate_limit_error":case"rate_limit_exceeded":return"rate_limit";case"insufficient_quota":case"exceeded_current_quota_error":case"usage_limit_reached":case"usage_not_included":return"quota";case"context_length_exceeded":return"context_limit";case"invalid_request_error":return"invalid_request";case"overloaded_error":case"api_error":case"timeout_error":return"provider_unavailable";case"billing_error":case"permission_error":case"not_found_error":return"unknown";default:return}}function categoryForTransportCode(code){switch(code){case"ECONNRESET":case"ECONNREFUSED":case"ETIMEDOUT":case"ENOTFOUND":case"EAI_AGAIN":case"EPIPE":case"UND_ERR_SOCKET":case"UND_ERR_CONNECT_TIMEOUT":case"UND_ERR_HEADERS_TIMEOUT":case"UND_ERR_BODY_TIMEOUT":case"UND_ERR_CLOSED":case"APIConnectionError":case"APIConnectionTimeoutError":return"network";default:return}}function isProviderCodeStatusCompatible(code,status){let siwc=siwcErrorForCode(code);if(siwc!==void 0)return status===siwc.status;switch(code){case"authentication_error":case"invalid_api_key":return status===401;case"rate_limit_error":case"rate_limit_exceeded":case"insufficient_quota":case"exceeded_current_quota_error":case"usage_limit_reached":case"usage_not_included":return status===429;case"context_length_exceeded":case"invalid_request_error":return status===400;case"overloaded_error":case"api_error":case"timeout_error":return status>=500&&status<=599;case"billing_error":return status===402;case"permission_error":return status===403;case"not_found_error":return status===404;default:return!1}}var OPAQUE_PROVIDER_CODE=/^[a-z]+(?:[_.][a-z]+)*$/,OPAQUE_PROVIDER_CODE_MAX_LENGTH=64;function isOpaqueProviderCode(code){return code.length<=OPAQUE_PROVIDER_CODE_MAX_LENGTH&&OPAQUE_PROVIDER_CODE.test(code)&&categoryForProviderCode(code)===void 0}function isProviderDiagnosticResetsAt(value){return typeof value=="number"&&Number.isInteger(value)&&value>9466848e5&&value<41024448e5}function categoryForProviderStatus(status){return status===401?"auth":status===400?"invalid_request":status>=500&&status<=599?"provider_unavailable":"unknown"}function isProviderDiagnosticStatus(value){return typeof value=="number"&&Number.isInteger(value)&&value>=400&&value<=599}function isProviderDiagnosticCategory(value){switch(value){case"auth":case"rate_limit":case"quota":case"context_limit":case"invalid_request":case"provider_unavailable":case"network":case"unknown":return!0;default:return!1}}function buildProviderDiagnostic(input){let diagnostic={category:input.category,evidence:input.evidence};return input.httpStatus!==void 0&&(diagnostic.httpStatus=input.httpStatus),input.code!==void 0&&(diagnostic.code=input.code),input.route!==void 0&&(diagnostic.route=input.route),input.resetsAt!==void 0&&(input.category==="quota"||input.category==="rate_limit")&&(diagnostic.resetsAt=input.resetsAt),new TextEncoder().encode(JSON.stringify(diagnostic)).length<=PROVIDER_DIAGNOSTIC_MAX_BYTES?diagnostic:void 0}function classifyProviderFailure(facts){let statusSupplied=facts.status!==void 0&&facts.status!==null;if(statusSupplied&&!isProviderDiagnosticStatus(facts.status))return;let status=statusSupplied&&isProviderDiagnosticStatus(facts.status)?facts.status:void 0,category=facts.code===void 0?void 0:categoryForProviderCode(facts.code);if(facts.code!==void 0&&category!==void 0)return status!==void 0&&!isProviderCodeStatusCompatible(facts.code,status)?void 0:buildProviderDiagnostic({category,...status===void 0?{}:{httpStatus:status},code:facts.code,evidence:"structured_code"});if(status!==void 0)return buildProviderDiagnostic({category:categoryForProviderStatus(status),httpStatus:status,evidence:"structured_status"})}function readField(value,key){return Reflect.get(value,key)}function sanitizeProviderDiagnostic(value){try{if(typeof value!="object"||value===null||Array.isArray(value))return;let category=readField(value,"category"),evidence=readField(value,"evidence"),httpStatus=readField(value,"httpStatus"),code=readField(value,"code"),resetsAt=readField(value,"resetsAt"),route=readField(value,"route");if(route!==void 0&&route!=="siwc")return;let routed=route==="siwc"?{route}:{};if(!isProviderDiagnosticCategory(category)||httpStatus!==void 0&&!isProviderDiagnosticStatus(httpStatus)||resetsAt!==void 0&&!isProviderDiagnosticResetsAt(resetsAt))return;let reset=resetsAt===void 0?{}:{resetsAt};return evidence==="structured_status"?code!==void 0||!isProviderDiagnosticStatus(httpStatus)||category!==categoryForProviderStatus(httpStatus)?void 0:buildProviderDiagnostic({category,httpStatus,evidence,...reset,...routed}):evidence==="structured_transport"?httpStatus!==void 0||typeof code!="string"||categoryForTransportCode(code)!==category?void 0:buildProviderDiagnostic({category,code,evidence}):evidence!=="structured_code"||typeof code!="string"?void 0:isOpaqueProviderCode(code)?category!=="unknown"||httpStatus!==void 0?void 0:buildProviderDiagnostic({category,code,evidence}):categoryForProviderCode(code)!==category||httpStatus!==void 0&&!isProviderCodeStatusCompatible(code,httpStatus)?void 0:buildProviderDiagnostic({category,...httpStatus===void 0?{}:{httpStatus},code,evidence,...reset,...routed})}catch{return}}function readProviderDiagnostic(error){return sanitizeProviderDiagnostic(peekProviderDiagnostic(error))}export{PROVIDER_DIAGNOSTIC_MAX_BYTES,categoryForProviderCode,categoryForTransportCode,isOpaqueProviderCode,isProviderDiagnosticResetsAt,isProviderDiagnosticStatus,buildProviderDiagnostic,classifyProviderFailure,sanitizeProviderDiagnostic,readProviderDiagnostic};
@@ -1,3 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url); { const __piWorkerThreads = require("node:worker_threads"); if (typeof __piWorkerThreads.markAsUncloneable !== "function") { __piWorkerThreads.markAsUncloneable = () => {}; } }
2
- import{applyAccountOrder,emitProviderAccountsChanged,isAvailable,isSlotBlocked,slotsOfOwnKind,withoutOrderedAccount}from"./chunk-W5NLCRB3.js";import{activeModelBlockUntil,pruneModelBlocks}from"./chunk-6VWIMHMH.js";import{discoverEnvSlots}from"./chunk-7ORS33CE.js";import{signalSpawnedChild}from"./chunk-KLAX467B.js";import{CredentialSlotRepository,applicableStoredState}from"./chunk-SAZ6E74O.js";import{accountDisplayName,listSlots,normalizeProviderId,pinSlot,removeSlot,renameSlotDisplayName}from"./chunk-TBARMJ75.js";import{getAgentDir}from"./chunk-ISZ4EWIS.js";import{lstat as lstat2}from"node:fs/promises";import{dirname as dirname3,join as join4}from"node:path";function isEnvSlot(slot){return slot.store===void 0}var SENTINEL_OAUTH_FIELDS={access:"claude-sdk-oauth-managed",refresh:"claude-sdk-oauth-managed",expires:41024448e5};function emptyCredential(){return{type:"oauth",...SENTINEL_OAUTH_FIELDS,accounts:[]}}function storedSlots(credential){return credential.accounts??[]}function isListedStoredSlot(slot){return"store"in slot&&slot.store==="claude-cli"}function listAccounts(credential,env){let slots=storedSlots(credential).filter(isListedStoredSlot);if(env){let state=credential.slotState??{};for(let slot of envSlots(env)){let persisted=state[slot.name];slots.push(persisted?{...slot,...persisted}:slot)}}return slots}var ACCOUNT_NAME_PATTERN=/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/;function assertValidAccountName(name){if(!ACCOUNT_NAME_PATTERN.test(name))throw new Error(`Invalid account name '${name}': use letters, digits, '-' or '_', starting with a letter or digit`)}function pinAccount(credential,name){return{...credential,pinned:name}}function envSlots(env){let slots=[],read=suffix=>env(suffix===void 0?"CLAUDE_CODE_OAUTH_TOKEN":`CLAUDE_CODE_OAUTH_TOKEN_${suffix}`),names=[{slot:"env"}];for(let index=2;index<=16;index++)names.push({suffix:String(index),slot:`env-${index}`});for(let{suffix,slot}of names)read(suffix)&&slots.push({name:slot,refresh:"",access:"",expires:0,source:"env"});return slots}function envSlotToken(env,slotName){let match=/^env(?:-(\d+))?$/.exec(slotName);if(!match)return;let suffix=match[1];return env(suffix===void 0?"CLAUDE_CODE_OAUTH_TOKEN":`CLAUDE_CODE_OAUTH_TOKEN_${suffix}`)}import{createHash}from"node:crypto";var DEFAULT_AFFINITY_KEY="claude-sdk-oauth-default",AllAccountsBlockedError=class extends Error{constructor(soonestUnblockAt2,blockReason,limitedModel2,unavailableAccount){let until=soonestUnblockAt2===void 0?void 0:new Date(soonestUnblockAt2).toISOString();super(limitedModel2!==void 0&&until!==void 0?`All Anthropic Subscription accounts have hit the usage limit for model ${limitedModel2} until ${until}.`:until===void 0?"All Anthropic Subscription accounts are blocked until re-login.":`All Anthropic Subscription accounts are blocked until ${until}.`),this.limitedModel=limitedModel2,this.name="AllAccountsBlockedError",this.soonestUnblockAt=soonestUnblockAt2,this.blockReason=blockReason,this.unavailableAccount=unavailableAccount}};function getAffinityKey(options){return options.affinityKey??options.sessionId??DEFAULT_AFFINITY_KEY}function score(key,accountName){return createHash("sha256").update(`${key}\0${accountName}`).digest().readBigUInt64BE(0)}function rendezvousOrder(key,accounts){return[...accounts].map(account=>({account,score:score(key,account.name)})).sort((left,right)=>right.score>left.score?1:right.score<left.score?-1:0).map(({account})=>account)}function isAccountBlocked(account,now){return account.blockedUntil!==void 0&&account.blockedUntil>now}function isBlockedFor(account,now,model){return isAccountBlocked(account,now)||activeModelBlockUntil(account.modelBlocks,model,now)!==void 0}function clearExpiredBlocks(accounts,now=Date.now()){return accounts.map(account=>{let available=account;if(account.blockReason!==void 0&&(account.blockedUntil===void 0||account.blockedUntil<=now)){let{blockedUntil:_blockedUntil,blockReason:_blockReason,blockedAt:_blockedAt,...rest2}=account;available=rest2}if(available.modelBlocks===void 0)return available;let{modelBlocks,...rest}=available,live=pruneModelBlocks(modelBlocks,now);return live===void 0?rest:{...rest,modelBlocks:live}})}function selectUnblocked(accounts,options,now){let pinned=options.pinnedAccount===void 0?void 0:accounts.find(account=>account.name===options.pinnedAccount);if(pinned&&!isBlockedFor(pinned,now,options.model))return pinned;let preferred=options.preferredAccount===void 0?void 0:accounts.find(account=>account.name===options.preferredAccount);return preferred&&!isBlockedFor(preferred,now,options.model)?preferred:applyAccountOrder(options.accountOrder,rendezvousOrder(getAffinityKey(options),accounts)).find(account=>!isBlockedFor(account,now,options.model))}function unblockAt(account,now,model){let accountUntil=account.blockedUntil!==void 0&&account.blockedUntil>now?account.blockedUntil:void 0,modelUntil=activeModelBlockUntil(account.modelBlocks,model,now);return accountUntil===void 0?modelUntil:modelUntil===void 0?accountUntil:Math.max(accountUntil,modelUntil)}function soonestUnblockAt(accounts,now,model){let candidates=accounts.map(account=>unblockAt(account,now,model)).filter(value=>value!==void 0);return candidates.length===0?void 0:Math.min(...candidates)}function limitedModel(accounts,now,model){return accounts.some(account=>!isAccountBlocked(account,now)&&activeModelBlockUntil(account.modelBlocks,model,now)!==void 0)?model:void 0}function selectAccount(accounts,options={}){let now=options.now??Date.now(),candidates=accounts,unavailableAccount;if(options.accountFallback===!1){let name=options.pinnedAccount??options.preferredAccount??applyAccountOrder(options.accountOrder,rendezvousOrder(getAffinityKey(options),accounts))[0]?.name;candidates=accounts.filter(account=>account.name===name);let pinnedBy=options.pinnedAccount!==void 0?options.pinSource:void 0;name!==void 0&&(unavailableAccount={name,configured:candidates.length>0,...pinnedBy===void 0?{}:{pinnedBy}})}let selected=selectUnblocked(candidates,options,now);if(selected)return selected;let cleared=clearExpiredBlocks(candidates,now),afterClear=selectUnblocked(cleared,options,now);if(afterClear)return afterClear;throw new AllAccountsBlockedError(soonestUnblockAt(candidates,now,options.model),candidates.length>0&&candidates.every(account=>account.blockReason==="auth_error")?"auth_error":void 0,limitedModel(candidates,now,options.model),unavailableAccount)}import{randomBytes}from"node:crypto";import{chmodSync,lstatSync,mkdirSync,readlinkSync,symlinkSync,unlinkSync}from"node:fs";import{lstat,mkdir,rm,unlink}from"node:fs/promises";import{homedir}from"node:os";import{join,resolve}from"node:path";import{spawn}from"node:child_process";function isClaudeOauthTokenName(name){return name==="CLAUDE_CODE_OAUTH_TOKEN"||/^CLAUDE_CODE_OAUTH_TOKEN_\d+$/.test(name)}function hasRequestOauthToken(requestEnvironment){return Object.entries(requestEnvironment??{}).some(([name,value])=>isClaudeOauthTokenName(name)&&!!value)}function mergeRequestAuthEnvironment(hostEnvironment,requestEnvironment){let environment={...hostEnvironment},requestTokens=Object.entries(requestEnvironment??{}).filter(([name])=>isClaudeOauthTokenName(name));if(requestTokens.length===0)return environment;for(let name of Object.keys(environment))isClaudeOauthTokenName(name)&&delete environment[name];for(let[name,value]of requestTokens)environment[name]=value;return environment}function stripManagedAuthEnvironment(parent){let{ANTHROPIC_API_KEY:_apiKey,ANTHROPIC_AUTH_TOKEN:_authToken,ANTHROPIC_BASE_URL:_gateway,ANTHROPIC_CUSTOM_HEADERS:_customHeaders,CLAUDE_CODE_OAUTH_TOKEN:_oauthToken,CLAUDE_CODE_USE_BEDROCK:_bedrock,CLAUDE_CODE_USE_FOUNDRY:_foundry,CLAUDE_CODE_USE_GATEWAY:_gatewayMode,CLAUDE_CODE_USE_VERTEX:_vertex,...environment}=parent;for(let name of Object.keys(environment))/^CLAUDE_CODE_OAUTH_TOKEN_\d+$/.test(name)&&delete environment[name],name.startsWith("SENPI_")&&delete environment[name];return environment}var HOST_REDIRECT_NAMES=["CLAUDE_SECURESTORAGE_CONFIG_DIR","CLAUDE_CONFIG_DIR","BROWSER"],INHERITED_CREDENTIAL_DESCRIPTORS=["CLAUDE_CODE_OAUTH_TOKEN_FILE_DESCRIPTOR","CLAUDE_CODE_API_KEY_FILE_DESCRIPTOR"];function buildClaudeCliEnvironment(parent,options){let environment=stripManagedAuthEnvironment(parent);for(let name of[...HOST_REDIRECT_NAMES,...INHERITED_CREDENTIAL_DESCRIPTORS])delete environment[name];return environment.CLAUDE_CONFIG_DIR=options.configDir,environment.NO_COLOR="1",options.browser!==void 0&&(environment.BROWSER=options.browser),environment}function spawnClaudeCli(run,args,browser){return spawn(run.executable,[...args],{cwd:run.configDir,env:buildClaudeCliEnvironment(run.parentEnv??process.env,{configDir:run.configDir,...browser===void 0?{}:{browser}}),stdio:["pipe","pipe","pipe"],windowsHide:!0})}function stopClaudeCli(child,graceMs){if(child.exitCode!==null||child.signalCode!==null)return;signalSpawnedChild(child,"SIGTERM");let escalate=setTimeout(()=>signalSpawnedChild(child,"SIGKILL"),graceMs);escalate.unref?.(),child.once("close",()=>clearTimeout(escalate))}var DEFAULT_SHORT_COMMAND_TIMEOUT_MS=1e4;function runClaudeCliToExit(run,args,timeoutMs=DEFAULT_SHORT_COMMAND_TIMEOUT_MS,signal){return signal?.aborted?Promise.resolve(void 0):new Promise(resolve2=>{let child=spawnClaudeCli(run,args);child.stdin?.end();let stdout="";child.stdout?.setEncoding("utf8"),child.stdout?.on("data",chunk=>{stdout+=chunk}),child.stderr?.resume();let deadline=setTimeout(()=>{signalSpawnedChild(child,"SIGKILL"),resolve2(void 0)},timeoutMs);deadline.unref?.();let onAbort=()=>{clearTimeout(deadline),signalSpawnedChild(child,"SIGKILL"),resolve2(void 0)};signal?.addEventListener("abort",onAbort,{once:!0}),child.once("error",()=>{clearTimeout(deadline),signal?.removeEventListener("abort",onAbort),resolve2(void 0)}),child.once("close",exitCode=>{clearTimeout(deadline),signal?.removeEventListener("abort",onAbort),resolve2({exitCode,stdout})})})}function stringField(record,name){let value=record[name];return typeof value=="string"&&value.length>0?value:void 0}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function parseClaudeCliAuthStatus(stdout,exitCode){let parsed;try{parsed=JSON.parse(stdout)}catch{return{state:"unreadable"}}if(!isRecord(parsed)||typeof parsed.loggedIn!="boolean")return{state:"unreadable"};if(!parsed.loggedIn)return exitCode===0?{state:"unreadable"}:{state:"signed_out"};if(exitCode!==0)return{state:"unreadable"};if(parsed.authMethod!=="claude.ai")return{state:"rejected",reason:"auth_method"};if(parsed.apiProvider!=="firstParty")return{state:"rejected",reason:"api_provider"};let email=stringField(parsed,"email"),orgName=stringField(parsed,"orgName"),subscriptionType=stringField(parsed,"subscriptionType");return{state:"signed_in",profile:{...email===void 0?{}:{email},...orgName===void 0?{}:{orgName},...subscriptionType===void 0?{}:{subscriptionType}}}}async function readClaudeCliAuthStatus(run,timeoutMs){let exit=await runClaudeCliToExit(run,["auth","status","--json"],timeoutMs);return exit===void 0?{state:"unreadable"}:parseClaudeCliAuthStatus(exit.stdout,exit.exitCode)}async function logoutClaudeCli(run,timeoutMs,signal){return(await runClaudeCliToExit(run,["auth","logout"],timeoutMs,signal))?.exitCode===0}var CLAUDE_CLI_SHARED_LINKS=["projects","settings.json","CLAUDE.md","agents","commands","skills","output-styles"],SHARED_FILES=new Set(["settings.json","CLAUDE.md"]),DIR_ID_PATTERN=/^[0-9a-f]{32}$/;function newAccountDirId(){return randomBytes(16).toString("hex")}function isValidAccountDirId(dirId){return DIR_ID_PATTERN.test(dirId)}function accountDirFor(agentDir,dirId){if(!isValidAccountDirId(dirId))throw new Error("Invalid Claude account dir id");return join(agentDir,"anthropic-subscription-claude",dirId)}function claudeCliSharedRoot(env){let inherited=env.CLAUDE_CONFIG_DIR;return inherited?resolve(inherited):join(homedir(),".claude")}function isLink(path){try{return lstatSync(path).isSymbolicLink()}catch{return!1}}function exists(path){try{return lstatSync(path),!0}catch{return!1}}async function lstatOrUndefined(path){try{return await lstat(path)}catch(error){if(error.code==="ENOENT")return;throw error}}function linkEntry(entry,target,path){if(!SHARED_FILES.has(entry)){mkdirSync(target,{recursive:!0}),symlinkSync(target,path,process.platform==="win32"?"junction":"dir");return}if(exists(target))try{symlinkSync(target,path,"file")}catch(error){if(process.platform!=="win32")throw error}}function ensureAccountDir(options){let accountDir=accountDirFor(options.agentDir,options.dirId);mkdirSync(accountDir,{recursive:!0,mode:448}),process.platform!=="win32"&&chmodSync(accountDir,448);for(let entry of CLAUDE_CLI_SHARED_LINKS){let path=join(accountDir,entry),target=join(options.sharedRoot,entry);if(isLink(path)){if(resolve(accountDir,readlinkSync(path))===resolve(target))continue;unlinkSync(path)}else if(exists(path))continue;linkEntry(entry,target,path)}return accountDir}async function removeAccountDir(options){let accountDir=accountDirFor(options.agentDir,options.dirId);if(options.signal?.throwIfAborted(),await lstatOrUndefined(accountDir)===void 0&&await mkdir(accountDir,{recursive:!0,mode:448}),!(await lstatOrUndefined(accountDir))?.isDirectory())return"not_an_account_dir";let signedOut=options.executable!==void 0&&await logoutClaudeCli({executable:options.executable,configDir:accountDir,...options.parentEnv===void 0?{}:{parentEnv:options.parentEnv}},void 0,options.signal).catch(()=>!1);options.signal?.throwIfAborted();for(let entry of CLAUDE_CLI_SHARED_LINKS){let path=join(accountDir,entry);(await lstatOrUndefined(path))?.isSymbolicLink()&&await unlink(path)}return await rm(accountDir,{recursive:!0,force:!0}),signedOut?"removed":"removed_without_sign_out"}import{readFileSync as readFileSync3,statSync}from"node:fs";import{createRequire}from"node:module";import{dirname as dirname2,posix as posix2,win32 as win322}from"node:path";import{createHash as createHash2}from"crypto";import{chmodSync as chmodSync2,existsSync,lstatSync as lstatSync2,mkdirSync as mkdirSync2,readFileSync,renameSync,unlinkSync as unlinkSync2,writeFileSync}from"fs";import{tmpdir as osTmpdir}from"os";import{basename,join as join2}from"path";function tmpdir(){return process.env.CLAUDE_CODE_TMPDIR?process.env.CLAUDE_CODE_TMPDIR:process.platform==="darwin"?"/tmp":osTmpdir()}function safeTempBase(){let dir=join2(tmpdir(),process.platform==="win32"?"claude":`claude-${process.getuid?.()??0}`);if(typeof process.getuid=="function"){mkdirSync2(dir,{recursive:!0,mode:448});let uid=process.getuid(),st=lstatSync2(dir);if(!st.isDirectory())throw new Error(`Temp directory ${dir} is not a directory (may be an attacker-planted symlink). Refusing to use it.`);if(st.uid!==uid)throw new Error(`Temp directory ${dir} is owned by uid ${st.uid}, expected ${uid}. Refusing to use it \u2014 another user may have pre-created it.`);(st.mode&511)!==448&&chmodSync2(dir,448)}else try{mkdirSync2(dir,{recursive:!0,mode:448})}catch{}return dir}function extractFromBunfs(embeddedPath){if(!embeddedPath.includes("$bunfs")&&!embeddedPath.includes("~BUN"))return embeddedPath;try{let content=readFileSync(embeddedPath),hash=createHash2("sha256").update(content).digest("hex").slice(0,16),tmpDir=join2(safeTempBase(),`claude-agent-sdk-${hash}`),fileName=basename(embeddedPath),tmpPath=join2(tmpDir,fileName);if(mkdirSync2(tmpDir,{recursive:!0,mode:448}),existsSync(tmpPath))return tmpPath;let tmpFile=join2(tmpDir,`${fileName}.tmp.${process.pid}`);writeFileSync(tmpFile,content),chmodSync2(tmpFile,493);try{renameSync(tmpFile,tmpPath)}catch(e){if((e.code==="EPERM"||e.code==="EBUSY")&&existsSync(tmpPath)){try{unlinkSync2(tmpFile)}catch{}return tmpPath}throw e}return tmpPath}catch(err){return console.warn(`[claude-agent-sdk] Failed to extract CLI from $bunfs: ${err.message}. Child processes cannot access $bunfs paths \u2014 the CLI will likely fail to start.`),embeddedPath}}import{posix,win32}from"node:path";var WIN32_BATCH_EXTENSIONS=new Set([".bat",".cmd"]),CMD_SHIM_NATIVE_TARGET=/"%~?dp0%?\\([^"%]+?\.exe)"/i;function nativeTargetOfBatchFile(batchPath,deps){let text=deps.readText?.(batchPath),match=text===void 0?null:CMD_SHIM_NATIVE_TARGET.exec(text);if(!match?.[1])return;let target=win32.join(win32.dirname(batchPath),match[1]);return deps.isFile(target)?target:void 0}var WIN32_DEFAULT_PATHEXT=".COM;.EXE;.BAT;.CMD";function namesToProbe(name,platform,pathext){return platform!=="win32"?[name]:(pathext??WIN32_DEFAULT_PATHEXT).split(";").filter(extension=>extension.length>0).map(extension=>extension.toLowerCase()).map(extension=>`${name}${extension}`)}function pathDirectories(platform,path){if(path===void 0)return[];let delimiter=platform==="win32"?";":":";return path.split(delimiter).map(entry=>platform==="win32"?entry.replace(/^"(.*)"$/,"$1"):entry).filter(entry=>entry.length>0)}function findExecutableOnPath(name,deps){let join5=deps.platform==="win32"?win32.join:posix.join,names=namesToProbe(name,deps.platform,deps.env("PATHEXT"));for(let directory of pathDirectories(deps.platform,deps.env("PATH")))for(let candidate of names){let path=join5(directory,candidate);if(!deps.isFile(path))continue;if(deps.platform!=="win32"||!WIN32_BATCH_EXTENSIONS.has(win32.extname(path).toLowerCase()))return path;let target=nativeTargetOfBatchFile(path,deps);if(target!==void 0)return target;deps.onSkip?.(path)}}import{execFileSync}from"node:child_process";import{readFileSync as readFileSync2}from"node:fs";import{dirname,join as join3}from"node:path";import{fileURLToPath}from"node:url";var VERSION_PATTERN=/(\d+)\.(\d+)\.(\d+)/,VERSION_PROBE_TIMEOUT_MS=5e3;function parseClaudeCodeVersion(text){let match=text===void 0?null:VERSION_PATTERN.exec(text);if(match)return[Number(match[1]),Number(match[2]),Number(match[3])]}function isNewerClaudeCodeVersion(candidate,baseline){let left=parseClaudeCodeVersion(candidate),right=parseClaudeCodeVersion(baseline);if(left===void 0||right===void 0)return!1;for(let index=0;index<3;index++)if(left[index]!==right[index])return left[index]>right[index];return!1}var probedVersions=new Map;function probeClaudeCodeVersion(executable){if(probedVersions.has(executable))return probedVersions.get(executable);let version;try{let output=execFileSync(executable,["--version"],{encoding:"utf8",timeout:VERSION_PROBE_TIMEOUT_MS,windowsHide:!0,stdio:["ignore","pipe","ignore"]});version=VERSION_PATTERN.exec(output)?.[0]}catch{version=void 0}return probedVersions.set(executable,version),version}function bundledClaudeCodeVersion(){try{let entry=fileURLToPath(import.meta.resolve("@anthropic-ai/claude-agent-sdk")),manifest=JSON.parse(readFileSync2(join3(dirname(entry),"package.json"),"utf8"));return typeof manifest!="object"||manifest===null||!("claudeCodeVersion"in manifest)?void 0:typeof manifest.claudeCodeVersion=="string"?manifest.claudeCodeVersion:void 0}catch{return}}function claudeCodeExecutableCandidates(platform,arch,preferMusl=!1){let ext=platform==="win32"?".exe":"";if(platform==="linux"){let glibc=`@anthropic-ai/claude-agent-sdk-linux-${arch}/claude${ext}`,musl=`@anthropic-ai/claude-agent-sdk-linux-${arch}-musl/claude${ext}`;return preferMusl?[musl,glibc]:[glibc,musl]}return[`@anthropic-ai/claude-agent-sdk-${platform}-${arch}/claude${ext}`]}function spawnableSpelling(platform,candidate){return platform==="win32"?win322.toNamespacedPath(win322.resolve(candidate)):posix2.resolve(candidate)}function describeClaudeCodeExecutable(deps){let tried=[],accept=candidate=>{let spelled=spawnableSpelling(deps.platform,candidate);return tried.push(spelled),deps.isFile(spelled)?spelled:void 0},done=(executable,source)=>({executable,source,tried}),override=deps.env("CLAUDE_CODE_EXECUTABLE");if(override){let accepted=accept(override);if(accepted!==void 0)return done(accepted,"override")}let candidates=claudeCodeExecutableCandidates(deps.platform,deps.arch,deps.platform==="linux"&&deps.isMusl?.()===!0),bundled=acceptBundled(deps,candidates,accept,tried);if(bundled!==void 0){let newer=newerClaudeOnPath(deps,bundled);return newer===void 0?done(bundled,"bundled"):(tried.push(newer),done(newer,"path"))}let onPath=findExecutableOnPath("claude",{...deps,onSkip:batchFile=>tried.push(`${batchFile} (batch file wrapping no native binary)`)});if(onPath!==void 0){let accepted=accept(onPath);if(accepted!==void 0)return done(accepted,"path")}else tried.push(deps.env("PATH")?"claude on PATH":"claude on PATH (PATH is unset)");return{executable:void 0,source:void 0,tried}}function acceptBundled(deps,candidates,accept,tried){if(deps.isCompiledBun?.()&&deps.extractFromBunfs)for(let candidate of candidates){let extracted;try{extracted=deps.extractFromBunfs(deps.resolve(candidate))}catch{continue}let accepted=accept(extracted);if(accepted!==void 0)return accepted}for(let candidate of candidates){let resolved;try{resolved=deps.resolve(candidate)}catch{tried.push(candidate);continue}let accepted=accept(resolved);if(accepted!==void 0)return accepted}let executableDir=deps.isCompiledBun?.()?deps.executableDir?.():void 0;if(executableDir!==void 0){let path=deps.platform==="win32"?win322:posix2;for(let candidate of candidates){let accepted=accept(path.join(executableDir,"node_modules",...candidate.split("/")));if(accepted!==void 0)return accepted}}}function newerClaudeOnPath(deps,bundled){let versionOf=deps.versionOf;if(versionOf===void 0)return;let onPath=findExecutableOnPath("claude",deps);if(onPath===void 0)return;let spelled=spawnableSpelling(deps.platform,onPath);if(spelled===bundled||!deps.isFile(spelled))return;let pathVersion=versionOf(spelled);if(pathVersion===void 0)return;let bundledVersion=deps.bundledVersion?.()??versionOf(bundled);return isNewerClaudeCodeVersion(pathVersion,bundledVersion)?spelled:void 0}function resolveClaudeCodeExecutable(deps){return resolveClaudeCodeRun(deps).executable}function resolveClaudeCodeRun(deps){let resolution=describeClaudeCodeExecutable(deps);if(resolution.executable!==void 0&&resolution.source!==void 0)return{executable:resolution.executable,source:resolution.source};throw new Error([`Claude Code executable not found for ${deps.platform}-${deps.arch}. Tried:`,...resolution.tried.map(candidate=>` - ${candidate}`),"Reinstall @anthropic-ai/claude-agent-sdk without --omit=optional, install Claude Code so `claude` is on PATH, or set CLAUDE_CODE_EXECUTABLE to the binary."].join(`
3
- `))}var defaultRequire=null,isCompiledBunBinary=import.meta.url.includes("$bunfs")||import.meta.url.includes("~BUN")||import.meta.url.includes("%7EBUN");function isMuslLinuxRuntime(){if(process.platform!=="linux"||typeof process.report?.getReport!="function")return!1;let report=process.report.getReport();return report===null||!("header"in report)||typeof report.header!="object"||report.header===null?!1:!("glibcVersionRuntime"in report.header)||report.header.glibcVersionRuntime===void 0}function readBatchFileText(path){try{return readFileSync3(path,"utf8")}catch{return}}function isRegularFile(path){try{return statSync(path).isFile()}catch{return!1}}var defaultDeps={platform:process.platform,arch:process.arch,env:name=>process.env[name],isFile:isRegularFile,readText:readBatchFileText,isMusl:isMuslLinuxRuntime,isCompiledBun:()=>isCompiledBunBinary,extractFromBunfs,bundledVersion:bundledClaudeCodeVersion,versionOf:probeClaudeCodeVersion,executableDir:()=>dirname2(process.execPath),resolve:spec=>(defaultRequire||(defaultRequire=createRequire(import.meta.resolve("@anthropic-ai/claude-agent-sdk"))),defaultRequire.resolve(spec))},activeDeps=defaultDeps;function defaultExecutableDeps(){return activeDeps}function objectField(value,key){let found=Object.entries(value).find(([candidate])=>candidate===key)?.[1];return typeof found=="object"&&found!==null&&!Array.isArray(found)?found:void 0}function storedCheck(slot){let check=objectField(slot,"check");if(check===void 0)return;let model=stringField2(check,"model"),outcome=stringField2(check,"outcome"),at=numberField(check,"at");if(model===void 0||at===void 0||outcome!=="ok"&&outcome!=="failed")return;let reason=stringField2(check,"reason");return{model,outcome,...reason===void 0?{}:{reason},at}}function claudeCliSlotFields(slot){if(stringField2(slot,"store")!=="claude-cli")return{};let profile=objectField(slot,"profile")??{},signedInAt=numberField(slot,"signedInAt"),email=stringField2(profile,"email"),orgName=stringField2(profile,"orgName"),subscriptionType=stringField2(profile,"subscriptionType"),check=storedCheck(slot);return{store:"claude-cli",...signedInAt===void 0?{}:{signedInAt},...email===void 0?{}:{email},...orgName===void 0?{}:{orgName},...subscriptionType===void 0?{}:{subscriptionType},...check===void 0?{}:{check},signIn:stringField2(slot,"signInRequired")===void 0?"signed_in":"needs_sign_in"}}var ACCOUNT_NAME_PATTERN2=/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/;function assertValidAccountName2(name){if(!ACCOUNT_NAME_PATTERN2.test(name))throw new Error(`Invalid account name '${name}': use letters, digits, '-' or '_', starting with a letter or digit`)}function pooledFrom(credential){return credential===void 0?void 0:credential}function pinnedName(credential){return credential?.pinned}function numberField(value,key){let found=Object.entries(value).find(([candidate])=>candidate===key)?.[1];return typeof found=="number"?found:void 0}function credentialPoolRepository(storage){let authPath=storage.getStoragePath();return new CredentialSlotRepository(authPath?join4(dirname3(authPath),"credential-pool-state.json"):void 0)}function stringField2(value,key){let found=Object.entries(value).find(([candidate])=>candidate===key)?.[1];return typeof found=="string"?found:void 0}var UNBLOCKED={blocked:!1};function accountBlockedReason(reason){switch(reason){case"auth_error":case"rate_limit":return reason;case"account_disabled":return"disabled";default:return}}function liveBlock(reason,blockedUntil,now){let blockedReason=accountBlockedReason(reason);return blockedReason==="disabled"?{blocked:!0,blockedReason}:blockedUntil===void 0||blockedUntil<=now?UNBLOCKED:{blocked:!0,...blockedReason===void 0?{}:{blockedReason},blockedUntil}}function sidecarBlock(sidecar,now){return sidecar===void 0||isAvailable(sidecar,now)?UNBLOCKED:liveBlock(sidecar?.blockReason,sidecar?.blockedUntil,now)}function storedSlotBlock(provider,slot,now){let blockReason=stringField2(slot,"blockReason"),blockedUntil=numberField(slot,"blockedUntil"),blockedReason=accountBlockedReason(blockReason);return blockedReason==="disabled"?{blocked:!0,blockedReason}:(normalizeProviderId(provider)==="anthropic-subscription"?isAccountBlocked({blockedUntil},now):isSlotBlocked({blockReason,blockedUntil},now))?{blocked:!0,...blockedReason===void 0?{}:{blockedReason},...blockedUntil===void 0||blockedUntil<=now?{}:{blockedUntil}}:UNBLOCKED}function slotBlocked(provider,slot,sidecar,now){let fromSidecar=sidecarBlock(sidecar,now),lane=normalizeProviderId(provider);if(lane!=="cursor-cli-oauth"&&lane!=="anthropic-subscription")return fromSidecar;let fromSlot=storedSlotBlock(provider,slot,now);if(fromSlot.blockedReason==="disabled")return fromSlot;if(fromSidecar.blockedReason==="disabled"||!fromSlot.blocked)return fromSidecar;if(!fromSidecar.blocked||fromSlot.blockedUntil===void 0)return fromSlot;let later=(fromSlot.blockedUntil??0)>(fromSidecar.blockedUntil??0)?fromSlot:fromSidecar;return[fromSidecar,fromSlot].some(block=>block.blockedReason==="auth_error")?{...later,blockedReason:"auth_error"}:later}function storedModelBlocks(slot){let found=Object.entries(slot).find(([candidate])=>candidate==="modelBlocks")?.[1];if(found===null||typeof found!="object")return;let entries=Object.entries(found).flatMap(([model,block])=>{let until=block!==null&&typeof block=="object"?numberField(block,"blockedUntil"):void 0;return until===void 0?[]:[[model,{blockedUntil:until}]]});return entries.length===0?void 0:Object.fromEntries(entries)}function blockedModels(now,...sources){let until=new Map;for(let blocks of sources)for(let[model,block]of Object.entries(pruneModelBlocks(blocks,now)??{}))until.set(model,Math.max(until.get(model)??0,block.blockedUntil));return until.size===0?{}:{blockedModels:[...until].map(([model,at])=>({model,until:at}))}}async function getCredentialAccounts(storage,provider,env=process.env,repository){return summarizeCredentialAccounts(provider,storage.get(provider),env,repository??credentialPoolRepository(storage))}async function summarizeCredentialAccounts(provider,stored,env=process.env,repository=new CredentialSlotRepository){let credential=pooledFrom(stored);return applyAccountOrder(credential?.order,await summarizeInStoredOrder(provider,credential,env,repository))}async function summarizeInStoredOrder(provider,credential,env,repository){let now=Date.now(),pinned=pinnedName(credential),summaries=[];if(credential){let state2=await repository.listSlots(provider,"stored"),isClaudeSubscription=normalizeProviderId(provider)==="anthropic-subscription",storedAccounts=isClaudeSubscription?Array.isArray(credential.accounts)?listSlots(credential).filter(isListedStoredSlot):[]:listSlots(credential),usable=new Set(slotsOfOwnKind(credential).map(slot=>slot.name));for(let slot of storedAccounts){let displayName=accountDisplayName(slot.displayName),persisted=state2[slot.name],revisions=await repository.storedSlotRevisions(provider,slot.name,{key:slot.key,access:slot.access,refresh:slot.refresh}),applicable=applicableStoredState(persisted,revisions);summaries.push({name:slot.name,...displayName===void 0?{}:{displayName},source:slot.source??"login",...slotBlocked(provider,slot,applicable,now),pinned:pinned===slot.name,...blockedModels(now,applicable?.modelBlocks,storedModelBlocks(slot)),...usable.has(slot.name)?{}:{unused:!0},...isClaudeSubscription?claudeCliSlotFields(slot):{}})}if(normalizeProviderId(provider)!=="anthropic-subscription")return summaries}let state=await repository.listSlots(provider,"env");for(let slot of discoverEnvSlots(provider,name=>env[name])){let persisted=state[slot.name],revision=await repository.envCredentialRevision(slot.envVarName,slot.key),applicable=persisted?.credentialRevision===revision?persisted:void 0;summaries.push({name:slot.name,source:"env",...sidecarBlock(applicable,now),pinned:pinned===slot.name,...blockedModels(now,applicable?.modelBlocks)})}return summaries}async function renameCredentialAccount(storage,provider,name,displayName){await storage.modify(provider,async current=>{if(!current)throw new Error(`No stored credential for provider: ${provider}`);if(current.type==="oauth"&&!Array.isArray(current.accounts)&&current.access===current.refresh&&current.access.endsWith("-managed"))throw new Error(`Stored provider account not found: ${name}`);return renameSlotDisplayName(current,name,displayName)}),emitProviderAccountsChanged(provider)}async function pinCredentialAccount(storage,provider,name,env=process.env,repository){let repo=repository??credentialPoolRepository(storage);if(name!==null){assertValidAccountName2(name);let account=(await getCredentialAccounts(storage,provider,env,repo)).find(candidate=>candidate.name===name);if(!account)throw new Error(`Provider account not found: ${name}`);if(account.unused)throw new Error(`Account ${name} holds a login of the other kind and is never used, so it cannot be pinned. To switch ${provider} to it, save it again with /login.`)}await storage.modify(provider,async current=>{if(current===void 0){if(normalizeProviderId(provider)!=="anthropic-subscription"||name===null)throw new Error(`No stored credential for provider: ${provider}`);return pinSlot({type:"oauth",...SENTINEL_OAUTH_FIELDS,accounts:[]},name)}if(name===null){if(pinnedName(current)===void 0)return current;let{pinned:_pinned,...unpinned}={...current,pinned:void 0};return unpinned}return pinSlot(current,name)}),emitProviderAccountsChanged(provider)}async function removeCredentialAccount(storage,provider,name,env=process.env,repository){let repo=repository??credentialPoolRepository(storage),account=(await getCredentialAccounts(storage,provider,env,repo)).find(candidate=>candidate.name===name);if(!account)throw new Error(`Provider account not found: ${name}`);if(account.source==="env")throw new Error(`Environment provider account cannot be removed: ${name}`);let notice=await signOutAndDropSlot(storage,provider,name,env,repo);return emitProviderAccountsChanged(provider),notice===void 0?{}:{notice}}async function dropStoredSlot(storage,provider,name,repo){let removed=removeSlot(await storage.read(provider),name),remaining=removed===void 0?void 0:withoutOrderedAccount(removed,name);remaining===void 0?await storage.delete(provider):await storage.modify(provider,async()=>remaining),await repo.mutateSlotState(provider,"stored",name,()=>{})}async function pathExists(path){try{return await lstat2(path),!0}catch{return!1}}async function signOutAndDropSlot(storage,provider,name,env,repo,signal){let credential=await storage.read(provider);if(credential===void 0)throw new Error(`No stored credential for provider: ${provider}`);let notice;if(normalizeProviderId(provider)==="anthropic-subscription"){let accountDir=claudeCliAccountDir(storage,credential,name),dirExisted=accountDir!==void 0&&await pathExists(accountDir);try{notice=await signOutClaudeCliSlot(storage,credential,name,env,signal)}catch(error){throw dirExisted&&!await pathExists(accountDir)&&await dropStoredSlot(storage,provider,name,repo),error}}return await dropStoredSlot(storage,provider,name,repo),notice}async function signOutClaudeCliSlotsForLogout(storage,provider,env=process.env,signal){if(normalizeProviderId(provider)!=="anthropic-subscription")return[];let credential=await storage.read(provider);if(credential===void 0)return[];let repo=credentialPoolRepository(storage),notices=[],dropped=!1;try{for(let slot of listSlots(credential)){if(stringField2(slot,"store")!=="claude-cli")continue;signal?.throwIfAborted();let notice=await signOutAndDropSlot(storage,provider,slot.name,env,repo,signal);dropped=!0,notice!==void 0&&notices.push(notice)}}finally{dropped&&emitProviderAccountsChanged(provider)}return notices}function claudeCliAgentDir(storage){let authPath=storage.getStoragePath();return authPath?dirname3(authPath):getAgentDir()}function claudeCliAccountDir(storage,credential,name){let slot=listSlots(credential).find(candidate=>candidate.name===name);if(slot===void 0||stringField2(slot,"store")!=="claude-cli")return;let dirId=stringField2(slot,"dirId");return dirId!==void 0&&isValidAccountDirId(dirId)?accountDirFor(claudeCliAgentDir(storage),dirId):void 0}async function signOutClaudeCliSlot(storage,credential,name,env,signal){let slot=listSlots(credential).find(candidate=>candidate.name===name);if(slot===void 0||stringField2(slot,"store")!=="claude-cli")return;let dirId=stringField2(slot,"dirId"),agentDir=claudeCliAgentDir(storage);if(dirId===void 0||!isValidAccountDirId(dirId))return`Removed Claude account ${name} without a Claude sign-out: it names no valid account dir.`;let executable;try{executable=resolveClaudeCodeExecutable({...defaultExecutableDeps(),env:key=>env[key]})}catch{executable=void 0}let outcome=await removeAccountDir({agentDir,dirId,executable,parentEnv:env,...signal===void 0?{}:{signal}});if(outcome!=="removed")return outcome==="removed_without_sign_out"?`Removed Claude account ${name}, but the Claude CLI sign-out could not run; its stored sign-in may remain in the Claude CLI's credential store.`:`Removed Claude account ${name} without a Claude sign-out: its account dir is a link or a file, left untouched at ${accountDirFor(agentDir,dirId)}.`}export{isEnvSlot,SENTINEL_OAUTH_FIELDS,emptyCredential,isListedStoredSlot,listAccounts,assertValidAccountName,pinAccount,envSlotToken,hasRequestOauthToken,mergeRequestAuthEnvironment,stripManagedAuthEnvironment,buildClaudeCliEnvironment,spawnClaudeCli,stopClaudeCli,readClaudeCliAuthStatus,logoutClaudeCli,CLAUDE_CLI_SHARED_LINKS,newAccountDirId,accountDirFor,claudeCliSharedRoot,ensureAccountDir,removeAccountDir,AllAccountsBlockedError,isBlockedFor,clearExpiredBlocks,selectAccount,resolveClaudeCodeExecutable,resolveClaudeCodeRun,defaultExecutableDeps,assertValidAccountName2,credentialPoolRepository,getCredentialAccounts,summarizeCredentialAccounts,renameCredentialAccount,pinCredentialAccount,removeCredentialAccount,signOutClaudeCliSlotsForLogout};