@maincode-ai/matilda-code 0.22.0-nightly.20261102.db95a17c4 → 0.22.1

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 (80) hide show
  1. package/chunks/agent-JDATO222.js +3 -0
  2. package/chunks/agent-headless-ZOFNY4CF.js +3 -0
  3. package/chunks/{askUserQuestion-7PM7G5YF.js → askUserQuestion-A46IDHKS.js} +1 -1
  4. package/chunks/{chunk-7MUWF4DK.js → chunk-2LVAK6TV.js} +1 -1
  5. package/chunks/{chunk-QUYQBKDE.js → chunk-5JCW6FH6.js} +1 -1
  6. package/chunks/{chunk-WENVHSCJ.js → chunk-6RK6IJY5.js} +1 -1
  7. package/chunks/{chunk-ESNPNLMQ.js → chunk-7AEOFDY3.js} +1 -1
  8. package/chunks/{chunk-ZABH4QIL.js → chunk-AEYNMLMW.js} +1 -1
  9. package/chunks/{chunk-4KS2KEXK.js → chunk-CI5CVVGI.js} +62 -62
  10. package/chunks/{chunk-4MLFC664.js → chunk-DEN6RR3B.js} +1 -1
  11. package/chunks/{chunk-QBXL5UBB.js → chunk-FI2FSW7J.js} +1 -1
  12. package/chunks/{chunk-BVTXZTL3.js → chunk-GCMUSGTT.js} +1 -1
  13. package/chunks/{chunk-66WJUORA.js → chunk-HRCRNKY2.js} +1 -1
  14. package/chunks/{chunk-JR5CSCG4.js → chunk-IV6PS6DB.js} +1 -1
  15. package/chunks/{chunk-CVGGYRNK.js → chunk-KYNP66YS.js} +1 -1
  16. package/chunks/{chunk-QDWS3VZT.js → chunk-LONWTJOE.js} +1 -1
  17. package/chunks/{chunk-35BBGAHD.js → chunk-QNXNECWR.js} +458 -460
  18. package/chunks/{chunk-2QIC3OCV.js → chunk-RH3AEZWO.js} +1 -1
  19. package/chunks/{chunk-QMZREVY3.js → chunk-SMTY6M3W.js} +1 -1
  20. package/chunks/{chunk-VVUY7VKR.js → chunk-TDFF4ZGY.js} +1 -1
  21. package/chunks/chunk-TKEFJ3O3.js +9 -0
  22. package/chunks/{chunk-S2E5ZRPH.js → chunk-UICLGQTV.js} +1 -1
  23. package/chunks/{chunk-6U5VOTWB.js → chunk-V2V3OF76.js} +1 -1
  24. package/chunks/chunk-XPVKH5TC.js +10 -0
  25. package/chunks/{chunk-33UVJMVE.js → chunk-Y3SZK63U.js} +16 -16
  26. package/chunks/{chunk-KRVXBQRC.js → chunk-ZABAV4XA.js} +1 -1
  27. package/chunks/{computer-use-IZGLKENV.js → computer-use-V2DT2IKO.js} +1 -1
  28. package/chunks/{cron-create-BTSJUVNT.js → cron-create-JINCFLKY.js} +1 -1
  29. package/chunks/{cron-delete-PTE3RC2W.js → cron-delete-RF6JLUAV.js} +1 -1
  30. package/chunks/{cron-list-SINKHOIZ.js → cron-list-VXLBAXZ3.js} +1 -1
  31. package/chunks/{edit-MDQEZ7BA.js → edit-ZB4SONLT.js} +3 -3
  32. package/chunks/{enter-worktree-SZK65VXF.js → enter-worktree-CAFTW46C.js} +1 -1
  33. package/chunks/{enterPlanMode-5VWIIVHI.js → enterPlanMode-XSNXJJMC.js} +1 -1
  34. package/chunks/{exit-worktree-OBHUK4TF.js → exit-worktree-U37YLKJC.js} +1 -1
  35. package/chunks/{exitPlanMode-SXFQC4G2.js → exitPlanMode-XKAZCVAV.js} +1 -1
  36. package/chunks/{glob-JKIZ3ZJQ.js → glob-LPIFPVGX.js} +1 -1
  37. package/chunks/{goal-tools-YJMECZYD.js → goal-tools-VAH424PW.js} +1 -1
  38. package/chunks/{grep-Q4T5AE6K.js → grep-IF4GTD5A.js} +1 -1
  39. package/chunks/{keychain-token-storage-4PY5J6U6.js → keychain-token-storage-UTWIIKCK.js} +1 -1
  40. package/chunks/{ls-BQCCCPIX.js → ls-3EEHZY4W.js} +1 -1
  41. package/chunks/{lsp-MHJJJ7K3.js → lsp-H4EXPHFD.js} +1 -1
  42. package/chunks/mcp-client-EUPXG3VF.js +3 -0
  43. package/chunks/monitor-KBWRPPZ5.js +32 -0
  44. package/chunks/notebook-edit-K3KNR6DI.js +17 -0
  45. package/chunks/{openaiContentGenerator-DTKOYRBL.js → openaiContentGenerator-2NF5JGUC.js} +8 -8
  46. package/chunks/read-file-SRDZKBNS.js +3 -0
  47. package/chunks/ripGrep-675JNT4W.js +3 -0
  48. package/chunks/scheduler-O36AJTWS.js +8 -0
  49. package/chunks/{send-message-S4P5QKSW.js → send-message-5XHDGHSN.js} +1 -1
  50. package/chunks/shell-A7NRVDCY.js +3 -0
  51. package/chunks/{skill-V6NTJ4O4.js → skill-FCVSGCSN.js} +1 -1
  52. package/chunks/{symbol-search-5QJNW7PY.js → symbol-search-ZM3HFCUV.js} +1 -1
  53. package/chunks/{syntheticOutput-3XIAIUIR.js → syntheticOutput-OIPRFBVD.js} +1 -1
  54. package/chunks/{task-create-KGPY7O4J.js → task-create-QP44DKH4.js} +1 -1
  55. package/chunks/{task-detach-ZD3A7225.js → task-detach-AUTU6C4G.js} +1 -1
  56. package/chunks/{task-list-P7GQWYAD.js → task-list-U2WAGMM7.js} +1 -1
  57. package/chunks/{task-stop-VFJRBA6P.js → task-stop-GN5WZ3IA.js} +1 -1
  58. package/chunks/{task-update-OOMH4WRA.js → task-update-26N2AUQT.js} +1 -1
  59. package/chunks/{team-create-POMZOM44.js → team-create-TN2KN27J.js} +1 -1
  60. package/chunks/{team-delete-ZJBEQDPE.js → team-delete-XCKD5FBZ.js} +1 -1
  61. package/chunks/todoWrite-JN3ZV5O2.js +3 -0
  62. package/chunks/{tool-search-5Z7MO565.js → tool-search-VPMEQKAS.js} +1 -1
  63. package/chunks/{web-fetch-M4TUYAFG.js → web-fetch-CVAOVOZM.js} +1 -1
  64. package/chunks/{web-search-CBKF36JM.js → web-search-77CUPTFY.js} +3 -3
  65. package/chunks/{workflow-F57TWWPS.js → workflow-JNZRGHJ4.js} +2 -2
  66. package/chunks/write-file-FJCU2PYT.js +15 -0
  67. package/cli.js +391 -391
  68. package/package.json +2 -2
  69. package/chunks/agent-4GIFJO5G.js +0 -3
  70. package/chunks/agent-headless-DXJESNI4.js +0 -3
  71. package/chunks/chunk-JNHB73E3.js +0 -9
  72. package/chunks/mcp-client-CSF5QZEY.js +0 -3
  73. package/chunks/monitor-JUAVWVLY.js +0 -32
  74. package/chunks/notebook-edit-NNOMEUER.js +0 -17
  75. package/chunks/read-file-4EX4B3TB.js +0 -3
  76. package/chunks/ripGrep-JL6UDNCR.js +0 -3
  77. package/chunks/scheduler-GCGZAI7D.js +0 -8
  78. package/chunks/shell-J7EX7B57.js +0 -3
  79. package/chunks/todoWrite-EWYRFK7W.js +0 -3
  80. package/chunks/write-file-UK4BVL3M.js +0 -15
@@ -1,23 +1,23 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{a as _,d as ne}from"./chunk-225CZWD7.js";import{a as zn,d as Wn,n as rt,o as Jt,p as Yn,q as _e,s as it}from"./chunk-DUB7JMQV.js";import{Aa as zt,Ca as Wt,I as le,K as Qe,L as Ze,M as et,U as tt,V as oe,ha as nt,ia as ot,qa as q,qb as Ht,rb as qt,tb as Yt,ya as Vt}from"./chunk-4KS2KEXK.js";import{N as Je,X as L,c as Hn,d as qn,e as $,f as Me,j as He,q as qe,u as Ye}from"./chunk-ZABH4QIL.js";import{h as V,i as Xe,k as Bt,m as jt}from"./chunk-HEJO7OBH.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();p();p();p();p();var z=class extends Error{constructor(e,n){super(`${e} at position ${n}`),this.position=n}};p();function Jn(t){return/^[0-9A-Fa-f]$/.test(t)}function J(t){return t>="0"&&t<="9"}function Xn(t){return t>=" "}function ke(t){return`,:[]/{}()
4
- +`.includes(t)}function Xt(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"}function Qt(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"||t>="0"&&t<="9"}var Zt=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,en=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function tn(t){return`,[]/{}
5
- +`.includes(t)}function nn(t){return we(t)||Fr.test(t)}var Fr=/^[[{\w-]$/;function Qn(t){return t===`
6
- `||t==="\r"||t===" "||t==="\b"||t==="\f"}function Y(t,e){let n=t.charCodeAt(e);return n===32||n===10||n===9||n===13}function Zn(t,e){let n=t.charCodeAt(e);return n===32||n===9||n===13}function eo(t,e){let n=t.charCodeAt(e);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function we(t){return on(t)||st(t)}function on(t){return t==='"'||t==="\u201C"||t==="\u201D"}function rn(t){return t==='"'}function st(t){return t==="'"||t==="\u2018"||t==="\u2019"||t==="`"||t==="\xB4"}function sn(t){return t==="'"}function ue(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=t.lastIndexOf(e);return o!==-1?t.substring(0,o)+(n?"":t.substring(o+1)):t}function F(t,e){let n=t.length;if(!Y(t,n-1))return t+e;for(;Y(t,n-1);)n--;return t.substring(0,n)+e+t.substring(n)}function to(t,e,n){return t.substring(0,e)+t.substring(e+n)}function no(t){return/[,\n][ \t\r]*$/.test(t)}var Gr={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},Kr={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
7
- `,r:"\r",t:" "};function at(t){let e=0,n="";c(["```","[```","{```"]),i()||ee(),c(["```","```]","```}"]);let r=f(",");for(r&&s(),nn(t[e])&&no(n)?(r||(n=F(n,",")),T()):r&&(n=ue(n,","));t[e]==="}"||t[e]==="]";)e++,s();if(e>=t.length)return n;ze();function i(){s();let y=g()||C()||S()||w()||b()||j(!1)||Kt();return s(),y}function s(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,E=e,A=a(y);do A=l(),A&&(A=a(y));while(A);return e>E}function a(y){let E=y?Y:Zn,A="";for(;;)if(E(t,e))A+=t[e],e++;else if(eo(t,e))A+=" ",e++;else break;return A.length>0?(n+=A,!0):!1}function l(){if(t[e]==="/"&&t[e+1]==="*"){for(;e<t.length&&!$r(t,e);)e++;return e+=2,!0}if(t[e]==="/"&&t[e+1]==="/"){for(;e<t.length&&t[e]!==`
8
- `;)e++;return!0}return!1}function c(y){if(u(y)){if(Xt(t[e]))for(;e<t.length&&Qt(t[e]);)e++;return s(),!0}return!1}function u(y){a(!0);for(let E of y){let A=e+E.length;if(t.slice(e,A)===E)return e=A,!0}return!1}function f(y){return t[e]===y?(n+=t[e],e++,!0):!1}function d(y){return t[e]===y?(e++,!0):!1}function m(){return d("\\")}function h(){return s(),t[e]==="."&&t[e+1]==="."&&t[e+2]==="."?(e+=3,s(),d(","),!0):!1}function g(){if(t[e]==="{"){n+="{",e++,s(),d(",")&&s();let y=!0;for(;e<t.length&&t[e]!=="}";){let E;if(y?(E=!0,y=!1):(E=f(","),E||(n=F(n,",")),s()),h(),!(S()||j(!0))){t[e]==="}"||t[e]==="{"||t[e]==="]"||t[e]==="["||t[e]===void 0?n=ue(n,","):U();break}s();let We=f(":"),te=e>=t.length;We||(nn(t[e])||te?n=F(n,":"):ve()),i()||(We||te?n+="null":ve())}return t[e]==="}"?(n+="}",e++):n=F(n,"}"),!0}return!1}function C(){if(t[e]==="["){n+="[",e++,s(),d(",")&&s();let y=!0;for(;e<t.length&&t[e]!=="]";)if(y?y=!1:f(",")||(n=F(n,",")),h(),!i()){n=ue(n,",");break}return t[e]==="]"?(n+="]",e++):n=F(n,"]"),!0}return!1}function T(){let y=!0,E=!0;for(;E;)y?y=!1:f(",")||(n=F(n,",")),E=i();E||(n=ue(n,",")),n=`[
3
+ import{a as _,d as ne}from"./chunk-225CZWD7.js";import{a as Wn,d as Hn,n as rt,o as Xt,p as Yn,q as _e,s as it}from"./chunk-DUB7JMQV.js";import{Aa as Wt,Ca as Ht,I as le,K as Qe,L as Ze,M as et,U as tt,V as oe,ha as nt,ia as ot,qa as q,qb as qt,rb as Jt,tb as Yt,ya as zt}from"./chunk-CI5CVVGI.js";import{O as Ye,Y as L,d as qn,e as Jn,f as $,g as Me,k as He,r as qe,v as Je}from"./chunk-AEYNMLMW.js";import{h as V,i as Xe,k as jt,m as Vt}from"./chunk-HEJO7OBH.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();p();p();p();p();var z=class extends Error{constructor(e,n){super(`${e} at position ${n}`),this.position=n}};p();function Xn(t){return/^[0-9A-Fa-f]$/.test(t)}function Y(t){return t>="0"&&t<="9"}function Qn(t){return t>=" "}function ke(t){return`,:[]/{}()
4
+ +`.includes(t)}function Qt(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"}function Zt(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"||t>="0"&&t<="9"}var en=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,tn=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function nn(t){return`,[]/{}
5
+ +`.includes(t)}function on(t){return we(t)||Kr.test(t)}var Kr=/^[[{\w-]$/;function Zn(t){return t===`
6
+ `||t==="\r"||t===" "||t==="\b"||t==="\f"}function J(t,e){let n=t.charCodeAt(e);return n===32||n===10||n===9||n===13}function eo(t,e){let n=t.charCodeAt(e);return n===32||n===9||n===13}function to(t,e){let n=t.charCodeAt(e);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function we(t){return rn(t)||st(t)}function rn(t){return t==='"'||t==="\u201C"||t==="\u201D"}function sn(t){return t==='"'}function st(t){return t==="'"||t==="\u2018"||t==="\u2019"||t==="`"||t==="\xB4"}function an(t){return t==="'"}function ue(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=t.lastIndexOf(e);return o!==-1?t.substring(0,o)+(n?"":t.substring(o+1)):t}function F(t,e){let n=t.length;if(!J(t,n-1))return t+e;for(;J(t,n-1);)n--;return t.substring(0,n)+e+t.substring(n)}function no(t,e,n){return t.substring(0,e)+t.substring(e+n)}function oo(t){return/[,\n][ \t\r]*$/.test(t)}var Gr={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},$r={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
7
+ `,r:"\r",t:" "};function at(t){let e=0,n="";c(["```","[```","{```"]),i()||ee(),c(["```","```]","```}"]);let r=f(",");for(r&&s(),on(t[e])&&oo(n)?(r||(n=F(n,",")),T()):r&&(n=ue(n,","));t[e]==="}"||t[e]==="]";)e++,s();if(e>=t.length)return n;ze();function i(){s();let y=g()||C()||S()||w()||b()||j(!1)||$t();return s(),y}function s(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,E=e,A=a(y);do A=l(),A&&(A=a(y));while(A);return e>E}function a(y){let E=y?J:eo,A="";for(;;)if(E(t,e))A+=t[e],e++;else if(to(t,e))A+=" ",e++;else break;return A.length>0?(n+=A,!0):!1}function l(){if(t[e]==="/"&&t[e+1]==="*"){for(;e<t.length&&!Br(t,e);)e++;return e+=2,!0}if(t[e]==="/"&&t[e+1]==="/"){for(;e<t.length&&t[e]!==`
8
+ `;)e++;return!0}return!1}function c(y){if(u(y)){if(Qt(t[e]))for(;e<t.length&&Zt(t[e]);)e++;return s(),!0}return!1}function u(y){a(!0);for(let E of y){let A=e+E.length;if(t.slice(e,A)===E)return e=A,!0}return!1}function f(y){return t[e]===y?(n+=t[e],e++,!0):!1}function d(y){return t[e]===y?(e++,!0):!1}function m(){return d("\\")}function h(){return s(),t[e]==="."&&t[e+1]==="."&&t[e+2]==="."?(e+=3,s(),d(","),!0):!1}function g(){if(t[e]==="{"){n+="{",e++,s(),d(",")&&s();let y=!0;for(;e<t.length&&t[e]!=="}";){let E;if(y?(E=!0,y=!1):(E=f(","),E||(n=F(n,",")),s()),h(),!(S()||j(!0))){t[e]==="}"||t[e]==="{"||t[e]==="]"||t[e]==="["||t[e]===void 0?n=ue(n,","):U();break}s();let We=f(":"),te=e>=t.length;We||(on(t[e])||te?n=F(n,":"):ve()),i()||(We||te?n+="null":ve())}return t[e]==="}"?(n+="}",e++):n=F(n,"}"),!0}return!1}function C(){if(t[e]==="["){n+="[",e++,s(),d(",")&&s();let y=!0;for(;e<t.length&&t[e]!=="]";)if(y?y=!1:f(",")||(n=F(n,",")),h(),!i()){n=ue(n,",");break}return t[e]==="]"?(n+="]",e++):n=F(n,"]"),!0}return!1}function T(){let y=!0,E=!0;for(;E;)y?y=!1:f(",")||(n=F(n,",")),E=i();E||(n=ue(n,",")),n=`[
9
9
  ${n}
10
- ]`}function S(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,A=t[e]==="\\";if(A&&(e++,A=!0),we(t[e])){let We=rn(t[e])?rn:sn(t[e])?sn:st(t[e])?st:on,te=e,be=n.length,M='"';for(e++;;){if(e>=t.length){let O=P(e-1);return!y&&ke(t.charAt(O))?(e=te,n=n.substring(0,be),S(!0)):(M=F(M,'"'),n+=M,!0)}if(e===E)return M=F(M,'"'),n+=M,!0;if(We(t[e])){let O=e,$t=M.length;if(M+='"',e++,n+=M,s(!1),y||e>=t.length||ke(t[e])||we(t[e])||J(t[e]))return R(),!0;let H=P(O-1),Vn=t.charAt(H);if(Vn===",")return e=te,n=n.substring(0,be),S(!1,H);if(ke(Vn))return e=te,n=n.substring(0,be),S(!0);n=n.substring(0,be),e=O+1,M=`${M.substring(0,$t)}\\${M.substring($t)}`}else if(y&&tn(t[e])){if(t[e-1]===":"&&Zt.test(t.substring(te+1,e+2)))for(;e<t.length&&en.test(t[e]);)M+=t[e],e++;return M=F(M,'"'),n+=M,R(),!0}else if(t[e]==="\\"){let O=t.charAt(e+1);if(Kr[O]!==void 0)M+=t.slice(e,e+2),e+=2;else if(O==="u"){let H=2;for(;H<6&&Jn(t[e+H]);)H++;H===6?(M+=t.slice(e,e+6),e+=6):e+H>=t.length?e=t.length:Lr()}else M+=O,e+=2}else{let O=t.charAt(e);O==='"'&&t[e-1]!=="\\"?(M+=`\\${O}`,e++):Qn(O)?(M+=Gr[O],e++):(Xn(O)||Z(O),M+=O,e++)}A&&m()}}return!1}function R(){let y=!1;for(s();t[e]==="+";){y=!0,e++,s(),n=ue(n,'"',!0);let E=n.length;S()?n=to(n,E,1):n=F(n,'"')}return y}function w(){let y=e;if(t[e]==="-"){if(e++,ae())return I(y),!0;if(!J(t[e]))return e=y,!1}for(;J(t[e]);)e++;if(t[e]==="."){if(e++,ae())return I(y),!0;if(!J(t[e]))return e=y,!1;for(;J(t[e]);)e++}if(t[e]==="e"||t[e]==="E"){if(e++,(t[e]==="-"||t[e]==="+")&&e++,ae())return I(y),!0;if(!J(t[e]))return e=y,!1;for(;J(t[e]);)e++}if(!ae())return e=y,!1;if(e>y){let E=t.slice(y,e),A=/^0\d/.test(E);return n+=A?`"${E}"`:E,!0}return!1}function b(){return x("true","true")||x("false","false")||x("null","null")||x("True","true")||x("False","false")||x("None","null")}function x(y,E){return t.slice(e,e+y.length)===y?(n+=E,e+=y.length,!0):!1}function j(y){let E=e;if(Xt(t[e])){for(;e<t.length&&Qt(t[e]);)e++;let A=e;for(;Y(t,A);)A++;if(t[A]==="(")return e=A+1,i(),t[e]===")"&&(e++,t[e]===";"&&e++),!0}for(;e<t.length&&!tn(t[e])&&!we(t[e])&&(!y||t[e]!==":");)e++;if(t[e-1]===":"&&Zt.test(t.substring(E,e+2)))for(;e<t.length&&en.test(t[e]);)e++;if(e>E){for(;Y(t,e-1)&&e>0;)e--;let A=t.slice(E,e);return n+=A==="undefined"?"null":JSON.stringify(A),t[e]==='"'&&e++,!0}}function Kt(){if(t[e]==="/"){let y=e;for(e++;e<t.length&&(t[e]!=="/"||t[e-1]==="\\");)e++;return e++,n+=`"${t.substring(y,e)}"`,!0}}function P(y){let E=y;for(;E>0&&Y(t,E);)E--;return E}function ae(){return e>=t.length||ke(t[e])||Y(t,e)}function I(y){n+=`${t.slice(y,e)}0`}function Z(y){throw new z(`Invalid character ${JSON.stringify(y)}`,e)}function ze(){throw new z(`Unexpected character ${JSON.stringify(t[e])}`,e)}function ee(){throw new z("Unexpected end of json string",t.length)}function U(){throw new z("Object key expected",e)}function ve(){throw new z("Colon expected",e)}function Lr(){let y=t.slice(e,e+6);throw new z(`Invalid unicode character "${y}"`,e)}}function $r(t,e){return t[e]==="*"&&t[e+1]==="/"}var Br=L("JSON_PARSE");function jr(t,e={}){if(!t||typeof t!="string")return e;try{return JSON.parse(t)}catch(n){let o=Vr(t);if(o!==void 0)return o;try{let r=at(t);return JSON.parse(r)}catch(r){let i=io(t);if(i&&i!==t)try{return JSON.parse(at(i))}catch{}return Br.error("Failed to parse JSON even with jsonrepair:",{originalError:n,repairError:r,jsonString:t}),e}}}var oo=Symbol("tool-args-parse-failed");function ro(t){if(t==null)return{};let e=typeof t=="string"?t.trim():"";if(!e)return{};let n=jr(e,oo);return n===oo?null:n&&typeof n=="object"&&!Array.isArray(n)?n:null}function Vr(t){let e=io(t);if(e&&e!==t.trim())try{return JSON.parse(e)}catch{return}}function io(t){let e=t.trimStart();if(!e)return null;let n=e[0];if(n!=="{"&&n!=="[")return null;let o=0,r=!1,i=!1;for(let s=0;s<e.length;s++){let a=e[s];if(r){i?i=!1:a==="\\"?i=!0:a==='"'&&(r=!1);continue}if(a==='"'){r=!0;continue}if(a==="{"||a==="[")o++;else if(a==="}"||a==="]"){if(o--,o===0)return e.slice(0,s+1);if(o<0)return null}}return null}p();var zr=/[A-Za-z\u00C0-\u024F]/g;function Wr(t){return t>=1024&&t<=1279||t>=1280&&t<=1327||t>=11744&&t<=11775||t>=42560&&t<=42655||t>=12352&&t<=12543||t>=13312&&t<=19903||t>=19968&&t<=40959||t>=63744&&t<=64255||t>=44032&&t<=55215}function an(t){let e=t.codePointAt(0);return e!==void 0&&Wr(e)}function Hr(t){let e=t.match(zr)?.length??0;if(e<24)return!1;let n=0;for(let o of t)an(o)&&n++;return n===0||e>=n*8}function lt(t){if(!t||!Hr(t))return t;let e="",n=0,o=[...t];for(;n<o.length;){if(!an(o[n])){e+=o[n],n++;continue}let r=n;for(;r>0&&o[r-1]===" ";)r--;let i=n+1;for(;i<o.length&&an(o[i]);)i++;for(;i<o.length&&o[i]===" ";)i++;let s=r>0?o[r-1]:"",a=i<o.length?o[i]:"";(/[A-Za-z0-9]/.test(s)&&/[A-Za-z0-9]/.test(a)||o[r]===" "||o[i-1]===" ")&&(e+=" "),n=i,r<n&&o[r]===" "&&e.endsWith(" ")&&(e=e.slice(0,-1))}return e.replace(/ {2,}/g," ")}p();var ce=L("TAGGED_THINKING_PARSER"),Ie=["<think>","<thinking>"],Oe=["</think>","</thinking>"],qr=Math.max(...Ie.map(t=>t.length),...Oe.map(t=>t.length));function xe(t,e,n){e&&t.push(n==="thought"?{text:e,thought:!0}:{text:e})}function ut(t,e,n){let o=t.length-e;return o<=0||o>qr?!1:n.some(r=>r.startsWith(t.slice(e,e+o)))}function ct(t,e,n){return n.find(o=>t.startsWith(o,e))}function un(t){if(!t)return t;let e=t;return e=e.replace(/<\/?think(?:ing)?>/gi,""),e=e.replace(/[A-Za-z]*long[_-]?message[_-]?THINKING/gi,""),e=e.replace(/\bM?long[_-]?message\b/gi,""),e=e.replace(/(^|[\s>])THINKING(?=[\sA-Z<]|$)/g,"$1"),e!==t&&(e=e.replace(/[ \t]{2,}/g," ")),e}function so(t){let e=[];for(let n of t){if(n.thought===!0||typeof n.text!="string"){e.push(n);continue}let o=lt(un(n.text));(o.length>0||/^\s+$/.test(n.text))&&e.push({text:o.length>0?o:n.text})}return e}var ln=class{mode="text";buffer="";parse(e,n=!1){this.buffer+=e;let o=this.buffer.toLowerCase(),r=[],i="",s=0;for(;s<this.buffer.length;){if(this.mode==="text"){let a=ct(o,s,Ie);if(a){ce.debug(`taggedThinking: detected open tag "${a}" at offset ${s}`),xe(r,i,this.mode),i="",this.mode="thought",s+=a.length;continue}let l=ct(o,s,Oe);if(l){ce.debug(`taggedThinking: dropping orphan close tag "${l}" at offset ${s}`),xe(r,i,this.mode),i="",s+=l.length;continue}if(!n&&(ut(o,s,Ie)||ut(o,s,Oe)))break}else{let a=ct(o,s,Oe);if(a){ce.debug(`taggedThinking: detected close tag "${a}" at offset ${s}`),xe(r,i,this.mode),i="",this.mode="text",s+=a.length;continue}let l=ct(o,s,Ie);if(l){s+=l.length;continue}if(!n&&(ut(o,s,Oe)||ut(o,s,Ie)))break}i+=this.buffer[s],s+=1}return s<this.buffer.length?(xe(r,i,this.mode),this.buffer=this.buffer.slice(s),ce.debug(`taggedThinking: emitted ${r.length} part(s), buffered ${this.buffer.length} char(s)`),so(r)):(this.buffer="",this.mode==="thought"&&i&&ce.warn(`taggedThinking: flushing ${i.length} chars of unclosed thought on stream end`),xe(r,i,this.mode),ce.debug(`taggedThinking: emitted ${r.length} part(s), flush complete`),so(r))}};function ao(t){return new ln().parse(t,!0)}p();function lo(t,e="auto"){return e==="openapi_30"?Yr(t):t}function Yr(t){let e=n=>{if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return n.map(e);let o=n,r={};if(Array.isArray(o.type)){let i=o.type;i.length===2&&i.includes("null")?(r.type=i.find(s=>s!=="null"),r.nullable=!0):r.type=i[0]}else o.type!==void 0&&(r.type=o.type);o.const!==void 0&&(r.enum=[o.const],delete r.const),typeof o.exclusiveMinimum=="number"&&(r.minimum=o.exclusiveMinimum,r.exclusiveMinimum=!0),typeof o.exclusiveMaximum=="number"&&(r.maximum=o.exclusiveMaximum,r.exclusiveMaximum=!0),Array.isArray(o.items)?delete r.items:typeof o.items=="object"&&o.items!==null&&(r.items=e(o.items)),Array.isArray(o.enum)&&(r.enum=o.enum.map(String));for(let[i,s]of Object.entries(o))i==="type"||i==="const"||i==="exclusiveMinimum"||i==="exclusiveMaximum"||i==="items"||i==="enum"||i==="$schema"||i==="$id"||i==="default"||i==="dependencies"||i==="patternProperties"||(r[i]=e(s));return r};return e(t)}p();function de(t){return!Number.isFinite(t)||t<=0?0:Math.ceil(t/4)}function dt(t){let e=t.candidates||0,n=t.thoughts||0;return n>e?e+n:Math.max(e,n)}function Jr(t){return t.total&&t.total>0?Math.max(t.total,(t.prompt||0)+dt(t)):(t.prompt||0)+dt(t)}function Xr(t){let e=Math.max(0,t.thoughtsTokens||0),n=dt({candidates:t.outputTokens||0,thoughts:e}),o=Math.max(t.totalTokens||0,(t.inputTokens||0)+n);return{...t,outputTokens:n,thoughtsTokens:e,totalTokens:o}}var W=L("CONVERTER"),ho="(attached media from previous tool call)";function Co(t,e={}){let n=t.prompt_tokens||0,o=t.completion_tokens||0,r=t.total_tokens||0,i=t.prompt_tokens_details,s=i?.cached_tokens??i?.cachedTokens??t.cached_tokens??t.prompt_cache_hit_tokens??t.cache_read_input_tokens??0,a=t.completion_tokens_details,l=a?.reasoning_tokens??a?.reasoningTokens??t.reasoning_tokens??0,c=Math.max(0,e.estimatedReasoningTokens??0),u=Math.max(0,e.estimatedContentTokens??0),f=l>0?l:c,d=o;f>0&&(o>=f?d=o:d=o+f),(u>0||c>0)&&(d=Math.max(d,u+(l>0?0:c),u+f)),r>n&&(n>0||o>0||f>0)&&(d=Math.max(d,r-n)),f===0&&c>0&&(f=c),f>d&&(f=d);let m=t.usage_is_incomplete===!0||o>0&&n===0||r>0&&n===0&&o===0,h=n,g=r;return(g===0&&(h>0||d>0)||g>0&&h>0&&g<h+d)&&(g=h+d),{promptTokenCount:h,candidatesTokenCount:d,totalTokenCount:g,cachedContentTokenCount:s,thoughtsTokenCount:f,...m?{usageIsIncomplete:!0}:{}}}var Qr=64,uo=1024;function co(t,e){if(t.length===0)return"";if(e.emittedText.length===0)return e.emittedText=t,e.emittedLength=t.length,t;if(e.cumulativeMode){if(t.startsWith(e.emittedText)){let n=t.slice(e.emittedText.length);return e.emittedText=t,e.emittedLength=t.length,n}return e.emittedText.startsWith(t)?(W.debug(`normalizeStreamingTextDelta: cumulative rewind suppression (emitted=${e.emittedText.length}b, chunk=${t.length}b)`),""):(W.debug("normalizeStreamingTextDelta: exiting cumulative mode (chunk does not match prior accumulated text)"),e.cumulativeMode=!1,e.emittedText=t,e.emittedLength+=t.length,t)}if(t.length>e.emittedText.length&&t.startsWith(e.emittedText)){let n=e.emittedText.length,r=n>=uo&&e.emittedLength>n?e.emittedLength:n;if(t.length>r){let i=t.slice(r);return e.emittedText=t,e.emittedLength=t.length,e.cumulativeMode=!0,W.debug(`normalizeStreamingTextDelta: entered cumulative mode (prefix overlap, baseline=${n}b sliceFrom=${r}b -> curr=${t.length}b)`),i}}return t===e.emittedText?t.length>=Qr?(e.cumulativeMode=!0,W.debug(`normalizeStreamingTextDelta: entered cumulative mode (exact repeat, ${t.length}b)`),""):(e.emittedLength+=t.length,t):(e.emittedText.length<uo&&(e.emittedText+=t),e.emittedLength+=t.length,t)}function yo(t){if(!t||typeof t!="object")return t;let e=JSON.parse(JSON.stringify(t)),n=o=>{if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return o.map(n);let r={};for(let[i,s]of Object.entries(o))if(i==="type"&&typeof s=="string"){let a=s.toLowerCase();a==="integer"?r[i]="integer":a==="number"?r[i]="number":r[i]=a}else i==="minimum"||i==="maximum"||i==="multipleOf"?typeof s=="string"&&!isNaN(Number(s))?r[i]=Number(s):r[i]=s:i==="minLength"||i==="maxLength"||i==="minItems"||i==="maxItems"?typeof s=="string"&&!isNaN(Number(s))?r[i]=parseInt(s,10):r[i]=s:typeof s=="object"?r[i]=n(s):r[i]=s;return r};return n(e)}async function Zr(t,e="auto"){let n=[];for(let o of t){let r;if("tool"in o?r=await o.tool():r=o,r.functionDeclarations){for(let i of r.functionDeclarations)if(i.name&&i.description){let s;i.parametersJsonSchema?s={...i.parametersJsonSchema}:i.parameters&&(s=yo(i.parameters)),s&&(s=lo(s,e)),n.push({type:"function",function:{name:i.name,description:i.description,parameters:s}})}}}return n}function ei(t,e,n={cleanOrphanToolCalls:!0}){let o=[];return ni(t,o),oi(t.contents,o,e),o=mo(o),n.cleanOrphanToolCalls&&(o=fi(o),o=mo(o)),o}function ti(t,e){let n=t.candidates?.[0],o=n?.content?.parts||[],r=[],i=[],s=[],a=0;for(let g of o)typeof g=="string"?i.push(g):"text"in g&&g.text?"thought"in g&&g.thought?r.push(g.text):i.push(g.text):"functionCall"in g&&g.functionCall&&(s.push({id:g.functionCall.id||`call_${a}`,type:"function",function:{name:g.functionCall.name||"",arguments:JSON.stringify(g.functionCall.args||{})}}),a+=1);let l={role:"assistant",content:i.join("")||null,refusal:null},c=r.join("");c&&(l.reasoning_content=c),s.length>0&&(l.tool_calls=s);let u=pi(n?.finishReason),f=t.usageMetadata,d={prompt_tokens:f?.promptTokenCount||0,completion_tokens:f?.candidatesTokenCount||0,total_tokens:f?.totalTokenCount||0};f?.cachedContentTokenCount!==void 0&&(d.prompt_tokens_details={cached_tokens:f.cachedContentTokenCount});let m=t.createTime?Number(t.createTime):Date.now(),h=Number.isFinite(m)?Math.floor(m/1e3):Math.floor(Date.now()/1e3);return{id:t.responseId||`gemini-${Date.now()}`,object:"chat.completion",created:h,model:t.modelVersion||e.model,choices:[{index:0,message:l,finish_reason:u,logprobs:null}],usage:d}}function ni(t,e){if(!t.config?.systemInstruction)return;let n=So(t.config.systemInstruction);n&&e.push({role:"system",content:n})}function oi(t,e,n){if(Array.isArray(t))for(let o of t)po(o,e,n);else t&&po(t,e,n)}function po(t,e,n){if(typeof t=="string"){e.push({role:"user",content:t});return}if(!ai(t))return;let o=t.parts||[],r=t.role==="model"?"assistant":"user",i=[],s=[],a=[],l=0,c=new Set,u=new Set,f=[];for(let d of o){if(typeof d=="string"){i.push({type:"text",text:d});continue}"text"in d&&"thought"in d&&d.thought&&r==="assistant"&&d.text&&s.push(d.text),"text"in d&&d.text&&!("thought"in d&&d.thought)&&i.push({type:"text",text:d.text});let m=To(d,n);if(m&&r==="user"&&i.push(m),"functionCall"in d&&d.functionCall&&r==="assistant"){let h=d.functionCall.id;if(h){if(c.has(h)){W.debug(`Dropping duplicate functionCall id=${h} while converting content`);continue}c.add(h)}a.push({id:h||`call_${l}`,type:"function",function:{name:d.functionCall.name||"",arguments:JSON.stringify(d.functionCall.args||{})}}),l+=1}if(d.functionResponse&&r==="user"){let h=d.functionResponse.id;if(h){if(u.has(h))continue;u.add(h)}let g=ii(d.functionResponse,n);if(g){if(n.splitToolMedia&&Array.isArray(g.content)){let C=[],T=[];for(let S of g.content)S&&(S.type==="image_url"||S.type==="input_audio"||S.type==="video_url"||S.type==="file")?C.push(S):S&&S.type==="text"&&T.push(S);if(C.length>0){let S=T.map(R=>R.text).join(`
11
- `);g.content=S||"[media attached in following user message]",f.push(...C)}}e.push(g)}}}if(f.length>0&&e.push({role:"user",content:[{type:"text",text:ho},...f]}),r==="assistant"){if(i.length===0&&a.length===0&&s.length===0)return;let m={role:"assistant",content:i.filter(g=>g.type==="text").map(g=>g.text).join("")||(s.length>0?"":null)};a.length>0&&(m.tool_calls=a);let h=s.join("");h&&(m.reasoning_content=h),e.push(m);return}i.length>0&&e.push({role:"user",content:i})}function ri(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){let e=t,n=e.output;if(typeof n=="string")return n;let o=e.error;if(typeof o=="string")return o}try{return JSON.stringify(t)??String(t)}catch{return String(t)}}function ii(t,e){let n=ri(t.response),o=[];n&&o.push({type:"text",text:n});for(let r of t.parts||[]){if("text"in r&&typeof r.text=="string"){r.text.length>0&&o.push({type:"text",text:r.text});continue}let i=To(r,e);i&&o.push(i)}return o.length===0?{role:"tool",tool_call_id:t.id||"",content:""}:{role:"tool",tool_call_id:t.id||"",content:o}}function To(t,e){let{modalities:n}=e;if(t.inlineData?.mimeType&&t.inlineData?.data){let o=t.inlineData.mimeType,r=fo(o),i=t.inlineData.displayName||o;if(r==="image")return n.image?{type:"image_url",image_url:{url:`data:${o};base64,${t.inlineData.data}`}}:re("image",i,e);if(o==="application/pdf")return n.pdf?{type:"file",file:{filename:t.inlineData.displayName||"document.pdf",file_data:`data:${o};base64,${t.inlineData.data}`}}:re("pdf",i,e);if(r==="audio"){if(!n.audio)return re("audio",i,e);let s=si(o);if(s)return{type:"input_audio",input_audio:{data:`data:${o};base64,${t.inlineData.data}`,format:s}}}return r==="video"?n.video?{type:"video_url",video_url:{url:`data:${o};base64,${t.inlineData.data}`}}:re("video",i,e):{type:"text",text:`Unsupported inline media type: ${o} (${i}).`}}if(t.fileData?.mimeType&&t.fileData?.fileUri){let o=t.fileData.displayName||"file",r=t.fileData.fileUri,i=t.fileData.mimeType,s=fo(i);if(s==="image")return n.image?{type:"image_url",image_url:{url:r}}:re("image",o,e);if(i==="application/pdf")return n.pdf?{type:"file",file:{filename:o,file_data:r}}:re("pdf",o,e);if(s==="video")return n.video?{type:"video_url",video_url:{url:r}}:re("video",o,e);let a=t.fileData.displayName?` (${t.fileData.displayName})`:"";return{type:"text",text:`Unsupported file media type: ${i}${a}.`}}return null}function re(t,e,n){W.warn(`Model '${n.model}' does not support ${t} input. Replacing with text placeholder: ${e}`);let o;return t==="pdf"?o=`This model does not support PDF input directly. The read_file tool cannot extract PDF content either. To extract text from the PDF file, try using skills if applicable, or guide user to install pdf skill by running this slash command:
12
- /extensions install https://github.com/anthropics/skills:document-skills`:o=`This model does not support ${t} input. The read_file tool cannot process this type of file either. To handle this file, try using skills if applicable, or any tools installed at system wide, or let the user know you cannot process this type of file.`,{type:"text",text:`[Unsupported ${t} file: "${e}". ${o}]`}}function fo(t){return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function si(t){return t.includes("wav")?"wav":t.includes("mp3")||t.includes("mpeg")?"mp3":null}function ai(t){return typeof t=="object"&&t!==null&&"role"in t&&"parts"in t&&Array.isArray(t.parts)}function So(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>So(e)).filter(Boolean).join(`
10
+ ]`}function S(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,A=t[e]==="\\";if(A&&(e++,A=!0),we(t[e])){let We=sn(t[e])?sn:an(t[e])?an:st(t[e])?st:rn,te=e,be=n.length,M='"';for(e++;;){if(e>=t.length){let O=P(e-1);return!y&&ke(t.charAt(O))?(e=te,n=n.substring(0,be),S(!0)):(M=F(M,'"'),n+=M,!0)}if(e===E)return M=F(M,'"'),n+=M,!0;if(We(t[e])){let O=e,Bt=M.length;if(M+='"',e++,n+=M,s(!1),y||e>=t.length||ke(t[e])||we(t[e])||Y(t[e]))return R(),!0;let H=P(O-1),zn=t.charAt(H);if(zn===",")return e=te,n=n.substring(0,be),S(!1,H);if(ke(zn))return e=te,n=n.substring(0,be),S(!0);n=n.substring(0,be),e=O+1,M=`${M.substring(0,Bt)}\\${M.substring(Bt)}`}else if(y&&nn(t[e])){if(t[e-1]===":"&&en.test(t.substring(te+1,e+2)))for(;e<t.length&&tn.test(t[e]);)M+=t[e],e++;return M=F(M,'"'),n+=M,R(),!0}else if(t[e]==="\\"){let O=t.charAt(e+1);if($r[O]!==void 0)M+=t.slice(e,e+2),e+=2;else if(O==="u"){let H=2;for(;H<6&&Xn(t[e+H]);)H++;H===6?(M+=t.slice(e,e+6),e+=6):e+H>=t.length?e=t.length:Fr()}else M+=O,e+=2}else{let O=t.charAt(e);O==='"'&&t[e-1]!=="\\"?(M+=`\\${O}`,e++):Zn(O)?(M+=Gr[O],e++):(Qn(O)||Z(O),M+=O,e++)}A&&m()}}return!1}function R(){let y=!1;for(s();t[e]==="+";){y=!0,e++,s(),n=ue(n,'"',!0);let E=n.length;S()?n=no(n,E,1):n=F(n,'"')}return y}function w(){let y=e;if(t[e]==="-"){if(e++,ae())return I(y),!0;if(!Y(t[e]))return e=y,!1}for(;Y(t[e]);)e++;if(t[e]==="."){if(e++,ae())return I(y),!0;if(!Y(t[e]))return e=y,!1;for(;Y(t[e]);)e++}if(t[e]==="e"||t[e]==="E"){if(e++,(t[e]==="-"||t[e]==="+")&&e++,ae())return I(y),!0;if(!Y(t[e]))return e=y,!1;for(;Y(t[e]);)e++}if(!ae())return e=y,!1;if(e>y){let E=t.slice(y,e),A=/^0\d/.test(E);return n+=A?`"${E}"`:E,!0}return!1}function b(){return x("true","true")||x("false","false")||x("null","null")||x("True","true")||x("False","false")||x("None","null")}function x(y,E){return t.slice(e,e+y.length)===y?(n+=E,e+=y.length,!0):!1}function j(y){let E=e;if(Qt(t[e])){for(;e<t.length&&Zt(t[e]);)e++;let A=e;for(;J(t,A);)A++;if(t[A]==="(")return e=A+1,i(),t[e]===")"&&(e++,t[e]===";"&&e++),!0}for(;e<t.length&&!nn(t[e])&&!we(t[e])&&(!y||t[e]!==":");)e++;if(t[e-1]===":"&&en.test(t.substring(E,e+2)))for(;e<t.length&&tn.test(t[e]);)e++;if(e>E){for(;J(t,e-1)&&e>0;)e--;let A=t.slice(E,e);return n+=A==="undefined"?"null":JSON.stringify(A),t[e]==='"'&&e++,!0}}function $t(){if(t[e]==="/"){let y=e;for(e++;e<t.length&&(t[e]!=="/"||t[e-1]==="\\");)e++;return e++,n+=`"${t.substring(y,e)}"`,!0}}function P(y){let E=y;for(;E>0&&J(t,E);)E--;return E}function ae(){return e>=t.length||ke(t[e])||J(t,e)}function I(y){n+=`${t.slice(y,e)}0`}function Z(y){throw new z(`Invalid character ${JSON.stringify(y)}`,e)}function ze(){throw new z(`Unexpected character ${JSON.stringify(t[e])}`,e)}function ee(){throw new z("Unexpected end of json string",t.length)}function U(){throw new z("Object key expected",e)}function ve(){throw new z("Colon expected",e)}function Fr(){let y=t.slice(e,e+6);throw new z(`Invalid unicode character "${y}"`,e)}}function Br(t,e){return t[e]==="*"&&t[e+1]==="/"}var jr=L("JSON_PARSE");function Vr(t,e={}){if(!t||typeof t!="string")return e;try{return JSON.parse(t)}catch(n){let o=zr(t);if(o!==void 0)return o;try{let r=at(t);return JSON.parse(r)}catch(r){let i=so(t);if(i&&i!==t)try{return JSON.parse(at(i))}catch{}return jr.error("Failed to parse JSON even with jsonrepair:",{originalError:n,repairError:r,jsonString:t}),e}}}var ro=Symbol("tool-args-parse-failed");function io(t){if(t==null)return{};let e=typeof t=="string"?t.trim():"";if(!e)return{};let n=Vr(e,ro);return n===ro?null:n&&typeof n=="object"&&!Array.isArray(n)?n:null}function zr(t){let e=so(t);if(e&&e!==t.trim())try{return JSON.parse(e)}catch{return}}function so(t){let e=t.trimStart();if(!e)return null;let n=e[0];if(n!=="{"&&n!=="[")return null;let o=0,r=!1,i=!1;for(let s=0;s<e.length;s++){let a=e[s];if(r){i?i=!1:a==="\\"?i=!0:a==='"'&&(r=!1);continue}if(a==='"'){r=!0;continue}if(a==="{"||a==="[")o++;else if(a==="}"||a==="]"){if(o--,o===0)return e.slice(0,s+1);if(o<0)return null}}return null}p();var Wr=/[A-Za-z\u00C0-\u024F]/g;function Hr(t){return t>=1024&&t<=1279||t>=1280&&t<=1327||t>=11744&&t<=11775||t>=42560&&t<=42655||t>=12352&&t<=12543||t>=13312&&t<=19903||t>=19968&&t<=40959||t>=63744&&t<=64255||t>=44032&&t<=55215}function ln(t){let e=t.codePointAt(0);return e!==void 0&&Hr(e)}function qr(t){let e=t.match(Wr)?.length??0;if(e<24)return!1;let n=0;for(let o of t)ln(o)&&n++;return n===0||e>=n*8}function lt(t){if(!t||!qr(t))return t;let e="",n=0,o=[...t];for(;n<o.length;){if(!ln(o[n])){e+=o[n],n++;continue}let r=n;for(;r>0&&o[r-1]===" ";)r--;let i=n+1;for(;i<o.length&&ln(o[i]);)i++;for(;i<o.length&&o[i]===" ";)i++;let s=r>0?o[r-1]:"",a=i<o.length?o[i]:"";(/[A-Za-z0-9]/.test(s)&&/[A-Za-z0-9]/.test(a)||o[r]===" "||o[i-1]===" ")&&(e+=" "),n=i,r<n&&o[r]===" "&&e.endsWith(" ")&&(e=e.slice(0,-1))}return e.replace(/ {2,}/g," ")}p();var ce=L("TAGGED_THINKING_PARSER"),Ie=["<think>","<thinking>"],Oe=["</think>","</thinking>"],Jr=Math.max(...Ie.map(t=>t.length),...Oe.map(t=>t.length));function xe(t,e,n){e&&t.push(n==="thought"?{text:e,thought:!0}:{text:e})}function ut(t,e,n){let o=t.length-e;return o<=0||o>Jr?!1:n.some(r=>r.startsWith(t.slice(e,e+o)))}function ct(t,e,n){return n.find(o=>t.startsWith(o,e))}function cn(t){if(!t)return t;let e=t;return e=e.replace(/<\/?think(?:ing)?>/gi,""),e=e.replace(/[A-Za-z]*long[_-]?message[_-]?THINKING/gi,""),e=e.replace(/\bM?long[_-]?message\b/gi,""),e=e.replace(/(^|[\s>])THINKING(?=[\sA-Z<]|$)/g,"$1"),e!==t&&(e=e.replace(/[ \t]{2,}/g," ")),e}function ao(t){let e=[];for(let n of t){if(n.thought===!0||typeof n.text!="string"){e.push(n);continue}let o=lt(cn(n.text));(o.length>0||/^\s+$/.test(n.text))&&e.push({text:o.length>0?o:n.text})}return e}var un=class{mode="text";buffer="";parse(e,n=!1){this.buffer+=e;let o=this.buffer.toLowerCase(),r=[],i="",s=0;for(;s<this.buffer.length;){if(this.mode==="text"){let a=ct(o,s,Ie);if(a){ce.debug(`taggedThinking: detected open tag "${a}" at offset ${s}`),xe(r,i,this.mode),i="",this.mode="thought",s+=a.length;continue}let l=ct(o,s,Oe);if(l){ce.debug(`taggedThinking: dropping orphan close tag "${l}" at offset ${s}`),xe(r,i,this.mode),i="",s+=l.length;continue}if(!n&&(ut(o,s,Ie)||ut(o,s,Oe)))break}else{let a=ct(o,s,Oe);if(a){ce.debug(`taggedThinking: detected close tag "${a}" at offset ${s}`),xe(r,i,this.mode),i="",this.mode="text",s+=a.length;continue}let l=ct(o,s,Ie);if(l){s+=l.length;continue}if(!n&&(ut(o,s,Oe)||ut(o,s,Ie)))break}i+=this.buffer[s],s+=1}return s<this.buffer.length?(xe(r,i,this.mode),this.buffer=this.buffer.slice(s),ce.debug(`taggedThinking: emitted ${r.length} part(s), buffered ${this.buffer.length} char(s)`),ao(r)):(this.buffer="",this.mode==="thought"&&i&&ce.warn(`taggedThinking: flushing ${i.length} chars of unclosed thought on stream end`),xe(r,i,this.mode),ce.debug(`taggedThinking: emitted ${r.length} part(s), flush complete`),ao(r))}};function lo(t){return new un().parse(t,!0)}p();function uo(t,e="auto"){return e==="openapi_30"?Yr(t):t}function Yr(t){let e=n=>{if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return n.map(e);let o=n,r={};if(Array.isArray(o.type)){let i=o.type;i.length===2&&i.includes("null")?(r.type=i.find(s=>s!=="null"),r.nullable=!0):r.type=i[0]}else o.type!==void 0&&(r.type=o.type);o.const!==void 0&&(r.enum=[o.const],delete r.const),typeof o.exclusiveMinimum=="number"&&(r.minimum=o.exclusiveMinimum,r.exclusiveMinimum=!0),typeof o.exclusiveMaximum=="number"&&(r.maximum=o.exclusiveMaximum,r.exclusiveMaximum=!0),Array.isArray(o.items)?delete r.items:typeof o.items=="object"&&o.items!==null&&(r.items=e(o.items)),Array.isArray(o.enum)&&(r.enum=o.enum.map(String));for(let[i,s]of Object.entries(o))i==="type"||i==="const"||i==="exclusiveMinimum"||i==="exclusiveMaximum"||i==="items"||i==="enum"||i==="$schema"||i==="$id"||i==="default"||i==="dependencies"||i==="patternProperties"||(r[i]=e(s));return r};return e(t)}p();function de(t){return!Number.isFinite(t)||t<=0?0:Math.ceil(t/4)}function dt(t){let e=t.candidates||0,n=t.thoughts||0;return n>e?e+n:Math.max(e,n)}function Xr(t){return t.total&&t.total>0?Math.max(t.total,(t.prompt||0)+dt(t)):(t.prompt||0)+dt(t)}function Qr(t){let e=Math.max(0,t.thoughtsTokens||0),n=dt({candidates:t.outputTokens||0,thoughts:e}),o=Math.max(t.totalTokens||0,(t.inputTokens||0)+n);return{...t,outputTokens:n,thoughtsTokens:e,totalTokens:o}}var W=L("CONVERTER"),Co="(attached media from previous tool call)";function yo(t,e={}){let n=t.prompt_tokens||0,o=t.completion_tokens||0,r=t.total_tokens||0,i=t.prompt_tokens_details,s=i?.cached_tokens??i?.cachedTokens??t.cached_tokens??t.prompt_cache_hit_tokens??t.cache_read_input_tokens??0,a=t.completion_tokens_details,l=a?.reasoning_tokens??a?.reasoningTokens??t.reasoning_tokens??0,c=Math.max(0,e.estimatedReasoningTokens??0),u=Math.max(0,e.estimatedContentTokens??0),f=l>0?l:c,d=o;f>0&&(o>=f?d=o:d=o+f),(u>0||c>0)&&(d=Math.max(d,u+(l>0?0:c),u+f)),r>n&&(n>0||o>0||f>0)&&(d=Math.max(d,r-n)),f===0&&c>0&&(f=c),f>d&&(f=d);let m=t.usage_is_incomplete===!0||o>0&&n===0||r>0&&n===0&&o===0,h=n,g=r;return(g===0&&(h>0||d>0)||g>0&&h>0&&g<h+d)&&(g=h+d),{promptTokenCount:h,candidatesTokenCount:d,totalTokenCount:g,cachedContentTokenCount:s,thoughtsTokenCount:f,...m?{usageIsIncomplete:!0}:{}}}var Zr=64,co=1024;function po(t,e){if(t.length===0)return"";if(e.emittedText.length===0)return e.emittedText=t,e.emittedLength=t.length,t;if(e.cumulativeMode){if(t.startsWith(e.emittedText)){let n=t.slice(e.emittedText.length);return e.emittedText=t,e.emittedLength=t.length,n}return e.emittedText.startsWith(t)?(W.debug(`normalizeStreamingTextDelta: cumulative rewind suppression (emitted=${e.emittedText.length}b, chunk=${t.length}b)`),""):(W.debug("normalizeStreamingTextDelta: exiting cumulative mode (chunk does not match prior accumulated text)"),e.cumulativeMode=!1,e.emittedText=t,e.emittedLength+=t.length,t)}if(t.length>e.emittedText.length&&t.startsWith(e.emittedText)){let n=e.emittedText.length,r=n>=co&&e.emittedLength>n?e.emittedLength:n;if(t.length>r){let i=t.slice(r);return e.emittedText=t,e.emittedLength=t.length,e.cumulativeMode=!0,W.debug(`normalizeStreamingTextDelta: entered cumulative mode (prefix overlap, baseline=${n}b sliceFrom=${r}b -> curr=${t.length}b)`),i}}return t===e.emittedText?t.length>=Zr?(e.cumulativeMode=!0,W.debug(`normalizeStreamingTextDelta: entered cumulative mode (exact repeat, ${t.length}b)`),""):(e.emittedLength+=t.length,t):(e.emittedText.length<co&&(e.emittedText+=t),e.emittedLength+=t.length,t)}function To(t){if(!t||typeof t!="object")return t;let e=JSON.parse(JSON.stringify(t)),n=o=>{if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return o.map(n);let r={};for(let[i,s]of Object.entries(o))if(i==="type"&&typeof s=="string"){let a=s.toLowerCase();a==="integer"?r[i]="integer":a==="number"?r[i]="number":r[i]=a}else i==="minimum"||i==="maximum"||i==="multipleOf"?typeof s=="string"&&!isNaN(Number(s))?r[i]=Number(s):r[i]=s:i==="minLength"||i==="maxLength"||i==="minItems"||i==="maxItems"?typeof s=="string"&&!isNaN(Number(s))?r[i]=parseInt(s,10):r[i]=s:typeof s=="object"?r[i]=n(s):r[i]=s;return r};return n(e)}async function ei(t,e="auto"){let n=[];for(let o of t){let r;if("tool"in o?r=await o.tool():r=o,r.functionDeclarations){for(let i of r.functionDeclarations)if(i.name&&i.description){let s;i.parametersJsonSchema?s={...i.parametersJsonSchema}:i.parameters&&(s=To(i.parameters)),s&&(s=uo(s,e)),n.push({type:"function",function:{name:i.name,description:i.description,parameters:s}})}}}return n}function ti(t,e,n={cleanOrphanToolCalls:!0}){let o=[];return oi(t,o),ri(t.contents,o,e),o=ho(o),n.cleanOrphanToolCalls&&(o=gi(o),o=ho(o)),o}function ni(t,e){let n=t.candidates?.[0],o=n?.content?.parts||[],r=[],i=[],s=[],a=0;for(let g of o)typeof g=="string"?i.push(g):"text"in g&&g.text?"thought"in g&&g.thought?r.push(g.text):i.push(g.text):"functionCall"in g&&g.functionCall&&(s.push({id:g.functionCall.id||`call_${a}`,type:"function",function:{name:g.functionCall.name||"",arguments:JSON.stringify(g.functionCall.args||{})}}),a+=1);let l={role:"assistant",content:i.join("")||null,refusal:null},c=r.join("");c&&(l.reasoning_content=c),s.length>0&&(l.tool_calls=s);let u=fi(n?.finishReason),f=t.usageMetadata,d={prompt_tokens:f?.promptTokenCount||0,completion_tokens:f?.candidatesTokenCount||0,total_tokens:f?.totalTokenCount||0};f?.cachedContentTokenCount!==void 0&&(d.prompt_tokens_details={cached_tokens:f.cachedContentTokenCount});let m=t.createTime?Number(t.createTime):Date.now(),h=Number.isFinite(m)?Math.floor(m/1e3):Math.floor(Date.now()/1e3);return{id:t.responseId||`gemini-${Date.now()}`,object:"chat.completion",created:h,model:t.modelVersion||e.model,choices:[{index:0,message:l,finish_reason:u,logprobs:null}],usage:d}}function oi(t,e){if(!t.config?.systemInstruction)return;let n=Eo(t.config.systemInstruction);n&&e.push({role:"system",content:n})}function ri(t,e,n){if(Array.isArray(t))for(let o of t)fo(o,e,n);else t&&fo(t,e,n)}function fo(t,e,n){if(typeof t=="string"){e.push({role:"user",content:t});return}if(!li(t))return;let o=t.parts||[],r=t.role==="model"?"assistant":"user",i=[],s=[],a=[],l=0,c=new Set,u=new Set,f=[];for(let d of o){if(typeof d=="string"){i.push({type:"text",text:d});continue}"text"in d&&"thought"in d&&d.thought&&r==="assistant"&&d.text&&s.push(d.text),"text"in d&&d.text&&!("thought"in d&&d.thought)&&i.push({type:"text",text:d.text});let m=So(d,n);if(m&&r==="user"&&i.push(m),"functionCall"in d&&d.functionCall&&r==="assistant"){let h=d.functionCall.id;if(h){if(c.has(h)){W.debug(`Dropping duplicate functionCall id=${h} while converting content`);continue}c.add(h)}a.push({id:h||`call_${l}`,type:"function",function:{name:d.functionCall.name||"",arguments:JSON.stringify(d.functionCall.args||{})}}),l+=1}if(d.functionResponse&&r==="user"){let h=d.functionResponse.id;if(h){if(u.has(h))continue;u.add(h)}let g=si(d.functionResponse,n);if(g){if(n.splitToolMedia&&Array.isArray(g.content)){let C=[],T=[];for(let S of g.content)S&&(S.type==="image_url"||S.type==="input_audio"||S.type==="video_url"||S.type==="file")?C.push(S):S&&S.type==="text"&&T.push(S);if(C.length>0){let S=T.map(R=>R.text).join(`
11
+ `);g.content=S||"[media attached in following user message]",f.push(...C)}}e.push(g)}}}if(f.length>0&&e.push({role:"user",content:[{type:"text",text:Co},...f]}),r==="assistant"){if(i.length===0&&a.length===0&&s.length===0)return;let m={role:"assistant",content:i.filter(g=>g.type==="text").map(g=>g.text).join("")||(s.length>0?"":null)};a.length>0&&(m.tool_calls=a);let h=s.join("");h&&(m.reasoning_content=h),e.push(m);return}i.length>0&&e.push({role:"user",content:i})}function ii(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){let e=t,n=e.output;if(typeof n=="string")return n;let o=e.error;if(typeof o=="string")return o}try{return JSON.stringify(t)??String(t)}catch{return String(t)}}function si(t,e){let n=ii(t.response),o=[];n&&o.push({type:"text",text:n});for(let r of t.parts||[]){if("text"in r&&typeof r.text=="string"){r.text.length>0&&o.push({type:"text",text:r.text});continue}let i=So(r,e);i&&o.push(i)}return o.length===0?{role:"tool",tool_call_id:t.id||"",content:""}:{role:"tool",tool_call_id:t.id||"",content:o}}function So(t,e){let{modalities:n}=e;if(t.inlineData?.mimeType&&t.inlineData?.data){let o=t.inlineData.mimeType,r=go(o),i=t.inlineData.displayName||o;if(r==="image")return n.image?{type:"image_url",image_url:{url:`data:${o};base64,${t.inlineData.data}`}}:re("image",i,e);if(o==="application/pdf")return n.pdf?{type:"file",file:{filename:t.inlineData.displayName||"document.pdf",file_data:`data:${o};base64,${t.inlineData.data}`}}:re("pdf",i,e);if(r==="audio"){if(!n.audio)return re("audio",i,e);let s=ai(o);if(s)return{type:"input_audio",input_audio:{data:`data:${o};base64,${t.inlineData.data}`,format:s}}}return r==="video"?n.video?{type:"video_url",video_url:{url:`data:${o};base64,${t.inlineData.data}`}}:re("video",i,e):{type:"text",text:`Unsupported inline media type: ${o} (${i}).`}}if(t.fileData?.mimeType&&t.fileData?.fileUri){let o=t.fileData.displayName||"file",r=t.fileData.fileUri,i=t.fileData.mimeType,s=go(i);if(s==="image")return n.image?{type:"image_url",image_url:{url:r}}:re("image",o,e);if(i==="application/pdf")return n.pdf?{type:"file",file:{filename:o,file_data:r}}:re("pdf",o,e);if(s==="video")return n.video?{type:"video_url",video_url:{url:r}}:re("video",o,e);let a=t.fileData.displayName?` (${t.fileData.displayName})`:"";return{type:"text",text:`Unsupported file media type: ${i}${a}.`}}return null}function re(t,e,n){W.warn(`Model '${n.model}' does not support ${t} input. Replacing with text placeholder: ${e}`);let o;return t==="pdf"?o=`This model does not support PDF input directly. The read_file tool cannot extract PDF content either. To extract text from the PDF file, try using skills if applicable, or guide user to install pdf skill by running this slash command:
12
+ /extensions install https://github.com/anthropics/skills:document-skills`:o=`This model does not support ${t} input. The read_file tool cannot process this type of file either. To handle this file, try using skills if applicable, or any tools installed at system wide, or let the user know you cannot process this type of file.`,{type:"text",text:`[Unsupported ${t} file: "${e}". ${o}]`}}function go(t){return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function ai(t){return t.includes("wav")?"wav":t.includes("mp3")||t.includes("mpeg")?"mp3":null}function li(t){return typeof t=="object"&&t!==null&&"role"in t&&"parts"in t&&Array.isArray(t.parts)}function Eo(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>Eo(e)).filter(Boolean).join(`
13
13
  `):typeof t=="object"&&t!==null&&"parts"in t&&t.parts?.map(n=>typeof n=="string"?n:"text"in n&&n.text||"").filter(Boolean).join(`
14
- `)||""}function pt(t,e,n=!0){if(e.taggedThinkingParser)return e.taggedThinkingParser.parse(t,n);if(e.responseParsingOptions?.taggedThinkingTags)return ao(t);if(!t)return[];let o=lt(un(t));return o?[{text:o}]:[]}function li(t,e){let n=t.choices?.[0],o=new ne;if(n){let r=[];if(!e.responseParsingOptions?.taggedThinkingTags){let i=n.message.reasoning_content??n.message.reasoning;i&&r.push({text:i,thought:!0})}if(n.message.content&&r.push(...pt(n.message.content,e)),n.message.tool_calls){for(let i of n.message.tool_calls)if(i.function){let s=ro(i.function.arguments);if(s===null)continue;r.push({functionCall:{id:i.id,name:i.function.name,args:s}})}}o.candidates=[{content:{parts:r,role:"model"},finishReason:Eo(n.finish_reason),index:0,safetyRatings:[]}]}else o.candidates=[];if(o.responseId=t.id,o.createTime=t.created?t.created.toString():new Date().getTime().toString(),o.modelVersion=e.model,o.promptFeedback={safetyRatings:[]},t.usage){let r=t.choices?.[0]?.message,i=r?.reasoning_content??r?.reasoning??"",s=typeof r?.content=="string"?r.content:"";o.usageMetadata=Co(t.usage,{estimatedReasoningTokens:de(i.length),estimatedContentTokens:de(s.length)})}return o}function ui(t,e){let n=t.choices?.[0],o=new ne,r=e.toolCallParser;if(!r)throw new Error("convertOpenAIChunkToGemini requires requestContext.toolCallParser \u2014 attach a fresh StreamingToolCallParser at stream start.");if(n){let i=[];if(!e.responseParsingOptions?.taggedThinkingTags){let c=n.delta?.reasoning_content??n.delta?.reasoning;if(c){let u=co(c,e.reasoningDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});u&&i.push({text:u,thought:!0})}}if(typeof n.delta?.content=="string"){let c=co(n.delta.content,e.textDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});(c||n.finish_reason)&&i.push(...pt(c,e,!!n.finish_reason))}else n.finish_reason&&i.push(...pt("",e,!0));if(n.delta?.tool_calls)for(let c of n.delta.tool_calls){let u=c.index??0;c.function?.arguments?r.addChunk(u,c.function.arguments,c.id,c.function.name):r.addChunk(u,"",c.id,c.function?.name)}let s=!1;if(n.finish_reason){s=r.hasIncompleteToolCalls();let c=r.getCompletedToolCalls();for(let u of c)u.name&&i.push({functionCall:{id:u.id||`call_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,name:u.name,args:u.args}})}let a=s&&n.finish_reason!=="length"?"length":n.finish_reason,l={content:{parts:i,role:"model"},index:0,safetyRatings:[]};a&&(l.finishReason=Eo(a)),o.candidates=[l]}else o.candidates=[];return o.responseId=t.id,o.createTime=t.created?t.created.toString():new Date().getTime().toString(),o.modelVersion=e.model,o.promptFeedback={safetyRatings:[]},t.usage&&(o.usageMetadata=Co(t.usage,di(e))),o}function ci(t){let e=t.toolCallParser;if(!e)return null;let n=[],o=e.getStrictCompletedToolCalls(),r=e.hasIncompleteToolCalls();for(let s of o)s.name&&n.push({functionCall:{id:s.id||`call_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,name:s.name,args:s.args}});if(n.push(...pt("",t,!0)),n.length===0&&!r)return null;let i=new ne;return i.candidates=[{content:{parts:n,role:"model"},index:0,safetyRatings:[],finishReason:r?_.MAX_TOKENS:_.STOP}],i.responseId=`stream-flush-${Date.now()}`,i.createTime=new Date().getTime().toString(),i.modelVersion=t.model,i.promptFeedback={safetyRatings:[]},i}function di(t){return{estimatedReasoningTokens:de(t.reasoningDeltaState?.emittedLength??0),estimatedContentTokens:de(t.textDeltaState?.emittedLength??0)}}function Eo(t){return t?{stop:_.STOP,length:_.MAX_TOKENS,content_filter:_.SAFETY,function_call:_.STOP,tool_calls:_.STOP}[t]||_.FINISH_REASON_UNSPECIFIED:_.FINISH_REASON_UNSPECIFIED}function pi(t){if(!t)return"stop";switch(t){case _.STOP:return"stop";case _.MAX_TOKENS:return"length";case _.SAFETY:case _.RECITATION:case _.BLOCKLIST:case _.PROHIBITED_CONTENT:case _.SPII:case _.IMAGE_SAFETY:case _.IMAGE_RECITATION:case _.IMAGE_PROHIBITED_CONTENT:case _.IMAGE_OTHER:return"content_filter";case _.NO_IMAGE:return"stop";default:return"stop"}}function cn(t){return t.role==="assistant"&&"tool_calls"in t&&Array.isArray(t.tool_calls)&&t.tool_calls.length>0}function go(t){if(t.role!=="user"||!("content"in t)||!Array.isArray(t.content))return!1;let e=t.content[0];return e?.type==="text"&&e.text===ho}function fi(t){let e=[],n=new Map,o=new Map,r=new Map,i=new Set,s=new Set;for(let a=0;a<t.length;a+=1){let l=t[a];if(cn(l)){let c=[],u=new Set;for(let C of l.tool_calls){let T=C.id;!T||s.has(T)||u.has(T)||(u.add(T),c.push(C))}let f=new Set,d=[],m=[],h=!1;for(let C=a+1;C<t.length;C+=1){let T=t[C];if(T.role==="tool"&&"tool_call_id"in T){if(!T.tool_call_id){h=!1;continue}u.has(T.tool_call_id)&&!f.has(T.tool_call_id)?(f.add(T.tool_call_id),d.push(C),h=!0):h=!1;continue}if(go(T)){h&&m.push(C);continue}if(!(T.role==="assistant"&&!cn(T)))break}let g=c.filter(C=>f.has(C.id));for(let C of g)s.add(C.id);n.set(a,g),o.set(a,d),r.set(a,m)}}for(let a=0;a<t.length;a+=1){if(i.has(a))continue;let l=t[a];if(cn(l)){let c=l.reasoning_content,u=n.get(a)??[];if(u.length>0){let f={...l};f.tool_calls=u,e.push(f);for(let d of o.get(a)??[]){let m=t[d];m&&(e.push(m),i.add(d))}for(let d of r.get(a)??[]){let m=t[d];m&&(e.push(m),i.add(d))}}else if(typeof l.content=="string"&&l.content.trim()||c){let f={...l};delete f.tool_calls,e.push(f)}else W.debug(`cleanOrphanedToolCalls: dropping assistant with ${l.tool_calls.length} orphaned tool call(s) and no text/reasoning content`)}else l.role==="tool"&&"tool_call_id"in l?W.debug(`cleanOrphanedToolCalls: dropping orphaned tool response ${l.tool_call_id||"<empty>"}`):go(l)?W.debug("cleanOrphanedToolCalls: dropping orphaned split tool media message"):e.push(l)}return e}function mo(t){let e=[];for(let n of t){if(n.role==="assistant"&&e.length>0){let o=e[e.length-1];if(o.role==="assistant"){let r="tool_calls"in o?o.tool_calls||[]:[],i="tool_calls"in n?n.tool_calls||[]:[],s=o.content,a=n.content,l=Array.isArray(s)||Array.isArray(a),c;if(l){let f=Array.isArray(s)?s:typeof s=="string"&&s?[{type:"text",text:s}]:[],d=Array.isArray(a)?a:typeof a=="string"&&a?[{type:"text",text:a}]:[];c=[...f,...d]}else c=[typeof s=="string"?s:"",typeof a=="string"?a:""].filter(Boolean).join("")||null;let u=[...r,...i];o.content=c||null,u.length>0&&(o.tool_calls=u);continue}}e.push(n)}return e}var ft={convertGeminiToolParametersToOpenAI:yo,convertGeminiToolsToOpenAI:Zr,convertGeminiRequestToOpenAI:ei,convertGeminiResponseToOpenAI:ti,convertOpenAIResponseToGemini:li,convertOpenAIChunkToGemini:ui,flushOpenAIStreamToGemini:ci};p();p();var Tl=new Set(["ECONNRESET","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET","ConnectionClosed","ConnectionReset","ConnectionTimedOut"]),Ao=new Set(["EAI_AGAIN","ECONNREFUSED","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","UND_ERR_CONNECT_TIMEOUT","ConnectionRefused","FailedToOpenSocket","HostUnreachable","NetworkUnreachable"]);var dn="MATILDA_BASE_URL",gi=new Set(["localhost","127.0.0.1","[::1]"]);function mt(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function bl(t){try{let{host:e}=new URL(mt(t));return e===new URL(_e).host?"Matilda":e}catch{return t}}function bo(t){let e;try{e=new URL(mt(t))}catch{return}if(!(!(e.protocol==="https:"||e.protocol==="http:"&&gi.has(e.hostname))||e.username||e.password||e.search||e.hash))return`${e.origin}${e.pathname.replace(/\/+$/,"")}/api/v1/code`}function Mo(t=process.env){let e=t[dn]?.trim();return e?bo(e):void 0}function Pe(t,e=process.env){let n=Mo(e);if(!n||!t)return!1;try{return new URL(t).origin===new URL(n).origin}catch{return!1}}function _o(t){return t.apiKeyEnvKey===rt||mi(t.baseUrl)}function mi(t){if(!t)return!0;let e=t.endsWith("/")?t.slice(0,-1):t,n=null;try{n=new URL(e).hostname.toLowerCase()}catch{n=null}return n!==null&&(n==="matilda.maincode.com"||n.endsWith(".matilda.maincode.com")||n==="localhost"||n==="127.0.0.1"||n.endsWith(".matilda")||n==="core-api.matilda")||Pe(e)}var gt="its certificate is not from an authority this computer trusts. If it uses a private certificate authority, or your network inspects secure connections, set NODE_EXTRA_CA_CERTS to that authority's certificate file.",hi=new Map([["UNABLE_TO_GET_ISSUER_CERT_LOCALLY",gt],["UNABLE_TO_VERIFY_LEAF_SIGNATURE",gt],["SELF_SIGNED_CERT_IN_CHAIN",gt],["DEPTH_ZERO_SELF_SIGNED_CERT",gt],["CERT_HAS_EXPIRED","its certificate has expired."],["ERR_TLS_CERT_ALTNAME_INVALID","its certificate is for another name. Check the address."]]),Ro="its name does not resolve. Check the address and your network.",vo="it refused the connection. Check the address, and that the server is running.",Ci=new Map([["ENOTFOUND",Ro],["EAI_AGAIN",Ro],["ECONNREFUSED",vo],["ConnectionRefused",vo],["UND_ERR_CONNECT_TIMEOUT","it did not answer. Check your network, VPN and proxy."]]),ko=5;function De(t,e){if($(t)!==void 0)return;let n=t;for(let o=0;o<=ko;o++){if(typeof n!="object"||n===null)return;let{code:r,cause:i}=n;if(typeof r=="string"){let s=mt(e),a=hi.get(r);if(a)return new qe(`Could not connect securely to ${s}: ${a}`,r);if(Ao.has(r))return new qe(`Could not reach ${s}: ${Ci.get(r)??"the network cannot reach it. Check your network, VPN and proxy."}`,r)}n=i}}function pn(t,e){let n=t;for(let o=0;o<=ko;o++){if(typeof n!="object"||n===null)return;let{name:r,cause:i}=n;if(r==="TimeoutError")return new qe(`${mt(e)} did not answer in time. Check your network, VPN and proxy.`,"ETIMEDOUT");n=i}}function yi(t=process.env){let e=t[dn]?.trim();if(e&&!bo(e))throw new He(`${dn} must be the HTTPS address of your Matilda deployment, such as https://matilda.example.com. HTTP is accepted only for localhost.`)}function G(t=process.env){return yi(t),Mo(t)??_e}p();p();p();jt();var Ti=new Set(["service.version","service.instance.id","session.id"]);function ie(t,e){Xe.warn(t),e?.push(t)}function wo(t,e){if(!t)return{};let n={};for(let o of t.split(",")){let r=o.trim();if(!r)continue;let i=r.indexOf("=");if(i<0){ie(`Skipping malformed OTEL_RESOURCE_ATTRIBUTES entry: "${r}" (hint: percent-encode literal commas as %2C)`,e);continue}let s=r.slice(0,i).trim();if(!s)continue;let a=r.slice(i+1).trim(),l;try{l=decodeURIComponent(s)}catch{ie(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES key "${s}", using raw key`,e),l=s}let c;try{c=decodeURIComponent(a)}catch{ie(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${l}", using raw value`,e),c=a}n[l]=c}return n}function fn(t,e,n){for(let o of Ti)o in t&&(ie(`${e} cannot override reserved key "${o}"; ignoring`,n),delete t[o]);return t}function xo(t,e){if(t==null)return{};if(typeof t!="object"||Array.isArray(t))return ie("settings.telemetry.resourceAttributes must be an object; ignoring",e),{};let n={};for(let[o,r]of Object.entries(t)){let i=o.trim();if(!i){ie("settings.telemetry.resourceAttributes has an empty or whitespace-only key; ignoring",e);continue}typeof r=="string"?n[i]=r:ie(`settings.telemetry.resourceAttributes value for "${i}" must be a string (got ${typeof r}); ignoring`,e)}return n}function Ue(t){if(t!==void 0)return t==="true"||t==="1"}async function Si(t){let e=t.argv??{},n=t.env??{},o=t.settings??{},r=e.telemetry??Ue(n.MATILDA_TELEMETRY_ENABLED)??o.enabled,i=e.telemetryOtlpEndpoint??n.MATILDA_TELEMETRY_OTLP_ENDPOINT??n.OTEL_EXPORTER_OTLP_ENDPOINT??o.otlpEndpoint,s=e.telemetryOtlpProtocol??n.MATILDA_TELEMETRY_OTLP_PROTOCOL??o.otlpProtocol,a=["grpc","http"].find(b=>b===s);if(s!==void 0&&a===void 0)throw new He(`Invalid telemetry OTLP protocol: ${String(s)}. Valid values are: grpc, http`);let l=e.telemetryLogPrompts??Ue(n.MATILDA_TELEMETRY_LOG_PROMPTS)??o.logPrompts,c=Ue(n.MATILDA_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES)??o.includeSensitiveSpanAttributes??!1,u=e.telemetryOutfile??n.MATILDA_TELEMETRY_OUTFILE??o.outfile,f=n.MATILDA_TELEMETRY_OTLP_TRACES_ENDPOINT??n.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT??o.otlpTracesEndpoint,d=n.MATILDA_TELEMETRY_OTLP_LOGS_ENDPOINT??n.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT??o.otlpLogsEndpoint,m=n.MATILDA_TELEMETRY_OTLP_METRICS_ENDPOINT??n.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT??o.otlpMetricsEndpoint,h=[],g=fn(wo(n.OTEL_RESOURCE_ATTRIBUTES,h),"OTEL_RESOURCE_ATTRIBUTES",h),C=fn(xo(o.resourceAttributes,h),"settings.telemetry.resourceAttributes",h),T={...g,...C},S=n.OTEL_SERVICE_NAME?.trim();S&&(T["service.name"]=S);let R=Object.keys(T).length?T:void 0,w=Ue(n.MATILDA_TELEMETRY_METRICS_INCLUDE_SESSION_ID)??o.metrics?.includeSessionId??!1;return{enabled:r,otlpEndpoint:i,otlpProtocol:a,otlpTracesEndpoint:f,otlpLogsEndpoint:d,otlpMetricsEndpoint:m,logPrompts:l,includeSensitiveSpanAttributes:c,outfile:u,resourceAttributes:R,metrics:{includeSessionId:w},resourceAttributeWarnings:h.length?h:void 0}}p();jt();import*as Q from"node:fs";import*as Gt from"node:path";p();p();p();p();jt();p();import{AsyncLocalStorage as Ei}from"node:async_hooks";var Io=new Ei;p();import*as K from"node:path";import{promises as yt}from"node:fs";p();p();import Ai from"crypto";var Ct=new Uint8Array(256),ht=Ct.length;function gn(){return ht>Ct.length-16&&(Ai.randomFillSync(Ct),ht=0),Ct.slice(ht,ht+=16)}p();var k=[];for(let t=0;t<256;++t)k.push((t+256).toString(16).slice(1));function Oo(t,e=0){return k[t[e+0]]+k[t[e+1]]+k[t[e+2]]+k[t[e+3]]+"-"+k[t[e+4]]+k[t[e+5]]+"-"+k[t[e+6]]+k[t[e+7]]+"-"+k[t[e+8]]+k[t[e+9]]+"-"+k[t[e+10]]+k[t[e+11]]+k[t[e+12]]+k[t[e+13]]+k[t[e+14]]+k[t[e+15]]}p();p();import Ri from"crypto";var mn={randomUUID:Ri.randomUUID};function vi(t,e,n){if(mn.randomUUID&&!e&&!t)return mn.randomUUID();t=t||{};let o=t.random||(t.rng||gn)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,e){n=n||0;for(let r=0;r<16;++r)e[n+r]=o[r];return e}return Oo(o)}var hn=vi;import*as X from"os";var Tt=L("OPENAI_LOGGER"),bi="########",Mi=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function _i(t,e){let n=e||process.cwd();if(!t)return K.join(n,"logs","openai");let o=t;return t==="~"||t.startsWith("~/")?o=K.join(X.homedir(),t.slice(1)):K.isAbsolute(t)||(o=K.resolve(n,t)),K.normalize(o)}function Po(t){return t&&t.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function ki(t){let e=t.split("#");if(e.length!==3)return;let[,n,o]=e;if(!(!n||!o||!/^\d+$/.test(o)))return`subagent-${n}`}function wi(t){if(t)return le(t)?Po(t):Po(ki(t))}function xi(t){if(!t)return;let e=t.indexOf(bi);if(e>0)return t.slice(0,e);if(Mi.test(t))return t;let n=t.split("#");if(n.length>=3&&n[0])return n[0]}function Ii(t){let e=t?.trim(),n=xi(e);return!e&&!n?null:{...e?{promptId:e}:{},...n?{sessionId:n}:{}}}var Ne=class{logDir;initialized=!1;constructor(e,n){this.logDir=_i(e,n)}async initialize(){if(!this.initialized)try{await yt.mkdir(this.logDir,{recursive:!0}),this.initialized=!0}catch(e){throw Tt.error("Failed to initialize OpenAI logger:",e),new Error(`Failed to initialize OpenAI logger: ${e}`)}}async logInteraction(e,n,o,r){this.initialized||await this.initialize();let i=new Date().toISOString().replace(/:/g,"-"),s=hn().slice(0,8),a=wi(r),l=a?`openai-${i}-${s}-${a}.json`:`openai-${i}-${s}.json`,c=K.join(this.logDir,l),u={timestamp:new Date().toISOString(),request:e,response:n||null,error:o?{message:o.message,stack:o.stack}:null,context:Ii(r),system:{hostname:X.hostname(),platform:X.platform(),release:X.release(),nodeVersion:process.version}};try{return await yt.writeFile(c,JSON.stringify(u,null,2),"utf-8"),c}catch(f){throw Tt.error("Failed to write OpenAI log file:",f),new Error(`Failed to write OpenAI log file: ${f}`)}}async getLogFiles(e){this.initialized||await this.initialize();try{let o=(await yt.readdir(this.logDir)).filter(r=>r.startsWith("openai-")&&r.endsWith(".json")).map(r=>K.join(this.logDir,r)).sort().reverse();return e?o.slice(0,e):o}catch(n){return n.code==="ENOENT"?[]:(Tt.error("Failed to read OpenAI log directory:",n),[])}}async readLogFile(e){try{let n=await yt.readFile(e,"utf-8");return JSON.parse(n)}catch(n){throw Tt.error(`Failed to read log file ${e}:`,n),new Error(`Failed to read log file: ${n}`)}}},ru=new Ne;p();var Oi="MATILDA_CODE_PROFILE_RUNTIME";function Do(t=process.env){return t[Oi]==="1"}var yn=class{enabled;now;startedAt;requestIndex=0;openAIWireRequestIndex=0;requests=[];openaiWireRequests=[];tools=Uo();constructor(e={}){this.enabled=e.enabled??Do(),this.now=e.now??(()=>new Date().toISOString()),this.startedAt=this.now()}reset(e={}){this.enabled=e.enabled??Do(),this.startedAt=this.now(),this.requestIndex=0,this.openAIWireRequestIndex=0,this.requests=[],this.openaiWireRequests=[],this.tools=Uo()}isEnabled(){return this.enabled}recordGenerateContentRequest(e,n){this.enabled&&(this.requestIndex+=1,this.requests.push({index:this.requestIndex,timestamp:this.now(),source:n.source,model:e.model,stream:n.stream,serializedBytes:D(Fi(e)),contents:No(e.contents),systemInstructionBytes:Ui(e.config?.systemInstruction),generationConfigBytes:D(Lo(e.config)),tools:Li(e.config?.tools)}))}recordOpenAIWireRequest(e){this.enabled&&(this.openAIWireRequestIndex+=1,this.openaiWireRequests.push({index:this.openAIWireRequestIndex,timestamp:this.now(),...Pi(e)}))}recordToolUse(e,n){if(!this.enabled)return;let o=D(n),r=this.getToolNameDiagnostics(e);r.uses+=1,r.argBytes+=o,r.maxArgBytes=Math.max(r.maxArgBytes,o),this.tools.toolUseCount+=1,this.tools.totalToolUseArgBytes+=o,this.tools.maxToolUseArgBytes=Math.max(this.tools.maxToolUseArgBytes,o)}recordToolResult(e){if(!this.enabled)return;let n=this.getToolNameDiagnostics(e.name);n.results+=1,n.resultBytes+=e.resultBytes,n.maxResultBytes=Math.max(n.maxResultBytes,e.resultBytes),e.isError&&(n.errors+=1,this.tools.toolResultErrorCount+=1),this.tools.toolResultCount+=1,this.tools.totalToolResultBytes+=e.resultBytes,this.tools.maxToolResultBytes=Math.max(this.tools.maxToolResultBytes,e.resultBytes)}snapshot(){return{enabled:this.enabled,startedAt:this.startedAt,requests:this.requests.map(e=>({...e,contents:{...e.contents,roleCounts:{...e.contents.roleCounts}},tools:{...e.tools}})),openaiWireRequests:this.openaiWireRequests.map(e=>({...e,messageBytesByRole:{...e.messageBytesByRole},topLevelKeys:[...e.topLevelKeys]})),tools:{...this.tools,byName:Object.fromEntries(Object.entries(this.tools.byName).map(([e,n])=>[e,{...n}]))}}}getToolNameDiagnostics(e){let n=this.tools.byName[e];if(n)return n;let o=Di();return this.tools.byName[e]=o,o}},Tn=new yn;function Pi(t){let e=pe(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],r={};for(let i of n){let s=pe(i),a=typeof s.role=="string"?s.role:"unknown";r[a]=(r[a]??0)+D(s.content)}return{model:typeof e.model=="string"?e.model:"unknown",stream:e.stream===!0,bodyBytes:D(t),messageCount:n.length,messageBytesByRole:r,toolsCount:o.length,toolSchemaBytes:D(o),topLevelKeys:Object.keys(e).sort()}}function Uo(){return{toolUseCount:0,toolResultCount:0,toolResultErrorCount:0,totalToolUseArgBytes:0,maxToolUseArgBytes:0,totalToolResultBytes:0,maxToolResultBytes:0,byName:Object.create(null)}}function Di(){return{uses:0,argBytes:0,maxArgBytes:0,results:0,errors:0,resultBytes:0,maxResultBytes:0}}function No(t){let e={count:0,roleCounts:{},partCount:0,textBytes:0,functionCallCount:0,functionCallArgBytes:0,functionResponseCount:0,functionResponseBytes:0,inlineDataCount:0,inlineDataBytes:0,fileDataCount:0},n=Array.isArray(t)?t:t==null?[]:[t];for(let o of n){if(e.count+=1,typeof o=="string"){e.roleCounts.user=(e.roleCounts.user??0)+1,e.partCount+=1,e.textBytes+=D(o);continue}let r=pe(o),i=typeof r.role=="string"?r.role:"unknown";e.roleCounts[i]=(e.roleCounts[i]??0)+1;let s=Array.isArray(r.parts)?r.parts:[];Ni(s,e)}return e}function Ui(t){return No(t).textBytes}function Ni(t,e){for(let n of t){if(e.partCount+=1,typeof n=="string"){e.textBytes+=D(n);continue}let o=pe(n);typeof o.text=="string"&&(e.textBytes+=D(o.text));let r=Cn(o.functionCall);r&&(e.functionCallCount+=1,e.functionCallArgBytes+=D(r.args));let i=Cn(o.functionResponse);i&&(e.functionResponseCount+=1,e.functionResponseBytes+=D(i.response)+D(i.parts));let s=Cn(o.inlineData);s&&(e.inlineDataCount+=1,e.inlineDataBytes+=D(s.data)),o.fileData&&(e.fileDataCount+=1)}}function Li(t){let e=Array.isArray(t)?t:[],n=0;for(let o of e){let r=pe(o),i=Array.isArray(r.functionDeclarations)?r.functionDeclarations:[];n+=i.length}return{count:e.length,functionDeclarationCount:n,schemaBytes:D(e)}}function Fi(t){return{model:t.model,contents:t.contents,config:Lo(t.config)}}function Lo(t){if(!t)return;let e=pe(t),n={};for(let[o,r]of Object.entries(e))o!=="abortSignal"&&(n[o]=r);return n}function D(t){return t==null?0:typeof t=="string"?Buffer.byteLength(t,"utf8"):Buffer.byteLength(Gi(t),"utf8")}function Gi(t){try{return JSON.stringify(t)??""}catch{return"[unserializable]"}}function pe(t){return typeof t=="object"&&t!==null?t:{}}function Cn(t){return typeof t=="object"&&t!==null?t:null}p();function Fo(t){let e=t.candidates?.[0]?.content?.parts;return!e||e.length===0?!1:e.some(Ki)}function Ki(t){if(t===null||typeof t!="object")return!1;let e=t;return typeof e.text=="string"&&e.text.length>0||e.functionCall!==void 0||e.inlineData!==void 0||e.executableCode!==void 0||e.thought===!0}function Go(){let t=zn.getStore();return{attempt:t?.attempt??1,requestSetupMs:t?.requestSetupMs,retryTotalDelayMs:t?.retryTotalDelayMs}}var se=L("LOGGING_CONTENT_GENERATOR"),$i=4096,Ko="...[truncated]",Bi=$i-Ko.length,Le=class{constructor(e,n,o){this.wrapped=e;this.config=n;this.modalities=o.modalities,this.splitToolMedia=o.splitToolMedia,this.generatorAuthType=o.authType,o.enableOpenAILogging&&(this.openaiLogger=new Ne(o.openAILoggingDir,n.getWorkingDir()),this.schemaCompliance=o.schemaCompliance)}openaiLogger;schemaCompliance;modalities;splitToolMedia;generatorAuthType;getWrapped(){return this.wrapped}logApiRequest(e,n,o){let r=JSON.stringify(e);Vt(this.config,new Ht(n,o,r,q.getStore()))}_logApiResponse(e,n,o,r,i,s){Wt(this.config,new Yt(e,o,n,r,this.generatorAuthType,i,s,q.getStore()))}_logApiError(e,n,o,r,i){let s=qn(o),a=Me(o),l=o?.requestID||o?.request_id||e,c=$(o);zt(this.config,new qt({responseId:l,model:r,durationMs:n,promptId:i,authType:this.generatorAuthType,errorMessage:s,errorType:a,statusCode:c,subagentName:q.getStore()}))}safelyLogApiError(e,n,o,r,i){try{this._logApiError(e,n,o,r,i)}catch(s){se.warn("Failed to log API error:",s)}}safelyLogApiResponse(e,n,o,r,i,s){try{this._logApiResponse(e,n,o,r,i,s)}catch(a){se.warn("Failed to log API response:",a)}}getClientVisibleModelId(e,n){return("isManagedMatildaModel"in this.config&&typeof this.config.isManagedMatildaModel=="function"?this.config.isManagedMatildaModel(e):!1)&&"getPublicModelId"in this.config&&typeof this.config.getPublicModelId=="function"?this.config.getPublicModelId(e):n||e}async generateContent(e,n){let o=Go(),r=tt(e.model,n);try{r.setAttribute("llm_request.stream",!1)}catch{}let i=Bt.setSpan(V.active(),r),s=Date.now(),a=le(n),l=this.startCaptureSession();try{Tn.recordGenerateContentRequest(e,{stream:!1,source:"generateContent"}),a||(Qe(this.config,r,e.config?.systemInstruction),Ze(this.config,r,e.config?.tools));let c=await V.with(i,async()=>{a||this.logApiRequest(this.toContents(e.contents),e.model,n);let u=await l.wrap(()=>this.wrapped.generateContent(e,n)),f=Date.now()-s,d=a?void 0:this.extractResponseText(u);a||et(this.config,r,d),this.safelyLogApiResponse(u.responseId??"",f,this.getClientVisibleModelId(e.model,u.modelVersion),n,u.usageMetadata,d);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),u,void 0,n)}catch(m){se.warn("Failed to log OpenAI interaction:",m)}return u});return oe(r,{success:!0,inputTokens:c.usageMetadata?.promptTokenCount,outputTokens:c.usageMetadata?.candidatesTokenCount,cachedInputTokens:c.usageMetadata?.cachedContentTokenCount,durationMs:Date.now()-s,responseId:c.responseId||void 0,finishReason:c.candidates?.[0]?.finishReason||void 0,thoughtsTokenCount:c.usageMetadata?.thoughtsTokenCount,subagentName:q.getStore()||void 0,...o}),c}catch(c){let u=Date.now()-s,f=e.config?.abortSignal?.aborted??!1;throw oe(r,{success:!1,durationMs:u,error:f?ot:nt,errorType:Me(c),errorStatusCode:$(c),subagentName:q.getStore()||void 0,...o}),await V.with(i,async()=>{this.safelyLogApiError("",u,c,this.getClientVisibleModelId(e.model),n);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,c,n)}catch(d){se.warn("Failed to log OpenAI interaction:",d)}}),c}}async generateContentStream(e,n){let o=Go(),r=tt(e.model,n);try{r.setAttribute("llm_request.stream",!0)}catch{}let i=Bt.setSpan(V.active(),r),s=Date.now(),a=le(n),l=this.startCaptureSession(),c;try{Tn.recordGenerateContentRequest(e,{stream:!0,source:"generateContentStream"}),a||(Qe(this.config,r,e.config?.systemInstruction),Ze(this.config,r,e.config?.tools)),c=await V.with(i,async()=>(a||this.logApiRequest(this.toContents(e.contents),e.model,n),l.wrap(()=>this.wrapped.generateContentStream(e,n))))}catch(f){let d=Date.now()-s;V.with(i,()=>this.safelyLogApiError("",d,f,e.model,n));let m=e.config?.abortSignal?.aborted??!1;oe(r,{success:!1,durationMs:d,error:m?ot:nt,errorType:Me(f),errorStatusCode:$(f),subagentName:q.getStore()||void 0,...o});try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,f,n)}catch(h){se.warn("Failed to log OpenAI interaction:",h)}throw f}let u;if(this.openaiLogger)try{u=await l.resolve(e)}catch(f){se.warn("Failed to resolve OpenAI request:",f)}return V.with(i,()=>this.loggingStreamWrapper(c,s,n,e.model,u,r,i,e.config?.abortSignal,o))}startCaptureSession(){let e,n=!this.openaiLogger;return{wrap:o=>n?o():Io.run(r=>{e=r},o),resolve:async o=>this.openaiLogger?e??await this.buildOpenAIRequestForLogging(o):void 0}}async*loggingStreamWrapper(e,n,o,r,i,s,a,l,c){let u=le(o),f=!u||!!this.openaiLogger,d=[],m="",h="",g,C=!1,T,S=!1,R,w=q.getStore(),b,x=!1,j=I=>a?V.with(a,I):I(),Kt=5*6e4,P,ae=s?()=>{x||(P!==void 0&&clearTimeout(P),P=setTimeout(()=>{try{s.setAttribute("stream.timed_out",!0)}catch{}oe(s,{success:!1,durationMs:Date.now()-n,error:"Stream span timed out (idle)",responseId:m||void 0,subagentName:w||void 0,...c}),x=!0},Kt),P.unref())}:void 0;try{for await(let U of e){!m&&U.responseId&&(m=U.responseId),!h&&U.modelVersion&&(h=U.modelVersion),f&&d.push(U),U.usageMetadata&&(g=U.usageMetadata);let ve=U.candidates?.[0];ve?.finishReason&&(T=ve.finishReason),U.functionCalls?.length&&(S=!0),b===void 0&&Fo(U)&&(b=Date.now()-n),ae?.(),yield U,P!==void 0&&(clearTimeout(P),P=void 0)}P!==void 0&&(clearTimeout(P),P=void 0);let I=Date.now()-n,Z=f?this.consolidateGeminiResponsesForLogging(d):void 0,ze=u?void 0:this.extractResponseText(Z),ee=!T&&!S?new Error("Model stream ended without a finish reason"):void 0;ee&&(C=!0,R=ee),x||(ee?(j(()=>this.safelyLogApiError(m,I,ee,this.getClientVisibleModelId(r,h),o)),await j(()=>this.safelyLogOpenAIInteraction(i,Z,ee,o))):(j(()=>this.safelyLogApiResponse(m,I,this.getClientVisibleModelId(r,h),o,g,ze)),!u&&s&&et(this.config,s,ze),await j(()=>this.safelyLogOpenAIInteraction(i,Z,void 0,o))))}catch(I){if(C=!0,R=I,!x){let Z=Date.now()-n;j(()=>this.safelyLogApiError(m,Z,I,this.getClientVisibleModelId(r,h),o)),await j(()=>this.safelyLogOpenAIInteraction(i,void 0,I,o))}throw I}finally{if(P!==void 0&&clearTimeout(P),s&&!x){let I=l?.aborted??!1;oe(s,{success:!C,inputTokens:g?.promptTokenCount,outputTokens:g?.candidatesTokenCount,cachedInputTokens:g?.cachedContentTokenCount,ttftMs:b,durationMs:Date.now()-n,error:C?I?ot:nt:void 0,responseId:m||void 0,finishReason:T,thoughtsTokenCount:g?.thoughtsTokenCount,subagentName:w||void 0,errorType:R?Me(R):void 0,errorStatusCode:R?$(R):void 0,...c})}}}async buildOpenAIRequestForLogging(e){if(!this.openaiLogger)return;let n=this.createLoggingRequestContext(e.model),o=ft.convertGeminiRequestToOpenAI(e,n,{cleanOrphanToolCalls:!1}),r={model:e.model,messages:o};return e.config?.tools&&(r.tools=await ft.convertGeminiToolsToOpenAI(e.config.tools,this.schemaCompliance??"auto")),e.config?.temperature!==void 0&&(r.temperature=e.config.temperature),e.config?.topP!==void 0&&(r.top_p=e.config.topP),e.config?.maxOutputTokens!==void 0&&(r.max_tokens=e.config.maxOutputTokens),e.config?.presencePenalty!==void 0&&(r.presence_penalty=e.config.presencePenalty),e.config?.frequencyPenalty!==void 0&&(r.frequency_penalty=e.config.frequencyPenalty),r}createLoggingRequestContext(e){return{model:e,modalities:this.modalities??{},splitToolMedia:this.splitToolMedia??!0,startTime:0}}async logOpenAIInteraction(e,n,o,r){if(!this.openaiLogger||!e)return;let i=n?this.convertGeminiResponseToOpenAIForLogging(n,e):void 0;await this.openaiLogger.logInteraction(e,i,o instanceof Error?o:o?new Error(String(o)):void 0,r)}async safelyLogOpenAIInteraction(e,n,o,r){try{await this.logOpenAIInteraction(e,n,o,r)}catch(i){se.warn("Failed to log OpenAI interaction:",i)}}convertGeminiResponseToOpenAIForLogging(e,n){let o=new ne;return Object.assign(o,e),o.modelVersion=this.getClientVisibleModelId(n.model,e.modelVersion),ft.convertGeminiResponseToOpenAI(o,this.createLoggingRequestContext(n.model))}consolidateGeminiResponsesForLogging(e){if(e.length===0)return;let n=new ne,o=[],r=new Map,i,s;for(let c of e){c.usageMetadata&&(s=c.usageMetadata);let u=c.candidates?.[0];u?.finishReason&&(i=u.finishReason);let f=u?.content?.parts??[];for(let d of f){if(typeof d=="string"){o.push({text:d});continue}if("text"in d){d.text&&o.push({text:d.text,...d.thought?{thought:!0}:{},...d.thoughtSignature?{thoughtSignature:d.thoughtSignature}:{}});continue}if("functionCall"in d&&d.functionCall){let m=d.functionCall.id||d.functionCall.name||"tool_call",h=r.get(m),g={functionCall:d.functionCall};h!==void 0?o[h]=g:(r.set(m,o.length),o.push(g));continue}if("functionResponse"in d&&d.functionResponse){o.push({functionResponse:d.functionResponse});continue}o.push(d)}}let a=e[e.length-1],l=a.candidates?.[0];return n.responseId=a.responseId,n.createTime=a.createTime,n.modelVersion=a.modelVersion,n.promptFeedback=a.promptFeedback,n.usageMetadata=s,n.candidates=[{content:{role:l?.content?.role||"model",parts:o},...i?{finishReason:i}:{},index:0,safetyRatings:l?.safetyRatings||[]}],n}extractResponseText(e){let n=e?.candidates?.[0]?.content?.parts;if(!n?.length)return;let o="",r=!1,i=!1,s=a=>{if(r=!0,i)return;let l=Bi-o.length;if(a.length<=l){o+=a;return}o+=a.slice(0,Math.max(0,l)),i=!0};for(let a of n){if(typeof a=="string"){s(a);continue}"text"in a&&typeof a.text=="string"&&!("thought"in a&&a.thought)&&s(a.text)}if(r)return i?`${o}${Ko}`:o}async countTokens(e){return this.wrapped.countTokens(e)}async embedContent(e){return this.wrapped.embedContent(e)}useSummarizedThinking(){return this.wrapped.useSummarizedThinking()}toContents(e){return Array.isArray(e)?e.map(n=>this.toContent(n)):[this.toContent(e)]}toContent(e){return Array.isArray(e)?{role:"user",parts:this.toParts(e)}:typeof e=="string"?{role:"user",parts:[{text:e}]}:"parts"in e?{...e,parts:e.parts?this.toParts(e.parts.filter(n=>n!=null)):[]}:{role:"user",parts:[this.toPart(e)]}}toParts(e){return e.map(n=>this.toPart(n))}toPart(e){if(typeof e=="string")return{text:e};if("thought"in e&&e.thought){let n=`[Thought: ${e.thought}]`,o={...e};if(delete o.thought,"functionCall"in o||"functionResponse"in o||"inlineData"in o||"fileData"in o)return o;let i=o.text,s=i?String(i):"",a=s?`${s}
15
- ${n}`:n;return{...o,text:a}}return e}};p();var Sn="x-matilda-organization-id",ji=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Pu(t){if(t!==void 0){if(typeof t!="string"||t.length!==36||!ji.test(t))throw new Error("--organization-id must be a single UUID.");return t.toLowerCase()}}function En(t){if(t)try{let e=new URL(t);if((e.hostname==="matilda.maincode.com"&&e.protocol==="https:"&&!e.port||e.hostname==="core-api.matilda"&&(e.protocol==="http:"||e.protocol==="https:"))&&!e.username&&!e.password&&!e.search&&!e.hash)return e}catch{}}function An(t,e,n){if(e===void 0&&n===void 0)return;let o=En(t.baseUrl);if(!o||o.pathname.replace(/\/$/,"")!=="/api/v1/code"||t.authType!=="openai")throw new Error("Organization selection and credit spending require the first-party Matilda Core Code endpoint.")}function $o(t){for(let e of Object.keys(t??{})){let n=e.toLowerCase();if(n===Sn)throw new Error("Select the organization with --organization-id, not customHeaders.");if(n.startsWith("x-matilda-usage-credit-"))throw new Error("Code credit spending through customHeaders is not supported.")}}function Du(t,e,n,o,r){An(n,o,r);let i=En(n.baseUrl),s=En(t instanceof Request?t.url:String(t));if(!s||s.origin!==i.origin||s.pathname!=="/api/v1/code/chat/completions")throw new Error("The selected organization cannot be sent to this endpoint.");let a=e.get(Sn);if(a!==null&&a!==o)throw new Error("The request organization conflicts with --organization-id.");o!==void 0&&e.set(Sn,o)}p();function Bo(t){switch(t){case"openai":return"OPENAI_API_KEY";default:return"API_KEY"}}function jo(t){switch(t){case"openai":return"OPENAI_MODEL";default:return"MODEL"}}var fe=class extends Error{constructor(e){super(e),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},St=class extends fe{code="STRICT_MISSING_CREDENTIALS";constructor(e,n,o){let r=e||"(unknown)",i=n||"(unknown)";super(`Missing credentials for modelProviders model '${i}'. `+(o?`Current configured envKey: '${o}'. Set that environment variable, or update modelProviders.${r}[].envKey.`:`Configure modelProviders.${r}[].envKey and set that environment variable.`))}},Et=class extends fe{code="STRICT_MISSING_MODEL_ID";constructor(e){super(`Missing model id for strict modelProviders resolution (authType: ${e}).`)}},At=class extends fe{code="MISSING_API_KEY";constructor(e){super(`Missing API key for ${e.authType} auth. Current model: '${e.model||"(unknown)"}', baseUrl: '${e.baseUrl||"(default)"}'. Provide an API key via settings (security.auth.apiKey), or set the environment variable '${e.envKey}'.`)}},Rt=class extends fe{code="MISSING_MODEL";constructor(e){super(`Missing model for ${e.authType} auth. Set the environment variable '${e.envKey}'.`)}};p();import _n from"node:process";p();function Gu(t,e,n,o=2048){let r=e-n-o;return!Number.isFinite(r)||r<=0?0:Math.min(t,r)}var v={"32k":32768,"64k":65536,"128k":131072,"200k":2e5,"256k":262144,"272k":272e3,"400k":4e5,"512k":524288,"1m":1e6,"4k":4096,"8k":8192,"16k":16384};function vt(t){let e=(t??"").toLowerCase().trim();return e=e.replace(/^.*\//,""),e=e.split("|").pop()??e,e=e.split(":").pop()??e,e=e.replace(/\s+/g,"-"),e=e.replace(/-preview/g,""),e.match(/^kimi-k2-\d{4}$/)||(e=e.replace(/-(?:\d{4,}|\d+x\d+b|v\d+(?:\.\d+)*|(?<=-[^-]+-)\d+(?:\.\d+)+|latest|exp)$/g,"")),e=e.replace(/-(?:\d?bit|int[48]|bf16|fp16|q[45]|quantized)$/g,""),e}var Vi=[[/^gemini-3/,v["1m"]],[/^gemini-/,v["1m"]],[/^gpt-5/,v["272k"]],[/^gpt-/,v["128k"]],[/^o\d/,v["200k"]],[/^claude-/,v["200k"]],[/^glm-5(\.[01])?(-|$)/,202752],[/^glm-(?:[5-9]|\d{2,})/,v["1m"]],[/^glm-/,202752],[/^matilda-code$/,v["1m"]],[/^matilda/,v["256k"]],[/^ornith/,v["64k"]],[/^kimi-/,v["256k"]],[/^seed-oss/,v["512k"]]],Vo=[[/^gemini-3/,v["64k"]],[/^gemini-/,v["8k"]],[/^gpt-5/,v["128k"]],[/^gpt-/,v["16k"]],[/^o\d/,v["128k"]],[/^claude-opus-4-6/,v["128k"]],[/^claude-sonnet-4-6/,v["64k"]],[/^claude-/,v["64k"]],[/^glm-5\.2/,v["64k"]],[/^glm-5/,v["64k"]],[/^glm-4\.7/,v["16k"]],[/^matilda-code$/,v["64k"]],[/^matilda$/,v["64k"]],[/^matilda-core$/,v["64k"]],[/^ornith/,v["32k"]],[/^kimi-k2\.5/,v["32k"]]];function zi(t,e="input"){let n=vt(t),o=e==="output"?Vo:Vi;for(let[r,i]of o)if(r.test(n))return i}function Ku(t){let e=vt(t);return Vo.some(([n])=>n.test(e))}function Wi(t,e="input"){return zi(t,e)}function bt(t,e="input"){return Wi(t,e)??(e==="output"?32e3:131072)}p();p();var zo={image:!0,pdf:!0,audio:!0,video:!0},Hi=[[/^gemini-3/,zo],[/^gemini-/,zo],[/^gpt-5/,{image:!0}],[/^gpt-/,{image:!0}],[/^o\d/,{image:!0}],[/^claude-/,{image:!0,pdf:!0}],[/^glm-4\.5v/,{image:!0}],[/^glm-5(?:-|$)/,{}],[/^glm-/,{}],[/^kimi-k2\.5/,{image:!0,video:!0}],[/^kimi-/,{}],[/^doubao-seed(ance|ream)/,{}],[/^doubao-seed/,{image:!0}],[/^doubao-.*(vision|vl)/,{image:!0}],[/^doubao/,{}]];function Mt(t){let e=vt(t);for(let[n,o]of Hi)if(n.test(e))return{...o};return{}}p();function Wo(t,e,n={kind:"default"}){for(let o of t)if(Ho(o.value))return{value:o.value,source:o.source};return{value:e,source:n}}function Rn(t){for(let e of t)if(Ho(e.value))return{value:e.value,source:e.source}}function Ho(t){return!(t==null||typeof t=="string"&&t.trim()==="")}function _t(t){return{kind:"cli",detail:t}}function qi(t){return{kind:"env",envKey:t}}function Fe(t){return{kind:"settings",settingsPath:t}}function ge(t,e,n){return{kind:"modelProviders",authType:t,modelId:e,detail:n}}function vn(t){return{kind:"default",detail:t}}function kt(t){return{kind:"computed",detail:t}}function wt(t,e,n){let o=t[e];return{value:o!==void 0?n?n(o):o:void 0,source:qi(e)}}function N(t,e){return{value:t,source:e}}p();var me=["samplingParams","timeout","maxRetries","retryErrorCodes","enableCacheControl","schemaCompliance","reasoning","contextWindowSize","customHeaders","extra_body","modalities","splitToolMedia","openAIRequestProfile"],qo=["model","apiKey","apiKeyEnvKey","baseUrl"],xt=[...qo,...me],Yo={openai:{apiKey:["OPENAI_API_KEY"],baseUrl:["OPENAI_BASE_URL"],model:["OPENAI_MODEL","MATILDA_MODEL"]}},Jo={openai:it};var he="MATILDA_API_KEY",Yi="matilda-code-1.0";function Ji(t,e){if(!t)return!0;try{let{hostname:n}=new URL(t);return n==="matilda.maincode.com"||n.endsWith(".matilda.maincode.com")||Pe(t,e)}catch{return!1}}function Xi(t,e,n,o){if(o?.timeout!==void 0)return;let r=t.MATILDA_CODE_API_TIMEOUT_MS;if(r===void 0)return;let i=Number(r);Number.isFinite(i)&&i>0&&(e.timeout=Math.floor(i),n.timeout={kind:"env",envKey:"MATILDA_CODE_API_TIMEOUT_MS"})}function nc(t){let{authType:e,cli:n,settings:o,env:r,modelProvider:i,proxy:s}=t,a=[],l={},c=e?Yo[e]:{model:[],apiKey:[],baseUrl:[]},u=[];e&&i&&u.push(N(i.id,ge(e,i.id,"model.id"))),n?.model&&u.push(N(n.model,_t("--model"))),e==="openai"&&r[he]&&!r.OPENAI_MODEL&&!r.MATILDA_MODEL&&u.push(N(Yi,{kind:"env",envKey:he}));for(let b of c.model)u.push(wt(r,b));o?.model&&u.push(N(o.model,Fe("model.name")));let f=e?Jo[e]:"",d=Wo(u,f,vn(f));l.model=d.source;let m=[];if(e&&i?.envKey){let b=r[i.envKey];b&&m.push(N(b,{kind:"env",envKey:i.envKey,via:ge(e,i.id,"envKey")}))}if(n?.apiKey&&m.push(N(n.apiKey,_t("--openaiApiKey"))),!i?.envKey){let b=r[he];e==="openai"&&b&&Ji(r.OPENAI_BASE_URL,r)&&m.push(N(b,{kind:"env",envKey:he}));for(let x of c.apiKey)m.push(wt(r,x))}o?.apiKey&&m.push(N(o.apiKey,Fe("security.auth.apiKey")));let h=Rn(m);h&&(l.apiKey=h.source);let g=[];e&&i?.baseUrl&&g.push(N(i.baseUrl,ge(e,i.id,"baseUrl"))),n?.baseUrl&&g.push(N(n.baseUrl,_t("--openaiBaseUrl"))),e==="openai"&&r[he]&&!r.OPENAI_BASE_URL&&g.push(N(G(r),{kind:"env",envKey:he}));for(let b of c.baseUrl)g.push(wt(r,b));o?.baseUrl&&g.push(N(o.baseUrl,Fe("security.auth.baseUrl")));let C=Rn(g)??(e==="openai"?{value:G(r),source:vn("the configured Matilda endpoint")}:void 0);C&&(l.baseUrl=C.source);let T;e&&i?.envKey&&(T=i.envKey,l.apiKeyEnvKey={...ge(e,i.id,"envKey"),envKey:i.envKey});let S=It(o?.generationConfig,i?.generationConfig,e,i?.id??d.value,r),R=S.config;Object.assign(l,S.sources);let w={authType:e,model:d.value||"",apiKey:h?.value,apiKeyEnvKey:T,baseUrl:C?.value,proxy:s,...R};return s&&(l.proxy=kt("Config.getProxy()")),l.authType=kt("provided by caller"),{config:w,sources:l,warnings:a}}function It(t,e,n,o,r){let i={},s=Qi(t,e,n,o,i);return Xi(r,s,i,e),{config:s,sources:i}}function Qi(t,e,n,o,r){let i={};for(let s of me)n&&e&&s in e?(i[s]=e[s],r[s]=ge(n,o||"",`generationConfig.${s}`)):t&&s in t&&(i[s]=t[s],r[s]=Fe(`model.generationConfig.${s}`));return i.modalities===void 0&&o&&(i.modalities=Mt(o),r.modalities=kt("auto-detected from model")),i}p();var Ot="$runtime|";function sc(t){let e=t;for(;e.startsWith(Ot);){let n=e.split("|").slice(2).join("|");if(!n)break;e=n}return e}p();p();var Mn=L("MODEL_REGISTRY");function Xo(t){if(Object.values(B).includes(t))return t}function Qo(t,e){return e?`${t}\0${e}`:t}var Pt=class{modelsByAuthType;constructor(e){if(this.modelsByAuthType=new Map,e)for(let[n,o]of Object.entries(e)){let r=Xo(n);if(!r){Mn.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(B).join(", ")}. Skipping.`);continue}this.registerAuthTypeModels(r,o)}}registerAuthTypeModels(e,n){let o=new Map;for(let r of n){let i=Qo(r.id,r.baseUrl);if(o.has(i)){Mn.warn(`Duplicate model id "${r.id}"${r.baseUrl?` with baseUrl "${r.baseUrl}"`:""} for authType "${e}". Using the first registered config.`);continue}let s=this.resolveModelConfig(r,e);o.set(i,s)}this.modelsByAuthType.set(e,o)}getModelsForAuthType(e){let n=this.modelsByAuthType.get(e);return n?Array.from(n.values()).map(o=>({id:o.id,label:o.name,description:o.description,capabilities:o.capabilities,authType:o.authType,isVision:o.capabilities?.vision??!1,contextWindowSize:o.generationConfig.contextWindowSize??bt(o.id),modalities:o.generationConfig.modalities??Mt(o.id),baseUrl:o.baseUrl,envKey:o.envKey})):[]}getModel(e,n,o){let r=this.modelsByAuthType.get(e);if(!r)return;if(o)return r.get(Qo(n,o));let i=r.get(n);if(i)return i;for(let s of r.values())if(s.id===n)return s}hasModel(e,n,o){return this.getModel(e,n,o)!==void 0}getDefaultModelForAuthType(e){let n=this.modelsByAuthType.get(e);if(!(!n||n.size===0))return Array.from(n.values())[0]}resolveModelConfig(e,n){return this.validateModelConfig(e,n),{...e,authType:n,name:e.name||e.id,baseUrl:e.baseUrl||G(),generationConfig:{...e.generationConfig??{}},capabilities:e.capabilities||{}}}validateModelConfig(e,n){if(!e.id)throw new Error(`Model config in authType '${n}' missing required field: id`)}reloadModels(e){if(this.modelsByAuthType.clear(),e)for(let[n,o]of Object.entries(e)){let r=Xo(n);if(!r){Mn.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(B).join(", ")}. Skipping.`);continue}this.registerAuthTypeModels(r,o)}}};var Zo=class t{modelRegistry;currentAuthType;_generationConfig;generationConfigSources;strictModelProviderSelection=!1;hasManualCredentials=!1;onModelChange;authTypeWasExplicitlyProvided;settingsGenerationConfig;runtimeModelSnapshots=new Map;activeRuntimeModelSnapshotId;static deepClone(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>t.deepClone(o));let n={};for(let o of Object.keys(e))n[o]=t.deepClone(e[o]);return n}constructor(e={}){this.modelRegistry=new Pt(e.modelProvidersConfig),this.onModelChange=e.onModelChange,this._generationConfig={...e.generationConfig||{}},this.generationConfigSources=e.generationConfigSources||{},this.settingsGenerationConfig=t.deepClone(e.settingsGenerationConfig),this.authTypeWasExplicitlyProvided=e.initialAuthType!==void 0,this.currentAuthType=e.initialAuthType}createStateSnapshotForRollback(){return{currentAuthType:this.currentAuthType,generationConfig:t.deepClone(this._generationConfig),generationConfigSources:t.deepClone(this.generationConfigSources),strictModelProviderSelection:this.strictModelProviderSelection,hasManualCredentials:this.hasManualCredentials,activeRuntimeModelSnapshotId:this.activeRuntimeModelSnapshotId}}rollbackToStateSnapshot(e){this.currentAuthType=e.currentAuthType,this._generationConfig=e.generationConfig,this.generationConfigSources=e.generationConfigSources,this.strictModelProviderSelection=e.strictModelProviderSelection,this.hasManualCredentials=e.hasManualCredentials,this.activeRuntimeModelSnapshotId=e.activeRuntimeModelSnapshotId}getModel(){return this._generationConfig.model||it}getCurrentAuthType(){return this.currentAuthType}wasAuthTypeExplicitlyProvided(){return this.authTypeWasExplicitlyProvided}getAvailableModels(){return this.currentAuthType?this.modelRegistry.getModelsForAuthType(this.currentAuthType):[]}getAvailableModelsForAuthType(e){return this.modelRegistry.getModelsForAuthType(e)}getAllConfiguredModels(e){let n=e&&e.length>0?e:Object.values(B),o=new Set,r=[];for(let a of n)o.has(a)||(o.add(a),r.push(a));let i=this.getRuntimeModelOption(),s=[];for(let a of r)i&&i.authType===a&&s.push(i),s.push(...this.modelRegistry.getModelsForAuthType(a));return s}hasModel(e,n){return this.modelRegistry.hasModel(e,n)}getResolvedModel(e,n){let o=this.modelRegistry.getModel(e,n);if(o)return{...o,generationConfig:this.resolveEntryGenerationConfig(o).config}}resolveEntryGenerationConfig(e){return It(this.settingsGenerationConfig,e.generationConfig,e.authType,e.id,_n.env)}isManagedMatildaResolvedModel(e){return e?.id===Jt&&e?.envKey===rt&&e?.baseUrl===_e&&e?.generationConfig?.openAIRequestProfile==="matilda-code"}isManagedMatildaModel(e){let n=e.trim();return!n||!this.currentAuthType?!1:this.isManagedMatildaResolvedModel(this.modelRegistry.getModel(this.currentAuthType,n))}getPublicModelId(e){return this.isManagedMatildaModel(e)?Jt:e}getModelDisplayName(e){return this.isManagedMatildaModel(e)?Yn:this.currentAuthType?this.modelRegistry.getModel(this.currentAuthType,e)?.name??e:e}async setModel(e,n){if(this.currentAuthType&&this.modelRegistry.hasModel(this.currentAuthType,e)){await this.switchModel(this.currentAuthType,e);return}let o=this.createStateSnapshotForRollback();try{this.strictModelProviderSelection=!1,this._generationConfig.model=e,this.generationConfigSources.model={kind:"programmatic",detail:n?.reason||"setModel"},this.applyRawModelDerivedDefaults(e),this.onModelChange&&this.currentAuthType&&await this.onModelChange(this.currentAuthType)}catch(r){throw this.rollbackToStateSnapshot(o),r}}applyRawModelDerivedDefaults(e){let n=It(this.settingsGenerationConfig,void 0,this.currentAuthType,e,_n.env);this.shouldUpdateModelDerivedDefault("modalities")&&this.applyResolvedField("modalities",n),this.shouldUpdateModelDerivedDefault("contextWindowSize")&&(this.applyResolvedField("contextWindowSize",n),this.fillContextWindowSize(e))}applyResolvedField(e,n){this._generationConfig[e]=t.deepClone(n.config[e]);let o=n.sources[e];o?this.generationConfigSources[e]=o:delete this.generationConfigSources[e]}fillContextWindowSize(e){this._generationConfig.contextWindowSize===void 0&&(this._generationConfig.contextWindowSize=bt(e,"input"),this.generationConfigSources.contextWindowSize={kind:"computed",detail:"auto-detected from model"})}shouldUpdateModelDerivedDefault(e){let n=this.generationConfigSources[e];return n===void 0||n.kind==="computed"||n.kind==="default"||n.kind==="modelProviders"||n.kind==="programmatic"||n.kind==="unknown"}async switchModel(e,n,o){let r=this.extractRuntimeModelSnapshotId(n);if(r){await this.switchToRuntimeModel(r);return}let i=this.createStateSnapshotForRollback();try{let s=e!==this.currentAuthType;this.currentAuthType=e;let a=this.modelRegistry.getModel(e,n,o?.baseUrl);if(!a)throw new Error(`Model '${n}' not found for authType '${e}'`);let l=i.generationConfig.model||"",c=!s&&l?this.modelRegistry.getModel(e,l,i.generationConfig.baseUrl)??this.modelRegistry.getModel(e,l):void 0,u=!s&&!!i.generationConfig.apiKey&&!!a.envKey&&c?.envKey===a.envKey&&c.baseUrl===a.baseUrl,f=u?i.generationConfig.apiKey:void 0,d=u?i.generationConfigSources.apiKey:void 0;this.applyResolvedModelDefaults(a),!this._generationConfig.apiKey&&f&&(this._generationConfig.apiKey=f,d&&(this.generationConfigSources.apiKey=t.deepClone(d))),this.activeRuntimeModelSnapshotId=void 0,this.onModelChange&&await this.onModelChange(e)}catch(s){throw this.rollbackToStateSnapshot(i),s}}buildRuntimeModelSnapshotId(e,n){return`${Ot}${e}|${n}`}extractRuntimeModelSnapshotId(e){if(e.startsWith(Ot))return this.runtimeModelSnapshots.has(e)?e:void 0;if(this.runtimeModelSnapshots.has(e))return e}getGenerationConfig(){return this._generationConfig}getGenerationConfigSources(){return this.generationConfigSources}mergeSettingsGenerationConfig(e){if(e)for(let n of me)!(n in this._generationConfig)&&n in e&&(this._generationConfig[n]=e[n],this.generationConfigSources[n]={kind:"settings",detail:`model.generationConfig.${n}`})}updateCredentials(e,n){(e.apiKey||e.baseUrl||e.model)&&(this.hasManualCredentials=!0,this.clearProviderSourcedConfig()),e.apiKey&&(this._generationConfig.apiKey=e.apiKey,this.generationConfigSources.apiKey={kind:"programmatic",detail:"updateCredentials"}),e.baseUrl&&(this._generationConfig.baseUrl=e.baseUrl,this.generationConfigSources.baseUrl={kind:"programmatic",detail:"updateCredentials"}),e.model&&(this._generationConfig.model=e.model,this.generationConfigSources.model={kind:"programmatic",detail:"updateCredentials"}),this.strictModelProviderSelection=!1,this._generationConfig.apiKeyEnvKey=void 0,n&&this.mergeSettingsGenerationConfig(n),this.syncRuntimeModelSnapshotWithCredentials()}syncRuntimeModelSnapshotWithCredentials(){let e=this.currentAuthType,{model:n,apiKey:o,baseUrl:r}=this._generationConfig;if(!(!n||!e||!o||!r)&&!this.modelRegistry.hasModel(e,n,r))if(this.activeRuntimeModelSnapshotId&&this.runtimeModelSnapshots.has(this.activeRuntimeModelSnapshotId)){let i=this.runtimeModelSnapshots.get(this.activeRuntimeModelSnapshotId);i.apiKey=o,i.baseUrl=r,i.modelId=n;let s=this.buildRuntimeModelSnapshotId(i.authType,i.modelId);s!==i.id&&(this.runtimeModelSnapshots.delete(i.id),i.id=s,this.runtimeModelSnapshots.set(s,i),this.activeRuntimeModelSnapshotId=s),i.createdAt=Date.now()}else this.detectAndCaptureRuntimeModel()}clearProviderSourcedConfig(){for(let e of xt)this.generationConfigSources[e]?.kind==="modelProviders"&&(delete this._generationConfig[e],delete this.generationConfigSources[e])}isStrictModelProviderSelection(){return this.strictModelProviderSelection}resetStrictModelProviderSelection(){this.strictModelProviderSelection=!1}applyResolvedModelDefaults(e){if(this.strictModelProviderSelection=!0,this.hasManualCredentials=!1,this._generationConfig.model=e.id,this.generationConfigSources.model={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"model.id"},this._generationConfig.apiKey=void 0,this._generationConfig.apiKeyEnvKey=void 0,e.envKey!==void 0){let o=_n.env[e.envKey];o&&(this._generationConfig.apiKey=o,this.generationConfigSources.apiKey={kind:"env",envKey:e.envKey,via:{kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"envKey"}}),this._generationConfig.apiKeyEnvKey=e.envKey,this.generationConfigSources.apiKeyEnvKey={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"envKey"}}this._generationConfig.baseUrl=e.baseUrl,this.generationConfigSources.baseUrl={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"baseUrl"};let n=this.resolveEntryGenerationConfig(e);for(let o of me)this.applyResolvedField(o,n);this.fillContextWindowSize(e.id)}syncAfterAuthRefresh(e,n){this.strictModelProviderSelection=!1;let o=this.currentAuthType;this.currentAuthType=e;let r=this.generationConfigSources.baseUrl?.kind==="modelProviders"?this._generationConfig.baseUrl:void 0,i=n?this.modelRegistry.getModel(e,n,r)??this.modelRegistry.getModel(e,n):void 0;if(i){let m=this.generationConfigSources.baseUrl?.kind==="modelProviders"&&(this._generationConfig.apiKeyEnvKey!==i.envKey||this._generationConfig.baseUrl!==i.baseUrl),h=o===e&&this._generationConfig.model===n&&!m,g=h?this._generationConfig.apiKey:void 0,C=h&&this.generationConfigSources.apiKey?{...this.generationConfigSources.apiKey}:void 0,T=this.generationConfigSources.baseUrl,S=h&&!!this._generationConfig.baseUrl&&(T?.kind==="cli"||T?.kind==="env"||T?.kind==="settings"),R=S?this._generationConfig.baseUrl:void 0,w=S&&T?{...T}:void 0;this.applyResolvedModelDefaults(i),h&&!this._generationConfig.apiKey&&g&&(this._generationConfig.apiKey=g,C&&(this.generationConfigSources.apiKey=C)),R&&(this._generationConfig.baseUrl=R,w&&(this.generationConfigSources.baseUrl=w)),this.strictModelProviderSelection=!0,this.activeRuntimeModelSnapshotId=void 0;return}let s=this.generationConfigSources.apiKey,a=this.generationConfigSources.baseUrl,l=this._generationConfig.apiKey&&s?.kind!=="modelProviders"||this._generationConfig.baseUrl&&a?.kind!=="modelProviders";if(!(o!==e)&&(n===void 0||!this.modelRegistry.hasModel(e,n))&&(this.hasManualCredentials||l)){n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (preserved credentials)"}));return}let f=this.modelRegistry.getDefaultModelForAuthType(e);if(f){this.applyResolvedModelDefaults(f),this.activeRuntimeModelSnapshotId=void 0;return}n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (no default model)"}))}setOnModelChange(e){this.onModelChange=e}detectAndCaptureRuntimeModel(){let{model:e,apiKey:n,baseUrl:o,apiKeyEnvKey:r,...i}=this._generationConfig,s=this.currentAuthType;if(!e||!s)return;if(this.modelRegistry.hasModel(s,e,o)){this.clearRuntimeModelSnapshotForAuthType(s);return}if(!(this._generationConfig.apiKey&&this._generationConfig.baseUrl))return;let l=this.buildRuntimeModelSnapshotId(s,e),c={id:l,authType:s,modelId:e,apiKey:n,baseUrl:o,apiKeyEnvKey:r,generationConfig:i,sources:{...this.generationConfigSources},createdAt:Date.now()};return this.runtimeModelSnapshots.set(l,c),this.activeRuntimeModelSnapshotId=l,this.cleanupOldRuntimeModelSnapshots(),l}getActiveRuntimeModelSnapshot(){if(this.activeRuntimeModelSnapshotId)return this.runtimeModelSnapshots.get(this.activeRuntimeModelSnapshotId)}getActiveRuntimeModelSnapshotId(){return this.activeRuntimeModelSnapshotId}async switchToRuntimeModel(e){let n=this.runtimeModelSnapshots.get(e);if(!n)throw new Error(`Runtime model snapshot '${e}' not found`);let o=this.createStateSnapshotForRollback();try{this.currentAuthType=n.authType,this.activeRuntimeModelSnapshotId=e,this.strictModelProviderSelection=!1,this.hasManualCredentials=!0,this._generationConfig.model=n.modelId,this.generationConfigSources.model={kind:"programmatic",detail:"runtimeModelSwitch"},n.apiKey&&(this._generationConfig.apiKey=n.apiKey,this.generationConfigSources.apiKey=n.sources.apiKey||{kind:"programmatic",detail:"runtimeModelSwitch"}),n.baseUrl&&(this._generationConfig.baseUrl=n.baseUrl,this.generationConfigSources.baseUrl=n.sources.baseUrl||{kind:"programmatic",detail:"runtimeModelSwitch"}),n.apiKeyEnvKey&&(this._generationConfig.apiKeyEnvKey=n.apiKeyEnvKey),n.generationConfig&&Object.assign(this._generationConfig,n.generationConfig),this.onModelChange&&await this.onModelChange(n.authType)}catch(r){throw this.rollbackToStateSnapshot(o),r}}getRuntimeModelOption(){let e=this.getActiveRuntimeModelSnapshot();if(e)return{id:e.modelId,label:e.modelId,authType:e.authType,isVision:!1,contextWindowSize:e.generationConfig?.contextWindowSize,isRuntimeModel:!0,runtimeSnapshotId:e.id}}clearRuntimeModelSnapshotForAuthType(e){for(let[n,o]of this.runtimeModelSnapshots.entries())o.authType===e&&(this.runtimeModelSnapshots.delete(n),this.activeRuntimeModelSnapshotId===n&&(this.activeRuntimeModelSnapshotId=void 0))}cleanupOldRuntimeModelSnapshots(){let e=new Map;for(let n of this.runtimeModelSnapshots.values()){let o=e.get(n.authType);(!o||n.createdAt>o.createdAt)&&e.set(n.authType,n)}this.runtimeModelSnapshots.clear();for(let n of e.values())this.runtimeModelSnapshots.set(n.id,n);this.activeRuntimeModelSnapshotId&&!this.runtimeModelSnapshots.has(this.activeRuntimeModelSnapshotId)&&(this.activeRuntimeModelSnapshotId=void 0)}reloadModelProvidersConfig(e){this.modelRegistry.reloadModels(e)}};p();import{randomUUID as vs}from"node:crypto";import{mkdirSync as bs,readFileSync as Ms}from"node:fs";import{dirname as _s,join as ks}from"node:path";p();p();import{randomBytes as Zi,createHash as es}from"node:crypto";import{setTimeout as ts}from"node:timers/promises";var ns="urn:ietf:params:oauth:grant-type:device_code";function er(t){return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function wn(){let t=Zi(32).toString("base64url"),e=es("sha256").update(t).digest("base64url");return{codeVerifier:t,codeChallenge:e}}function Ce(t,e){let n=typeof t=="object"&&t!==null?t:{};if(typeof n.access_token!="string"||n.access_token==="")throw new Error("The token response has no access token");return{accessToken:n.access_token,refreshToken:n.refresh_token??e?.refreshToken,expiresAt:Date.now()+(n.expires_in??3600)*1e3,idToken:n.id_token??e?.idToken}}var os=15e3;async function xn(t){let e=t.replace(/\/+$/,""),n=new URL("/.well-known/oauth-authorization-server",e);if(n.protocol!=="https:"&&!er(n.hostname))throw new Error(`Refusing OAuth discovery over insecure transport: ${n.origin}`);let o=await fetch(n,{headers:{accept:"application/json"},signal:AbortSignal.timeout(os)});if(!o.ok)throw new Error(`OAuth discovery failed (${o.status}) for ${n.origin}`);let r=await o.json();if(!r.issuer||!r.authorization_endpoint||!r.token_endpoint)throw new Error(`OAuth discovery document missing required fields for ${n.origin}`);return{issuer:r.issuer,authorization_endpoint:r.authorization_endpoint,token_endpoint:r.token_endpoint,device_authorization_endpoint:r.device_authorization_endpoint}}var rs=15e3,kn="Device code expired: restart the sign-in";async function In(t,e,n={}){let o;try{o=await fetch(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:e.clientId,scope:e.scope??"openid offline_access"}),signal:or(AbortSignal.timeout(rs),n.signal)})}catch(i){throw rr(i,n.signal)?new Error("The device code request timed out"):i}if(!o.ok)throw new Error(`Device code request failed (${o.status})`);let r=await o.json();return{deviceCode:r.device_code,userCode:r.user_code,verificationUri:r.verification_uri,verificationUriComplete:r.verification_uri_complete,expiresAt:Date.now()+r.expires_in*1e3,interval:r.interval??5}}async function tr(t,e,n={}){let o=await fetch(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:ns,client_id:e.clientId,device_code:e.deviceCode}),signal:n.signal});if(o.ok)return{kind:"authorized",tokens:Ce(await o.json())};let r=await o.json().catch(()=>({})),i=typeof r.error=="string"?r.error:"unknown";switch(i){case"authorization_pending":return{kind:"pending"};case"slow_down":return{kind:"slow_down"};default:return{kind:"error",error:i}}}async function nr(t,e,n={}){let o=e.interval*1e3;try{for(;Date.now()<e.expiresAt;){await ts(Math.min(o,e.expiresAt-Date.now()),void 0,{signal:n.signal});let r=e.expiresAt-Date.now();if(r<=0)break;let i=await tr(t,e,{signal:or(AbortSignal.timeout(r),n.signal)});if(i.kind==="authorized")return i.tokens;if(i.kind!=="pending"){if(i.kind==="slow_down"){o+=5e3;continue}switch(i.error){case"expired_token":throw new Error(kn);case"access_denied":throw new Error("User denied the authorization request");default:throw new Error(`Device flow error: ${i.error}`)}}}}catch(r){throw rr(r,n.signal)?new Error(kn):r}throw new Error(kn)}function or(t,e){return e?AbortSignal.any([t,e]):t}function rr(t,e){return!e?.aborted&&t instanceof Error&&t.name==="TimeoutError"}p();import{randomBytes as is}from"node:crypto";import{promises as ye,openSync as ss,closeSync as as,unlinkSync as sr,statSync as ls}from"node:fs";import{dirname as us}from"node:path";var ir=new Map,cs=2e4,ds=3e4,ps=50;function On(t,e={}){let n=async()=>{try{let s=await ye.readFile(t,"utf8"),a=JSON.parse(s);return a&&typeof a=="object"?a:{}}catch(s){if(s.code==="ENOENT")return{};throw s}},o=async(s,a)=>{await ye.mkdir(us(t),{recursive:!0});let l=`${t}.${process.pid}.${is(4).toString("hex")}.tmp`;try{await ye.writeFile(l,JSON.stringify(s,null,2),{mode:384}),a?.throwIfAborted(),await ye.rename(l,t)}catch(c){throw await ye.rm(l,{force:!0}).catch(()=>{}),c}await ye.chmod(t,384).catch(()=>{})},r=(s,a={})=>{let c=(ir.get(t)??Promise.resolve()).then(async()=>{a.signal?.throwIfAborted();let u=await n(),f=!1;for(let[d,m]of Object.entries(s)){if(m===null){if(!(d in u))continue;delete u[d]}else{if(u[d]===m)continue;u[d]=m}f=!0}f&&await o(u,a.signal),a.onCommit?.()});return ir.set(t,c.catch(()=>{})),c};return{store:{async get(s){return(await n())[s]??null},set:(s,a,l)=>r({[s]:a},l),remove:(s,a)=>r({[s]:null},a)},lock:fs(`${t}.lock`,e.lockTimeoutMs??cs),update:r}}function fs(t,e){let n=Promise.resolve();return o=>{let r=n.then(async()=>{await gs(t,e);try{return await o()}finally{ms(t)}});return n=r.then(()=>{},()=>{}),r}}async function gs(t,e){let n=Date.now()+e;for(;;)try{as(ss(t,"wx"));return}catch(o){if(o.code!=="EEXIST")throw o;try{if(Date.now()-ls(t).mtimeMs>ds){sr(t);continue}}catch{continue}if(Date.now()>n)throw Object.assign(new Error(`Timed out acquiring credential lock at ${t}`),{code:"ETIMEDOUT"});await hs(ps)}}function ms(t){try{sr(t)}catch{}}function hs(t){return new Promise(e=>setTimeout(e,t))}p();var Te=class extends Error{code="invalid_grant";constructor(e="Refresh token is no longer valid \u2014 sign in again."){super(e),this.name="InvalidGrantError"}};function Pn(t){let e=t.storageKey??"default",n=t.fetchImpl??fetch,o=t.expirySkewMs??6e4,r=t.refreshTimeoutMs??15e3,i=null,s=async()=>{let c=await t.store.get(e);if(!c)return null;try{let u=JSON.parse(c);return u.accessToken?u:null}catch{return null}},a=c=>c.expiresAt-Date.now()>o,l=c=>t.lock(async()=>{let u=await s()??c;if(u.accessToken!==c.accessToken&&a(u))return u.accessToken;if(!u.refreshToken)throw new Te("No refresh token available \u2014 sign in again.");let f;try{let m=await n(t.tokenEndpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:t.clientId,refresh_token:u.refreshToken}),signal:AbortSignal.timeout(r)});if(!m.ok){let h=await m.text().catch(()=>"");throw m.status>=400&&m.status<500&&Cs(h)==="invalid_grant"?(await t.store.remove(e),new Te):Object.assign(new Error(`Token refresh failed (${m.status})`),{status:m.status})}f=await m.json()}catch(m){throw m?.name==="TimeoutError"?Object.assign(new Error(`Token refresh timed out after ${r} ms`),{code:"ETIMEDOUT",cause:m}):m}let d=Ce(f,u);return await t.store.set(e,JSON.stringify(d)),d.accessToken});return{async getAccessToken(c){let u=await s();if(!u)throw new Te("Not signed in.");return!c?.forceRefresh&&a(u)?u.accessToken:(i||(i=l(u).finally(()=>{i=null})),i)}}}function Cs(t){try{return JSON.parse(t).error}catch{return}}p();import{createServer as ys}from"node:http";import{randomBytes as Ts}from"node:crypto";async function Dt(t){if(t.transport.kind==="device")return Ss(t);if(t.transport.kind!=="loopback")throw new Error(`Unsupported login transport: ${t.transport.kind}`);if(t.signal?.aborted)throw new Error("Login aborted");let e=g=>t.onEvent?.(g),{codeVerifier:n,codeChallenge:o}=wn(),r=Ts(16).toString("hex"),i=t.timeoutMs??5*60*1e3,s=t.transport.successRedirect,a=t.transport.port;e({type:"state",status:"idle"});let l,c,u=new Promise((g,C)=>{l=g,c=C});u.catch(()=>{});let f=ys((g,C)=>{let T=new URL(g.url??"/","http://127.0.0.1");if(T.pathname!=="/callback"){C.writeHead(404).end();return}let S=T.searchParams.get("error"),R=T.searchParams.get("state"),w=T.searchParams.get("code");if(S){let b=T.searchParams.get("error_description"),x=b?`OAuth error: ${S} (${b})`:`OAuth error: ${S}`;C.writeHead(400,{"content-type":"text/plain; charset=utf-8"}).end(`Sign-in failed: ${S}
16
- `,()=>c(new Error(x)));return}if(R!==r){C.writeHead(400).end("State mismatch"),c(new Error("OAuth state mismatch"));return}if(!w){C.writeHead(400).end("Missing authorization code");return}Es(C,s,()=>l(w))}),d=await new Promise((g,C)=>{f.once("error",C),f.listen(a??0,"127.0.0.1",()=>{g(f.address().port)})}),m=setTimeout(()=>c(new Error("Login timed out \u2014 the browser never reached the local callback. The hosted success page is not a completed sign-in.")),i),h=()=>c(new Error("Login aborted"));t.signal?.addEventListener("abort",h,{once:!0}),t.signal?.aborted&&h();try{t.signal?.throwIfAborted();let g=`http://127.0.0.1:${d}/callback`,C=new URL(t.metadata.authorization_endpoint);C.searchParams.set("client_id",t.clientId),C.searchParams.set("response_type","code"),C.searchParams.set("redirect_uri",g),C.searchParams.set("code_challenge",o),C.searchParams.set("code_challenge_method","S256"),C.searchParams.set("state",r),C.searchParams.set("prompt","select_account"),C.searchParams.set("scope",t.scope??"openid offline_access");let T=C.toString();e({type:"authorize_url",url:T}),e({type:"state",status:"awaiting_user"}),t.openBrowser&&await t.openBrowser(T);let S=await u;await ar(f),e({type:"state",status:"exchanging"});let R=await fetch(t.metadata.token_endpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:t.clientId,code:S,code_verifier:n,redirect_uri:g}),signal:t.signal});if(!R.ok){let b=await R.text().catch(()=>"");throw new Error(`Token exchange failed (${R.status}): ${b}`)}let w=Ce(await R.json());return e({type:"state",status:"authenticated"}),w}catch(g){throw e({type:"state",status:"error"}),t.signal?.aborted?new Error("Login aborted"):g}finally{clearTimeout(m),t.signal?.removeEventListener("abort",h),await ar(f)}}async function Ss(t){let e=t.metadata.device_authorization_endpoint;if(!e)throw new Error("The authorization server does not offer device sign-in");if(t.signal?.aborted)throw new Error("Login aborted");let n=o=>t.onEvent?.(o);n({type:"state",status:"idle"});try{let o=await In(e,{clientId:t.clientId,scope:t.scope},{signal:t.signal});n({type:"user_code",userCode:o.userCode,verificationUri:o.verificationUri,verificationUriComplete:o.verificationUriComplete}),n({type:"state",status:"awaiting_user"});let r=await nr(t.metadata.token_endpoint,{clientId:t.clientId,deviceCode:o.deviceCode,interval:o.interval,expiresAt:o.expiresAt},{signal:t.signal});return n({type:"state",status:"authenticated"}),r}catch(o){throw n({type:"state",status:"error"}),t.signal?.aborted?new Error("Login aborted"):o}}function ar(t){return t.listening?new Promise(e=>{t.close(()=>e()),t.closeAllConnections()}):Promise.resolve()}function Es(t,e,n){t.writeHead(302,{location:e}).end(n)}p();var As=["www-browser"];function Rs(t){let e=t.replace(/\\/g,"/").split("/").pop();return!!e&&As.includes(e)}function lr(t={}){let n=process.env.BROWSER?.trim()?.match(/^\S+/)?.[0];if(!t.ignoreBrowserBlocklist&&process.platform!=="win32"&&n&&Rs(n)||process.env.CI||process.env.DEBIAN_FRONTEND==="noninteractive")return!1;let o=!!process.env.SSH_CONNECTION;return!(process.platform==="linux"&&!["DISPLAY","WAYLAND_DISPLAY","MIR_SOCKET"].some(s=>!!process.env[s])||o&&process.platform!=="linux")}var Ee="matilda-code",cr="matilda-desktop",dr="openid profile email offline_access",Dn="MATILDA_API_KEY",ws="matilda";function Ae(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function pr(){return ks(Je.getGlobalMatildaDir(),"matilda-auth.json")}function $e(){let t=pr();return bs(_s(t),{recursive:!0}),On(t)}function xs(t){return t==="desktop"}function Be(t){return t?.clientId?t.clientId:xs(t?.channel)?cr:Ee}function Ke(t){return`matilda:${t}`}function Nt(t){return`${Ke(t)}:refresh-rejected`}function je(t){return t===Ee?[Ke(t),ws]:[Ke(t)]}function fr(){try{let t=Ms(pr(),"utf8");return JSON.parse(t)}catch{return{}}}function Ut(t){if(!t)return null;try{let e=JSON.parse(t);return typeof e?.accessToken=="string"&&typeof e?.baseUrl=="string"?e:null}catch{return null}}function Nn(t,e){return Ae(t)===Ae(e)}function Is(t){if(!t)return{};try{let e=t.split(".")[1],n=Buffer.from(e.replace(/-/g,"+").replace(/_/g,"/"),"base64").toString("utf8"),o=JSON.parse(n);return{sub:o.sub,email:o.email,name:o.name}}catch{return{}}}function gr(t,e){let n=Is(t.idToken);return{accessToken:t.accessToken,accessTokenExpiresAt:t.expiresAt,refreshToken:t.refreshToken??"",userId:n.sub,email:n.email,displayName:n.name,baseUrl:e}}var ur=new Map;async function Ln(t,e={}){let n=ur.get(t);if(n)return n;try{let o=await xn(t);return ur.set(t,o),o}catch(o){let r=e.requireReachable&&(De(o,t)??pn(o,t));if(r)throw r;return{issuer:t,authorization_endpoint:`${t}/api/auth/oauth/authorize`,token_endpoint:`${t}/api/auth/oauth/token`,device_authorization_endpoint:`${t}/api/auth/oauth/device/code`}}}function Fn(t){try{let e=fr(),n=Be(t);for(let o of je(n)){let r=Ut(e[o]);if(r)return r}return null}catch{return null}}function mr(t){let e=Fn(t);return!e||t?.baseUrl&&!Nn(e.baseUrl,t.baseUrl)?null:e}function Gn(t){return mr(t)!==null}async function hr(t,e){for(let n of e){let o=await t.get(n);if(Ut(o))return o}return null}async function Os(t,e){let n=Be(t),o=je(n),{store:r,lock:i}=$e();await i(async()=>{let s=await hr(r,o);if(!(s!==null&&s!==e)){for(let a of o)await r.remove(a);await r.set(Nt(n),"1")}})}function Ps(t){return t instanceof Error?t.code==="invalid_grant"||t.name==="InvalidGrantError"?!0:t.message==="Token refresh failed (401)":!1}function Se(t){Un({authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:t.occurrenceCount},{baseUrl:t.baseUrl,token:t.token}).catch(()=>{})}async function Cr(t,e,n={}){let o=Be(e),r=Ke(o),i={[r]:JSON.stringify(t),[Nt(o)]:null};for(let l of je(o))l!==r&&(i[l]=null);let{lock:s,update:a}=$e();await s(()=>a(i,{signal:n.signal}))}async function Ds(t,e){for(let n of je(e))await t.remove(n);await t.remove(Nt(e))}var Ge="matilda:api-key";function yr(){let t=fr()[Ge];if(!t)return null;try{let{apiKey:e,baseUrl:n}=JSON.parse(t);return typeof e=="string"&&e.length>0&&typeof n=="string"?{apiKey:e,baseUrl:n}:null}catch{return null}}function Lt(t){let e=yr();return e&&Nn(e.baseUrl,t)?e.apiKey:void 0}async function Us(t){let e=vs(),n=JSON.stringify(t?{...t,saveId:e}:{saveId:e}),{store:o,lock:r,update:i}=$e(),s=await r(async()=>{let a=await o.get(Ge);return(t||a!==null)&&await i({[Ge]:n}),a});return()=>r(async()=>{await o.get(Ge)===n&&await i({[Ge]:s})})}function Ns(t){let e=Fn(t);return e?{authenticated:!0,userId:e.userId,email:e.email,displayName:e.displayName,baseUrl:e.baseUrl,accessTokenExpiresAt:e.accessTokenExpiresAt}:{authenticated:!1}}async function fd(t){let e={channel:t?.channel,clientId:t?.clientId},{store:n,lock:o}=$e(),r=await o(async()=>{let s=Fn(e);return await Ds(n,Be(e)),s}),i=yr()!==null;if(await Us(null),r?.accessToken){let s=Ae(r.baseUrl);await fetch(`${s}/api/auth/logout`,{method:"POST",headers:{authorization:`Bearer ${r.accessToken}`,"content-type":"application/json"},body:JSON.stringify(r.refreshToken?{refreshToken:r.refreshToken}:{}),signal:t?.signal??AbortSignal.timeout(5e3)}).catch(()=>{})}return!!r||i}function Tr(t){let{baseUrl:e,channel:n,apiKey:o}=t;if(Gn({baseUrl:e,channel:n})){let r=Ns({channel:n});return{kind:"sign-in",account:r.authenticated?r.email??r.displayName??r.userId:void 0}}return o?.value?{kind:"api-key",from:o.from}:process.env[Dn]?{kind:"api-key",from:Dn}:Lt(e)!==void 0?{kind:"api-key",from:"saved"}:{kind:"none"}}async function Sr(t){let e=Be(t),n=Ke(e),o=mr({baseUrl:t?.baseUrl,channel:t?.channel,clientId:e});if(!o)return t?.fallbackAccessToken||process.env[Dn]||t?.baseUrl&&Lt(t.baseUrl)||"";let r=Ae(o.baseUrl),i=await Ln(r),{store:s,lock:a}=$e(),{manager:l,startedFrom:c}=Ls(s,a,i.token_endpoint,o.baseUrl,e,n,t?.signal),u=e===Ee&&(!!t?.forceRefresh||o.accessTokenExpiresAt-Date.now()<=3e5),f;try{f=await l.getAccessToken({forceRefresh:t?.forceRefresh})}catch(d){throw u&&Se({baseUrl:o.baseUrl,token:o.accessToken,authStage:"refresh",authOutcome:"failed"}),Ps(d)?d instanceof Ye?d:(e===cr&&await Os({channel:t?.channel,clientId:e},c()),new Ye({cause:d})):De(d,r)??pn(d,r)??d}return u&&Se({baseUrl:o.baseUrl,token:f,authStage:"refresh",authOutcome:"succeeded"}),f}function Ls(t,e,n,o,r,i,s){let a=je(r),l=(m,h)=>{let g=[h?.signal,s].filter(C=>C instanceof AbortSignal);return fetch(m,{...h,signal:g.length>1?AbortSignal.any(g):g[0]})},c=m=>hr(t,m===i?a:[m]),u=null;return{manager:Pn({tokenEndpoint:n,clientId:r,store:{get:async m=>{let h=await c(m),g=Ut(h);if(u=g&&Nn(g.baseUrl,o)?h:null,!u||!g?.accessToken)return null;let C={accessToken:g.accessToken,refreshToken:g.refreshToken,expiresAt:g.accessTokenExpiresAt};return JSON.stringify(C)},set:async(m,h)=>{let g=await c(m);if(g===null||g!==u)throw new Ye;let C=JSON.parse(h),T=Ut(g)??{},S={...T,accessToken:C.accessToken,accessTokenExpiresAt:C.expiresAt,refreshToken:C.refreshToken??T.refreshToken??"",baseUrl:T.baseUrl??o};await t.set(i,JSON.stringify(S)),await t.remove(Nt(r));for(let R of a)R!==i&&await t.remove(R)},remove:async m=>{if(await c(m)!==u)return;let h=m===i?a:[m];for(let g of h)await t.remove(g)}},storageKey:i,lock:e,fetchImpl:l,expirySkewMs:3e5}),startedFrom:()=>u}}function Fs(){return process.env.MATILDA_AUTH_SKIP_BROWSER!=="1"&&lr()}async function gd(t){let e=Ae(t.baseUrl),n=await Ln(e,{requireReachable:!0}),o="",r=0,i=0,s={},a=f=>{s[f]=(s[f]??0)+1},c=await(f=>(r+=1,Dt({metadata:n,clientId:Ee,scope:f,transport:{kind:"loopback",successRedirect:`${e}/api/auth/oauth/success?client_id=${encodeURIComponent(Ee)}`},signal:t.signal,onEvent:d=>{d.type==="authorize_url"&&(o=d.url,t.onAuthorizeUrl?.(d.url)),d.type==="state"&&d.status==="exchanging"&&(i+=1)},openBrowser:async d=>{if(t.openBrowser===!1||!Fs()){a("skipped");return}try{let{default:m}=await import("./open-QQ7FWG4A.js");(await m(d)).once("error",()=>{}),a("succeeded")}catch{a("failed")}}})))(dr).catch(f=>{throw De(f,e)??f}),u=gr(c,t.baseUrl);await Cr(u),Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"auth_started",authOutcome:"started",occurrenceCount:r});for(let[f,d]of Object.entries(s))Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"browser_opened",authOutcome:f,occurrenceCount:d});return i>0&&Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"callback_received",authOutcome:"succeeded",occurrenceCount:i}),Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"token_persisted",authOutcome:"succeeded"}),{...u,authorizeUrl:o}}async function md(t){let e=Ae(t.baseUrl),n=await Ln(e,{requireReachable:!0}),o=await Dt({metadata:n,clientId:Ee,scope:dr,transport:{kind:"device"},signal:t.signal,onEvent:i=>{i.type==="user_code"&&t.onDeviceCode({userCode:i.userCode,verificationUri:i.verificationUri,verificationUriComplete:i.verificationUriComplete})}}).catch(i=>{throw De(i,e)??i}),r=gr(o,t.baseUrl);return await Cr(r),r}p();p();p();function Ft(t){return typeof t=="object"&&t!==null&&"error"in t&&typeof t.error=="object"&&"message"in t.error}function Er(t){return typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"}p();function Ar(t){let e=Math.max(1,t.attempt),n=Math.min(t.maxDelayMs,2147483647),o=Math.min(e-1,31),r=Math.min(t.initialDelayMs*Math.pow(2,o),n),s=(t.retryAfterMode??"ignore")==="ignore"?null:Gs(t.error);if(s!==null&&s>0){let u=Math.min(t.retryAfterMaxDelayMs??t.maxDelayMs,2147483647),f=Math.min(s,u);return Math.max(r,f)}let a=t.jitterRatio??0;if(a<=0)return r;let l=t.random??Math.random,c=r*a*(l()*2-1);return Math.min(Math.max(0,r+c),n)}function Gs(t){let e=Rr(t,"retry-after")??Ks(t,"retry-after");if(e===null)return null;let n=e.trim();if(/^\d+(\.\d+)?$/.test(n)){let i=Number(n);if(Number.isFinite(i)&&i>=0)return Math.min(i*1e3,2147483647)}let o=Date.parse(n);if(!Number.isFinite(o))return null;let r=o-Date.now();return r>0?Math.min(r,2147483647):0}function Rr(t,e){if(!$s(t))return null;let{headers:n}=t;if(typeof n.get=="function"){let r=n.get(e);return typeof r=="string"?r:null}if(typeof n!="object"||n===null)return null;let o=e.toLowerCase();for(let[r,i]of Object.entries(n))if(r.toLowerCase()===o)return typeof i=="string"?i:null;return null}function Ks(t,e){return Bs(t)?Rr(t.response,e):null}function $s(t){return typeof t=="object"&&t!==null&&"headers"in t&&t.headers!=null}function Bs(t){return typeof t=="object"&&t!==null&&"response"in t&&typeof t.response=="object"&&t.response!==null&&"headers"in t.response&&t.response.headers!=null}var js=new Set([429,503,1302,1305]);function Kn(t,e){if($n(t))return!1;let n=zs(t);return n===null?!1:!!(js.has(n)||e&&e.includes(n))}function $n(t){return Vs(t)==="insufficient_quota"}function Vs(t){let e=br(t)?.code;if(e!==void 0)return e;let n=typeof t=="object"&&t!==null&&"code"in t?t.code:void 0;return typeof n=="string"||typeof n=="number"?n:void 0}function vr(t){let e=$(t),n=br(t),o=Mr(t),r=o?.includes("event:error")||o?.includes("HTTP_STATUS/")?"sse":e!==void 0?"http":"unknown";return{...e!==void 0?{statusCode:e}:{},...n?.code!==void 0?{providerCode:String(n.code)}:{},...n?.message!==void 0?{providerMessage:n.message}:{},...n?.requestId!==void 0?{requestId:n.requestId}:{},transport:r}}function bd(t,e){return Ar({attempt:t,initialDelayMs:e.initialDelayMs,maxDelayMs:e.maxDelayMs,retryAfterMode:"minimum",retryAfterMaxDelayMs:e.maxDelayMs,error:e.error})}function zs(t){if(Ft(t)){let n=Number(t.error.code);if(Number.isFinite(n)&&n>0)return n}let e=t instanceof Error?t.message:typeof t=="string"?t:null;if(e){let n=e.indexOf("{");if(n!==-1)try{let o=JSON.parse(e.substring(n));if(Ft(o)){let r=Number(o.error.code);if(Number.isFinite(r)&&r>0)return r}}catch{}}if(Er(t)&&typeof t.status=="number")return t.status;if(t instanceof Error&&"status"in t){let n=t.status;if(typeof n=="number")return n}return $(t)??null}function br(t){for(let e of Ws(t)){if(typeof e!="object"||e===null)continue;let n=e,o=e.error,i=(typeof o=="object"&&o!==null?o:void 0)??n,s=typeof i.code=="string"||typeof i.code=="number"?i.code:void 0,a=typeof i.message=="string"?i.message:void 0,l=typeof i.request_id=="string"?i.request_id:typeof i.requestId=="string"?i.requestId:typeof n.request_id=="string"?n.request_id:typeof n.requestId=="string"?n.requestId:void 0;if(s!==void 0||a!==void 0||l!==void 0)return{code:s,message:a,requestId:l}}return Ft(t)?{code:t.error.code,message:t.error.message}:null}function Ws(t){let e=Mr(t);if(!e)return[];let n=[];for(let i of e.split(/\r?\n/)){if(!i.startsWith("data:"))continue;let s=i.slice(5).trim();if(!(!s||s==="[DONE]"))try{n.push(JSON.parse(s))}catch{}}if(n.length>0)return n;let o=e.indexOf("{"),r=e.lastIndexOf("}");if(o!==-1&&r>o)try{n.push(JSON.parse(e.slice(o,r+1)))}catch{}return n}function Mr(t){return t instanceof Error?t.message:typeof t=="string"?t:null}function Hs(t,e={}){if(qs(t))return{kind:"abort",diagnosis:"fail-fast",reason:"aborted"};let n=vr(t),o=n.statusCode,r=ea(t),i=n.providerCode??r.providerCode,s=n.providerMessage??r.providerMessage,a=n.requestId??r.requestId,l={...o!==void 0?{statusCode:o}:{},...i!==void 0?{providerCode:i}:{},...s!==void 0?{providerMessage:s}:{},...a!==void 0?{requestId:a}:{}};if(Zs(i))return{kind:"provider-business",diagnosis:"fail-fast",reason:"allocated-quota-exceeded",...l};if($n(t))return{kind:"provider-business",diagnosis:"fail-fast",reason:"insufficient-quota",...l};if(Kn(t,e.extraRetryErrorCodes))return{kind:n.transport==="sse"?"sse-provider":o!==void 0?"http":"provider",diagnosis:"retryable",reason:"rate-limit",...l};let c=Js(t);if(c!==void 0&&(o===void 0||o>=500))return{kind:"transport",diagnosis:"retryable",reason:"transport-error",transportCode:c,...o!==void 0?{statusCode:o}:{}};if(o!==void 0){let u=n.transport==="sse"?"sse-provider":"http";return o===529?{kind:u,diagnosis:"retryable",reason:"capacity-overload",...l}:o===401||o===403?{kind:u,diagnosis:"fail-fast",reason:"auth-error",...l}:o>=400&&o<500?{kind:u,diagnosis:"fail-fast",reason:"client-error",...l}:o>=500&&o<600?{kind:u,diagnosis:"retryable",reason:"server-error",...l}:{kind:u,diagnosis:"unknown",reason:"http-status",...l}}return i==="upstream_unavailable"||i==="upstream_timeout"||i==="incomplete_stream"?{kind:"sse-provider",diagnosis:"retryable",reason:"server-error",...l}:{kind:"unknown",diagnosis:"unknown",reason:"unclassified",...l}}function xd(t){let e=t.statusCode??Number(t.providerCode);return t.kind!=="transport"&&t.diagnosis!=="fail-fast"&&(e>=500&&e<600||t.kind==="sse-provider"&&t.reason==="server-error"&&t.diagnosis==="retryable")}function _r(t,e){return Kn(t,e)||Hs(t,{extraRetryErrorCodes:e}).diagnosis==="retryable"}function qs(t){return Hn(t)?!0:t instanceof Error&&t.name==="CanceledError"}var Ys=5;function Js(t){let e=t;for(let n=0;n<=Ys;n++){if(typeof e!="object"||e===null)return;let o=e.code;if(typeof o=="string"&&Xs(o))return o;e=e instanceof Error?e.cause:void 0}}function Xs(t){return Qs.has(t)}var Qs=new Set(["EAI_AGAIN","ECONNABORTED","ECONNREFUSED","ECONNRESET","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","EPIPE","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET","ConnectionClosed","ConnectionRefused","ConnectionReset","ConnectionTimedOut","FailedToOpenSocket","HostUnreachable","NetworkUnreachable"]);function Zs(t){return t==="Throttling.AllocationQuota"}function ea(t){if(typeof t!="object"||t===null)return{};let e=t,n=typeof e.code=="string"||typeof e.code=="number"?String(e.code):void 0,o=typeof e.code=="number"&&e.code>=100&&e.code<600,r=t instanceof Error&&n?.startsWith("ERR_")||o?void 0:n,i=typeof e.request_id=="string"?e.request_id:typeof e.requestId=="string"?e.requestId:void 0,s=typeof e.message=="string"&&(!(t instanceof Error)||r!==void 0||i!==void 0)?e.message:void 0;return{...r!==void 0?{providerCode:r}:{},...s!==void 0?{providerMessage:s}:{},...i!==void 0?{requestId:i}:{}}}var B=(e=>(e.USE_OPENAI="openai",e))(B||{}),ta="MATILDA_API_KEY";function kr(t,e){if(delete t.usesMatildaSignIn,delete t.usesMatildaSavedApiKey,t.apiKeyEnvKey!==ta)return;let n=t.baseUrl||G();Gn({baseUrl:n,channel:e})&&(t.usesMatildaSignIn=!0),!t.apiKey&&Lt(n)!==void 0&&(t.usesMatildaSavedApiKey=!0)}function Kd(t,e={}){let n=t.apiKey?{value:t.apiKey,from:e.apiKeyFrom??"config"}:void 0;return _o(t)?Tr({baseUrl:t.baseUrl||G(),channel:e.channel,apiKey:n}):n&&{kind:"api-key",from:n.from}}async function na(t,e){try{await Sr({baseUrl:t.baseUrl||G(),channel:e})}catch(n){if(!_r(n))throw n}}function Bn(t,e,n){t[e]=n}function oa(t,e){return t?.[e]}function $d(t,e,n,o,r){let i={...o||{}},s=r?.strictModelProvider===!0,a={...n||{},authType:e,proxy:t?.getProxy()};Bn(i,"authType",{kind:"computed",detail:"provided by caller"}),t?.getProxy()&&Bn(i,"proxy",{kind:"computed",detail:"Config.getProxy()"});let l=u=>oa(o,u)??{kind:"unknown"};for(let u of xt)n&&u in n&&!i[u]&&Bn(i,u,l(u));kr(a,t.getChannel());let c=bn(a,s);if(!c.valid)throw new Error(c.errors.map(u=>u.message).join(`
17
- `));return{config:a,sources:i}}function bn(t,e=!1){let n=[];if(!t.apiKey&&!t.usesMatildaSignIn&&!t.usesMatildaSavedApiKey)if(e)n.push(new St(t.authType,t.model,t.apiKeyEnvKey));else{let o=t.apiKeyEnvKey||Bo(t.authType);n.push(new At({authType:t.authType,model:t.model,baseUrl:t.baseUrl,envKey:o}))}if(!t.model)if(e)n.push(new Et(t.authType));else{let o=jo(t.authType);n.push(new Rt({authType:t.authType,envKey:o}))}return{valid:n.length===0,errors:n}}function ra(t){let e=t;for(;e instanceof Error;){if("code"in e&&e.code==="ERR_MODULE_NOT_FOUND")return e;e=e.cause}}async function Bd(t,e,n){An(t,e.getOrganizationId?.(),e.getCodeCreditLimitMinor?.()),$o(t.customHeaders),kr(t,e.getChannel()),t.usesMatildaSignIn&&await na(t,e.getChannel());let o=bn(t,!1);if(!o.valid)throw new Error(o.errors.map(s=>s.message).join(`
18
- `));let r=t.authType;if(!r)throw new Error("ContentGeneratorConfig must have an authType");let i;try{if(r==="openai"){let{applyDeclaredInputModalities:s,createOpenAIContentGenerator:a}=await import("./openaiContentGenerator-DTKOYRBL.js");await s(t,e,n),i=a(t,e)}else throw new Error(`Error creating contentGenerator: Unsupported authType: ${r}`)}catch(s){let a=ra(s);throw a?new Error(`Matilda was updated in the background and needs to be restarted.
19
- Please exit and restart Matilda to use the '${r}' provider.`,{cause:a}):s}return new Le(i,e,t)}var ia=["x-matilda-client-name","x-matilda-client-version","x-matilda-client-operating-system","x-matilda-client-architecture","x-matilda-client-distribution-channel","x-matilda-client-release-channel"],sa=new Set([...ia,...Wn]),aa=new Set(["VSCode","ACP","SDK","CI"]),Re="(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})",la="[A-Za-z][0-9A-Za-z-]{0,23}",wr="(?:0|[1-9]\\d{0,11}|[0-9A-Fa-f]{7,12})",ua=new RegExp(`^${Re}(?:-${la}(?:\\.${wr})+)?$`),ca=63,da=new RegExp(`^${Re}$`),pa=new RegExp(`^${Re}-preview\\.(?:0|[1-9]\\d{0,11})$`),fa=new RegExp(`^${Re}-canary\\.(?:0|[1-9]\\d{0,11})$`),ga=new RegExp(`^${Re}-nightly\\.(?:0|[1-9]\\d{0,11})\\.[0-9A-Fa-f]{7,12}$`),ma=new RegExp(`^${Re}-(preview|canary|nightly|development|internal)(?:\\.${wr})+$`);function ha(t){return t==="desktop"?"desktop":t===void 0||aa.has(t)?"code_cli":"unknown"}function Ca(t){if(t==="android")return"android";if(t==="darwin")return"macos";if(t==="win32")return"windows";if(t==="linux")return"linux"}function ya(t){if(t==="x64")return"x64";if(t==="arm64")return"arm64"}function Ta(t){if(t===void 0)return"npm";if(t==="desktop")return"direct-download";if(t==="VSCode")return"vscode-marketplace"}function Sa(t,e){if(e==="desktop")return"matilda-desktop";if(t==="VSCode")return"matilda-vscode";if(e==="code_cli")return"matilda-code"}function Ea(t){if(typeof t=="string"&&!(t.length>ca||!ua.test(t)))return t}function Aa(t){if(t!==void 0)return da.test(t)?"stable":pa.test(t)?"preview":fa.test(t)?"canary":ga.test(t)?"nightly":ma.exec(t)?.[1]}function xr(t,e=process.platform,n=process.arch){let o=t.getChannel?.(),r=ha(o),i=Ea(o==="desktop"&&process.env.CRAFT_AGENT_VERSION!==void 0?process.env.CRAFT_AGENT_VERSION:t.getCliVersion?.()),s=Aa(i),a=Ca(e),l=ya(n),c=Ta(o),u=Sa(o,r);return{...u?{"x-matilda-client-name":u}:{},...i?{"x-matilda-client-version":i}:{},...a?{"x-matilda-client-operating-system":a}:{},...l?{"x-matilda-client-architecture":l}:{},...c?{"x-matilda-client-distribution-channel":c}:{},...s?{"x-matilda-client-release-channel":s}:{}}}function qd(t){let e=t.toLowerCase();return sa.has(e)||e.startsWith("x-matilda-reported-")}function Ra(t){let e=t??G();try{let n=new URL(e);if(n.protocol!=="https:"&&n.protocol!=="http:")return!1;let o=n.hostname.toLowerCase();return o==="matilda.maincode.com"||o.endsWith(".matilda.maincode.com")||o==="core-api.matilda"||Pe(e)}catch{return!1}}function Yd(t,e=t.apiKey){return t.authType==="openai"&&(!!e||t.usesMatildaSignIn===!0||t.usesMatildaSavedApiKey===!0)&&Ra(t.baseUrl)}var va=3e3,Ve=1,ba=24*60*60*1e3,Ir=20,Or=999,Ma=new Set(["UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","SELF_SIGNED_CERT_IN_CHAIN","DEPTH_ZERO_SELF_SIGNED_CERT","CERT_HAS_EXPIRED","ERR_TLS_CERT_ALTNAME_INVALID"]),_a=new Set(["ENOTFOUND","EAI_AGAIN"]),ka=new Set(["ECONNREFUSED","EHOSTUNREACH","ENETUNREACH"]),wa=new Set(["ABORT_ERR","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT"]),xa=new Set(["ECONNRESET","EPIPE","UND_ERR_SOCKET"]);function Ia(t){return`${new URL(t).origin}/api/client-events`}function Oa(t){let e={eventType:t.eventType,platform:"cli"};return t.eventType==="network_error"&&(e.transportReason=t.transportReason,e.transportStage=t.transportStage,e.responseReceived=t.responseReceived,e.occurrenceCount=t.occurrenceCount),t.eventType==="auth_funnel"&&(e.authStage=t.authStage,e.authOutcome=t.authOutcome,e.occurrenceCount=t.occurrenceCount),t.eventType==="network_error"&&(e.reportedSurface=t.reportedSurface,e.reportedOs=t.reportedOs,e.reportedArchitecture=t.reportedArchitecture,e.reportedProcess=t.reportedProcess,e.reportedReleaseChannel=t.reportedReleaseChannel,t.reportedVersion&&(e.reportedVersion=t.reportedVersion)),e}async function jn(t,e){let{baseUrl:n,token:o}=e;if(!n||!o)return!1;let r=e.fetchImpl??fetch,i=new AbortController,s=setTimeout(()=>i.abort(),e.timeoutMs??va);try{let a=await r(Ia(n),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${o}`},body:JSON.stringify(Oa(t)),signal:i.signal});return a.ok?!0:(Xe.warn(`client-events beacon: server rejected payload (HTTP ${a.status})`),!1)}catch{return!1}finally{clearTimeout(s)}}async function Un(t,e){let n=typeof t.occurrenceCount=="number"&&Number.isFinite(t.occurrenceCount)?Math.max(1,Math.min(Math.floor(t.occurrenceCount),Or)):1;return jn({eventType:"auth_funnel",authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:n},e)}function Pr(){try{let t=Q.readFileSync(Nr(),"utf8"),e=JSON.parse(t);return e.schemaVersion!==Ve||!Array.isArray(e.failures)?void 0:{schemaVersion:Ve,failures:e.failures.filter(Pa)}}catch{return}}function Pa(t){if(!t||typeof t!="object")return!1;let e=t;return e.eventType==="network_error"&&typeof e.transportReason=="string"&&typeof e.transportStage=="string"&&typeof e.responseReceived=="boolean"&&typeof e.occurrenceCount=="number"&&typeof e.reportedSurface=="string"&&typeof e.reportedOs=="string"&&typeof e.reportedArchitecture=="string"&&typeof e.reportedProcess=="string"&&typeof e.reportedReleaseChannel=="string"&&typeof e.firstObservedAtMs=="number"&&typeof e.lastObservedAtMs=="number"}function Dr(t){let e=Nr();if(t.failures.length===0){try{Q.rmSync(e,{force:!0})}catch{}return}try{Q.mkdirSync(Gt.dirname(e),{recursive:!0}),Q.writeFileSync(e,`${JSON.stringify(t)}
20
- `,"utf8")}catch{}}function Ur(t,e){return t.filter(n=>e-n.lastObservedAtMs<=ba).sort((n,o)=>n.firstObservedAtMs-o.firstObservedAtMs).slice(-Ir)}function Da(t){let e=xr(t);return{reportedSurface:e["x-matilda-client-name"]==="matilda-desktop"?"desktop":e["x-matilda-client-name"]==="matilda-code"||e["x-matilda-client-name"]==="matilda-vscode"?"code_cli":"unknown",reportedOs:e["x-matilda-client-operating-system"]??"unknown",reportedArchitecture:e["x-matilda-client-architecture"]??"unknown",reportedProcess:e["x-matilda-client-name"]??"unknown",reportedVersion:e["x-matilda-client-version"],reportedReleaseChannel:e["x-matilda-client-release-channel"]??"unknown"}}function Ua(t){if(!t||typeof t!="object")return;let e=t.code;if(typeof e=="string")return e;if(!(t instanceof Error)||!t.cause||typeof t.cause!="object")return;let n=t.cause.code;return typeof n=="string"?n:void 0}function Na(t){if(!(!t||typeof t!="object"))for(let e of["status","statusCode"]){let n=t[e];if(typeof n=="number")return n}}function La(t,e){let n=Ua(t);if(n&&Ma.has(n))return{reason:"tls",stage:"tls",responseReceived:!1};if(n&&_a.has(n))return{reason:"dns",stage:"resolve",responseReceived:!1};if(n&&ka.has(n))return{reason:"connect",stage:"connect",responseReceived:!1};if(n&&wa.has(n))return{reason:"timeout",stage:n==="UND_ERR_BODY_TIMEOUT"?"response":"request",responseReceived:n==="UND_ERR_BODY_TIMEOUT"};if(n&&xa.has(n))return{reason:"reset",stage:n==="UND_ERR_SOCKET"?"response":"request",responseReceived:n==="UND_ERR_SOCKET"};let o=Na(t),r=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();if(r.includes("self signed")||r.includes("certificate")||r.includes("tls"))return{reason:"tls",stage:"tls",responseReceived:!1};if(o===407||n==="proxy_auth_required")return{reason:"proxy",stage:"connect",responseReceived:!0};if(e&&r.includes("proxy")&&(r.includes("407")||r.includes("connect")||r.includes("fetch failed")))return{reason:"proxy",stage:"connect",responseReceived:!1};if(r.includes("timed out")||r.includes("timeout")||r.includes("deadline exceeded"))return{reason:"timeout",stage:"request",responseReceived:!1};if(r.includes("fetch failed"))return{reason:"unknown",stage:"unknown",responseReceived:!1}}function Fa(t,e){return t.findIndex(n=>n.transportReason===e.transportReason&&n.transportStage===e.transportStage&&n.responseReceived===e.responseReceived&&n.reportedSurface===e.reportedSurface&&n.reportedOs===e.reportedOs&&n.reportedArchitecture===e.reportedArchitecture&&n.reportedProcess===e.reportedProcess&&n.reportedVersion===e.reportedVersion&&n.reportedReleaseChannel===e.reportedReleaseChannel)}function tp(t,e){let n=Da(e.cliConfig);if(n.reportedSurface!=="code_cli"&&n.reportedSurface!=="desktop")return!1;let o=La(t,e.proxyConfigured);if(!o)return!1;let r=Date.now(),i={eventType:"network_error",transportReason:o.reason,transportStage:o.stage,responseReceived:o.responseReceived,occurrenceCount:1,...n,firstObservedAtMs:r,lastObservedAtMs:r},s=Pr()??{schemaVersion:Ve,failures:[]},a=Ur(s.failures,r),l=Fa(a,i);if(l>=0){let c=a[l];a[l]={...c,occurrenceCount:Math.min(c.occurrenceCount+1,Or),lastObservedAtMs:r}}else a.push(i);return Dr({schemaVersion:Ve,failures:a.slice(-Ir)}),!0}async function np(t){let e=Pr();if(!e)return;let n=Ur(e.failures,Date.now()),o=[];for(let r=0;r<n.length;r+=1){let i=n[r];if(!await jn({eventType:i.eventType,transportReason:i.transportReason,transportStage:i.transportStage,responseReceived:i.responseReceived,occurrenceCount:i.occurrenceCount,reportedSurface:i.reportedSurface,reportedOs:i.reportedOs,reportedArchitecture:i.reportedArchitecture,reportedProcess:i.reportedProcess,reportedVersion:i.reportedVersion,reportedReleaseChannel:i.reportedReleaseChannel},t)){o.push(...n.slice(r));break}}Dr({schemaVersion:Ve,failures:o})}function Nr(){return Gt.join(Je.getGlobalMatildaDir(),"telemetry","cli-transport-failures.json")}var tg="http://localhost:4317";export{Rs as a,lr as b,jr as c,ln as d,dt as e,Jr as f,Xr as g,ft as h,Io as i,_i as j,Tn as k,Si as l,Tl as m,Ao as n,mt as o,bl as p,Mo as q,Pe as r,_o as s,De as t,yi as u,G as v,xr as w,qd as x,Yd as y,Un as z,tp as A,np as B,tg as C,Pu as D,An as E,$o as F,Du as G,Gu as H,Ku as I,bt as J,me as K,Yo as L,nc as M,sc as N,Zo as O,Fn as P,Gn as Q,Lt as R,Us as S,Ns as T,fd as U,Sr as V,Fs as W,gd as X,md as Y,Ft as Z,Er as _,Ar as $,Gs as aa,Kn as ba,$n as ca,Vs as da,vr as ea,bd as fa,Hs as ga,xd as ha,_r as ia,B as ja,Kd as ka,$d as la,Bd as ma};
14
+ `)||""}function pt(t,e,n=!0){if(e.taggedThinkingParser)return e.taggedThinkingParser.parse(t,n);if(e.responseParsingOptions?.taggedThinkingTags)return lo(t);if(!t)return[];let o=lt(cn(t));return o?[{text:o}]:[]}function ui(t,e){let n=t.choices?.[0],o=new ne;if(n){let r=[];if(!e.responseParsingOptions?.taggedThinkingTags){let i=n.message.reasoning_content??n.message.reasoning;i&&r.push({text:i,thought:!0})}if(n.message.content&&r.push(...pt(n.message.content,e)),n.message.tool_calls){for(let i of n.message.tool_calls)if(i.function){let s=io(i.function.arguments);if(s===null)continue;r.push({functionCall:{id:i.id,name:i.function.name,args:s}})}}o.candidates=[{content:{parts:r,role:"model"},finishReason:Ao(n.finish_reason),index:0,safetyRatings:[]}]}else o.candidates=[];if(o.responseId=t.id,o.createTime=t.created?t.created.toString():new Date().getTime().toString(),o.modelVersion=e.model,o.promptFeedback={safetyRatings:[]},t.usage){let r=t.choices?.[0]?.message,i=r?.reasoning_content??r?.reasoning??"",s=typeof r?.content=="string"?r.content:"";o.usageMetadata=yo(t.usage,{estimatedReasoningTokens:de(i.length),estimatedContentTokens:de(s.length)})}return o}function ci(t,e){let n=t.choices?.[0],o=new ne,r=e.toolCallParser;if(!r)throw new Error("convertOpenAIChunkToGemini requires requestContext.toolCallParser \u2014 attach a fresh StreamingToolCallParser at stream start.");if(n){let i=[];if(!e.responseParsingOptions?.taggedThinkingTags){let c=n.delta?.reasoning_content??n.delta?.reasoning;if(c){let u=po(c,e.reasoningDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});u&&i.push({text:u,thought:!0})}}if(typeof n.delta?.content=="string"){let c=po(n.delta.content,e.textDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});(c||n.finish_reason)&&i.push(...pt(c,e,!!n.finish_reason))}else n.finish_reason&&i.push(...pt("",e,!0));if(n.delta?.tool_calls)for(let c of n.delta.tool_calls){let u=c.index??0;c.function?.arguments?r.addChunk(u,c.function.arguments,c.id,c.function.name):r.addChunk(u,"",c.id,c.function?.name)}let s=!1;if(n.finish_reason){s=r.hasIncompleteToolCalls();let c=r.getCompletedToolCalls();for(let u of c)u.name&&i.push({functionCall:{id:u.id||`call_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,name:u.name,args:u.args}})}let a=s&&n.finish_reason!=="length"?"length":n.finish_reason,l={content:{parts:i,role:"model"},index:0,safetyRatings:[]};a&&(l.finishReason=Ao(a)),o.candidates=[l]}else o.candidates=[];return o.responseId=t.id,o.createTime=t.created?t.created.toString():new Date().getTime().toString(),o.modelVersion=e.model,o.promptFeedback={safetyRatings:[]},t.usage&&(o.usageMetadata=yo(t.usage,pi(e))),o}function di(t){let e=t.toolCallParser;if(!e)return null;let n=[],o=e.getStrictCompletedToolCalls(),r=e.hasIncompleteToolCalls();for(let s of o)s.name&&n.push({functionCall:{id:s.id||`call_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,name:s.name,args:s.args}});if(n.push(...pt("",t,!0)),n.length===0&&!r)return null;let i=new ne;return i.candidates=[{content:{parts:n,role:"model"},index:0,safetyRatings:[],finishReason:r?_.MAX_TOKENS:_.STOP}],i.responseId=`stream-flush-${Date.now()}`,i.createTime=new Date().getTime().toString(),i.modelVersion=t.model,i.promptFeedback={safetyRatings:[]},i}function pi(t){return{estimatedReasoningTokens:de(t.reasoningDeltaState?.emittedLength??0),estimatedContentTokens:de(t.textDeltaState?.emittedLength??0)}}function Ao(t){return t?{stop:_.STOP,length:_.MAX_TOKENS,content_filter:_.SAFETY,function_call:_.STOP,tool_calls:_.STOP}[t]||_.FINISH_REASON_UNSPECIFIED:_.FINISH_REASON_UNSPECIFIED}function fi(t){if(!t)return"stop";switch(t){case _.STOP:return"stop";case _.MAX_TOKENS:return"length";case _.SAFETY:case _.RECITATION:case _.BLOCKLIST:case _.PROHIBITED_CONTENT:case _.SPII:case _.IMAGE_SAFETY:case _.IMAGE_RECITATION:case _.IMAGE_PROHIBITED_CONTENT:case _.IMAGE_OTHER:return"content_filter";case _.NO_IMAGE:return"stop";default:return"stop"}}function dn(t){return t.role==="assistant"&&"tool_calls"in t&&Array.isArray(t.tool_calls)&&t.tool_calls.length>0}function mo(t){if(t.role!=="user"||!("content"in t)||!Array.isArray(t.content))return!1;let e=t.content[0];return e?.type==="text"&&e.text===Co}function gi(t){let e=[],n=new Map,o=new Map,r=new Map,i=new Set,s=new Set;for(let a=0;a<t.length;a+=1){let l=t[a];if(dn(l)){let c=[],u=new Set;for(let C of l.tool_calls){let T=C.id;!T||s.has(T)||u.has(T)||(u.add(T),c.push(C))}let f=new Set,d=[],m=[],h=!1;for(let C=a+1;C<t.length;C+=1){let T=t[C];if(T.role==="tool"&&"tool_call_id"in T){if(!T.tool_call_id){h=!1;continue}u.has(T.tool_call_id)&&!f.has(T.tool_call_id)?(f.add(T.tool_call_id),d.push(C),h=!0):h=!1;continue}if(mo(T)){h&&m.push(C);continue}if(!(T.role==="assistant"&&!dn(T)))break}let g=c.filter(C=>f.has(C.id));for(let C of g)s.add(C.id);n.set(a,g),o.set(a,d),r.set(a,m)}}for(let a=0;a<t.length;a+=1){if(i.has(a))continue;let l=t[a];if(dn(l)){let c=l.reasoning_content,u=n.get(a)??[];if(u.length>0){let f={...l};f.tool_calls=u,e.push(f);for(let d of o.get(a)??[]){let m=t[d];m&&(e.push(m),i.add(d))}for(let d of r.get(a)??[]){let m=t[d];m&&(e.push(m),i.add(d))}}else if(typeof l.content=="string"&&l.content.trim()||c){let f={...l};delete f.tool_calls,e.push(f)}else W.debug(`cleanOrphanedToolCalls: dropping assistant with ${l.tool_calls.length} orphaned tool call(s) and no text/reasoning content`)}else l.role==="tool"&&"tool_call_id"in l?W.debug(`cleanOrphanedToolCalls: dropping orphaned tool response ${l.tool_call_id||"<empty>"}`):mo(l)?W.debug("cleanOrphanedToolCalls: dropping orphaned split tool media message"):e.push(l)}return e}function ho(t){let e=[];for(let n of t){if(n.role==="assistant"&&e.length>0){let o=e[e.length-1];if(o.role==="assistant"){let r="tool_calls"in o?o.tool_calls||[]:[],i="tool_calls"in n?n.tool_calls||[]:[],s=o.content,a=n.content,l=Array.isArray(s)||Array.isArray(a),c;if(l){let f=Array.isArray(s)?s:typeof s=="string"&&s?[{type:"text",text:s}]:[],d=Array.isArray(a)?a:typeof a=="string"&&a?[{type:"text",text:a}]:[];c=[...f,...d]}else c=[typeof s=="string"?s:"",typeof a=="string"?a:""].filter(Boolean).join("")||null;let u=[...r,...i];o.content=c||null,u.length>0&&(o.tool_calls=u);continue}}e.push(n)}return e}var ft={convertGeminiToolParametersToOpenAI:To,convertGeminiToolsToOpenAI:ei,convertGeminiRequestToOpenAI:ti,convertGeminiResponseToOpenAI:ni,convertOpenAIResponseToGemini:ui,convertOpenAIChunkToGemini:ci,flushOpenAIStreamToGemini:di};p();p();var Tl=new Set(["ECONNRESET","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET","ConnectionClosed","ConnectionReset","ConnectionTimedOut"]),Ro=new Set(["EAI_AGAIN","ECONNREFUSED","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","UND_ERR_CONNECT_TIMEOUT","ConnectionRefused","FailedToOpenSocket","HostUnreachable","NetworkUnreachable"]);var pn="MATILDA_BASE_URL",mi=new Set(["localhost","127.0.0.1","[::1]"]);function mt(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function bl(t){try{let{host:e}=new URL(mt(t));return e===new URL(_e).host?"Matilda":e}catch{return t}}function Mo(t){let e;try{e=new URL(mt(t))}catch{return}if(!(!(e.protocol==="https:"||e.protocol==="http:"&&mi.has(e.hostname))||e.username||e.password||e.search||e.hash))return`${e.origin}${e.pathname.replace(/\/+$/,"")}/api/v1/code`}function _o(t=process.env){let e=t[pn]?.trim();return e?Mo(e):void 0}function Pe(t,e=process.env){let n=_o(e);if(!n||!t)return!1;try{return new URL(t).origin===new URL(n).origin}catch{return!1}}function fn(t){return t.apiKeyEnvKey===rt||hi(t.baseUrl)}function hi(t){if(!t)return!0;let e=t.endsWith("/")?t.slice(0,-1):t,n=null;try{n=new URL(e).hostname.toLowerCase()}catch{n=null}return n!==null&&(n==="matilda.maincode.com"||n.endsWith(".matilda.maincode.com")||n==="localhost"||n==="127.0.0.1"||n.endsWith(".matilda")||n==="core-api.matilda")||Pe(e)}var gt="its certificate is not from an authority this computer trusts. If it uses a private certificate authority, or your network inspects secure connections, set NODE_EXTRA_CA_CERTS to that authority's certificate file.",Ci=new Map([["UNABLE_TO_GET_ISSUER_CERT_LOCALLY",gt],["UNABLE_TO_VERIFY_LEAF_SIGNATURE",gt],["SELF_SIGNED_CERT_IN_CHAIN",gt],["DEPTH_ZERO_SELF_SIGNED_CERT",gt],["CERT_HAS_EXPIRED","its certificate has expired."],["ERR_TLS_CERT_ALTNAME_INVALID","its certificate is for another name. Check the address."]]),vo="its name does not resolve. Check the address and your network.",bo="it refused the connection. Check the address, and that the server is running.",yi=new Map([["ENOTFOUND",vo],["EAI_AGAIN",vo],["ECONNREFUSED",bo],["ConnectionRefused",bo],["UND_ERR_CONNECT_TIMEOUT","it did not answer. Check your network, VPN and proxy."]]),ko=5;function De(t,e){if($(t)!==void 0)return;let n=t;for(let o=0;o<=ko;o++){if(typeof n!="object"||n===null)return;let{code:r,cause:i}=n;if(typeof r=="string"){let s=mt(e),a=Ci.get(r);if(a)return new qe(`Could not connect securely to ${s}: ${a}`,r);if(Ro.has(r))return new qe(`Could not reach ${s}: ${yi.get(r)??"the network cannot reach it. Check your network, VPN and proxy."}`,r)}n=i}}function gn(t,e){let n=t;for(let o=0;o<=ko;o++){if(typeof n!="object"||n===null)return;let{name:r,cause:i}=n;if(r==="TimeoutError")return new qe(`${mt(e)} did not answer in time. Check your network, VPN and proxy.`,"ETIMEDOUT");n=i}}function Ti(t=process.env){let e=t[pn]?.trim();if(e&&!Mo(e))throw new He(`${pn} must be the HTTPS address of your Matilda deployment, such as https://matilda.example.com. HTTP is accepted only for localhost.`)}function K(t=process.env){return Ti(t),_o(t)??_e}p();p();p();Vt();var Si=new Set(["service.version","service.instance.id","session.id"]);function ie(t,e){Xe.warn(t),e?.push(t)}function wo(t,e){if(!t)return{};let n={};for(let o of t.split(",")){let r=o.trim();if(!r)continue;let i=r.indexOf("=");if(i<0){ie(`Skipping malformed OTEL_RESOURCE_ATTRIBUTES entry: "${r}" (hint: percent-encode literal commas as %2C)`,e);continue}let s=r.slice(0,i).trim();if(!s)continue;let a=r.slice(i+1).trim(),l;try{l=decodeURIComponent(s)}catch{ie(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES key "${s}", using raw key`,e),l=s}let c;try{c=decodeURIComponent(a)}catch{ie(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${l}", using raw value`,e),c=a}n[l]=c}return n}function mn(t,e,n){for(let o of Si)o in t&&(ie(`${e} cannot override reserved key "${o}"; ignoring`,n),delete t[o]);return t}function xo(t,e){if(t==null)return{};if(typeof t!="object"||Array.isArray(t))return ie("settings.telemetry.resourceAttributes must be an object; ignoring",e),{};let n={};for(let[o,r]of Object.entries(t)){let i=o.trim();if(!i){ie("settings.telemetry.resourceAttributes has an empty or whitespace-only key; ignoring",e);continue}typeof r=="string"?n[i]=r:ie(`settings.telemetry.resourceAttributes value for "${i}" must be a string (got ${typeof r}); ignoring`,e)}return n}function Ue(t){if(t!==void 0)return t==="true"||t==="1"}async function Ei(t){let e=t.argv??{},n=t.env??{},o=t.settings??{},r=e.telemetry??Ue(n.MATILDA_TELEMETRY_ENABLED)??o.enabled,i=e.telemetryOtlpEndpoint??n.MATILDA_TELEMETRY_OTLP_ENDPOINT??n.OTEL_EXPORTER_OTLP_ENDPOINT??o.otlpEndpoint,s=e.telemetryOtlpProtocol??n.MATILDA_TELEMETRY_OTLP_PROTOCOL??o.otlpProtocol,a=["grpc","http"].find(b=>b===s);if(s!==void 0&&a===void 0)throw new He(`Invalid telemetry OTLP protocol: ${String(s)}. Valid values are: grpc, http`);let l=e.telemetryLogPrompts??Ue(n.MATILDA_TELEMETRY_LOG_PROMPTS)??o.logPrompts,c=Ue(n.MATILDA_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES)??o.includeSensitiveSpanAttributes??!1,u=e.telemetryOutfile??n.MATILDA_TELEMETRY_OUTFILE??o.outfile,f=n.MATILDA_TELEMETRY_OTLP_TRACES_ENDPOINT??n.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT??o.otlpTracesEndpoint,d=n.MATILDA_TELEMETRY_OTLP_LOGS_ENDPOINT??n.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT??o.otlpLogsEndpoint,m=n.MATILDA_TELEMETRY_OTLP_METRICS_ENDPOINT??n.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT??o.otlpMetricsEndpoint,h=[],g=mn(wo(n.OTEL_RESOURCE_ATTRIBUTES,h),"OTEL_RESOURCE_ATTRIBUTES",h),C=mn(xo(o.resourceAttributes,h),"settings.telemetry.resourceAttributes",h),T={...g,...C},S=n.OTEL_SERVICE_NAME?.trim();S&&(T["service.name"]=S);let R=Object.keys(T).length?T:void 0,w=Ue(n.MATILDA_TELEMETRY_METRICS_INCLUDE_SESSION_ID)??o.metrics?.includeSessionId??!1;return{enabled:r,otlpEndpoint:i,otlpProtocol:a,otlpTracesEndpoint:f,otlpLogsEndpoint:d,otlpMetricsEndpoint:m,logPrompts:l,includeSensitiveSpanAttributes:c,outfile:u,resourceAttributes:R,metrics:{includeSessionId:w},resourceAttributeWarnings:h.length?h:void 0}}p();Vt();import*as Q from"node:fs";import*as Gt from"node:path";p();p();p();p();Vt();p();import{AsyncLocalStorage as Ai}from"node:async_hooks";var Io=new Ai;p();import*as G from"node:path";import{promises as yt}from"node:fs";p();p();import Ri from"crypto";var Ct=new Uint8Array(256),ht=Ct.length;function hn(){return ht>Ct.length-16&&(Ri.randomFillSync(Ct),ht=0),Ct.slice(ht,ht+=16)}p();var k=[];for(let t=0;t<256;++t)k.push((t+256).toString(16).slice(1));function Oo(t,e=0){return k[t[e+0]]+k[t[e+1]]+k[t[e+2]]+k[t[e+3]]+"-"+k[t[e+4]]+k[t[e+5]]+"-"+k[t[e+6]]+k[t[e+7]]+"-"+k[t[e+8]]+k[t[e+9]]+"-"+k[t[e+10]]+k[t[e+11]]+k[t[e+12]]+k[t[e+13]]+k[t[e+14]]+k[t[e+15]]}p();p();import vi from"crypto";var Cn={randomUUID:vi.randomUUID};function bi(t,e,n){if(Cn.randomUUID&&!e&&!t)return Cn.randomUUID();t=t||{};let o=t.random||(t.rng||hn)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,e){n=n||0;for(let r=0;r<16;++r)e[n+r]=o[r];return e}return Oo(o)}var yn=bi;import*as X from"os";var Tt=L("OPENAI_LOGGER"),Mi="########",_i=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function ki(t,e){let n=e||process.cwd();if(!t)return G.join(n,"logs","openai");let o=t;return t==="~"||t.startsWith("~/")?o=G.join(X.homedir(),t.slice(1)):G.isAbsolute(t)||(o=G.resolve(n,t)),G.normalize(o)}function Po(t){return t&&t.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function wi(t){let e=t.split("#");if(e.length!==3)return;let[,n,o]=e;if(!(!n||!o||!/^\d+$/.test(o)))return`subagent-${n}`}function xi(t){if(t)return le(t)?Po(t):Po(wi(t))}function Ii(t){if(!t)return;let e=t.indexOf(Mi);if(e>0)return t.slice(0,e);if(_i.test(t))return t;let n=t.split("#");if(n.length>=3&&n[0])return n[0]}function Oi(t){let e=t?.trim(),n=Ii(e);return!e&&!n?null:{...e?{promptId:e}:{},...n?{sessionId:n}:{}}}var Ne=class{logDir;initialized=!1;constructor(e,n){this.logDir=ki(e,n)}async initialize(){if(!this.initialized)try{await yt.mkdir(this.logDir,{recursive:!0}),this.initialized=!0}catch(e){throw Tt.error("Failed to initialize OpenAI logger:",e),new Error(`Failed to initialize OpenAI logger: ${e}`)}}async logInteraction(e,n,o,r){this.initialized||await this.initialize();let i=new Date().toISOString().replace(/:/g,"-"),s=yn().slice(0,8),a=xi(r),l=a?`openai-${i}-${s}-${a}.json`:`openai-${i}-${s}.json`,c=G.join(this.logDir,l),u={timestamp:new Date().toISOString(),request:e,response:n||null,error:o?{message:o.message,stack:o.stack}:null,context:Oi(r),system:{hostname:X.hostname(),platform:X.platform(),release:X.release(),nodeVersion:process.version}};try{return await yt.writeFile(c,JSON.stringify(u,null,2),"utf-8"),c}catch(f){throw Tt.error("Failed to write OpenAI log file:",f),new Error(`Failed to write OpenAI log file: ${f}`)}}async getLogFiles(e){this.initialized||await this.initialize();try{let o=(await yt.readdir(this.logDir)).filter(r=>r.startsWith("openai-")&&r.endsWith(".json")).map(r=>G.join(this.logDir,r)).sort().reverse();return e?o.slice(0,e):o}catch(n){return n.code==="ENOENT"?[]:(Tt.error("Failed to read OpenAI log directory:",n),[])}}async readLogFile(e){try{let n=await yt.readFile(e,"utf-8");return JSON.parse(n)}catch(n){throw Tt.error(`Failed to read log file ${e}:`,n),new Error(`Failed to read log file: ${n}`)}}},ru=new Ne;p();var Pi="MATILDA_CODE_PROFILE_RUNTIME";function Do(t=process.env){return t[Pi]==="1"}var Sn=class{enabled;now;startedAt;requestIndex=0;openAIWireRequestIndex=0;requests=[];openaiWireRequests=[];tools=Uo();constructor(e={}){this.enabled=e.enabled??Do(),this.now=e.now??(()=>new Date().toISOString()),this.startedAt=this.now()}reset(e={}){this.enabled=e.enabled??Do(),this.startedAt=this.now(),this.requestIndex=0,this.openAIWireRequestIndex=0,this.requests=[],this.openaiWireRequests=[],this.tools=Uo()}isEnabled(){return this.enabled}recordGenerateContentRequest(e,n){this.enabled&&(this.requestIndex+=1,this.requests.push({index:this.requestIndex,timestamp:this.now(),source:n.source,model:e.model,stream:n.stream,serializedBytes:D(Ki(e)),contents:No(e.contents),systemInstructionBytes:Ni(e.config?.systemInstruction),generationConfigBytes:D(Lo(e.config)),tools:Fi(e.config?.tools)}))}recordOpenAIWireRequest(e){this.enabled&&(this.openAIWireRequestIndex+=1,this.openaiWireRequests.push({index:this.openAIWireRequestIndex,timestamp:this.now(),...Di(e)}))}recordToolUse(e,n){if(!this.enabled)return;let o=D(n),r=this.getToolNameDiagnostics(e);r.uses+=1,r.argBytes+=o,r.maxArgBytes=Math.max(r.maxArgBytes,o),this.tools.toolUseCount+=1,this.tools.totalToolUseArgBytes+=o,this.tools.maxToolUseArgBytes=Math.max(this.tools.maxToolUseArgBytes,o)}recordToolResult(e){if(!this.enabled)return;let n=this.getToolNameDiagnostics(e.name);n.results+=1,n.resultBytes+=e.resultBytes,n.maxResultBytes=Math.max(n.maxResultBytes,e.resultBytes),e.isError&&(n.errors+=1,this.tools.toolResultErrorCount+=1),this.tools.toolResultCount+=1,this.tools.totalToolResultBytes+=e.resultBytes,this.tools.maxToolResultBytes=Math.max(this.tools.maxToolResultBytes,e.resultBytes)}snapshot(){return{enabled:this.enabled,startedAt:this.startedAt,requests:this.requests.map(e=>({...e,contents:{...e.contents,roleCounts:{...e.contents.roleCounts}},tools:{...e.tools}})),openaiWireRequests:this.openaiWireRequests.map(e=>({...e,messageBytesByRole:{...e.messageBytesByRole},topLevelKeys:[...e.topLevelKeys]})),tools:{...this.tools,byName:Object.fromEntries(Object.entries(this.tools.byName).map(([e,n])=>[e,{...n}]))}}}getToolNameDiagnostics(e){let n=this.tools.byName[e];if(n)return n;let o=Ui();return this.tools.byName[e]=o,o}},En=new Sn;function Di(t){let e=pe(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],r={};for(let i of n){let s=pe(i),a=typeof s.role=="string"?s.role:"unknown";r[a]=(r[a]??0)+D(s.content)}return{model:typeof e.model=="string"?e.model:"unknown",stream:e.stream===!0,bodyBytes:D(t),messageCount:n.length,messageBytesByRole:r,toolsCount:o.length,toolSchemaBytes:D(o),topLevelKeys:Object.keys(e).sort()}}function Uo(){return{toolUseCount:0,toolResultCount:0,toolResultErrorCount:0,totalToolUseArgBytes:0,maxToolUseArgBytes:0,totalToolResultBytes:0,maxToolResultBytes:0,byName:Object.create(null)}}function Ui(){return{uses:0,argBytes:0,maxArgBytes:0,results:0,errors:0,resultBytes:0,maxResultBytes:0}}function No(t){let e={count:0,roleCounts:{},partCount:0,textBytes:0,functionCallCount:0,functionCallArgBytes:0,functionResponseCount:0,functionResponseBytes:0,inlineDataCount:0,inlineDataBytes:0,fileDataCount:0},n=Array.isArray(t)?t:t==null?[]:[t];for(let o of n){if(e.count+=1,typeof o=="string"){e.roleCounts.user=(e.roleCounts.user??0)+1,e.partCount+=1,e.textBytes+=D(o);continue}let r=pe(o),i=typeof r.role=="string"?r.role:"unknown";e.roleCounts[i]=(e.roleCounts[i]??0)+1;let s=Array.isArray(r.parts)?r.parts:[];Li(s,e)}return e}function Ni(t){return No(t).textBytes}function Li(t,e){for(let n of t){if(e.partCount+=1,typeof n=="string"){e.textBytes+=D(n);continue}let o=pe(n);typeof o.text=="string"&&(e.textBytes+=D(o.text));let r=Tn(o.functionCall);r&&(e.functionCallCount+=1,e.functionCallArgBytes+=D(r.args));let i=Tn(o.functionResponse);i&&(e.functionResponseCount+=1,e.functionResponseBytes+=D(i.response)+D(i.parts));let s=Tn(o.inlineData);s&&(e.inlineDataCount+=1,e.inlineDataBytes+=D(s.data)),o.fileData&&(e.fileDataCount+=1)}}function Fi(t){let e=Array.isArray(t)?t:[],n=0;for(let o of e){let r=pe(o),i=Array.isArray(r.functionDeclarations)?r.functionDeclarations:[];n+=i.length}return{count:e.length,functionDeclarationCount:n,schemaBytes:D(e)}}function Ki(t){return{model:t.model,contents:t.contents,config:Lo(t.config)}}function Lo(t){if(!t)return;let e=pe(t),n={};for(let[o,r]of Object.entries(e))o!=="abortSignal"&&(n[o]=r);return n}function D(t){return t==null?0:typeof t=="string"?Buffer.byteLength(t,"utf8"):Buffer.byteLength(Gi(t),"utf8")}function Gi(t){try{return JSON.stringify(t)??""}catch{return"[unserializable]"}}function pe(t){return typeof t=="object"&&t!==null?t:{}}function Tn(t){return typeof t=="object"&&t!==null?t:null}p();function Fo(t){let e=t.candidates?.[0]?.content?.parts;return!e||e.length===0?!1:e.some($i)}function $i(t){if(t===null||typeof t!="object")return!1;let e=t;return typeof e.text=="string"&&e.text.length>0||e.functionCall!==void 0||e.inlineData!==void 0||e.executableCode!==void 0||e.thought===!0}function Ko(){let t=Wn.getStore();return{attempt:t?.attempt??1,requestSetupMs:t?.requestSetupMs,retryTotalDelayMs:t?.retryTotalDelayMs}}var se=L("LOGGING_CONTENT_GENERATOR"),Bi=4096,Go="...[truncated]",ji=Bi-Go.length,Le=class{constructor(e,n,o){this.wrapped=e;this.config=n;this.modalities=o.modalities,this.splitToolMedia=o.splitToolMedia,this.generatorAuthType=o.authType,o.enableOpenAILogging&&(this.openaiLogger=new Ne(o.openAILoggingDir,n.getWorkingDir()),this.schemaCompliance=o.schemaCompliance)}openaiLogger;schemaCompliance;modalities;splitToolMedia;generatorAuthType;getWrapped(){return this.wrapped}logApiRequest(e,n,o){let r=JSON.stringify(e);zt(this.config,new qt(n,o,r,q.getStore()))}_logApiResponse(e,n,o,r,i,s){Ht(this.config,new Yt(e,o,n,r,this.generatorAuthType,i,s,q.getStore()))}_logApiError(e,n,o,r,i){let s=Jn(o),a=Me(o),l=o?.requestID||o?.request_id||e,c=$(o);Wt(this.config,new Jt({responseId:l,model:r,durationMs:n,promptId:i,authType:this.generatorAuthType,errorMessage:s,errorType:a,statusCode:c,subagentName:q.getStore()}))}safelyLogApiError(e,n,o,r,i){try{this._logApiError(e,n,o,r,i)}catch(s){se.warn("Failed to log API error:",s)}}safelyLogApiResponse(e,n,o,r,i,s){try{this._logApiResponse(e,n,o,r,i,s)}catch(a){se.warn("Failed to log API response:",a)}}getClientVisibleModelId(e,n){return("isManagedMatildaModel"in this.config&&typeof this.config.isManagedMatildaModel=="function"?this.config.isManagedMatildaModel(e):!1)&&"getPublicModelId"in this.config&&typeof this.config.getPublicModelId=="function"?this.config.getPublicModelId(e):n||e}async generateContent(e,n){let o=Ko(),r=tt(e.model,n);try{r.setAttribute("llm_request.stream",!1)}catch{}let i=jt.setSpan(V.active(),r),s=Date.now(),a=le(n),l=this.startCaptureSession();try{En.recordGenerateContentRequest(e,{stream:!1,source:"generateContent"}),a||(Qe(this.config,r,e.config?.systemInstruction),Ze(this.config,r,e.config?.tools));let c=await V.with(i,async()=>{a||this.logApiRequest(this.toContents(e.contents),e.model,n);let u=await l.wrap(()=>this.wrapped.generateContent(e,n)),f=Date.now()-s,d=a?void 0:this.extractResponseText(u);a||et(this.config,r,d),this.safelyLogApiResponse(u.responseId??"",f,this.getClientVisibleModelId(e.model,u.modelVersion),n,u.usageMetadata,d);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),u,void 0,n)}catch(m){se.warn("Failed to log OpenAI interaction:",m)}return u});return oe(r,{success:!0,inputTokens:c.usageMetadata?.promptTokenCount,outputTokens:c.usageMetadata?.candidatesTokenCount,cachedInputTokens:c.usageMetadata?.cachedContentTokenCount,durationMs:Date.now()-s,responseId:c.responseId||void 0,finishReason:c.candidates?.[0]?.finishReason||void 0,thoughtsTokenCount:c.usageMetadata?.thoughtsTokenCount,subagentName:q.getStore()||void 0,...o}),c}catch(c){let u=Date.now()-s,f=e.config?.abortSignal?.aborted??!1;throw oe(r,{success:!1,durationMs:u,error:f?ot:nt,errorType:Me(c),errorStatusCode:$(c),subagentName:q.getStore()||void 0,...o}),await V.with(i,async()=>{this.safelyLogApiError("",u,c,this.getClientVisibleModelId(e.model),n);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,c,n)}catch(d){se.warn("Failed to log OpenAI interaction:",d)}}),c}}async generateContentStream(e,n){let o=Ko(),r=tt(e.model,n);try{r.setAttribute("llm_request.stream",!0)}catch{}let i=jt.setSpan(V.active(),r),s=Date.now(),a=le(n),l=this.startCaptureSession(),c;try{En.recordGenerateContentRequest(e,{stream:!0,source:"generateContentStream"}),a||(Qe(this.config,r,e.config?.systemInstruction),Ze(this.config,r,e.config?.tools)),c=await V.with(i,async()=>(a||this.logApiRequest(this.toContents(e.contents),e.model,n),l.wrap(()=>this.wrapped.generateContentStream(e,n))))}catch(f){let d=Date.now()-s;V.with(i,()=>this.safelyLogApiError("",d,f,e.model,n));let m=e.config?.abortSignal?.aborted??!1;oe(r,{success:!1,durationMs:d,error:m?ot:nt,errorType:Me(f),errorStatusCode:$(f),subagentName:q.getStore()||void 0,...o});try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,f,n)}catch(h){se.warn("Failed to log OpenAI interaction:",h)}throw f}let u;if(this.openaiLogger)try{u=await l.resolve(e)}catch(f){se.warn("Failed to resolve OpenAI request:",f)}return V.with(i,()=>this.loggingStreamWrapper(c,s,n,e.model,u,r,i,e.config?.abortSignal,o))}startCaptureSession(){let e,n=!this.openaiLogger;return{wrap:o=>n?o():Io.run(r=>{e=r},o),resolve:async o=>this.openaiLogger?e??await this.buildOpenAIRequestForLogging(o):void 0}}async*loggingStreamWrapper(e,n,o,r,i,s,a,l,c){let u=le(o),f=!u||!!this.openaiLogger,d=[],m="",h="",g,C=!1,T,S=!1,R,w=q.getStore(),b,x=!1,j=I=>a?V.with(a,I):I(),$t=5*6e4,P,ae=s?()=>{x||(P!==void 0&&clearTimeout(P),P=setTimeout(()=>{try{s.setAttribute("stream.timed_out",!0)}catch{}oe(s,{success:!1,durationMs:Date.now()-n,error:"Stream span timed out (idle)",responseId:m||void 0,subagentName:w||void 0,...c}),x=!0},$t),P.unref())}:void 0;try{for await(let U of e){!m&&U.responseId&&(m=U.responseId),!h&&U.modelVersion&&(h=U.modelVersion),f&&d.push(U),U.usageMetadata&&(g=U.usageMetadata);let ve=U.candidates?.[0];ve?.finishReason&&(T=ve.finishReason),U.functionCalls?.length&&(S=!0),b===void 0&&Fo(U)&&(b=Date.now()-n),ae?.(),yield U,P!==void 0&&(clearTimeout(P),P=void 0)}P!==void 0&&(clearTimeout(P),P=void 0);let I=Date.now()-n,Z=f?this.consolidateGeminiResponsesForLogging(d):void 0,ze=u?void 0:this.extractResponseText(Z),ee=!T&&!S?new Error("Model stream ended without a finish reason"):void 0;ee&&(C=!0,R=ee),x||(ee?(j(()=>this.safelyLogApiError(m,I,ee,this.getClientVisibleModelId(r,h),o)),await j(()=>this.safelyLogOpenAIInteraction(i,Z,ee,o))):(j(()=>this.safelyLogApiResponse(m,I,this.getClientVisibleModelId(r,h),o,g,ze)),!u&&s&&et(this.config,s,ze),await j(()=>this.safelyLogOpenAIInteraction(i,Z,void 0,o))))}catch(I){if(C=!0,R=I,!x){let Z=Date.now()-n;j(()=>this.safelyLogApiError(m,Z,I,this.getClientVisibleModelId(r,h),o)),await j(()=>this.safelyLogOpenAIInteraction(i,void 0,I,o))}throw I}finally{if(P!==void 0&&clearTimeout(P),s&&!x){let I=l?.aborted??!1;oe(s,{success:!C,inputTokens:g?.promptTokenCount,outputTokens:g?.candidatesTokenCount,cachedInputTokens:g?.cachedContentTokenCount,ttftMs:b,durationMs:Date.now()-n,error:C?I?ot:nt:void 0,responseId:m||void 0,finishReason:T,thoughtsTokenCount:g?.thoughtsTokenCount,subagentName:w||void 0,errorType:R?Me(R):void 0,errorStatusCode:R?$(R):void 0,...c})}}}async buildOpenAIRequestForLogging(e){if(!this.openaiLogger)return;let n=this.createLoggingRequestContext(e.model),o=ft.convertGeminiRequestToOpenAI(e,n,{cleanOrphanToolCalls:!1}),r={model:e.model,messages:o};return e.config?.tools&&(r.tools=await ft.convertGeminiToolsToOpenAI(e.config.tools,this.schemaCompliance??"auto")),e.config?.temperature!==void 0&&(r.temperature=e.config.temperature),e.config?.topP!==void 0&&(r.top_p=e.config.topP),e.config?.maxOutputTokens!==void 0&&(r.max_tokens=e.config.maxOutputTokens),e.config?.presencePenalty!==void 0&&(r.presence_penalty=e.config.presencePenalty),e.config?.frequencyPenalty!==void 0&&(r.frequency_penalty=e.config.frequencyPenalty),r}createLoggingRequestContext(e){return{model:e,modalities:this.modalities??{},splitToolMedia:this.splitToolMedia??!0,startTime:0}}async logOpenAIInteraction(e,n,o,r){if(!this.openaiLogger||!e)return;let i=n?this.convertGeminiResponseToOpenAIForLogging(n,e):void 0;await this.openaiLogger.logInteraction(e,i,o instanceof Error?o:o?new Error(String(o)):void 0,r)}async safelyLogOpenAIInteraction(e,n,o,r){try{await this.logOpenAIInteraction(e,n,o,r)}catch(i){se.warn("Failed to log OpenAI interaction:",i)}}convertGeminiResponseToOpenAIForLogging(e,n){let o=new ne;return Object.assign(o,e),o.modelVersion=this.getClientVisibleModelId(n.model,e.modelVersion),ft.convertGeminiResponseToOpenAI(o,this.createLoggingRequestContext(n.model))}consolidateGeminiResponsesForLogging(e){if(e.length===0)return;let n=new ne,o=[],r=new Map,i,s;for(let c of e){c.usageMetadata&&(s=c.usageMetadata);let u=c.candidates?.[0];u?.finishReason&&(i=u.finishReason);let f=u?.content?.parts??[];for(let d of f){if(typeof d=="string"){o.push({text:d});continue}if("text"in d){d.text&&o.push({text:d.text,...d.thought?{thought:!0}:{},...d.thoughtSignature?{thoughtSignature:d.thoughtSignature}:{}});continue}if("functionCall"in d&&d.functionCall){let m=d.functionCall.id||d.functionCall.name||"tool_call",h=r.get(m),g={functionCall:d.functionCall};h!==void 0?o[h]=g:(r.set(m,o.length),o.push(g));continue}if("functionResponse"in d&&d.functionResponse){o.push({functionResponse:d.functionResponse});continue}o.push(d)}}let a=e[e.length-1],l=a.candidates?.[0];return n.responseId=a.responseId,n.createTime=a.createTime,n.modelVersion=a.modelVersion,n.promptFeedback=a.promptFeedback,n.usageMetadata=s,n.candidates=[{content:{role:l?.content?.role||"model",parts:o},...i?{finishReason:i}:{},index:0,safetyRatings:l?.safetyRatings||[]}],n}extractResponseText(e){let n=e?.candidates?.[0]?.content?.parts;if(!n?.length)return;let o="",r=!1,i=!1,s=a=>{if(r=!0,i)return;let l=ji-o.length;if(a.length<=l){o+=a;return}o+=a.slice(0,Math.max(0,l)),i=!0};for(let a of n){if(typeof a=="string"){s(a);continue}"text"in a&&typeof a.text=="string"&&!("thought"in a&&a.thought)&&s(a.text)}if(r)return i?`${o}${Go}`:o}async countTokens(e){return this.wrapped.countTokens(e)}async embedContent(e){return this.wrapped.embedContent(e)}useSummarizedThinking(){return this.wrapped.useSummarizedThinking()}toContents(e){return Array.isArray(e)?e.map(n=>this.toContent(n)):[this.toContent(e)]}toContent(e){return Array.isArray(e)?{role:"user",parts:this.toParts(e)}:typeof e=="string"?{role:"user",parts:[{text:e}]}:"parts"in e?{...e,parts:e.parts?this.toParts(e.parts.filter(n=>n!=null)):[]}:{role:"user",parts:[this.toPart(e)]}}toParts(e){return e.map(n=>this.toPart(n))}toPart(e){if(typeof e=="string")return{text:e};if("thought"in e&&e.thought){let n=`[Thought: ${e.thought}]`,o={...e};if(delete o.thought,"functionCall"in o||"functionResponse"in o||"inlineData"in o||"fileData"in o)return o;let i=o.text,s=i?String(i):"",a=s?`${s}
15
+ ${n}`:n;return{...o,text:a}}return e}};p();var An="x-matilda-organization-id",Vi=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Pu(t){if(t!==void 0){if(typeof t!="string"||t.length!==36||!Vi.test(t))throw new Error("--organization-id must be a single UUID.");return t.toLowerCase()}}function Rn(t){if(t)try{let e=new URL(t);if((e.hostname==="matilda.maincode.com"&&e.protocol==="https:"&&!e.port||e.hostname==="core-api.matilda"&&(e.protocol==="http:"||e.protocol==="https:"))&&!e.username&&!e.password&&!e.search&&!e.hash)return e}catch{}}function vn(t,e,n){if(e===void 0&&n===void 0)return;let o=Rn(t.baseUrl);if(!o||o.pathname.replace(/\/$/,"")!=="/api/v1/code"||t.authType!=="openai")throw new Error("Organization selection and credit spending require the first-party Matilda Core Code endpoint.")}function $o(t){for(let e of Object.keys(t??{})){let n=e.toLowerCase();if(n===An)throw new Error("Select the organization with --organization-id, not customHeaders.");if(n.startsWith("x-matilda-usage-credit-"))throw new Error("Code credit spending through customHeaders is not supported.")}}function Du(t,e,n,o,r){vn(n,o,r);let i=Rn(n.baseUrl),s=Rn(t instanceof Request?t.url:String(t));if(!s||s.origin!==i.origin||s.pathname!=="/api/v1/code/chat/completions")throw new Error("The selected organization cannot be sent to this endpoint.");let a=e.get(An);if(a!==null&&a!==o)throw new Error("The request organization conflicts with --organization-id.");o!==void 0&&e.set(An,o)}p();function Bo(t){switch(t){case"openai":return"OPENAI_API_KEY";default:return"API_KEY"}}function jo(t){switch(t){case"openai":return"OPENAI_MODEL";default:return"MODEL"}}var fe=class extends Error{constructor(e){super(e),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},St=class extends fe{code="STRICT_MISSING_CREDENTIALS";constructor(e,n,o){let r=e||"(unknown)",i=n||"(unknown)";super(`Missing credentials for modelProviders model '${i}'. `+(o?`Current configured envKey: '${o}'. Set that environment variable, or update modelProviders.${r}[].envKey.`:`Configure modelProviders.${r}[].envKey and set that environment variable.`))}},Et=class extends fe{code="STRICT_MISSING_MODEL_ID";constructor(e){super(`Missing model id for strict modelProviders resolution (authType: ${e}).`)}},At=class extends fe{code="MISSING_API_KEY";constructor(e){super(`Missing API key for ${e.authType} auth. Current model: '${e.model||"(unknown)"}', baseUrl: '${e.baseUrl||"(default)"}'. Provide an API key via settings (security.auth.apiKey), or set the environment variable '${e.envKey}'.`)}},Rt=class extends fe{code="MISSING_MODEL";constructor(e){super(`Missing model for ${e.authType} auth. Set the environment variable '${e.envKey}'.`)}};p();import wn from"node:process";p();function Ku(t,e,n,o=2048){let r=e-n-o;return!Number.isFinite(r)||r<=0?0:Math.min(t,r)}var v={"32k":32768,"64k":65536,"128k":131072,"200k":2e5,"256k":262144,"272k":272e3,"400k":4e5,"512k":524288,"1m":1e6,"4k":4096,"8k":8192,"16k":16384};function vt(t){let e=(t??"").toLowerCase().trim();return e=e.replace(/^.*\//,""),e=e.split("|").pop()??e,e=e.split(":").pop()??e,e=e.replace(/\s+/g,"-"),e=e.replace(/-preview/g,""),e.match(/^kimi-k2-\d{4}$/)||(e=e.replace(/-(?:\d{4,}|\d+x\d+b|v\d+(?:\.\d+)*|(?<=-[^-]+-)\d+(?:\.\d+)+|latest|exp)$/g,"")),e=e.replace(/-(?:\d?bit|int[48]|bf16|fp16|q[45]|quantized)$/g,""),e}var zi=[[/^gemini-3/,v["1m"]],[/^gemini-/,v["1m"]],[/^gpt-5/,v["272k"]],[/^gpt-/,v["128k"]],[/^o\d/,v["200k"]],[/^claude-/,v["200k"]],[/^glm-5(\.[01])?(-|$)/,202752],[/^glm-(?:[5-9]|\d{2,})/,v["1m"]],[/^glm-/,202752],[/^matilda-code$/,v["1m"]],[/^matilda/,v["256k"]],[/^ornith/,v["64k"]],[/^kimi-/,v["256k"]],[/^seed-oss/,v["512k"]]],Vo=[[/^gemini-3/,v["64k"]],[/^gemini-/,v["8k"]],[/^gpt-5/,v["128k"]],[/^gpt-/,v["16k"]],[/^o\d/,v["128k"]],[/^claude-opus-4-6/,v["128k"]],[/^claude-sonnet-4-6/,v["64k"]],[/^claude-/,v["64k"]],[/^glm-5\.2/,v["64k"]],[/^glm-5/,v["64k"]],[/^glm-4\.7/,v["16k"]],[/^matilda-code$/,v["64k"]],[/^matilda$/,v["64k"]],[/^matilda-core$/,v["64k"]],[/^ornith/,v["32k"]],[/^kimi-k2\.5/,v["32k"]]];function Wi(t,e="input"){let n=vt(t),o=e==="output"?Vo:zi;for(let[r,i]of o)if(r.test(n))return i}function Gu(t){let e=vt(t);return Vo.some(([n])=>n.test(e))}function Hi(t,e="input"){return Wi(t,e)}function bt(t,e="input"){return Hi(t,e)??(e==="output"?32e3:131072)}p();p();var zo={image:!0,pdf:!0,audio:!0,video:!0},qi=[[/^gemini-3/,zo],[/^gemini-/,zo],[/^gpt-5/,{image:!0}],[/^gpt-/,{image:!0}],[/^o\d/,{image:!0}],[/^claude-/,{image:!0,pdf:!0}],[/^glm-4\.5v/,{image:!0}],[/^glm-5(?:-|$)/,{}],[/^glm-/,{}],[/^kimi-k2\.5/,{image:!0,video:!0}],[/^kimi-/,{}],[/^doubao-seed(ance|ream)/,{}],[/^doubao-seed/,{image:!0}],[/^doubao-.*(vision|vl)/,{image:!0}],[/^doubao/,{}]];function Mt(t){let e=vt(t);for(let[n,o]of qi)if(n.test(e))return{...o};return{}}p();function Wo(t,e,n={kind:"default"}){for(let o of t)if(Ho(o.value))return{value:o.value,source:o.source};return{value:e,source:n}}function bn(t){for(let e of t)if(Ho(e.value))return{value:e.value,source:e.source}}function Ho(t){return!(t==null||typeof t=="string"&&t.trim()==="")}function _t(t){return{kind:"cli",detail:t}}function Ji(t){return{kind:"env",envKey:t}}function Fe(t){return{kind:"settings",settingsPath:t}}function ge(t,e,n){return{kind:"modelProviders",authType:t,modelId:e,detail:n}}function Mn(t){return{kind:"default",detail:t}}function kt(t){return{kind:"computed",detail:t}}function wt(t,e,n){let o=t[e];return{value:o!==void 0?n?n(o):o:void 0,source:Ji(e)}}function N(t,e){return{value:t,source:e}}p();var me=["samplingParams","timeout","maxRetries","retryErrorCodes","enableCacheControl","schemaCompliance","reasoning","contextWindowSize","customHeaders","extra_body","modalities","splitToolMedia","openAIRequestProfile"],qo=["model","apiKey","apiKeyEnvKey","baseUrl"],xt=[...qo,...me],Jo={openai:{apiKey:["OPENAI_API_KEY"],baseUrl:["OPENAI_BASE_URL"],model:["OPENAI_MODEL","MATILDA_MODEL"]}},Yo={openai:it};var he="MATILDA_API_KEY",Yi="matilda-code-1.0";function Xi(t,e){if(!t)return!0;try{let{hostname:n}=new URL(t);return n==="matilda.maincode.com"||n.endsWith(".matilda.maincode.com")||Pe(t,e)}catch{return!1}}function Qi(t,e,n,o){if(o?.timeout!==void 0)return;let r=t.MATILDA_CODE_API_TIMEOUT_MS;if(r===void 0)return;let i=Number(r);Number.isFinite(i)&&i>0&&(e.timeout=Math.floor(i),n.timeout={kind:"env",envKey:"MATILDA_CODE_API_TIMEOUT_MS"})}function nc(t){let{authType:e,cli:n,settings:o,env:r,modelProvider:i,proxy:s}=t,a=[],l={},c=e?Jo[e]:{model:[],apiKey:[],baseUrl:[]},u=[];e&&i&&u.push(N(i.id,ge(e,i.id,"model.id"))),n?.model&&u.push(N(n.model,_t("--model"))),e==="openai"&&r[he]&&!r.OPENAI_MODEL&&!r.MATILDA_MODEL&&u.push(N(Yi,{kind:"env",envKey:he}));for(let b of c.model)u.push(wt(r,b));o?.model&&u.push(N(o.model,Fe("model.name")));let f=e?Yo[e]:"",d=Wo(u,f,Mn(f));l.model=d.source;let m=[];if(e&&i?.envKey){let b=r[i.envKey];b&&m.push(N(b,{kind:"env",envKey:i.envKey,via:ge(e,i.id,"envKey")}))}if(n?.apiKey&&m.push(N(n.apiKey,_t("--openaiApiKey"))),!i?.envKey){let b=r[he];e==="openai"&&b&&Xi(r.OPENAI_BASE_URL,r)&&m.push(N(b,{kind:"env",envKey:he}));for(let x of c.apiKey)m.push(wt(r,x))}o?.apiKey&&m.push(N(o.apiKey,Fe("security.auth.apiKey")));let h=bn(m);h&&(l.apiKey=h.source);let g=[];e&&i?.baseUrl&&g.push(N(i.baseUrl,ge(e,i.id,"baseUrl"))),n?.baseUrl&&g.push(N(n.baseUrl,_t("--openaiBaseUrl"))),e==="openai"&&r[he]&&!r.OPENAI_BASE_URL&&g.push(N(K(r),{kind:"env",envKey:he}));for(let b of c.baseUrl)g.push(wt(r,b));o?.baseUrl&&g.push(N(o.baseUrl,Fe("security.auth.baseUrl")));let C=bn(g)??(e==="openai"?{value:K(r),source:Mn("the configured Matilda endpoint")}:void 0);C&&(l.baseUrl=C.source);let T;e&&i?.envKey&&(T=i.envKey,l.apiKeyEnvKey={...ge(e,i.id,"envKey"),envKey:i.envKey});let S=It(o?.generationConfig,i?.generationConfig,e,i?.id??d.value,r),R=S.config;Object.assign(l,S.sources);let w={authType:e,model:d.value||"",apiKey:h?.value,apiKeyEnvKey:T,baseUrl:C?.value,proxy:s,...R};return s&&(l.proxy=kt("Config.getProxy()")),l.authType=kt("provided by caller"),{config:w,sources:l,warnings:a}}function It(t,e,n,o,r){let i={},s=Zi(t,e,n,o,i);return Qi(r,s,i,e),{config:s,sources:i}}function Zi(t,e,n,o,r){let i={};for(let s of me)n&&e&&s in e?(i[s]=e[s],r[s]=ge(n,o||"",`generationConfig.${s}`)):t&&s in t&&(i[s]=t[s],r[s]=Fe(`model.generationConfig.${s}`));return i.modalities===void 0&&o&&(i.modalities=Mt(o),r.modalities=kt("auto-detected from model")),i}p();var Ot="$runtime|";function sc(t){let e=t;for(;e.startsWith(Ot);){let n=e.split("|").slice(2).join("|");if(!n)break;e=n}return e}p();p();var kn=L("MODEL_REGISTRY");function Xo(t){if(Object.values(B).includes(t))return t}function Qo(t,e){return e?`${t}\0${e}`:t}var Pt=class{modelsByAuthType;constructor(e){if(this.modelsByAuthType=new Map,e)for(let[n,o]of Object.entries(e)){let r=Xo(n);if(!r){kn.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(B).join(", ")}. Skipping.`);continue}this.registerAuthTypeModels(r,o)}}registerAuthTypeModels(e,n){let o=new Map;for(let r of n){let i=Qo(r.id,r.baseUrl);if(o.has(i)){kn.warn(`Duplicate model id "${r.id}"${r.baseUrl?` with baseUrl "${r.baseUrl}"`:""} for authType "${e}". Using the first registered config.`);continue}let s=this.resolveModelConfig(r,e);o.set(i,s)}this.modelsByAuthType.set(e,o)}getModelsForAuthType(e){let n=this.modelsByAuthType.get(e);return n?Array.from(n.values()).map(o=>({id:o.id,label:o.name,description:o.description,capabilities:o.capabilities,authType:o.authType,isVision:o.capabilities?.vision??!1,contextWindowSize:o.generationConfig.contextWindowSize??bt(o.id),modalities:o.generationConfig.modalities??Mt(o.id),baseUrl:o.baseUrl,envKey:o.envKey})):[]}getModel(e,n,o){let r=this.modelsByAuthType.get(e);if(!r)return;if(o)return r.get(Qo(n,o));let i=r.get(n);if(i)return i;for(let s of r.values())if(s.id===n)return s}hasModel(e,n,o){return this.getModel(e,n,o)!==void 0}getDefaultModelForAuthType(e){let n=this.modelsByAuthType.get(e);if(!(!n||n.size===0))return Array.from(n.values())[0]}resolveModelConfig(e,n){return this.validateModelConfig(e,n),{...e,authType:n,name:e.name||e.id,baseUrl:e.baseUrl||K(),generationConfig:{...e.generationConfig??{}},capabilities:e.capabilities||{}}}validateModelConfig(e,n){if(!e.id)throw new Error(`Model config in authType '${n}' missing required field: id`)}reloadModels(e){if(this.modelsByAuthType.clear(),e)for(let[n,o]of Object.entries(e)){let r=Xo(n);if(!r){kn.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(B).join(", ")}. Skipping.`);continue}this.registerAuthTypeModels(r,o)}}};var Zo=class t{modelRegistry;currentAuthType;_generationConfig;generationConfigSources;strictModelProviderSelection=!1;hasManualCredentials=!1;onModelChange;authTypeWasExplicitlyProvided;settingsGenerationConfig;runtimeModelSnapshots=new Map;activeRuntimeModelSnapshotId;static deepClone(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>t.deepClone(o));let n={};for(let o of Object.keys(e))n[o]=t.deepClone(e[o]);return n}constructor(e={}){this.modelRegistry=new Pt(e.modelProvidersConfig),this.onModelChange=e.onModelChange,this._generationConfig={...e.generationConfig||{}},this.generationConfigSources=e.generationConfigSources||{},this.settingsGenerationConfig=t.deepClone(e.settingsGenerationConfig),this.authTypeWasExplicitlyProvided=e.initialAuthType!==void 0,this.currentAuthType=e.initialAuthType}createStateSnapshotForRollback(){return{currentAuthType:this.currentAuthType,generationConfig:t.deepClone(this._generationConfig),generationConfigSources:t.deepClone(this.generationConfigSources),strictModelProviderSelection:this.strictModelProviderSelection,hasManualCredentials:this.hasManualCredentials,activeRuntimeModelSnapshotId:this.activeRuntimeModelSnapshotId}}rollbackToStateSnapshot(e){this.currentAuthType=e.currentAuthType,this._generationConfig=e.generationConfig,this.generationConfigSources=e.generationConfigSources,this.strictModelProviderSelection=e.strictModelProviderSelection,this.hasManualCredentials=e.hasManualCredentials,this.activeRuntimeModelSnapshotId=e.activeRuntimeModelSnapshotId}getModel(){return this._generationConfig.model||it}getCurrentAuthType(){return this.currentAuthType}wasAuthTypeExplicitlyProvided(){return this.authTypeWasExplicitlyProvided}getAvailableModels(){return this.currentAuthType?this.modelRegistry.getModelsForAuthType(this.currentAuthType):[]}getAvailableModelsForAuthType(e){return this.modelRegistry.getModelsForAuthType(e)}getAllConfiguredModels(e){let n=e&&e.length>0?e:Object.values(B),o=new Set,r=[];for(let a of n)o.has(a)||(o.add(a),r.push(a));let i=this.getRuntimeModelOption(),s=[];for(let a of r)i&&i.authType===a&&s.push(i),s.push(...this.modelRegistry.getModelsForAuthType(a));return s}hasModel(e,n){return this.modelRegistry.hasModel(e,n)}getResolvedModel(e,n){let o=this.modelRegistry.getModel(e,n);if(o)return{...o,generationConfig:this.resolveEntryGenerationConfig(o).config}}resolveEntryGenerationConfig(e){return It(this.settingsGenerationConfig,e.generationConfig,e.authType,e.id,wn.env)}isManagedMatildaResolvedModel(e){return e?.id===Xt&&e?.envKey===rt&&e?.baseUrl===_e&&e?.generationConfig?.openAIRequestProfile==="matilda-code"}isManagedMatildaModel(e){let n=e.trim();return!n||!this.currentAuthType?!1:this.isManagedMatildaResolvedModel(this.modelRegistry.getModel(this.currentAuthType,n))}getPublicModelId(e){return this.isManagedMatildaModel(e)?Xt:e}getModelDisplayName(e){return this.isManagedMatildaModel(e)?Yn:this.currentAuthType?this.modelRegistry.getModel(this.currentAuthType,e)?.name??e:e}async setModel(e,n){if(this.currentAuthType&&this.modelRegistry.hasModel(this.currentAuthType,e)){await this.switchModel(this.currentAuthType,e);return}let o=this.createStateSnapshotForRollback();try{this.strictModelProviderSelection=!1,this._generationConfig.model=e,this.generationConfigSources.model={kind:"programmatic",detail:n?.reason||"setModel"},this.applyRawModelDerivedDefaults(e),this.onModelChange&&this.currentAuthType&&await this.onModelChange(this.currentAuthType)}catch(r){throw this.rollbackToStateSnapshot(o),r}}applyRawModelDerivedDefaults(e){let n=It(this.settingsGenerationConfig,void 0,this.currentAuthType,e,wn.env);this.shouldUpdateModelDerivedDefault("modalities")&&this.applyResolvedField("modalities",n),this.shouldUpdateModelDerivedDefault("contextWindowSize")&&(this.applyResolvedField("contextWindowSize",n),this.fillContextWindowSize(e))}applyResolvedField(e,n){this._generationConfig[e]=t.deepClone(n.config[e]);let o=n.sources[e];o?this.generationConfigSources[e]=o:delete this.generationConfigSources[e]}fillContextWindowSize(e){this._generationConfig.contextWindowSize===void 0&&(this._generationConfig.contextWindowSize=bt(e,"input"),this.generationConfigSources.contextWindowSize={kind:"computed",detail:"auto-detected from model"})}shouldUpdateModelDerivedDefault(e){let n=this.generationConfigSources[e];return n===void 0||n.kind==="computed"||n.kind==="default"||n.kind==="modelProviders"||n.kind==="programmatic"||n.kind==="unknown"}async switchModel(e,n,o){let r=this.extractRuntimeModelSnapshotId(n);if(r){await this.switchToRuntimeModel(r);return}let i=this.createStateSnapshotForRollback();try{let s=e!==this.currentAuthType;this.currentAuthType=e;let a=this.modelRegistry.getModel(e,n,o?.baseUrl);if(!a)throw new Error(`Model '${n}' not found for authType '${e}'`);let l=i.generationConfig.model||"",c=!s&&l?this.modelRegistry.getModel(e,l,i.generationConfig.baseUrl)??this.modelRegistry.getModel(e,l):void 0,u=!s&&!!i.generationConfig.apiKey&&!!a.envKey&&c?.envKey===a.envKey&&c.baseUrl===a.baseUrl,f=u?i.generationConfig.apiKey:void 0,d=u?i.generationConfigSources.apiKey:void 0;this.applyResolvedModelDefaults(a),!this._generationConfig.apiKey&&f&&(this._generationConfig.apiKey=f,d&&(this.generationConfigSources.apiKey=t.deepClone(d))),this.activeRuntimeModelSnapshotId=void 0,this.onModelChange&&await this.onModelChange(e)}catch(s){throw this.rollbackToStateSnapshot(i),s}}buildRuntimeModelSnapshotId(e,n){return`${Ot}${e}|${n}`}extractRuntimeModelSnapshotId(e){if(e.startsWith(Ot))return this.runtimeModelSnapshots.has(e)?e:void 0;if(this.runtimeModelSnapshots.has(e))return e}getGenerationConfig(){return this._generationConfig}getGenerationConfigSources(){return this.generationConfigSources}mergeSettingsGenerationConfig(e){if(e)for(let n of me)!(n in this._generationConfig)&&n in e&&(this._generationConfig[n]=e[n],this.generationConfigSources[n]={kind:"settings",detail:`model.generationConfig.${n}`})}updateCredentials(e,n){(e.apiKey||e.baseUrl||e.model)&&(this.hasManualCredentials=!0,this.clearProviderSourcedConfig()),e.apiKey&&(this._generationConfig.apiKey=e.apiKey,this.generationConfigSources.apiKey={kind:"programmatic",detail:"updateCredentials"}),e.baseUrl&&(this._generationConfig.baseUrl=e.baseUrl,this.generationConfigSources.baseUrl={kind:"programmatic",detail:"updateCredentials"}),e.model&&(this._generationConfig.model=e.model,this.generationConfigSources.model={kind:"programmatic",detail:"updateCredentials"}),this.strictModelProviderSelection=!1,this._generationConfig.apiKeyEnvKey=void 0,n&&this.mergeSettingsGenerationConfig(n),this.syncRuntimeModelSnapshotWithCredentials()}syncRuntimeModelSnapshotWithCredentials(){let e=this.currentAuthType,{model:n,apiKey:o,baseUrl:r}=this._generationConfig;if(!(!n||!e||!o||!r)&&!this.modelRegistry.hasModel(e,n,r))if(this.activeRuntimeModelSnapshotId&&this.runtimeModelSnapshots.has(this.activeRuntimeModelSnapshotId)){let i=this.runtimeModelSnapshots.get(this.activeRuntimeModelSnapshotId);i.apiKey=o,i.baseUrl=r,i.modelId=n;let s=this.buildRuntimeModelSnapshotId(i.authType,i.modelId);s!==i.id&&(this.runtimeModelSnapshots.delete(i.id),i.id=s,this.runtimeModelSnapshots.set(s,i),this.activeRuntimeModelSnapshotId=s),i.createdAt=Date.now()}else this.detectAndCaptureRuntimeModel()}clearProviderSourcedConfig(){for(let e of xt)this.generationConfigSources[e]?.kind==="modelProviders"&&(delete this._generationConfig[e],delete this.generationConfigSources[e])}isStrictModelProviderSelection(){return this.strictModelProviderSelection}resetStrictModelProviderSelection(){this.strictModelProviderSelection=!1}applyResolvedModelDefaults(e){if(this.strictModelProviderSelection=!0,this.hasManualCredentials=!1,this._generationConfig.model=e.id,this.generationConfigSources.model={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"model.id"},this._generationConfig.apiKey=void 0,this._generationConfig.apiKeyEnvKey=void 0,e.envKey!==void 0){let o=wn.env[e.envKey];o&&(this._generationConfig.apiKey=o,this.generationConfigSources.apiKey={kind:"env",envKey:e.envKey,via:{kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"envKey"}}),this._generationConfig.apiKeyEnvKey=e.envKey,this.generationConfigSources.apiKeyEnvKey={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"envKey"}}this._generationConfig.baseUrl=e.baseUrl,this.generationConfigSources.baseUrl={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"baseUrl"};let n=this.resolveEntryGenerationConfig(e);for(let o of me)this.applyResolvedField(o,n);this.fillContextWindowSize(e.id)}syncAfterAuthRefresh(e,n){this.strictModelProviderSelection=!1;let o=this.currentAuthType;this.currentAuthType=e;let r=this.generationConfigSources.baseUrl?.kind==="modelProviders"?this._generationConfig.baseUrl:void 0,i=n?this.modelRegistry.getModel(e,n,r)??this.modelRegistry.getModel(e,n):void 0;if(i){let m=this.generationConfigSources.baseUrl?.kind==="modelProviders"&&(this._generationConfig.apiKeyEnvKey!==i.envKey||this._generationConfig.baseUrl!==i.baseUrl),h=o===e&&this._generationConfig.model===n&&!m,g=h?this._generationConfig.apiKey:void 0,C=h&&this.generationConfigSources.apiKey?{...this.generationConfigSources.apiKey}:void 0,T=this.generationConfigSources.baseUrl,S=h&&!!this._generationConfig.baseUrl&&(T?.kind==="cli"||T?.kind==="env"||T?.kind==="settings"),R=S?this._generationConfig.baseUrl:void 0,w=S&&T?{...T}:void 0;this.applyResolvedModelDefaults(i),h&&!this._generationConfig.apiKey&&g&&(this._generationConfig.apiKey=g,C&&(this.generationConfigSources.apiKey=C)),R&&(this._generationConfig.baseUrl=R,w&&(this.generationConfigSources.baseUrl=w)),this.strictModelProviderSelection=!0,this.activeRuntimeModelSnapshotId=void 0;return}let s=this.generationConfigSources.apiKey,a=this.generationConfigSources.baseUrl,l=this._generationConfig.apiKey&&s?.kind!=="modelProviders"||this._generationConfig.baseUrl&&a?.kind!=="modelProviders";if(!(o!==e)&&(n===void 0||!this.modelRegistry.hasModel(e,n))&&(this.hasManualCredentials||l)){n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (preserved credentials)"}));return}let f=this.modelRegistry.getDefaultModelForAuthType(e);if(f){this.applyResolvedModelDefaults(f),this.activeRuntimeModelSnapshotId=void 0;return}n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (no default model)"}))}setOnModelChange(e){this.onModelChange=e}detectAndCaptureRuntimeModel(){let{model:e,apiKey:n,baseUrl:o,apiKeyEnvKey:r,...i}=this._generationConfig,s=this.currentAuthType;if(!e||!s)return;if(this.modelRegistry.hasModel(s,e,o)){this.clearRuntimeModelSnapshotForAuthType(s);return}if(!(this._generationConfig.apiKey&&this._generationConfig.baseUrl))return;let l=this.buildRuntimeModelSnapshotId(s,e),c={id:l,authType:s,modelId:e,apiKey:n,baseUrl:o,apiKeyEnvKey:r,generationConfig:i,sources:{...this.generationConfigSources},createdAt:Date.now()};return this.runtimeModelSnapshots.set(l,c),this.activeRuntimeModelSnapshotId=l,this.cleanupOldRuntimeModelSnapshots(),l}getActiveRuntimeModelSnapshot(){if(this.activeRuntimeModelSnapshotId)return this.runtimeModelSnapshots.get(this.activeRuntimeModelSnapshotId)}getActiveRuntimeModelSnapshotId(){return this.activeRuntimeModelSnapshotId}async switchToRuntimeModel(e){let n=this.runtimeModelSnapshots.get(e);if(!n)throw new Error(`Runtime model snapshot '${e}' not found`);let o=this.createStateSnapshotForRollback();try{this.currentAuthType=n.authType,this.activeRuntimeModelSnapshotId=e,this.strictModelProviderSelection=!1,this.hasManualCredentials=!0,this._generationConfig.model=n.modelId,this.generationConfigSources.model={kind:"programmatic",detail:"runtimeModelSwitch"},n.apiKey&&(this._generationConfig.apiKey=n.apiKey,this.generationConfigSources.apiKey=n.sources.apiKey||{kind:"programmatic",detail:"runtimeModelSwitch"}),n.baseUrl&&(this._generationConfig.baseUrl=n.baseUrl,this.generationConfigSources.baseUrl=n.sources.baseUrl||{kind:"programmatic",detail:"runtimeModelSwitch"}),n.apiKeyEnvKey&&(this._generationConfig.apiKeyEnvKey=n.apiKeyEnvKey),n.generationConfig&&Object.assign(this._generationConfig,n.generationConfig),this.onModelChange&&await this.onModelChange(n.authType)}catch(r){throw this.rollbackToStateSnapshot(o),r}}getRuntimeModelOption(){let e=this.getActiveRuntimeModelSnapshot();if(e)return{id:e.modelId,label:e.modelId,authType:e.authType,isVision:!1,contextWindowSize:e.generationConfig?.contextWindowSize,isRuntimeModel:!0,runtimeSnapshotId:e.id}}clearRuntimeModelSnapshotForAuthType(e){for(let[n,o]of this.runtimeModelSnapshots.entries())o.authType===e&&(this.runtimeModelSnapshots.delete(n),this.activeRuntimeModelSnapshotId===n&&(this.activeRuntimeModelSnapshotId=void 0))}cleanupOldRuntimeModelSnapshots(){let e=new Map;for(let n of this.runtimeModelSnapshots.values()){let o=e.get(n.authType);(!o||n.createdAt>o.createdAt)&&e.set(n.authType,n)}this.runtimeModelSnapshots.clear();for(let n of e.values())this.runtimeModelSnapshots.set(n.id,n);this.activeRuntimeModelSnapshotId&&!this.runtimeModelSnapshots.has(this.activeRuntimeModelSnapshotId)&&(this.activeRuntimeModelSnapshotId=void 0)}reloadModelProvidersConfig(e){this.modelRegistry.reloadModels(e)}};p();import{randomUUID as bs}from"node:crypto";import{mkdirSync as Ms,readFileSync as _s}from"node:fs";import{dirname as ks,join as ws}from"node:path";p();p();import{randomBytes as es,createHash as ts}from"node:crypto";import{setTimeout as ns}from"node:timers/promises";var os="urn:ietf:params:oauth:grant-type:device_code";function er(t){return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function In(){let t=es(32).toString("base64url"),e=ts("sha256").update(t).digest("base64url");return{codeVerifier:t,codeChallenge:e}}function Ce(t,e){let n=typeof t=="object"&&t!==null?t:{};if(typeof n.access_token!="string"||n.access_token==="")throw new Error("The token response has no access token");return{accessToken:n.access_token,refreshToken:n.refresh_token??e?.refreshToken,expiresAt:Date.now()+(n.expires_in??3600)*1e3,idToken:n.id_token??e?.idToken}}var rs=15e3;async function On(t){let e=t.replace(/\/+$/,""),n=new URL("/.well-known/oauth-authorization-server",e);if(n.protocol!=="https:"&&!er(n.hostname))throw new Error(`Refusing OAuth discovery over insecure transport: ${n.origin}`);let o=await fetch(n,{headers:{accept:"application/json"},signal:AbortSignal.timeout(rs)});if(!o.ok)throw new Error(`OAuth discovery failed (${o.status}) for ${n.origin}`);let r=await o.json();if(!r.issuer||!r.authorization_endpoint||!r.token_endpoint)throw new Error(`OAuth discovery document missing required fields for ${n.origin}`);return{issuer:r.issuer,authorization_endpoint:r.authorization_endpoint,token_endpoint:r.token_endpoint,device_authorization_endpoint:r.device_authorization_endpoint}}var is=15e3,xn="Device code expired: restart the sign-in";async function Pn(t,e,n={}){let o;try{o=await fetch(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:e.clientId,scope:e.scope??"openid offline_access"}),signal:or(AbortSignal.timeout(is),n.signal)})}catch(i){throw rr(i,n.signal)?new Error("The device code request timed out"):i}if(!o.ok)throw new Error(`Device code request failed (${o.status})`);let r=await o.json();return{deviceCode:r.device_code,userCode:r.user_code,verificationUri:r.verification_uri,verificationUriComplete:r.verification_uri_complete,expiresAt:Date.now()+r.expires_in*1e3,interval:r.interval??5}}async function tr(t,e,n={}){let o=await fetch(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:os,client_id:e.clientId,device_code:e.deviceCode}),signal:n.signal});if(o.ok)return{kind:"authorized",tokens:Ce(await o.json())};let r=await o.json().catch(()=>({})),i=typeof r.error=="string"?r.error:"unknown";switch(i){case"authorization_pending":return{kind:"pending"};case"slow_down":return{kind:"slow_down"};default:return{kind:"error",error:i}}}async function nr(t,e,n={}){let o=e.interval*1e3;try{for(;Date.now()<e.expiresAt;){await ns(Math.min(o,e.expiresAt-Date.now()),void 0,{signal:n.signal});let r=e.expiresAt-Date.now();if(r<=0)break;let i=await tr(t,e,{signal:or(AbortSignal.timeout(r),n.signal)});if(i.kind==="authorized")return i.tokens;if(i.kind!=="pending"){if(i.kind==="slow_down"){o+=5e3;continue}switch(i.error){case"expired_token":throw new Error(xn);case"access_denied":throw new Error("User denied the authorization request");default:throw new Error(`Device flow error: ${i.error}`)}}}}catch(r){throw rr(r,n.signal)?new Error(xn):r}throw new Error(xn)}function or(t,e){return e?AbortSignal.any([t,e]):t}function rr(t,e){return!e?.aborted&&t instanceof Error&&t.name==="TimeoutError"}p();import{randomBytes as ss}from"node:crypto";import{promises as ye,openSync as as,closeSync as ls,unlinkSync as sr,statSync as us}from"node:fs";import{dirname as cs}from"node:path";var ir=new Map,ds=2e4,ps=3e4,fs=50;function Dn(t,e={}){let n=async()=>{try{let s=await ye.readFile(t,"utf8"),a=JSON.parse(s);return a&&typeof a=="object"?a:{}}catch(s){if(s.code==="ENOENT")return{};throw s}},o=async(s,a)=>{await ye.mkdir(cs(t),{recursive:!0});let l=`${t}.${process.pid}.${ss(4).toString("hex")}.tmp`;try{await ye.writeFile(l,JSON.stringify(s,null,2),{mode:384}),a?.throwIfAborted(),await ye.rename(l,t)}catch(c){throw await ye.rm(l,{force:!0}).catch(()=>{}),c}await ye.chmod(t,384).catch(()=>{})},r=(s,a={})=>{let c=(ir.get(t)??Promise.resolve()).then(async()=>{a.signal?.throwIfAborted();let u=await n(),f=!1;for(let[d,m]of Object.entries(s)){if(m===null){if(!(d in u))continue;delete u[d]}else{if(u[d]===m)continue;u[d]=m}f=!0}f&&await o(u,a.signal),a.onCommit?.()});return ir.set(t,c.catch(()=>{})),c};return{store:{async get(s){return(await n())[s]??null},set:(s,a,l)=>r({[s]:a},l),remove:(s,a)=>r({[s]:null},a)},lock:gs(`${t}.lock`,e.lockTimeoutMs??ds),update:r}}function gs(t,e){let n=Promise.resolve();return o=>{let r=n.then(async()=>{await ms(t,e);try{return await o()}finally{hs(t)}});return n=r.then(()=>{},()=>{}),r}}async function ms(t,e){let n=Date.now()+e;for(;;)try{ls(as(t,"wx"));return}catch(o){if(o.code!=="EEXIST")throw o;try{if(Date.now()-us(t).mtimeMs>ps){sr(t);continue}}catch{continue}if(Date.now()>n)throw Object.assign(new Error(`Timed out acquiring credential lock at ${t}`),{code:"ETIMEDOUT"});await Cs(fs)}}function hs(t){try{sr(t)}catch{}}function Cs(t){return new Promise(e=>setTimeout(e,t))}p();var Te=class extends Error{code="invalid_grant";constructor(e="Refresh token is no longer valid \u2014 sign in again."){super(e),this.name="InvalidGrantError"}};function Un(t){let e=t.storageKey??"default",n=t.fetchImpl??fetch,o=t.expirySkewMs??6e4,r=t.refreshTimeoutMs??15e3,i=null,s=async()=>{let c=await t.store.get(e);if(!c)return null;try{let u=JSON.parse(c);return u.accessToken?u:null}catch{return null}},a=c=>c.expiresAt-Date.now()>o,l=c=>t.lock(async()=>{let u=await s()??c;if(u.accessToken!==c.accessToken&&a(u))return u.accessToken;if(!u.refreshToken)throw new Te("No refresh token available \u2014 sign in again.");let f;try{let m=await n(t.tokenEndpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:t.clientId,refresh_token:u.refreshToken}),signal:AbortSignal.timeout(r)});if(!m.ok){let h=await m.text().catch(()=>"");throw m.status>=400&&m.status<500&&ys(h)==="invalid_grant"?(await t.store.remove(e),new Te):Object.assign(new Error(`Token refresh failed (${m.status})`),{status:m.status})}f=await m.json()}catch(m){throw m?.name==="TimeoutError"?Object.assign(new Error(`Token refresh timed out after ${r} ms`),{code:"ETIMEDOUT",cause:m}):m}let d=Ce(f,u);return await t.store.set(e,JSON.stringify(d)),d.accessToken});return{async getAccessToken(c){let u=await s();if(!u)throw new Te("Not signed in.");return!c?.forceRefresh&&a(u)?u.accessToken:(i||(i=l(u).finally(()=>{i=null})),i)}}}function ys(t){try{return JSON.parse(t).error}catch{return}}p();import{createServer as Ts}from"node:http";import{randomBytes as Ss}from"node:crypto";async function Dt(t){if(t.transport.kind==="device")return Es(t);if(t.transport.kind!=="loopback")throw new Error(`Unsupported login transport: ${t.transport.kind}`);if(t.signal?.aborted)throw new Error("Login aborted");let e=g=>t.onEvent?.(g),{codeVerifier:n,codeChallenge:o}=In(),r=Ss(16).toString("hex"),i=t.timeoutMs??5*60*1e3,s=t.transport.successRedirect,a=t.transport.port;e({type:"state",status:"idle"});let l,c,u=new Promise((g,C)=>{l=g,c=C});u.catch(()=>{});let f=Ts((g,C)=>{let T=new URL(g.url??"/","http://127.0.0.1");if(T.pathname!=="/callback"){C.writeHead(404).end();return}let S=T.searchParams.get("error"),R=T.searchParams.get("state"),w=T.searchParams.get("code");if(S){let b=T.searchParams.get("error_description"),x=b?`OAuth error: ${S} (${b})`:`OAuth error: ${S}`;C.writeHead(400,{"content-type":"text/plain; charset=utf-8"}).end(`Sign-in failed: ${S}
16
+ `,()=>c(new Error(x)));return}if(R!==r){C.writeHead(400).end("State mismatch"),c(new Error("OAuth state mismatch"));return}if(!w){C.writeHead(400).end("Missing authorization code");return}As(C,s,()=>l(w))}),d=await new Promise((g,C)=>{f.once("error",C),f.listen(a??0,"127.0.0.1",()=>{g(f.address().port)})}),m=setTimeout(()=>c(new Error("Login timed out \u2014 the browser never reached the local callback. The hosted success page is not a completed sign-in.")),i),h=()=>c(new Error("Login aborted"));t.signal?.addEventListener("abort",h,{once:!0}),t.signal?.aborted&&h();try{t.signal?.throwIfAborted();let g=`http://127.0.0.1:${d}/callback`,C=new URL(t.metadata.authorization_endpoint);C.searchParams.set("client_id",t.clientId),C.searchParams.set("response_type","code"),C.searchParams.set("redirect_uri",g),C.searchParams.set("code_challenge",o),C.searchParams.set("code_challenge_method","S256"),C.searchParams.set("state",r),C.searchParams.set("prompt","select_account"),C.searchParams.set("scope",t.scope??"openid offline_access");let T=C.toString();e({type:"authorize_url",url:T}),e({type:"state",status:"awaiting_user"}),t.openBrowser&&await t.openBrowser(T);let S=await u;await ar(f),e({type:"state",status:"exchanging"});let R=await fetch(t.metadata.token_endpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:t.clientId,code:S,code_verifier:n,redirect_uri:g}),signal:t.signal});if(!R.ok){let b=await R.text().catch(()=>"");throw new Error(`Token exchange failed (${R.status}): ${b}`)}let w=Ce(await R.json());return e({type:"state",status:"authenticated"}),w}catch(g){throw e({type:"state",status:"error"}),t.signal?.aborted?new Error("Login aborted"):g}finally{clearTimeout(m),t.signal?.removeEventListener("abort",h),await ar(f)}}async function Es(t){let e=t.metadata.device_authorization_endpoint;if(!e)throw new Error("The authorization server does not offer device sign-in");if(t.signal?.aborted)throw new Error("Login aborted");let n=o=>t.onEvent?.(o);n({type:"state",status:"idle"});try{let o=await Pn(e,{clientId:t.clientId,scope:t.scope},{signal:t.signal});n({type:"user_code",userCode:o.userCode,verificationUri:o.verificationUri,verificationUriComplete:o.verificationUriComplete}),n({type:"state",status:"awaiting_user"});let r=await nr(t.metadata.token_endpoint,{clientId:t.clientId,deviceCode:o.deviceCode,interval:o.interval,expiresAt:o.expiresAt},{signal:t.signal});return n({type:"state",status:"authenticated"}),r}catch(o){throw n({type:"state",status:"error"}),t.signal?.aborted?new Error("Login aborted"):o}}function ar(t){return t.listening?new Promise(e=>{t.close(()=>e()),t.closeAllConnections()}):Promise.resolve()}function As(t,e,n){t.writeHead(302,{location:e}).end(n)}p();var Rs=["www-browser"];function vs(t){let e=t.replace(/\\/g,"/").split("/").pop();return!!e&&Rs.includes(e)}function lr(t={}){let n=process.env.BROWSER?.trim()?.match(/^\S+/)?.[0];if(!t.ignoreBrowserBlocklist&&process.platform!=="win32"&&n&&vs(n)||process.env.CI||process.env.DEBIAN_FRONTEND==="noninteractive")return!1;let o=!!process.env.SSH_CONNECTION;return!(process.platform==="linux"&&!["DISPLAY","WAYLAND_DISPLAY","MIR_SOCKET"].some(s=>!!process.env[s])||o&&process.platform!=="linux")}var Ee="matilda-code",cr="matilda-desktop",dr="openid profile email offline_access",Ut="MATILDA_API_KEY",xs="matilda";function Ae(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function pr(){return ws(Ye.getGlobalMatildaDir(),"matilda-auth.json")}function $e(){let t=pr();return Ms(ks(t),{recursive:!0}),Dn(t)}function Is(t){return t==="desktop"}function Be(t){return t?.clientId?t.clientId:Is(t?.channel)?cr:Ee}function Ge(t){return`matilda:${t}`}function Lt(t){return`${Ge(t)}:refresh-rejected`}function je(t){return t===Ee?[Ge(t),xs]:[Ge(t)]}function fr(){try{let t=_s(pr(),"utf8");return JSON.parse(t)}catch{return{}}}function Nt(t){if(!t)return null;try{let e=JSON.parse(t);return typeof e?.accessToken=="string"&&typeof e?.baseUrl=="string"?e:null}catch{return null}}function Ln(t,e){return Ae(t)===Ae(e)}function Os(t){if(!t)return{};try{let e=t.split(".")[1],n=Buffer.from(e.replace(/-/g,"+").replace(/_/g,"/"),"base64").toString("utf8"),o=JSON.parse(n);return{sub:o.sub,email:o.email,name:o.name}}catch{return{}}}function gr(t,e){let n=Os(t.idToken);return{accessToken:t.accessToken,accessTokenExpiresAt:t.expiresAt,refreshToken:t.refreshToken??"",userId:n.sub,email:n.email,displayName:n.name,baseUrl:e}}var ur=new Map;async function Fn(t,e={}){let n=ur.get(t);if(n)return n;try{let o=await On(t);return ur.set(t,o),o}catch(o){let r=e.requireReachable&&(De(o,t)??gn(o,t));if(r)throw r;return{issuer:t,authorization_endpoint:`${t}/api/auth/oauth/authorize`,token_endpoint:`${t}/api/auth/oauth/token`,device_authorization_endpoint:`${t}/api/auth/oauth/device/code`}}}function Kn(t){try{let e=fr(),n=Be(t);for(let o of je(n)){let r=Nt(e[o]);if(r)return r}return null}catch{return null}}function mr(t){let e=Kn(t);return!e||t?.baseUrl&&!Ln(e.baseUrl,t.baseUrl)?null:e}function Gn(t){return mr(t)!==null}async function hr(t,e){for(let n of e){let o=await t.get(n);if(Nt(o))return o}return null}async function Ps(t,e){let n=Be(t),o=je(n),{store:r,lock:i}=$e();await i(async()=>{let s=await hr(r,o);if(!(s!==null&&s!==e)){for(let a of o)await r.remove(a);await r.set(Lt(n),"1")}})}function Ds(t){return t instanceof Error?t.code==="invalid_grant"||t.name==="InvalidGrantError"?!0:t.message==="Token refresh failed (401)":!1}function Se(t){Nn({authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:t.occurrenceCount},{baseUrl:t.baseUrl,token:t.token}).catch(()=>{})}async function Cr(t,e,n={}){let o=Be(e),r=Ge(o),i={[r]:JSON.stringify(t),[Lt(o)]:null};for(let l of je(o))l!==r&&(i[l]=null);let{lock:s,update:a}=$e();await s(()=>a(i,{signal:n.signal}))}async function Us(t,e){for(let n of je(e))await t.remove(n);await t.remove(Lt(e))}var Ke="matilda:api-key";function yr(){let t=fr()[Ke];if(!t)return null;try{let{apiKey:e,baseUrl:n}=JSON.parse(t);return typeof e=="string"&&e.length>0&&typeof n=="string"?{apiKey:e,baseUrl:n}:null}catch{return null}}function Ft(t){let e=yr();return e&&Ln(e.baseUrl,t)?e.apiKey:void 0}async function Ns(t){let e=bs(),n=JSON.stringify(t?{...t,saveId:e}:{saveId:e}),{store:o,lock:r,update:i}=$e(),s=await r(async()=>{let a=await o.get(Ke);return(t||a!==null)&&await i({[Ke]:n}),a});return()=>r(async()=>{await o.get(Ke)===n&&await i({[Ke]:s})})}function Ls(t){let e=Kn(t);return e?{authenticated:!0,userId:e.userId,email:e.email,displayName:e.displayName,baseUrl:e.baseUrl,accessTokenExpiresAt:e.accessTokenExpiresAt}:{authenticated:!1}}async function fd(t){let e={channel:t?.channel,clientId:t?.clientId},{store:n,lock:o}=$e(),r=await o(async()=>{let s=Kn(e);return await Us(n,Be(e)),s}),i=yr()!==null;if(await Ns(null),r?.accessToken){let s=Ae(r.baseUrl);await fetch(`${s}/api/auth/logout`,{method:"POST",headers:{authorization:`Bearer ${r.accessToken}`,"content-type":"application/json"},body:JSON.stringify(r.refreshToken?{refreshToken:r.refreshToken}:{}),signal:t?.signal??AbortSignal.timeout(5e3)}).catch(()=>{})}return!!r||i}function Tr(t){return!t||t===Ut}function Sr(t){let{baseUrl:e,channel:n,apiKey:o,apiKeyEnvKey:r}=t;if(Gn({baseUrl:e,channel:n})){let i=Ls({channel:n});return{kind:"sign-in",account:i.authenticated?i.email??i.displayName??i.userId:void 0}}return o?.value?{kind:"api-key",from:o.from}:Tr(r)&&process.env[Ut]?{kind:"api-key",from:Ut}:Ft(e)!==void 0?{kind:"api-key",from:"saved"}:{kind:"none"}}async function Er(t){let e=Be(t),n=Ge(e),o=mr({baseUrl:t?.baseUrl,channel:t?.channel,clientId:e});if(!o)return t?.fallbackAccessToken||(Tr(t?.apiKeyEnvKey)?process.env[Ut]:void 0)||t?.baseUrl&&Ft(t.baseUrl)||"";let r=Ae(o.baseUrl),i=await Fn(r),{store:s,lock:a}=$e(),{manager:l,startedFrom:c}=Fs(s,a,i.token_endpoint,o.baseUrl,e,n,t?.signal),u=e===Ee&&(!!t?.forceRefresh||o.accessTokenExpiresAt-Date.now()<=3e5),f;try{f=await l.getAccessToken({forceRefresh:t?.forceRefresh})}catch(d){throw u&&Se({baseUrl:o.baseUrl,token:o.accessToken,authStage:"refresh",authOutcome:"failed"}),Ds(d)?d instanceof Je?d:(e===cr&&await Ps({channel:t?.channel,clientId:e},c()),new Je({cause:d})):De(d,r)??gn(d,r)??d}return u&&Se({baseUrl:o.baseUrl,token:f,authStage:"refresh",authOutcome:"succeeded"}),f}function Fs(t,e,n,o,r,i,s){let a=je(r),l=(m,h)=>{let g=[h?.signal,s].filter(C=>C instanceof AbortSignal);return fetch(m,{...h,signal:g.length>1?AbortSignal.any(g):g[0]})},c=m=>hr(t,m===i?a:[m]),u=null;return{manager:Un({tokenEndpoint:n,clientId:r,store:{get:async m=>{let h=await c(m),g=Nt(h);if(u=g&&Ln(g.baseUrl,o)?h:null,!u||!g?.accessToken)return null;let C={accessToken:g.accessToken,refreshToken:g.refreshToken,expiresAt:g.accessTokenExpiresAt};return JSON.stringify(C)},set:async(m,h)=>{let g=await c(m);if(g===null||g!==u)throw new Je;let C=JSON.parse(h),T=Nt(g)??{},S={...T,accessToken:C.accessToken,accessTokenExpiresAt:C.expiresAt,refreshToken:C.refreshToken??T.refreshToken??"",baseUrl:T.baseUrl??o};await t.set(i,JSON.stringify(S)),await t.remove(Lt(r));for(let R of a)R!==i&&await t.remove(R)},remove:async m=>{if(await c(m)!==u)return;let h=m===i?a:[m];for(let g of h)await t.remove(g)}},storageKey:i,lock:e,fetchImpl:l,expirySkewMs:3e5}),startedFrom:()=>u}}function Ks(){return process.env.MATILDA_AUTH_SKIP_BROWSER!=="1"&&lr()}async function gd(t){let e=Ae(t.baseUrl),n=await Fn(e,{requireReachable:!0}),o="",r=0,i=0,s={},a=f=>{s[f]=(s[f]??0)+1},c=await(f=>(r+=1,Dt({metadata:n,clientId:Ee,scope:f,transport:{kind:"loopback",successRedirect:`${e}/api/auth/oauth/success?client_id=${encodeURIComponent(Ee)}`},signal:t.signal,onEvent:d=>{d.type==="authorize_url"&&(o=d.url,t.onAuthorizeUrl?.(d.url)),d.type==="state"&&d.status==="exchanging"&&(i+=1)},openBrowser:async d=>{if(t.openBrowser===!1||!Ks()){a("skipped");return}try{let{default:m}=await import("./open-QQ7FWG4A.js");(await m(d)).once("error",()=>{}),a("succeeded")}catch{a("failed")}}})))(dr).catch(f=>{throw De(f,e)??f}),u=gr(c,t.baseUrl);await Cr(u),Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"auth_started",authOutcome:"started",occurrenceCount:r});for(let[f,d]of Object.entries(s))Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"browser_opened",authOutcome:f,occurrenceCount:d});return i>0&&Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"callback_received",authOutcome:"succeeded",occurrenceCount:i}),Se({baseUrl:t.baseUrl,token:u.accessToken,authStage:"token_persisted",authOutcome:"succeeded"}),{...u,authorizeUrl:o}}async function md(t){let e=Ae(t.baseUrl),n=await Fn(e,{requireReachable:!0}),o=await Dt({metadata:n,clientId:Ee,scope:dr,transport:{kind:"device"},signal:t.signal,onEvent:i=>{i.type==="user_code"&&t.onDeviceCode({userCode:i.userCode,verificationUri:i.verificationUri,verificationUriComplete:i.verificationUriComplete})}}).catch(i=>{throw De(i,e)??i}),r=gr(o,t.baseUrl);return await Cr(r),r}p();p();p();function Kt(t){return typeof t=="object"&&t!==null&&"error"in t&&typeof t.error=="object"&&"message"in t.error}function Ar(t){return typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"}p();function Rr(t){let e=Math.max(1,t.attempt),n=Math.min(t.maxDelayMs,2147483647),o=Math.min(e-1,31),r=Math.min(t.initialDelayMs*Math.pow(2,o),n),s=(t.retryAfterMode??"ignore")==="ignore"?null:Gs(t.error);if(s!==null&&s>0){let u=Math.min(t.retryAfterMaxDelayMs??t.maxDelayMs,2147483647),f=Math.min(s,u);return Math.max(r,f)}let a=t.jitterRatio??0;if(a<=0)return r;let l=t.random??Math.random,c=r*a*(l()*2-1);return Math.min(Math.max(0,r+c),n)}function Gs(t){let e=vr(t,"retry-after")??$s(t,"retry-after");if(e===null)return null;let n=e.trim();if(/^\d+(\.\d+)?$/.test(n)){let i=Number(n);if(Number.isFinite(i)&&i>=0)return Math.min(i*1e3,2147483647)}let o=Date.parse(n);if(!Number.isFinite(o))return null;let r=o-Date.now();return r>0?Math.min(r,2147483647):0}function vr(t,e){if(!Bs(t))return null;let{headers:n}=t;if(typeof n.get=="function"){let r=n.get(e);return typeof r=="string"?r:null}if(typeof n!="object"||n===null)return null;let o=e.toLowerCase();for(let[r,i]of Object.entries(n))if(r.toLowerCase()===o)return typeof i=="string"?i:null;return null}function $s(t,e){return js(t)?vr(t.response,e):null}function Bs(t){return typeof t=="object"&&t!==null&&"headers"in t&&t.headers!=null}function js(t){return typeof t=="object"&&t!==null&&"response"in t&&typeof t.response=="object"&&t.response!==null&&"headers"in t.response&&t.response.headers!=null}var Vs=new Set([429,503,1302,1305]);function $n(t,e){if(Bn(t))return!1;let n=Ws(t);return n===null?!1:!!(Vs.has(n)||e&&e.includes(n))}function Bn(t){return zs(t)==="insufficient_quota"}function zs(t){let e=Mr(t)?.code;if(e!==void 0)return e;let n=typeof t=="object"&&t!==null&&"code"in t?t.code:void 0;return typeof n=="string"||typeof n=="number"?n:void 0}function br(t){let e=$(t),n=Mr(t),o=_r(t),r=o?.includes("event:error")||o?.includes("HTTP_STATUS/")?"sse":e!==void 0?"http":"unknown";return{...e!==void 0?{statusCode:e}:{},...n?.code!==void 0?{providerCode:String(n.code)}:{},...n?.message!==void 0?{providerMessage:n.message}:{},...n?.requestId!==void 0?{requestId:n.requestId}:{},transport:r}}function bd(t,e){return Rr({attempt:t,initialDelayMs:e.initialDelayMs,maxDelayMs:e.maxDelayMs,retryAfterMode:"minimum",retryAfterMaxDelayMs:e.maxDelayMs,error:e.error})}function Ws(t){if(Kt(t)){let n=Number(t.error.code);if(Number.isFinite(n)&&n>0)return n}let e=t instanceof Error?t.message:typeof t=="string"?t:null;if(e){let n=e.indexOf("{");if(n!==-1)try{let o=JSON.parse(e.substring(n));if(Kt(o)){let r=Number(o.error.code);if(Number.isFinite(r)&&r>0)return r}}catch{}}if(Ar(t)&&typeof t.status=="number")return t.status;if(t instanceof Error&&"status"in t){let n=t.status;if(typeof n=="number")return n}return $(t)??null}function Mr(t){for(let e of Hs(t)){if(typeof e!="object"||e===null)continue;let n=e,o=e.error,i=(typeof o=="object"&&o!==null?o:void 0)??n,s=typeof i.code=="string"||typeof i.code=="number"?i.code:void 0,a=typeof i.message=="string"?i.message:void 0,l=typeof i.request_id=="string"?i.request_id:typeof i.requestId=="string"?i.requestId:typeof n.request_id=="string"?n.request_id:typeof n.requestId=="string"?n.requestId:void 0;if(s!==void 0||a!==void 0||l!==void 0)return{code:s,message:a,requestId:l}}return Kt(t)?{code:t.error.code,message:t.error.message}:null}function Hs(t){let e=_r(t);if(!e)return[];let n=[];for(let i of e.split(/\r?\n/)){if(!i.startsWith("data:"))continue;let s=i.slice(5).trim();if(!(!s||s==="[DONE]"))try{n.push(JSON.parse(s))}catch{}}if(n.length>0)return n;let o=e.indexOf("{"),r=e.lastIndexOf("}");if(o!==-1&&r>o)try{n.push(JSON.parse(e.slice(o,r+1)))}catch{}return n}function _r(t){return t instanceof Error?t.message:typeof t=="string"?t:null}function qs(t,e={}){if(Js(t))return{kind:"abort",diagnosis:"fail-fast",reason:"aborted"};let n=br(t),o=n.statusCode,r=ta(t),i=n.providerCode??r.providerCode,s=n.providerMessage??r.providerMessage,a=n.requestId??r.requestId,l={...o!==void 0?{statusCode:o}:{},...i!==void 0?{providerCode:i}:{},...s!==void 0?{providerMessage:s}:{},...a!==void 0?{requestId:a}:{}};if(ea(i))return{kind:"provider-business",diagnosis:"fail-fast",reason:"allocated-quota-exceeded",...l};if(Bn(t))return{kind:"provider-business",diagnosis:"fail-fast",reason:"insufficient-quota",...l};if($n(t,e.extraRetryErrorCodes))return{kind:n.transport==="sse"?"sse-provider":o!==void 0?"http":"provider",diagnosis:"retryable",reason:"rate-limit",...l};let c=Xs(t);if(c!==void 0&&(o===void 0||o>=500))return{kind:"transport",diagnosis:"retryable",reason:"transport-error",transportCode:c,...o!==void 0?{statusCode:o}:{}};if(o!==void 0){let u=n.transport==="sse"?"sse-provider":"http";return o===529?{kind:u,diagnosis:"retryable",reason:"capacity-overload",...l}:o===401||o===403?{kind:u,diagnosis:"fail-fast",reason:"auth-error",...l}:o>=400&&o<500?{kind:u,diagnosis:"fail-fast",reason:"client-error",...l}:o>=500&&o<600?{kind:u,diagnosis:"retryable",reason:"server-error",...l}:{kind:u,diagnosis:"unknown",reason:"http-status",...l}}return i==="upstream_unavailable"||i==="upstream_timeout"||i==="incomplete_stream"?{kind:"sse-provider",diagnosis:"retryable",reason:"server-error",...l}:{kind:"unknown",diagnosis:"unknown",reason:"unclassified",...l}}function xd(t){let e=t.statusCode??Number(t.providerCode);return t.kind!=="transport"&&t.diagnosis!=="fail-fast"&&(e>=500&&e<600||t.kind==="sse-provider"&&t.reason==="server-error"&&t.diagnosis==="retryable")}function kr(t,e){return $n(t,e)||qs(t,{extraRetryErrorCodes:e}).diagnosis==="retryable"}function Js(t){return qn(t)?!0:t instanceof Error&&t.name==="CanceledError"}var Ys=5;function Xs(t){let e=t;for(let n=0;n<=Ys;n++){if(typeof e!="object"||e===null)return;let o=e.code;if(typeof o=="string"&&Qs(o))return o;e=e instanceof Error?e.cause:void 0}}function Qs(t){return Zs.has(t)}var Zs=new Set(["EAI_AGAIN","ECONNABORTED","ECONNREFUSED","ECONNRESET","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","EPIPE","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET","ConnectionClosed","ConnectionRefused","ConnectionReset","ConnectionTimedOut","FailedToOpenSocket","HostUnreachable","NetworkUnreachable"]);function ea(t){return t==="Throttling.AllocationQuota"}function ta(t){if(typeof t!="object"||t===null)return{};let e=t,n=typeof e.code=="string"||typeof e.code=="number"?String(e.code):void 0,o=typeof e.code=="number"&&e.code>=100&&e.code<600,r=t instanceof Error&&n?.startsWith("ERR_")||o?void 0:n,i=typeof e.request_id=="string"?e.request_id:typeof e.requestId=="string"?e.requestId:void 0,s=typeof e.message=="string"&&(!(t instanceof Error)||r!==void 0||i!==void 0)?e.message:void 0;return{...r!==void 0?{providerCode:r}:{},...s!==void 0?{providerMessage:s}:{},...i!==void 0?{requestId:i}:{}}}var B=(e=>(e.USE_OPENAI="openai",e))(B||{});function wr(t,e){if(delete t.usesMatildaSignIn,delete t.usesMatildaSavedApiKey,!fn(t))return;let n=t.baseUrl||K();Gn({baseUrl:n,channel:e})&&(t.usesMatildaSignIn=!0),!t.apiKey&&Ft(n)!==void 0&&(t.usesMatildaSavedApiKey=!0)}function Gd(t,e={}){let n=t.apiKey?{value:t.apiKey,from:e.apiKeyFrom??"config"}:void 0;return fn(t)?Sr({baseUrl:t.baseUrl||K(),channel:e.channel,apiKey:n,apiKeyEnvKey:t.apiKeyEnvKey}):n&&{kind:"api-key",from:n.from}}async function na(t,e){try{await Er({baseUrl:t.baseUrl||K(),channel:e})}catch(n){if(!kr(n))throw n}}function jn(t,e,n){t[e]=n}function oa(t,e){return t?.[e]}function $d(t,e,n,o,r){let i={...o||{}},s=r?.strictModelProvider===!0,a={...n||{},authType:e,proxy:t?.getProxy()};jn(i,"authType",{kind:"computed",detail:"provided by caller"}),t?.getProxy()&&jn(i,"proxy",{kind:"computed",detail:"Config.getProxy()"});let l=u=>oa(o,u)??{kind:"unknown"};for(let u of xt)n&&u in n&&!i[u]&&jn(i,u,l(u));wr(a,t.getChannel());let c=_n(a,s);if(!c.valid)throw new Error(c.errors.map(u=>u.message).join(`
17
+ `));return{config:a,sources:i}}function _n(t,e=!1){let n=[];if(!t.apiKey&&!t.usesMatildaSignIn&&!t.usesMatildaSavedApiKey)if(e)n.push(new St(t.authType,t.model,t.apiKeyEnvKey));else{let o=t.apiKeyEnvKey||Bo(t.authType);n.push(new At({authType:t.authType,model:t.model,baseUrl:t.baseUrl,envKey:o}))}if(!t.model)if(e)n.push(new Et(t.authType));else{let o=jo(t.authType);n.push(new Rt({authType:t.authType,envKey:o}))}return{valid:n.length===0,errors:n}}function ra(t){let e=t;for(;e instanceof Error;){if("code"in e&&e.code==="ERR_MODULE_NOT_FOUND")return e;e=e.cause}}async function Bd(t,e,n){vn(t,e.getOrganizationId?.(),e.getCodeCreditLimitMinor?.()),$o(t.customHeaders),wr(t,e.getChannel()),t.usesMatildaSignIn&&await na(t,e.getChannel());let o=_n(t,!1);if(!o.valid)throw new Error(o.errors.map(s=>s.message).join(`
18
+ `));let r=t.authType;if(!r)throw new Error("ContentGeneratorConfig must have an authType");let i;try{if(r==="openai"){let{applyDeclaredInputModalities:s,createOpenAIContentGenerator:a}=await import("./openaiContentGenerator-2NF5JGUC.js");await s(t,e,n),i=a(t,e)}else throw new Error(`Error creating contentGenerator: Unsupported authType: ${r}`)}catch(s){let a=ra(s);throw a?new Error(`Matilda was updated in the background and needs to be restarted.
19
+ Please exit and restart Matilda to use the '${r}' provider.`,{cause:a}):s}return new Le(i,e,t)}var ia=["x-matilda-client-name","x-matilda-client-version","x-matilda-client-operating-system","x-matilda-client-architecture","x-matilda-client-distribution-channel","x-matilda-client-release-channel"],sa=new Set([...ia,...Hn]),aa=new Set(["VSCode","ACP","SDK","CI"]),Re="(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})",la="[A-Za-z][0-9A-Za-z-]{0,23}",xr="(?:0|[1-9]\\d{0,11}|[0-9A-Fa-f]{7,12})",ua=new RegExp(`^${Re}(?:-${la}(?:\\.${xr})+)?$`),ca=63,da=new RegExp(`^${Re}$`),pa=new RegExp(`^${Re}-preview\\.(?:0|[1-9]\\d{0,11})$`),fa=new RegExp(`^${Re}-canary\\.(?:0|[1-9]\\d{0,11})$`),ga=new RegExp(`^${Re}-nightly\\.(?:0|[1-9]\\d{0,11})\\.[0-9A-Fa-f]{7,12}$`),ma=new RegExp(`^${Re}-(preview|canary|nightly|development|internal)(?:\\.${xr})+$`);function ha(t){return t==="desktop"?"desktop":t===void 0||aa.has(t)?"code_cli":"unknown"}function Ca(t){if(t==="android")return"android";if(t==="darwin")return"macos";if(t==="win32")return"windows";if(t==="linux")return"linux"}function ya(t){if(t==="x64")return"x64";if(t==="arm64")return"arm64"}function Ta(t){if(t===void 0)return"npm";if(t==="desktop")return"direct-download";if(t==="VSCode")return"vscode-marketplace"}function Sa(t,e){if(e==="desktop")return"matilda-desktop";if(t==="VSCode")return"matilda-vscode";if(e==="code_cli")return"matilda-code"}function Ea(t){if(typeof t=="string"&&!(t.length>ca||!ua.test(t)))return t}function Aa(t){if(t!==void 0)return da.test(t)?"stable":pa.test(t)?"preview":fa.test(t)?"canary":ga.test(t)?"nightly":ma.exec(t)?.[1]}function Ir(t,e=process.platform,n=process.arch){let o=t.getChannel?.(),r=ha(o),i=Ea(o==="desktop"&&process.env.CRAFT_AGENT_VERSION!==void 0?process.env.CRAFT_AGENT_VERSION:t.getCliVersion?.()),s=Aa(i),a=Ca(e),l=ya(n),c=Ta(o),u=Sa(o,r);return{...u?{"x-matilda-client-name":u}:{},...i?{"x-matilda-client-version":i}:{},...a?{"x-matilda-client-operating-system":a}:{},...l?{"x-matilda-client-architecture":l}:{},...c?{"x-matilda-client-distribution-channel":c}:{},...s?{"x-matilda-client-release-channel":s}:{}}}function qd(t){let e=t.toLowerCase();return sa.has(e)||e.startsWith("x-matilda-reported-")}function Ra(t){let e=t??K();try{let n=new URL(e);if(n.protocol!=="https:"&&n.protocol!=="http:")return!1;let o=n.hostname.toLowerCase();return o==="matilda.maincode.com"||o.endsWith(".matilda.maincode.com")||o==="core-api.matilda"||Pe(e)}catch{return!1}}function Jd(t,e=t.apiKey){return t.authType==="openai"&&(!!e||t.usesMatildaSignIn===!0||t.usesMatildaSavedApiKey===!0)&&Ra(t.baseUrl)}var va=3e3,Ve=1,ba=24*60*60*1e3,Or=20,Pr=999,Ma=new Set(["UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","SELF_SIGNED_CERT_IN_CHAIN","DEPTH_ZERO_SELF_SIGNED_CERT","CERT_HAS_EXPIRED","ERR_TLS_CERT_ALTNAME_INVALID"]),_a=new Set(["ENOTFOUND","EAI_AGAIN"]),ka=new Set(["ECONNREFUSED","EHOSTUNREACH","ENETUNREACH"]),wa=new Set(["ABORT_ERR","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT"]),xa=new Set(["ECONNRESET","EPIPE","UND_ERR_SOCKET"]);function Ia(t){return`${new URL(t).origin}/api/client-events`}function Oa(t){let e={eventType:t.eventType,platform:"cli"};return t.eventType==="network_error"&&(e.transportReason=t.transportReason,e.transportStage=t.transportStage,e.responseReceived=t.responseReceived,e.occurrenceCount=t.occurrenceCount),t.eventType==="auth_funnel"&&(e.authStage=t.authStage,e.authOutcome=t.authOutcome,e.occurrenceCount=t.occurrenceCount),t.eventType==="network_error"&&(e.reportedSurface=t.reportedSurface,e.reportedOs=t.reportedOs,e.reportedArchitecture=t.reportedArchitecture,e.reportedProcess=t.reportedProcess,e.reportedReleaseChannel=t.reportedReleaseChannel,t.reportedVersion&&(e.reportedVersion=t.reportedVersion)),e}async function Vn(t,e){let{baseUrl:n,token:o}=e;if(!n||!o)return!1;let r=e.fetchImpl??fetch,i=new AbortController,s=setTimeout(()=>i.abort(),e.timeoutMs??va);try{let a=await r(Ia(n),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${o}`},body:JSON.stringify(Oa(t)),signal:i.signal});return a.ok?!0:(Xe.warn(`client-events beacon: server rejected payload (HTTP ${a.status})`),!1)}catch{return!1}finally{clearTimeout(s)}}async function Nn(t,e){let n=typeof t.occurrenceCount=="number"&&Number.isFinite(t.occurrenceCount)?Math.max(1,Math.min(Math.floor(t.occurrenceCount),Pr)):1;return Vn({eventType:"auth_funnel",authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:n},e)}function Dr(){try{let t=Q.readFileSync(Lr(),"utf8"),e=JSON.parse(t);return e.schemaVersion!==Ve||!Array.isArray(e.failures)?void 0:{schemaVersion:Ve,failures:e.failures.filter(Pa)}}catch{return}}function Pa(t){if(!t||typeof t!="object")return!1;let e=t;return e.eventType==="network_error"&&typeof e.transportReason=="string"&&typeof e.transportStage=="string"&&typeof e.responseReceived=="boolean"&&typeof e.occurrenceCount=="number"&&typeof e.reportedSurface=="string"&&typeof e.reportedOs=="string"&&typeof e.reportedArchitecture=="string"&&typeof e.reportedProcess=="string"&&typeof e.reportedReleaseChannel=="string"&&typeof e.firstObservedAtMs=="number"&&typeof e.lastObservedAtMs=="number"}function Ur(t){let e=Lr();if(t.failures.length===0){try{Q.rmSync(e,{force:!0})}catch{}return}try{Q.mkdirSync(Gt.dirname(e),{recursive:!0}),Q.writeFileSync(e,`${JSON.stringify(t)}
20
+ `,"utf8")}catch{}}function Nr(t,e){return t.filter(n=>e-n.lastObservedAtMs<=ba).sort((n,o)=>n.firstObservedAtMs-o.firstObservedAtMs).slice(-Or)}function Da(t){let e=Ir(t);return{reportedSurface:e["x-matilda-client-name"]==="matilda-desktop"?"desktop":e["x-matilda-client-name"]==="matilda-code"||e["x-matilda-client-name"]==="matilda-vscode"?"code_cli":"unknown",reportedOs:e["x-matilda-client-operating-system"]??"unknown",reportedArchitecture:e["x-matilda-client-architecture"]??"unknown",reportedProcess:e["x-matilda-client-name"]??"unknown",reportedVersion:e["x-matilda-client-version"],reportedReleaseChannel:e["x-matilda-client-release-channel"]??"unknown"}}function Ua(t){if(!t||typeof t!="object")return;let e=t.code;if(typeof e=="string")return e;if(!(t instanceof Error)||!t.cause||typeof t.cause!="object")return;let n=t.cause.code;return typeof n=="string"?n:void 0}function Na(t){if(!(!t||typeof t!="object"))for(let e of["status","statusCode"]){let n=t[e];if(typeof n=="number")return n}}function La(t,e){let n=Ua(t);if(n&&Ma.has(n))return{reason:"tls",stage:"tls",responseReceived:!1};if(n&&_a.has(n))return{reason:"dns",stage:"resolve",responseReceived:!1};if(n&&ka.has(n))return{reason:"connect",stage:"connect",responseReceived:!1};if(n&&wa.has(n))return{reason:"timeout",stage:n==="UND_ERR_BODY_TIMEOUT"?"response":"request",responseReceived:n==="UND_ERR_BODY_TIMEOUT"};if(n&&xa.has(n))return{reason:"reset",stage:n==="UND_ERR_SOCKET"?"response":"request",responseReceived:n==="UND_ERR_SOCKET"};let o=Na(t),r=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();if(r.includes("self signed")||r.includes("certificate")||r.includes("tls"))return{reason:"tls",stage:"tls",responseReceived:!1};if(o===407||n==="proxy_auth_required")return{reason:"proxy",stage:"connect",responseReceived:!0};if(e&&r.includes("proxy")&&(r.includes("407")||r.includes("connect")||r.includes("fetch failed")))return{reason:"proxy",stage:"connect",responseReceived:!1};if(r.includes("timed out")||r.includes("timeout")||r.includes("deadline exceeded"))return{reason:"timeout",stage:"request",responseReceived:!1};if(r.includes("fetch failed"))return{reason:"unknown",stage:"unknown",responseReceived:!1}}function Fa(t,e){return t.findIndex(n=>n.transportReason===e.transportReason&&n.transportStage===e.transportStage&&n.responseReceived===e.responseReceived&&n.reportedSurface===e.reportedSurface&&n.reportedOs===e.reportedOs&&n.reportedArchitecture===e.reportedArchitecture&&n.reportedProcess===e.reportedProcess&&n.reportedVersion===e.reportedVersion&&n.reportedReleaseChannel===e.reportedReleaseChannel)}function tp(t,e){let n=Da(e.cliConfig);if(n.reportedSurface!=="code_cli"&&n.reportedSurface!=="desktop")return!1;let o=La(t,e.proxyConfigured);if(!o)return!1;let r=Date.now(),i={eventType:"network_error",transportReason:o.reason,transportStage:o.stage,responseReceived:o.responseReceived,occurrenceCount:1,...n,firstObservedAtMs:r,lastObservedAtMs:r},s=Dr()??{schemaVersion:Ve,failures:[]},a=Nr(s.failures,r),l=Fa(a,i);if(l>=0){let c=a[l];a[l]={...c,occurrenceCount:Math.min(c.occurrenceCount+1,Pr),lastObservedAtMs:r}}else a.push(i);return Ur({schemaVersion:Ve,failures:a.slice(-Or)}),!0}async function np(t){let e=Dr();if(!e)return;let n=Nr(e.failures,Date.now()),o=[];for(let r=0;r<n.length;r+=1){let i=n[r];if(!await Vn({eventType:i.eventType,transportReason:i.transportReason,transportStage:i.transportStage,responseReceived:i.responseReceived,occurrenceCount:i.occurrenceCount,reportedSurface:i.reportedSurface,reportedOs:i.reportedOs,reportedArchitecture:i.reportedArchitecture,reportedProcess:i.reportedProcess,reportedVersion:i.reportedVersion,reportedReleaseChannel:i.reportedReleaseChannel},t)){o.push(...n.slice(r));break}}Ur({schemaVersion:Ve,failures:o})}function Lr(){return Gt.join(Ye.getGlobalMatildaDir(),"telemetry","cli-transport-failures.json")}var tg="http://localhost:4317";export{vs as a,lr as b,Vr as c,un as d,dt as e,Xr as f,Qr as g,ft as h,Io as i,ki as j,En as k,Ei as l,Tl as m,Ro as n,mt as o,bl as p,_o as q,Pe as r,fn as s,De as t,Ti as u,K as v,Ir as w,qd as x,Jd as y,Nn as z,tp as A,np as B,tg as C,Pu as D,vn as E,$o as F,Du as G,Ku as H,Gu as I,bt as J,me as K,Jo as L,nc as M,sc as N,Zo as O,Kn as P,Gn as Q,Ft as R,Ns as S,Ls as T,fd as U,Er as V,Ks as W,gd as X,md as Y,Kt as Z,Ar as _,Rr as $,Gs as aa,$n as ba,Bn as ca,zs as da,br as ea,bd as fa,qs as ga,xd as ha,kr as ia,B as ja,Gd as ka,$d as la,Bd as ma};
21
21
  /**
22
22
  * @license
23
23
  * Copyright 2025 Matilda