@tencent-ai/agent-sdk 0.3.272 → 0.3.273

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 (142) hide show
  1. package/cli/CHANGELOG.md +17 -0
  2. package/cli/dist/codebuddy-headless.js +23 -23
  3. package/cli/dist/codebuddy-lite-wb.mjs +25 -25
  4. package/cli/dist/web-ui/assets/{CanvasPaneStandaloneView-DIn545ua.js → CanvasPaneStandaloneView-dyWkk4PZ.js} +1 -1
  5. package/cli/dist/web-ui/assets/{CanvasView-hnvCmPSV.js → CanvasView-DkhyH_1F.js} +1 -1
  6. package/cli/dist/web-ui/assets/{ChangesView-CtIfLmOc.js → ChangesView-CaHOWv2Z.js} +1 -1
  7. package/cli/dist/web-ui/assets/{DocsView-HBxNI97Q.js → DocsView-DiGzijj1.js} +1 -1
  8. package/cli/dist/web-ui/assets/{EditorView-DvwpvafF.js → EditorView-CUu0ekRP.js} +1 -1
  9. package/cli/dist/web-ui/assets/HoverHint-LssI0qEE.js +1 -0
  10. package/cli/dist/web-ui/assets/{KeybindingsView-B88MXgWr.js → KeybindingsView-DWUI1JpY.js} +1 -1
  11. package/cli/dist/web-ui/assets/{LogsView-DjF_5-Jd.js → LogsView-CEHx06nm.js} +1 -1
  12. package/cli/dist/web-ui/assets/{MetricsView-DImkPyZM.js → MetricsView-BZuMTUvp.js} +1 -1
  13. package/cli/dist/web-ui/assets/{PluginsView-2uPy3XvK.js → PluginsView-DPWy3FBq.js} +1 -1
  14. package/cli/dist/web-ui/assets/{RemoteControlView-kPy9GUlN.js → RemoteControlView-C1NdBeJw.js} +1 -1
  15. package/cli/dist/web-ui/assets/{SettingsView-CWRqL0oA.js → SettingsView-BJCKKgWV.js} +1 -1
  16. package/cli/dist/web-ui/assets/{SplitContainer-Dm1TgCaG.js → SplitContainer-BpAMtGSs.js} +1 -1
  17. package/cli/dist/web-ui/assets/{StatsView-okhz7xRe.js → StatsView-C-HzWG8r.js} +1 -1
  18. package/cli/dist/web-ui/assets/{TasksView-CICNpZ9N.js → TasksView-BnFNp4fv.js} +1 -1
  19. package/cli/dist/web-ui/assets/{TerminalPaneView-BFSDyqOG.js → TerminalPaneView-ALwEzbwH.js} +1 -1
  20. package/cli/dist/web-ui/assets/{TracesView-Burz_yeC.js → TracesView-t3wi7Kes.js} +1 -1
  21. package/cli/dist/web-ui/assets/{WorkersView-BqddwtUV.js → WorkersView-d7IuRA1g.js} +1 -1
  22. package/cli/dist/web-ui/assets/{abnfDiagram-O67JEVCF-33nTnJ2S.js → abnfDiagram-O67JEVCF-DlRX5Clr.js} +1 -1
  23. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-4118Qje4.js +1 -0
  24. package/cli/dist/web-ui/assets/{architectureDiagram-NJMV4G6O-FzGcEis5.js → architectureDiagram-NJMV4G6O-CvzoqRYj.js} +1 -1
  25. package/cli/dist/web-ui/assets/{blockDiagram-BEXU5L5S-DSx6FBt9.js → blockDiagram-BEXU5L5S-Dmo7FSbu.js} +1 -1
  26. package/cli/dist/web-ui/assets/{c4Diagram-YGBWAQC7-CF2SLLtS.js → c4Diagram-YGBWAQC7-D-rNXRo3.js} +1 -1
  27. package/cli/dist/web-ui/assets/{canvas-store-CTF2gk3l.js → canvas-store-C-T5LSPT.js} +1 -1
  28. package/cli/dist/web-ui/assets/channel-CzlEOE5Z.js +1 -0
  29. package/cli/dist/web-ui/assets/{chunk-3FUC2YCW-BSfDfOZA.js → chunk-3FUC2YCW-44Og191I.js} +1 -1
  30. package/cli/dist/web-ui/assets/{chunk-5DYCD2WN-Cw4uUnBv.js → chunk-5DYCD2WN-BMcJMkic.js} +1 -1
  31. package/cli/dist/web-ui/assets/{chunk-742MDFTN-Crj_2MBX.js → chunk-742MDFTN-C9Feux5F.js} +1 -1
  32. package/cli/dist/web-ui/assets/{chunk-7INBJB4K-CQzVOJr6.js → chunk-7INBJB4K-DFzU3uUY.js} +1 -1
  33. package/cli/dist/web-ui/assets/{chunk-7M6MHVWA-C0J56L0S.js → chunk-7M6MHVWA-BP_hs_Zh.js} +1 -1
  34. package/cli/dist/web-ui/assets/{chunk-7PRAP22T-CcX4ntNx.js → chunk-7PRAP22T-DhCB5ggZ.js} +1 -1
  35. package/cli/dist/web-ui/assets/{chunk-GTNCS2PH-UUmiv_WZ.js → chunk-GTNCS2PH-CgRQhFK-.js} +1 -1
  36. package/cli/dist/web-ui/assets/{chunk-GWA4HPMP-Cj2HSbZB.js → chunk-GWA4HPMP-DVQFlNrg.js} +1 -1
  37. package/cli/dist/web-ui/assets/{chunk-MBY4JIJT-BeWwQI_5.js → chunk-MBY4JIJT-ClsX9AV0.js} +1 -1
  38. package/cli/dist/web-ui/assets/{chunk-NETBCI7D-BXoE0wX2.js → chunk-NETBCI7D-Ok_AlsOs.js} +1 -1
  39. package/cli/dist/web-ui/assets/{chunk-O7XYJQB3-BkJCF4Hl.js → chunk-O7XYJQB3-BrUoQZlx.js} +1 -1
  40. package/cli/dist/web-ui/assets/{chunk-UA2S7LBM-BiEZLJdx.js → chunk-UA2S7LBM-CcImKd_4.js} +1 -1
  41. package/cli/dist/web-ui/assets/{chunk-WEXAMYUT-CVYmgL88.js → chunk-WEXAMYUT-DuMzoDxl.js} +1 -1
  42. package/cli/dist/web-ui/assets/{chunk-Z7XXMR3K-CNWwStqk.js → chunk-Z7XXMR3K-DNFavXEr.js} +1 -1
  43. package/cli/dist/web-ui/assets/{chunk-ZIGJFQKS-B2DOCzA_.js → chunk-ZIGJFQKS-C7Y7rwsz.js} +1 -1
  44. package/cli/dist/web-ui/assets/{classDiagram-v2-NBCMYWYE-Cg87JbAk.js → classDiagram-v2-NBCMYWYE-DtdQ5tsO.js} +1 -1
  45. package/cli/dist/web-ui/assets/{cssMode-CRv4tEjN.js → cssMode-DqpFSny4.js} +1 -1
  46. package/cli/dist/web-ui/assets/{cynefin-OW5HDTMX-CzRVph15.js → cynefin-OW5HDTMX-D-khVVHT.js} +1 -1
  47. package/cli/dist/web-ui/assets/{cynefinDiagram-VND7K2PF-CNBPnBJq.js → cynefinDiagram-VND7K2PF-D4SBf27A.js} +1 -1
  48. package/cli/dist/web-ui/assets/{dagre-6A5THRUB-Din1Iojv.js → dagre-6A5THRUB-DVdcjlZz.js} +1 -1
  49. package/cli/dist/web-ui/assets/{diagram-22UHCM2B-DYXr4hLX.js → diagram-22UHCM2B-N9qNPFGx.js} +1 -1
  50. package/cli/dist/web-ui/assets/{diagram-3UASUU5V-Q_QpApP2.js → diagram-3UASUU5V-BOrM2fJW.js} +1 -1
  51. package/cli/dist/web-ui/assets/{diagram-ATOU4E4O-B0cBUUAl.js → diagram-ATOU4E4O-BnlFCQjV.js} +1 -1
  52. package/cli/dist/web-ui/assets/{diagram-CDSNMT55-CqpNUvJt.js → diagram-CDSNMT55-Db7azPHL.js} +1 -1
  53. package/cli/dist/web-ui/assets/{diagram-MLGK6HIB-4ZDRCl9v.js → diagram-MLGK6HIB-Awr2vnnw.js} +1 -1
  54. package/cli/dist/web-ui/assets/{diagram-MPIPVDR6-t-N00d6f.js → diagram-MPIPVDR6-mMEzAWkb.js} +1 -1
  55. package/cli/dist/web-ui/assets/{ebnfDiagram-ZINNZB2B-DPflRvsG.js → ebnfDiagram-ZINNZB2B-DDcxPluf.js} +1 -1
  56. package/cli/dist/web-ui/assets/{editor-store-Bnu4yw4O.js → editor-store-BVy4DJoP.js} +1 -1
  57. package/cli/dist/web-ui/assets/{editor.main-BES2SJR1.js → editor.main-BPCdeUv0.js} +2 -2
  58. package/cli/dist/web-ui/assets/{elk-276RUBZZ-DMGj1qO4.js → elk-276RUBZZ-1ObyfSih.js} +1 -1
  59. package/cli/dist/web-ui/assets/{erDiagram-OPXOYQCR-DhPB_L2_.js → erDiagram-OPXOYQCR-85QZesG5.js} +1 -1
  60. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-DzcNhtMG.js +1 -0
  61. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-C7gZq6zs.js +1 -0
  62. package/cli/dist/web-ui/assets/{ganttDiagram-FUAMR5RP-BuNFnD8o.js → ganttDiagram-FUAMR5RP-CWKxEm2a.js} +1 -1
  63. package/cli/dist/web-ui/assets/{gitGraph-4MIJSDKK-DvwoNKUh.js → gitGraph-4MIJSDKK-Va9MqQP7.js} +1 -1
  64. package/cli/dist/web-ui/assets/{gitGraphDiagram-X574FWY7-CMVV2pN8.js → gitGraphDiagram-X574FWY7-CxDUZnv6.js} +1 -1
  65. package/cli/dist/web-ui/assets/{htmlMode-RPgBxfFT.js → htmlMode-CcmjLBK1.js} +1 -1
  66. package/cli/dist/web-ui/assets/index-BUL8iy6o.css +1 -0
  67. package/cli/dist/web-ui/assets/{index-BI5Z_cST.js → index-CcT-vg3O.js} +88 -88
  68. package/cli/dist/web-ui/assets/{info-A6RAGUB7-BkTwTvGc.js → info-A6RAGUB7-KlhzL_St.js} +1 -1
  69. package/cli/dist/web-ui/assets/{infoDiagram-VRGFBTTK-B9qpTfBj.js → infoDiagram-VRGFBTTK-COv85ylX.js} +1 -1
  70. package/cli/dist/web-ui/assets/{ishikawaDiagram-OU5B5YK6-CQYN-WJG.js → ishikawaDiagram-OU5B5YK6-B6LK0Dp0.js} +1 -1
  71. package/cli/dist/web-ui/assets/{journeyDiagram-ZHPQQLJL-Bhhb_1ix.js → journeyDiagram-ZHPQQLJL-7_gx-X1b.js} +1 -1
  72. package/cli/dist/web-ui/assets/{jsonMode-BmcV16dZ.js → jsonMode-DjeQHeec.js} +1 -1
  73. package/cli/dist/web-ui/assets/{kanban-definition-PNTS6WVX-2sWMVFOP.js → kanban-definition-PNTS6WVX-BuoY2Y9n.js} +1 -1
  74. package/cli/dist/web-ui/assets/{line-dyZ1bUO3.js → line-U1NpPN9F.js} +1 -1
  75. package/cli/dist/web-ui/assets/loader-circle-CbX-mRDA.js +1 -0
  76. package/cli/dist/web-ui/assets/{mermaid-parser.core-DCSwPqyy.js → mermaid-parser.core-CWo09gq-.js} +3 -3
  77. package/cli/dist/web-ui/assets/{mermaid.core-00vr9ukx.js → mermaid.core-ChqNs8I4.js} +4 -4
  78. package/cli/dist/web-ui/assets/{mindmap-definition-NLK3R4M7-CxnIh2aq.js → mindmap-definition-NLK3R4M7-CqCx8Oby.js} +1 -1
  79. package/cli/dist/web-ui/assets/{packet-AYTQ26CC-CMmSJjVl.js → packet-AYTQ26CC-7UVU8Lay.js} +1 -1
  80. package/cli/dist/web-ui/assets/{pegDiagram-GJSIUBJH-D4cdj7vr.js → pegDiagram-GJSIUBJH-BBJmKZzK.js} +1 -1
  81. package/cli/dist/web-ui/assets/{pie-WAS4IAKB-BesuGcpz.js → pie-WAS4IAKB-CWoQ0mW0.js} +1 -1
  82. package/cli/dist/web-ui/assets/{pieDiagram-5QR66LMP-BGskFaPj.js → pieDiagram-5QR66LMP-BbAkRCRb.js} +1 -1
  83. package/cli/dist/web-ui/assets/power-GWOABL7s.js +1 -0
  84. package/cli/dist/web-ui/assets/{quadrantDiagram-O4NWA36T-Bkvvkyx-.js → quadrantDiagram-O4NWA36T-Bcgl9szm.js} +1 -1
  85. package/cli/dist/web-ui/assets/{radar-RG4KPBEZ-Bj7UyIL-.js → radar-RG4KPBEZ-B0sDFvbJ.js} +1 -1
  86. package/cli/dist/web-ui/assets/{railroad-74A4TZTK-D2D2Em5k.js → railroad-74A4TZTK-C0abYTLu.js} +1 -1
  87. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-BhEAzBPy.js +1 -0
  88. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-BQshAF1C.js +1 -0
  89. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-BhzEUl06.js +1 -0
  90. package/cli/dist/web-ui/assets/{railroadDiagram-XR7U4H2S-kdQApYhY.js → railroadDiagram-XR7U4H2S-Xdtrah7h.js} +1 -1
  91. package/cli/dist/web-ui/assets/{requirementDiagram-PLB6GJNP-BqBC3CXU.js → requirementDiagram-PLB6GJNP-Dmm_Xtdj.js} +1 -1
  92. package/cli/dist/web-ui/assets/{sankeyDiagram-IPEJSGJF-DVzCsx-G.js → sankeyDiagram-IPEJSGJF-BExPBGN1.js} +1 -1
  93. package/cli/dist/web-ui/assets/{sequenceDiagram-PO4LG4MO-yG_YwbRF.js → sequenceDiagram-PO4LG4MO-DjyWwluL.js} +1 -1
  94. package/cli/dist/web-ui/assets/{server-CnUlxMCB.js → server-BYrFK9uI.js} +1 -1
  95. package/cli/dist/web-ui/assets/{sidebar-store-BECS2ZHH.js → sidebar-store-bTJzulZp.js} +1 -1
  96. package/cli/dist/web-ui/assets/{stateDiagram-v2-GCMORJYK-CTmS4-3L.js → stateDiagram-v2-GCMORJYK-BKgBFDVg.js} +1 -1
  97. package/cli/dist/web-ui/assets/{swimlanes-2SLR337P-B8qdR1JY.js → swimlanes-2SLR337P-vVovFCNH.js} +1 -1
  98. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-DRp2HW8M.js +8 -0
  99. package/cli/dist/web-ui/assets/{terminal-store-C9T3TvZG.js → terminal-store-CCHDZeLq.js} +1 -1
  100. package/cli/dist/web-ui/assets/{theme-store-e89BUV83.js → theme-store-Cvh0uW_P.js} +1 -1
  101. package/cli/dist/web-ui/assets/{timeline-definition-EJHVYXUP-DBuW2EtA.js → timeline-definition-EJHVYXUP-DkMh7Iif.js} +1 -1
  102. package/cli/dist/web-ui/assets/{timer-hXQHNuTF.js → timer-BJmcyIbv.js} +1 -1
  103. package/cli/dist/web-ui/assets/{treeView-Q6P3EWNA-DZwOY3Vo.js → treeView-Q6P3EWNA-DkhVSMV1.js} +1 -1
  104. package/cli/dist/web-ui/assets/{treemap-WGGIJYW6-KzsufT0z.js → treemap-WGGIJYW6-CWTt7auX.js} +1 -1
  105. package/cli/dist/web-ui/assets/{triangle-alert-Bgaqn5eg.js → triangle-alert-CGAm2zgw.js} +1 -1
  106. package/cli/dist/web-ui/assets/{tsMode-DmXjlKw6.js → tsMode-92q32nO9.js} +1 -1
  107. package/cli/dist/web-ui/assets/use-i18n-pIrmaYmw.js +10 -0
  108. package/cli/dist/web-ui/assets/{usecaseDiagram-POWQR4AR-CMUsnek4.js → usecaseDiagram-POWQR4AR-Cmkzn47X.js} +1 -1
  109. package/cli/dist/web-ui/assets/{vennDiagram-UO4OBE2U-DfvnmEI-.js → vennDiagram-UO4OBE2U-krvLAVN1.js} +1 -1
  110. package/cli/dist/web-ui/assets/{wardley-WFR3VGLG-gMMXWBBC.js → wardley-WFR3VGLG-D5c13zW9.js} +1 -1
  111. package/cli/dist/web-ui/assets/{wardleyDiagram-VNRHLVJA-Dg12ciAd.js → wardleyDiagram-VNRHLVJA-CrnhHeux.js} +1 -1
  112. package/cli/dist/web-ui/assets/{workspace-dock-store-uPe33-_O.js → workspace-dock-store-DnFjd3tC.js} +1 -1
  113. package/cli/dist/web-ui/assets/{xychartDiagram-PMCCYNJV-DF6GiPla.js → xychartDiagram-PMCCYNJV-CUWbjTrP.js} +1 -1
  114. package/cli/dist/web-ui/assets/{zap-nSKVK-41.js → zap-BbNNHf5_.js} +1 -1
  115. package/cli/dist/web-ui/index.html +11 -11
  116. package/cli/dist/web-ui/sw.js +1 -1
  117. package/cli/dist-server/3163.codebuddy.js +1 -1
  118. package/cli/dist-server/3209.codebuddy.js +2 -2
  119. package/cli/dist-server/codebuddy.js +7 -7
  120. package/cli/dist-server/types/node/agent-home/agent-home-agent-create.d.ts +5 -0
  121. package/cli/dist-server/types/vendor/cbc-core/node/session/session-admission-service.d.ts +6 -0
  122. package/cli/dist-server/types/vendor/cbc-shared/node/model/model-errors.d.ts +5 -2
  123. package/cli/package.json +1 -1
  124. package/cli/product.cloudhosted.json +2 -2
  125. package/cli/product.internal.json +2 -2
  126. package/cli/product.ioa.json +2 -2
  127. package/cli/product.json +2 -2
  128. package/cli/product.selfhosted.json +2 -2
  129. package/package.json +1 -1
  130. package/cli/dist/web-ui/assets/HoverHint-D2G73lbr.js +0 -1
  131. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-DIJIAReN.js +0 -1
  132. package/cli/dist/web-ui/assets/channel-Oqc_5uJL.js +0 -1
  133. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-DhJKLgIL.js +0 -1
  134. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-C8j8-NKs.js +0 -1
  135. package/cli/dist/web-ui/assets/index-_kDd5loD.css +0 -1
  136. package/cli/dist/web-ui/assets/loader-circle-OavGeXCF.js +0 -1
  137. package/cli/dist/web-ui/assets/power-f1Ij2Msg.js +0 -1
  138. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-qU-l3gTW.js +0 -1
  139. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-Co7bnXh9.js +0 -1
  140. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-BE_5lCh8.js +0 -1
  141. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-B2Lj57-K.js +0 -8
  142. package/cli/dist/web-ui/assets/use-i18n-BvN1piiI.js +0 -10
@@ -1 +1 @@
1
- if(!self.define){let s,l={};const e=(e,i)=>(e=new URL(e+".js",i).href,l[e]||new Promise(l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()}).then(()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s}));self.define=(i,r)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const a=s=>e(s,n),o={module:{uri:n},exports:u,require:a};l[n]=Promise.all(i.map(s=>o[s]||a(s))).then(s=>(r(...s),u))}}define(["./workbox-fed2bdfe"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"sandbox_proxy.html",revision:"e54bd087bf8b90d87d84c3cd8f2c22e9"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"index.html",revision:"06340c5c2991c9dea3f6d5eb83352f39"},{url:"assets/zap-nSKVK-41.js",revision:null},{url:"assets/yaml-BJYL-SKO.js",revision:null},{url:"assets/xychartDiagram-PMCCYNJV-DF6GiPla.js",revision:null},{url:"assets/xml-B__rTQhy.js",revision:null},{url:"assets/workspace-dock-store-uPe33-_O.js",revision:null},{url:"assets/workbox-window.prod.es5-Bd17z0YL.js",revision:null},{url:"assets/wgsl-DpFanUEy.js",revision:null},{url:"assets/wardleyDiagram-VNRHLVJA-Dg12ciAd.js",revision:null},{url:"assets/wardley-WFR3VGLG-gMMXWBBC.js",revision:null},{url:"assets/vennDiagram-UO4OBE2U-DfvnmEI-.js",revision:null},{url:"assets/vendor-D7d5DZKE.js",revision:null},{url:"assets/vb-DV3o63ZY.js",revision:null},{url:"assets/usecaseDiagram-POWQR4AR-CMUsnek4.js",revision:null},{url:"assets/use-i18n-BvN1piiI.js",revision:null},{url:"assets/typespec-B8J7ngcE.js",revision:null},{url:"assets/typescript-DVVhSeLw.js",revision:null},{url:"assets/twig-De2hgUGE.js",revision:null},{url:"assets/tsMode-DmXjlKw6.js",revision:null},{url:"assets/triangle-alert-Bgaqn5eg.js",revision:null},{url:"assets/treemap-WGGIJYW6-KzsufT0z.js",revision:null},{url:"assets/treeView-Q6P3EWNA-DZwOY3Vo.js",revision:null},{url:"assets/timer-hXQHNuTF.js",revision:null},{url:"assets/timeline-definition-EJHVYXUP-DBuW2EtA.js",revision:null},{url:"assets/theme-store-e89BUV83.js",revision:null},{url:"assets/terminal-store-C9T3TvZG.js",revision:null},{url:"assets/tcl-DISqw1ZD.js",revision:null},{url:"assets/systemverilog-Bz4Y3fRF.js",revision:null},{url:"assets/swimlanesDiagram-TC7HE7FX-B2Lj57-K.js",revision:null},{url:"assets/swimlanes-2SLR337P-B8qdR1JY.js",revision:null},{url:"assets/swift-Bxkupp3x.js",revision:null},{url:"assets/stateDiagram-v2-GCMORJYK-CTmS4-3L.js",revision:null},{url:"assets/st-DbInun42.js",revision:null},{url:"assets/src-oBChb5qS.js",revision:null},{url:"assets/sql-NEE52Syq.js",revision:null},{url:"assets/sparql-D_Lu-MrJ.js",revision:null},{url:"assets/sophia-CRfGWb83.js",revision:null},{url:"assets/solidity-BEEn4gHE.js",revision:null},{url:"assets/sizeCapture-INFHLROL-3uHXrFqA.js",revision:null},{url:"assets/sidebar-store-BECS2ZHH.js",revision:null},{url:"assets/shell-CC2rA5mh.js",revision:null},{url:"assets/server-CnUlxMCB.js",revision:null},{url:"assets/sequenceDiagram-PO4LG4MO-yG_YwbRF.js",revision:null},{url:"assets/scss-gp-XZpBa.js",revision:null},{url:"assets/scheme-BeGwcela.js",revision:null},{url:"assets/scala-DHpiXF5c.js",revision:null},{url:"assets/sb-CcwsVR0C.js",revision:null},{url:"assets/sankeyDiagram-IPEJSGJF-DVzCsx-G.js",revision:null},{url:"assets/rust-DdL9SqIa.js",revision:null},{url:"assets/ruby-DezsRK8O.js",revision:null},{url:"assets/rough.esm-Dy-Kn_BL.js",revision:null},{url:"assets/rolldown-runtime-Dd_uD5pT.js",revision:null},{url:"assets/restructuredtext-BYgofb2h.js",revision:null},{url:"assets/requirementDiagram-PLB6GJNP-BqBC3CXU.js",revision:null},{url:"assets/redshift-DT7zqm-g.js",revision:null},{url:"assets/redis-ClamHrr6.js",revision:null},{url:"assets/razor-BfoeKXah.js",revision:null},{url:"assets/railroadDiagram-XR7U4H2S-kdQApYhY.js",revision:null},{url:"assets/railroad-peg-WCYAUIDC-BE_5lCh8.js",revision:null},{url:"assets/railroad-ebnf-LZEXJU2U-Co7bnXh9.js",revision:null},{url:"assets/railroad-abnf-HS5TGJTU-qU-l3gTW.js",revision:null},{url:"assets/railroad-74A4TZTK-D2D2Em5k.js",revision:null},{url:"assets/radar-RG4KPBEZ-Bj7UyIL-.js",revision:null},{url:"assets/r-BwWrilGY.js",revision:null},{url:"assets/quadrantDiagram-O4NWA36T-Bkvvkyx-.js",revision:null},{url:"assets/qsharp-DkqhCAOL.js",revision:null},{url:"assets/python-EIL9M2bl.js",revision:null},{url:"assets/pug-Z5eAx3Zn.js",revision:null},{url:"assets/protobuf-C531GsRP.js",revision:null},{url:"assets/powershell-DmHpPYUd.js",revision:null},{url:"assets/powerquery-D3hlyOfw.js",revision:null},{url:"assets/power-f1Ij2Msg.js",revision:null},{url:"assets/postiats-43DmfD33.js",revision:null},{url:"assets/pla-CopQ2nXW.js",revision:null},{url:"assets/pieDiagram-5QR66LMP-BGskFaPj.js",revision:null},{url:"assets/pie-WAS4IAKB-BesuGcpz.js",revision:null},{url:"assets/php-nr791fC2.js",revision:null},{url:"assets/pgsql-DTj74zXo.js",revision:null},{url:"assets/perl-oz_6vUea.js",revision:null},{url:"assets/pegDiagram-GJSIUBJH-D4cdj7vr.js",revision:null},{url:"assets/path-fybaL0A-.js",revision:null},{url:"assets/pascaligo-D-ptJ9y-.js",revision:null},{url:"assets/pascal-DrH0SRf2.js",revision:null},{url:"assets/packet-AYTQ26CC-CMmSJjVl.js",revision:null},{url:"assets/ordinal-BDEzSJ7C.js",revision:null},{url:"assets/one-light-B9flS40H.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/objective-c-FvmIjYaQ.js",revision:null},{url:"assets/mysql-SOo6toE5.js",revision:null},{url:"assets/msdax-DauUninz.js",revision:null},{url:"assets/mips-CIPQ_RoX.js",revision:null},{url:"assets/mindmap-definition-NLK3R4M7-CxnIh2aq.js",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/mermaid.core-00vr9ukx.js",revision:null},{url:"assets/mermaid-parser.core-DCSwPqyy.js",revision:null},{url:"assets/mdx-IUsuOIdX.js",revision:null},{url:"assets/markdown-DEcVZfaU.css",revision:null},{url:"assets/markdown-DCKhnxE9.js",revision:null},{url:"assets/markdown-Cimd5fb3.js",revision:null},{url:"assets/m3-D-oSqn_W.js",revision:null},{url:"assets/lua-CsQS60Ue.js",revision:null},{url:"assets/lspLanguageFeatures-DosEZB2t.js",revision:null},{url:"assets/loader-circle-OavGeXCF.js",revision:null},{url:"assets/liquid-Bz6ip2ZX.js",revision:null},{url:"assets/linear-BUnzfXgk.js",revision:null},{url:"assets/line-dyZ1bUO3.js",revision:null},{url:"assets/lexon-CfSJPG6W.js",revision:null},{url:"assets/less-B9JPFI3C.js",revision:null},{url:"assets/kotlin-BOotOW0E.js",revision:null},{url:"assets/kanban-definition-PNTS6WVX-2sWMVFOP.js",revision:null},{url:"assets/julia-Bri6UV-V.js",revision:null},{url:"assets/jsonMode-BmcV16dZ.js",revision:null},{url:"assets/journeyDiagram-ZHPQQLJL-Bhhb_1ix.js",revision:null},{url:"assets/javascript-B7xbQhF8.js",revision:null},{url:"assets/java-BEtHBSE6.js",revision:null},{url:"assets/ishikawaDiagram-OU5B5YK6-CQYN-WJG.js",revision:null},{url:"assets/init-C-OQMol4.js",revision:null},{url:"assets/ini-sBoK_t0W.js",revision:null},{url:"assets/infoDiagram-VRGFBTTK-B9qpTfBj.js",revision:null},{url:"assets/info-A6RAGUB7-BkTwTvGc.js",revision:null},{url:"assets/index-_kDd5loD.css",revision:null},{url:"assets/index-BI5Z_cST.js",revision:null},{url:"assets/htmlMode-RPgBxfFT.js",revision:null},{url:"assets/html-C26_S8V7.js",revision:null},{url:"assets/hcl-CpzslTdj.js",revision:null},{url:"assets/handlebars-DoP9T-VM.js",revision:null},{url:"assets/graphql-fmXr3nnJ.js",revision:null},{url:"assets/graphlib-DS17s2tU.js",revision:null},{url:"assets/go-C-y9NEjX.js",revision:null},{url:"assets/gitGraphDiagram-X574FWY7-CMVV2pN8.js",revision:null},{url:"assets/gitGraph-4MIJSDKK-DvwoNKUh.js",revision:null},{url:"assets/ganttDiagram-FUAMR5RP-BuNFnD8o.js",revision:null},{url:"assets/fsharp-C8Ef5oNN.js",revision:null},{url:"assets/freemarker2-DVo8xgW6.js",revision:null},{url:"assets/fontawesome-B-jkhYfk.woff2",revision:null},{url:"assets/flowDiagram-KWPJA3E3-C8j8-NKs.js",revision:null},{url:"assets/flow9-C5_-GSwl.js",revision:null},{url:"assets/file-icons-C0jOugUK.woff2",revision:null},{url:"assets/eventmodeling-NTZA5JFV-DhJKLgIL.js",revision:null},{url:"assets/erDiagram-OPXOYQCR-DhPB_L2_.js",revision:null},{url:"assets/elk-276RUBZZ-DMGj1qO4.js",revision:null},{url:"assets/elixir-6RTg0lbw.js",revision:null},{url:"assets/editor.api2-CdxXemhu.js",revision:null},{url:"assets/editor-store-Bnu4yw4O.js",revision:null},{url:"assets/editor-DOgAgpTS.css",revision:null},{url:"assets/ecl-D05T4iGw.js",revision:null},{url:"assets/ebnfDiagram-ZINNZB2B-DPflRvsG.js",revision:null},{url:"assets/dockerfile-DZFCIeNp.js",revision:null},{url:"assets/dist-B_J_HbC0.js",revision:null},{url:"assets/diagram-MPIPVDR6-t-N00d6f.js",revision:null},{url:"assets/diagram-MLGK6HIB-4ZDRCl9v.js",revision:null},{url:"assets/diagram-CDSNMT55-CqpNUvJt.js",revision:null},{url:"assets/diagram-ATOU4E4O-B0cBUUAl.js",revision:null},{url:"assets/diagram-3UASUU5V-Q_QpApP2.js",revision:null},{url:"assets/diagram-22UHCM2B-DYXr4hLX.js",revision:null},{url:"assets/devopicons-QN4QXivI.woff2",revision:null},{url:"assets/defaultLocale-BFoDCU3G.js",revision:null},{url:"assets/dart-onAF5SnQ.js",revision:null},{url:"assets/dagre-6A5THRUB-Din1Iojv.js",revision:null},{url:"assets/cytoscape.esm-EK2DW5Qr.js",revision:null},{url:"assets/cypher-CVaqCwHa.js",revision:null},{url:"assets/cynefinDiagram-VND7K2PF-CNBPnBJq.js",revision:null},{url:"assets/cynefin-OW5HDTMX-CzRVph15.js",revision:null},{url:"assets/cssMode-CRv4tEjN.js",revision:null},{url:"assets/css-DIMkf-bt.js",revision:null},{url:"assets/csp-bTuwJoIa.js",revision:null},{url:"assets/csharp-BKxtCVv1.js",revision:null},{url:"assets/cpp-C7h46wYY.js",revision:null},{url:"assets/cose-bilkent-JH36ORCC-CelrFX7F.js",revision:null},{url:"assets/composer-selection-ulujmy_S.js",revision:null},{url:"assets/coffee-Ba7i2nA0.js",revision:null},{url:"assets/clojure-Cm7r79vr.js",revision:null},{url:"assets/classDiagram-v2-NBCMYWYE-Cg87JbAk.js",revision:null},{url:"assets/chunk-ZIGJFQKS-B2DOCzA_.js",revision:null},{url:"assets/chunk-Z7XXMR3K-CNWwStqk.js",revision:null},{url:"assets/chunk-Y2CYZVJY-DsF7k-Jl.js",revision:null},{url:"assets/chunk-XXDRQBXY-BvKO0v-W.js",revision:null},{url:"assets/chunk-WEXAMYUT-CVYmgL88.js",revision:null},{url:"assets/chunk-UA2S7LBM-BiEZLJdx.js",revision:null},{url:"assets/chunk-O7XYJQB3-BkJCF4Hl.js",revision:null},{url:"assets/chunk-NETBCI7D-BXoE0wX2.js",revision:null},{url:"assets/chunk-MBY4JIJT-BeWwQI_5.js",revision:null},{url:"assets/chunk-JWPE2WC7-DVXcaiue.js",revision:null},{url:"assets/chunk-J5ZVWO5B-oDCd-gWO.js",revision:null},{url:"assets/chunk-GWA4HPMP-Cj2HSbZB.js",revision:null},{url:"assets/chunk-GTNCS2PH-UUmiv_WZ.js",revision:null},{url:"assets/chunk-FOHPRMQF-DzxwRta7.js",revision:null},{url:"assets/chunk-DUW6YSOI-Dgx8z5s3.js",revision:null},{url:"assets/chunk-7PRAP22T-CcX4ntNx.js",revision:null},{url:"assets/chunk-7M6MHVWA-C0J56L0S.js",revision:null},{url:"assets/chunk-7INBJB4K-CQzVOJr6.js",revision:null},{url:"assets/chunk-742MDFTN-Crj_2MBX.js",revision:null},{url:"assets/chunk-5VM5RSS4-ZNzvKenW.js",revision:null},{url:"assets/chunk-5DYCD2WN-Cw4uUnBv.js",revision:null},{url:"assets/chunk-3FUC2YCW-BSfDfOZA.js",revision:null},{url:"assets/chunk-2Q5K7J3B-C1jixKkw.js",revision:null},{url:"assets/channel-Oqc_5uJL.js",revision:null},{url:"assets/canvas-store-CTF2gk3l.js",revision:null},{url:"assets/cameligo-DMUM7wLl.js",revision:null},{url:"assets/c4Diagram-YGBWAQC7-CF2SLLtS.js",revision:null},{url:"assets/browserify-C-6GKAAm.js",revision:null},{url:"assets/blockDiagram-BEXU5L5S-DSx6FBt9.js",revision:null},{url:"assets/bicep-B5-_aFwp.js",revision:null},{url:"assets/bat-i0X4ZdIN.js",revision:null},{url:"assets/azcli-Bc_sGQ0U.js",revision:null},{url:"assets/array-BifhSqXX.js",revision:null},{url:"assets/architectureDiagram-NJMV4G6O-FzGcEis5.js",revision:null},{url:"assets/architecture-7GRP2DOG-DIJIAReN.js",revision:null},{url:"assets/arc-DgcGdgmL.js",revision:null},{url:"assets/apex-BWPQTe0t.js",revision:null},{url:"assets/abnfDiagram-O67JEVCF-33nTnJ2S.js",revision:null},{url:"assets/abap-08VXUWAP.js",revision:null},{url:"assets/WorkersView-BqddwtUV.js",revision:null},{url:"assets/TracesView-Burz_yeC.js",revision:null},{url:"assets/TerminalPaneView-BFSDyqOG.js",revision:null},{url:"assets/TasksView-CICNpZ9N.js",revision:null},{url:"assets/StatsView-okhz7xRe.js",revision:null},{url:"assets/SplitContainer-Dm1TgCaG.js",revision:null},{url:"assets/SettingsView-CWRqL0oA.js",revision:null},{url:"assets/RemoteControlView-kPy9GUlN.js",revision:null},{url:"assets/PluginsView-2uPy3XvK.js",revision:null},{url:"assets/MetricsView-DImkPyZM.js",revision:null},{url:"assets/LogsView-DjF_5-Jd.js",revision:null},{url:"assets/KeybindingsView-B88MXgWr.js",revision:null},{url:"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2",revision:null},{url:"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2",revision:null},{url:"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2",revision:null},{url:"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2",revision:null},{url:"assets/KaTeX_Script-Regular-D3wIWfF6.woff2",revision:null},{url:"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2",revision:null},{url:"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2",revision:null},{url:"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2",revision:null},{url:"assets/KaTeX_Math-Italic-t53AETM-.woff2",revision:null},{url:"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2",revision:null},{url:"assets/KaTeX_Main-Regular-B22Nviop.woff2",revision:null},{url:"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2",revision:null},{url:"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2",revision:null},{url:"assets/KaTeX_Main-Bold-Cx986IdX.woff2",revision:null},{url:"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2",revision:null},{url:"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2",revision:null},{url:"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2",revision:null},{url:"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2",revision:null},{url:"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2",revision:null},{url:"assets/HoverHint-D2G73lbr.js",revision:null},{url:"assets/EditorView-DvwpvafF.js",revision:null},{url:"assets/DocsView-HBxNI97Q.js",revision:null},{url:"assets/ChangesView-CtIfLmOc.js",revision:null},{url:"assets/CanvasView-hnvCmPSV.js",revision:null},{url:"assets/CanvasPaneStandaloneView-DIn545ua.js",revision:null},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"manifest.webmanifest",revision:"7a003d0094122eb3e607566c757e9885"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\/(?!v1\/jobs\/[^/]+\/frame\/?$)/,/^\/gateway/,/^\/docs\//]})),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
1
+ if(!self.define){let s,l={};const e=(e,i)=>(e=new URL(e+".js",i).href,l[e]||new Promise(l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()}).then(()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s}));self.define=(i,r)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const a=s=>e(s,n),o={module:{uri:n},exports:u,require:a};l[n]=Promise.all(i.map(s=>o[s]||a(s))).then(s=>(r(...s),u))}}define(["./workbox-fed2bdfe"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"sandbox_proxy.html",revision:"e54bd087bf8b90d87d84c3cd8f2c22e9"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"index.html",revision:"374ccb71e656f41c9597c28268a9441c"},{url:"assets/zap-BbNNHf5_.js",revision:null},{url:"assets/yaml-BJYL-SKO.js",revision:null},{url:"assets/xychartDiagram-PMCCYNJV-CUWbjTrP.js",revision:null},{url:"assets/xml-B__rTQhy.js",revision:null},{url:"assets/workspace-dock-store-DnFjd3tC.js",revision:null},{url:"assets/workbox-window.prod.es5-Bd17z0YL.js",revision:null},{url:"assets/wgsl-DpFanUEy.js",revision:null},{url:"assets/wardleyDiagram-VNRHLVJA-CrnhHeux.js",revision:null},{url:"assets/wardley-WFR3VGLG-D5c13zW9.js",revision:null},{url:"assets/vennDiagram-UO4OBE2U-krvLAVN1.js",revision:null},{url:"assets/vendor-D7d5DZKE.js",revision:null},{url:"assets/vb-DV3o63ZY.js",revision:null},{url:"assets/usecaseDiagram-POWQR4AR-Cmkzn47X.js",revision:null},{url:"assets/use-i18n-pIrmaYmw.js",revision:null},{url:"assets/typespec-B8J7ngcE.js",revision:null},{url:"assets/typescript-DVVhSeLw.js",revision:null},{url:"assets/twig-De2hgUGE.js",revision:null},{url:"assets/tsMode-92q32nO9.js",revision:null},{url:"assets/triangle-alert-CGAm2zgw.js",revision:null},{url:"assets/treemap-WGGIJYW6-CWTt7auX.js",revision:null},{url:"assets/treeView-Q6P3EWNA-DkhVSMV1.js",revision:null},{url:"assets/timer-BJmcyIbv.js",revision:null},{url:"assets/timeline-definition-EJHVYXUP-DkMh7Iif.js",revision:null},{url:"assets/theme-store-Cvh0uW_P.js",revision:null},{url:"assets/terminal-store-CCHDZeLq.js",revision:null},{url:"assets/tcl-DISqw1ZD.js",revision:null},{url:"assets/systemverilog-Bz4Y3fRF.js",revision:null},{url:"assets/swimlanesDiagram-TC7HE7FX-DRp2HW8M.js",revision:null},{url:"assets/swimlanes-2SLR337P-vVovFCNH.js",revision:null},{url:"assets/swift-Bxkupp3x.js",revision:null},{url:"assets/stateDiagram-v2-GCMORJYK-BKgBFDVg.js",revision:null},{url:"assets/st-DbInun42.js",revision:null},{url:"assets/src-oBChb5qS.js",revision:null},{url:"assets/sql-NEE52Syq.js",revision:null},{url:"assets/sparql-D_Lu-MrJ.js",revision:null},{url:"assets/sophia-CRfGWb83.js",revision:null},{url:"assets/solidity-BEEn4gHE.js",revision:null},{url:"assets/sizeCapture-INFHLROL-3uHXrFqA.js",revision:null},{url:"assets/sidebar-store-bTJzulZp.js",revision:null},{url:"assets/shell-CC2rA5mh.js",revision:null},{url:"assets/server-BYrFK9uI.js",revision:null},{url:"assets/sequenceDiagram-PO4LG4MO-DjyWwluL.js",revision:null},{url:"assets/scss-gp-XZpBa.js",revision:null},{url:"assets/scheme-BeGwcela.js",revision:null},{url:"assets/scala-DHpiXF5c.js",revision:null},{url:"assets/sb-CcwsVR0C.js",revision:null},{url:"assets/sankeyDiagram-IPEJSGJF-BExPBGN1.js",revision:null},{url:"assets/rust-DdL9SqIa.js",revision:null},{url:"assets/ruby-DezsRK8O.js",revision:null},{url:"assets/rough.esm-Dy-Kn_BL.js",revision:null},{url:"assets/rolldown-runtime-Dd_uD5pT.js",revision:null},{url:"assets/restructuredtext-BYgofb2h.js",revision:null},{url:"assets/requirementDiagram-PLB6GJNP-Dmm_Xtdj.js",revision:null},{url:"assets/redshift-DT7zqm-g.js",revision:null},{url:"assets/redis-ClamHrr6.js",revision:null},{url:"assets/razor-BfoeKXah.js",revision:null},{url:"assets/railroadDiagram-XR7U4H2S-Xdtrah7h.js",revision:null},{url:"assets/railroad-peg-WCYAUIDC-BhzEUl06.js",revision:null},{url:"assets/railroad-ebnf-LZEXJU2U-BQshAF1C.js",revision:null},{url:"assets/railroad-abnf-HS5TGJTU-BhEAzBPy.js",revision:null},{url:"assets/railroad-74A4TZTK-C0abYTLu.js",revision:null},{url:"assets/radar-RG4KPBEZ-B0sDFvbJ.js",revision:null},{url:"assets/r-BwWrilGY.js",revision:null},{url:"assets/quadrantDiagram-O4NWA36T-Bcgl9szm.js",revision:null},{url:"assets/qsharp-DkqhCAOL.js",revision:null},{url:"assets/python-EIL9M2bl.js",revision:null},{url:"assets/pug-Z5eAx3Zn.js",revision:null},{url:"assets/protobuf-C531GsRP.js",revision:null},{url:"assets/powershell-DmHpPYUd.js",revision:null},{url:"assets/powerquery-D3hlyOfw.js",revision:null},{url:"assets/power-GWOABL7s.js",revision:null},{url:"assets/postiats-43DmfD33.js",revision:null},{url:"assets/pla-CopQ2nXW.js",revision:null},{url:"assets/pieDiagram-5QR66LMP-BbAkRCRb.js",revision:null},{url:"assets/pie-WAS4IAKB-CWoQ0mW0.js",revision:null},{url:"assets/php-nr791fC2.js",revision:null},{url:"assets/pgsql-DTj74zXo.js",revision:null},{url:"assets/perl-oz_6vUea.js",revision:null},{url:"assets/pegDiagram-GJSIUBJH-BBJmKZzK.js",revision:null},{url:"assets/path-fybaL0A-.js",revision:null},{url:"assets/pascaligo-D-ptJ9y-.js",revision:null},{url:"assets/pascal-DrH0SRf2.js",revision:null},{url:"assets/packet-AYTQ26CC-7UVU8Lay.js",revision:null},{url:"assets/ordinal-BDEzSJ7C.js",revision:null},{url:"assets/one-light-B9flS40H.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/objective-c-FvmIjYaQ.js",revision:null},{url:"assets/mysql-SOo6toE5.js",revision:null},{url:"assets/msdax-DauUninz.js",revision:null},{url:"assets/mips-CIPQ_RoX.js",revision:null},{url:"assets/mindmap-definition-NLK3R4M7-CqCx8Oby.js",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/mermaid.core-ChqNs8I4.js",revision:null},{url:"assets/mermaid-parser.core-CWo09gq-.js",revision:null},{url:"assets/mdx-IUsuOIdX.js",revision:null},{url:"assets/markdown-DEcVZfaU.css",revision:null},{url:"assets/markdown-DCKhnxE9.js",revision:null},{url:"assets/markdown-Cimd5fb3.js",revision:null},{url:"assets/m3-D-oSqn_W.js",revision:null},{url:"assets/lua-CsQS60Ue.js",revision:null},{url:"assets/lspLanguageFeatures-DosEZB2t.js",revision:null},{url:"assets/loader-circle-CbX-mRDA.js",revision:null},{url:"assets/liquid-Bz6ip2ZX.js",revision:null},{url:"assets/linear-BUnzfXgk.js",revision:null},{url:"assets/line-U1NpPN9F.js",revision:null},{url:"assets/lexon-CfSJPG6W.js",revision:null},{url:"assets/less-B9JPFI3C.js",revision:null},{url:"assets/kotlin-BOotOW0E.js",revision:null},{url:"assets/kanban-definition-PNTS6WVX-BuoY2Y9n.js",revision:null},{url:"assets/julia-Bri6UV-V.js",revision:null},{url:"assets/jsonMode-DjeQHeec.js",revision:null},{url:"assets/journeyDiagram-ZHPQQLJL-7_gx-X1b.js",revision:null},{url:"assets/javascript-B7xbQhF8.js",revision:null},{url:"assets/java-BEtHBSE6.js",revision:null},{url:"assets/ishikawaDiagram-OU5B5YK6-B6LK0Dp0.js",revision:null},{url:"assets/init-C-OQMol4.js",revision:null},{url:"assets/ini-sBoK_t0W.js",revision:null},{url:"assets/infoDiagram-VRGFBTTK-COv85ylX.js",revision:null},{url:"assets/info-A6RAGUB7-KlhzL_St.js",revision:null},{url:"assets/index-CcT-vg3O.js",revision:null},{url:"assets/index-BUL8iy6o.css",revision:null},{url:"assets/htmlMode-CcmjLBK1.js",revision:null},{url:"assets/html-C26_S8V7.js",revision:null},{url:"assets/hcl-CpzslTdj.js",revision:null},{url:"assets/handlebars-DoP9T-VM.js",revision:null},{url:"assets/graphql-fmXr3nnJ.js",revision:null},{url:"assets/graphlib-DS17s2tU.js",revision:null},{url:"assets/go-C-y9NEjX.js",revision:null},{url:"assets/gitGraphDiagram-X574FWY7-CxDUZnv6.js",revision:null},{url:"assets/gitGraph-4MIJSDKK-Va9MqQP7.js",revision:null},{url:"assets/ganttDiagram-FUAMR5RP-CWKxEm2a.js",revision:null},{url:"assets/fsharp-C8Ef5oNN.js",revision:null},{url:"assets/freemarker2-DVo8xgW6.js",revision:null},{url:"assets/fontawesome-B-jkhYfk.woff2",revision:null},{url:"assets/flowDiagram-KWPJA3E3-C7gZq6zs.js",revision:null},{url:"assets/flow9-C5_-GSwl.js",revision:null},{url:"assets/file-icons-C0jOugUK.woff2",revision:null},{url:"assets/eventmodeling-NTZA5JFV-DzcNhtMG.js",revision:null},{url:"assets/erDiagram-OPXOYQCR-85QZesG5.js",revision:null},{url:"assets/elk-276RUBZZ-1ObyfSih.js",revision:null},{url:"assets/elixir-6RTg0lbw.js",revision:null},{url:"assets/editor.api2-CdxXemhu.js",revision:null},{url:"assets/editor-store-BVy4DJoP.js",revision:null},{url:"assets/editor-DOgAgpTS.css",revision:null},{url:"assets/ecl-D05T4iGw.js",revision:null},{url:"assets/ebnfDiagram-ZINNZB2B-DDcxPluf.js",revision:null},{url:"assets/dockerfile-DZFCIeNp.js",revision:null},{url:"assets/dist-B_J_HbC0.js",revision:null},{url:"assets/diagram-MPIPVDR6-mMEzAWkb.js",revision:null},{url:"assets/diagram-MLGK6HIB-Awr2vnnw.js",revision:null},{url:"assets/diagram-CDSNMT55-Db7azPHL.js",revision:null},{url:"assets/diagram-ATOU4E4O-BnlFCQjV.js",revision:null},{url:"assets/diagram-3UASUU5V-BOrM2fJW.js",revision:null},{url:"assets/diagram-22UHCM2B-N9qNPFGx.js",revision:null},{url:"assets/devopicons-QN4QXivI.woff2",revision:null},{url:"assets/defaultLocale-BFoDCU3G.js",revision:null},{url:"assets/dart-onAF5SnQ.js",revision:null},{url:"assets/dagre-6A5THRUB-DVdcjlZz.js",revision:null},{url:"assets/cytoscape.esm-EK2DW5Qr.js",revision:null},{url:"assets/cypher-CVaqCwHa.js",revision:null},{url:"assets/cynefinDiagram-VND7K2PF-D4SBf27A.js",revision:null},{url:"assets/cynefin-OW5HDTMX-D-khVVHT.js",revision:null},{url:"assets/cssMode-DqpFSny4.js",revision:null},{url:"assets/css-DIMkf-bt.js",revision:null},{url:"assets/csp-bTuwJoIa.js",revision:null},{url:"assets/csharp-BKxtCVv1.js",revision:null},{url:"assets/cpp-C7h46wYY.js",revision:null},{url:"assets/cose-bilkent-JH36ORCC-CelrFX7F.js",revision:null},{url:"assets/composer-selection-ulujmy_S.js",revision:null},{url:"assets/coffee-Ba7i2nA0.js",revision:null},{url:"assets/clojure-Cm7r79vr.js",revision:null},{url:"assets/classDiagram-v2-NBCMYWYE-DtdQ5tsO.js",revision:null},{url:"assets/chunk-ZIGJFQKS-C7Y7rwsz.js",revision:null},{url:"assets/chunk-Z7XXMR3K-DNFavXEr.js",revision:null},{url:"assets/chunk-Y2CYZVJY-DsF7k-Jl.js",revision:null},{url:"assets/chunk-XXDRQBXY-BvKO0v-W.js",revision:null},{url:"assets/chunk-WEXAMYUT-DuMzoDxl.js",revision:null},{url:"assets/chunk-UA2S7LBM-CcImKd_4.js",revision:null},{url:"assets/chunk-O7XYJQB3-BrUoQZlx.js",revision:null},{url:"assets/chunk-NETBCI7D-Ok_AlsOs.js",revision:null},{url:"assets/chunk-MBY4JIJT-ClsX9AV0.js",revision:null},{url:"assets/chunk-JWPE2WC7-DVXcaiue.js",revision:null},{url:"assets/chunk-J5ZVWO5B-oDCd-gWO.js",revision:null},{url:"assets/chunk-GWA4HPMP-DVQFlNrg.js",revision:null},{url:"assets/chunk-GTNCS2PH-CgRQhFK-.js",revision:null},{url:"assets/chunk-FOHPRMQF-DzxwRta7.js",revision:null},{url:"assets/chunk-DUW6YSOI-Dgx8z5s3.js",revision:null},{url:"assets/chunk-7PRAP22T-DhCB5ggZ.js",revision:null},{url:"assets/chunk-7M6MHVWA-BP_hs_Zh.js",revision:null},{url:"assets/chunk-7INBJB4K-DFzU3uUY.js",revision:null},{url:"assets/chunk-742MDFTN-C9Feux5F.js",revision:null},{url:"assets/chunk-5VM5RSS4-ZNzvKenW.js",revision:null},{url:"assets/chunk-5DYCD2WN-BMcJMkic.js",revision:null},{url:"assets/chunk-3FUC2YCW-44Og191I.js",revision:null},{url:"assets/chunk-2Q5K7J3B-C1jixKkw.js",revision:null},{url:"assets/channel-CzlEOE5Z.js",revision:null},{url:"assets/canvas-store-C-T5LSPT.js",revision:null},{url:"assets/cameligo-DMUM7wLl.js",revision:null},{url:"assets/c4Diagram-YGBWAQC7-D-rNXRo3.js",revision:null},{url:"assets/browserify-C-6GKAAm.js",revision:null},{url:"assets/blockDiagram-BEXU5L5S-Dmo7FSbu.js",revision:null},{url:"assets/bicep-B5-_aFwp.js",revision:null},{url:"assets/bat-i0X4ZdIN.js",revision:null},{url:"assets/azcli-Bc_sGQ0U.js",revision:null},{url:"assets/array-BifhSqXX.js",revision:null},{url:"assets/architectureDiagram-NJMV4G6O-CvzoqRYj.js",revision:null},{url:"assets/architecture-7GRP2DOG-4118Qje4.js",revision:null},{url:"assets/arc-DgcGdgmL.js",revision:null},{url:"assets/apex-BWPQTe0t.js",revision:null},{url:"assets/abnfDiagram-O67JEVCF-DlRX5Clr.js",revision:null},{url:"assets/abap-08VXUWAP.js",revision:null},{url:"assets/WorkersView-d7IuRA1g.js",revision:null},{url:"assets/TracesView-t3wi7Kes.js",revision:null},{url:"assets/TerminalPaneView-ALwEzbwH.js",revision:null},{url:"assets/TasksView-BnFNp4fv.js",revision:null},{url:"assets/StatsView-C-HzWG8r.js",revision:null},{url:"assets/SplitContainer-BpAMtGSs.js",revision:null},{url:"assets/SettingsView-BJCKKgWV.js",revision:null},{url:"assets/RemoteControlView-C1NdBeJw.js",revision:null},{url:"assets/PluginsView-DPWy3FBq.js",revision:null},{url:"assets/MetricsView-BZuMTUvp.js",revision:null},{url:"assets/LogsView-CEHx06nm.js",revision:null},{url:"assets/KeybindingsView-DWUI1JpY.js",revision:null},{url:"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2",revision:null},{url:"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2",revision:null},{url:"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2",revision:null},{url:"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2",revision:null},{url:"assets/KaTeX_Script-Regular-D3wIWfF6.woff2",revision:null},{url:"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2",revision:null},{url:"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2",revision:null},{url:"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2",revision:null},{url:"assets/KaTeX_Math-Italic-t53AETM-.woff2",revision:null},{url:"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2",revision:null},{url:"assets/KaTeX_Main-Regular-B22Nviop.woff2",revision:null},{url:"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2",revision:null},{url:"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2",revision:null},{url:"assets/KaTeX_Main-Bold-Cx986IdX.woff2",revision:null},{url:"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2",revision:null},{url:"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2",revision:null},{url:"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2",revision:null},{url:"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2",revision:null},{url:"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2",revision:null},{url:"assets/HoverHint-LssI0qEE.js",revision:null},{url:"assets/EditorView-CUu0ekRP.js",revision:null},{url:"assets/DocsView-DiGzijj1.js",revision:null},{url:"assets/ChangesView-CaHOWv2Z.js",revision:null},{url:"assets/CanvasView-DkhyH_1F.js",revision:null},{url:"assets/CanvasPaneStandaloneView-dyWkk4PZ.js",revision:null},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"manifest.webmanifest",revision:"7a003d0094122eb3e607566c757e9885"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\/(?!v1\/jobs\/[^/]+\/frame\/?$)/,/^\/gateway/,/^\/docs\//]})),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
@@ -1 +1 @@
1
- "use strict";exports.ids=["3163"],exports.modules={34054(e,t,r){r.r(t),r.d(t,{DEFAULT_REQUEST_MAX_RETRIES:()=>e_,DEFAULT_STREAM_IDLE_TIMEOUT_MS:()=>em,DEFAULT_FIRST_TOKEN_TIMEOUT_MS:()=>eh,resolveRecoveryFirstTokenTimeoutMs:()=>resolveRecoveryFirstTokenTimeoutMs,resolveRequestMaxRetries:()=>resolveRequestMaxRetries,DEFAULT_MODEL_401_RETRY_DELAY_MS:()=>ey,resolveTimeoutMs:()=>resolveTimeoutMs,WATCHDOG_MAX_BACKOFF_MS:()=>eE,computeRequestRetryDelayMs:()=>computeRequestRetryDelayMs,ModelProviderImpl:()=>eS,isRetryWatchdogEnabled:()=>isRetryWatchdogEnabled,REQUEST_RETRY_BASE_DELAY_MS:()=>ep,MAX_REQUEST_MAX_RETRIES:()=>ef,resolveModel401MaxRetries:()=>resolveModel401MaxRetries,DEFAULT_RECOVERY_FIRST_TOKEN_TIMEOUT_MS:()=>eR,REQUEST_RETRY_MAX_DELAY_MS:()=>eg,extractMockE2EResponseDiagnostics:()=>extractMockE2EResponseDiagnostics,resolveModel401RetryDelayMs:()=>resolveModel401RetryDelayMs,createFirstTokenTimeoutResponse:()=>createFirstTokenTimeoutResponse});var s,o,i,n,a,l,d,c,u,h,m,p,g,_,f=r(46193),E=r(57975),y=r(38522),T=r(88523),R=r(7268),S=r(14913),v=r(86482),M=r(20027),A=r(5884),b=r(51147),I=r(9151),C=r(80134),k=r(92735),O=r(96453),D=r(19672),w=r(49839),$=r(20173),L=r(58988),U=r(73122),q=r(66678),P=r(34506),N=r(80039),H=r(5178),x=r(14545),F=r(45565),B=r(69712),G=r(18151),Q=r(34340),V=r(43394),Y=r(91325),K=r(89781),X=r(40445),W=r(78725),z=r(19436),J=r(29889),Z=r(26234),ee=r(64013),et=r(21537),er=r(68475),es=r(28985),eo=r(77598);let ChatNetworkFailoverShadowRecorder=class ChatNetworkFailoverShadowRecorder{constructor(){this.events=[],this.currentBytes=0,this.nextSequence=1}begin(e){if(e)return{operationId:(0,eo.randomUUID)(),nextAttempt:1,commitReached:!1}}async observeAttempt(e,t){if(!e)return t();let r=e.nextAttempt++,s=Date.now();try{let o=await t();return this.append({timestamp:Date.now(),routeId:"core-api",operation:"chat.stream",operationId:e.operationId,attempt:r,outcome:"success",httpStatus:o.status,durationMs:Date.now()-s,commitReached:e.commitReached}),o}catch(t){throw this.append({timestamp:Date.now(),routeId:"core-api",operation:"chat.stream",operationId:e.operationId,attempt:r,outcome:"terminal_error",httpStatus:t.response?.status??t.status,transportCode:"string"==typeof t.code?t.code:void 0,durationMs:Date.now()-s,commitReached:e.commitReached}),t}}markCommitReached(e){if(!e||e.commitReached)return;e.commitReached=!0;let t=[...this.events].reverse().find(t=>t.event.operationId===e.operationId);if(t){let e=t.bytes;t.event.commitReached=!0,t.bytes=Buffer.byteLength(JSON.stringify(t.event),"utf8"),this.currentBytes+=t.bytes-e}}recent(e=100){let t=Math.max(0,Math.floor(e));return 0===t?[]:this.events.slice(-t).map(e=>({...e.event}))}clearForTests(){this.events.length=0,this.currentBytes=0,this.nextSequence=1}append(e){let t={...e,sequence:this.nextSequence++},r=Buffer.byteLength(JSON.stringify(t),"utf8");if(!(r>2097152)){for(;this.currentBytes+r>2097152&&this.events.length>0;){let e=this.events.shift();e&&(this.currentBytes-=e.bytes)}this.events.push({bytes:r,event:t}),this.currentBytes+=r}}};let ei=new ChatNetworkFailoverShadowRecorder,en=[50,100,500,1e3,3e3,1e4,6e4],ea=["0_50","50_100","100_500","500_1000","1000_3000","3000_10000","10000_60000","gt_60000"];function SseMonitorSessionData(e,t){let r=e.meta?.["codebuddy.ai/mode"];return{id:e.id,conversationRequestId:t.conversationRequestId,promptRequestId:e.promptRequestId,messageId:t.messageId,traceId:e.traceId,agentName:e.agentName,agentPurpose:t.agentPurpose,isCompressing:e.isCompressing,scene:"string"==typeof r?r:""}}let el="modelError",ed={conversation_id:"\u4F1A\u8BDDID",conversation_request_id:"\u4F1A\u8BDD\u8BF7\u6C42ID",prompt_request_id:"\u63D0\u793A\u8BF7\u6C42ID",trace_id:"\u94FE\u8DEF\u8FFD\u8E2AID",message_id:"\u6D88\u606FID",model:"\u6A21\u578B",agent_name:"\u667A\u80FD\u4F53",scene:"\u573A\u666F",request_type:"\u8BF7\u6C42\u7C7B\u578B",http_begin_status_code:"HTTP\u8FDE\u63A5\u72B6\u6001\u7801",http_end_status_code:"HTTP\u7ED3\u675F\u72B6\u6001\u7801",model_error:"\u6A21\u578B\u9519\u8BEF",model_error_code:"\u6A21\u578B\u9519\u8BEF\u7801",finish_flag:"\u7ED3\u675F\u6807\u8BC6",finish_reason:"\u7ED3\u675F\u539F\u56E0",total_cost_ms:"\u603B\u8017\u65F6(ms)",sse_connect_cost_ms:"SSE\u8FDE\u63A5\u8017\u65F6(ms)",ttft_ms:"\u9996\u5B57\u8017\u65F6TTFT(ms)",text_first_cost_ms:"\u6B63\u6587\u9996\u5B57\u8017\u65F6(ms)",text_total_cost_ms:"\u6B63\u6587\u8FC7\u7A0B\u8017\u65F6(ms)",think_first_cost_ms:"\u601D\u8003\u9996\u5B57\u8017\u65F6(ms)",think_total_cost_ms:"\u601D\u8003\u8FC7\u7A0B\u8017\u65F6(ms)",total_bytes:"\u603B\u5B57\u8282\u6570",total_chunks:"\u603B\u5305\u6570",completion_tokens:"\u8F93\u51FAtoken\u6570",prompt_tokens:"\u8F93\u5165token\u6570",total_tokens:"\u603Btoken\u6570",text_content_bytes:"\u6B63\u6587\u534F\u8BAE\u5B57\u8282\u6570",text_content_chars:"\u6B63\u6587\u53EF\u89C1\u5B57\u7B26\u6570",text_total_tokens:"\u6B63\u6587token\u6570",think_content_bytes:"\u601D\u8003\u534F\u8BAE\u5B57\u8282\u6570",think_content_chars:"\u601D\u8003\u53EF\u89C1\u5B57\u7B26\u6570",think_total_tokens:"\u601D\u8003token\u6570",recv_length:"\u63A5\u6536\u957F\u5EA6",origin_length:"\u539F\u59CB\u957F\u5EA6",report_version:"\u4E0A\u62A5\u7248\u672C",report_source:"\u4E0A\u62A5\u6765\u6E90"},ec={"0_50":"0-50ms","50_100":"50-100ms","100_500":"100-500ms","500_1000":"500ms-1s","1000_3000":"1-3s","3000_10000":"3-10s","10000_60000":"10s-60s",gt_60000:">60s"};function createContentStats(){return{bytes:0,contentBytes:0,contentChars:0,tokens:0}}let SseStreamMonitorImpl=class SseStreamMonitorImpl{constructor(e,t,r){for(const s of(this.connectedTime=0,this.currentChunkTime=0,this.firstTokenTime=0,this.firstTextTime=0,this.lastTextTime=0,this.firstThinkTime=0,this.lastThinkTime=0,this.firstToolCallTime=0,this.endTime=0,this.totalBytes=0,this.totalChunks=0,this.completionTokens=0,this.promptTokens=0,this.totalTokens=0,this.textStats=createContentStats(),this.thinkStats=createContentStats(),this.lastTokenTime=0,this.intervalTimes={},this.intervalTotal={},this.finishFlag="",this.isSensitive=!1,this.modelError="",this.modelErrorCode="",this.finishReason="",this.isReportedStart=!1,this.isReportedEnd=!1,this.httpBeginStatusCode=0,this.httpEndStatusCode=200,this.galileo=t,this.logger=r,this.sessionData={...e.sessionData,conversationRequestId:e.sessionData.conversationRequestId??"",promptRequestId:e.sessionData.promptRequestId??"",messageId:e.sessionData.messageId??"",traceId:e.sessionData.traceId??"",agentName:e.sessionData.agentName||"unknown",scene:e.sessionData.scene??""},this.model=e.model,this.requestType=this.resolveRequestType(),this.requestStartTime=Date.now(),this.requestTag=(this.sessionData.conversationRequestId??"").slice(0,8)||this.sessionData.id.slice(0,8),ea))this.intervalTimes[s]=0,this.intervalTotal[s]=0;this.logEnqueue(),this.attachUserAbort(e.abortSignal)}resolveRequestType(){if(this.sessionData.isCompressing)return"compress";let e=this.sessionData.agentPurpose;return e?e.startsWith("custom_agent:")||"conversation"===e||"conversation:compact"===e?"chat":e:"other"}logEnqueue(){try{this.logEvent("enqueue")}catch{}}onStreamOpen(e,t){try{this.connectedTime=Date.now(),e&&(this.sessionData.traceId=e),void 0!==t&&(this.httpBeginStatusCode=t)}catch{}}onFirstData(){try{if(this.isReportedStart||this.isReportedEnd)return;this.isReportedStart=!0;let e=this.connectedTime-this.requestStartTime;this.logEvent("start",{sse_connect_cost_ms:String(e)})}catch{}}onStreamEnd(e,t){try{let r=t?.aborted?"canceled":e,s={recvLength:t?.recvLength??this.totalBytes,originLength:t?.originLength??this.totalBytes};if("error"===r)return void this.onStreamError(t?.errorReason);this.onStreamClose(r,s)}catch{}}attachUserAbort(e){e&&!e.aborted&&(this.userAbortSignal=e,this.onUserAbort=()=>this.onStreamEnd("canceled"),e.addEventListener("abort",this.onUserAbort,{once:!0}))}detachUserAbort(){this.userAbortSignal&&this.onUserAbort&&(this.userAbortSignal.removeEventListener("abort",this.onUserAbort),this.userAbortSignal=void 0,this.onUserAbort=void 0)}onStreamClose(e,t){try{if(this.detachUserAbort(),this.isReportedEnd)return;this.isReportedEnd=!0,this.endTime=Date.now(),this.resolveFinishFlag(e),this.reportEnd(t)}catch{}}onStreamError(e){try{if(this.detachUserAbort(),this.isReportedEnd)return;this.isReportedEnd=!0,this.endTime=Date.now(),this.resolveFinishFlag("error",e),this.reportEnd({recvLength:this.totalBytes,originLength:this.totalBytes})}catch{}}onChunk(e){try{this.currentChunkTime=Date.now(),this.totalBytes+=e.length,this.totalChunks++,this.calculateConsumeInterval(this.currentChunkTime),1===this.totalChunks&&this.onFirstData()}catch{}}onParsedChunk(e){try{e.deltaContent&&this.onTextDelta(e.deltaContent),e.deltaReasoning&&this.onThinkDelta(e.deltaReasoning),e.hasToolCall&&this.onToolCall(),e.usage&&this.onUsage(e.usage),e.finishReason&&this.onFinishReason(e.finishReason)}catch{}}onTextDelta(e){try{if(!e)return;let t=this.chunkTime();0===this.firstTextTime&&(this.firstTextTime=t,0===this.firstTokenTime&&(this.firstTokenTime=t)),this.lastTextTime=t,this.textStats.contentBytes+=Buffer.byteLength(e,"utf8"),this.textStats.contentChars+=[...e].length,this.textStats.tokens++}catch{}}onThinkDelta(e){try{if(!e)return;let t=this.chunkTime();0===this.firstThinkTime&&(this.firstThinkTime=t,0===this.firstTokenTime&&(this.firstTokenTime=t)),this.lastThinkTime=t,this.thinkStats.contentBytes+=Buffer.byteLength(e,"utf8"),this.thinkStats.contentChars+=[...e].length,this.thinkStats.tokens++}catch{}}onToolCall(){try{let e=this.chunkTime();0===this.firstToolCallTime&&(this.firstToolCallTime=e,0===this.firstTokenTime&&(this.firstTokenTime=e))}catch{}}onFinishReason(e){try{if(!e)return;this.finishReason=e}catch{}}onUsage(e){try{if(!e)return;this.completionTokens=e.completion_tokens??0,this.promptTokens=e.prompt_tokens??0,this.totalTokens=e.total_tokens??0}catch{}}onModelError(e,t){try{this.modelError=e,this.modelErrorCode=t,this.onStreamError("modelError")}catch{}}onSensitiveHit(){try{this.isSensitive=!0}catch{}}setHttpEndStatus(e){try{(-2===e||0===e||e>=200&&e<=599)&&(this.httpEndStatusCode=e)}catch{}}chunkTime(){return this.currentChunkTime||Date.now()}calculateConsumeInterval(e){if(0===this.lastTokenTime){this.lastTokenTime=e;return}let t=e-this.lastTokenTime;if(t<0)return;let r=this.getIntervalKey(t);this.intervalTimes[r]++,this.intervalTotal[r]+=t,this.lastTokenTime=e}getIntervalKey(e){for(let t=0;t<en.length;t++)if(e<en[t])return ea[t];return ea[ea.length-1]}resolveFinishFlag(e,t){switch(e){case"closed":this.finishFlag=this.modelError?el:this.isSensitive?"sensitive":"done";break;case"canceled":this.finishFlag="manualStop";break;default:this.modelError||"modelError"===t?this.finishFlag=el:"timeout"===t?this.finishFlag="timeout":this.finishFlag="interrupt"}}reportEnd(e){let t=this.endTime-this.requestStartTime,r=this.connectedTime>0?this.connectedTime-this.requestStartTime:0,s=this.firstTextTime>0?this.firstTextTime-this.connectedTime:0,o=this.lastTextTime>0&&this.firstTextTime>0?this.lastTextTime-this.firstTextTime:0,i=this.firstThinkTime>0?this.firstThinkTime-this.connectedTime:0,n=this.lastThinkTime>0&&this.firstThinkTime>0?this.lastThinkTime-this.firstThinkTime:0,a=this.firstTokenTime>0?this.firstTokenTime-this.requestStartTime:0,l={http_begin_status_code:String(this.httpBeginStatusCode),http_end_status_code:String(this.httpEndStatusCode),model_error:this.modelError,model_error_code:this.modelErrorCode,finish_flag:this.finishFlag,finish_reason:this.finishReason,total_cost_ms:String(t),sse_connect_cost_ms:String(r),ttft_ms:String(a),text_first_cost_ms:String(s),text_total_cost_ms:String(o),think_first_cost_ms:String(i),think_total_cost_ms:String(n),total_bytes:String(this.totalBytes),total_chunks:String(this.totalChunks),completion_tokens:String(this.completionTokens),prompt_tokens:String(this.promptTokens),total_tokens:String(this.totalTokens),text_content_bytes:String(this.textStats.contentBytes),text_content_chars:String(this.textStats.contentChars),text_total_tokens:String(this.textStats.tokens),think_content_bytes:String(this.thinkStats.contentBytes),think_content_chars:String(this.thinkStats.contentChars),think_total_tokens:String(this.thinkStats.tokens),recv_length:String(e.recvLength),origin_length:String(e.originLength)};for(let e of ea)l[`interval_${e}_count`]=String(this.intervalTimes[e]??0),l[`interval_${e}_total_ms`]=String(this.intervalTotal[e]??0);this.logEvent("end",l)}sessionLogFields(e){return{conversation_id:e.id,conversation_request_id:e.conversationRequestId??"",prompt_request_id:e.promptRequestId??"",trace_id:e.traceId??"",message_id:e.messageId??"",model:this.model,agent_name:e.agentName??"unknown",scene:e.scene??"",request_type:this.requestType,report_version:"1",report_source:"agent-cli"}}logEvent(e,t){let r={...this.sessionLogFields(this.sessionData),...t};this.writeFileLog(`[SseMonitor#${this.requestTag}] qua.${e}: ${JSON.stringify(r)}`),this.galileo?.logInfo(`agent.sse.qua.${e}`,{type:"custom_event",name:`agent.sse.qua.${e}`,...r})}writeFileLog(e){this.logger.info(e)}printConsoleEvent(e,t){let r=[`[SseMonitor#${this.requestTag}] ===== qua.${e} =====`];for(let[e,s]of Object.entries(t)){let t=this.getFieldCnName(e);r.push(` ${e}(${t}): ${s}`)}r.push(""),process.stdout.write(r.join("\n")+"\n")}getFieldCnName(e){if(ed[e])return ed[e];let t=e.match(/^interval_(.+)_count$/);if(t){let e=ec[t[1]]??t[1];return`${e}\u{533A}\u{95F4}\u{6B21}\u{6570}`}let r=e.match(/^interval_(.+)_total_ms$/);if(r){let e=ec[r[1]]??r[1];return`${e}\u{533A}\u{95F4}\u{603B}\u{8017}\u{65F6}(ms)`}return e}};var __decorate=function(e,t,r,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(n=(i<3?o(n):i>3?o(t,r,n):o(t,r))||n);return i>3&&n&&Object.defineProperty(t,r,n),n},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let eu=(0,E.promisify)(y.gunzip),eh=12e5,em=12e5;function resolveTimeoutMs(e,t){if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>0)return t}return t}let ep=500,eg=32e3,e_=1,ef=15,eE=3e5,ey=2e3,eT=[b.CONVERSATION_ID_HEADER,b.CONVERSATION_REQUEST_ID_HEADER,b.CONVERSATION_MESSAGE_ID_HEADER,b.PARENT_CONVERSATION_ID_HEADER,b.AGENT_TYPE_HEADER,b.COMPACTION_HEADER,b.CONTEXT_COMPACTED_HEADER,b.REQUEST_ID_HEADER,b.AGENT_INTENT,b.AGENT_PURPOSE,b.IDE_TYPE_HEADER,b.IDE_NAME_HEADER,b.IDE_VERSION_HEADER,b.PRODUCT,b.API_KEY_HEADER,b.PRIVATE_DATA_HEADER];function resolveRequestMaxRetries(e){if(void 0!==e&&""!==e){let t=parseInt(e,10);if(!isNaN(t)&&t>=0)return Math.min(t,ef)}return e_}function isRetryWatchdogEnabled(e){if("string"!=typeof e)return!1;let t=e.trim().toLowerCase();return"1"===t||"true"===t||"yes"===t}function resolveModel401MaxRetries(e){if(void 0!==e&&""!==e){let t=parseInt(e,10);if(!isNaN(t)&&t>=0)return Math.min(t,ef)}return 0}function resolveModel401RetryDelayMs(e){if(void 0!==e&&""!==e){let t=parseInt(e,10);if(!isNaN(t)&&t>=0)return Math.min(t,eg)}return ey}function computeRequestRetryDelayMs(e,t,r=eg,s=Math.random,o=ep){return null!=t&&t>0?Math.min(t,r):(0,A.Rv)(e,{baseDelayMs:o,maxDelayMs:r,random:s})}let eR=3e5;function resolveRecoveryFirstTokenTimeoutMs(e,t){return Math.min(resolveTimeoutMs(e,eR),t)}function createFirstTokenTimeoutResponse(e){return new Response(new ReadableStream({start(t){t.error(new A.wM(e,0,0,!0))}}),{status:200,headers:{"content-type":"text/event-stream"}})}function readResponseHeader(e,t){if(!e||"object"!=typeof e)return;try{let r=e.get?.(t);if(null!=r)return String(r)}catch{}let r=Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase()),s=r?e[r]:void 0;return null==s?void 0:String(s)}function extractMockE2EResponseDiagnostics(e){let t={traceId:readResponseHeader(e,"x-mock-trace-id"),requestId:readResponseHeader(e,"x-mock-request-id"),matchSource:readResponseHeader(e,"x-mock-match-source"),matchResult:readResponseHeader(e,"x-mock-match-result"),offset:readResponseHeader(e,"x-mock-offset"),responseId:readResponseHeader(e,"x-mock-response-id"),finishReason:readResponseHeader(e,"x-mock-finish-reason"),dataVersion:readResponseHeader(e,"x-mock-data-version"),instance:readResponseHeader(e,"x-mock-instance"),contentKind:readResponseHeader(e,"x-mock-content-kind")};return Object.values(t).some(e=>void 0!==e)?t:void 0}function isLoopbackEndpoint(e){if("string"!=typeof e||""===e.trim())return!1;try{let{hostname:t}=new URL(e);return"localhost"===t||"127.0.0.1"===t||"[::1]"===t||"::1"===t||t.endsWith(".localhost")}catch{return!1}}let eS=class{constructor(){this.modelRequestProcessors=[],this.modelCache=new Map}normalizeChatCompletionsUrl(e){let t=e.search(/[?#]/),r=t>=0?e.slice(t):"",s=t>=0?e.slice(0,t):e;for(s=s.replace(/\/+$/,"");s.endsWith("/chat/completions");)s=s.slice(0,-17);return`${s}/chat/completions${r}`}async decodeDebugRequestBody(e){return"string"==typeof e?JSON.parse(e):e instanceof Uint8Array?31===e[0]&&139===e[1]?JSON.parse((await eu(e)).toString("utf-8")):JSON.parse(Buffer.from(e).toString("utf-8")):e}isCustomModelRequest(e,t){let r=e||t?.id;return!!(r?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX)||r?.startsWith("custom:"))||t?.trustLevel===I.ModelTrustLevel.CUSTOM||Array.isArray(t?.tags)&&t.tags.includes(I.MODEL_TAG_CUSTOM)}isLocalCustomModelRequest(e,t){let r=e||t?.id;return!!r?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX)}shouldApplyInternalModelRequestHeaders(e,t){return!!t&&!this.isCustomModelRequest(e,t)}applyCustomPassthroughHeaders(e,t,r,s){let o=t.requestOptions?.customPassthroughHeaders;if(o&&this.shouldApplyInternalModelRequestHeaders(r,s))for(let[t,r]of Object.entries(o))this.setHeaderCaseInsensitive(e,t,r)}isRecord(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}mergeRequestProviderData(e,t){if(!t||!this.isRecord(e))return e;let r=this.isRecord(t.extra_vars)?t.extra_vars:void 0,s=this.isRecord(e.extra_vars)?e.extra_vars:{};return{...e,...t,...r?{extra_vars:{...s,...r}}:{}}}injectRequestExtraFieldsMeta(e,t){let r;if(!this.isRecord(t)||0===Object.keys(t).length||!this.isRecord(e))return!1;let s=e.messages;if(!Array.isArray(s)||0===s.length)return!1;for(let e=s.length-1;e>=0;e--){let t=s[e];if(this.isRecord(t)&&"user"===t.role){r=t;break}}if(!r)return!1;let o=this.isRecord(r.extra_fields)?r.extra_fields:{},i=this.isRecord(o._meta)?o._meta:{};return r.extra_fields={...o,_meta:{...i,...t}},!0}resolveRootRequestId(e){let t=e.meta?.rootRequestId;return"string"==typeof t&&t.length>0?t:void 0}resolveParentConversationId(e){let t=e.meta?.parentConversationId;if("string"==typeof t&&0!==t.length&&t!==e.id)return t}applyCompactionHeaders(e,t){t?.kind&&this.setHeaderCaseInsensitive(e,b.COMPACTION_HEADER,t.kind),t?.contextCompacted&&this.setHeaderCaseInsensitive(e,b.CONTEXT_COMPACTED_HEADER,t.contextCompacted)}getHeaderCaseInsensitive(e,t){let r=Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase());return r?e[r]:void 0}setHeaderCaseInsensitive(e,t,r){let s=Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase());s&&delete e[s],e[t]=r}parseSSEChunk(e,t=!1){let r,s,o,i,n=!1,a=!1,l=!1,d=null,c=!1,u="",h="",m="",p=!1;try{for(let g of e.toString("utf-8").split("\n")){let e=g.trim();if(!e.startsWith("data:"))continue;let _=e.slice(5).trim();if(_&&"[DONE]"!==_)try{let e=JSON.parse(_);if(void 0===s&&"string"==typeof e?.id&&e.id.length>0&&(s=e.id),e?.usage!=null){if(c=!0,"object"==typeof e.usage){let t=e.usage.credit;"number"==typeof t&&Number.isFinite(t)&&t>0&&(r=t)}if(t&&"object"==typeof e.usage){let t=e.usage;o={prompt_tokens:"number"==typeof t.prompt_tokens?t.prompt_tokens:void 0,completion_tokens:"number"==typeof t.completion_tokens?t.completion_tokens:void 0,total_tokens:"number"==typeof t.total_tokens?t.total_tokens:void 0}}if(!i&&"object"==typeof e.usage){let t=e.usage;i={prompt_tokens:"number"==typeof t.prompt_tokens?t.prompt_tokens:void 0,completion_tokens:"number"==typeof t.completion_tokens?t.completion_tokens:void 0,total_tokens:"number"==typeof t.total_tokens?t.total_tokens:void 0}}}let g=e?.choices;if(!Array.isArray(g)||0===g.length)continue;for(let e of g){"string"==typeof e.finish_reason&&""!==e.finish_reason&&(n=!0,d=e.finish_reason);let r=e.delta;if(r){let e="string"==typeof r.content&&r.content.length>0,s="string"==typeof r.reasoning_content&&r.reasoning_content.length>0||"string"==typeof r.reasoning&&r.reasoning.length>0,o=Array.isArray(r.tool_calls)&&r.tool_calls.length>0,i="string"==typeof r.refusal&&r.refusal.length>0;s&&(a=!0),(e||s||o||i)&&(n=!0),(e||o||i)&&(l=!0),t&&e&&(u+=r.content),e&&(h+=r.content),s&&(m+=r.reasoning_content??r.reasoning??""),o&&(p=!0)}}if(n&&l&&d&&c)break}catch{}}}catch{}return{hasContent:n,hasReasoning:a,hasSubstantiveContent:l,finishReason:d,hasUsage:c,credit:r,chunkId:s,usage:o,deltaContent:u.length>0?u:void 0,monitorDelta:h.length>0?h:void 0,monitorReasoning:m.length>0?m:void 0,monitorUsage:i,monitorHasToolCall:p||void 0}}normalizeStreamingToolCallIds(e,t){if(!e.includes("tool_calls"))return e;let r=e.split("\n"),s=!1;for(let e=0;e<r.length;e++){let o=r[e].trim();if(!o.startsWith("data:"))continue;let i=o.slice(5).trimStart();if(i&&"[DONE]"!==i)try{let o=JSON.parse(i),n=o?.choices;if(!Array.isArray(n)||0===n.length)continue;let a=n[0]?.delta;if(!a?.tool_calls||!Array.isArray(a.tool_calls)||0===a.tool_calls.length)continue;let l=!1;for(let e of a.tool_calls)null!=e.id&&"string"==typeof e.id&&""!==e.id&&(t.has(e.id)?"number"==typeof e.index&&(delete e.id,l=!0):t.add(e.id));if(l){let t=r[e].startsWith("data: ")?"data: ":"data:";r[e]=`${t}${JSON.stringify(o)}`,s=!0}}catch{}}return s?r.join("\n"):e}createStreamingTextProcessor(){let e=new f.StringDecoder("utf-8"),t=new TextEncoder,r=new Set;return{process:s=>{let o=e.write(s);return 0===o.length?null:t.encode(this.normalizeStreamingToolCallIds(o,r))},flush:()=>{let r=e.end();return r.length>0?t.encode(r):null}}}parseCustomHeaders(e){if(!e)return{};let t={},r=[];for(let s of(e.includes("\\n")?r.push(...e.split("\\n")):e.includes("\n")?r.push(...e.split("\n")):r.push(e),r)){let e=s.trim();if(!e)continue;let r=e.indexOf(":");if(-1===r)continue;let o=e.substring(0,r).trim(),i=e.substring(r+1).trim();o&&i&&(t[o]=i)}return t}async getCustomHeaders(e){let t;this.logger.setContext("ModelProvider");let r=this.parseCustomHeaders(process.env[J.nW]),s=await this.settingsManager.get("env"),o=this.parseCustomHeaders(s?.[J.nW]),i=await this.settingsManager.get("enableModelOptimization"),n=i?.enabled!==!1;if(void 0===i)try{let e=await this.productManager.waitConfiguration();e.productFeatures?.[I.ProductFeature.DisableYuanbaoChannel]===!0&&(n=!1)}catch{}o[b.PRIVATE_DATA_HEADER]=n?"false":"true";let a={};try{let e=S.Context.getRequest()?.body;if(e?.header){let t=ee.HeaderUtils.convertHeaderArrayToObject(e.header);t&&(a=t)}}catch(e){}let l={};try{let e=this.sessionManager.getCurrent()||this.sessionManager.sessionSubject.getValue();e?.requestOptions?.headers?(l=e.requestOptions.headers,this.logger.debug(`[ModelProvider] session headers from session ${e.id}: keys=[${Object.keys(l).join(",")}]`)):this.logger.debug(`[ModelProvider] no session headers for session ${e?.id}`)}catch(e){this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] error reading session headers: ${e}`)}let d={...r,...o,...a,...l,...(0,N.Gp)()?.headers};this.logger.debug(`[ModelProvider] merged headers: keys=[${Object.keys(d).join(",")}]`);let c=this.authenticationManager.currentSessionSubject.getValue(),u=(0,N.Gp)()?.auth;process.env[J.QB]&&this.logger.debug("[ModelProvider] API key disabled via env"),u||process.env[J.QB]||(t=s?.[J.XO]||process.env[J.XO]),u?.method==="api_key"&&(t=u.accessToken);try{if(e.modelId){let r=await this.productManager.waitConfiguration(),s=r.models?.find(t=>t.id===e.modelId);s?.apiKey&&(t=s.apiKey,this.logger.debug(`Using custom API key in headers for model ${e.modelId}`))}}catch(e){}t&&(d[b.API_KEY_HEADER]=t,d[R.HttpHeaders.AUTHORIZATION]=`Bearer ${t}`);let h=c?.account,m=h?.enterpriseId?.trim(),p=(0,v.isPersonalAccount)(h)&&!m;return await ee.IOAUtils.applyIOADefaultHeaders(d,s,{enterpriseId:m,skipDefaultEnterpriseHeaders:p}),d}async enableThinking(e){let t=await this.settingsManager.get("alwaysThinkingEnabled");if(!t)return!1;let r=e??await this.agentManager.getModel((await this.agentManager.getDefault()).name);return!!(t&&r.supportsReasoning)}async injectReasoningSummaryIfNeeded(e,t){return!(!(await this.enableThinking(t)||"string"==typeof e?.reasoning_effort||"string"==typeof e?.reasoning?.effort)||e?.reasoning_summary)&&(e.reasoning_summary="auto",!0)}isConnectionLevelRetryableError(e){return!!e&&void 0===e.response&&(0,C.isOriginReplayRetryable)(e)}applyChatFailoverOrigin(e,t){let r=this.productManager?.configuration?.getValue()||{},s=ee.ProxyUtils.resolveRequestUrl(e.url,e.baseURL||r.endpoint||this.productManager?.getEndpoint()||void 0);if(s&&(0,C.isOriginReplayRetryable)(t)){let t=(0,B.XK)(s,r);if(t){(0,B.eP)(e,s,t),this.logger.info?.("[NetworkFailover] Chat origin switched to backup before retry");return}this.logger.info?.(`[NetworkFailover] Chat origin replay skipped: no backup for ${s}`)}let o=(0,G.pinFailoverChatOrigin)(e.url);o&&o!==e.url&&(e.url=o,this.logger.info?.("[NetworkFailover] Chat origin re-pinned before retry"))}shouldSkipRequestLevelRetryAfterChatOriginReplay(e,t){let r=t?.response?.status;return(408===r||502===r||503===r)&&(!!e?.[B.U$]||(0,B.DZ)((0,B.oh)(e)))}isRequestLevelRetryableError(e,t){if(!e)return!1;let r="number"==typeof e.response?.status?e.response.status:void 0,s=this.parseErrorResponseBody(e),matchesCode=t=>t(e)||!!s&&t(s);return!matchesCode(M.ErrorUtils.isQuotaExhaustedError)&&(429===r?t||matchesCode(M.ErrorUtils.isTransientRateLimitBusinessCode):(0,M.isRequestLevelRetryableStatus)(r))}parseErrorResponseBody(e){let t=e?.response?.data;if(t&&"object"==typeof t&&"function"!=typeof t.pipe)return t;if("string"==typeof t&&""!==t.trim())try{let e=JSON.parse(t);return e&&"object"==typeof e?e:void 0}catch{}}hasChatOriginReplayed(e,t){return!!(e?.[B.U$]||t?.config?.[B.U$])||(0,B.DZ)((0,B.oh)(e))}abortableSleep(e,t){return new Promise((r,s)=>{if(t?.aborted)return void s(Error("Request aborted."));let o=setTimeout(()=>{t?.removeEventListener("abort",onAbort),r()},e);"function"==typeof o.unref&&o.unref();let onAbort=()=>{clearTimeout(o),s(Error("Request aborted."))};t?.addEventListener("abort",onAbort,{once:!0})})}async requestWithConnectionRetry(e,t,r,s,o,i,n=!1,a){let l,d=this.sessionManager?.getCurrent()?.agentPurpose===M.AgentPurpose.ContentSecurityReviewer,c=d?0:A.Q9,u=d?0:resolveRequestMaxRetries(process.env.CODEBUDDY_MAX_RETRIES),h=!d&&isRetryWatchdogEnabled(process.env.CODEBUDDY_RETRY_WATCHDOG),m=d?0:resolveModel401MaxRetries(process.env.CODEBUDDY_MODEL_401_MAX_RETRIES),p=resolveModel401RetryDelayMs(process.env.CODEBUDDY_MODEL_401_RETRY_DELAY_MS),g=0,_=0,f=0,E=0,y=(0,N.Gp)(),T=y?.auth;if(!e?.[B.U$]&&(0,B.DZ)((0,B.oh)(e)))throw(0,B.aD)();for(;;)try{globalThis.__CODEBUDDY_STARTUP_PROFILER__?.markEvent("first-model-request");let t=await ei.observeAttempt(i,()=>this.restOperations.request(e));return(0,G.recordFailoverOutcome)(e.url),o?.setAttribute("retry_count",g+_+f+E),t}catch(S){(0,G.recordFailoverOutcome)(e.url,S),e?.[B.U$]||this.applyChatFailoverOrigin(e,S),l=S;let i=e?.signal;if(i?.aborted)break;if(this.isConnectionLevelRetryableError(S)){if(g>=c)break;g+=1;let e=(0,A.xX)(g);o?.addEvent("retry_attempt",{attempt:g,kind:"connection",error_code:String(S?.code??""),error_message:String(S?.message??""),delay_ms:Math.round(e)}),this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Connection-level failure before response headers, backing off and retrying: agent=${t}, requestId=${r}, code=${S?.code}, message=${S?.message}, attempt=${g}/${c}, delayMs=${Math.round(e)}`),await this.modelRequestRetryPhase.during(a,"network",()=>this.abortableSleep(e,i));continue}let d=await (0,Q.Af)(S,i);if("cancelled"===d.state||i?.aborted)break;let R=d.policy;if("forbid-retry"===R){let e=S.response?.status;o?.addEvent("retry_policy",{decision:"forbid",status:"number"==typeof e?e:-1}),this.logger.info?.(`[ModelProvider] Gateway retry_policy forbids retry: agent=${t}, requestId=${r}, status=${e}`);break}if(n&&!s&&0===f&&S.response?.status===401){let t=Object.keys(e.headers??{}).find(e=>"authorization"===e.toLowerCase());if((0,N.Gp)()===y&&T?.refresh&&t&&e.headers[t]===`Bearer ${T.accessToken}`)try{let r=await (0,N.tD)(T.accessToken,i??new AbortController().signal);if(r){e.headers[t]=`Bearer ${r.accessToken}`;let s=Object.keys(e.headers).find(e=>e.toLowerCase()===b.API_KEY_HEADER.toLowerCase());s&&e.headers[s]===T.accessToken&&(e.headers[s]=r.accessToken),f++,o?.addEvent("retry_attempt",{attempt:f,kind:"authentication",status:401});continue}}catch{}}if(E<m&&!s&&S.response?.status===401){E+=1,o?.addEvent("retry_attempt",{attempt:E,kind:"auth-401",status:401,delay_ms:p}),this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] HTTP 401 before generation, retrying blindly (auth proxy may be rotating its token): agent=${t}, requestId=${r}, attempt=${E}/${m}, delayMs=${p}`),await this.abortableSleep(p,i);continue}if(this.isRequestLevelRetryableError(S,s)){let s="force-retry"===R;if(s?this.hasChatOriginReplayed(e,S):this.shouldSkipRequestLevelRetryAfterChatOriginReplay(e,S)){this.logger.info?.(`[ModelProvider] Skip request-level retry after chat origin replay agent=${t}, requestId=${r}`);break}let n=h&&!s,a=s?A.Q9:u;if(!n&&_>=a)break;_+=1;let l=S?.response?.status,d=S?.response?.headers,c=(0,M.parseRetryAfterMs)(d),m=n?eE:eg,p=n?(0,M.parseRateLimitResetMs)(d):null,g=null!=p?Math.min(p,m):computeRequestRetryDelayMs(_,c,m,Math.random,s?A.Kf:ep);o?.addEvent("retry_attempt",{attempt:_,kind:"request",status:"number"==typeof l?l:-1,delay_ms:Math.round(g),...s?{retry_policy:"force"}:{}}),this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Request-level failure before generation, backing off and retrying: agent=${t}, requestId=${r}, status=${l}, attempt=${_}${n?"(watchdog)":`/${a}`}${s?"(retry_policy)":""}, delayMs=${Math.round(g)}${null!=c?`(retry-after=${c}ms)`:""}${null!=p?`(reset-in=${p}ms)`:""}`),await this.abortableSleep(g,i);continue}break}throw o?.setAttribute("retry_count",g+_+f+E),l}getModelTracer(){return this.traceService?.activeTracer??O.u.getTracer("workbuddy.agent.model")}async runWithGalileoModelRequestSpan(e,t){let{parentContext:r,parentSpanId:s}=this.resolveModelSpanParentContext(e.headers,e.parentContext),o={"span.type":"model_request","http.method":e.method.toUpperCase(),"http.url":this.sanitizeUrlForTrace(e.url),"model.id":e.model,"agent.name":e.agentName,"request.id":e.requestId,"model.stream":e.isStreamRequest,"conversation.request.id":e.headers[b.CONVERSATION_REQUEST_ID_HEADER]??e.requestId,"workbuddy.session_id":e.headers[b.CONVERSATION_ID_HEADER]??"","workbuddy.prompt_request_id":e.promptRequestId??e.headers[b.CONVERSATION_REQUEST_ID_HEADER]??"","workbuddy.message_id":e.headers[b.CONVERSATION_MESSAGE_ID_HEADER]??"","workbuddy.request_id":e.headers[b.REQUEST_ID_HEADER]??e.requestId};try{let t=new URL(e.url);o["http.target"]=`${t.pathname}${t.search}`,o["net.peer.name"]=t.hostname,t.port&&(o["net.peer.port"]=Number(t.port))}catch{}let i=this.getModelTracer().startSpan("codebuddy_code.model_request",{kind:D.v.CLIENT,attributes:o},r);this.injectOtelSpanHeaders(e.headers,i,s);let n=i.spanContext();return this.logger.info(`[GalileoMVP] model request span started: traceId=${n.traceId}, spanId=${n.spanId}, parentSpanId=${s||""}, requestId=${e.requestId}, url=${this.sanitizeUrlForTrace(e.url)}`),w._.with(O.u.setSpan(r,i),async()=>{try{let e=await t(i),r=e?.status;return"number"==typeof r?(i.setAttribute("http.status_code",r),i.setStatus({code:r>=400?$.s.ERROR:$.s.OK,...r>=400?{message:`HTTP ${r}`}:{}})):i.setStatus({code:$.s.OK}),e}catch(e){throw"number"==typeof e.response?.status&&i.setAttribute("http.status_code",e.response.status),e.code&&i.setAttribute("error.code",String(e.code)),i.recordException(e),i.setStatus({code:$.s.ERROR,message:e.message}),e}finally{i.end()}})}resolveModelSpanParentContext(e,t){let r=t?O.u.getSpanContext(t):void 0;if(t&&r&&(0,L.YA)(r))return{parentContext:t,parentSpanId:r.spanId};let s=this.getHeaderCaseInsensitive(e,"b3"),o=s?.split("-")??[],i=this.getHeaderCaseInsensitive(e,"x-b3-traceid")||this.getHeaderCaseInsensitive(e,"x-trace-id")||o[0],n=this.getHeaderCaseInsensitive(e,"x-b3-spanid")||o[1],a=this.getHeaderCaseInsensitive(e,"x-b3-sampled")||o[2];return i&&n&&/^[0-9a-f]{32}$/i.test(i)&&/^[0-9a-f]{16}$/i.test(n)&&"00000000000000000000000000000000"!==i?{parentContext:O.u.setSpanContext(t??U.l,{traceId:i.toLowerCase(),spanId:n.toLowerCase(),traceFlags:"0"===a||"false"===a?q.X.NONE:q.X.SAMPLED,isRemote:!0}),parentSpanId:n.toLowerCase()}:{parentContext:t??w._.active()}}createModelStreamSpan(e,t,r,s,o,i){let n,a=!1;try{let{parentContext:a}=this.resolveModelSpanParentContext(e,i);n=this.getModelTracer().startSpan(k.SPAN_NAME_MODEL_STREAM,{kind:D.v.CLIENT,attributes:{[k.MODEL_STREAM_ATTRS.SPAN_TYPE]:k.SPAN_TYPE_MODEL_STREAM,"model.id":t,"agent.name":r,"request.id":s,"conversation.request.id":e[b.CONVERSATION_REQUEST_ID_HEADER]??s,"workbuddy.session_id":e[b.CONVERSATION_ID_HEADER]??"","workbuddy.prompt_request_id":o??e[b.CONVERSATION_REQUEST_ID_HEADER]??"","workbuddy.message_id":e[b.CONVERSATION_MESSAGE_ID_HEADER]??"","workbuddy.request_id":e[b.REQUEST_ID_HEADER]??s}},a)}catch(e){this.logger.info(`[ModelProvider] model_stream span start failed: ${e}`)}return{span:n,endSpan:(e,t,r)=>{n&&!a&&(a=!0,n.setAttribute(k.MODEL_STREAM_ATTRS.CHUNK_COUNT,e.chunkCount),n.setAttribute(k.MODEL_STREAM_ATTRS.TOTAL_BYTES,e.totalBytes),n.setAttribute("stream.status",t),n.setAttribute("workbuddy.stop_reason",r?.message??t),"error"===t?(r&&n.recordException(r),n.setStatus({code:$.s.ERROR,message:r?.message})):"ok"===t?n.setStatus({code:$.s.OK}):n.addEvent("aborted"),n.end())}}}writeGenAiRequestAttrs(e,t){if(!t||"object"!=typeof t)return;let j=e=>{try{return"string"==typeof e?e:JSON.stringify(e)}catch{return""}},clip=(e,t)=>(0,M.truncateAndCopyString)(e,t),r=(0,k.readOtelLoggingFlags)().logUserPrompts,s={};if("number"==typeof t.temperature&&(s.temperature=t.temperature,e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_TEMPERATURE,t.temperature)),"number"==typeof t.top_p&&(s.top_p=t.top_p,e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_TOP_P,t.top_p)),"number"==typeof t.max_tokens&&(s.max_tokens=t.max_tokens,e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_MAX_TOKENS,t.max_tokens)),void 0!==t.max_completion_tokens&&(s.max_completion_tokens=t.max_completion_tokens),void 0!==t.frequency_penalty&&(s.frequency_penalty=t.frequency_penalty),void 0!==t.presence_penalty&&(s.presence_penalty=t.presence_penalty),void 0!==t.stream&&(s.stream=t.stream),Object.keys(s).length>0&&e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_PARAMETERS,j(s)),Array.isArray(t.messages)&&t.messages.length>0){let s=t.messages,o=j(s);o&&(e.setAttribute(k.LLM_SOURCE_ATTRS.INPUT_MESSAGES,clip(o,k.LLM_SOURCE_VALUE_MAX_SIZE)),o.length>k.LLM_SOURCE_VALUE_MAX_SIZE&&e.setAttribute(k.LLM_SOURCE_ATTRS.INPUT_TRUNCATED,!0)),e.setAttribute(k.LLM_SOURCE_ATTRS.PROMPT_COUNT,s.length);let i=Math.min(s.length,k.MAX_PROMPT_MESSAGES);for(let t=0;t<i;t++){let o=s[t];if(o&&"object"==typeof o){if(o.role&&e.setAttribute(k.LLM_PROMPT_KEYS.role(t),String(o.role)),o.tool_call_id&&e.setAttribute(k.LLM_PROMPT_KEYS.toolCallId(t),String(o.tool_call_id)),Array.isArray(o.tool_calls)&&o.tool_calls.length>0){e.setAttribute(k.LLM_PROMPT_KEYS.toolCallCount(t),o.tool_calls.length);for(let s=0;s<o.tool_calls.length;s++){let i=o.tool_calls[s];if(!i||"object"!=typeof i)continue;let n=k.LLM_PROMPT_KEYS.toolCall(t,s),a=i.function??{};i.id&&e.setAttribute(n.id,String(i.id)),a.name&&e.setAttribute(n.name,String(a.name)),r&&void 0!==a.arguments&&e.setAttribute(n.arguments,clip(j(a.arguments),k.LLM_SOURCE_PROMPT_VALUE_MAX_SIZE))}}if(r&&void 0!==o.content){let r=j(o.content);r&&e.setAttribute(k.LLM_PROMPT_KEYS.content(t),clip(r,k.LLM_SOURCE_PROMPT_VALUE_MAX_SIZE))}}}}}injectOtelSpanHeaders(e,t,r){let s=t.spanContext(),o=(s.traceFlags&q.X.SAMPLED)===q.X.SAMPLED;this.setHeaderCaseInsensitive(e,"traceparent",`00-${s.traceId}-${s.spanId}-${o?"01":"00"}`),this.setHeaderCaseInsensitive(e,"b3",`${s.traceId}-${s.spanId}-${o?"1":"0"}${r?`-${r}`:""}`),this.setHeaderCaseInsensitive(e,"X-B3-TraceId",s.traceId),r&&this.setHeaderCaseInsensitive(e,"X-B3-ParentSpanId",r),this.setHeaderCaseInsensitive(e,"X-B3-SpanId",s.spanId),this.setHeaderCaseInsensitive(e,"X-B3-Sampled",o?"1":"0"),this.setHeaderCaseInsensitive(e,"X-Trace-ID",s.traceId)}sanitizeUrlForTrace(e){return e.replace(/([?&])(key|token|api_key|apikey|secret|password)=[^&]*/gi,"$1$2=***")}axiosToFetchAdapter(){return async(e,t)=>{let r,s,o,i,n,a,l,d="string"==typeof e?e:e.url,c=t?.method||"GET",u=t?.headers,h=t?.body,m=Date.now(),p={};if(u)if(u instanceof Headers)p={},u.forEach((e,t)=>{p[t]=e});else if(Array.isArray(u))for(let[e,t]of(p={},u))p[e]=t;else p={...u};let g=(0,M.currentTurnCarrier)(),_=this.sessionManager.getCurrent()||this.sessionManager.sessionSubject.getValue(),f=(0,M.getRequestOwner)(_)?.turn.otelContext??(0,M.currentTurnContext)()?.otelContext,E=_.abortSignal,y=!!E?.aborted,T=er.h.getStore(),S=T?.messageId??(0,P.nH)().replace(/-/g,""),C=T?T.conversationRequestId:(0,M.getEffectiveConversationRequestId)(_),O=T?T.purpose:(0,M.getEffectiveAgentPurpose)(_);_.messageId=S,p[b.CONVERSATION_ID_HEADER]=_.id,p[b.CONVERSATION_REQUEST_ID_HEADER]=C||"",p[b.CONVERSATION_MESSAGE_ID_HEADER]=_.messageId,p[b.REQUEST_ID_HEADER]=_.messageId;let D=(0,et.i)(_);p[b.AGENT_INTENT]=_.meta?.["codebuddy.ai/mode"]??"craft",process.env.PERSONAL_AGENT_ROLE?p[b.AGENT_PURPOSE]="person_agent":O&&(p[b.AGENT_PURPOSE]=O);let w=_.telemetryClientInfo;if(!w?.ideType||!w.ideName||!w.ideVersion){let e=await this.clientInfoProvider.get();s=e.ideType,o=e.platform,i=e.platformVersion}p[b.IDE_TYPE_HEADER]=w?.ideType||s||H.Vo,p[b.IDE_NAME_HEADER]=w?.ideName||o||"",p[b.IDE_VERSION_HEADER]=w?.ideVersion||i||"0.0.0";let $=null,L=!1;if(h&&"string"==typeof h)try{$=JSON.parse(h)}catch{}else h&&"object"==typeof h&&($=h);if($?.model&&(n=$.model),n)try{let e=await this.productManager.waitConfiguration();if(a=e.models?.find(e=>e.id===n),a?.url)if(a.useCustomProtocol)d=a.url,this.logger.info(`Using custom URL for model ${n}: ${d} (useCustomProtocol=true, URL passthrough)`);else{let e=this.isCustomModelRequest(n,a);d=e?this.normalizeChatCompletionsUrl(a.url):a.url,this.logger.info(`Using custom URL for model ${n}: ${d}(raw:${a?.url})${e?" (custom model, ensured /chat/completions)":""}`)}}catch(e){}let U=!this.isCustomModelRequest(n,a)||process.env[J.qL]===Y.pg.Selfhosted,q=_.requestOptions?.providerData;if(q&&U){let e=this.mergeRequestProviderData($,q);e!==$&&($=e,L=!0)}let x=_.requestOptions?.requestExtraFieldsMeta;if(x&&U&&this.injectRequestExtraFieldsMeta($,x)&&(L=!0),!a?.useCustomProtocol&&/\/chat\/completions(?:[/?#]|$)/.test(d)){let e=this.normalizeChatCompletionsUrl(d);e!==d&&(this.logger.info(`Normalized duplicated /chat/completions in URL: ${d} -> ${e}`),d=e)}let F=this.shouldApplyInternalModelRequestHeaders(n,a);for(let[e,t]of(F&&this.setHeaderCaseInsensitive(p,b.AGENT_INTENT,D??"craft"),Object.entries(await this.getCustomHeaders({modelId:n||""}))))this.setHeaderCaseInsensitive(p,e,t);delete p.authorization,delete p["user-agent"];let B=(0,N.Gp)();for(let[e,t]of(B?.auth?.accessToken&&!Object.keys(p).some(e=>"authorization"===e.toLowerCase())&&(p[R.HttpHeaders.AUTHORIZATION]=`Bearer ${B.auth.accessToken}`),Object.entries((0,N.I2)())))Object.keys(p).some(t=>t.toLowerCase()===e.toLowerCase())||(p[e]=t);if(this.isCustomModelRequest(n,a)){let e=Object.keys(p).find(e=>e.toLowerCase()===b.PRIVATE_DATA_HEADER.toLowerCase());e&&delete p[e]}let Q=this.agentManager.getVolatilePluginAgentState().internalModelRequestHeaders;if(Q&&this.shouldApplyInternalModelRequestHeaders(n,a))for(let[e,t]of Object.entries(Q))this.setHeaderCaseInsensitive(p,e,t);this.applyCustomPassthroughHeaders(p,_,n,a),this.setHeaderCaseInsensitive(p,b.REQUEST_ID_HEADER,S),this.setHeaderCaseInsensitive(p,b.CONVERSATION_MESSAGE_ID_HEADER,S),this.setHeaderCaseInsensitive(p,b.CONVERSATION_REQUEST_ID_HEADER,C||"");let V=this.resolveRootRequestId(_);V&&this.setHeaderCaseInsensitive(p,b.ROOT_REQUEST_ID_HEADER,V);let K=this.resolveParentConversationId(_);K&&this.setHeaderCaseInsensitive(p,b.PARENT_CONVERSATION_ID_HEADER,K),this.setHeaderCaseInsensitive(p,b.AGENT_TYPE_HEADER,T?.agentType??(0,M.resolveModelCallAgentType)(_)),this.applyCompactionHeaders(p,T?.compaction);let X=await this.settingsManager.get("env"),W=!!(X?.[J.hv]||process.env[J.hv]);if(F&&!W)for(let[e,t]of Object.entries(g))this.setHeaderCaseInsensitive(p,e,t);if(W)for(let e of(p[v.HTTP_HEADER_SKIP_AUTH_INTERCEPTOR]="1",[...eT,...Object.keys(Q??{})]))delete p[e];if($&&await this.injectReasoningSummaryIfNeeded($,a)&&(L=!0),$&&n){let e=(0,I.stripCustomLocalModelPrefix)(n);e!==n&&$.model===n&&($.model=e,L=!0)}if($&&a?.tags?.includes("custom")&&!1===a.supportsImages&&Array.isArray($.messages)){let e=!1;for(let t of $.messages)if(Array.isArray(t.content)){let r=t.content.filter(e=>"text"===e.type).map(e=>e.text);t.content=r.join("\n"),e=!0}e&&(L=!0,this.logger.debug(`Flattened array content to string for custom model ${n}`))}if($&&this.isCustomModelRequest(n,a)&&a?.supportsToolCall===!1){let e=await this.productManager.waitConfiguration();e.productFeatures?.[I.ProductFeature.SkipToolCallSupportCheck]!==!0&&(void 0!==$.tools||void 0!==$.tool_choice)&&(delete $.tools,delete $.tool_choice,L=!0,this.logger.info(`Stripped tools/tool_choice from request body (model ${n} does not support tool calls)`))}L&&$&&"string"==typeof h&&(h=JSON.stringify($));let z={url:d,method:c,headers:p,data:h,signal:t?.signal||void 0,modelId:n,maxBodyLength:1/0,maxContentLength:1/0};for(let e of[...this.modelRequestProcessors].sort((e,t)=>(e.priority??1e3)-(t.priority??1e3)))await e.process(z);if(W){let e=new Set([...eT,...Object.keys(Q??{}),v.HTTP_HEADER_SKIP_AUTH_INTERCEPTOR,"X-User-Id","X-Enterprise-Id","X-Department-Info","X-Tenant-Id","X-Domain","User-Agent","X-Requested-With"].map(e=>e.toLowerCase())),t=["x-stainless-"],r=z.transformRequest;z.transformRequest=[...Array.isArray(r)?r:r?[r]:[],(r,s)=>{if(!s)return r;let o=new Set(["common","delete","get","head","post","put","patch"]);for(let r of Object.keys(s)){if(o.has(r))continue;let i=r.toLowerCase();if(e.has(i)){delete s[r];continue}t.some(e=>i.startsWith(e))&&delete s[r]}return r}]}let Z="text/event-stream"===p.Accept||"text/event-stream"===p.accept||d.includes("stream=true")||"string"==typeof h&&h.includes('"stream":true');Z&&(z.responseType="stream");let ee=this.getHeaderCaseInsensitive(p,b.REQUEST_ID_HEADER)||"unknown",es=this.telemetryService.reportMessageSendTelemetry(p,$??h,Z,_),eo=_.agentName||"unknown",en=n||$?.model||"unknown",ea=Date.now(),el=Z&&(0,M.consumeRecoveryRequestPending)(_),ed=resolveTimeoutMs(process.env.CODEBUDDY_FIRST_TOKEN_TIMEOUT_MS,eh),ec=el?resolveRecoveryFirstTokenTimeoutMs(process.env.CODEBUDDY_RECOVERY_FIRST_TOKEN_TIMEOUT_MS,ed):ed,eu=!1;if(el){let e=new AbortController;t?.signal&&(0,A.wp)(t.signal,e),"function"==typeof(l=setTimeout(()=>{eu=!0,e.abort()},Math.max(0,ec-(Date.now()-ea)))).unref&&l.unref(),z.signal=e.signal,this.logger.info(`[ModelProvider] Recovery request: first-token deadline=${ec}ms covers response headers and first token, agent=${eo}, requestId=${ee}`)}let clearRecoveryDeadline=()=>{l&&(clearTimeout(l),l=void 0)};y=y||!!E?.aborted,Z&&(r=new SseStreamMonitorImpl({sessionData:SseMonitorSessionData(_,{agentPurpose:O,conversationRequestId:C,messageId:S}),model:en,abortSignal:E},this.galileoService,this.logger)),this.galileoTimingHook?.reportPromptBuild(ea-m,{model:en,agentName:eo});let ep=z.url?.replace(/([?&])(key|token|api_key|apikey|secret|password)=[^&]*/gi,"$1$2=***");if(this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Sending request: agent=${eo}, model=${en}, requestId=${ee}, stream=${Z}, url=${ep}`),_.promptReceivedAt&&!_.firstModelRequestTimingReported){_.firstModelRequestTimingReported=!0;let e=_.promptSeq??0,t=Date.now(),r=t-_.promptReceivedAt,s=_.runnerStartedAt?t-_.runnerStartedAt:-1,o=1===e?"first":`n=${e}`;this.logger.info(`[ModelProvider] message-to-model-request latency: ${r}ms (sinceRunnerStart=${s}ms, promptSeq=${e}, kind=${o}, agent=${eo}, model=${en}, sessionId=${_.id})`)}if("function"==typeof this.logger.debug)try{let e=Array.isArray($?.tools)?$.tools:void 0,t=e?e.map(e=>e?.function?.name??e?.name).filter(Boolean):void 0;this.logger.debug(`[ModelProvider][toolsInBody] requestId=${ee} model=${en} `+(t?`toolCount=${t.length} tools=[${t.join(",")}]`:"tools=<none in body>"))}catch{}process.env.CODEBUDDY_DEBUG_REQUEST&&(async()=>{try{let{messages:e,...t}=await this.decodeDebugRequestBody(z.data)||{};if(this.logger.info(`[ModelProvider] Request body (no messages): ${JSON.stringify(t)}`),e)for(let t=0;t<e.length;t++){let r=e[t],s=JSON.stringify(r).slice(0,500);this.logger.info(`[ModelProvider] messages[${t}]: ${s}`)}}catch{}})().catch(()=>{});let eg=this.isCustomModelRequest(n,a),e_=!!(X?.[J.a1]||process.env[J.a1]),ef=!eg&&!a?.useCustomProtocol&&!e_&&/\/v2\/chat\/completions(?:[/?#]|$)/.test(String(z.url??"")),eE=ei.begin(Z&&ef);if(ef){let e=(0,G.pinFailoverChatOrigin)(z.url);e!==z.url&&(z.url=e,this.logger.info("[NetworkFailover] Chat origin pinned before send"))}try{let e={...p},s=await this.runWithGalileoModelRequestSpan({url:z.url,method:c,headers:z.headers,model:en,agentName:eo,requestId:ee,isStreamRequest:Z,promptRequestId:_.promptRequestId,parentContext:f},e=>this.requestWithConnectionRetry(z,eo,ee,eg,e,eE,ef&&!a?.apiKey,_));clearRecoveryDeadline();let o=extractMockE2EResponseDiagnostics(s.headers);if(o&&this.logger.info(`[MockE2E][response] ${JSON.stringify({sessionId:_.id,promptRequestId:_.promptRequestId,conversationRequestId:_.conversationRequestId,modelRequestId:ee,model:en,httpStatus:s.status,...o})}`),_.conversationRequestId&&await this.telemetryService.flushPendingGrowthTelemetry(_,_.conversationRequestId),Z||await this.telemetryService.reportMessageResponseTelemetryNonStream(_,es,s,!0),r?.onStreamOpen(_.traceId??"",s.status),!Z||!s.data||"function"!=typeof s.data.pipe)return r?.onStreamEnd("error",{aborted:y}),new Response("string"==typeof s.data?s.data:JSON.stringify(s.data),{status:s.status,statusText:s.statusText,headers:s.headers});{let o,i,a,l=t?.signal,isUserAbort=()=>!!E?.aborted,c=s.data,u=!1,h=0,m=0,p=Date.now(),g=!1,{span:y,endSpan:T}=this.createModelStreamSpan(e,en,eo,ee,_.promptRequestId,f),R=(0,k.shouldEmitGenAiSourceAttrs)(),v=[],b=0,O=!1,w=!1;if(R&&y)try{this.writeGenAiRequestAttrs(y,$)}catch(e){this.logger.info(`[ModelProvider] gen_ai request attrs write failed: ${e}`)}let L=resolveTimeoutMs(process.env.CODEBUDDY_STREAM_TIMEOUT_MS,em),U=(a=parseInt(process.env.CODEBUDDY_REASONING_KEEPALIVE_INTERVAL_MS??"",10),Number.isFinite(a)&&a>0?a:0),q=null,P=null,N=null,H=null,x=null,F=this.createStreamingTextProcessor(),B=0,G=0,Q=0,V=0,Y=0,K=!1,X=!1,W=null,z=!1,J=$?.stream_options?.include_usage===!0,Z=!1,startStreamMonitor=()=>{!P&&(this.logger.info(`[ModelProvider] Stream idle monitor armed: agent=${eo}, requestId=${ee}, streamIdleTimeoutMs=${L}`),(P=setInterval(()=>{if(g||u){P&&(clearInterval(P),P=null);return}Q++;let e=Date.now(),t=e-p;if(c.isPaused?.()&&c.resume(),Q%10==0){let r=h-B,s=m-G;if(r>0){let o=e-ea;this.logger.info(`[ModelProvider] Stream progress: agent=${eo}, requestId=${ee}, chunks=${h}(+${r}), bytes=${m}(+${s}), elapsed=${o}ms, idle=${t}ms`),y?.addEvent(k.MODEL_STREAM_EVENT_CHUNK_PROGRESS,{chunks:r,bytes:s,elapsed_ms:o}),B=h,G=m}}if(U>0&&K&&!Z&&!X&&!g&&!u&&h>Y&&e-(V||ea)>=U){V=e,Y=h;try{_.combineSubject.next({type:"notice",notice:{kind:"reasoning_in_progress",elapsedMs:e-ea,chunkCount:h,bytes:m}})}catch{}}if(t>=L){if(X)this.logger.info(`[ModelProvider] Graceful close: finish_reason already received, stream idle for ${L}ms, agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),gracefulCloseStream();else if(this.logger.error(`[cbc-kw=MODEL_REQUEST] Stream timeout: no data received for ${L}ms, agent=${eo}, requestId=${ee}, chunkCount=${h}, totalBytes=${m}`),clearAllTimers(),g=!0,u=!0,T({chunkCount:h,totalBytes:m},"error",Error(`Stream timeout after ${L}ms idle`)),r?.onStreamEnd("error",{errorReason:"timeout",aborted:isUserAbort()}),c.destroy(),q)try{q.error(new A.wM(L,h,m))}catch{}}},1e3))&&"function"==typeof P.unref&&P.unref())},clearFirstTokenTimer=()=>{N&&(clearTimeout(N),N=null)},clearAllTimers=()=>{clearFirstTokenTimer(),P&&(clearInterval(P),P=null),H&&(clearTimeout(H),H=null),x&&l&&(l.removeEventListener("abort",x),x=null)},cancelLocalModelGeneration=()=>{if(n?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX))try{let e=new URL(d).origin,t=`${e}/v1/chat/completions/control`;this.logger.info(`[LocalModel] cancel: POST ${t} model=${n} chunks=${h}`),fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"stop"}),signal:AbortSignal.timeout(2e3)}).then(e=>this.logger.info(`[LocalModel] cancel response status=${e.status}`),e=>this.logger.warn(`[cbc-kw=MODEL_REQUEST] [LocalModel] cancel failed: ${e?.message}`))}catch(e){this.logger.warn(`[cbc-kw=MODEL_REQUEST] [LocalModel] cancel setup error: ${e?.message}`)}},destroyLocalModelSocket=()=>{if(n?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX))try{let e=c.socket;e?e.destroyed?this.logger.info("[LocalModel] cancel: socket already destroyed"):(e.destroy(),this.logger.info("[LocalModel] cancel: TCP socket destroyed")):this.logger.info("[LocalModel] cancel: socket unavailable")}catch(e){this.logger.warn(`[cbc-kw=MODEL_REQUEST] [LocalModel] cancel: socket destroy failed: ${e?.message}`)}},gracefulCloseStream=()=>{if(!g&&(g=!0,clearAllTimers(),r?.onStreamEnd("closed",{recvLength:m,originLength:m,aborted:isUserAbort()}),T({chunkCount:h,totalBytes:m},"ok"),c.destroy(),q))try{let e=F.flush();e&&q.enqueue(e),q.close()}catch{}},startFinishReasonGraceTimer=e=>{!H&&!g&&!u&&(this.logger.info(`[ModelProvider] finish_reason="${e}" received, starting grace period: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${Date.now()-ea}ms`),(H=setTimeout(()=>{g||u||(this.logger.info(`[ModelProvider] Graceful close after finish_reason: stream idle for 5000ms after finish_reason, agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),gracefulCloseStream())},5e3))&&"function"==typeof H.unref&&H.unref())},et=new ReadableStream({start:e=>{q=e;let publishDiscardedStreamCredit=e=>{let t=_.combineSubject;!t||e<=0||(t.next({type:"model",data:{type:"model",event:{usage:{credit:e}},...S?{providerData:{messageId:S}}:{}}}),this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Forwarded discarded empty-stream credit: agent=${eo}, requestId=${ee}, messageId=${S??"unknown"}, credit=${e}`))},failEmptyStream=(e,t)=>{if(!g&&(g=!0,u=!0,o=void 0,clearAllTimers(),"number"==typeof t&&t>0&&publishDiscardedStreamCredit(t),T({chunkCount:h,totalBytes:m},"error",Error("finish_reason=error with no model output")),r?.onModelError("finish_reason=error with no model output","error"),c.destroy(),q))try{q.error(new A.mY(h,m,e,Date.now()-ea))}catch{}};{let e=Date.now()-ea,t=Math.max(ec-e,0);if(0===t){if(this.logger.error(`[cbc-kw=MODEL_REQUEST] First token timeout: HTTP response headers took ${e}ms (exceeds ${ec}ms threshold)`),g=!0,u=!0,T({chunkCount:h,totalBytes:m},"error",Error(`First token timeout after ${ec}ms`)),r?.onStreamEnd("error",{errorReason:"timeout",aborted:isUserAbort()}),c.destroy(),q)try{q.error(new A.wM(ec,h,m,!0))}catch{}}else(N=setTimeout(()=>{if(!K&&!g&&!u){let e=Date.now()-ea;if(this.logger.error(`[cbc-kw=MODEL_REQUEST] First token timeout: no meaningful model output received for ${e}ms (threshold=${ec}ms, received ${h} raw chunks, ${m} bytes)`),g=!0,u=!0,T({chunkCount:h,totalBytes:m},"error",Error(`First token timeout after ${ec}ms`)),r?.onStreamEnd("error",{errorReason:"timeout",aborted:isUserAbort()}),c.destroy(),q)try{q.error(new A.wM(ec,h,m,!0))}catch{}}},t))&&"function"==typeof N.unref&&N.unref()}c.on("data",t=>{if(h++,m+=t.length,p=Date.now(),r?.onChunk(t),1===h&&this.logger.info(`[ModelProvider] First raw chunk received: agent=${eo}, requestId=${ee}, elapsed=${Date.now()-ea}ms, bytes=${t.length}`),R&&!w&&t.includes('"usage"'))try{let e=this.parseSSEChunk(t,!0).usage;e&&(w=!0,"number"==typeof e.prompt_tokens&&y?.setAttribute(k.LLM_SOURCE_ATTRS.USAGE_PROMPT_TOKENS,e.prompt_tokens),"number"==typeof e.completion_tokens&&y?.setAttribute(k.LLM_SOURCE_ATTRS.USAGE_COMPLETION_TOKENS,e.completion_tokens),"number"==typeof e.total_tokens&&y?.setAttribute(k.LLM_SOURCE_ATTRS.USAGE_TOTAL_TOKENS,e.total_tokens))}catch(e){this.logger.info(`[ModelProvider] gen_ai usage capture failed: ${e}`)}if(!K||!X||!Z||X&&J&&!z){let e=this.parseSSEChunk(t,R);if(o){e.credit&&(i=e.credit),(e.hasUsage||e.credit)&&(z=!0,failEmptyStream(o,i));return}if(r?.onParsedChunk({deltaContent:e.monitorDelta,deltaReasoning:e.monitorReasoning,usage:e.monitorUsage,finishReason:e.finishReason,hasToolCall:e.monitorHasToolCall}),R&&e.deltaContent&&!O&&(v.push(e.deltaContent),(b+=e.deltaContent.length)>=k.LLM_SOURCE_VALUE_MAX_SIZE&&(O=!0)),_.telemetry&&!_.telemetry.chunkId&&e.chunkId&&(_.telemetry.chunkId=e.chunkId),!z&&e.hasUsage&&(z=!0,X&&W&&startFinishReasonGraceTimer(W)),!X&&"error"===e.finishReason&&!Z&&!e.hasSubstantiveContent){X=!0,W=e.finishReason;let t=K||e.hasReasoning?"reasoning-only":"no-token";if(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] finish_reason="error" with no substantive model output (${t}), treating as retryable empty stream: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${Date.now()-ea}ms`),e.credit&&(i=e.credit),!e.hasUsage){o=t,H||(H=setTimeout(()=>{failEmptyStream(t,i)},5e3),"function"==typeof H.unref&&H.unref()),this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Waiting for usage tail before empty-stream abort: agent=${eo}, requestId=${ee}`);return}failEmptyStream(t,i);return}if(!Z&&e.hasSubstantiveContent&&(Z=!0),!K&&e.hasContent){K=!0,ei.markCommitReached(eE);let e=Date.now()-ea;if(_.telemetry&&(_.telemetry.firstTokenAt=ea+e),this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] First meaningful token received: agent=${eo}, requestId=${ee}, ttft=${e}ms, rawChunks=${h}, bytes=${m}`),this.galileoTimingHook?.reportTTFB(e,{model:en,requestId:ee,agentName:eo,conversationRequestId:C,messageId:S,promptRequestId:_.promptRequestId}),y?.setAttribute(k.MODEL_STREAM_ATTRS.FIRST_TOKEN_MS,e),y?.addEvent(k.MODEL_STREAM_EVENT_FIRST_TOKEN,{ttft_ms:e,chunk_count:h,bytes:m}),_.telemetry&&!_.telemetry.messageTtfbReported){let e=_.telemetry.firstTokenAt,t=D??"",r={messageId:S,promptRequestId:_.promptRequestId,conversationRequestId:C,model:en,agentName:eo,scene:t};if(_.telemetry.clientSendTime){let t=e-_.telemetry.clientSendTime;if(t>0&&t<=6e5&&(this.galileoTimingHook?.reportMessageTTFBUser(t,r),R))try{_.conversationRequestRootSpan?.setAttributes({[k.LLM_SOURCE_ATTRS.USER_FIRST_TOKEN_MS]:t})}catch{}}if(_.telemetry.promptStartTime){let t=e-_.telemetry.promptStartTime;t>0&&t<=6e5&&this.galileoTimingHook?.reportMessageTTFBModel(t,r)}_.telemetry.messageTtfbReported=!0}clearFirstTokenTimer(),startStreamMonitor()}if(!X&&e.finishReason){if(X=!0,W=e.finishReason,R&&v.length>0){let e=v.join("");if(e){let t=O||e.length>k.LLM_SOURCE_VALUE_MAX_SIZE,r=(0,M.truncateAndCopyString)(e,k.LLM_SOURCE_VALUE_MAX_SIZE);y?.setAttribute(k.LLM_SOURCE_ATTRS.OUTPUT_CONTENT,r),y?.setAttribute(k.LLM_SOURCE_ATTRS.COMPLETION_0_ROLE,"assistant"),y?.setAttribute(k.LLM_SOURCE_ATTRS.COMPLETION_0_CONTENT,r),t&&y?.setAttribute(k.LLM_SOURCE_ATTRS.OUTPUT_TRUNCATED,!0)}}!J||z?startFinishReasonGraceTimer(e.finishReason):this.logger.info(`[ModelProvider] finish_reason="${e.finishReason}" received, waiting for usage tail: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${Date.now()-ea}ms`)}}if(!u&&!o){let r=F.process(t);r&&e.enqueue(r)}}),c.on("end",()=>{if(o)return void failEmptyStream(o,i);if(g||u)return;g=!0,clearAllTimers();let t=Date.now()-ea;if(this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream completed: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${t}ms`),T({chunkCount:h,totalBytes:m},"ok"),r?.onStreamEnd("closed",{recvLength:m,originLength:m,aborted:isUserAbort()}),K&&this.galileoTimingHook?.reportModelStreaming(t,{model:en,agentName:eo,conversationRequestId:C}),this.galileoTimingHook?.reportRequestResult(0,void 0,en,void 0,C,void 0,_.id),!u){let t=F.flush();if(t)try{e.enqueue(t)}catch{}e.close()}}),c.on("error",t=>{if(o&&!isUserAbort())return void failEmptyStream(o,i);if(g||u)return;g=!0,clearAllTimers();let s=Date.now()-ea;this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream error: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${s}ms, error=${t.message}`),T({chunkCount:h,totalBytes:m},"error",t),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort()}),this.galileoTimingHook?.reportRequestResult(-1,"STREAM_ERROR",en,t.message,C,void 0,_.id),u||e.error(t)}),c.on("close",()=>{if(o&&!isUserAbort())return void failEmptyStream(o,i);if(!g){if(X)this.logger.info(`[ModelProvider] Stream closed after finish_reason received, treating as completed: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),gracefulCloseStream();else if(g=!0,clearAllTimers(),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort()}),T({chunkCount:h,totalBytes:m},"error",Error("Stream closed unexpectedly")),!u&&q)try{0===h?(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream closed before first chunk: agent=${eo}, requestId=${ee}`),e.error(Error("Stream closed before receiving any data"))):K?(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream closed unexpectedly: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),e.error(Error(`Stream closed unexpectedly after receiving ${h} chunks (${m} bytes)`))):(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Empty stream: only placeholder chunks received before close: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),e.error(new A.mY(h,m,"placeholder",Date.now()-ea)))}catch{}}}),l&&(x=()=>{g=!0,clearAllTimers(),u=!0,T({chunkCount:h,totalBytes:m},"aborted"),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort(),errorReason:"timeout"}),cancelLocalModelGeneration(),c.destroy(),destroyLocalModelSocket();try{e.close()}catch{}},l.aborted?x():l.addEventListener("abort",x,{once:!0}))},cancel:()=>{g=!0,clearAllTimers(),u=!0,T({chunkCount:h,totalBytes:m},"aborted"),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort(),errorReason:l?.aborted?"timeout":void 0}),cancelLocalModelGeneration(),c.destroy(),destroyLocalModelSocket()}});return new Response(et,{status:s.status,statusText:s.statusText,headers:s.headers})}}catch(s){let e;clearRecoveryDeadline();try{this.logger.error(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Request failed: agent=${eo}, requestId=${ee}, error=${s?.message}`),this.logger.error(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Error response: status=${s.response?.status}, code=${s?.code}, message=${s?.message}`),this.telemetryService.reportMessageResponseTelemetryStream(_,void 0,void 0,s);let o=s.response?.status??s.status??-2,i=s?.code??`HTTP_${o}`;if(this.galileoTimingHook?.reportRequestResult(o,i,en,s?.message?(0,M.truncateAndCopyString)(s.message,500):void 0,C,void 0,_.id),r?.setHttpEndStatus(o),y=y||!!E?.aborted,eu&&!y)return this.logger.error(`[cbc-kw=MODEL_REQUEST] First token timeout (recovery request): no response headers within ${ec}ms, agent=${eo}, requestId=${ee}`),r?.onStreamEnd("error",{aborted:!1,errorReason:"timeout"}),createFirstTokenTimeoutResponse(ec);return r?.onStreamEnd("error",{aborted:y,errorReason:t?.signal?.aborted?"timeout":void 0}),await Promise.race([this.modelErrorAnalyzer.analyze(s,z),new Promise((t,r)=>{e=setTimeout(()=>r(),5e3)})])}catch{return y=y||!!E?.aborted,r?.onStreamEnd("error",{aborted:y,errorReason:t?.signal?.aborted?"timeout":void 0}),this.modelErrorAnalyzer.createErrorResponse(s?.message||"Unknown error",400,"Client Error")}finally{clearTimeout(e)}}}}async createClient(e,t){if(!t)throw this.authenticationManager.currentSessionSubject.next(void 0),new A.WT;try{let{OpenAI:s}=await r.e("3043").then(r.bind(r,73502));return new s(this.buildOpenAIClientOptions(e,t))}catch(e){if(e.message&&e.message.includes("OPENAI_API_KEY"))throw new A.iN;throw e}}buildOpenAIClientOptions(e,t){return{baseURL:e,apiKey:t,fetch:this.axiosToFetchAdapter(),maxRetries:0,timeout:this.resolveRequestTimeoutMs()}}resolveRequestTimeoutMs(){let e=process.env.CODEBUDDY_FIRST_TOKEN_TIMEOUT_MS;if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>0)return t}return 12e5}getCacheKey(e,t,r){return`${e}@${t}@${r?`:${r}`:""}`}resolveModelBaseURL(e){let{envBaseURL:t,modelConfigUrl:r,productEndpoint:s,modelId:o,modelConfig:i,customEndpoint:n}=e;if(r?.trim())return r;let a=this.productManager.getEndpoint()||s;if(n&&(!a||a===n))return`${n}/v2`;if(t&&!(0,K.GO)()?.overridesEndpoint)return t;if(this.isLocalCustomModelRequest(o,i)){let e=o||i?.id||"unknown",t=i?.local===!0;throw new A.hG(t?(0,A.zQ)(e):(0,A.JG)(e),e)}if(!a)throw new A.uJ("Cannot resolve model request endpoint: neither getEndpoint() nor product.endpoint is available yet. Set CODEBUDDY_BASE_URL, or ensure the product configuration has finished loading.");return this.warnIfEnvEndpointMismatch(a),`${a}/v2`}warnIfEnvEndpointMismatch(e){let t,r=process.env[J.qL];if(r&&"ioa"===r.toLowerCase()){try{t=new URL(e).hostname}catch{return}t.endsWith("codebuddy.ai")&&this.logger?.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] resolved baseURL host "${t}" looks like the public cloud, but CODEBUDDY_INTERNET_ENVIRONMENT=${r}. The request will likely fail with 401 endpoint mismatch. Check ProductManager sync state or set CODEBUDDY_BASE_URL as a workaround.`)}}async normalizeNewToolResults(e,t){for(let r of e)"function_call_result"===r.rawItem.type&&await this.functionCallResultAgentInputItemProcessor.process(r.rawItem,t)}async getModel(e){if(!e)throw new A.uJ("model name is required");let t=this.sessionManager.getCurrent()||this.sessionManager.sessionSubject.getValue(),r=t.resultSubject.value;if(r?.newItems.length){let e=r.newItems[r.newItems.length-1];e&&(await this.defaultInputItemProcessor.process(e.rawItem,t),await this.normalizeNewToolResults(r.newItems,t))}let s=this.authenticationManager.currentSessionSubject.getValue()?.auth,o=await this.settingsManager.get("env"),i=o?.[J.a1]||process.env[J.a1],n=(0,N.Gp)()?.auth?.accessToken??s?.accessToken,a=await this.productManager.waitConfiguration(),l=a.models?.find(t=>t.id===e),d=(0,V.f)()?.endpoint,c=this.resolveModelBaseURL({envBaseURL:i,modelConfigUrl:l?.url,productEndpoint:a.endpoint,modelId:e,modelConfig:l,customEndpoint:d});this.logger.debug(`Resolved baseURL for model ${e}: ${c}`);let u=l?.local===!0;if(this.isLocalCustomModelRequest(e,l)&&!u&&!isLoopbackEndpoint(l?.url)&&!l?.apiKey?.trim())throw new A.hG((0,A.$v)(e),e);l?.apiKey&&(n=l.apiKey,this.logger.debug(`Using custom API key for model ${e}`)),l?.local===!0&&(n="local");let h=this.getCacheKey(c,e,n),m=this.modelCache.get(h);if(!m){if(this.modelCache.size>=es.mr)for(let e=0;e<es.mr/2;e++){let e=this.modelCache.keys().next().value;void 0!==e&&this.modelCache.delete(e)}try{let t=await this.createClient(c,n);m=new A.lS(t,e),this.modelCache.set(h,m)}catch(e){if(e.message&&(e.message.includes("Authentication")||e.message.includes("OPENAI_API_KEY")||!n))throw this.authenticationManager.currentSessionSubject.next(void 0),new A.WT;throw e}}return(0,er.l)(this.sensitiveModelBoundary.wrapModel(m,t.id,this.securityReviewGate?.isModelBehaviorReviewEnabled(t)===!0),t)}};__decorate([(0,T.Autowired)(R.RestOperations),__metadata("design:type","function"==typeof(s=void 0!==R.RestOperations&&R.RestOperations)?s:Object)],eS.prototype,"restOperations",void 0),__decorate([(0,T.Autowired)(v.AuthenticationManager),__metadata("design:type","function"==typeof(o=void 0!==v.AuthenticationManager&&v.AuthenticationManager)?o:Object)],eS.prototype,"authenticationManager",void 0),__decorate([(0,T.Autowired)(I.ProductManager),__metadata("design:type","function"==typeof(i=void 0!==I.ProductManager&&I.ProductManager)?i:Object)],eS.prototype,"productManager",void 0),__decorate([(0,T.Autowired)(M.SessionManager),__metadata("design:type","function"==typeof(n=void 0!==M.SessionManager&&M.SessionManager)?n:Object)],eS.prototype,"sessionManager",void 0),__decorate([(0,T.Autowired)(M.ModelRequestRetryPhase),__metadata("design:type","function"==typeof(a=void 0!==M.ModelRequestRetryPhase&&M.ModelRequestRetryPhase)?a:Object)],eS.prototype,"modelRequestRetryPhase",void 0),__decorate([(0,T.Autowired)(Z.H0),__metadata("design:type","function"==typeof(l=void 0!==Z.H0&&Z.H0)?l:Object)],eS.prototype,"telemetryService",void 0),__decorate([(0,T.Autowired)(I.ClientInfoProvider),__metadata("design:type","function"==typeof(d=void 0!==I.ClientInfoProvider&&I.ClientInfoProvider)?d:Object)],eS.prototype,"clientInfoProvider",void 0),__decorate([(0,T.Autowired)(M.AgentManager),__metadata("design:type","function"==typeof(c=void 0!==M.AgentManager&&M.AgentManager)?c:Object)],eS.prototype,"agentManager",void 0),__decorate([(0,T.Autowired)(k.Logger),__metadata("design:type","function"==typeof(u=void 0!==k.Logger&&k.Logger)?u:Object)],eS.prototype,"logger",void 0),__decorate([(0,T.Autowired)(k.TraceService),(0,T.Optional)(),__metadata("design:type","function"==typeof(h=void 0!==k.TraceService&&k.TraceService)?h:Object)],eS.prototype,"traceService",void 0),__decorate([(0,T.Autowired)(M.DefaultInputItemProcessor),__metadata("design:type","function"==typeof(m=void 0!==M.DefaultInputItemProcessor&&M.DefaultInputItemProcessor)?m:Object)],eS.prototype,"defaultInputItemProcessor",void 0),__decorate([(0,T.Autowired)(M.FunctionCallResultAgentInputItemProcessor),__metadata("design:type","function"==typeof(p=void 0!==M.FunctionCallResultAgentInputItemProcessor&&M.FunctionCallResultAgentInputItemProcessor)?p:Object)],eS.prototype,"functionCallResultAgentInputItemProcessor",void 0),__decorate([(0,T.Autowired)(es.Iy),__metadata("design:type","function"==typeof(g=void 0!==es.Iy&&es.Iy)?g:Object)],eS.prototype,"modelErrorAnalyzer",void 0),__decorate([(0,T.Autowired)(J.Vr),__metadata("design:type","function"==typeof(_=void 0!==J.Vr&&J.Vr)?_:Object)],eS.prototype,"settingsManager",void 0),__decorate([(0,T.Autowired)(es.TD),__metadata("design:type",Array)],eS.prototype,"modelRequestProcessors",void 0),__decorate([(0,T.Autowired)(z.el),__metadata("design:type",Object)],eS.prototype,"sensitiveModelBoundary",void 0),__decorate([(0,T.Autowired)(W.UD),(0,T.Optional)(),__metadata("design:type",Object)],eS.prototype,"securityReviewGate",void 0),__decorate([(0,T.Autowired)(x.Nx),(0,T.Optional)(),__metadata("design:type",Object)],eS.prototype,"galileoTimingHook",void 0),__decorate([(0,T.Autowired)(F.v),(0,T.Optional)(),__metadata("design:type",Object)],eS.prototype,"galileoService",void 0),eS=__decorate([(0,T.Component)(es.lx,X.Ye)],eS)}};
1
+ "use strict";exports.ids=["3163"],exports.modules={34054(e,t,r){r.r(t),r.d(t,{DEFAULT_REQUEST_MAX_RETRIES:()=>e_,DEFAULT_STREAM_IDLE_TIMEOUT_MS:()=>em,DEFAULT_FIRST_TOKEN_TIMEOUT_MS:()=>eh,resolveRecoveryFirstTokenTimeoutMs:()=>resolveRecoveryFirstTokenTimeoutMs,resolveRequestMaxRetries:()=>resolveRequestMaxRetries,DEFAULT_MODEL_401_RETRY_DELAY_MS:()=>ey,resolveTimeoutMs:()=>resolveTimeoutMs,WATCHDOG_MAX_BACKOFF_MS:()=>eE,computeRequestRetryDelayMs:()=>computeRequestRetryDelayMs,ModelProviderImpl:()=>eS,isRetryWatchdogEnabled:()=>isRetryWatchdogEnabled,REQUEST_RETRY_BASE_DELAY_MS:()=>eg,MAX_REQUEST_MAX_RETRIES:()=>ef,resolveModel401MaxRetries:()=>resolveModel401MaxRetries,DEFAULT_RECOVERY_FIRST_TOKEN_TIMEOUT_MS:()=>eR,REQUEST_RETRY_MAX_DELAY_MS:()=>ep,extractMockE2EResponseDiagnostics:()=>extractMockE2EResponseDiagnostics,resolveModel401RetryDelayMs:()=>resolveModel401RetryDelayMs,createFirstTokenTimeoutResponse:()=>createFirstTokenTimeoutResponse});var s,o,i,n,a,l,d,c,u,h,m,g,p,_,f=r(46193),E=r(57975),y=r(38522),T=r(88523),R=r(7268),S=r(14913),v=r(86482),M=r(20027),A=r(5884),b=r(51147),I=r(9151),C=r(80134),k=r(92735),O=r(96453),D=r(19672),w=r(49839),$=r(20173),L=r(58988),U=r(73122),q=r(66678),P=r(34506),N=r(80039),H=r(5178),x=r(14545),F=r(45565),B=r(69712),G=r(18151),Q=r(34340),V=r(43394),Y=r(91325),K=r(89781),X=r(40445),W=r(78725),z=r(19436),J=r(29889),Z=r(26234),ee=r(64013),et=r(21537),er=r(68475),es=r(28985),eo=r(77598);let ChatNetworkFailoverShadowRecorder=class ChatNetworkFailoverShadowRecorder{constructor(){this.events=[],this.currentBytes=0,this.nextSequence=1}begin(e){if(e)return{operationId:(0,eo.randomUUID)(),nextAttempt:1,commitReached:!1}}async observeAttempt(e,t){if(!e)return t();let r=e.nextAttempt++,s=Date.now();try{let o=await t();return this.append({timestamp:Date.now(),routeId:"core-api",operation:"chat.stream",operationId:e.operationId,attempt:r,outcome:"success",httpStatus:o.status,durationMs:Date.now()-s,commitReached:e.commitReached}),o}catch(t){throw this.append({timestamp:Date.now(),routeId:"core-api",operation:"chat.stream",operationId:e.operationId,attempt:r,outcome:"terminal_error",httpStatus:t.response?.status??t.status,transportCode:"string"==typeof t.code?t.code:void 0,durationMs:Date.now()-s,commitReached:e.commitReached}),t}}markCommitReached(e){if(!e||e.commitReached)return;e.commitReached=!0;let t=[...this.events].reverse().find(t=>t.event.operationId===e.operationId);if(t){let e=t.bytes;t.event.commitReached=!0,t.bytes=Buffer.byteLength(JSON.stringify(t.event),"utf8"),this.currentBytes+=t.bytes-e}}recent(e=100){let t=Math.max(0,Math.floor(e));return 0===t?[]:this.events.slice(-t).map(e=>({...e.event}))}clearForTests(){this.events.length=0,this.currentBytes=0,this.nextSequence=1}append(e){let t={...e,sequence:this.nextSequence++},r=Buffer.byteLength(JSON.stringify(t),"utf8");if(!(r>2097152)){for(;this.currentBytes+r>2097152&&this.events.length>0;){let e=this.events.shift();e&&(this.currentBytes-=e.bytes)}this.events.push({bytes:r,event:t}),this.currentBytes+=r}}};let ei=new ChatNetworkFailoverShadowRecorder,en=[50,100,500,1e3,3e3,1e4,6e4],ea=["0_50","50_100","100_500","500_1000","1000_3000","3000_10000","10000_60000","gt_60000"];function SseMonitorSessionData(e,t){let r=e.meta?.["codebuddy.ai/mode"];return{id:e.id,conversationRequestId:t.conversationRequestId,promptRequestId:e.promptRequestId,messageId:t.messageId,traceId:e.traceId,agentName:e.agentName,agentPurpose:t.agentPurpose,isCompressing:e.isCompressing,scene:"string"==typeof r?r:""}}let el="modelError",ed={conversation_id:"\u4F1A\u8BDDID",conversation_request_id:"\u4F1A\u8BDD\u8BF7\u6C42ID",prompt_request_id:"\u63D0\u793A\u8BF7\u6C42ID",trace_id:"\u94FE\u8DEF\u8FFD\u8E2AID",message_id:"\u6D88\u606FID",model:"\u6A21\u578B",agent_name:"\u667A\u80FD\u4F53",scene:"\u573A\u666F",request_type:"\u8BF7\u6C42\u7C7B\u578B",http_begin_status_code:"HTTP\u8FDE\u63A5\u72B6\u6001\u7801",http_end_status_code:"HTTP\u7ED3\u675F\u72B6\u6001\u7801",model_error:"\u6A21\u578B\u9519\u8BEF",model_error_code:"\u6A21\u578B\u9519\u8BEF\u7801",finish_flag:"\u7ED3\u675F\u6807\u8BC6",finish_reason:"\u7ED3\u675F\u539F\u56E0",total_cost_ms:"\u603B\u8017\u65F6(ms)",sse_connect_cost_ms:"SSE\u8FDE\u63A5\u8017\u65F6(ms)",ttft_ms:"\u9996\u5B57\u8017\u65F6TTFT(ms)",text_first_cost_ms:"\u6B63\u6587\u9996\u5B57\u8017\u65F6(ms)",text_total_cost_ms:"\u6B63\u6587\u8FC7\u7A0B\u8017\u65F6(ms)",think_first_cost_ms:"\u601D\u8003\u9996\u5B57\u8017\u65F6(ms)",think_total_cost_ms:"\u601D\u8003\u8FC7\u7A0B\u8017\u65F6(ms)",total_bytes:"\u603B\u5B57\u8282\u6570",total_chunks:"\u603B\u5305\u6570",completion_tokens:"\u8F93\u51FAtoken\u6570",prompt_tokens:"\u8F93\u5165token\u6570",total_tokens:"\u603Btoken\u6570",text_content_bytes:"\u6B63\u6587\u534F\u8BAE\u5B57\u8282\u6570",text_content_chars:"\u6B63\u6587\u53EF\u89C1\u5B57\u7B26\u6570",text_total_tokens:"\u6B63\u6587token\u6570",think_content_bytes:"\u601D\u8003\u534F\u8BAE\u5B57\u8282\u6570",think_content_chars:"\u601D\u8003\u53EF\u89C1\u5B57\u7B26\u6570",think_total_tokens:"\u601D\u8003token\u6570",recv_length:"\u63A5\u6536\u957F\u5EA6",origin_length:"\u539F\u59CB\u957F\u5EA6",report_version:"\u4E0A\u62A5\u7248\u672C",report_source:"\u4E0A\u62A5\u6765\u6E90"},ec={"0_50":"0-50ms","50_100":"50-100ms","100_500":"100-500ms","500_1000":"500ms-1s","1000_3000":"1-3s","3000_10000":"3-10s","10000_60000":"10s-60s",gt_60000:">60s"};function createContentStats(){return{bytes:0,contentBytes:0,contentChars:0,tokens:0}}let SseStreamMonitorImpl=class SseStreamMonitorImpl{constructor(e,t,r){for(const s of(this.connectedTime=0,this.currentChunkTime=0,this.firstTokenTime=0,this.firstTextTime=0,this.lastTextTime=0,this.firstThinkTime=0,this.lastThinkTime=0,this.firstToolCallTime=0,this.endTime=0,this.totalBytes=0,this.totalChunks=0,this.completionTokens=0,this.promptTokens=0,this.totalTokens=0,this.textStats=createContentStats(),this.thinkStats=createContentStats(),this.lastTokenTime=0,this.intervalTimes={},this.intervalTotal={},this.finishFlag="",this.isSensitive=!1,this.modelError="",this.modelErrorCode="",this.finishReason="",this.isReportedStart=!1,this.isReportedEnd=!1,this.httpBeginStatusCode=0,this.httpEndStatusCode=200,this.galileo=t,this.logger=r,this.sessionData={...e.sessionData,conversationRequestId:e.sessionData.conversationRequestId??"",promptRequestId:e.sessionData.promptRequestId??"",messageId:e.sessionData.messageId??"",traceId:e.sessionData.traceId??"",agentName:e.sessionData.agentName||"unknown",scene:e.sessionData.scene??""},this.model=e.model,this.requestType=this.resolveRequestType(),this.requestStartTime=Date.now(),this.requestTag=(this.sessionData.conversationRequestId??"").slice(0,8)||this.sessionData.id.slice(0,8),ea))this.intervalTimes[s]=0,this.intervalTotal[s]=0;this.logEnqueue(),this.attachUserAbort(e.abortSignal)}resolveRequestType(){if(this.sessionData.isCompressing)return"compress";let e=this.sessionData.agentPurpose;return e?e.startsWith("custom_agent:")||"conversation"===e||"conversation:compact"===e?"chat":e:"other"}logEnqueue(){try{this.logEvent("enqueue")}catch{}}onStreamOpen(e,t){try{this.connectedTime=Date.now(),e&&(this.sessionData.traceId=e),void 0!==t&&(this.httpBeginStatusCode=t)}catch{}}onFirstData(){try{if(this.isReportedStart||this.isReportedEnd)return;this.isReportedStart=!0;let e=this.connectedTime-this.requestStartTime;this.logEvent("start",{sse_connect_cost_ms:String(e)})}catch{}}onStreamEnd(e,t){try{let r=t?.aborted?"canceled":e,s={recvLength:t?.recvLength??this.totalBytes,originLength:t?.originLength??this.totalBytes};if("error"===r)return void this.onStreamError(t?.errorReason);this.onStreamClose(r,s)}catch{}}attachUserAbort(e){e&&!e.aborted&&(this.userAbortSignal=e,this.onUserAbort=()=>this.onStreamEnd("canceled"),e.addEventListener("abort",this.onUserAbort,{once:!0}))}detachUserAbort(){this.userAbortSignal&&this.onUserAbort&&(this.userAbortSignal.removeEventListener("abort",this.onUserAbort),this.userAbortSignal=void 0,this.onUserAbort=void 0)}onStreamClose(e,t){try{if(this.detachUserAbort(),this.isReportedEnd)return;this.isReportedEnd=!0,this.endTime=Date.now(),this.resolveFinishFlag(e),this.reportEnd(t)}catch{}}onStreamError(e){try{if(this.detachUserAbort(),this.isReportedEnd)return;this.isReportedEnd=!0,this.endTime=Date.now(),this.resolveFinishFlag("error",e),this.reportEnd({recvLength:this.totalBytes,originLength:this.totalBytes})}catch{}}onChunk(e){try{this.currentChunkTime=Date.now(),this.totalBytes+=e.length,this.totalChunks++,this.calculateConsumeInterval(this.currentChunkTime),1===this.totalChunks&&this.onFirstData()}catch{}}onParsedChunk(e){try{e.deltaContent&&this.onTextDelta(e.deltaContent),e.deltaReasoning&&this.onThinkDelta(e.deltaReasoning),e.hasToolCall&&this.onToolCall(),e.usage&&this.onUsage(e.usage),e.finishReason&&this.onFinishReason(e.finishReason)}catch{}}onTextDelta(e){try{if(!e)return;let t=this.chunkTime();0===this.firstTextTime&&(this.firstTextTime=t,0===this.firstTokenTime&&(this.firstTokenTime=t)),this.lastTextTime=t,this.textStats.contentBytes+=Buffer.byteLength(e,"utf8"),this.textStats.contentChars+=[...e].length,this.textStats.tokens++}catch{}}onThinkDelta(e){try{if(!e)return;let t=this.chunkTime();0===this.firstThinkTime&&(this.firstThinkTime=t,0===this.firstTokenTime&&(this.firstTokenTime=t)),this.lastThinkTime=t,this.thinkStats.contentBytes+=Buffer.byteLength(e,"utf8"),this.thinkStats.contentChars+=[...e].length,this.thinkStats.tokens++}catch{}}onToolCall(){try{let e=this.chunkTime();0===this.firstToolCallTime&&(this.firstToolCallTime=e,0===this.firstTokenTime&&(this.firstTokenTime=e))}catch{}}onFinishReason(e){try{if(!e)return;this.finishReason=e}catch{}}onUsage(e){try{if(!e)return;this.completionTokens=e.completion_tokens??0,this.promptTokens=e.prompt_tokens??0,this.totalTokens=e.total_tokens??0}catch{}}onModelError(e,t){try{this.modelError=e,this.modelErrorCode=t,this.onStreamError("modelError")}catch{}}onSensitiveHit(){try{this.isSensitive=!0}catch{}}setHttpEndStatus(e){try{(-2===e||0===e||e>=200&&e<=599)&&(this.httpEndStatusCode=e)}catch{}}chunkTime(){return this.currentChunkTime||Date.now()}calculateConsumeInterval(e){if(0===this.lastTokenTime){this.lastTokenTime=e;return}let t=e-this.lastTokenTime;if(t<0)return;let r=this.getIntervalKey(t);this.intervalTimes[r]++,this.intervalTotal[r]+=t,this.lastTokenTime=e}getIntervalKey(e){for(let t=0;t<en.length;t++)if(e<en[t])return ea[t];return ea[ea.length-1]}resolveFinishFlag(e,t){switch(e){case"closed":this.finishFlag=this.modelError?el:this.isSensitive?"sensitive":"done";break;case"canceled":this.finishFlag="manualStop";break;default:this.modelError||"modelError"===t?this.finishFlag=el:"timeout"===t?this.finishFlag="timeout":this.finishFlag="interrupt"}}reportEnd(e){let t=this.endTime-this.requestStartTime,r=this.connectedTime>0?this.connectedTime-this.requestStartTime:0,s=this.firstTextTime>0?this.firstTextTime-this.connectedTime:0,o=this.lastTextTime>0&&this.firstTextTime>0?this.lastTextTime-this.firstTextTime:0,i=this.firstThinkTime>0?this.firstThinkTime-this.connectedTime:0,n=this.lastThinkTime>0&&this.firstThinkTime>0?this.lastThinkTime-this.firstThinkTime:0,a=this.firstTokenTime>0?this.firstTokenTime-this.requestStartTime:0,l={http_begin_status_code:String(this.httpBeginStatusCode),http_end_status_code:String(this.httpEndStatusCode),model_error:this.modelError,model_error_code:this.modelErrorCode,finish_flag:this.finishFlag,finish_reason:this.finishReason,total_cost_ms:String(t),sse_connect_cost_ms:String(r),ttft_ms:String(a),text_first_cost_ms:String(s),text_total_cost_ms:String(o),think_first_cost_ms:String(i),think_total_cost_ms:String(n),total_bytes:String(this.totalBytes),total_chunks:String(this.totalChunks),completion_tokens:String(this.completionTokens),prompt_tokens:String(this.promptTokens),total_tokens:String(this.totalTokens),text_content_bytes:String(this.textStats.contentBytes),text_content_chars:String(this.textStats.contentChars),text_total_tokens:String(this.textStats.tokens),think_content_bytes:String(this.thinkStats.contentBytes),think_content_chars:String(this.thinkStats.contentChars),think_total_tokens:String(this.thinkStats.tokens),recv_length:String(e.recvLength),origin_length:String(e.originLength)};for(let e of ea)l[`interval_${e}_count`]=String(this.intervalTimes[e]??0),l[`interval_${e}_total_ms`]=String(this.intervalTotal[e]??0);this.logEvent("end",l)}sessionLogFields(e){return{conversation_id:e.id,conversation_request_id:e.conversationRequestId??"",prompt_request_id:e.promptRequestId??"",trace_id:e.traceId??"",message_id:e.messageId??"",model:this.model,agent_name:e.agentName??"unknown",scene:e.scene??"",request_type:this.requestType,report_version:"1",report_source:"agent-cli"}}logEvent(e,t){let r={...this.sessionLogFields(this.sessionData),...t};this.writeFileLog(`[SseMonitor#${this.requestTag}] qua.${e}: ${JSON.stringify(r)}`),this.galileo?.logInfo(`agent.sse.qua.${e}`,{type:"custom_event",name:`agent.sse.qua.${e}`,...r})}writeFileLog(e){this.logger.info(e)}printConsoleEvent(e,t){let r=[`[SseMonitor#${this.requestTag}] ===== qua.${e} =====`];for(let[e,s]of Object.entries(t)){let t=this.getFieldCnName(e);r.push(` ${e}(${t}): ${s}`)}r.push(""),process.stdout.write(r.join("\n")+"\n")}getFieldCnName(e){if(ed[e])return ed[e];let t=e.match(/^interval_(.+)_count$/);if(t){let e=ec[t[1]]??t[1];return`${e}\u{533A}\u{95F4}\u{6B21}\u{6570}`}let r=e.match(/^interval_(.+)_total_ms$/);if(r){let e=ec[r[1]]??r[1];return`${e}\u{533A}\u{95F4}\u{603B}\u{8017}\u{65F6}(ms)`}return e}};var __decorate=function(e,t,r,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(n=(i<3?o(n):i>3?o(t,r,n):o(t,r))||n);return i>3&&n&&Object.defineProperty(t,r,n),n},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let eu=(0,E.promisify)(y.gunzip),eh=12e5,em=12e5;function resolveTimeoutMs(e,t){if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>0)return t}return t}let eg=500,ep=32e3,e_=1,ef=15,eE=3e5,ey=2e3,eT=[b.CONVERSATION_ID_HEADER,b.CONVERSATION_REQUEST_ID_HEADER,b.CONVERSATION_MESSAGE_ID_HEADER,b.PARENT_CONVERSATION_ID_HEADER,b.AGENT_TYPE_HEADER,b.COMPACTION_HEADER,b.CONTEXT_COMPACTED_HEADER,b.REQUEST_ID_HEADER,b.AGENT_INTENT,b.AGENT_PURPOSE,b.IDE_TYPE_HEADER,b.IDE_NAME_HEADER,b.IDE_VERSION_HEADER,b.PRODUCT,b.API_KEY_HEADER,b.PRIVATE_DATA_HEADER];function resolveRequestMaxRetries(e){if(void 0!==e&&""!==e){let t=parseInt(e,10);if(!isNaN(t)&&t>=0)return Math.min(t,ef)}return e_}function isRetryWatchdogEnabled(e){if("string"!=typeof e)return!1;let t=e.trim().toLowerCase();return"1"===t||"true"===t||"yes"===t}function resolveModel401MaxRetries(e){if(void 0!==e&&""!==e){let t=parseInt(e,10);if(!isNaN(t)&&t>=0)return Math.min(t,ef)}return 0}function resolveModel401RetryDelayMs(e){if(void 0!==e&&""!==e){let t=parseInt(e,10);if(!isNaN(t)&&t>=0)return Math.min(t,ep)}return ey}function computeRequestRetryDelayMs(e,t,r=ep,s=Math.random,o=eg){return null!=t&&t>0?Math.min(t,r):(0,A.Rv)(e,{baseDelayMs:o,maxDelayMs:r,random:s})}let eR=3e5;function resolveRecoveryFirstTokenTimeoutMs(e,t){return Math.min(resolveTimeoutMs(e,eR),t)}function createFirstTokenTimeoutResponse(e){return new Response(new ReadableStream({start(t){t.error(new A.wM(e,0,0,!0))}}),{status:200,headers:{"content-type":"text/event-stream"}})}function readResponseHeader(e,t){if(!e||"object"!=typeof e)return;try{let r=e.get?.(t);if(null!=r)return String(r)}catch{}let r=Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase()),s=r?e[r]:void 0;return null==s?void 0:String(s)}function extractMockE2EResponseDiagnostics(e){let t={traceId:readResponseHeader(e,"x-mock-trace-id"),requestId:readResponseHeader(e,"x-mock-request-id"),matchSource:readResponseHeader(e,"x-mock-match-source"),matchResult:readResponseHeader(e,"x-mock-match-result"),offset:readResponseHeader(e,"x-mock-offset"),responseId:readResponseHeader(e,"x-mock-response-id"),finishReason:readResponseHeader(e,"x-mock-finish-reason"),dataVersion:readResponseHeader(e,"x-mock-data-version"),instance:readResponseHeader(e,"x-mock-instance"),contentKind:readResponseHeader(e,"x-mock-content-kind")};return Object.values(t).some(e=>void 0!==e)?t:void 0}function isLoopbackEndpoint(e){if("string"!=typeof e||""===e.trim())return!1;try{let{hostname:t}=new URL(e);return"localhost"===t||"127.0.0.1"===t||"[::1]"===t||"::1"===t||t.endsWith(".localhost")}catch{return!1}}let eS=class{constructor(){this.modelRequestProcessors=[],this.modelCache=new Map}normalizeChatCompletionsUrl(e){let t=e.search(/[?#]/),r=t>=0?e.slice(t):"",s=t>=0?e.slice(0,t):e;for(s=s.replace(/\/+$/,"");s.endsWith("/chat/completions");)s=s.slice(0,-17);return`${s}/chat/completions${r}`}async decodeDebugRequestBody(e){return"string"==typeof e?JSON.parse(e):e instanceof Uint8Array?31===e[0]&&139===e[1]?JSON.parse((await eu(e)).toString("utf-8")):JSON.parse(Buffer.from(e).toString("utf-8")):e}isCustomModelRequest(e,t){let r=e||t?.id;return!!(r?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX)||r?.startsWith("custom:"))||t?.trustLevel===I.ModelTrustLevel.CUSTOM||Array.isArray(t?.tags)&&t.tags.includes(I.MODEL_TAG_CUSTOM)}isLocalCustomModelRequest(e,t){let r=e||t?.id;return!!r?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX)}shouldApplyInternalModelRequestHeaders(e,t){return!!t&&!this.isCustomModelRequest(e,t)}applyCustomPassthroughHeaders(e,t,r,s){let o=t.requestOptions?.customPassthroughHeaders;if(o&&this.shouldApplyInternalModelRequestHeaders(r,s))for(let[t,r]of Object.entries(o))this.setHeaderCaseInsensitive(e,t,r)}isRecord(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}mergeRequestProviderData(e,t){if(!t||!this.isRecord(e))return e;let r=this.isRecord(t.extra_vars)?t.extra_vars:void 0,s=this.isRecord(e.extra_vars)?e.extra_vars:{};return{...e,...t,...r?{extra_vars:{...s,...r}}:{}}}injectRequestExtraFieldsMeta(e,t){let r;if(!this.isRecord(t)||0===Object.keys(t).length||!this.isRecord(e))return!1;let s=e.messages;if(!Array.isArray(s)||0===s.length)return!1;for(let e=s.length-1;e>=0;e--){let t=s[e];if(this.isRecord(t)&&"user"===t.role){r=t;break}}if(!r)return!1;let o=this.isRecord(r.extra_fields)?r.extra_fields:{},i=this.isRecord(o._meta)?o._meta:{};return r.extra_fields={...o,_meta:{...i,...t}},!0}resolveRootRequestId(e){let t=e.meta?.rootRequestId;return"string"==typeof t&&t.length>0?t:void 0}resolveParentConversationId(e){let t=e.meta?.parentConversationId;if("string"==typeof t&&0!==t.length&&t!==e.id)return t}applyCompactionHeaders(e,t){t?.kind&&this.setHeaderCaseInsensitive(e,b.COMPACTION_HEADER,t.kind),t?.contextCompacted&&this.setHeaderCaseInsensitive(e,b.CONTEXT_COMPACTED_HEADER,t.contextCompacted)}getHeaderCaseInsensitive(e,t){let r=Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase());return r?e[r]:void 0}setHeaderCaseInsensitive(e,t,r){let s=Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase());s&&delete e[s],e[t]=r}parseSSEChunk(e,t=!1){let r,s,o,i,n=!1,a=!1,l=!1,d=null,c=!1,u="",h="",m="",g=!1;try{for(let p of e.toString("utf-8").split("\n")){let e=p.trim();if(!e.startsWith("data:"))continue;let _=e.slice(5).trim();if(_&&"[DONE]"!==_)try{let e=JSON.parse(_);if(void 0===s&&"string"==typeof e?.id&&e.id.length>0&&(s=e.id),e?.usage!=null){if(c=!0,"object"==typeof e.usage){let t=e.usage.credit;"number"==typeof t&&Number.isFinite(t)&&t>0&&(r=t)}if(t&&"object"==typeof e.usage){let t=e.usage;o={prompt_tokens:"number"==typeof t.prompt_tokens?t.prompt_tokens:void 0,completion_tokens:"number"==typeof t.completion_tokens?t.completion_tokens:void 0,total_tokens:"number"==typeof t.total_tokens?t.total_tokens:void 0}}if(!i&&"object"==typeof e.usage){let t=e.usage;i={prompt_tokens:"number"==typeof t.prompt_tokens?t.prompt_tokens:void 0,completion_tokens:"number"==typeof t.completion_tokens?t.completion_tokens:void 0,total_tokens:"number"==typeof t.total_tokens?t.total_tokens:void 0}}}let p=e?.choices;if(!Array.isArray(p)||0===p.length)continue;for(let e of p){"string"==typeof e.finish_reason&&""!==e.finish_reason&&(n=!0,d=e.finish_reason);let r=e.delta;if(r){let e="string"==typeof r.content&&r.content.length>0,s="string"==typeof r.reasoning_content&&r.reasoning_content.length>0||"string"==typeof r.reasoning&&r.reasoning.length>0,o=Array.isArray(r.tool_calls)&&r.tool_calls.length>0,i="string"==typeof r.refusal&&r.refusal.length>0;s&&(a=!0),(e||s||o||i)&&(n=!0),(e||o||i)&&(l=!0),t&&e&&(u+=r.content),e&&(h+=r.content),s&&(m+=r.reasoning_content??r.reasoning??""),o&&(g=!0)}}if(n&&l&&d&&c)break}catch{}}}catch{}return{hasContent:n,hasReasoning:a,hasSubstantiveContent:l,finishReason:d,hasUsage:c,credit:r,chunkId:s,usage:o,deltaContent:u.length>0?u:void 0,monitorDelta:h.length>0?h:void 0,monitorReasoning:m.length>0?m:void 0,monitorUsage:i,monitorHasToolCall:g||void 0}}normalizeStreamingToolCallIds(e,t){if(!e.includes("tool_calls"))return e;let r=e.split("\n"),s=!1;for(let e=0;e<r.length;e++){let o=r[e].trim();if(!o.startsWith("data:"))continue;let i=o.slice(5).trimStart();if(i&&"[DONE]"!==i)try{let o=JSON.parse(i),n=o?.choices;if(!Array.isArray(n)||0===n.length)continue;let a=n[0]?.delta;if(!a?.tool_calls||!Array.isArray(a.tool_calls)||0===a.tool_calls.length)continue;let l=!1;for(let e of a.tool_calls)null!=e.id&&"string"==typeof e.id&&""!==e.id&&(t.has(e.id)?"number"==typeof e.index&&(delete e.id,l=!0):t.add(e.id));if(l){let t=r[e].startsWith("data: ")?"data: ":"data:";r[e]=`${t}${JSON.stringify(o)}`,s=!0}}catch{}}return s?r.join("\n"):e}createStreamingTextProcessor(){let e=new f.StringDecoder("utf-8"),t=new TextEncoder,r=new Set;return{process:s=>{let o=e.write(s);return 0===o.length?null:t.encode(this.normalizeStreamingToolCallIds(o,r))},flush:()=>{let r=e.end();return r.length>0?t.encode(r):null}}}parseCustomHeaders(e){if(!e)return{};let t={},r=[];for(let s of(e.includes("\\n")?r.push(...e.split("\\n")):e.includes("\n")?r.push(...e.split("\n")):r.push(e),r)){let e=s.trim();if(!e)continue;let r=e.indexOf(":");if(-1===r)continue;let o=e.substring(0,r).trim(),i=e.substring(r+1).trim();o&&i&&(t[o]=i)}return t}async getCustomHeaders(e){let t;this.logger.setContext("ModelProvider");let r=this.parseCustomHeaders(process.env[J.nW]),s=await this.settingsManager.get("env"),o=this.parseCustomHeaders(s?.[J.nW]),i=await this.settingsManager.get("enableModelOptimization"),n=i?.enabled!==!1;if(void 0===i)try{let e=await this.productManager.waitConfiguration();e.productFeatures?.[I.ProductFeature.DisableYuanbaoChannel]===!0&&(n=!1)}catch{}o[b.PRIVATE_DATA_HEADER]=n?"false":"true";let a={};try{let e=S.Context.getRequest()?.body;if(e?.header){let t=ee.HeaderUtils.convertHeaderArrayToObject(e.header);t&&(a=t)}}catch(e){}let l={};try{let e=this.sessionManager.getCurrent()||this.sessionManager.sessionSubject.getValue();e?.requestOptions?.headers?(l=e.requestOptions.headers,this.logger.debug(`[ModelProvider] session headers from session ${e.id}: keys=[${Object.keys(l).join(",")}]`)):this.logger.debug(`[ModelProvider] no session headers for session ${e?.id}`)}catch(e){this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] error reading session headers: ${e}`)}let d={...r,...o,...a,...l,...(0,N.Gp)()?.headers};this.logger.debug(`[ModelProvider] merged headers: keys=[${Object.keys(d).join(",")}]`);let c=this.authenticationManager.currentSessionSubject.getValue(),u=(0,N.Gp)()?.auth;process.env[J.QB]&&this.logger.debug("[ModelProvider] API key disabled via env"),u||process.env[J.QB]||(t=s?.[J.XO]||process.env[J.XO]),u?.method==="api_key"&&(t=u.accessToken);try{if(e.modelId){let r=await this.productManager.waitConfiguration(),s=r.models?.find(t=>t.id===e.modelId);s?.apiKey&&(t=s.apiKey,this.logger.debug(`Using custom API key in headers for model ${e.modelId}`))}}catch(e){}t&&(d[b.API_KEY_HEADER]=t,d[R.HttpHeaders.AUTHORIZATION]=`Bearer ${t}`);let h=c?.account,m=h?.enterpriseId?.trim(),g=(0,v.isPersonalAccount)(h)&&!m;return await ee.IOAUtils.applyIOADefaultHeaders(d,s,{enterpriseId:m,skipDefaultEnterpriseHeaders:g}),d}async enableThinking(e){let t=await this.settingsManager.get("alwaysThinkingEnabled");if(!t)return!1;let r=e??await this.agentManager.getModel((await this.agentManager.getDefault()).name);return!!(t&&r.supportsReasoning)}async injectReasoningSummaryIfNeeded(e,t){return!(!(await this.enableThinking(t)||"string"==typeof e?.reasoning_effort||"string"==typeof e?.reasoning?.effort)||e?.reasoning_summary)&&(e.reasoning_summary="auto",!0)}isConnectionLevelRetryableError(e){return!!e&&void 0===e.response&&(0,C.isOriginReplayRetryable)(e)}applyChatFailoverOrigin(e,t){let r=this.productManager?.configuration?.getValue()||{},s=ee.ProxyUtils.resolveRequestUrl(e.url,e.baseURL||r.endpoint||this.productManager?.getEndpoint()||void 0);if(s&&(0,C.isOriginReplayRetryable)(t)){let t=(0,B.XK)(s,r);if(t){(0,B.eP)(e,s,t),this.logger.info?.("[NetworkFailover] Chat origin switched to backup before retry");return}this.logger.info?.(`[NetworkFailover] Chat origin replay skipped: no backup for ${s}`)}let o=(0,G.pinFailoverChatOrigin)(e.url);o&&o!==e.url&&(e.url=o,this.logger.info?.("[NetworkFailover] Chat origin re-pinned before retry"))}shouldSkipRequestLevelRetryAfterChatOriginReplay(e,t){let r=t?.response?.status;return(408===r||502===r||503===r)&&(!!e?.[B.U$]||(0,B.DZ)((0,B.oh)(e)))}isRequestLevelRetryableError(e,t){if(!e)return!1;let r="number"==typeof e.response?.status?e.response.status:void 0,s=this.parseErrorResponseBody(e),matchesCode=t=>t(e)||!!s&&t(s);return!matchesCode(M.ErrorUtils.isQuotaExhaustedError)&&(429===r?t||matchesCode(M.ErrorUtils.isTransientRateLimitBusinessCode):(0,M.isRequestLevelRetryableStatus)(r))}parseErrorResponseBody(e){let t=e?.response?.data;if(t&&"object"==typeof t&&"function"!=typeof t.pipe)return t;if("string"==typeof t&&""!==t.trim())try{let e=JSON.parse(t);return e&&"object"==typeof e?e:void 0}catch{}}hasChatOriginReplayed(e,t){return!!(e?.[B.U$]||t?.config?.[B.U$])||(0,B.DZ)((0,B.oh)(e))}abortableSleep(e,t){return new Promise((r,s)=>{if(t?.aborted)return void s(Error("Request aborted."));let o=setTimeout(()=>{t?.removeEventListener("abort",onAbort),r()},e);"function"==typeof o.unref&&o.unref();let onAbort=()=>{clearTimeout(o),s(Error("Request aborted."))};t?.addEventListener("abort",onAbort,{once:!0})})}async requestWithConnectionRetry(e,t,r,s,o,i,n=!1,a){let l,d=this.sessionManager?.getCurrent()?.agentPurpose===M.AgentPurpose.ContentSecurityReviewer,c=d?0:A.Q9,u=d?0:resolveRequestMaxRetries(process.env.CODEBUDDY_MAX_RETRIES),h=!d&&isRetryWatchdogEnabled(process.env.CODEBUDDY_RETRY_WATCHDOG),m=d?0:resolveModel401MaxRetries(process.env.CODEBUDDY_MODEL_401_MAX_RETRIES),g=resolveModel401RetryDelayMs(process.env.CODEBUDDY_MODEL_401_RETRY_DELAY_MS),p=0,_=0,f=0,E=0,y=(0,N.Gp)(),T=y?.auth;if(!e?.[B.U$]&&(0,B.DZ)((0,B.oh)(e)))throw(0,B.aD)();for(;;)try{globalThis.__CODEBUDDY_STARTUP_PROFILER__?.markEvent("first-model-request");let t=await ei.observeAttempt(i,()=>this.restOperations.request(e));return(0,G.recordFailoverOutcome)(e.url),o?.setAttribute("retry_count",p+_+f+E),t}catch(S){(0,G.recordFailoverOutcome)(e.url,S),e?.[B.U$]||this.applyChatFailoverOrigin(e,S),l=S;let i=e?.signal;if(i?.aborted)break;if(this.isConnectionLevelRetryableError(S)){if(p>=c)break;p+=1;let e=(0,A.xX)(p);o?.addEvent("retry_attempt",{attempt:p,kind:"connection",error_code:String(S?.code??""),error_message:String(S?.message??""),delay_ms:Math.round(e)}),this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Connection-level failure before response headers, backing off and retrying: agent=${t}, requestId=${r}, code=${S?.code}, message=${S?.message}, attempt=${p}/${c}, delayMs=${Math.round(e)}`),await this.modelRequestRetryPhase.during(a,"network",()=>this.abortableSleep(e,i));continue}let d=await (0,Q.Af)(S,i);if("cancelled"===d.state||i?.aborted)break;let R=d.policy;if("forbid-retry"===R){let e=S.response?.status;o?.addEvent("retry_policy",{decision:"forbid",status:"number"==typeof e?e:-1}),this.logger.info?.(`[ModelProvider] Gateway retry_policy forbids retry: agent=${t}, requestId=${r}, status=${e}`);break}if(n&&!s&&0===f&&S.response?.status===401){let t=Object.keys(e.headers??{}).find(e=>"authorization"===e.toLowerCase());if((0,N.Gp)()===y&&T?.refresh&&t&&e.headers[t]===`Bearer ${T.accessToken}`)try{let r=await (0,N.tD)(T.accessToken,i??new AbortController().signal);if(r){e.headers[t]=`Bearer ${r.accessToken}`;let s=Object.keys(e.headers).find(e=>e.toLowerCase()===b.API_KEY_HEADER.toLowerCase());s&&e.headers[s]===T.accessToken&&(e.headers[s]=r.accessToken),f++,o?.addEvent("retry_attempt",{attempt:f,kind:"authentication",status:401});continue}}catch{}}if(E<m&&!s&&S.response?.status===401){E+=1,o?.addEvent("retry_attempt",{attempt:E,kind:"auth-401",status:401,delay_ms:g}),this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] HTTP 401 before generation, retrying blindly (auth proxy may be rotating its token): agent=${t}, requestId=${r}, attempt=${E}/${m}, delayMs=${g}`),await this.abortableSleep(g,i);continue}if(this.isRequestLevelRetryableError(S,s)){let s="force-retry"===R;if(s?this.hasChatOriginReplayed(e,S):this.shouldSkipRequestLevelRetryAfterChatOriginReplay(e,S)){this.logger.info?.(`[ModelProvider] Skip request-level retry after chat origin replay agent=${t}, requestId=${r}`);break}let n=h&&!s,a=s?A.Q9:u;if(!n&&_>=a)break;_+=1;let l=S?.response?.status,d=S?.response?.headers,c=(0,M.parseRetryAfterMs)(d),m=n?eE:ep,g=n?(0,M.parseRateLimitResetMs)(d):null,p=null!=g?Math.min(g,m):computeRequestRetryDelayMs(_,c,m,Math.random,s?A.Kf:eg);o?.addEvent("retry_attempt",{attempt:_,kind:"request",status:"number"==typeof l?l:-1,delay_ms:Math.round(p),...s?{retry_policy:"force"}:{}}),this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Request-level failure before generation, backing off and retrying: agent=${t}, requestId=${r}, status=${l}, attempt=${_}${n?"(watchdog)":`/${a}`}${s?"(retry_policy)":""}, delayMs=${Math.round(p)}${null!=c?`(retry-after=${c}ms)`:""}${null!=g?`(reset-in=${g}ms)`:""}`),await this.abortableSleep(p,i);continue}break}throw o?.setAttribute("retry_count",p+_+f+E),l}getModelTracer(){return this.traceService?.activeTracer??O.u.getTracer("workbuddy.agent.model")}async runWithGalileoModelRequestSpan(e,t){let{parentContext:r,parentSpanId:s}=this.resolveModelSpanParentContext(e.headers,e.parentContext),o={"span.type":"model_request","http.method":e.method.toUpperCase(),"http.url":this.sanitizeUrlForTrace(e.url),"model.id":e.model,"agent.name":e.agentName,"request.id":e.requestId,"model.stream":e.isStreamRequest,"conversation.request.id":e.headers[b.CONVERSATION_REQUEST_ID_HEADER]??e.requestId,"workbuddy.session_id":e.headers[b.CONVERSATION_ID_HEADER]??"","workbuddy.prompt_request_id":e.promptRequestId??e.headers[b.CONVERSATION_REQUEST_ID_HEADER]??"","workbuddy.message_id":e.headers[b.CONVERSATION_MESSAGE_ID_HEADER]??"","workbuddy.request_id":e.headers[b.REQUEST_ID_HEADER]??e.requestId};try{let t=new URL(e.url);o["http.target"]=`${t.pathname}${t.search}`,o["net.peer.name"]=t.hostname,t.port&&(o["net.peer.port"]=Number(t.port))}catch{}let i=this.getModelTracer().startSpan("codebuddy_code.model_request",{kind:D.v.CLIENT,attributes:o},r);this.injectOtelSpanHeaders(e.headers,i,s);let n=i.spanContext();return this.logger.info(`[GalileoMVP] model request span started: traceId=${n.traceId}, spanId=${n.spanId}, parentSpanId=${s||""}, requestId=${e.requestId}, url=${this.sanitizeUrlForTrace(e.url)}`),w._.with(O.u.setSpan(r,i),async()=>{try{let e=await t(i),r=e?.status;return"number"==typeof r?(i.setAttribute("http.status_code",r),i.setStatus({code:r>=400?$.s.ERROR:$.s.OK,...r>=400?{message:`HTTP ${r}`}:{}})):i.setStatus({code:$.s.OK}),e}catch(e){throw"number"==typeof e.response?.status&&i.setAttribute("http.status_code",e.response.status),e.code&&i.setAttribute("error.code",String(e.code)),i.recordException(e),i.setStatus({code:$.s.ERROR,message:e.message}),e}finally{i.end()}})}resolveModelSpanParentContext(e,t){let r=t?O.u.getSpanContext(t):void 0;if(t&&r&&(0,L.YA)(r))return{parentContext:t,parentSpanId:r.spanId};let s=this.getHeaderCaseInsensitive(e,"b3"),o=s?.split("-")??[],i=this.getHeaderCaseInsensitive(e,"x-b3-traceid")||this.getHeaderCaseInsensitive(e,"x-trace-id")||o[0],n=this.getHeaderCaseInsensitive(e,"x-b3-spanid")||o[1],a=this.getHeaderCaseInsensitive(e,"x-b3-sampled")||o[2];return i&&n&&/^[0-9a-f]{32}$/i.test(i)&&/^[0-9a-f]{16}$/i.test(n)&&"00000000000000000000000000000000"!==i?{parentContext:O.u.setSpanContext(t??U.l,{traceId:i.toLowerCase(),spanId:n.toLowerCase(),traceFlags:"0"===a||"false"===a?q.X.NONE:q.X.SAMPLED,isRemote:!0}),parentSpanId:n.toLowerCase()}:{parentContext:t??w._.active()}}createModelStreamSpan(e,t,r,s,o,i){let n,a=!1;try{let{parentContext:a}=this.resolveModelSpanParentContext(e,i);n=this.getModelTracer().startSpan(k.SPAN_NAME_MODEL_STREAM,{kind:D.v.CLIENT,attributes:{[k.MODEL_STREAM_ATTRS.SPAN_TYPE]:k.SPAN_TYPE_MODEL_STREAM,"model.id":t,"agent.name":r,"request.id":s,"conversation.request.id":e[b.CONVERSATION_REQUEST_ID_HEADER]??s,"workbuddy.session_id":e[b.CONVERSATION_ID_HEADER]??"","workbuddy.prompt_request_id":o??e[b.CONVERSATION_REQUEST_ID_HEADER]??"","workbuddy.message_id":e[b.CONVERSATION_MESSAGE_ID_HEADER]??"","workbuddy.request_id":e[b.REQUEST_ID_HEADER]??s}},a)}catch(e){this.logger.info(`[ModelProvider] model_stream span start failed: ${e}`)}return{span:n,endSpan:(e,t,r)=>{n&&!a&&(a=!0,n.setAttribute(k.MODEL_STREAM_ATTRS.CHUNK_COUNT,e.chunkCount),n.setAttribute(k.MODEL_STREAM_ATTRS.TOTAL_BYTES,e.totalBytes),n.setAttribute("stream.status",t),n.setAttribute("workbuddy.stop_reason",r?.message??t),"error"===t?(r&&n.recordException(r),n.setStatus({code:$.s.ERROR,message:r?.message})):"ok"===t?n.setStatus({code:$.s.OK}):n.addEvent("aborted"),n.end())}}}writeGenAiRequestAttrs(e,t){if(!t||"object"!=typeof t)return;let j=e=>{try{return"string"==typeof e?e:JSON.stringify(e)}catch{return""}},clip=(e,t)=>(0,M.truncateAndCopyString)(e,t),r=(0,k.readOtelLoggingFlags)().logUserPrompts,s={};if("number"==typeof t.temperature&&(s.temperature=t.temperature,e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_TEMPERATURE,t.temperature)),"number"==typeof t.top_p&&(s.top_p=t.top_p,e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_TOP_P,t.top_p)),"number"==typeof t.max_tokens&&(s.max_tokens=t.max_tokens,e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_MAX_TOKENS,t.max_tokens)),void 0!==t.max_completion_tokens&&(s.max_completion_tokens=t.max_completion_tokens),void 0!==t.frequency_penalty&&(s.frequency_penalty=t.frequency_penalty),void 0!==t.presence_penalty&&(s.presence_penalty=t.presence_penalty),void 0!==t.stream&&(s.stream=t.stream),Object.keys(s).length>0&&e.setAttribute(k.LLM_SOURCE_ATTRS.REQUEST_PARAMETERS,j(s)),Array.isArray(t.messages)&&t.messages.length>0){let s=t.messages,o=j(s);o&&(e.setAttribute(k.LLM_SOURCE_ATTRS.INPUT_MESSAGES,clip(o,k.LLM_SOURCE_VALUE_MAX_SIZE)),o.length>k.LLM_SOURCE_VALUE_MAX_SIZE&&e.setAttribute(k.LLM_SOURCE_ATTRS.INPUT_TRUNCATED,!0)),e.setAttribute(k.LLM_SOURCE_ATTRS.PROMPT_COUNT,s.length);let i=Math.min(s.length,k.MAX_PROMPT_MESSAGES);for(let t=0;t<i;t++){let o=s[t];if(o&&"object"==typeof o){if(o.role&&e.setAttribute(k.LLM_PROMPT_KEYS.role(t),String(o.role)),o.tool_call_id&&e.setAttribute(k.LLM_PROMPT_KEYS.toolCallId(t),String(o.tool_call_id)),Array.isArray(o.tool_calls)&&o.tool_calls.length>0){e.setAttribute(k.LLM_PROMPT_KEYS.toolCallCount(t),o.tool_calls.length);for(let s=0;s<o.tool_calls.length;s++){let i=o.tool_calls[s];if(!i||"object"!=typeof i)continue;let n=k.LLM_PROMPT_KEYS.toolCall(t,s),a=i.function??{};i.id&&e.setAttribute(n.id,String(i.id)),a.name&&e.setAttribute(n.name,String(a.name)),r&&void 0!==a.arguments&&e.setAttribute(n.arguments,clip(j(a.arguments),k.LLM_SOURCE_PROMPT_VALUE_MAX_SIZE))}}if(r&&void 0!==o.content){let r=j(o.content);r&&e.setAttribute(k.LLM_PROMPT_KEYS.content(t),clip(r,k.LLM_SOURCE_PROMPT_VALUE_MAX_SIZE))}}}}}injectOtelSpanHeaders(e,t,r){let s=t.spanContext(),o=(s.traceFlags&q.X.SAMPLED)===q.X.SAMPLED;this.setHeaderCaseInsensitive(e,"traceparent",`00-${s.traceId}-${s.spanId}-${o?"01":"00"}`),this.setHeaderCaseInsensitive(e,"b3",`${s.traceId}-${s.spanId}-${o?"1":"0"}${r?`-${r}`:""}`),this.setHeaderCaseInsensitive(e,"X-B3-TraceId",s.traceId),r&&this.setHeaderCaseInsensitive(e,"X-B3-ParentSpanId",r),this.setHeaderCaseInsensitive(e,"X-B3-SpanId",s.spanId),this.setHeaderCaseInsensitive(e,"X-B3-Sampled",o?"1":"0"),this.setHeaderCaseInsensitive(e,"X-Trace-ID",s.traceId)}sanitizeUrlForTrace(e){return e.replace(/([?&])(key|token|api_key|apikey|secret|password)=[^&]*/gi,"$1$2=***")}axiosToFetchAdapter(){return async(e,t)=>{let r,s,o,i,n,a,l,d="string"==typeof e?e:e.url,c=t?.method||"GET",u=t?.headers,h=t?.body,m=Date.now(),g={};if(u)if(u instanceof Headers)g={},u.forEach((e,t)=>{g[t]=e});else if(Array.isArray(u))for(let[e,t]of(g={},u))g[e]=t;else g={...u};let p=(0,M.currentTurnCarrier)(),_=this.sessionManager.getCurrent()||this.sessionManager.sessionSubject.getValue(),f=(0,M.getRequestOwner)(_)?.turn.otelContext??(0,M.currentTurnContext)()?.otelContext,E=_.abortSignal,y=!!E?.aborted,T=er.h.getStore(),S=T?.messageId??(0,P.nH)().replace(/-/g,""),C=T?T.conversationRequestId:(0,M.getEffectiveConversationRequestId)(_),O=T?T.purpose:(0,M.getEffectiveAgentPurpose)(_);_.messageId=S,g[b.CONVERSATION_ID_HEADER]=_.id,g[b.CONVERSATION_REQUEST_ID_HEADER]=C||"",g[b.CONVERSATION_MESSAGE_ID_HEADER]=_.messageId,g[b.REQUEST_ID_HEADER]=_.messageId;let D=(0,et.i)(_);g[b.AGENT_INTENT]=_.meta?.["codebuddy.ai/mode"]??"craft",process.env.PERSONAL_AGENT_ROLE?g[b.AGENT_PURPOSE]="person_agent":O&&(g[b.AGENT_PURPOSE]=O);let w=_.telemetryClientInfo;if(!w?.ideType||!w.ideName||!w.ideVersion){let e=await this.clientInfoProvider.get();s=e.ideType,o=e.platform,i=e.platformVersion}g[b.IDE_TYPE_HEADER]=w?.ideType||s||H.Vo,g[b.IDE_NAME_HEADER]=w?.ideName||o||"",g[b.IDE_VERSION_HEADER]=w?.ideVersion||i||"0.0.0";let $=null,L=!1;if(h&&"string"==typeof h)try{$=JSON.parse(h)}catch{}else h&&"object"==typeof h&&($=h);if($?.model&&(n=$.model),n)try{let e=await this.productManager.waitConfiguration();if(a=e.models?.find(e=>e.id===n),a?.url)if(a.useCustomProtocol)d=a.url,this.logger.info(`Using custom URL for model ${n}: ${d} (useCustomProtocol=true, URL passthrough)`);else{let e=this.isCustomModelRequest(n,a);d=e?this.normalizeChatCompletionsUrl(a.url):a.url,this.logger.info(`Using custom URL for model ${n}: ${d}(raw:${a?.url})${e?" (custom model, ensured /chat/completions)":""}`)}}catch(e){}let U=!this.isCustomModelRequest(n,a)||process.env[J.qL]===Y.pg.Selfhosted,q=_.requestOptions?.providerData;if(q&&U){let e=this.mergeRequestProviderData($,q);e!==$&&($=e,L=!0)}let x=_.requestOptions?.requestExtraFieldsMeta;if(x&&U&&this.injectRequestExtraFieldsMeta($,x)&&(L=!0),!a?.useCustomProtocol&&/\/chat\/completions(?:[/?#]|$)/.test(d)){let e=this.normalizeChatCompletionsUrl(d);e!==d&&(this.logger.info(`Normalized duplicated /chat/completions in URL: ${d} -> ${e}`),d=e)}let F=this.shouldApplyInternalModelRequestHeaders(n,a);for(let[e,t]of(F&&this.setHeaderCaseInsensitive(g,b.AGENT_INTENT,D??"craft"),Object.entries(await this.getCustomHeaders({modelId:n||""}))))this.setHeaderCaseInsensitive(g,e,t);delete g.authorization,delete g["user-agent"];let B=(0,N.Gp)();for(let[e,t]of(B?.auth?.accessToken&&!Object.keys(g).some(e=>"authorization"===e.toLowerCase())&&(g[R.HttpHeaders.AUTHORIZATION]=`Bearer ${B.auth.accessToken}`),Object.entries((0,N.I2)())))Object.keys(g).some(t=>t.toLowerCase()===e.toLowerCase())||(g[e]=t);if(this.isCustomModelRequest(n,a)){let e=Object.keys(g).find(e=>e.toLowerCase()===b.PRIVATE_DATA_HEADER.toLowerCase());e&&delete g[e]}let Q=this.agentManager.getVolatilePluginAgentState().internalModelRequestHeaders;if(Q&&this.shouldApplyInternalModelRequestHeaders(n,a))for(let[e,t]of Object.entries(Q))this.setHeaderCaseInsensitive(g,e,t);this.applyCustomPassthroughHeaders(g,_,n,a),this.setHeaderCaseInsensitive(g,b.REQUEST_ID_HEADER,S),this.setHeaderCaseInsensitive(g,b.CONVERSATION_MESSAGE_ID_HEADER,S),this.setHeaderCaseInsensitive(g,b.CONVERSATION_REQUEST_ID_HEADER,C||"");let V=this.resolveRootRequestId(_);V&&this.setHeaderCaseInsensitive(g,b.ROOT_REQUEST_ID_HEADER,V);let K=this.resolveParentConversationId(_);K&&this.setHeaderCaseInsensitive(g,b.PARENT_CONVERSATION_ID_HEADER,K),this.setHeaderCaseInsensitive(g,b.AGENT_TYPE_HEADER,T?.agentType??(0,M.resolveModelCallAgentType)(_)),this.applyCompactionHeaders(g,T?.compaction);let X=await this.settingsManager.get("env"),W=!!(X?.[J.hv]||process.env[J.hv]);if(F&&!W)for(let[e,t]of Object.entries(p))this.setHeaderCaseInsensitive(g,e,t);if(W)for(let e of(g[v.HTTP_HEADER_SKIP_AUTH_INTERCEPTOR]="1",[...eT,...Object.keys(Q??{})]))delete g[e];if($&&await this.injectReasoningSummaryIfNeeded($,a)&&(L=!0),$&&n){let e=(0,I.stripCustomLocalModelPrefix)(n);e!==n&&$.model===n&&($.model=e,L=!0)}if($&&a?.tags?.includes("custom")&&!1===a.supportsImages&&Array.isArray($.messages)){let e=!1;for(let t of $.messages)if(Array.isArray(t.content)){let r=t.content.filter(e=>"text"===e.type).map(e=>e.text);t.content=r.join("\n"),e=!0}e&&(L=!0,this.logger.debug(`Flattened array content to string for custom model ${n}`))}if($&&this.isCustomModelRequest(n,a)&&a?.supportsToolCall===!1){let e=await this.productManager.waitConfiguration();e.productFeatures?.[I.ProductFeature.SkipToolCallSupportCheck]!==!0&&(void 0!==$.tools||void 0!==$.tool_choice)&&(delete $.tools,delete $.tool_choice,L=!0,this.logger.info(`Stripped tools/tool_choice from request body (model ${n} does not support tool calls)`))}L&&$&&"string"==typeof h&&(h=JSON.stringify($));let z={url:d,method:c,headers:g,data:h,signal:t?.signal||void 0,modelId:n,maxBodyLength:1/0,maxContentLength:1/0};for(let e of[...this.modelRequestProcessors].sort((e,t)=>(e.priority??1e3)-(t.priority??1e3)))await e.process(z);if(W){let e=new Set([...eT,...Object.keys(Q??{}),v.HTTP_HEADER_SKIP_AUTH_INTERCEPTOR,"X-User-Id","X-Enterprise-Id","X-Department-Info","X-Tenant-Id","X-Domain","User-Agent","X-Requested-With"].map(e=>e.toLowerCase())),t=["x-stainless-"],r=z.transformRequest;z.transformRequest=[...Array.isArray(r)?r:r?[r]:[],(r,s)=>{if(!s)return r;let o=new Set(["common","delete","get","head","post","put","patch"]);for(let r of Object.keys(s)){if(o.has(r))continue;let i=r.toLowerCase();if(e.has(i)){delete s[r];continue}t.some(e=>i.startsWith(e))&&delete s[r]}return r}]}let Z="text/event-stream"===g.Accept||"text/event-stream"===g.accept||d.includes("stream=true")||"string"==typeof h&&h.includes('"stream":true');Z&&(z.responseType="stream");let ee=this.getHeaderCaseInsensitive(g,b.REQUEST_ID_HEADER)||"unknown",es=this.telemetryService.reportMessageSendTelemetry(g,$??h,Z,_),eo=_.agentName||"unknown",en=n||$?.model||"unknown",ea=Date.now(),el=Z&&(0,M.consumeRecoveryRequestPending)(_),ed=resolveTimeoutMs(process.env.CODEBUDDY_FIRST_TOKEN_TIMEOUT_MS,eh),ec=el?resolveRecoveryFirstTokenTimeoutMs(process.env.CODEBUDDY_RECOVERY_FIRST_TOKEN_TIMEOUT_MS,ed):ed,eu=!1;if(el){let e=new AbortController;t?.signal&&(0,A.wp)(t.signal,e),"function"==typeof(l=setTimeout(()=>{eu=!0,e.abort()},Math.max(0,ec-(Date.now()-ea)))).unref&&l.unref(),z.signal=e.signal,this.logger.info(`[ModelProvider] Recovery request: first-token deadline=${ec}ms covers response headers and first token, agent=${eo}, requestId=${ee}`)}let clearRecoveryDeadline=()=>{l&&(clearTimeout(l),l=void 0)};y=y||!!E?.aborted,Z&&(r=new SseStreamMonitorImpl({sessionData:SseMonitorSessionData(_,{agentPurpose:O,conversationRequestId:C,messageId:S}),model:en,abortSignal:E},this.galileoService,this.logger)),this.galileoTimingHook?.reportPromptBuild(ea-m,{model:en,agentName:eo});let eg=z.url?.replace(/([?&])(key|token|api_key|apikey|secret|password)=[^&]*/gi,"$1$2=***");if(this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Sending request: agent=${eo}, model=${en}, requestId=${ee}, stream=${Z}, url=${eg}`),_.promptReceivedAt&&!_.firstModelRequestTimingReported){_.firstModelRequestTimingReported=!0;let e=_.promptSeq??0,t=Date.now(),r=t-_.promptReceivedAt,s=_.runnerStartedAt?t-_.runnerStartedAt:-1,o=1===e?"first":`n=${e}`;this.logger.info(`[ModelProvider] message-to-model-request latency: ${r}ms (sinceRunnerStart=${s}ms, promptSeq=${e}, kind=${o}, agent=${eo}, model=${en}, sessionId=${_.id})`)}if("function"==typeof this.logger.debug)try{let e=Array.isArray($?.tools)?$.tools:void 0,t=e?e.map(e=>e?.function?.name??e?.name).filter(Boolean):void 0;this.logger.debug(`[ModelProvider][toolsInBody] requestId=${ee} model=${en} `+(t?`toolCount=${t.length} tools=[${t.join(",")}]`:"tools=<none in body>"))}catch{}process.env.CODEBUDDY_DEBUG_REQUEST&&(async()=>{try{let{messages:e,...t}=await this.decodeDebugRequestBody(z.data)||{};if(this.logger.info(`[ModelProvider] Request body (no messages): ${JSON.stringify(t)}`),e)for(let t=0;t<e.length;t++){let r=e[t],s=JSON.stringify(r).slice(0,500);this.logger.info(`[ModelProvider] messages[${t}]: ${s}`)}}catch{}})().catch(()=>{});let ep=this.isCustomModelRequest(n,a),e_=!!(X?.[J.a1]||process.env[J.a1]),ef=!ep&&!a?.useCustomProtocol&&!e_&&/\/v2\/chat\/completions(?:[/?#]|$)/.test(String(z.url??"")),eE=ei.begin(Z&&ef);if(ef){let e=(0,G.pinFailoverChatOrigin)(z.url);e!==z.url&&(z.url=e,this.logger.info("[NetworkFailover] Chat origin pinned before send"))}try{let e={...g},s=await this.runWithGalileoModelRequestSpan({url:z.url,method:c,headers:z.headers,model:en,agentName:eo,requestId:ee,isStreamRequest:Z,promptRequestId:_.promptRequestId,parentContext:f},e=>this.requestWithConnectionRetry(z,eo,ee,ep,e,eE,ef&&!a?.apiKey,_));clearRecoveryDeadline();let o=extractMockE2EResponseDiagnostics(s.headers);if(o&&this.logger.info(`[MockE2E][response] ${JSON.stringify({sessionId:_.id,promptRequestId:_.promptRequestId,conversationRequestId:_.conversationRequestId,modelRequestId:ee,model:en,httpStatus:s.status,...o})}`),_.conversationRequestId&&await this.telemetryService.flushPendingGrowthTelemetry(_,_.conversationRequestId),Z||await this.telemetryService.reportMessageResponseTelemetryNonStream(_,es,s,!0),r?.onStreamOpen(_.traceId??"",s.status),!Z||!s.data||"function"!=typeof s.data.pipe)return r?.onStreamEnd("error",{aborted:y}),new Response("string"==typeof s.data?s.data:JSON.stringify(s.data),{status:s.status,statusText:s.statusText,headers:s.headers});{let o,i,a,l=t?.signal,isUserAbort=()=>!!E?.aborted,c=s.data,u=!1,h=0,m=0,g=Date.now(),p=!1,{span:y,endSpan:T}=this.createModelStreamSpan(e,en,eo,ee,_.promptRequestId,f),R=(0,k.shouldEmitGenAiSourceAttrs)(),v=[],b=0,O=!1,w=!1;if(R&&y)try{this.writeGenAiRequestAttrs(y,$)}catch(e){this.logger.info(`[ModelProvider] gen_ai request attrs write failed: ${e}`)}let L=resolveTimeoutMs(process.env.CODEBUDDY_STREAM_TIMEOUT_MS,em),U=(a=parseInt(process.env.CODEBUDDY_REASONING_KEEPALIVE_INTERVAL_MS??"",10),Number.isFinite(a)&&a>0?a:0),q=null,P=null,N=null,H=null,x=null,F=this.createStreamingTextProcessor(),B=0,G=0,Q=0,V=0,Y=0,K=!1,X=!1,W=null,z=!1,J=$?.stream_options?.include_usage===!0,Z=!1,startStreamMonitor=()=>{!P&&(this.logger.info(`[ModelProvider] Stream idle monitor armed: agent=${eo}, requestId=${ee}, streamIdleTimeoutMs=${L}`),(P=setInterval(()=>{if(p||u){P&&(clearInterval(P),P=null);return}Q++;let e=Date.now(),t=e-g;if(c.isPaused?.()&&c.resume(),Q%10==0){let r=h-B,s=m-G;if(r>0){let o=e-ea;this.logger.info(`[ModelProvider] Stream progress: agent=${eo}, requestId=${ee}, chunks=${h}(+${r}), bytes=${m}(+${s}), elapsed=${o}ms, idle=${t}ms`),y?.addEvent(k.MODEL_STREAM_EVENT_CHUNK_PROGRESS,{chunks:r,bytes:s,elapsed_ms:o}),B=h,G=m}}if(U>0&&K&&!Z&&!X&&!p&&!u&&h>Y&&e-(V||ea)>=U){V=e,Y=h;try{_.combineSubject.next({type:"notice",notice:{kind:"reasoning_in_progress",elapsedMs:e-ea,chunkCount:h,bytes:m}})}catch{}}if(t>=L){if(X)this.logger.info(`[ModelProvider] Graceful close: finish_reason already received, stream idle for ${L}ms, agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),gracefulCloseStream();else if(this.logger.error(`[cbc-kw=MODEL_REQUEST] Stream timeout: no data received for ${L}ms, agent=${eo}, requestId=${ee}, chunkCount=${h}, totalBytes=${m}`),clearAllTimers(),p=!0,u=!0,T({chunkCount:h,totalBytes:m},"error",Error(`Stream timeout after ${L}ms idle`)),r?.onStreamEnd("error",{errorReason:"timeout",aborted:isUserAbort()}),c.destroy(),q)try{q.error(new A.wM(L,h,m))}catch{}}},1e3))&&"function"==typeof P.unref&&P.unref())},clearFirstTokenTimer=()=>{N&&(clearTimeout(N),N=null)},clearAllTimers=()=>{clearFirstTokenTimer(),P&&(clearInterval(P),P=null),H&&(clearTimeout(H),H=null),x&&l&&(l.removeEventListener("abort",x),x=null)},cancelLocalModelGeneration=()=>{if(n?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX))try{let e=new URL(d).origin,t=`${e}/v1/chat/completions/control`;this.logger.info(`[LocalModel] cancel: POST ${t} model=${n} chunks=${h}`),fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"stop"}),signal:AbortSignal.timeout(2e3)}).then(e=>this.logger.info(`[LocalModel] cancel response status=${e.status}`),e=>this.logger.warn(`[cbc-kw=MODEL_REQUEST] [LocalModel] cancel failed: ${e?.message}`))}catch(e){this.logger.warn(`[cbc-kw=MODEL_REQUEST] [LocalModel] cancel setup error: ${e?.message}`)}},destroyLocalModelSocket=()=>{if(n?.startsWith(I.CUSTOM_LOCAL_MODEL_PREFIX))try{let e=c.socket;e?e.destroyed?this.logger.info("[LocalModel] cancel: socket already destroyed"):(e.destroy(),this.logger.info("[LocalModel] cancel: TCP socket destroyed")):this.logger.info("[LocalModel] cancel: socket unavailable")}catch(e){this.logger.warn(`[cbc-kw=MODEL_REQUEST] [LocalModel] cancel: socket destroy failed: ${e?.message}`)}},gracefulCloseStream=()=>{if(!p&&(p=!0,clearAllTimers(),r?.onStreamEnd("closed",{recvLength:m,originLength:m,aborted:isUserAbort()}),T({chunkCount:h,totalBytes:m},"ok"),c.destroy(),q))try{let e=F.flush();e&&q.enqueue(e),q.close()}catch{}},startFinishReasonGraceTimer=e=>{!H&&!p&&!u&&(this.logger.info(`[ModelProvider] finish_reason="${e}" received, starting grace period: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${Date.now()-ea}ms`),(H=setTimeout(()=>{p||u||(this.logger.info(`[ModelProvider] Graceful close after finish_reason: stream idle for 5000ms after finish_reason, agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),gracefulCloseStream())},5e3))&&"function"==typeof H.unref&&H.unref())},et=new ReadableStream({start:e=>{q=e;let publishDiscardedStreamCredit=e=>{let t=_.combineSubject;!t||e<=0||(t.next({type:"model",data:{type:"model",event:{usage:{credit:e}},...S?{providerData:{messageId:S}}:{}}}),this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Forwarded discarded empty-stream credit: agent=${eo}, requestId=${ee}, messageId=${S??"unknown"}, credit=${e}`))},failEmptyStream=(e,t)=>{if(p)return;p=!0,u=!0,o=void 0,clearAllTimers(),"number"==typeof t&&t>0&&publishDiscardedStreamCredit(t);let s="length"===W?"length":"error",i=`finish_reason=${s} with no model output`;if(T({chunkCount:h,totalBytes:m},"error",Error(i)),r?.onModelError(i,"error"),c.destroy(),q)try{q.error(new A.mY(h,m,e,Date.now()-ea,s))}catch{}};{let e=Date.now()-ea,t=Math.max(ec-e,0);if(0===t){if(this.logger.error(`[cbc-kw=MODEL_REQUEST] First token timeout: HTTP response headers took ${e}ms (exceeds ${ec}ms threshold)`),p=!0,u=!0,T({chunkCount:h,totalBytes:m},"error",Error(`First token timeout after ${ec}ms`)),r?.onStreamEnd("error",{errorReason:"timeout",aborted:isUserAbort()}),c.destroy(),q)try{q.error(new A.wM(ec,h,m,!0))}catch{}}else(N=setTimeout(()=>{if(!K&&!p&&!u){let e=Date.now()-ea;if(this.logger.error(`[cbc-kw=MODEL_REQUEST] First token timeout: no meaningful model output received for ${e}ms (threshold=${ec}ms, received ${h} raw chunks, ${m} bytes)`),p=!0,u=!0,T({chunkCount:h,totalBytes:m},"error",Error(`First token timeout after ${ec}ms`)),r?.onStreamEnd("error",{errorReason:"timeout",aborted:isUserAbort()}),c.destroy(),q)try{q.error(new A.wM(ec,h,m,!0))}catch{}}},t))&&"function"==typeof N.unref&&N.unref()}c.on("data",t=>{if(h++,m+=t.length,g=Date.now(),r?.onChunk(t),1===h&&this.logger.info(`[ModelProvider] First raw chunk received: agent=${eo}, requestId=${ee}, elapsed=${Date.now()-ea}ms, bytes=${t.length}`),R&&!w&&t.includes('"usage"'))try{let e=this.parseSSEChunk(t,!0).usage;e&&(w=!0,"number"==typeof e.prompt_tokens&&y?.setAttribute(k.LLM_SOURCE_ATTRS.USAGE_PROMPT_TOKENS,e.prompt_tokens),"number"==typeof e.completion_tokens&&y?.setAttribute(k.LLM_SOURCE_ATTRS.USAGE_COMPLETION_TOKENS,e.completion_tokens),"number"==typeof e.total_tokens&&y?.setAttribute(k.LLM_SOURCE_ATTRS.USAGE_TOTAL_TOKENS,e.total_tokens))}catch(e){this.logger.info(`[ModelProvider] gen_ai usage capture failed: ${e}`)}if(!K||!X||!Z||X&&J&&!z){let e=this.parseSSEChunk(t,R);if(o){e.credit&&(i=e.credit),(e.hasUsage||e.credit)&&(z=!0,failEmptyStream(o,i));return}r?.onParsedChunk({deltaContent:e.monitorDelta,deltaReasoning:e.monitorReasoning,usage:e.monitorUsage,finishReason:e.finishReason,hasToolCall:e.monitorHasToolCall}),R&&e.deltaContent&&!O&&(v.push(e.deltaContent),(b+=e.deltaContent.length)>=k.LLM_SOURCE_VALUE_MAX_SIZE&&(O=!0)),_.telemetry&&!_.telemetry.chunkId&&e.chunkId&&(_.telemetry.chunkId=e.chunkId),!z&&e.hasUsage&&(z=!0,X&&W&&startFinishReasonGraceTimer(W));let s=K||e.hasReasoning;if(!X&&("error"===e.finishReason||"length"===e.finishReason&&!s)&&!Z&&!e.hasSubstantiveContent){X=!0,W=e.finishReason;let t=s?"reasoning-only":"no-token";if(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] finish_reason="${e.finishReason}" with no substantive model output (${t}), treating as retryable empty stream: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${Date.now()-ea}ms`),e.credit&&(i=e.credit),!e.hasUsage){o=t,H||(H=setTimeout(()=>{failEmptyStream(t,i)},5e3),"function"==typeof H.unref&&H.unref()),this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Waiting for usage tail before empty-stream abort: agent=${eo}, requestId=${ee}`);return}failEmptyStream(t,i);return}if(!Z&&e.hasSubstantiveContent&&(Z=!0),!K&&e.hasContent){K=!0,ei.markCommitReached(eE);let e=Date.now()-ea;if(_.telemetry&&(_.telemetry.firstTokenAt=ea+e),this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] First meaningful token received: agent=${eo}, requestId=${ee}, ttft=${e}ms, rawChunks=${h}, bytes=${m}`),this.galileoTimingHook?.reportTTFB(e,{model:en,requestId:ee,agentName:eo,conversationRequestId:C,messageId:S,promptRequestId:_.promptRequestId}),y?.setAttribute(k.MODEL_STREAM_ATTRS.FIRST_TOKEN_MS,e),y?.addEvent(k.MODEL_STREAM_EVENT_FIRST_TOKEN,{ttft_ms:e,chunk_count:h,bytes:m}),_.telemetry&&!_.telemetry.messageTtfbReported){let e=_.telemetry.firstTokenAt,t=D??"",r={messageId:S,promptRequestId:_.promptRequestId,conversationRequestId:C,model:en,agentName:eo,scene:t};if(_.telemetry.clientSendTime){let t=e-_.telemetry.clientSendTime;if(t>0&&t<=6e5&&(this.galileoTimingHook?.reportMessageTTFBUser(t,r),R))try{_.conversationRequestRootSpan?.setAttributes({[k.LLM_SOURCE_ATTRS.USER_FIRST_TOKEN_MS]:t})}catch{}}if(_.telemetry.promptStartTime){let t=e-_.telemetry.promptStartTime;t>0&&t<=6e5&&this.galileoTimingHook?.reportMessageTTFBModel(t,r)}_.telemetry.messageTtfbReported=!0}clearFirstTokenTimer(),startStreamMonitor()}if(!X&&e.finishReason){if(X=!0,W=e.finishReason,R&&v.length>0){let e=v.join("");if(e){let t=O||e.length>k.LLM_SOURCE_VALUE_MAX_SIZE,r=(0,M.truncateAndCopyString)(e,k.LLM_SOURCE_VALUE_MAX_SIZE);y?.setAttribute(k.LLM_SOURCE_ATTRS.OUTPUT_CONTENT,r),y?.setAttribute(k.LLM_SOURCE_ATTRS.COMPLETION_0_ROLE,"assistant"),y?.setAttribute(k.LLM_SOURCE_ATTRS.COMPLETION_0_CONTENT,r),t&&y?.setAttribute(k.LLM_SOURCE_ATTRS.OUTPUT_TRUNCATED,!0)}}!J||z?startFinishReasonGraceTimer(e.finishReason):this.logger.info(`[ModelProvider] finish_reason="${e.finishReason}" received, waiting for usage tail: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${Date.now()-ea}ms`)}}if(!u&&!o){let r=F.process(t);r&&e.enqueue(r)}}),c.on("end",()=>{if(o)return void failEmptyStream(o,i);if(p||u)return;p=!0,clearAllTimers();let t=Date.now()-ea;if(this.logger.info(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream completed: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${t}ms`),T({chunkCount:h,totalBytes:m},"ok"),r?.onStreamEnd("closed",{recvLength:m,originLength:m,aborted:isUserAbort()}),K&&this.galileoTimingHook?.reportModelStreaming(t,{model:en,agentName:eo,conversationRequestId:C}),this.galileoTimingHook?.reportRequestResult(0,void 0,en,void 0,C,void 0,_.id),!u){let t=F.flush();if(t)try{e.enqueue(t)}catch{}e.close()}}),c.on("error",t=>{if(o&&!isUserAbort())return void failEmptyStream(o,i);if(p||u)return;p=!0,clearAllTimers();let s=Date.now()-ea;this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream error: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}, elapsed=${s}ms, error=${t.message}`),T({chunkCount:h,totalBytes:m},"error",t),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort()}),this.galileoTimingHook?.reportRequestResult(-1,"STREAM_ERROR",en,t.message,C,void 0,_.id),u||e.error(t)}),c.on("close",()=>{if(o&&!isUserAbort())return void failEmptyStream(o,i);if(!p){if(X)this.logger.info(`[ModelProvider] Stream closed after finish_reason received, treating as completed: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),gracefulCloseStream();else if(p=!0,clearAllTimers(),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort()}),T({chunkCount:h,totalBytes:m},"error",Error("Stream closed unexpectedly")),!u&&q)try{0===h?(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream closed before first chunk: agent=${eo}, requestId=${ee}`),e.error(Error("Stream closed before receiving any data"))):K?(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Stream closed unexpectedly: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),e.error(Error(`Stream closed unexpectedly after receiving ${h} chunks (${m} bytes)`))):(this.logger.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Empty stream: only placeholder chunks received before close: agent=${eo}, requestId=${ee}, chunks=${h}, bytes=${m}`),e.error(new A.mY(h,m,"placeholder",Date.now()-ea)))}catch{}}}),l&&(x=()=>{p=!0,clearAllTimers(),u=!0,T({chunkCount:h,totalBytes:m},"aborted"),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort(),errorReason:"timeout"}),cancelLocalModelGeneration(),c.destroy(),destroyLocalModelSocket();try{e.close()}catch{}},l.aborted?x():l.addEventListener("abort",x,{once:!0}))},cancel:()=>{p=!0,clearAllTimers(),u=!0,T({chunkCount:h,totalBytes:m},"aborted"),r?.onStreamEnd("error",{recvLength:m,originLength:m,aborted:isUserAbort(),errorReason:l?.aborted?"timeout":void 0}),cancelLocalModelGeneration(),c.destroy(),destroyLocalModelSocket()}});return new Response(et,{status:s.status,statusText:s.statusText,headers:s.headers})}}catch(s){let e;clearRecoveryDeadline();try{this.logger.error(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Request failed: agent=${eo}, requestId=${ee}, error=${s?.message}`),this.logger.error(`[cbc-kw=MODEL_REQUEST] [ModelProvider] Error response: status=${s.response?.status}, code=${s?.code}, message=${s?.message}`),this.telemetryService.reportMessageResponseTelemetryStream(_,void 0,void 0,s);let o=s.response?.status??s.status??-2,i=s?.code??`HTTP_${o}`;if(this.galileoTimingHook?.reportRequestResult(o,i,en,s?.message?(0,M.truncateAndCopyString)(s.message,500):void 0,C,void 0,_.id),r?.setHttpEndStatus(o),y=y||!!E?.aborted,eu&&!y)return this.logger.error(`[cbc-kw=MODEL_REQUEST] First token timeout (recovery request): no response headers within ${ec}ms, agent=${eo}, requestId=${ee}`),r?.onStreamEnd("error",{aborted:!1,errorReason:"timeout"}),createFirstTokenTimeoutResponse(ec);return r?.onStreamEnd("error",{aborted:y,errorReason:t?.signal?.aborted?"timeout":void 0}),await Promise.race([this.modelErrorAnalyzer.analyze(s,z),new Promise((t,r)=>{e=setTimeout(()=>r(),5e3)})])}catch{return y=y||!!E?.aborted,r?.onStreamEnd("error",{aborted:y,errorReason:t?.signal?.aborted?"timeout":void 0}),this.modelErrorAnalyzer.createErrorResponse(s?.message||"Unknown error",400,"Client Error")}finally{clearTimeout(e)}}}}async createClient(e,t){if(!t)throw this.authenticationManager.currentSessionSubject.next(void 0),new A.WT;try{let{OpenAI:s}=await r.e("3043").then(r.bind(r,73502));return new s(this.buildOpenAIClientOptions(e,t))}catch(e){if(e.message&&e.message.includes("OPENAI_API_KEY"))throw new A.iN;throw e}}buildOpenAIClientOptions(e,t){return{baseURL:e,apiKey:t,fetch:this.axiosToFetchAdapter(),maxRetries:0,timeout:this.resolveRequestTimeoutMs()}}resolveRequestTimeoutMs(){let e=process.env.CODEBUDDY_FIRST_TOKEN_TIMEOUT_MS;if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>0)return t}return 12e5}getCacheKey(e,t,r){return`${e}@${t}@${r?`:${r}`:""}`}resolveModelBaseURL(e){let{envBaseURL:t,modelConfigUrl:r,productEndpoint:s,modelId:o,modelConfig:i,customEndpoint:n}=e;if(r?.trim())return r;let a=this.productManager.getEndpoint()||s;if(n&&(!a||a===n))return`${n}/v2`;if(t&&!(0,K.GO)()?.overridesEndpoint)return t;if(this.isLocalCustomModelRequest(o,i)){let e=o||i?.id||"unknown",t=i?.local===!0;throw new A.hG(t?(0,A.zQ)(e):(0,A.JG)(e),e)}if(!a)throw new A.uJ("Cannot resolve model request endpoint: neither getEndpoint() nor product.endpoint is available yet. Set CODEBUDDY_BASE_URL, or ensure the product configuration has finished loading.");return this.warnIfEnvEndpointMismatch(a),`${a}/v2`}warnIfEnvEndpointMismatch(e){let t,r=process.env[J.qL];if(r&&"ioa"===r.toLowerCase()){try{t=new URL(e).hostname}catch{return}t.endsWith("codebuddy.ai")&&this.logger?.warn(`[cbc-kw=MODEL_REQUEST] [ModelProvider] resolved baseURL host "${t}" looks like the public cloud, but CODEBUDDY_INTERNET_ENVIRONMENT=${r}. The request will likely fail with 401 endpoint mismatch. Check ProductManager sync state or set CODEBUDDY_BASE_URL as a workaround.`)}}async normalizeNewToolResults(e,t){for(let r of e)"function_call_result"===r.rawItem.type&&await this.functionCallResultAgentInputItemProcessor.process(r.rawItem,t)}async getModel(e){if(!e)throw new A.uJ("model name is required");let t=this.sessionManager.getCurrent()||this.sessionManager.sessionSubject.getValue(),r=t.resultSubject.value;if(r?.newItems.length){let e=r.newItems[r.newItems.length-1];e&&(await this.defaultInputItemProcessor.process(e.rawItem,t),await this.normalizeNewToolResults(r.newItems,t))}let s=this.authenticationManager.currentSessionSubject.getValue()?.auth,o=await this.settingsManager.get("env"),i=o?.[J.a1]||process.env[J.a1],n=(0,N.Gp)()?.auth?.accessToken??s?.accessToken,a=await this.productManager.waitConfiguration(),l=a.models?.find(t=>t.id===e),d=(0,V.f)()?.endpoint,c=this.resolveModelBaseURL({envBaseURL:i,modelConfigUrl:l?.url,productEndpoint:a.endpoint,modelId:e,modelConfig:l,customEndpoint:d});this.logger.debug(`Resolved baseURL for model ${e}: ${c}`);let u=l?.local===!0;if(this.isLocalCustomModelRequest(e,l)&&!u&&!isLoopbackEndpoint(l?.url)&&!l?.apiKey?.trim())throw new A.hG((0,A.$v)(e),e);l?.apiKey&&(n=l.apiKey,this.logger.debug(`Using custom API key for model ${e}`)),l?.local===!0&&(n="local");let h=this.getCacheKey(c,e,n),m=this.modelCache.get(h);if(!m){if(this.modelCache.size>=es.mr)for(let e=0;e<es.mr/2;e++){let e=this.modelCache.keys().next().value;void 0!==e&&this.modelCache.delete(e)}try{let t=await this.createClient(c,n);m=new A.lS(t,e),this.modelCache.set(h,m)}catch(e){if(e.message&&(e.message.includes("Authentication")||e.message.includes("OPENAI_API_KEY")||!n))throw this.authenticationManager.currentSessionSubject.next(void 0),new A.WT;throw e}}return(0,er.l)(this.sensitiveModelBoundary.wrapModel(m,t.id,this.securityReviewGate?.isModelBehaviorReviewEnabled(t)===!0),t)}};__decorate([(0,T.Autowired)(R.RestOperations),__metadata("design:type","function"==typeof(s=void 0!==R.RestOperations&&R.RestOperations)?s:Object)],eS.prototype,"restOperations",void 0),__decorate([(0,T.Autowired)(v.AuthenticationManager),__metadata("design:type","function"==typeof(o=void 0!==v.AuthenticationManager&&v.AuthenticationManager)?o:Object)],eS.prototype,"authenticationManager",void 0),__decorate([(0,T.Autowired)(I.ProductManager),__metadata("design:type","function"==typeof(i=void 0!==I.ProductManager&&I.ProductManager)?i:Object)],eS.prototype,"productManager",void 0),__decorate([(0,T.Autowired)(M.SessionManager),__metadata("design:type","function"==typeof(n=void 0!==M.SessionManager&&M.SessionManager)?n:Object)],eS.prototype,"sessionManager",void 0),__decorate([(0,T.Autowired)(M.ModelRequestRetryPhase),__metadata("design:type","function"==typeof(a=void 0!==M.ModelRequestRetryPhase&&M.ModelRequestRetryPhase)?a:Object)],eS.prototype,"modelRequestRetryPhase",void 0),__decorate([(0,T.Autowired)(Z.H0),__metadata("design:type","function"==typeof(l=void 0!==Z.H0&&Z.H0)?l:Object)],eS.prototype,"telemetryService",void 0),__decorate([(0,T.Autowired)(I.ClientInfoProvider),__metadata("design:type","function"==typeof(d=void 0!==I.ClientInfoProvider&&I.ClientInfoProvider)?d:Object)],eS.prototype,"clientInfoProvider",void 0),__decorate([(0,T.Autowired)(M.AgentManager),__metadata("design:type","function"==typeof(c=void 0!==M.AgentManager&&M.AgentManager)?c:Object)],eS.prototype,"agentManager",void 0),__decorate([(0,T.Autowired)(k.Logger),__metadata("design:type","function"==typeof(u=void 0!==k.Logger&&k.Logger)?u:Object)],eS.prototype,"logger",void 0),__decorate([(0,T.Autowired)(k.TraceService),(0,T.Optional)(),__metadata("design:type","function"==typeof(h=void 0!==k.TraceService&&k.TraceService)?h:Object)],eS.prototype,"traceService",void 0),__decorate([(0,T.Autowired)(M.DefaultInputItemProcessor),__metadata("design:type","function"==typeof(m=void 0!==M.DefaultInputItemProcessor&&M.DefaultInputItemProcessor)?m:Object)],eS.prototype,"defaultInputItemProcessor",void 0),__decorate([(0,T.Autowired)(M.FunctionCallResultAgentInputItemProcessor),__metadata("design:type","function"==typeof(g=void 0!==M.FunctionCallResultAgentInputItemProcessor&&M.FunctionCallResultAgentInputItemProcessor)?g:Object)],eS.prototype,"functionCallResultAgentInputItemProcessor",void 0),__decorate([(0,T.Autowired)(es.Iy),__metadata("design:type","function"==typeof(p=void 0!==es.Iy&&es.Iy)?p:Object)],eS.prototype,"modelErrorAnalyzer",void 0),__decorate([(0,T.Autowired)(J.Vr),__metadata("design:type","function"==typeof(_=void 0!==J.Vr&&J.Vr)?_:Object)],eS.prototype,"settingsManager",void 0),__decorate([(0,T.Autowired)(es.TD),__metadata("design:type",Array)],eS.prototype,"modelRequestProcessors",void 0),__decorate([(0,T.Autowired)(z.el),__metadata("design:type",Object)],eS.prototype,"sensitiveModelBoundary",void 0),__decorate([(0,T.Autowired)(W.UD),(0,T.Optional)(),__metadata("design:type",Object)],eS.prototype,"securityReviewGate",void 0),__decorate([(0,T.Autowired)(x.Nx),(0,T.Optional)(),__metadata("design:type",Object)],eS.prototype,"galileoTimingHook",void 0),__decorate([(0,T.Autowired)(F.v),(0,T.Optional)(),__metadata("design:type",Object)],eS.prototype,"galileoService",void 0),eS=__decorate([(0,T.Component)(es.lx,X.Ye)],eS)}};