promptfoo 0.121.3 → 0.121.4
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.
- package/README.md +1 -1
- package/dist/src/{ListApp-Du7YVwj5.js → ListApp-DQkFNqE9.js} +1 -1
- package/dist/src/{accounts-Xatc0RYb.js → accounts-DdJ2pHMI.js} +5 -5
- package/dist/src/{accounts-B2XmGjty.js → accounts-DhMYUUbu.js} +5 -5
- package/dist/src/{accounts-BPyfpSeU.cjs → accounts-Dy17bs4D.cjs} +5 -5
- package/dist/src/{accounts-CFLK3mnD.js → accounts-F9d_5sMC.js} +6 -6
- package/dist/src/{agentic-utils-DAVsChuB.cjs → agentic-utils-BpX5b23w.cjs} +3 -3
- package/dist/src/{agentic-utils-DIYAAYE7.js → agentic-utils-P172hM8B.js} +3 -3
- package/dist/src/{agentic-utils-D8yXo5Lm.js → agentic-utils-qFlm6zes.js} +4 -4
- package/dist/src/{agentic-utils-36epdqwB.js → agentic-utils-w68v6_Dz.js} +3 -3
- package/dist/src/{agents-CLQ-P15P.js → agents-8FDnTriG.js} +6 -7
- package/dist/src/{agents-CAYbM7qD.cjs → agents-BahDpe5G.cjs} +34 -12
- package/dist/src/{agents-DSSTV4bv.js → agents-C-R_jfzI.js} +35 -13
- package/dist/src/{agents-wg3ohknq.js → agents-CgaMXvLM.js} +5 -7
- package/dist/src/{agents-BBWxKSM0.cjs → agents-D7-HGxUj.cjs} +5 -7
- package/dist/src/{agents-BBVJCIYr.js → agents-DJ35I3Nt.js} +35 -13
- package/dist/src/{agents-CgBniSlI.js → agents-aYPQLf8W.js} +5 -9
- package/dist/src/{agents-Bqgfdokm.js → agents-pQeBEXMm.js} +35 -14
- package/dist/src/{aimlapi-BwGC1TtS.js → aimlapi-BCq3MHeL.js} +8 -14
- package/dist/src/{aimlapi-MgSLdvy7.js → aimlapi-BD6J9oKt.js} +7 -14
- package/dist/src/{aimlapi-Bv8Fmc-b.cjs → aimlapi-qcK4OT55.cjs} +8 -15
- package/dist/src/{aimlapi-DaC3qZ-o.js → aimlapi-sgYnkE54.js} +7 -16
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -0
- package/dist/src/app/assets/Report-CQYFezYu.js +1 -0
- package/dist/src/app/assets/index-BXGkeMwh.css +1 -0
- package/dist/src/app/assets/index-BzJt18Jz.js +385 -0
- package/dist/src/app/assets/rolldown-runtime-COnpUsM8.js +1 -0
- package/dist/src/app/assets/scroll-timeline-D9IT_e8Z.js +1 -0
- package/dist/src/app/assets/sync-IjzpWrOE.js +4 -0
- package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +36 -0
- package/dist/src/app/assets/vendor-markdown-Ch00wnNI.js +29 -0
- package/dist/src/app/assets/vendor-react-CVvmk1UB.js +9 -0
- package/dist/src/app/assets/vendor-utils-BnEYbx2Q.js +37 -0
- package/dist/src/app/index.html +7 -7
- package/dist/src/{audio-DjU9GswO.js → audio-B7izf48x.js} +4 -5
- package/dist/src/{audio-DVFjQ67_.cjs → audio-BQtNuYBj.cjs} +4 -4
- package/dist/src/{audio-Bn44pQxv.js → audio-COrn8rM6.js} +4 -4
- package/dist/src/{audio-DDA5WHdx.js → audio-DcVKoInv.js} +4 -4
- package/dist/src/{base-BboXIF_0.cjs → base-D-670DX8.cjs} +3 -3
- package/dist/src/{base-CqzQ4K8j.js → base-PYJvBE1i.js} +3 -3
- package/dist/src/{base-CKjwebIH.js → base-fZ9wgg50.js} +3 -3
- package/dist/src/{base-Cz2ZC_iA.js → base-yrI1Yal4.js} +3 -3
- package/dist/src/{blobs-BUWmKWzo.js → blobs-BCZavS8s.js} +4 -4
- package/dist/src/{blobs-B1JriOyi.js → blobs-BQWqnnvL.js} +4 -4
- package/dist/src/{blobs-DXTl6J3H.js → blobs-C-F78Kfn.js} +3 -3
- package/dist/src/{blobs-C6j0bvFz.cjs → blobs-D2FAd1Q5.cjs} +3 -3
- package/dist/src/cache-BIyPcp5v.cjs +376 -0
- package/dist/src/cache-C4Xb-hNb.js +310 -0
- package/dist/src/cache-Cr9oLMUa.js +3 -0
- package/dist/src/cache-D5NZmMiT.js +310 -0
- package/dist/src/cache-DbLsVWB2.cjs +3 -0
- package/dist/src/cache-mb7c8hbp.js +280 -0
- package/dist/src/{chat-DK1U-eZ-.js → chat-0bwXjVP0.js} +3 -13
- package/dist/src/{chat-BtIKkLKx.cjs → chat-BPXSW8Bv.cjs} +3 -13
- package/dist/src/{chat-B0iaWhoh.js → chat-BfPaS15_.js} +63 -37
- package/dist/src/{chat-CM8qWR3_.cjs → chat-CclRbxGf.cjs} +63 -37
- package/dist/src/{chat-BEwdgGEg.js → chat-Dr3DUQ0D.js} +63 -37
- package/dist/src/{chat-pxmiVpWe.js → chat-I9izLm49.js} +62 -36
- package/dist/src/{chat-B-52XYI1.js → chat-MKxMnZJZ.js} +3 -13
- package/dist/src/{chat-BE0qTA8e.js → chat-mW0ORo8G.js} +3 -14
- package/dist/src/{chatkit-Cx174XI3.cjs → chatkit-BoWoSgXl.cjs} +4 -4
- package/dist/src/{chatkit-BYGQlHlV.js → chatkit-CJnHRRMM.js} +4 -4
- package/dist/src/{chatkit-a2D6mY6s.js → chatkit-Cv6AhukM.js} +4 -4
- package/dist/src/{chatkit-_8eJqKcD.js → chatkit-zUIVoDos.js} +4 -4
- package/dist/src/{claude-agent-sdk-CMjh4LFH.js → claude-agent-sdk-BQNuLaAK.js} +19 -14
- package/dist/src/{claude-agent-sdk-8ddRp1L2.cjs → claude-agent-sdk-CPJo3dBQ.cjs} +21 -16
- package/dist/src/{claude-agent-sdk-HgbFioFw.js → claude-agent-sdk-Dtq_L-Sc.js} +20 -15
- package/dist/src/{claude-agent-sdk-Bq5EArsX.js → claude-agent-sdk-nfAIcxNf.js} +21 -17
- package/dist/src/{cloud-z8KZpUoa.js → cloud-DQZ5sVjW.js} +25 -13
- package/dist/src/cloud-Hphvo8kr.js +3 -0
- package/dist/src/{cloudflare-ai-Bbp26N0L.js → cloudflare-ai-BIB567w6.js} +5 -14
- package/dist/src/{cloudflare-ai-BGyXlpXJ.js → cloudflare-ai-DGLte7Py.js} +5 -14
- package/dist/src/{cloudflare-ai-C62x6MQG.cjs → cloudflare-ai-Dl3N9OVD.cjs} +6 -15
- package/dist/src/{cloudflare-ai-DdKP9TKT.js → cloudflare-ai-DlKr0rY7.js} +5 -15
- package/dist/src/{cloudflare-gateway-D-e9i1Sn.js → cloudflare-gateway-BDZrYydE.js} +4 -16
- package/dist/src/{cloudflare-gateway-Dx36ftqF.cjs → cloudflare-gateway-BYDp495F.cjs} +4 -15
- package/dist/src/{cloudflare-gateway-DXhtXDRb.js → cloudflare-gateway-CiIZHU0Q.js} +4 -15
- package/dist/src/{cloudflare-gateway-BwAaUgeW.js → cloudflare-gateway-DI1HNP5F.js} +4 -15
- package/dist/src/codex-sdk-BAmYE7qy.js +3 -0
- package/dist/src/codex-sdk-C2_M2pl_.cjs +1172 -0
- package/dist/src/codex-sdk-CErXn7qh.js +1165 -0
- package/dist/src/codex-sdk-CWEnH70W.cjs +2 -0
- package/dist/src/codex-sdk-CpqiOqDO.js +1164 -0
- package/dist/src/codex-sdk-Rtky3M4I.js +1165 -0
- package/dist/src/{cometapi-BDyV-NNm.js → cometapi-BUlt_ELa.js} +8 -15
- package/dist/src/{cometapi-hhL4TAh3.js → cometapi-CtJ-mS8R.js} +9 -15
- package/dist/src/{cometapi-sp7sJpBD.js → cometapi-DT-jlVCB.js} +8 -17
- package/dist/src/{cometapi-C3hOlM7-.cjs → cometapi-UVOryo4W.cjs} +9 -16
- package/dist/src/{completion-DlXUhj5c.cjs → completion-BozdoXba.cjs} +7 -62
- package/dist/src/{completion-BCimtq-h.js → completion-Dnxn7E-j.js} +8 -57
- package/dist/src/{completion-DCjv7RZ3.js → completion-HUe8wDhZ.js} +8 -57
- package/dist/src/{completion-DoYy49ti.js → completion-x0a_c2y1.js} +8 -57
- package/dist/src/{createHash-CTQmL3G2.js → createHash-4gFQpDDv.js} +3 -3
- package/dist/src/{createHash-BYwImsYv.cjs → createHash-B7KvgoOD.cjs} +4 -4
- package/dist/src/{createHash-Da8fMwqB.js → createHash-ChI45QR1.js} +3 -3
- package/dist/src/{createHash-DmPQkvBh.js → createHash-CwDVU5xr.js} +3 -3
- package/dist/src/{docker-FeBni2dw.js → docker-CQmlA2NU.js} +7 -14
- package/dist/src/{docker-CxCkwMzc.js → docker-ClnmCf1Z.js} +6 -14
- package/dist/src/{docker-DpguQj-w.js → docker-DCgsveLD.js} +6 -16
- package/dist/src/{docker-Cqj2-QVi.cjs → docker-DS4_Osau.cjs} +7 -15
- package/dist/src/embedding-D3xTseo7.js +59 -0
- package/dist/src/embedding-DD9wa3ae.js +58 -0
- package/dist/src/embedding-I45KG3o7.cjs +63 -0
- package/dist/src/embedding-nFbumxcv.js +58 -0
- package/dist/src/entrypoint.js +69 -6
- package/dist/src/{errors-P6ll7XSJ.js → errors-Cw810C93.js} +1 -1
- package/dist/src/{esm-SUNIX1x3.js → esm-C7PnfdF8.js} +15 -6
- package/dist/src/{esm-CipptfDu.cjs → esm-CtEPLdAj.cjs} +15 -6
- package/dist/src/{esm-CKWP3u_P.js → esm-Dh4dOLlt.js} +16 -7
- package/dist/src/{esm-7UIl0pPM.js → esm-tVgYPY-f.js} +27 -18
- package/dist/src/eval-CzJFfFO9.js +3 -0
- package/dist/src/{eval-BTqTn7lb.js → eval-u4UVafl6.js} +49 -20
- package/dist/src/{evalResult-BkIhRdTe.js → evalResult-Bgm9ZH31.js} +7 -7
- package/dist/src/{evalResult-DUDShQrm.js → evalResult-D3hVYFis.js} +7 -7
- package/dist/src/evalResult-D8MT9p0s.js +3 -0
- package/dist/src/evalResult-DElBuddX.js +2 -0
- package/dist/src/evalResult-Dvc-iucu.cjs +2 -0
- package/dist/src/{evalResult-DpARzUCb.cjs → evalResult-KZqXl4XP.cjs} +7 -7
- package/dist/src/evaluator-CVessDWe.js +3 -0
- package/dist/src/{evaluator-BcvOGaam.js → evaluator-IvuDYSvQ.js} +3178 -2102
- package/dist/src/{extractor-C8XwivI9.js → extractor-CAfTSraf.js} +6 -6
- package/dist/src/{extractor-CAZ2G3Kh.js → extractor-DNSeBVOJ.js} +6 -6
- package/dist/src/{extractor-D_wd8jxt.js → extractor-Dk6bRWkv.js} +6 -6
- package/dist/src/{extractor-DG3sSfXE.cjs → extractor-WVPOrH43.cjs} +6 -6
- package/dist/src/{fetch-BiYv2BZc.js → fetch-B0Z3Oe4k.js} +218 -55
- package/dist/src/{fetch-DoVRJZhJ.js → fetch-BEWnXrrG.js} +195 -45
- package/dist/src/fetch-C7bGKDlQ.js +3 -0
- package/dist/src/{fetch-BnR9wSnm.cjs → fetch-CJU5ELPa.cjs} +223 -48
- package/dist/src/{fetch-CVAtKnI3.js → fetch-Di00EQrc.js} +218 -55
- package/dist/src/{fileExtensions-Ds-foDzt.js → fileExtensions-AWa2ZML4.js} +1 -1
- package/dist/src/{fileExtensions-LcDYkU4v.js → fileExtensions-BArZuxsI.js} +1 -1
- package/dist/src/{formatDuration-DgBVMN65.js → formatDuration-DZzPsexs.js} +1 -1
- package/dist/src/{genaiTracer-70Z8BIuV.js → genaiTracer-COYDi-tC.js} +6 -2
- package/dist/src/{genaiTracer-C1rxGO8Q.js → genaiTracer-DWdZ28hY.js} +6 -2
- package/dist/src/{genaiTracer-D3fD9dNV.js → genaiTracer-XnrcgDCe.js} +6 -2
- package/dist/src/{genaiTracer-BfxrvSUb.cjs → genaiTracer-yRuxj9-L.cjs} +7 -3
- package/dist/src/golang/wrapper.go +1 -1
- package/dist/src/{graders-BElhu9ZY.cjs → graders--zknU_uk.cjs} +3772 -1302
- package/dist/src/graders-BOAzQEUe.cjs +2 -0
- package/dist/src/graders-D4BTsZdG2.js +3 -0
- package/dist/src/graders-DOJK1XpV.js +2 -0
- package/dist/src/graders-NAv9LcBn.js +2 -0
- package/dist/src/{graders-DG7mhg-b.js → graders-Zy3x0zqX.js} +5691 -3247
- package/dist/src/{graders-RjHF8VfG.js → graders-eIHhRqoC.js} +5683 -3239
- package/dist/src/{graders-BXAJ0sbS.js → graders-pvbReLLn.js} +5692 -3248
- package/dist/src/{image-6WQXK8m8.js → image-9302QVqR.js} +4 -4
- package/dist/src/{image-B8b6f36E.js → image-B5Mv-Z3h.js} +8 -8
- package/dist/src/{image-PoF6DN3x.js → image-DVz2RiMF.js} +8 -8
- package/dist/src/{image-fza3zuKs.cjs → image-De2FBmYV.cjs} +4 -4
- package/dist/src/{image-DO0RYnjH.js → image-dnoUgPrC.js} +4 -5
- package/dist/src/{image-CoxZp9PZ.js → image-qUpPvmNZ.js} +8 -8
- package/dist/src/{image-xNbw5ph2.js → image-u7-rKnYU.js} +4 -4
- package/dist/src/{image--F58eEIn.cjs → image-x6KqLQl4.cjs} +8 -8
- package/dist/src/index.cjs +3641 -2144
- package/dist/src/index.d.cts +2660 -20
- package/dist/src/index.d.ts +2660 -20
- package/dist/src/index.js +3649 -2152
- package/dist/src/{interactiveCheck-BnMYOjMu.js → interactiveCheck-CLERUB0c.js} +2 -2
- package/dist/src/{knowledgeBase-DqrLX8fy.cjs → knowledgeBase-Bpoe_nLu.cjs} +6 -8
- package/dist/src/{knowledgeBase-Bi7CmDbx.js → knowledgeBase-Dgc7CBWF.js} +6 -8
- package/dist/src/{knowledgeBase-DFRXPZl_.js → knowledgeBase-RhFPGWDc.js} +6 -8
- package/dist/src/{knowledgeBase-Ce3ofVan.js → knowledgeBase-lm9RXSAm.js} +6 -9
- package/dist/src/{litellm-CKiAxnoM.js → litellm-C2kqjxqp.js} +6 -14
- package/dist/src/{litellm-CnHI69aj.cjs → litellm-CoyI4IAl.cjs} +6 -15
- package/dist/src/{litellm-Tc294Jhj.js → litellm-DRjpcSa7.js} +5 -14
- package/dist/src/{litellm-Bo2gQXpo.js → litellm-p37R1dzQ.js} +5 -16
- package/dist/src/{logger-BnkjG2jt.js → logger-B88EkIn6.js} +40 -11
- package/dist/src/{logger-D5iKBpu_.cjs → logger-COuQb2xB.cjs} +51 -10
- package/dist/src/{logger-DO8_zM18.js → logger-Ct2S6Yx-.js} +40 -11
- package/dist/src/{logger-BcJBzSSA.js → logger-DksKw1Qc.js} +40 -11
- package/dist/src/{luma-ray-C9q8rdQe.js → luma-ray-B863CmuZ.js} +6 -10
- package/dist/src/{luma-ray-DP0QA9qn.js → luma-ray-BTTLtqQ8.js} +7 -10
- package/dist/src/{luma-ray-m9Ku2meV.cjs → luma-ray-BxVKaW2a.cjs} +6 -10
- package/dist/src/{luma-ray-0ehMPt5N.js → luma-ray-KgTCXrZC.js} +6 -12
- package/dist/src/main.d.ts +1 -26
- package/dist/src/main.js +985 -520
- package/dist/src/{messages-HJsyEh4o.cjs → messages-811uVVW5.cjs} +69 -19
- package/dist/src/{messages-Dy9QecMs.js → messages-BTQz42fn.js} +69 -19
- package/dist/src/{messages-biC_ex-p.js → messages-MYTQ2TWp.js} +69 -19
- package/dist/src/{messages-DJNo37Ko.js → messages-zWbkLLHz.js} +69 -19
- package/dist/src/{meteor-D-SotUw9.js → meteor-CU5UAE-H.js} +1 -1
- package/dist/src/{meteor-DLZZ3osF.cjs → meteor-Co1VQ1u5.cjs} +1 -1
- package/dist/src/{meteor-44VjEACX.js → meteor-DHdzY1Ss.js} +1 -1
- package/dist/src/{meteor-DUiCJRC-.js → meteor-DuAFv6gF.js} +1 -1
- package/dist/src/{modelslab-B5J-ZM5c.js → modelslab-D0erNWKe.js} +7 -10
- package/dist/src/{modelslab-BTOT8FUO.js → modelslab-DIq-6y7x.js} +7 -10
- package/dist/src/{modelslab-IQbNg-r7.cjs → modelslab-Dk1JAtVo.cjs} +7 -10
- package/dist/src/{modelslab-BI458moT.js → modelslab-wu9yi5GE.js} +7 -11
- package/dist/src/{nova-reel-BZ9y-Y5s.js → nova-reel-CCFRfeRb.js} +7 -10
- package/dist/src/{nova-reel-CE5etkv9.cjs → nova-reel-CrLXVKQf.cjs} +6 -10
- package/dist/src/{nova-reel-Xw1SXLpg.js → nova-reel-DQrm74ng.js} +6 -10
- package/dist/src/{nova-reel-DEeQlnOJ.js → nova-reel-gr11WG7f.js} +6 -12
- package/dist/src/{nova-sonic-Ogqf-csn.js → nova-sonic-BYdp-QLs.js} +5 -7
- package/dist/src/{nova-sonic-DXTLpi-r.js → nova-sonic-B_ZXcUJB.js} +4 -7
- package/dist/src/{nova-sonic-DWswpN1E.js → nova-sonic-TDgrlTk7.js} +4 -9
- package/dist/src/{nova-sonic-N0yCm0vb.cjs → nova-sonic-i5tUvXKn.cjs} +4 -7
- package/dist/src/{openai-BcB5KlTk.js → openai-DhVEmgeZ.js} +6 -3
- package/dist/src/{openai-BMcwgD5C.js → openai-Qsvz25mV.js} +6 -3
- package/dist/src/{openai-CoxGAQwn.cjs → openai-URNyItar.cjs} +6 -3
- package/dist/src/{openai-D6wITiVn.js → openai-iYtrXzOX.js} +6 -3
- package/dist/src/openclaw-CLWrW03k.js +1200 -0
- package/dist/src/openclaw-CnQ363Wi.js +1199 -0
- package/dist/src/openclaw-CwzlQSQX.js +1199 -0
- package/dist/src/openclaw-wX9rtfke.cjs +1205 -0
- package/dist/src/{opencode-sdk-CHCs7dEb.js → opencode-sdk-BUu5Nevv.js} +6 -8
- package/dist/src/{opencode-sdk-WWJhnbKr.cjs → opencode-sdk-BZ2idgYA.cjs} +6 -8
- package/dist/src/{opencode-sdk-DDxj4QqH.js → opencode-sdk-BxD8vXp_.js} +7 -8
- package/dist/src/{opencode-sdk-C71Z0ehR.js → opencode-sdk-GI2KaAXq.js} +6 -10
- package/dist/src/{otlpReceiver-CZL48YfC.js → otlpReceiver-B2z58l4e.js} +154 -98
- package/dist/src/{otlpReceiver-DHKqJlsz.cjs → otlpReceiver-BfcVq2Nq.cjs} +154 -98
- package/dist/src/{otlpReceiver-CavGAA6k.js → otlpReceiver-BntK801g.js} +154 -98
- package/dist/src/{otlpReceiver-C9KlUtxh.js → otlpReceiver-DmVulbhC.js} +154 -98
- package/dist/src/{providerRegistry-BkzVH5Ba.js → providerRegistry-Bvh8mv85.js} +2 -2
- package/dist/src/{providerRegistry-CUWki5mQ.js → providerRegistry-CPQ_CmVO.js} +2 -2
- package/dist/src/{providerRegistry-BTDgfV5h.cjs → providerRegistry-CQMdTmHP.cjs} +2 -2
- package/dist/src/{providerRegistry-B9lh-_tx.js → providerRegistry-CWoPjKFZ.js} +2 -2
- package/dist/src/{providers-CScd1wN6.cjs → providers-1eKkXBKp.cjs} +792 -556
- package/dist/src/{providers-Ch6Mr0gn.js → providers-BV_KMZje.js} +699 -493
- package/dist/src/providers-Bp4S-FvO.js +2 -0
- package/dist/src/providers-DV3ax9e_.cjs +3 -0
- package/dist/src/{providers-DvddrgxL.js → providers-Domz_llv.js} +707 -501
- package/dist/src/{providers-Cn73d5sr.js → providers-DruaQfwu.js} +704 -498
- package/dist/src/providers-iUt5fbAN.js +3 -0
- package/dist/src/providers-u9Enmfok.js +2 -0
- package/dist/src/python/persistent_wrapper.py +0 -5
- package/dist/src/{pythonUtils-Cpo0Ez1p.js → pythonUtils-C2UQ30Rz.js} +3 -3
- package/dist/src/{pythonUtils-Bzwbgpbg.js → pythonUtils-Cldx7huE.js} +3 -3
- package/dist/src/{pythonUtils-wIqk7zAf.js → pythonUtils-CnndUbW-.js} +3 -3
- package/dist/src/{pythonUtils-dAVigVK-.cjs → pythonUtils-tAJvvpS-.cjs} +3 -3
- package/dist/src/{quiverai-BeofbLVc.js → quiverai-CtWi6x_g.js} +4 -4
- package/dist/src/{quiverai-CcUhPIBg.cjs → quiverai-DFotyafY.cjs} +4 -4
- package/dist/src/{quiverai-DVSEqJiq.js → quiverai-DR0SnIQV.js} +4 -4
- package/dist/src/{quiverai-CCQn73lq.js → quiverai-aPPvXOgn.js} +4 -5
- package/dist/src/render-CH-62LbA.js +135 -0
- package/dist/src/render-CMEpfLaO.js +136 -0
- package/dist/src/{render-BHl6QVq9.js → render-CgVDrJmM.js} +2 -3
- package/dist/src/render-DHIZ6_k8.js +135 -0
- package/dist/src/render-DfQSFxGE.cjs +165 -0
- package/dist/src/{responses-CQb1Tj69.js → responses--OsX2aYW.js} +17 -12
- package/dist/src/{responses-mo0KQDbu.cjs → responses-Bi9vBuW_.cjs} +18 -13
- package/dist/src/{responses-CgNyTPsY.js → responses-C-flexAY.js} +18 -13
- package/dist/src/{responses-BKP_WYis.js → responses-DL9m8CyY.js} +18 -13
- package/dist/src/{rubyUtils-CGeUtCfW.cjs → rubyUtils-B6eljPuh.cjs} +3 -3
- package/dist/src/{rubyUtils-DECSbsfY.js → rubyUtils-CYSQEG4a.js} +3 -3
- package/dist/src/rubyUtils-D1L2d3jb.js +3 -0
- package/dist/src/rubyUtils-DUbq4tff.cjs +2 -0
- package/dist/src/{rubyUtils-PgU-gHmx.js → rubyUtils-DVLeA2jg.js} +3 -3
- package/dist/src/{rubyUtils-CiVfln3g.js → rubyUtils-DsGrTx8R.js} +3 -3
- package/dist/src/{sagemaker-CqeASYE5.js → sagemaker-BVkaG2-l.js} +14 -18
- package/dist/src/{sagemaker-CVv8W7so.js → sagemaker-BveBvuxm.js} +14 -18
- package/dist/src/{sagemaker-MUbD5V3v.js → sagemaker-D67yzMzs.js} +14 -19
- package/dist/src/{sagemaker-jiw1wQa-.cjs → sagemaker-XnfhheQv.cjs} +14 -18
- package/dist/src/{scanner-DVDeUz1r.js → scanner-1DqWi1Ej.js} +130 -35
- package/dist/src/server/golang/wrapper.go +1 -1
- package/dist/src/server/index.js +3596 -2098
- package/dist/src/server/python/persistent_wrapper.py +0 -5
- package/dist/src/{server-DZ9MtCn0.js → server-BNYztJkh.js} +128 -9
- package/dist/src/{server-Cns05F1j.js → server-BSB45Nt9.js} +127 -8
- package/dist/src/{server-CP9qKM40.js → server-D6Il2Sob.js} +126 -7
- package/dist/src/server-DCtHUqlp.js +3 -0
- package/dist/src/server-DaA2eR26.cjs +2 -0
- package/dist/src/{server-BtoCXeXI.cjs → server-Dx2TyCH2.cjs} +140 -6
- package/dist/src/{signal-C3ZTsUgi.js → signal-CE5G3a7x.js} +3 -3
- package/dist/src/{slack-94iG3T0s.cjs → slack-1Rhq0EoV.cjs} +2 -2
- package/dist/src/{slack-BR0HtO3K.js → slack-D5Wpy8LM.js} +2 -2
- package/dist/src/{slack-DCEV-vWP.js → slack-DDUe-5MC.js} +2 -2
- package/dist/src/{slack-2sdpGzbt.js → slack-acRb0IqQ.js} +2 -2
- package/dist/src/store-CWOSz6D_.cjs +2 -0
- package/dist/src/{store-P8OKm19S.js → store-CYEy5J2D.js} +3 -3
- package/dist/src/{store-CLyU7AtI.cjs → store-DAAyxcy6.cjs} +3 -3
- package/dist/src/store-DCDBhv7B.js +3 -0
- package/dist/src/{store-VB0GP46K.js → store-Dn9HUkdW.js} +3 -3
- package/dist/src/{store-Cj258DgL.js → store-M0b1WfYb.js} +3 -3
- package/dist/src/{tables-DmzvLbeZ.js → tables-C4CH3zRr.js} +3 -3
- package/dist/src/{tables-BEIFz2tM.js → tables-CsWou1Bx.js} +3 -3
- package/dist/src/{tables-kC7R5kiK.js → tables-DQ4WU5tX.js} +3 -3
- package/dist/src/{tables-BdZQEpRz.cjs → tables-DUfh1F7Z.cjs} +3 -3
- package/dist/src/telemetry-C1IqxcdW.js +3 -0
- package/dist/src/telemetry-C4ZEa_es.cjs +2 -0
- package/dist/src/{telemetry-BnH5VJAU.js → telemetry-CQPez_Jp.js} +4 -4
- package/dist/src/{telemetry-re627Lre.cjs → telemetry-Dsw_faFj.cjs} +4 -4
- package/dist/src/{telemetry-BugWqKiu.js → telemetry-Dvqxv3YC.js} +4 -4
- package/dist/src/{telemetry-DPXLd7UE.js → telemetry-dbaJ0E98.js} +4 -4
- package/dist/src/{text-CW1cyrwj.cjs → text-BVi-cLPJ.cjs} +1 -1
- package/dist/src/{text-B_UCRPp2.js → text-CZr46tp_.js} +1 -1
- package/dist/src/{text-TIv0QYnd.js → text-DHxdyQqT.js} +1 -1
- package/dist/src/{text-Db-Wt2u2.js → text-KvuD2Iko.js} +1 -1
- package/dist/src/{tokenUsageUtils-bVa1ga6f.cjs → tokenUsageUtils-Bb7DkZPz.cjs} +7 -3
- package/dist/src/{tokenUsageUtils-BDGe-iyI.js → tokenUsageUtils-C-bmyHoE.js} +7 -3
- package/dist/src/{tokenUsageUtils-DflFMjS0.js → tokenUsageUtils-CXrvO-wA.js} +7 -3
- package/dist/src/{transcription-BvtsrzRG.cjs → transcription-BvjmiYB1.cjs} +9 -13
- package/dist/src/{transcription-Hb3VnC4M.js → transcription-CJspiD2c.js} +8 -11
- package/dist/src/{transcription-CaMivnjG.js → transcription-DuWDupG7.js} +7 -11
- package/dist/src/{transcription-DOMMTu01.js → transcription-V2HaAmy2.js} +7 -13
- package/dist/src/{transform-BqPkNPYm.js → transform-Bbg6A8Jk.js} +4 -4
- package/dist/src/{transform-DrleutM3.js → transform-CG0ehZNG.js} +9 -8
- package/dist/src/{transform-0BwoBsvO.cjs → transform-CTeuTR3S.cjs} +16 -8
- package/dist/src/{transform-ZrG2dvlo.cjs → transform-CUnzlsbn.cjs} +4 -4
- package/dist/src/{transform-BzK09Q_9.js → transform-DYX1_Xnh.js} +5 -5
- package/dist/src/transform-DgKlRr73.cjs +2 -0
- package/dist/src/transform-M6ITAESf.js +3 -0
- package/dist/src/{transform-ljLYHEPh.js → transform-UN5UGu8U.js} +5 -5
- package/dist/src/{transform-B2-jIv68.js → transform-lQrDE1BQ.js} +8 -6
- package/dist/src/{transform-DyDAwEpE.js → transform-zDhMmzwX.js} +10 -7
- package/dist/src/{transformersAvailability-BGkzavwb.js → transformersAvailability-CcHusyhw.js} +1 -1
- package/dist/src/{transformersAvailability-DKoRtQLy.cjs → transformersAvailability-Cju9mHgR.cjs} +1 -1
- package/dist/src/{transformersAvailability-D6c6ROpT.js → transformersAvailability-DLlROWhg.js} +1 -1
- package/dist/src/{types-q8GXGF65.js → types-BGQDAP8i.js} +351 -22
- package/dist/src/{types-Cd3ygw8W.js → types-Bgh5SOn6.js} +352 -24
- package/dist/src/{types-D8cGDZbL.cjs → types-CeaeaZdP.cjs} +387 -22
- package/dist/src/{types-CIhFeUC4.js → types-Dm9JM6Vb.js} +362 -23
- package/dist/src/{util-vNmDL5DT.js → util-BYvQUPp7.js} +138 -36
- package/dist/src/{util-CuLo2pMR.cjs → util-Bxn8emtE.cjs} +14 -167
- package/dist/src/{util-BLvy9qfE.js → util-C8e5uydV.js} +18 -141
- package/dist/src/{util-DM2rTn_6.js → util-C9J8ahRn.js} +4 -4
- package/dist/src/{util-CFj4YKIn.cjs → util-CN3SrLT4.cjs} +4 -4
- package/dist/src/{util-BtoGs5Cb.js → util-D3q0WQ-0.js} +4 -4
- package/dist/src/{util-CgDCK4KI.js → util-D9TisOyk.js} +4 -4
- package/dist/src/{util-DMFeUvLz.js → util-DDs-7g6-.js} +138 -36
- package/dist/src/{util-DbVG-yZU.js → util-DvU2Pw8c.js} +138 -36
- package/dist/src/{util-Bm3E9jpK.js → util-DxWpWjhc.js} +12 -135
- package/dist/src/{util-CMMkIxfU.js → util-oGMLA7vc.js} +16 -139
- package/dist/src/{util--9u9UVCt.cjs → util-olYL5C6N.cjs} +143 -35
- package/dist/src/{utils-DKw8mrgr.cjs → utils-B05gLxER.cjs} +6 -4
- package/dist/src/{utils-DEuL4VNB.js → utils-BLJKfv0y.js} +6 -4
- package/dist/src/{utils-DOjD4dTC.js → utils-DJfvjyMj.js} +6 -4
- package/dist/src/{utils-CFxO9KGo.js → utils-hXtCYanr.js} +6 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +51 -42
- package/dist/src/app/assets/index-B6l9CVVb.js +0 -439
- package/dist/src/app/assets/index-DyZ0Ep37.css +0 -1
- package/dist/src/app/assets/scroll-timeline-BdJZVXlz.js +0 -1
- package/dist/src/app/assets/sync-CStkzc6u.js +0 -4
- package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +0 -36
- package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +0 -29
- package/dist/src/app/assets/vendor-react-AtKqiNEf.js +0 -4
- package/dist/src/app/assets/vendor-syntax-D06x6TQF.js +0 -2
- package/dist/src/app/assets/vendor-utils-BvMHZmO7.js +0 -37
- package/dist/src/cache-C5yFZ4gC.cjs +0 -816
- package/dist/src/cache-CaT5tPgo.js +0 -756
- package/dist/src/cache-CyCanoMu.js +0 -6
- package/dist/src/cache-DSqR6ezl.js +0 -726
- package/dist/src/cache-Df_QFDNu.cjs +0 -5
- package/dist/src/cache-HP0NP4k3.js +0 -756
- package/dist/src/cloud-DE3t1-ZI.js +0 -4
- package/dist/src/codex-sdk-BQEw16R_.js +0 -834
- package/dist/src/codex-sdk-C_07GuVS.js +0 -834
- package/dist/src/codex-sdk-DE5G18dx.js +0 -835
- package/dist/src/codex-sdk-ZLKfDjqP.cjs +0 -838
- package/dist/src/eval-7aEqoMs3.js +0 -15
- package/dist/src/evalResult-CYNHkk5A.js +0 -12
- package/dist/src/evalResult-CuvJeNiM.js +0 -10
- package/dist/src/evalResult-tGdilrWt.cjs +0 -10
- package/dist/src/evaluator-BBUqRhz1.js +0 -36
- package/dist/src/fetch-UWU706qb.js +0 -5
- package/dist/src/graders-BxfEguVY.js +0 -32
- package/dist/src/graders-CzVMbEnv.js +0 -34
- package/dist/src/graders-DjCXfj0l.cjs +0 -32
- package/dist/src/graders-kHzIWOKu.js +0 -32
- package/dist/src/openclaw-0Sv7AK3O.js +0 -580
- package/dist/src/openclaw-CXxbKgDH.cjs +0 -586
- package/dist/src/openclaw-D1FSCps-.js +0 -580
- package/dist/src/openclaw-D2ENvu7a.js +0 -582
- package/dist/src/providers-BSLEaIQG.js +0 -32
- package/dist/src/providers-D-FnDg8k.cjs +0 -31
- package/dist/src/providers-DEYiFVAo.js +0 -30
- package/dist/src/providers-sS2WI8YD.js +0 -30
- package/dist/src/rubyUtils-B1HXG4ej.cjs +0 -4
- package/dist/src/rubyUtils-Rt6pKA96.js +0 -5
- package/dist/src/server-B0Xh1Gx-.js +0 -7
- package/dist/src/server-DJTKu9IR.cjs +0 -5
- package/dist/src/store-C5u6MgC8.js +0 -6
- package/dist/src/store-CNHk-De4.cjs +0 -5
- package/dist/src/telemetry-Yig0Tino.js +0 -7
- package/dist/src/telemetry-p8Pwqm1i.cjs +0 -5
- package/dist/src/tokenUsageUtils-NYT-WKS6.js +0 -138
- package/dist/src/transform-ChNIpHz7.js +0 -6
- package/dist/src/transform-PtQ6rAE3.cjs +0 -5
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { C as
|
|
2
|
-
import {
|
|
3
|
-
import { r as importModule } from "./esm-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { D as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
1
|
+
import { C as getEnvFloat, S as getEnvBool, T as getEnvString, a as logger, k as state, w as getEnvInt } from "./logger-B88EkIn6.js";
|
|
2
|
+
import { S as parseChatPrompt, T as transformTools, h as REQUEST_TIMEOUT_MS, w as transformToolChoice } from "./fetch-B0Z3Oe4k.js";
|
|
3
|
+
import { r as importModule } from "./esm-Dh4dOLlt.js";
|
|
4
|
+
import { n as withGenAISpan } from "./genaiTracer-COYDi-tC.js";
|
|
5
|
+
import { n as renderVarsInObject } from "./render-DHIZ6_k8.js";
|
|
6
|
+
import { i as isJavascriptFile } from "./fileExtensions-BArZuxsI.js";
|
|
7
|
+
import { r as fetchWithCache } from "./cache-C4Xb-hNb.js";
|
|
8
|
+
import { D as maybeLoadResponseFormatFromExternalFile, E as maybeLoadFromExternalFileWithVars, O as maybeLoadToolsFromExternalFile } from "./util-C8e5uydV.js";
|
|
9
|
+
import { A as renderAuthVars, D as getAuthHeaders, E as applyQueryParams, O as getAuthQueryParams, i as transformMCPToolsToOpenAi, k as getOAuthTokenWithExpiry } from "./transform-lQrDE1BQ.js";
|
|
10
|
+
import { t as OpenAiGenericProvider } from "./openai-DhVEmgeZ.js";
|
|
11
|
+
import { a as calculateOpenAICost, c as getTokenUsage, t as OPENAI_CHAT_MODELS } from "./util-D3q0WQ-0.js";
|
|
11
12
|
import path from "path";
|
|
12
13
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
13
14
|
//#region src/util/finishReason.ts
|
|
@@ -24,13 +25,14 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
|
24
25
|
*
|
|
25
26
|
* **Provider Mappings:**
|
|
26
27
|
* - OpenAI: `function_call` (legacy) → `tool_calls` (current)
|
|
27
|
-
* - Anthropic: `end_turn` → `stop`, `stop_sequence` → `stop`, `max_tokens` → `length`, `tool_use` → `tool_calls`
|
|
28
|
+
* - Anthropic: `end_turn` → `stop`, `stop_sequence` → `stop`, `max_tokens` → `length`, `tool_use` → `tool_calls`, `refusal` → `content_filter`, `pause_turn` → `pause_turn`
|
|
28
29
|
*
|
|
29
30
|
* @example
|
|
30
31
|
* ```typescript
|
|
31
32
|
* normalizeFinishReason('end_turn') // Returns: 'stop'
|
|
32
33
|
* normalizeFinishReason('max_tokens') // Returns: 'length'
|
|
33
34
|
* normalizeFinishReason('tool_use') // Returns: 'tool_calls'
|
|
35
|
+
* normalizeFinishReason('refusal') // Returns: 'content_filter'
|
|
34
36
|
* normalizeFinishReason('function_call') // Returns: 'tool_calls'
|
|
35
37
|
* normalizeFinishReason('unknown') // Returns: 'unknown' (passthrough)
|
|
36
38
|
* ```
|
|
@@ -44,7 +46,9 @@ const FINISH_REASON_MAP = {
|
|
|
44
46
|
end_turn: "stop",
|
|
45
47
|
stop_sequence: "stop",
|
|
46
48
|
max_tokens: "length",
|
|
47
|
-
tool_use: "tool_calls"
|
|
49
|
+
tool_use: "tool_calls",
|
|
50
|
+
refusal: "content_filter",
|
|
51
|
+
pause_turn: "pause_turn"
|
|
48
52
|
};
|
|
49
53
|
/**
|
|
50
54
|
* Normalize a provider-specific finish or stop reason to a standard OpenAI-compatible value.
|
|
@@ -100,7 +104,7 @@ var MCPClient = class {
|
|
|
100
104
|
transports = /* @__PURE__ */ new Map();
|
|
101
105
|
oauthConfigs = /* @__PURE__ */ new Map();
|
|
102
106
|
tokenExpiresAt = /* @__PURE__ */ new Map();
|
|
103
|
-
|
|
107
|
+
tokenRefreshLocks = /* @__PURE__ */ new Map();
|
|
104
108
|
get hasInitialized() {
|
|
105
109
|
return this.clients.size > 0;
|
|
106
110
|
}
|
|
@@ -232,31 +236,36 @@ var MCPClient = class {
|
|
|
232
236
|
async refreshOAuthTokenIfNeeded(serverKey) {
|
|
233
237
|
const oauthConfig = this.oauthConfigs.get(serverKey);
|
|
234
238
|
if (!oauthConfig) return;
|
|
235
|
-
|
|
239
|
+
await this.refreshOAuthToken(serverKey, oauthConfig, false);
|
|
240
|
+
}
|
|
241
|
+
hasValidToken(serverKey) {
|
|
236
242
|
const expiresAt = this.tokenExpiresAt.get(serverKey);
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
+
return expiresAt != null && this.clients.has(serverKey) && Date.now() + 6e4 < expiresAt;
|
|
244
|
+
}
|
|
245
|
+
async refreshOAuthToken(serverKey, oauthConfig, forceRefresh) {
|
|
246
|
+
while (true) {
|
|
247
|
+
const existingRefreshPromise = this.tokenRefreshLocks.get(serverKey)?.promise;
|
|
248
|
+
if (!existingRefreshPromise) break;
|
|
243
249
|
logger.debug(`[MCP] Token refresh already in progress for ${serverKey}, waiting...`);
|
|
244
250
|
try {
|
|
245
|
-
await
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
logger.debug(`[MCP] Token expired while waiting for ${serverKey}, refreshing again...`);
|
|
251
|
+
await existingRefreshPromise;
|
|
252
|
+
if (this.hasValidToken(serverKey)) return;
|
|
253
|
+
logger.debug(`[MCP] Token still needs refresh for ${serverKey}, refreshing again...`);
|
|
249
254
|
} catch {
|
|
250
255
|
logger.debug(`[MCP] Previous token refresh failed for ${serverKey}, retrying...`);
|
|
251
256
|
}
|
|
252
257
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
258
|
+
if (!forceRefresh && this.hasValidToken(serverKey)) {
|
|
259
|
+
logger.debug(`[MCP] Token for ${serverKey} still valid, no refresh needed`);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
logger.debug(`[MCP] Refreshing OAuth token for server ${serverKey}`);
|
|
263
|
+
const refreshLock = { promise: this.performTokenRefresh(serverKey, oauthConfig) };
|
|
264
|
+
this.tokenRefreshLocks.set(serverKey, refreshLock);
|
|
256
265
|
try {
|
|
257
|
-
await
|
|
266
|
+
await refreshLock.promise;
|
|
258
267
|
} finally {
|
|
259
|
-
if (this.
|
|
268
|
+
if (this.tokenRefreshLocks.get(serverKey) === refreshLock) this.tokenRefreshLocks.delete(serverKey);
|
|
260
269
|
}
|
|
261
270
|
}
|
|
262
271
|
/**
|
|
@@ -274,9 +283,21 @@ var MCPClient = class {
|
|
|
274
283
|
}
|
|
275
284
|
async callTool(name, args) {
|
|
276
285
|
const requestOptions = getEffectiveRequestOptions(this.config);
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
286
|
+
const disconnectedServers = [];
|
|
287
|
+
for (const [serverKey, serverTools] of this.tools.entries()) if (serverTools.some((tool) => tool.name === name)) {
|
|
288
|
+
try {
|
|
289
|
+
await this.refreshOAuthTokenIfNeeded(serverKey);
|
|
290
|
+
} catch (error) {
|
|
291
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
292
|
+
logger.debug(`[MCP] Failed to refresh OAuth token for ${serverKey}, trying the next matching server: ${errorMessage}`);
|
|
293
|
+
}
|
|
294
|
+
const client = this.clients.get(serverKey);
|
|
295
|
+
if (!client) {
|
|
296
|
+
logger.debug(`[MCP] Server ${serverKey} is not connected, trying the next matching server`);
|
|
297
|
+
disconnectedServers.push(serverKey);
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
let currentClient = client;
|
|
280
301
|
let retried = false;
|
|
281
302
|
while (true) try {
|
|
282
303
|
const result = await currentClient.callTool({
|
|
@@ -301,7 +322,7 @@ var MCPClient = class {
|
|
|
301
322
|
logger.debug(`[MCP] Auth error for ${serverKey}, attempting reactive token refresh`);
|
|
302
323
|
retried = true;
|
|
303
324
|
try {
|
|
304
|
-
await this.
|
|
325
|
+
await this.refreshOAuthToken(serverKey, oauthConfig, true);
|
|
305
326
|
const newClient = this.clients.get(serverKey);
|
|
306
327
|
if (newClient) {
|
|
307
328
|
currentClient = newClient;
|
|
@@ -319,6 +340,10 @@ var MCPClient = class {
|
|
|
319
340
|
};
|
|
320
341
|
}
|
|
321
342
|
}
|
|
343
|
+
if (disconnectedServers.length > 0) {
|
|
344
|
+
const plural = disconnectedServers.length > 1 ? "s are" : " is";
|
|
345
|
+
throw new Error(`Tool ${name} is known but MCP server${plural} disconnected: ${disconnectedServers.join(", ")}`);
|
|
346
|
+
}
|
|
322
347
|
throw new Error(`Tool ${name} not found in any connected MCP server`);
|
|
323
348
|
}
|
|
324
349
|
async cleanup() {
|
|
@@ -334,7 +359,7 @@ var MCPClient = class {
|
|
|
334
359
|
this.tools.clear();
|
|
335
360
|
this.oauthConfigs.clear();
|
|
336
361
|
this.tokenExpiresAt.clear();
|
|
337
|
-
this.
|
|
362
|
+
this.tokenRefreshLocks.clear();
|
|
338
363
|
}
|
|
339
364
|
};
|
|
340
365
|
//#endregion
|
|
@@ -349,7 +374,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
349
374
|
constructor(modelName, options = {}) {
|
|
350
375
|
if (!OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelName)) logger.debug(`Using unknown chat model: ${modelName}`);
|
|
351
376
|
super(modelName, options);
|
|
352
|
-
this.config = options.config
|
|
377
|
+
this.config = options.config ? { ...options.config } : {};
|
|
353
378
|
if (this.config.mcp?.enabled) this.initializationPromise = this.initializeMCP();
|
|
354
379
|
}
|
|
355
380
|
async initializeMCP() {
|
|
@@ -487,6 +512,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
487
512
|
if (config.user) body.user = config.user;
|
|
488
513
|
if (config.metadata) body.metadata = config.metadata;
|
|
489
514
|
if (config.store !== void 0) body.store = config.store;
|
|
515
|
+
if ((isReasoningModel || isGPT5Model) && "max_tokens" in body) delete body.max_tokens;
|
|
490
516
|
return {
|
|
491
517
|
body,
|
|
492
518
|
config
|
|
@@ -494,7 +520,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
494
520
|
}
|
|
495
521
|
async callApi(prompt, context, callApiOptions) {
|
|
496
522
|
if (this.initializationPromise != null) await this.initializationPromise;
|
|
497
|
-
if (this.requiresApiKey() && !this.getApiKey()) throw new Error(
|
|
523
|
+
if (this.requiresApiKey() && !this.getApiKey()) throw new Error(this.getMissingApiKeyErrorMessage());
|
|
498
524
|
const spanContext = {
|
|
499
525
|
system: "openai",
|
|
500
526
|
operationName: "chat",
|
|
@@ -763,4 +789,4 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
763
789
|
//#endregion
|
|
764
790
|
export { normalizeFinishReason as i, MCPClient as n, FINISH_REASON_MAP as r, OpenAiChatCompletionProvider as t };
|
|
765
791
|
|
|
766
|
-
//# sourceMappingURL=chat-
|
|
792
|
+
//# sourceMappingURL=chat-BfPaS15_.js.map
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
const require_logger = require("./logger-
|
|
2
|
-
const require_esm = require("./esm-
|
|
1
|
+
const require_logger = require("./logger-COuQb2xB.cjs");
|
|
2
|
+
const require_esm = require("./esm-CtEPLdAj.cjs");
|
|
3
3
|
const require_fileExtensions = require("./fileExtensions-bYh77CN8.cjs");
|
|
4
|
-
const require_util = require("./util-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
4
|
+
const require_util = require("./util-Bxn8emtE.cjs");
|
|
5
|
+
const require_render = require("./render-DfQSFxGE.cjs");
|
|
6
|
+
const require_fetch = require("./fetch-CJU5ELPa.cjs");
|
|
7
|
+
const require_cache = require("./cache-BIyPcp5v.cjs");
|
|
8
|
+
const require_genaiTracer = require("./genaiTracer-yRuxj9-L.cjs");
|
|
9
|
+
const require_transform = require("./transform-CTeuTR3S.cjs");
|
|
10
|
+
const require_openai = require("./openai-URNyItar.cjs");
|
|
11
|
+
const require_util$1 = require("./util-CN3SrLT4.cjs");
|
|
11
12
|
let path = require("path");
|
|
12
13
|
path = require_logger.__toESM(path);
|
|
13
14
|
let _modelcontextprotocol_sdk_client_index_js = require("@modelcontextprotocol/sdk/client/index.js");
|
|
@@ -25,13 +26,14 @@ let _modelcontextprotocol_sdk_client_index_js = require("@modelcontextprotocol/s
|
|
|
25
26
|
*
|
|
26
27
|
* **Provider Mappings:**
|
|
27
28
|
* - OpenAI: `function_call` (legacy) → `tool_calls` (current)
|
|
28
|
-
* - Anthropic: `end_turn` → `stop`, `stop_sequence` → `stop`, `max_tokens` → `length`, `tool_use` → `tool_calls`
|
|
29
|
+
* - Anthropic: `end_turn` → `stop`, `stop_sequence` → `stop`, `max_tokens` → `length`, `tool_use` → `tool_calls`, `refusal` → `content_filter`, `pause_turn` → `pause_turn`
|
|
29
30
|
*
|
|
30
31
|
* @example
|
|
31
32
|
* ```typescript
|
|
32
33
|
* normalizeFinishReason('end_turn') // Returns: 'stop'
|
|
33
34
|
* normalizeFinishReason('max_tokens') // Returns: 'length'
|
|
34
35
|
* normalizeFinishReason('tool_use') // Returns: 'tool_calls'
|
|
36
|
+
* normalizeFinishReason('refusal') // Returns: 'content_filter'
|
|
35
37
|
* normalizeFinishReason('function_call') // Returns: 'tool_calls'
|
|
36
38
|
* normalizeFinishReason('unknown') // Returns: 'unknown' (passthrough)
|
|
37
39
|
* ```
|
|
@@ -45,7 +47,9 @@ const FINISH_REASON_MAP = {
|
|
|
45
47
|
end_turn: "stop",
|
|
46
48
|
stop_sequence: "stop",
|
|
47
49
|
max_tokens: "length",
|
|
48
|
-
tool_use: "tool_calls"
|
|
50
|
+
tool_use: "tool_calls",
|
|
51
|
+
refusal: "content_filter",
|
|
52
|
+
pause_turn: "pause_turn"
|
|
49
53
|
};
|
|
50
54
|
/**
|
|
51
55
|
* Normalize a provider-specific finish or stop reason to a standard OpenAI-compatible value.
|
|
@@ -101,7 +105,7 @@ var MCPClient = class {
|
|
|
101
105
|
transports = /* @__PURE__ */ new Map();
|
|
102
106
|
oauthConfigs = /* @__PURE__ */ new Map();
|
|
103
107
|
tokenExpiresAt = /* @__PURE__ */ new Map();
|
|
104
|
-
|
|
108
|
+
tokenRefreshLocks = /* @__PURE__ */ new Map();
|
|
105
109
|
get hasInitialized() {
|
|
106
110
|
return this.clients.size > 0;
|
|
107
111
|
}
|
|
@@ -233,31 +237,36 @@ var MCPClient = class {
|
|
|
233
237
|
async refreshOAuthTokenIfNeeded(serverKey) {
|
|
234
238
|
const oauthConfig = this.oauthConfigs.get(serverKey);
|
|
235
239
|
if (!oauthConfig) return;
|
|
236
|
-
|
|
240
|
+
await this.refreshOAuthToken(serverKey, oauthConfig, false);
|
|
241
|
+
}
|
|
242
|
+
hasValidToken(serverKey) {
|
|
237
243
|
const expiresAt = this.tokenExpiresAt.get(serverKey);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
+
return expiresAt != null && this.clients.has(serverKey) && Date.now() + 6e4 < expiresAt;
|
|
245
|
+
}
|
|
246
|
+
async refreshOAuthToken(serverKey, oauthConfig, forceRefresh) {
|
|
247
|
+
while (true) {
|
|
248
|
+
const existingRefreshPromise = this.tokenRefreshLocks.get(serverKey)?.promise;
|
|
249
|
+
if (!existingRefreshPromise) break;
|
|
244
250
|
require_logger.logger.debug(`[MCP] Token refresh already in progress for ${serverKey}, waiting...`);
|
|
245
251
|
try {
|
|
246
|
-
await
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
require_logger.logger.debug(`[MCP] Token expired while waiting for ${serverKey}, refreshing again...`);
|
|
252
|
+
await existingRefreshPromise;
|
|
253
|
+
if (this.hasValidToken(serverKey)) return;
|
|
254
|
+
require_logger.logger.debug(`[MCP] Token still needs refresh for ${serverKey}, refreshing again...`);
|
|
250
255
|
} catch {
|
|
251
256
|
require_logger.logger.debug(`[MCP] Previous token refresh failed for ${serverKey}, retrying...`);
|
|
252
257
|
}
|
|
253
258
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
259
|
+
if (!forceRefresh && this.hasValidToken(serverKey)) {
|
|
260
|
+
require_logger.logger.debug(`[MCP] Token for ${serverKey} still valid, no refresh needed`);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
require_logger.logger.debug(`[MCP] Refreshing OAuth token for server ${serverKey}`);
|
|
264
|
+
const refreshLock = { promise: this.performTokenRefresh(serverKey, oauthConfig) };
|
|
265
|
+
this.tokenRefreshLocks.set(serverKey, refreshLock);
|
|
257
266
|
try {
|
|
258
|
-
await
|
|
267
|
+
await refreshLock.promise;
|
|
259
268
|
} finally {
|
|
260
|
-
if (this.
|
|
269
|
+
if (this.tokenRefreshLocks.get(serverKey) === refreshLock) this.tokenRefreshLocks.delete(serverKey);
|
|
261
270
|
}
|
|
262
271
|
}
|
|
263
272
|
/**
|
|
@@ -275,9 +284,21 @@ var MCPClient = class {
|
|
|
275
284
|
}
|
|
276
285
|
async callTool(name, args) {
|
|
277
286
|
const requestOptions = getEffectiveRequestOptions(this.config);
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
287
|
+
const disconnectedServers = [];
|
|
288
|
+
for (const [serverKey, serverTools] of this.tools.entries()) if (serverTools.some((tool) => tool.name === name)) {
|
|
289
|
+
try {
|
|
290
|
+
await this.refreshOAuthTokenIfNeeded(serverKey);
|
|
291
|
+
} catch (error) {
|
|
292
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
293
|
+
require_logger.logger.debug(`[MCP] Failed to refresh OAuth token for ${serverKey}, trying the next matching server: ${errorMessage}`);
|
|
294
|
+
}
|
|
295
|
+
const client = this.clients.get(serverKey);
|
|
296
|
+
if (!client) {
|
|
297
|
+
require_logger.logger.debug(`[MCP] Server ${serverKey} is not connected, trying the next matching server`);
|
|
298
|
+
disconnectedServers.push(serverKey);
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
let currentClient = client;
|
|
281
302
|
let retried = false;
|
|
282
303
|
while (true) try {
|
|
283
304
|
const result = await currentClient.callTool({
|
|
@@ -302,7 +323,7 @@ var MCPClient = class {
|
|
|
302
323
|
require_logger.logger.debug(`[MCP] Auth error for ${serverKey}, attempting reactive token refresh`);
|
|
303
324
|
retried = true;
|
|
304
325
|
try {
|
|
305
|
-
await this.
|
|
326
|
+
await this.refreshOAuthToken(serverKey, oauthConfig, true);
|
|
306
327
|
const newClient = this.clients.get(serverKey);
|
|
307
328
|
if (newClient) {
|
|
308
329
|
currentClient = newClient;
|
|
@@ -320,6 +341,10 @@ var MCPClient = class {
|
|
|
320
341
|
};
|
|
321
342
|
}
|
|
322
343
|
}
|
|
344
|
+
if (disconnectedServers.length > 0) {
|
|
345
|
+
const plural = disconnectedServers.length > 1 ? "s are" : " is";
|
|
346
|
+
throw new Error(`Tool ${name} is known but MCP server${plural} disconnected: ${disconnectedServers.join(", ")}`);
|
|
347
|
+
}
|
|
323
348
|
throw new Error(`Tool ${name} not found in any connected MCP server`);
|
|
324
349
|
}
|
|
325
350
|
async cleanup() {
|
|
@@ -335,7 +360,7 @@ var MCPClient = class {
|
|
|
335
360
|
this.tools.clear();
|
|
336
361
|
this.oauthConfigs.clear();
|
|
337
362
|
this.tokenExpiresAt.clear();
|
|
338
|
-
this.
|
|
363
|
+
this.tokenRefreshLocks.clear();
|
|
339
364
|
}
|
|
340
365
|
};
|
|
341
366
|
//#endregion
|
|
@@ -350,7 +375,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends re
|
|
|
350
375
|
constructor(modelName, options = {}) {
|
|
351
376
|
if (!OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelName)) require_logger.logger.debug(`Using unknown chat model: ${modelName}`);
|
|
352
377
|
super(modelName, options);
|
|
353
|
-
this.config = options.config
|
|
378
|
+
this.config = options.config ? { ...options.config } : {};
|
|
354
379
|
if (this.config.mcp?.enabled) this.initializationPromise = this.initializeMCP();
|
|
355
380
|
}
|
|
356
381
|
async initializeMCP() {
|
|
@@ -449,7 +474,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends re
|
|
|
449
474
|
const maxTokens = isReasoningModel || isGPT5Model ? void 0 : config.max_tokens ?? maxTokensDefault;
|
|
450
475
|
const temperatureDefault = config.omitDefaults ? require_logger.getEnvString("OPENAI_TEMPERATURE") === void 0 ? void 0 : require_logger.getEnvFloat("OPENAI_TEMPERATURE") : require_logger.getEnvFloat("OPENAI_TEMPERATURE", 0);
|
|
451
476
|
const temperature = this.supportsTemperature() ? config.temperature ?? temperatureDefault : void 0;
|
|
452
|
-
const reasoningEffort = isReasoningModel ?
|
|
477
|
+
const reasoningEffort = isReasoningModel ? require_render.renderVarsInObject(config.reasoning_effort, context?.vars) : void 0;
|
|
453
478
|
const mcpTools = this.mcpClient ? require_transform.transformMCPToolsToOpenAi(this.mcpClient.getAllTools()) : [];
|
|
454
479
|
const fileTools = require_fetch.transformTools(config.tools ? await require_util.maybeLoadToolsFromExternalFile(config.tools, context?.vars) || [] : [], "openai");
|
|
455
480
|
const allTools = [...mcpTools, ...fileTools];
|
|
@@ -488,6 +513,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends re
|
|
|
488
513
|
if (config.user) body.user = config.user;
|
|
489
514
|
if (config.metadata) body.metadata = config.metadata;
|
|
490
515
|
if (config.store !== void 0) body.store = config.store;
|
|
516
|
+
if ((isReasoningModel || isGPT5Model) && "max_tokens" in body) delete body.max_tokens;
|
|
491
517
|
return {
|
|
492
518
|
body,
|
|
493
519
|
config
|
|
@@ -495,7 +521,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends re
|
|
|
495
521
|
}
|
|
496
522
|
async callApi(prompt, context, callApiOptions) {
|
|
497
523
|
if (this.initializationPromise != null) await this.initializationPromise;
|
|
498
|
-
if (this.requiresApiKey() && !this.getApiKey()) throw new Error(
|
|
524
|
+
if (this.requiresApiKey() && !this.getApiKey()) throw new Error(this.getMissingApiKeyErrorMessage());
|
|
499
525
|
const spanContext = {
|
|
500
526
|
system: "openai",
|
|
501
527
|
operationName: "chat",
|
|
@@ -787,4 +813,4 @@ Object.defineProperty(exports, "normalizeFinishReason", {
|
|
|
787
813
|
}
|
|
788
814
|
});
|
|
789
815
|
|
|
790
|
-
//# sourceMappingURL=chat-
|
|
816
|
+
//# sourceMappingURL=chat-CclRbxGf.cjs.map
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
2
|
+
import { D as getEnvInt, E as getEnvFloat, N as state, O as getEnvString, T as getEnvBool, s as logger } from "./logger-DksKw1Qc.js";
|
|
3
|
+
import { C as transformToolChoice, m as REQUEST_TIMEOUT_MS, w as transformTools, x as parseChatPrompt } from "./fetch-BEWnXrrG.js";
|
|
4
|
+
import { r as importModule } from "./esm-tVgYPY-f.js";
|
|
5
|
+
import { n as withGenAISpan } from "./genaiTracer-DWdZ28hY.js";
|
|
6
|
+
import { n as renderVarsInObject } from "./render-CMEpfLaO.js";
|
|
7
|
+
import { a as fetchWithCache } from "./cache-mb7c8hbp.js";
|
|
8
|
+
import { i as isJavascriptFile } from "./fileExtensions-AWa2ZML4.js";
|
|
9
|
+
import { g as maybeLoadToolsFromExternalFile, h as maybeLoadResponseFormatFromExternalFile, m as maybeLoadFromExternalFileWithVars } from "./util-DxWpWjhc.js";
|
|
10
|
+
import { A as renderAuthVars, D as getAuthHeaders, E as applyQueryParams, O as getAuthQueryParams, i as transformMCPToolsToOpenAi, k as getOAuthTokenWithExpiry } from "./transform-zDhMmzwX.js";
|
|
11
|
+
import { t as OpenAiGenericProvider } from "./openai-Qsvz25mV.js";
|
|
12
|
+
import { a as calculateOpenAICost, c as getTokenUsage, t as OPENAI_CHAT_MODELS } from "./util-C9J8ahRn.js";
|
|
12
13
|
import path from "path";
|
|
13
14
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
14
15
|
//#region src/util/finishReason.ts
|
|
@@ -25,13 +26,14 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
|
25
26
|
*
|
|
26
27
|
* **Provider Mappings:**
|
|
27
28
|
* - OpenAI: `function_call` (legacy) → `tool_calls` (current)
|
|
28
|
-
* - Anthropic: `end_turn` → `stop`, `stop_sequence` → `stop`, `max_tokens` → `length`, `tool_use` → `tool_calls`
|
|
29
|
+
* - Anthropic: `end_turn` → `stop`, `stop_sequence` → `stop`, `max_tokens` → `length`, `tool_use` → `tool_calls`, `refusal` → `content_filter`, `pause_turn` → `pause_turn`
|
|
29
30
|
*
|
|
30
31
|
* @example
|
|
31
32
|
* ```typescript
|
|
32
33
|
* normalizeFinishReason('end_turn') // Returns: 'stop'
|
|
33
34
|
* normalizeFinishReason('max_tokens') // Returns: 'length'
|
|
34
35
|
* normalizeFinishReason('tool_use') // Returns: 'tool_calls'
|
|
36
|
+
* normalizeFinishReason('refusal') // Returns: 'content_filter'
|
|
35
37
|
* normalizeFinishReason('function_call') // Returns: 'tool_calls'
|
|
36
38
|
* normalizeFinishReason('unknown') // Returns: 'unknown' (passthrough)
|
|
37
39
|
* ```
|
|
@@ -45,7 +47,9 @@ const FINISH_REASON_MAP = {
|
|
|
45
47
|
end_turn: "stop",
|
|
46
48
|
stop_sequence: "stop",
|
|
47
49
|
max_tokens: "length",
|
|
48
|
-
tool_use: "tool_calls"
|
|
50
|
+
tool_use: "tool_calls",
|
|
51
|
+
refusal: "content_filter",
|
|
52
|
+
pause_turn: "pause_turn"
|
|
49
53
|
};
|
|
50
54
|
/**
|
|
51
55
|
* Normalize a provider-specific finish or stop reason to a standard OpenAI-compatible value.
|
|
@@ -101,7 +105,7 @@ var MCPClient = class {
|
|
|
101
105
|
transports = /* @__PURE__ */ new Map();
|
|
102
106
|
oauthConfigs = /* @__PURE__ */ new Map();
|
|
103
107
|
tokenExpiresAt = /* @__PURE__ */ new Map();
|
|
104
|
-
|
|
108
|
+
tokenRefreshLocks = /* @__PURE__ */ new Map();
|
|
105
109
|
get hasInitialized() {
|
|
106
110
|
return this.clients.size > 0;
|
|
107
111
|
}
|
|
@@ -233,31 +237,36 @@ var MCPClient = class {
|
|
|
233
237
|
async refreshOAuthTokenIfNeeded(serverKey) {
|
|
234
238
|
const oauthConfig = this.oauthConfigs.get(serverKey);
|
|
235
239
|
if (!oauthConfig) return;
|
|
236
|
-
|
|
240
|
+
await this.refreshOAuthToken(serverKey, oauthConfig, false);
|
|
241
|
+
}
|
|
242
|
+
hasValidToken(serverKey) {
|
|
237
243
|
const expiresAt = this.tokenExpiresAt.get(serverKey);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
+
return expiresAt != null && this.clients.has(serverKey) && Date.now() + 6e4 < expiresAt;
|
|
245
|
+
}
|
|
246
|
+
async refreshOAuthToken(serverKey, oauthConfig, forceRefresh) {
|
|
247
|
+
while (true) {
|
|
248
|
+
const existingRefreshPromise = this.tokenRefreshLocks.get(serverKey)?.promise;
|
|
249
|
+
if (!existingRefreshPromise) break;
|
|
244
250
|
logger.debug(`[MCP] Token refresh already in progress for ${serverKey}, waiting...`);
|
|
245
251
|
try {
|
|
246
|
-
await
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
logger.debug(`[MCP] Token expired while waiting for ${serverKey}, refreshing again...`);
|
|
252
|
+
await existingRefreshPromise;
|
|
253
|
+
if (this.hasValidToken(serverKey)) return;
|
|
254
|
+
logger.debug(`[MCP] Token still needs refresh for ${serverKey}, refreshing again...`);
|
|
250
255
|
} catch {
|
|
251
256
|
logger.debug(`[MCP] Previous token refresh failed for ${serverKey}, retrying...`);
|
|
252
257
|
}
|
|
253
258
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
259
|
+
if (!forceRefresh && this.hasValidToken(serverKey)) {
|
|
260
|
+
logger.debug(`[MCP] Token for ${serverKey} still valid, no refresh needed`);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
logger.debug(`[MCP] Refreshing OAuth token for server ${serverKey}`);
|
|
264
|
+
const refreshLock = { promise: this.performTokenRefresh(serverKey, oauthConfig) };
|
|
265
|
+
this.tokenRefreshLocks.set(serverKey, refreshLock);
|
|
257
266
|
try {
|
|
258
|
-
await
|
|
267
|
+
await refreshLock.promise;
|
|
259
268
|
} finally {
|
|
260
|
-
if (this.
|
|
269
|
+
if (this.tokenRefreshLocks.get(serverKey) === refreshLock) this.tokenRefreshLocks.delete(serverKey);
|
|
261
270
|
}
|
|
262
271
|
}
|
|
263
272
|
/**
|
|
@@ -275,9 +284,21 @@ var MCPClient = class {
|
|
|
275
284
|
}
|
|
276
285
|
async callTool(name, args) {
|
|
277
286
|
const requestOptions = getEffectiveRequestOptions(this.config);
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
287
|
+
const disconnectedServers = [];
|
|
288
|
+
for (const [serverKey, serverTools] of this.tools.entries()) if (serverTools.some((tool) => tool.name === name)) {
|
|
289
|
+
try {
|
|
290
|
+
await this.refreshOAuthTokenIfNeeded(serverKey);
|
|
291
|
+
} catch (error) {
|
|
292
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
293
|
+
logger.debug(`[MCP] Failed to refresh OAuth token for ${serverKey}, trying the next matching server: ${errorMessage}`);
|
|
294
|
+
}
|
|
295
|
+
const client = this.clients.get(serverKey);
|
|
296
|
+
if (!client) {
|
|
297
|
+
logger.debug(`[MCP] Server ${serverKey} is not connected, trying the next matching server`);
|
|
298
|
+
disconnectedServers.push(serverKey);
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
let currentClient = client;
|
|
281
302
|
let retried = false;
|
|
282
303
|
while (true) try {
|
|
283
304
|
const result = await currentClient.callTool({
|
|
@@ -302,7 +323,7 @@ var MCPClient = class {
|
|
|
302
323
|
logger.debug(`[MCP] Auth error for ${serverKey}, attempting reactive token refresh`);
|
|
303
324
|
retried = true;
|
|
304
325
|
try {
|
|
305
|
-
await this.
|
|
326
|
+
await this.refreshOAuthToken(serverKey, oauthConfig, true);
|
|
306
327
|
const newClient = this.clients.get(serverKey);
|
|
307
328
|
if (newClient) {
|
|
308
329
|
currentClient = newClient;
|
|
@@ -320,6 +341,10 @@ var MCPClient = class {
|
|
|
320
341
|
};
|
|
321
342
|
}
|
|
322
343
|
}
|
|
344
|
+
if (disconnectedServers.length > 0) {
|
|
345
|
+
const plural = disconnectedServers.length > 1 ? "s are" : " is";
|
|
346
|
+
throw new Error(`Tool ${name} is known but MCP server${plural} disconnected: ${disconnectedServers.join(", ")}`);
|
|
347
|
+
}
|
|
323
348
|
throw new Error(`Tool ${name} not found in any connected MCP server`);
|
|
324
349
|
}
|
|
325
350
|
async cleanup() {
|
|
@@ -335,7 +360,7 @@ var MCPClient = class {
|
|
|
335
360
|
this.tools.clear();
|
|
336
361
|
this.oauthConfigs.clear();
|
|
337
362
|
this.tokenExpiresAt.clear();
|
|
338
|
-
this.
|
|
363
|
+
this.tokenRefreshLocks.clear();
|
|
339
364
|
}
|
|
340
365
|
};
|
|
341
366
|
//#endregion
|
|
@@ -350,7 +375,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
350
375
|
constructor(modelName, options = {}) {
|
|
351
376
|
if (!OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelName)) logger.debug(`Using unknown chat model: ${modelName}`);
|
|
352
377
|
super(modelName, options);
|
|
353
|
-
this.config = options.config
|
|
378
|
+
this.config = options.config ? { ...options.config } : {};
|
|
354
379
|
if (this.config.mcp?.enabled) this.initializationPromise = this.initializeMCP();
|
|
355
380
|
}
|
|
356
381
|
async initializeMCP() {
|
|
@@ -488,6 +513,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
488
513
|
if (config.user) body.user = config.user;
|
|
489
514
|
if (config.metadata) body.metadata = config.metadata;
|
|
490
515
|
if (config.store !== void 0) body.store = config.store;
|
|
516
|
+
if ((isReasoningModel || isGPT5Model) && "max_tokens" in body) delete body.max_tokens;
|
|
491
517
|
return {
|
|
492
518
|
body,
|
|
493
519
|
config
|
|
@@ -495,7 +521,7 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
495
521
|
}
|
|
496
522
|
async callApi(prompt, context, callApiOptions) {
|
|
497
523
|
if (this.initializationPromise != null) await this.initializationPromise;
|
|
498
|
-
if (this.requiresApiKey() && !this.getApiKey()) throw new Error(
|
|
524
|
+
if (this.requiresApiKey() && !this.getApiKey()) throw new Error(this.getMissingApiKeyErrorMessage());
|
|
499
525
|
const spanContext = {
|
|
500
526
|
system: "openai",
|
|
501
527
|
operationName: "chat",
|
|
@@ -764,4 +790,4 @@ var OpenAiChatCompletionProvider = class OpenAiChatCompletionProvider extends Op
|
|
|
764
790
|
//#endregion
|
|
765
791
|
export { normalizeFinishReason as i, MCPClient as n, FINISH_REASON_MAP as r, OpenAiChatCompletionProvider as t };
|
|
766
792
|
|
|
767
|
-
//# sourceMappingURL=chat-
|
|
793
|
+
//# sourceMappingURL=chat-Dr3DUQ0D.js.map
|