@maincode-ai/matilda-code 0.22.2 → 0.22.3-nightly.20261110.cb1234773
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/chunks/agent-7LLN72GU.js +3 -0
- package/chunks/agent-headless-APBRBFN3.js +3 -0
- package/chunks/{askUserQuestion-DHYKAZWH.js → askUserQuestion-76LPP5ST.js} +1 -1
- package/chunks/{chunk-MZ73LBEY.js → chunk-3EQIOCSJ.js} +1 -1
- package/chunks/chunk-4SDFTVQW.js +62 -0
- package/chunks/chunk-B7BF33U4.js +31 -0
- package/chunks/chunk-BEP4F3GO.js +2556 -0
- package/chunks/chunk-DERMLVT6.js +68 -0
- package/chunks/{chunk-OWEBLTAN.js → chunk-EEPSTT7K.js} +1 -1
- package/chunks/{chunk-OF7ORAN6.js → chunk-GDRS4OWI.js} +71 -67
- package/chunks/chunk-HK3QQSM7.js +18 -0
- package/chunks/{chunk-PFXCFIHY.js → chunk-J6NYCXUR.js} +1 -1
- package/chunks/chunk-JVQHQDDE.js +10 -0
- package/chunks/chunk-JZMGEGR6.js +12 -0
- package/chunks/{chunk-HJK3NKAR.js → chunk-M5ABGGE7.js} +1 -1
- package/chunks/chunk-N3AQRPV5.js +207 -0
- package/chunks/{chunk-DZKI2CAC.js → chunk-NO6BFSGG.js} +1 -1
- package/chunks/chunk-QKAKC34Q.js +8 -0
- package/chunks/{chunk-VWM3GUBH.js → chunk-QUITDDTB.js} +1 -1
- package/chunks/{chunk-ZUQRP3N6.js → chunk-R373GBK6.js} +1 -1
- package/chunks/{chunk-BS7Q7KA6.js → chunk-T6MRYRLI.js} +1 -1
- package/chunks/{chunk-REUZDMLM.js → chunk-TVNM3PQ7.js} +25 -25
- package/chunks/chunk-VBZS7ARJ.js +8 -0
- package/chunks/{chunk-FY3LL4OC.js → chunk-VNSW4TSX.js} +1 -1
- package/chunks/{chunk-HRD7WD3P.js → chunk-WAZCC4SE.js} +1 -1
- package/chunks/chunk-YUCEPXGG.js +12 -0
- package/chunks/{computer-use-5T3ZH24D.js → computer-use-RIDTFLYZ.js} +5 -17
- package/chunks/cron-create-T5QOBRRU.js +38 -0
- package/chunks/cron-delete-JXDOHSJF.js +3 -0
- package/chunks/cron-list-ZQ76A2FW.js +5 -0
- package/chunks/{edit-Y7YSDGLT.js → edit-LDTYXEVU.js} +1 -1
- package/chunks/en-SCZAH2YB.js +23 -0
- package/chunks/{enter-worktree-5ZGIYDUE.js → enter-worktree-FOFQXTPW.js} +1 -1
- package/chunks/enterPlanMode-2GHHILQY.js +18 -0
- package/chunks/{exit-worktree-3F5UY76U.js → exit-worktree-OK7AD7DC.js} +1 -1
- package/chunks/{exitPlanMode-HWK5EUVS.js → exitPlanMode-EANVOWTX.js} +30 -27
- package/chunks/{glob-H7DNNPJ4.js → glob-VZD7TOML.js} +1 -1
- package/chunks/{goal-tools-CJINJJ3Y.js → goal-tools-REBEAKVP.js} +1 -1
- package/chunks/{grep-5MCMGW6A.js → grep-JPEHWEM3.js} +1 -1
- package/chunks/ls-EP4ZVFNW.js +15 -0
- package/chunks/{lsp-Y46R5DO5.js → lsp-ULZTGWC4.js} +1 -1
- package/chunks/monitor-5WDGSYNZ.js +33 -0
- package/chunks/notebook-edit-W42S562V.js +17 -0
- package/chunks/openaiContentGenerator-QLDLWN4P.js +52 -0
- package/chunks/read-file-4M76GCWT.js +3 -0
- package/chunks/ripGrep-LF2E2V6N.js +3 -0
- package/chunks/scheduler-G4LEIBL4.js +8 -0
- package/chunks/send-message-TDOMZHNJ.js +8 -0
- package/chunks/shell-NUMSSUOV.js +3 -0
- package/chunks/{skill-5EMGSWRM.js → skill-IVESDHGG.js} +1 -1
- package/chunks/symbol-search-BLJAKP7C.js +19 -0
- package/chunks/syntheticOutput-5SCRQCXN.js +3 -0
- package/chunks/task-create-T4DIVG5X.js +3 -0
- package/chunks/task-detach-ES3IMGJ4.js +9 -0
- package/chunks/task-list-LYK4TOBS.js +9 -0
- package/chunks/{task-stop-OEAEE5R7.js → task-stop-FETAYKFU.js} +1 -1
- package/chunks/{task-update-4ANRU74G.js → task-update-I6PVT46S.js} +1 -1
- package/chunks/{team-create-G4N2NCFN.js → team-create-QQD472XN.js} +1 -1
- package/chunks/team-delete-P5F32IYK.js +8 -0
- package/chunks/todoWrite-ADAGHJLI.js +3 -0
- package/chunks/tool-call-W6PAJOF6.js +3 -0
- package/chunks/tool-search-LGTQYGTC.js +26 -0
- package/chunks/{web-fetch-VA2BZ4VR.js → web-fetch-5X37JMDH.js} +1 -1
- package/chunks/{web-search-OVFXJQDS.js → web-search-62YZTP3D.js} +1 -1
- package/chunks/{workflow-6VMVM5BG.js → workflow-OT4I6TMY.js} +2 -2
- package/chunks/write-file-GMIHG7AP.js +15 -0
- package/cli.js +472 -486
- package/locales/en.js +45 -113
- package/npm-postinstall.js +2 -2
- package/package.json +2 -2
- package/chunks/agent-IJOGVY62.js +0 -3
- package/chunks/agent-headless-FZGKJCVK.js +0 -3
- package/chunks/ca-HHQCT6S2.js +0 -23
- package/chunks/chunk-225CZWD7.js +0 -89
- package/chunks/chunk-3BT7ZYAM.js +0 -121
- package/chunks/chunk-3IG6LNQ3.js +0 -2581
- package/chunks/chunk-46FFWNRO.js +0 -12
- package/chunks/chunk-55YW6EUC.js +0 -8
- package/chunks/chunk-BQDEPKIG.js +0 -46
- package/chunks/chunk-E2KMVG7F.js +0 -8
- package/chunks/chunk-FPGKJJJY.js +0 -13
- package/chunks/chunk-L2FKLLEC.js +0 -12
- package/chunks/chunk-N2BE647T.js +0 -10
- package/chunks/chunk-P24OL22U.js +0 -31
- package/chunks/chunk-VWE5BSHV.js +0 -56
- package/chunks/chunk-WL27X35X.js +0 -44
- package/chunks/cron-create-5RRFCP36.js +0 -38
- package/chunks/cron-delete-7DTRWCSV.js +0 -3
- package/chunks/cron-list-HY6XJD7D.js +0 -5
- package/chunks/de-MJBGC47E.js +0 -23
- package/chunks/en-JITX7JKV.js +0 -23
- package/chunks/enterPlanMode-TWD4MXCW.js +0 -18
- package/chunks/fr-WT3R2JCR.js +0 -23
- package/chunks/ja-OEXP6Z3S.js +0 -23
- package/chunks/keychain-token-storage-BCODB632.js +0 -3
- package/chunks/ls-JORGCXES.js +0 -15
- package/chunks/mcp-client-54J5M542.js +0 -3
- package/chunks/monitor-BRJR6PR3.js +0 -32
- package/chunks/notebook-edit-UCCVQ4JP.js +0 -17
- package/chunks/openaiContentGenerator-H6JOS3XU.js +0 -52
- package/chunks/pt-PCVIFK7H.js +0 -23
- package/chunks/read-file-LVMBCRCT.js +0 -3
- package/chunks/ripGrep-F6AJSDKU.js +0 -3
- package/chunks/ru-CB5SIZZM.js +0 -23
- package/chunks/scheduler-XAOD6LG6.js +0 -8
- package/chunks/send-message-VY4DP63A.js +0 -8
- package/chunks/shell-QUDC6MJK.js +0 -3
- package/chunks/symbol-search-YNGX4Z5T.js +0 -19
- package/chunks/syntheticOutput-4JANVS4D.js +0 -3
- package/chunks/task-create-NRBVXURQ.js +0 -3
- package/chunks/task-detach-VHDDAO2K.js +0 -9
- package/chunks/task-list-T2IET466.js +0 -9
- package/chunks/team-delete-M4ORNSTT.js +0 -8
- package/chunks/todoWrite-RN2OP46T.js +0 -3
- package/chunks/tool-search-WEUURHFZ.js +0 -28
- package/chunks/write-file-5ZAZVXBB.js +0 -15
- package/locales/ca.js +0 -1895
- package/locales/de.js +0 -1935
- package/locales/fr.js +0 -1936
- package/locales/ja.js +0 -1698
- package/locales/pt.js +0 -1921
- package/locales/ru.js +0 -1911
package/chunks/chunk-3BT7ZYAM.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{a as w,d as ne}from"./chunk-225CZWD7.js";import{a as qn,d as Jn,n as at,o as Qt,p as eo,q as ke,s as lt}from"./chunk-FPGKJJJY.js";import{Aa as Ht,Ca as qt,I as ue,K as tt,L as nt,M as ot,U as rt,V as oe,ha as it,ia as st,qa as H,qb as Jt,rb as Yt,tb as Xt,ya as Wt}from"./chunk-OF7ORAN6.js";import{P as Ze,Q as Qn,V as Zn,d as Yn,e as Xn,ea as L,f as B,g as _e,k as Xe,r as Qe,w as le}from"./chunk-WL27X35X.js";import{h as j,i as et,k as Vt,m as zt}from"./chunk-HEJO7OBH.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();p();p();p();p();var V=class extends Error{constructor(e,n){super(`${e} at position ${n}`),this.position=n}};p();function to(t){return/^[0-9A-Fa-f]$/.test(t)}function J(t){return t>="0"&&t<="9"}function no(t){return t>=" "}function we(t){return`,:[]/{}()
|
|
4
|
-
+`.includes(t)}function Zt(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"}function en(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"||t>="0"&&t<="9"}var tn=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,nn=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function on(t){return`,[]/{}
|
|
5
|
-
+`.includes(t)}function rn(t){return xe(t)||Jr.test(t)}var Jr=/^[[{\w-]$/;function oo(t){return t===`
|
|
6
|
-
`||t==="\r"||t===" "||t==="\b"||t==="\f"}function q(t,e){let n=t.charCodeAt(e);return n===32||n===10||n===9||n===13}function ro(t,e){let n=t.charCodeAt(e);return n===32||n===9||n===13}function io(t,e){let n=t.charCodeAt(e);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function xe(t){return sn(t)||ut(t)}function sn(t){return t==='"'||t==="\u201C"||t==="\u201D"}function an(t){return t==='"'}function ut(t){return t==="'"||t==="\u2018"||t==="\u2019"||t==="`"||t==="\xB4"}function ln(t){return t==="'"}function ce(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(!q(t,n-1))return t+e;for(;q(t,n-1);)n--;return t.substring(0,n)+e+t.substring(n)}function so(t,e,n){return t.substring(0,e)+t.substring(e+n)}function ao(t){return/[,\n][ \t\r]*$/.test(t)}var Yr={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},Xr={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
7
|
-
`,r:"\r",t:" "};function ct(t){let e=0,n="";u(["```","[```","{```"]),i()||ee(),u(["```","```]","```}"]);let r=f(",");for(r&&s(),rn(t[e])&&ao(n)?(r||(n=F(n,",")),h()):r&&(n=ce(n,","));t[e]==="}"||t[e]==="]";)e++,s();if(e>=t.length)return n;Je();function i(){s();let T=g()||y()||S()||M()||R()||G(!1)||Q();return s(),T}function s(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,A=e,b=a(T);do b=l(),b&&(b=a(T));while(b);return e>A}function a(T){let A=T?q:ro,b="";for(;;)if(A(t,e))b+=t[e],e++;else if(io(t,e))b+=" ",e++;else break;return b.length>0?(n+=b,!0):!1}function l(){if(t[e]==="/"&&t[e+1]==="*"){for(;e<t.length&&!Qr(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 u(T){if(c(T)){if(Zt(t[e]))for(;e<t.length&&en(t[e]);)e++;return s(),!0}return!1}function c(T){a(!0);for(let A of T){let b=e+A.length;if(t.slice(e,b)===A)return e=b,!0}return!1}function f(T){return t[e]===T?(n+=t[e],e++,!0):!1}function d(T){return t[e]===T?(e++,!0):!1}function m(){return d("\\")}function C(){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 T=!0;for(;e<t.length&&t[e]!=="}";){let A;if(T?(A=!0,T=!1):(A=f(","),A||(n=F(n,",")),s()),C(),!(S()||G(!0))){t[e]==="}"||t[e]==="{"||t[e]==="]"||t[e]==="["||t[e]===void 0?n=ce(n,","):U();break}s();let Ye=f(":"),te=e>=t.length;Ye||(rn(t[e])||te?n=F(n,":"):ve()),i()||(Ye||te?n+="null":ve())}return t[e]==="}"?(n+="}",e++):n=F(n,"}"),!0}return!1}function y(){if(t[e]==="["){n+="[",e++,s(),d(",")&&s();let T=!0;for(;e<t.length&&t[e]!=="]";)if(T?T=!1:f(",")||(n=F(n,",")),C(),!i()){n=ce(n,",");break}return t[e]==="]"?(n+="]",e++):n=F(n,"]"),!0}return!1}function h(){let T=!0,A=!0;for(;A;)T?T=!1:f(",")||(n=F(n,",")),A=i();A||(n=ce(n,",")),n=`[
|
|
9
|
-
${n}
|
|
10
|
-
]`}function S(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,b=t[e]==="\\";if(b&&(e++,b=!0),xe(t[e])){let Ye=an(t[e])?an:ln(t[e])?ln:ut(t[e])?ut:sn,te=e,Me=n.length,k='"';for(e++;;){if(e>=t.length){let O=P(e-1);return!T&&we(t.charAt(O))?(e=te,n=n.substring(0,Me),S(!0)):(k=F(k,'"'),n+=k,!0)}if(e===A)return k=F(k,'"'),n+=k,!0;if(Ye(t[e])){let O=e,jt=k.length;if(k+='"',e++,n+=k,s(!1),T||e>=t.length||we(t[e])||xe(t[e])||J(t[e]))return E(),!0;let W=P(O-1),Hn=t.charAt(W);if(Hn===",")return e=te,n=n.substring(0,Me),S(!1,W);if(we(Hn))return e=te,n=n.substring(0,Me),S(!0);n=n.substring(0,Me),e=O+1,k=`${k.substring(0,jt)}\\${k.substring(jt)}`}else if(T&&on(t[e])){if(t[e-1]===":"&&tn.test(t.substring(te+1,e+2)))for(;e<t.length&&nn.test(t[e]);)k+=t[e],e++;return k=F(k,'"'),n+=k,E(),!0}else if(t[e]==="\\"){let O=t.charAt(e+1);if(Xr[O]!==void 0)k+=t.slice(e,e+2),e+=2;else if(O==="u"){let W=2;for(;W<6&&to(t[e+W]);)W++;W===6?(k+=t.slice(e,e+6),e+=6):e+W>=t.length?e=t.length:qr()}else k+=O,e+=2}else{let O=t.charAt(e);O==='"'&&t[e-1]!=="\\"?(k+=`\\${O}`,e++):oo(O)?(k+=Yr[O],e++):(no(O)||Z(O),k+=O,e++)}b&&m()}}return!1}function E(){let T=!1;for(s();t[e]==="+";){T=!0,e++,s(),n=ce(n,'"',!0);let A=n.length;S()?n=so(n,A,1):n=F(n,'"')}return T}function M(){let T=e;if(t[e]==="-"){if(e++,ae())return I(T),!0;if(!J(t[e]))return e=T,!1}for(;J(t[e]);)e++;if(t[e]==="."){if(e++,ae())return I(T),!0;if(!J(t[e]))return e=T,!1;for(;J(t[e]);)e++}if(t[e]==="e"||t[e]==="E"){if(e++,(t[e]==="-"||t[e]==="+")&&e++,ae())return I(T),!0;if(!J(t[e]))return e=T,!1;for(;J(t[e]);)e++}if(!ae())return e=T,!1;if(e>T){let A=t.slice(T,e),b=/^0\d/.test(A);return n+=b?`"${A}"`:A,!0}return!1}function R(){return _("true","true")||_("false","false")||_("null","null")||_("True","true")||_("False","false")||_("None","null")}function _(T,A){return t.slice(e,e+T.length)===T?(n+=A,e+=T.length,!0):!1}function G(T){let A=e;if(Zt(t[e])){for(;e<t.length&&en(t[e]);)e++;let b=e;for(;q(t,b);)b++;if(t[b]==="(")return e=b+1,i(),t[e]===")"&&(e++,t[e]===";"&&e++),!0}for(;e<t.length&&!on(t[e])&&!xe(t[e])&&(!T||t[e]!==":");)e++;if(t[e-1]===":"&&tn.test(t.substring(A,e+2)))for(;e<t.length&&nn.test(t[e]);)e++;if(e>A){for(;q(t,e-1)&&e>0;)e--;let b=t.slice(A,e);return n+=b==="undefined"?"null":JSON.stringify(b),t[e]==='"'&&e++,!0}}function Q(){if(t[e]==="/"){let T=e;for(e++;e<t.length&&(t[e]!=="/"||t[e-1]==="\\");)e++;return e++,n+=`"${t.substring(T,e)}"`,!0}}function P(T){let A=T;for(;A>0&&q(t,A);)A--;return A}function ae(){return e>=t.length||we(t[e])||q(t,e)}function I(T){n+=`${t.slice(T,e)}0`}function Z(T){throw new V(`Invalid character ${JSON.stringify(T)}`,e)}function Je(){throw new V(`Unexpected character ${JSON.stringify(t[e])}`,e)}function ee(){throw new V("Unexpected end of json string",t.length)}function U(){throw new V("Object key expected",e)}function ve(){throw new V("Colon expected",e)}function qr(){let T=t.slice(e,e+6);throw new V(`Invalid unicode character "${T}"`,e)}}function Qr(t,e){return t[e]==="*"&&t[e+1]==="/"}var Zr=L("JSON_PARSE");function ei(t,e={}){if(!t||typeof t!="string")return e;try{return JSON.parse(t)}catch(n){let o=ti(t);if(o!==void 0)return o;try{let r=ct(t);return JSON.parse(r)}catch(r){let i=co(t);if(i&&i!==t)try{return JSON.parse(ct(i))}catch{}return Zr.error("Failed to parse JSON even with jsonrepair:",{originalError:n,repairError:r,jsonString:t}),e}}}var lo=Symbol("tool-args-parse-failed");function uo(t){if(t==null)return{};let e=typeof t=="string"?t.trim():"";if(!e)return{};let n=ei(e,lo);return n===lo?null:n&&typeof n=="object"&&!Array.isArray(n)?n:null}function ti(t){let e=co(t);if(e&&e!==t.trim())try{return JSON.parse(e)}catch{return}}function co(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 ni=/[A-Za-z\u00C0-\u024F]/g;function oi(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 un(t){let e=t.codePointAt(0);return e!==void 0&&oi(e)}function ri(t){let e=t.match(ni)?.length??0;if(e<24)return!1;let n=0;for(let o of t)un(o)&&n++;return n===0||e>=n*8}function dt(t){if(!t||!ri(t))return t;let e="",n=0,o=[...t];for(;n<o.length;){if(!un(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&&un(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 de=L("TAGGED_THINKING_PARSER"),Oe=["<think>","<thinking>"],Pe=["</think>","</thinking>"],ii=Math.max(...Oe.map(t=>t.length),...Pe.map(t=>t.length));function Ie(t,e,n){e&&t.push(n==="thought"?{text:e,thought:!0}:{text:e})}function pt(t,e,n){let o=t.length-e;return o<=0||o>ii?!1:n.some(r=>r.startsWith(t.slice(e,e+o)))}function ft(t,e,n){return n.find(o=>t.startsWith(o,e))}function dn(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 po(t){let e=[];for(let n of t){if(n.thought===!0||typeof n.text!="string"){e.push(n);continue}let o=dt(dn(n.text));(o.length>0||/^\s+$/.test(n.text))&&e.push({text:o.length>0?o:n.text})}return e}var cn=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=ft(o,s,Oe);if(a){de.debug(`taggedThinking: detected open tag "${a}" at offset ${s}`),Ie(r,i,this.mode),i="",this.mode="thought",s+=a.length;continue}let l=ft(o,s,Pe);if(l){de.debug(`taggedThinking: dropping orphan close tag "${l}" at offset ${s}`),Ie(r,i,this.mode),i="",s+=l.length;continue}if(!n&&(pt(o,s,Oe)||pt(o,s,Pe)))break}else{let a=ft(o,s,Pe);if(a){de.debug(`taggedThinking: detected close tag "${a}" at offset ${s}`),Ie(r,i,this.mode),i="",this.mode="text",s+=a.length;continue}let l=ft(o,s,Oe);if(l){s+=l.length;continue}if(!n&&(pt(o,s,Pe)||pt(o,s,Oe)))break}i+=this.buffer[s],s+=1}return s<this.buffer.length?(Ie(r,i,this.mode),this.buffer=this.buffer.slice(s),de.debug(`taggedThinking: emitted ${r.length} part(s), buffered ${this.buffer.length} char(s)`),po(r)):(this.buffer="",this.mode==="thought"&&i&&de.warn(`taggedThinking: flushing ${i.length} chars of unclosed thought on stream end`),Ie(r,i,this.mode),de.debug(`taggedThinking: emitted ${r.length} part(s), flush complete`),po(r))}};function fo(t){return new cn().parse(t,!0)}p();function go(t,e="auto"){return e==="openapi_30"?si(t):t}function si(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 pe(t){return!Number.isFinite(t)||t<=0?0:Math.ceil(t/4)}function gt(t){let e=t.candidates||0,n=t.thoughts||0;return n>e?e+n:Math.max(e,n)}function ai(t){return t.total&&t.total>0?Math.max(t.total,(t.prompt||0)+gt(t)):(t.prompt||0)+gt(t)}function li(t){let e=Math.max(0,t.thoughtsTokens||0),n=gt({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 z=L("CONVERTER"),Eo="(attached media from previous tool call)";function Ao(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,u=Math.max(0,e.estimatedReasoningTokens??0),c=Math.max(0,e.estimatedContentTokens??0),f=l>0?l:u,d=o;f>0&&(o>=f?d=o:d=o+f),(c>0||u>0)&&(d=Math.max(d,c+(l>0?0:u),c+f)),r>n&&(n>0||o>0||f>0)&&(d=Math.max(d,r-n)),f===0&&u>0&&(f=u),f>d&&(f=d);let m=t.usage_is_incomplete===!0||o>0&&n===0||r>0&&n===0&&o===0,C=n,g=r;return(g===0&&(C>0||d>0)||g>0&&C>0&&g<C+d)&&(g=C+d),{promptTokenCount:C,candidatesTokenCount:d,totalTokenCount:g,cachedContentTokenCount:s,thoughtsTokenCount:f,...m?{usageIsIncomplete:!0}:{}}}var ui=64,mo=1024;function ho(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)?(z.debug(`normalizeStreamingTextDelta: cumulative rewind suppression (emitted=${e.emittedText.length}b, chunk=${t.length}b)`),""):(z.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>=mo&&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,z.debug(`normalizeStreamingTextDelta: entered cumulative mode (prefix overlap, baseline=${n}b sliceFrom=${r}b -> curr=${t.length}b)`),i}}return t===e.emittedText?t.length>=ui?(e.cumulativeMode=!0,z.debug(`normalizeStreamingTextDelta: entered cumulative mode (exact repeat, ${t.length}b)`),""):(e.emittedLength+=t.length,t):(e.emittedText.length<mo&&(e.emittedText+=t),e.emittedLength+=t.length,t)}function bo(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 ci(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=bo(i.parameters)),s&&(s=go(s,e)),n.push({type:"function",function:{name:i.name,description:i.description,parameters:s}})}}}return n}function di(t,e,n={cleanOrphanToolCalls:!0}){let o=[];return fi(t,o),gi(t.contents,o,e),o=So(o),n.cleanOrphanToolCalls&&(o=Ri(o),o=So(o)),o}function pi(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},u=r.join("");u&&(l.reasoning_content=u),s.length>0&&(l.tool_calls=s);let c=bi(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(),C=Number.isFinite(m)?Math.floor(m/1e3):Math.floor(Date.now()/1e3);return{id:t.responseId||`gemini-${Date.now()}`,object:"chat.completion",created:C,model:t.modelVersion||e.model,choices:[{index:0,message:l,finish_reason:c,logprobs:null}],usage:d}}function fi(t,e){if(!t.config?.systemInstruction)return;let n=vo(t.config.systemInstruction);n&&e.push({role:"system",content:n})}function gi(t,e,n){if(Array.isArray(t))for(let o of t)Co(o,e,n);else t&&Co(t,e,n)}function Co(t,e,n){if(typeof t=="string"){e.push({role:"user",content:t});return}if(!yi(t))return;let o=t.parts||[],r=t.role==="model"?"assistant":"user",i=[],s=[],a=[],l=0,u=new Set,c=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=Ro(d,n);if(m&&r==="user"&&i.push(m),"functionCall"in d&&d.functionCall&&r==="assistant"){let C=d.functionCall.id;if(C){if(u.has(C)){z.debug(`Dropping duplicate functionCall id=${C} while converting content`);continue}u.add(C)}a.push({id:C||`call_${l}`,type:"function",function:{name:d.functionCall.name||"",arguments:JSON.stringify(d.functionCall.args||{})}}),l+=1}if(d.functionResponse&&r==="user"){let C=d.functionResponse.id;if(C){if(c.has(C))continue;c.add(C)}let g=hi(d.functionResponse,n);if(g){if(n.splitToolMedia&&Array.isArray(g.content)){let y=[],h=[];for(let S of g.content)S&&(S.type==="image_url"||S.type==="input_audio"||S.type==="video_url"||S.type==="file")?y.push(S):S&&S.type==="text"&&h.push(S);if(y.length>0){let S=h.map(E=>E.text).join(`
|
|
11
|
-
`);g.content=S||"[media attached in following user message]",f.push(...y)}}e.push(g)}}}if(f.length>0&&e.push({role:"user",content:[{type:"text",text:Eo},...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 C=s.join("");C&&(m.reasoning_content=C),e.push(m);return}i.length>0&&e.push({role:"user",content:i})}function mi(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 hi(t,e){let n=mi(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=Ro(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 Ro(t,e){let{modalities:n}=e;if(t.inlineData?.mimeType&&t.inlineData?.data){let o=t.inlineData.mimeType,r=yo(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=Ci(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=yo(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){z.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 yo(t){return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function Ci(t){return t.includes("wav")?"wav":t.includes("mp3")||t.includes("mpeg")?"mp3":null}function yi(t){return typeof t=="object"&&t!==null&&"role"in t&&"parts"in t&&Array.isArray(t.parts)}function vo(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>vo(e)).filter(Boolean).join(`
|
|
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 mt(t,e,n=!0){if(e.taggedThinkingParser)return e.taggedThinkingParser.parse(t,n);if(e.responseParsingOptions?.taggedThinkingTags)return fo(t);if(!t)return[];let o=dt(dn(t));return o?[{text:o}]:[]}function Ti(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(...mt(n.message.content,e)),n.message.tool_calls){for(let i of n.message.tool_calls)if(i.function){let s=uo(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:Mo(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=Ao(t.usage,{estimatedReasoningTokens:pe(i.length),estimatedContentTokens:pe(s.length)})}return o}function Si(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 u=n.delta?.reasoning_content??n.delta?.reasoning;if(u){let c=ho(u,e.reasoningDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});c&&i.push({text:c,thought:!0})}}if(typeof n.delta?.content=="string"){let u=ho(n.delta.content,e.textDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});(u||n.finish_reason)&&i.push(...mt(u,e,!!n.finish_reason))}else n.finish_reason&&i.push(...mt("",e,!0));if(n.delta?.tool_calls)for(let u of n.delta.tool_calls){let c=u.index??0;u.function?.arguments?r.addChunk(c,u.function.arguments,u.id,u.function.name):r.addChunk(c,"",u.id,u.function?.name)}let s=!1;if(n.finish_reason){s=r.hasIncompleteToolCalls();let u=r.getCompletedToolCalls();for(let c of u)c.name&&i.push({functionCall:{id:c.id||`call_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,name:c.name,args:c.args}})}let a=s&&n.finish_reason!=="length"?"length":n.finish_reason,l={content:{parts:i,role:"model"},index:0,safetyRatings:[]};a&&(l.finishReason=Mo(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=Ao(t.usage,Ai(e))),o}function Ei(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(...mt("",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?w.MAX_TOKENS:w.STOP}],i.responseId=`stream-flush-${Date.now()}`,i.createTime=new Date().getTime().toString(),i.modelVersion=t.model,i.promptFeedback={safetyRatings:[]},i}function Ai(t){return{estimatedReasoningTokens:pe(t.reasoningDeltaState?.emittedLength??0),estimatedContentTokens:pe(t.textDeltaState?.emittedLength??0)}}function Mo(t){return t?{stop:w.STOP,length:w.MAX_TOKENS,content_filter:w.SAFETY,function_call:w.STOP,tool_calls:w.STOP}[t]||w.FINISH_REASON_UNSPECIFIED:w.FINISH_REASON_UNSPECIFIED}function bi(t){if(!t)return"stop";switch(t){case w.STOP:return"stop";case w.MAX_TOKENS:return"length";case w.SAFETY:case w.RECITATION:case w.BLOCKLIST:case w.PROHIBITED_CONTENT:case w.SPII:case w.IMAGE_SAFETY:case w.IMAGE_RECITATION:case w.IMAGE_PROHIBITED_CONTENT:case w.IMAGE_OTHER:return"content_filter";case w.NO_IMAGE:return"stop";default:return"stop"}}function pn(t){return t.role==="assistant"&&"tool_calls"in t&&Array.isArray(t.tool_calls)&&t.tool_calls.length>0}function To(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===Eo}function Ri(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(pn(l)){let u=[],c=new Set;for(let y of l.tool_calls){let h=y.id;!h||s.has(h)||c.has(h)||(c.add(h),u.push(y))}let f=new Set,d=[],m=[],C=!1;for(let y=a+1;y<t.length;y+=1){let h=t[y];if(h.role==="tool"&&"tool_call_id"in h){if(!h.tool_call_id){C=!1;continue}c.has(h.tool_call_id)&&!f.has(h.tool_call_id)?(f.add(h.tool_call_id),d.push(y),C=!0):C=!1;continue}if(To(h)){C&&m.push(y);continue}if(!(h.role==="assistant"&&!pn(h)))break}let g=u.filter(y=>f.has(y.id));for(let y of g)s.add(y.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(pn(l)){let u=l.reasoning_content,c=n.get(a)??[];if(c.length>0){let f={...l};f.tool_calls=c,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()||u){let f={...l};delete f.tool_calls,e.push(f)}else z.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?z.debug(`cleanOrphanedToolCalls: dropping orphaned tool response ${l.tool_call_id||"<empty>"}`):To(l)?z.debug("cleanOrphanedToolCalls: dropping orphaned split tool media message"):e.push(l)}return e}function So(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),u;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}]:[];u=[...f,...d]}else u=[typeof s=="string"?s:"",typeof a=="string"?a:""].filter(Boolean).join("")||null;let c=[...r,...i];o.content=u||null,c.length>0&&(o.tool_calls=c);continue}}e.push(n)}return e}var ht={convertGeminiToolParametersToOpenAI:bo,convertGeminiToolsToOpenAI:ci,convertGeminiRequestToOpenAI:di,convertGeminiResponseToOpenAI:pi,convertOpenAIResponseToGemini:Ti,convertOpenAIChunkToGemini:Si,flushOpenAIStreamToGemini:Ei};p();p();var Dl=new Set(["ECONNRESET","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET","ConnectionClosed","ConnectionReset","ConnectionTimedOut"]),_o=new Set(["EAI_AGAIN","ECONNREFUSED","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","UND_ERR_CONNECT_TIMEOUT","ConnectionRefused","FailedToOpenSocket","HostUnreachable","NetworkUnreachable"]);var De="MATILDA_BASE_URL",vi=new Set(["localhost","127.0.0.1","[::1]"]);function Ue(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}var xo=new Set;function Io(t){let e=Ue(t||K());try{let{origin:n,pathname:o}=new URL(e);return`${n}${o.replace(/\/+$/,"")}`}catch{return e}}function Mi(t){xo.add(Io(t))}function Gl(t,e=(n,o)=>globalThis.fetch(n,o)){return async(n,o)=>{let r=await e(n,o);return Mi(t),r}}function $l(t){return xo.has(Io(t))}function Bl(t){try{let{host:e}=new URL(Ue(t));return e===new URL(ke).host?"Matilda":e}catch{return t}}function Oo(t){let e;try{e=new URL(Ue(t))}catch{return}if(!(!(e.protocol==="https:"||e.protocol==="http:"&&vi.has(e.hostname))||e.username||e.password||e.search||e.hash))return`${e.origin}${e.pathname.replace(/\/+$/,"")}/api/v1/code`}function Po(t=process.env){let e=t[De]?.trim();return e?Oo(e):void 0}function Ne(t,e=process.env){let n=Po(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===at||_i(t.baseUrl)}function _i(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")||Ne(e)}var Ct="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.",ki=new Map([["UNABLE_TO_GET_ISSUER_CERT_LOCALLY",Ct],["UNABLE_TO_VERIFY_LEAF_SIGNATURE",Ct],["SELF_SIGNED_CERT_IN_CHAIN",Ct],["DEPTH_ZERO_SELF_SIGNED_CERT",Ct],["CERT_HAS_EXPIRED","its certificate has expired."],["ERR_TLS_CERT_ALTNAME_INVALID","its certificate is for another name. Check the address."]]),ko="its name does not resolve. Check the address and your network.",wo="it refused the connection. Check the address, and that the server is running.",wi=new Map([["ENOTFOUND",ko],["EAI_AGAIN",ko],["ECONNREFUSED",wo],["ConnectionRefused",wo],["UND_ERR_CONNECT_TIMEOUT","it did not answer. Check your network, VPN and proxy."]]),Do=5;function Le(t,e){if(B(t)!==void 0)return;let n=t;for(let o=0;o<=Do;o++){if(typeof n!="object"||n===null)return;let r=n,i=r.transportCode??r.code,{cause:s}=r;if(typeof i=="string"){let a=Ue(e),l=ki.get(i);if(l)return new Qe(`Could not connect securely to ${a}: ${l}`,i);if(_o.has(i))return new Qe(`Could not reach ${a}: ${wi.get(i)??"the network cannot reach it. Check your network, VPN and proxy."}`,i)}n=s}}function gn(t,e){let n=t;for(let o=0;o<=Do;o++){if(typeof n!="object"||n===null)return;let{name:r,code:i,cause:s}=n;if(r==="TimeoutError"||r==="AuthError"&&i==="timeout")return new Qe(`${Ue(e)} did not answer in time. Check your network, VPN and proxy.`,"ETIMEDOUT");n=s}}function xi(t=process.env){let e=t[De]?.trim();if(e&&!Oo(e))throw new Xe(`${De} 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 xi(t),Po(t)??ke}p();p();p();zt();var Ii=new Set(["service.version","service.instance.id","session.id"]);function ie(t,e){et.warn(t),e?.push(t)}function Uo(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 u;try{u=decodeURIComponent(a)}catch{ie(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${l}", using raw value`,e),u=a}n[l]=u}return n}function mn(t,e,n){for(let o of Ii)o in t&&(ie(`${e} cannot override reserved key "${o}"; ignoring`,n),delete t[o]);return t}function No(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 Fe(t){if(t!==void 0)return t==="true"||t==="1"}async function Oi(t){let e=t.argv??{},n=t.env??{},o=t.settings??{},r=e.telemetry??Fe(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(R=>R===s);if(s!==void 0&&a===void 0)throw new Xe(`Invalid telemetry OTLP protocol: ${String(s)}. Valid values are: grpc, http`);let l=e.telemetryLogPrompts??Fe(n.MATILDA_TELEMETRY_LOG_PROMPTS)??o.logPrompts,u=Fe(n.MATILDA_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES)??o.includeSensitiveSpanAttributes??!1,c=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,C=[],g=mn(Uo(n.OTEL_RESOURCE_ATTRIBUTES,C),"OTEL_RESOURCE_ATTRIBUTES",C),y=mn(No(o.resourceAttributes,C),"settings.telemetry.resourceAttributes",C),h={...g,...y},S=n.OTEL_SERVICE_NAME?.trim();S&&(h["service.name"]=S);let E=Object.keys(h).length?h:void 0,M=Fe(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:u,outfile:c,resourceAttributes:E,metrics:{includeSessionId:M},resourceAttributeWarnings:C.length?C:void 0}}p();zt();import*as X from"node:fs";import*as Bt from"node:path";p();p();p();p();zt();p();import{AsyncLocalStorage as Pi}from"node:async_hooks";var Lo=new Pi;p();import*as $ from"node:path";import{promises as St}from"node:fs";p();p();import Di from"crypto";var Tt=new Uint8Array(256),yt=Tt.length;function hn(){return yt>Tt.length-16&&(Di.randomFillSync(Tt),yt=0),Tt.slice(yt,yt+=16)}p();var x=[];for(let t=0;t<256;++t)x.push((t+256).toString(16).slice(1));function Fo(t,e=0){return x[t[e+0]]+x[t[e+1]]+x[t[e+2]]+x[t[e+3]]+"-"+x[t[e+4]]+x[t[e+5]]+"-"+x[t[e+6]]+x[t[e+7]]+"-"+x[t[e+8]]+x[t[e+9]]+"-"+x[t[e+10]]+x[t[e+11]]+x[t[e+12]]+x[t[e+13]]+x[t[e+14]]+x[t[e+15]]}p();p();import Ui from"crypto";var Cn={randomUUID:Ui.randomUUID};function Ni(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 Fo(o)}var yn=Ni;import*as Y from"os";var Et=L("OPENAI_LOGGER"),Li="########",Fi=/^[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 $.join(n,"logs","openai");let o=t;return t==="~"||t.startsWith("~/")?o=$.join(Y.homedir(),t.slice(1)):$.isAbsolute(t)||(o=$.resolve(n,t)),$.normalize(o)}function Ko(t){return t&&t.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function Gi(t){let e=t.split("#");if(e.length!==3)return;let[,n,o]=e;if(!(!n||!o||!/^\d+$/.test(o)))return`subagent-${n}`}function $i(t){if(t)return ue(t)?Ko(t):Ko(Gi(t))}function Bi(t){if(!t)return;let e=t.indexOf(Li);if(e>0)return t.slice(0,e);if(Fi.test(t))return t;let n=t.split("#");if(n.length>=3&&n[0])return n[0]}function ji(t){let e=t?.trim(),n=Bi(e);return!e&&!n?null:{...e?{promptId:e}:{},...n?{sessionId:n}:{}}}var Ke=class{logDir;initialized=!1;constructor(e,n){this.logDir=Ki(e,n)}async initialize(){if(!this.initialized)try{await St.mkdir(this.logDir,{recursive:!0}),this.initialized=!0}catch(e){throw Et.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=$i(r),l=a?`openai-${i}-${s}-${a}.json`:`openai-${i}-${s}.json`,u=$.join(this.logDir,l),c={timestamp:new Date().toISOString(),request:e,response:n||null,error:o?{message:o.message,stack:o.stack}:null,context:ji(r),system:{hostname:Y.hostname(),platform:Y.platform(),release:Y.release(),nodeVersion:process.version}};try{return await St.writeFile(u,JSON.stringify(c,(f,d)=>typeof d=="string"?Zn(d):d,2),"utf-8"),u}catch(f){throw Et.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 St.readdir(this.logDir)).filter(r=>r.startsWith("openai-")&&r.endsWith(".json")).map(r=>$.join(this.logDir,r)).sort().reverse();return e?o.slice(0,e):o}catch(n){return n.code==="ENOENT"?[]:(Et.error("Failed to read OpenAI log directory:",n),[])}}async readLogFile(e){try{let n=await St.readFile(e,"utf-8");return JSON.parse(n)}catch(n){throw Et.error(`Failed to read log file ${e}:`,n),new Error(`Failed to read log file: ${n}`)}}},Au=new Ke;p();var Vi="MATILDA_CODE_PROFILE_RUNTIME";function Go(t=process.env){return t[Vi]==="1"}var Sn=class{enabled;now;startedAt;requestIndex=0;openAIWireRequestIndex=0;requests=[];openaiWireRequests=[];tools=$o();constructor(e={}){this.enabled=e.enabled??Go(),this.now=e.now??(()=>new Date().toISOString()),this.startedAt=this.now()}reset(e={}){this.enabled=e.enabled??Go(),this.startedAt=this.now(),this.requestIndex=0,this.openAIWireRequestIndex=0,this.requests=[],this.openaiWireRequests=[],this.tools=$o()}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(Yi(e)),contents:Bo(e.contents),systemInstructionBytes:Hi(e.config?.systemInstruction),generationConfigBytes:D(jo(e.config)),tools:Ji(e.config?.tools)}))}recordOpenAIWireRequest(e){this.enabled&&(this.openAIWireRequestIndex+=1,this.openaiWireRequests.push({index:this.openAIWireRequestIndex,timestamp:this.now(),...zi(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=Wi();return this.tools.byName[e]=o,o}},En=new Sn;function zi(t){let e=fe(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],r={};for(let i of n){let s=fe(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 $o(){return{toolUseCount:0,toolResultCount:0,toolResultErrorCount:0,totalToolUseArgBytes:0,maxToolUseArgBytes:0,totalToolResultBytes:0,maxToolResultBytes:0,byName:Object.create(null)}}function Wi(){return{uses:0,argBytes:0,maxArgBytes:0,results:0,errors:0,resultBytes:0,maxResultBytes:0}}function Bo(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=fe(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:[];qi(s,e)}return e}function Hi(t){return Bo(t).textBytes}function qi(t,e){for(let n of t){if(e.partCount+=1,typeof n=="string"){e.textBytes+=D(n);continue}let o=fe(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 Ji(t){let e=Array.isArray(t)?t:[],n=0;for(let o of e){let r=fe(o),i=Array.isArray(r.functionDeclarations)?r.functionDeclarations:[];n+=i.length}return{count:e.length,functionDeclarationCount:n,schemaBytes:D(e)}}function Yi(t){return{model:t.model,contents:t.contents,config:jo(t.config)}}function jo(t){if(!t)return;let e=fe(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(Xi(t),"utf8")}function Xi(t){try{return JSON.stringify(t)??""}catch{return"[unserializable]"}}function fe(t){return typeof t=="object"&&t!==null?t:{}}function Tn(t){return typeof t=="object"&&t!==null?t:null}p();function Vo(t){let e=t.candidates?.[0]?.content?.parts;return!e||e.length===0?!1:e.some(Qi)}function Qi(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 zo(){let t=qn.getStore();return{attempt:t?.attempt??1,requestSetupMs:t?.requestSetupMs,retryTotalDelayMs:t?.retryTotalDelayMs}}var se=L("LOGGING_CONTENT_GENERATOR"),Zi=4096,Wo="...[truncated]",es=Zi-Wo.length,Ge=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 Ke(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);Wt(this.config,new Jt(n,o,r,H.getStore()))}_logApiResponse(e,n,o,r,i,s){qt(this.config,new Xt(e,o,n,r,this.generatorAuthType,i,s,H.getStore()))}_logApiError(e,n,o,r,i){let s=Xn(o),a=_e(o),l=o?.requestID||o?.request_id||e,u=B(o);Ht(this.config,new Yt({responseId:l,model:r,durationMs:n,promptId:i,authType:this.generatorAuthType,errorMessage:s,errorType:a,statusCode:u,subagentName:H.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=zo(),r=rt(e.model,n);try{r.setAttribute("llm_request.stream",!1)}catch{}let i=Vt.setSpan(j.active(),r),s=Date.now(),a=ue(n),l=this.startCaptureSession();try{En.recordGenerateContentRequest(e,{stream:!1,source:"generateContent"}),a||(tt(this.config,r,e.config?.systemInstruction),nt(this.config,r,e.config?.tools));let u=await j.with(i,async()=>{a||this.logApiRequest(this.toContents(e.contents),e.model,n);let c=await l.wrap(()=>this.wrapped.generateContent(e,n)),f=Date.now()-s,d=a?void 0:this.extractResponseText(c);a||ot(this.config,r,d),this.safelyLogApiResponse(c.responseId??"",f,this.getClientVisibleModelId(e.model,c.modelVersion),n,c.usageMetadata,d);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),c,void 0,n)}catch(m){se.warn("Failed to log OpenAI interaction:",m)}return c});return oe(r,{success:!0,inputTokens:u.usageMetadata?.promptTokenCount,outputTokens:u.usageMetadata?.candidatesTokenCount,cachedInputTokens:u.usageMetadata?.cachedContentTokenCount,durationMs:Date.now()-s,responseId:u.responseId||void 0,finishReason:u.candidates?.[0]?.finishReason||void 0,thoughtsTokenCount:u.usageMetadata?.thoughtsTokenCount,subagentName:H.getStore()||void 0,...o}),u}catch(u){let c=Date.now()-s,f=e.config?.abortSignal?.aborted??!1;throw oe(r,{success:!1,durationMs:c,error:f?st:it,errorType:_e(u),errorStatusCode:B(u),subagentName:H.getStore()||void 0,...o}),await j.with(i,async()=>{this.safelyLogApiError("",c,u,this.getClientVisibleModelId(e.model),n);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,u,n)}catch(d){se.warn("Failed to log OpenAI interaction:",d)}}),u}}async generateContentStream(e,n){let o=zo(),r=rt(e.model,n);try{r.setAttribute("llm_request.stream",!0)}catch{}let i=Vt.setSpan(j.active(),r),s=Date.now(),a=ue(n),l=this.startCaptureSession(),u;try{En.recordGenerateContentRequest(e,{stream:!0,source:"generateContentStream"}),a||(tt(this.config,r,e.config?.systemInstruction),nt(this.config,r,e.config?.tools)),u=await j.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;j.with(i,()=>this.safelyLogApiError("",d,f,e.model,n));let m=e.config?.abortSignal?.aborted??!1;oe(r,{success:!1,durationMs:d,error:m?st:it,errorType:_e(f),errorStatusCode:B(f),subagentName:H.getStore()||void 0,...o});try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,f,n)}catch(C){se.warn("Failed to log OpenAI interaction:",C)}throw f}let c;if(this.openaiLogger)try{c=await l.resolve(e)}catch(f){se.warn("Failed to resolve OpenAI request:",f)}return j.with(i,()=>this.loggingStreamWrapper(u,s,n,e.model,c,r,i,e.config?.abortSignal,o))}startCaptureSession(){let e,n=!this.openaiLogger;return{wrap:o=>n?o():Lo.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,u){let c=ue(o),f=!c||!!this.openaiLogger,d=[],m="",C="",g,y=!1,h,S=!1,E,M=H.getStore(),R,_=!1,G=I=>a?j.with(a,I):I(),Q=5*6e4,P,ae=s?()=>{_||(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:M||void 0,...u}),_=!0},Q),P.unref())}:void 0;try{for await(let U of e){!m&&U.responseId&&(m=U.responseId),!C&&U.modelVersion&&(C=U.modelVersion),f&&d.push(U),U.usageMetadata&&(g=U.usageMetadata);let ve=U.candidates?.[0];ve?.finishReason&&(h=ve.finishReason),U.functionCalls?.length&&(S=!0),R===void 0&&Vo(U)&&(R=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,Je=c?void 0:this.extractResponseText(Z),ee=!h&&!S?new Error("Model stream ended without a finish reason"):void 0;ee&&(y=!0,E=ee),_||(ee?(G(()=>this.safelyLogApiError(m,I,ee,this.getClientVisibleModelId(r,C),o)),await G(()=>this.safelyLogOpenAIInteraction(i,Z,ee,o))):(G(()=>this.safelyLogApiResponse(m,I,this.getClientVisibleModelId(r,C),o,g,Je)),!c&&s&&ot(this.config,s,Je),await G(()=>this.safelyLogOpenAIInteraction(i,Z,void 0,o))))}catch(I){if(y=!0,E=I,!_){let Z=Date.now()-n;G(()=>this.safelyLogApiError(m,Z,I,this.getClientVisibleModelId(r,C),o)),await G(()=>this.safelyLogOpenAIInteraction(i,void 0,I,o))}throw I}finally{if(P!==void 0&&clearTimeout(P),s&&!_){let I=l?.aborted??!1;oe(s,{success:!y,inputTokens:g?.promptTokenCount,outputTokens:g?.candidatesTokenCount,cachedInputTokens:g?.cachedContentTokenCount,ttftMs:R,durationMs:Date.now()-n,error:y?I?st:it:void 0,responseId:m||void 0,finishReason:h,thoughtsTokenCount:g?.thoughtsTokenCount,subagentName:M||void 0,errorType:E?_e(E):void 0,errorStatusCode:E?B(E):void 0,...u})}}}async buildOpenAIRequestForLogging(e){if(!this.openaiLogger)return;let n=this.createLoggingRequestContext(e.model),o=ht.convertGeminiRequestToOpenAI(e,n,{cleanOrphanToolCalls:!1}),r={model:e.model,messages:o};return e.config?.tools&&(r.tools=await ht.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),ht.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 u of e){u.usageMetadata&&(s=u.usageMetadata);let c=u.candidates?.[0];c?.finishReason&&(i=c.finishReason);let f=c?.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",C=r.get(m),g={functionCall:d.functionCall};C!==void 0?o[C]=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=es-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}${Wo}`: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",ts=/^[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 Xu(t){if(t!==void 0){if(typeof t!="string"||t.length!==36||!ts.test(t))throw new Error("--organization-id must be a single UUID.");return t.toLowerCase()}}function bn(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 Rn(t,e,n){if(e===void 0&&n===void 0)return;let o=bn(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 Ho(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 Qu(t,e,n,o,r){Rn(n,o,r);let i=bn(n.baseUrl),s=bn(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 qo(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 me=class extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}},At=class extends me{name="StrictMissingCredentialsError";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.`))}},bt=class extends me{name="StrictMissingModelIdError";code="STRICT_MISSING_MODEL_ID";constructor(e){super(`Missing model id for strict modelProviders resolution (authType: ${e}).`)}},Rt=class extends me{name="MissingApiKeyError";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}'.`)}},vt=class extends me{name="MissingModelError";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 oc(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 Mt(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 ns=[[/^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"]]],Yo=[[/^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 os(t,e="input"){let n=Mt(t),o=e==="output"?Yo:ns;for(let[r,i]of o)if(r.test(n))return i}function rc(t){let e=Mt(t);return Yo.some(([n])=>n.test(e))}function rs(t,e="input"){return os(t,e)}function _t(t,e="input"){return rs(t,e)??(e==="output"?32e3:131072)}p();p();var Xo={image:!0,pdf:!0,audio:!0,video:!0},is=[[/^gemini-3/,Xo],[/^gemini-/,Xo],[/^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 kt(t){let e=Mt(t);for(let[n,o]of is)if(n.test(e))return{...o};return{}}p();function Qo(t,e,n={kind:"default"}){for(let o of t)if(Zo(o.value))return{value:o.value,source:o.source};return{value:e,source:n}}function vn(t){for(let e of t)if(Zo(e.value))return{value:e.value,source:e.source}}function Zo(t){return!(t==null||typeof t=="string"&&t.trim()==="")}function wt(t){return{kind:"cli",detail:t}}function ss(t){return{kind:"env",envKey:t}}function $e(t){return{kind:"settings",settingsPath:t}}function he(t,e,n){return{kind:"modelProviders",authType:t,modelId:e,detail:n}}function Mn(t){return{kind:"default",detail:t}}function xt(t){return{kind:"computed",detail:t}}function It(t,e,n){let o=t[e];return{value:o!==void 0?n?n(o):o:void 0,source:ss(e)}}function N(t,e){return{value:t,source:e}}p();var Be=["samplingParams","timeout","maxRetries","retryErrorCodes","enableCacheControl","schemaCompliance","reasoning","contextWindowSize","customHeaders","extra_body","modalities","splitToolMedia","openAIRequestProfile"],er=["model","apiKey","apiKeyEnvKey","baseUrl"],_n=[...er,...Be],tr={openai:{apiKey:["OPENAI_API_KEY"],baseUrl:["OPENAI_BASE_URL"],model:["OPENAI_MODEL","MATILDA_MODEL"]}},nr={openai:lt};var Ce="MATILDA_API_KEY",as="matilda-code-1.0";function ls(t,e){if(!t)return!0;try{let{hostname:n}=new URL(t);return n==="matilda.maincode.com"||n.endsWith(".matilda.maincode.com")||Ne(t,e)}catch{return!1}}function us(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 Sc(t){let{authType:e,cli:n,settings:o,env:r,modelProvider:i,proxy:s}=t,a=[],l={},u=e?tr[e]:{model:[],apiKey:[],baseUrl:[]},c=[];e&&i&&c.push(N(i.id,he(e,i.id,"model.id"))),n?.model&&c.push(N(n.model,wt("--model"))),e==="openai"&&r[Ce]&&!r.OPENAI_MODEL&&!r.MATILDA_MODEL&&c.push(N(as,{kind:"env",envKey:Ce}));for(let R of u.model)c.push(It(r,R));o?.model&&c.push(N(o.model,$e("model.name")));let f=e?nr[e]:"",d=Qo(c,f,Mn(f));l.model=d.source;let m=[];e&&i?.baseUrl&&m.push(N(i.baseUrl,he(e,i.id,"baseUrl"))),n?.baseUrl&&m.push(N(n.baseUrl,wt("--openaiBaseUrl"))),e==="openai"&&r[Ce]&&!r.OPENAI_BASE_URL&&(r[De]?.trim()||!o?.baseUrl)&&m.push(N(K(r),{kind:"env",envKey:Ce}));for(let R of u.baseUrl)m.push(It(r,R));o?.baseUrl&&m.push(N(o.baseUrl,$e("security.auth.baseUrl")));let C=vn(m)??(e==="openai"?{value:K(r),source:Mn("the configured Matilda endpoint")}:void 0);C&&(l.baseUrl=C.source);let g=[];if(e&&i?.envKey){let R=r[i.envKey];R&&g.push(N(R,{kind:"env",envKey:i.envKey,via:he(e,i.id,"envKey")}))}if(n?.apiKey&&g.push(N(n.apiKey,wt("--openaiApiKey"))),!i?.envKey){let R=r[Ce];if(e==="openai"&&R&&ls(C?.value,r)&&g.push(N(R,{kind:"env",envKey:Ce})),C?.source.kind!=="default")for(let _ of u.apiKey)g.push(It(r,_))}o?.apiKey&&g.push(N(o.apiKey,$e("security.auth.apiKey")));let y=vn(g);y&&(l.apiKey=y.source);let h;e&&i?.envKey&&(h=i.envKey,l.apiKeyEnvKey={...he(e,i.id,"envKey"),envKey:i.envKey});let S=Ot(o?.generationConfig,i?.generationConfig,e,i?.id??d.value,r),E=S.config;Object.assign(l,S.sources);let M={authType:e,model:d.value||"",apiKey:y?.value,apiKeyEnvKey:h,baseUrl:C?.value,proxy:s,...E};return s&&(l.proxy=xt("Config.getProxy()")),l.authType=xt("provided by caller"),{config:M,sources:l,warnings:a}}function Ot(t,e,n,o,r){let i={},s=cs(t,e,n,o,i);return us(r,s,i,e),{config:s,sources:i}}function cs(t,e,n,o,r){let i={};for(let s of Be)n&&e&&s in e?(i[s]=e[s],r[s]=he(n,o||"",`generationConfig.${s}`)):t&&s in t&&(i[s]=t[s],r[s]=$e(`model.generationConfig.${s}`));return i.modalities===void 0&&o&&(i.modalities=kt(o),r.modalities=xt("auto-detected from model")),i}p();var Pt="$runtime|";function Rc(t){let e=t;for(;e.startsWith(Pt);){let n=e.split("|").slice(2).join("|");if(!n)break;e=n}return e}p();p();var or=L("MODEL_REGISTRY");function rr(t,e){return e?`${t}\0${e}`:t}var Dt=class{constructor(e,n=!1){this.noFallbackServer=n;this.reloadModels(e)}models=new Map;registerModels(e){let n=new Map;for(let o of e){if(this.noFallbackServer&&!o.baseUrl)continue;let r=rr(o.id,o.baseUrl);if(n.has(r)){or.warn(`Duplicate model id "${o.id}"${o.baseUrl?` with baseUrl "${o.baseUrl}"`:""} for authType "openai". Using the first registered config.`);continue}n.set(r,this.resolveModelConfig(o))}return n}getModels(){return Array.from(this.models.values()).map(e=>({id:e.id,label:e.name,description:e.description,capabilities:e.capabilities,authType:e.authType,isVision:e.capabilities?.vision??!1,contextWindowSize:e.generationConfig.contextWindowSize??_t(e.id),modalities:e.generationConfig.modalities??kt(e.id),baseUrl:e.baseUrl,envKey:e.envKey}))}findModel(e,n){if(n)return this.models.get(rr(e,n));let o=this.models.get(e);if(o)return o;for(let r of this.models.values())if(r.id===e)return r}containsModel(e,n){return this.findModel(e,n)!==void 0}getDefaultModel(){return this.models.values().next().value}resolveModelConfig(e){return this.validateModelConfig(e),{...e,authType:"openai",name:e.name||e.id,baseUrl:e.baseUrl||K(),generationConfig:{...e.generationConfig??{}},capabilities:e.capabilities||{}}}validateModelConfig(e){if(!e.id)throw new Error("Model config in authType 'openai' missing required field: id")}reloadModels(e){this.models=new Map;for(let[n,o]of Object.entries(e??{})){if(n!=="openai"){or.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(ge).join(", ")}. Skipping.`);continue}this.models=this.registerModels(o)}}};var ir=class t{modelRegistry;currentAuthType;_generationConfig;generationConfigSources;strictModelProviderSelection=!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 Dt(e.modelProvidersConfig,e.noFallbackServer),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,activeRuntimeModelSnapshotId:this.activeRuntimeModelSnapshotId}}rollbackToStateSnapshot(e){this.currentAuthType=e.currentAuthType,this._generationConfig=e.generationConfig,this.generationConfigSources=e.generationConfigSources,this.strictModelProviderSelection=e.strictModelProviderSelection,this.activeRuntimeModelSnapshotId=e.activeRuntimeModelSnapshotId}getModel(){return this._generationConfig.model||lt}getCurrentAuthType(){return this.currentAuthType}wasAuthTypeExplicitlyProvided(){return this.authTypeWasExplicitlyProvided}getAvailableModels(){return this.currentAuthType?this.modelRegistry.getModels():[]}getAllConfiguredModels(){let e=this.getRuntimeModelOption();return[...e?[e]:[],...this.modelRegistry.getModels()]}getResolvedModel(e){let n=this.modelRegistry.findModel(e);if(n)return{...n,generationConfig:{...this.resolveEntryGenerationConfig(n).config,customHeaders:n.generationConfig.customHeaders}}}resolveEntryGenerationConfig(e){return Ot(this.settingsGenerationConfig,e.generationConfig,e.authType,e.id,wn.env)}isManagedMatildaResolvedModel(e){return e?.id===Qt&&e?.envKey===at&&e?.baseUrl===ke&&e?.generationConfig?.openAIRequestProfile==="matilda-code"}isManagedMatildaModel(e){let n=e.trim();return!n||!this.currentAuthType?!1:this.isManagedMatildaResolvedModel(this.modelRegistry.findModel(n))}getPublicModelId(e){return this.isManagedMatildaModel(e)?Qt:e}getModelDisplayName(e){return this.isManagedMatildaModel(e)?eo:this.currentAuthType?this.modelRegistry.findModel(e)?.name??e:e}async setModel(e,n){if(this.currentAuthType&&this.modelRegistry.containsModel(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=Ot(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=_t(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.findModel(n,o?.baseUrl);if(!a)throw new Error(`Model '${n}' not found for authType '${e}'`);let l=i.generationConfig.model||"",u=!s&&l?this.modelRegistry.findModel(l,i.generationConfig.baseUrl)??this.modelRegistry.findModel(l):void 0,c=!s&&!!i.generationConfig.apiKey&&!!a.envKey&&u?.envKey===a.envKey&&u.baseUrl===a.baseUrl,f=c?i.generationConfig.apiKey:void 0,d=c?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`${Pt}${e}|${n}`}extractRuntimeModelSnapshotId(e){if(e.startsWith(Pt))return this.runtimeModelSnapshots.has(e)?e:void 0;if(this.runtimeModelSnapshots.has(e))return e}getGenerationConfig(){return this._generationConfig}getGenerationConfigSources(){return this.generationConfigSources}isStrictModelProviderSelection(){return this.strictModelProviderSelection}applyResolvedModelDefaults(e){if(this.strictModelProviderSelection=!0,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 Be)this.applyResolvedField(o,n);this.fillContextWindowSize(e.id)}syncAfterAuthRefresh(e,n,{replacesApiKey:o=!1}={}){this.strictModelProviderSelection=!1;let r=this.currentAuthType;this.currentAuthType=e;let i=this.generationConfigSources.baseUrl?.kind==="modelProviders"?this._generationConfig.baseUrl:void 0,s=n?this.modelRegistry.findModel(n,i)??this.modelRegistry.findModel(n):void 0;if(s){let C=this.generationConfigSources.baseUrl?.kind==="modelProviders"&&(this._generationConfig.apiKeyEnvKey!==s.envKey||this._generationConfig.baseUrl!==s.baseUrl),g=r===e&&this._generationConfig.model===n&&!C,y=g&&!o,h=y?this._generationConfig.apiKey:void 0,S=y&&this.generationConfigSources.apiKey?{...this.generationConfigSources.apiKey}:void 0,E=this.generationConfigSources.baseUrl,M=g&&!!this._generationConfig.baseUrl&&(E?.kind==="cli"||E?.kind==="env"||E?.kind==="settings"),R=M?this._generationConfig.baseUrl:void 0,_=M&&E?{...E}:void 0;this.applyResolvedModelDefaults(s),!this._generationConfig.apiKey&&h&&(this._generationConfig.apiKey=h,S&&(this.generationConfigSources.apiKey=S)),R&&(this._generationConfig.baseUrl=R,_&&(this.generationConfigSources.baseUrl=_)),this.strictModelProviderSelection=!0,this.activeRuntimeModelSnapshotId=void 0;return}let a=this.generationConfigSources.apiKey,l=this.generationConfigSources.baseUrl,u=this._generationConfig.apiKey&&a?.kind!=="modelProviders"||this._generationConfig.baseUrl&&l?.kind!=="modelProviders";if(!(r!==e)&&(n===void 0||!this.modelRegistry.containsModel(n))&&u){n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (preserved credentials)"}));return}let d=this.modelRegistry.getDefaultModel();if(d){this.applyResolvedModelDefaults(d),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.containsModel(e,o)){this.clearRuntimeModelSnapshotForAuthType(s);return}if(!(this._generationConfig.apiKey&&this._generationConfig.baseUrl))return;let l=this.buildRuntimeModelSnapshotId(s,e),u={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,u),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._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 Gs}from"node:crypto";import{mkdirSync as $s,readFileSync as Bs}from"node:fs";import{dirname as js,join as Vs}from"node:path";p();p();import{randomBytes as ds,createHash as ps}from"node:crypto";import{setTimeout as fs}from"node:timers/promises";var gs="urn:ietf:params:oauth:grant-type:device_code";function sr(t){return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function In(){let t=ds(32).toString("base64url"),e=ps("sha256").update(t).digest("base64url");return{codeVerifier:t,codeChallenge:e}}function ye(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 ms=15e3;async function On(t){let e=t.replace(/\/+$/,""),n=new URL("/.well-known/oauth-authorization-server",e);if(n.protocol!=="https:"&&!sr(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(ms)});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 hs=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:ur(AbortSignal.timeout(hs),n.signal)})}catch(i){throw cr(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 ar(t,e,n={}){let o=await fetch(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:gs,client_id:e.clientId,device_code:e.deviceCode}),signal:n.signal});if(o.ok)return{kind:"authorized",tokens:ye(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 lr(t,e,n={}){let o=e.interval*1e3;try{for(;Date.now()<e.expiresAt;){await fs(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 ar(t,e,{signal:ur(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 cr(r,n.signal)?new Error(xn):r}throw new Error(xn)}function ur(t,e){return e?AbortSignal.any([t,e]):t}function cr(t,e){return!e?.aborted&&t instanceof Error&&t.name==="TimeoutError"}p();import{randomBytes as Cs}from"node:crypto";import{promises as Te,openSync as ys,closeSync as Ts,unlinkSync as pr,statSync as Ss}from"node:fs";import{dirname as Es}from"node:path";var dr=new Map,As=2e4,bs=3e4,Rs=50;function Dn(t,e={}){let n=async()=>{try{let s=await Te.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 Te.mkdir(Es(t),{recursive:!0});let l=`${t}.${process.pid}.${Cs(4).toString("hex")}.tmp`;try{await Te.writeFile(l,JSON.stringify(s,null,2),{mode:384}),a?.throwIfAborted(),await Te.rename(l,t)}catch(u){throw await Te.rm(l,{force:!0}).catch(()=>{}),u}await Te.chmod(t,384).catch(()=>{})},r=(s,a={})=>{let u=(dr.get(t)??Promise.resolve()).then(async()=>{a.signal?.throwIfAborted();let c=await n(),f=!1;for(let[d,m]of Object.entries(s)){if(m===null){if(!(d in c))continue;delete c[d]}else{if(c[d]===m)continue;c[d]=m}f=!0}f&&await o(c,a.signal),a.onCommit?.()});return dr.set(t,u.catch(()=>{})),u};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:vs(`${t}.lock`,e.lockTimeoutMs??As),update:r}}function vs(t,e){let n=Promise.resolve();return o=>{let r=n.then(async()=>{await Ms(t,e);try{return await o()}finally{_s(t)}});return n=r.then(()=>{},()=>{}),r}}async function Ms(t,e){let n=Date.now()+e;for(;;)try{Ts(ys(t,"wx"));return}catch(o){if(o.code!=="EEXIST")throw o;try{if(Date.now()-Ss(t).mtimeMs>bs){pr(t);continue}}catch{continue}if(Date.now()>n)throw Object.assign(new Error(`Timed out acquiring credential lock at ${t}`),{code:"ETIMEDOUT"});await ks(Rs)}}function _s(t){try{pr(t)}catch{}}function ks(t){return new Promise(e=>setTimeout(e,t))}p();var Se=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 u=await t.store.get(e);if(!u)return null;try{let c=JSON.parse(u);return c.accessToken?c:null}catch{return null}},a=u=>u.expiresAt-Date.now()>o,l=u=>t.lock(async()=>{let c=await s()??u;if(c.accessToken!==u.accessToken&&a(c))return c.accessToken;if(!c.refreshToken)throw new Se("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:c.refreshToken}),signal:AbortSignal.timeout(r)});if(!m.ok){let C=await m.text().catch(()=>"");throw m.status>=400&&m.status<500&&ws(C)==="invalid_grant"?(await t.store.remove(e),new Se):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=ye(f,c);return await t.store.set(e,JSON.stringify(d)),d.accessToken});return{async getAccessToken(u){let c=await s();if(!c)throw new Se("Not signed in.");return!u?.forceRefresh&&a(c)?c.accessToken:(i||(i=l(c).finally(()=>{i=null})),i)}}}function ws(t){try{return JSON.parse(t).error}catch{return}}p();import{createServer as xs}from"node:http";import{randomBytes as Is}from"node:crypto";async function Ut(t){if(t.transport.kind==="device")return Os(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=Is(16).toString("hex"),i=t.timeoutMs??5*60*1e3,s=t.transport.successRedirect,a=t.transport.port;e({type:"state",status:"idle"});let l,u,c=new Promise((g,y)=>{l=g,u=y});c.catch(()=>{});let f=xs((g,y)=>{let h=new URL(g.url??"/","http://127.0.0.1");if(h.pathname!=="/callback"){y.writeHead(404).end();return}let S=h.searchParams.get("error"),E=h.searchParams.get("state"),M=h.searchParams.get("code");if(S){let R=h.searchParams.get("error_description"),_=R?`OAuth error: ${S} (${R})`:`OAuth error: ${S}`;y.writeHead(400,{"content-type":"text/plain; charset=utf-8"}).end(`Sign-in failed: ${S}
|
|
16
|
-
`,()=>u(new Error(_)));return}if(E!==r){y.writeHead(400).end("State mismatch"),u(new Error("OAuth state mismatch"));return}if(!M){y.writeHead(400).end("Missing authorization code");return}Ps(y,s,()=>l(M))}),d=await new Promise((g,y)=>{f.once("error",y),f.listen(a??0,"127.0.0.1",()=>{g(f.address().port)})}),m=setTimeout(()=>u(new Error("Login timed out \u2014 the browser never reached the local callback. The hosted success page is not a completed sign-in.")),i),C=()=>u(new Error("Login aborted"));t.signal?.addEventListener("abort",C,{once:!0}),t.signal?.aborted&&C();try{t.signal?.throwIfAborted();let g=`http://127.0.0.1:${d}/callback`,y=new URL(t.metadata.authorization_endpoint);y.searchParams.set("client_id",t.clientId),y.searchParams.set("response_type","code"),y.searchParams.set("redirect_uri",g),y.searchParams.set("code_challenge",o),y.searchParams.set("code_challenge_method","S256"),y.searchParams.set("state",r),y.searchParams.set("prompt","select_account"),y.searchParams.set("scope",t.scope??"openid offline_access");let h=y.toString();e({type:"authorize_url",url:h}),e({type:"state",status:"awaiting_user"}),t.openBrowser&&await t.openBrowser(h);let S=await c;await fr(f),e({type:"state",status:"exchanging"});let E=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(!E.ok){let R=await E.text().catch(()=>"");throw new Error(`Token exchange failed (${E.status}): ${R}`)}let M=ye(await E.json());return e({type:"state",status:"authenticated"}),M}catch(g){throw e({type:"state",status:"error"}),t.signal?.aborted?new Error("Login aborted"):g}finally{clearTimeout(m),t.signal?.removeEventListener("abort",C),await fr(f)}}async function Os(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 lr(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 fr(t){return t.listening?new Promise(e=>{t.close(()=>e()),t.closeAllConnections()}):Promise.resolve()}function Ps(t,e,n){t.writeHead(302,{location:e}).end(n)}p();var Ds=["www-browser"];function Us(t){let e=t.replace(/\\/g,"/").split("/").pop();return!!e&&Ds.includes(e)}function gr(t={}){let n=process.env.BROWSER?.trim()?.match(/^\S+/)?.[0];if(!t.ignoreBrowserBlocklist&&process.platform!=="win32"&&n&&Us(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")}p();p();import{setMaxListeners as Ns}from"node:events";var Ls=50;function Nt(t=Ls){let e=new AbortController;return Ns(t,e.signal),e}function Fs(t){if(t)return t instanceof AbortController?t.signal:t}function Ad(t,e){let n=Nt(e),o=Fs(t);if(!o)return n;if(o.aborted)return n.abort(o.reason),n;let r=new WeakRef(o),i=()=>{n.abort(r.deref()?.reason)};return o.addEventListener("abort",i,{once:!0}),n.signal.addEventListener("abort",()=>{r.deref()?.removeEventListener("abort",i)},{once:!0}),n}function mr(t,e){let n=Nt(e?.maxListeners),o=t.find(l=>l?.aborted);if(o)return n.abort(o.reason),{signal:n.signal,cleanup:()=>{}};let r=[];for(let l of t){if(!l)continue;if(l.aborted){n.abort(l.reason);break}let u=()=>n.abort(l.reason);l.addEventListener("abort",u,{once:!0}),r.push(()=>l.removeEventListener("abort",u))}let i=e?.timeoutMs;if(i!==void 0&&i>0&&!n.signal.aborted){let l=setTimeout(()=>{n.abort(new DOMException("Operation timed out","TimeoutError"))},i);r.push(()=>clearTimeout(l))}let s=!1,a=()=>{if(!s){s=!0;for(let l of r)l()}};return n.signal.aborted?a():n.signal.addEventListener("abort",a,{once:!0}),{signal:n.signal,cleanup:a}}async function hr(t,e){if(e?.throwIfAborted(),!e)return t();let n=()=>{},o=new Promise((i,s)=>{n=()=>s(e.reason),e.addEventListener("abort",n,{once:!0})});o.catch(()=>{});let r;try{r=await Promise.race([t(),o])}finally{e.removeEventListener("abort",n)}return e.throwIfAborted(),r}var Cr=5*6e4;async function Nn(t,e){let n=performance.now()+Cr,o=Nt(),r=()=>o.abort(new DOMException("Sign-in timed out","TimeoutError")),i=setTimeout(r,Cr),{signal:s,cleanup:a}=mr([t,o.signal]),l=()=>{t?.throwIfAborted(),performance.now()>=n&&r(),o.signal.throwIfAborted(),s.throwIfAborted()},u;try{l(),u=await e({signal:s,check:l})}finally{clearTimeout(i),a()}return l(),u}var Ks=On;function yr(t,e){return hr(()=>Ks(t,void 0,{signal:e}),e)}var Ae="matilda-code",Sr="matilda-desktop",Er="openid profile email offline_access",Lt="MATILDA_API_KEY",zs="matilda",Ln=3e5;function be(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function Ar(){return Vs(Ze.getGlobalMatildaDir(),"matilda-auth.json")}function ze(){let t=Ar();return $s(js(t),{recursive:!0}),Dn(t,{lockTimeoutMs:2e4})}function Ws(t){return t==="desktop"}function We(t){return t?.clientId?t.clientId:Ws(t?.channel)?Sr:Ae}function Ve(t){return`matilda:${t}`}function Kt(t){return`${Ve(t)}:refresh-rejected`}function He(t){return t===Ae?[Ve(t),zs]:[Ve(t)]}function br(){try{let t=Bs(Ar(),"utf8");return JSON.parse(t)}catch{return{}}}function Ft(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 Kn(t,e){return be(t)===be(e)}function Hs(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 Rr(t,e){let n=Hs(t.idToken);return{accessToken:t.accessToken,accessTokenExpiresAt:t.expiresAt,refreshToken:t.refreshToken??"",userId:n.sub,email:n.email,displayName:n.name,baseUrl:e}}var Tr=new Map;async function Gn(t,e={}){let n=()=>{e.signal?.throwIfAborted(),e.check?.()};n();let o=Tr.get(t);if(o)return o;try{let r=await yr(t,e.signal);return n(),Tr.set(t,r),r}catch(r){n();let i=e.requireReachable&&(Le(r,t)??gn(r,t));if(i)throw i;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 $n(t){try{let e=br(),n=We(t);for(let o of He(n)){let r=Ft(e[o]);if(r)return r}return null}catch{return null}}function vr(t){let e=$n(t);return!e||t?.baseUrl&&!Kn(e.baseUrl,t.baseUrl)?null:e}function Bn(t){return vr(t)!==null}async function Mr(t,e){for(let n of e){let o=await t.get(n);if(Ft(o))return o}return null}async function qs(t,e){let n=We(t),o=He(n),{store:r,lock:i,update:s}=ze();await i(async()=>{let a=await Mr(r,o);a!==null&&a!==e||await s({...Object.fromEntries(o.map(l=>[l,null])),[Kt(n)]:"1"})})}function Js(t){return t instanceof Error?t.code==="invalid_grant"||t.name==="InvalidGrantError"?!0:t.message==="Token refresh failed (401)":!1}function Ee(t){Fn({authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:t.occurrenceCount},{baseUrl:t.baseUrl,token:t.token}).catch(()=>{})}async function _r(t,e,n={}){let o=We(e),r=Ve(o),i={[r]:JSON.stringify(t),[Kt(o)]:null};for(let l of He(o))l!==r&&(i[l]=null);let{lock:s,update:a}=ze();await s(()=>(n.check?.(),a(i,{signal:n.signal})))}async function Ys(t,e){for(let n of He(e))await t.remove(n);await t.remove(Kt(e))}var je="matilda:api-key";function kr(){let t=br()[je];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 Gt(t){let e=kr();return e&&Kn(e.baseUrl,t)?e.apiKey:void 0}async function Xs(t){let e=Gs(),n=JSON.stringify(t?{...t,saveId:e}:{saveId:e}),{store:o,lock:r,update:i}=ze(),s=await r(async()=>{let a=await o.get(je);return(t||a!==null)&&await i({[je]:n}),a});return()=>r(async()=>{await o.get(je)===n&&await i({[je]:s})})}function Qs(t){let e=$n(t);return e?{authenticated:!0,userId:e.userId,email:e.email,displayName:e.displayName,baseUrl:e.baseUrl,accessTokenExpiresAt:e.accessTokenExpiresAt}:{authenticated:!1}}async function Kd(t){let e={channel:t?.channel,clientId:t?.clientId},{store:n,lock:o}=ze(),r=await o(async()=>{let s=$n(e);return await Ys(n,We(e)),s}),i=kr()!==null;if(await Xs(null),r?.accessToken){let s=be(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 wr(t){return!t||t===Lt}function xr(t){let{baseUrl:e,channel:n,apiKey:o,apiKeyEnvKey:r}=t;if(Bn({baseUrl:e,channel:n})){let i=Qs({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}:wr(r)&&process.env[Lt]?{kind:"api-key",from:Lt}:Gt(e)!==void 0?{kind:"api-key",from:"saved"}:{kind:"none"}}async function Ir(t){t?.signal?.throwIfAborted();let e=We(t),n=Ve(e),o=vr({baseUrl:t?.baseUrl,channel:t?.channel,clientId:e});if(!o)return t?.fallbackAccessToken||(wr(t?.apiKeyEnvKey)?process.env[Lt]:void 0)||t?.baseUrl&&Gt(t.baseUrl)||"";let r=be(o.baseUrl),i=await Gn(r,{signal:t?.signal}),{manager:s,startedFrom:a}=Zs(ze(),i.token_endpoint,o.baseUrl,e,n,t?.signal),l=e===Ae&&(!!t?.forceRefresh||o.accessTokenExpiresAt-Date.now()<=Ln),u;try{u=await s.getAccessToken({forceRefresh:t?.forceRefresh})}catch(c){t?.signal?.throwIfAborted(),l&&Ee({baseUrl:o.baseUrl,token:o.accessToken,authStage:"refresh",authOutcome:"failed"});let f=c instanceof Error?c.code:void 0;throw f==="session_changed"||f==="no_session"?new le({cause:c,channel:t?.channel}):!Js(c)&&f!=="no_refresh_token"?Le(c,r)??gn(c,r)??c:c instanceof le?new le({cause:c,channel:t?.channel}):(e===Sr&&await qs({channel:t?.channel,clientId:e},a()),new le({cause:c,channel:t?.channel}))}return t?.signal?.throwIfAborted(),l&&Ee({baseUrl:o.baseUrl,token:u,authStage:"refresh",authOutcome:"succeeded"}),u}function Zs({store:t,lock:e,update:n},o,r,i,s,a){let l=He(i),u=(h,S)=>{d=f;let E=[S?.signal,a].filter(M=>M instanceof AbortSignal);return fetch(h,{...S,signal:E.length>1?AbortSignal.any(E):E[0]})},c=h=>Mr(t,h===s?l:[h]),f=null,d,m=()=>d===void 0?f:d;return{manager:Un({tokenEndpoint:o,clientId:i,store:{get:async h=>{let S=await c(h),E=Ft(S);if(f=E&&Kn(E.baseUrl,r)?S:null,!f||!E?.accessToken)return null;let M={accessToken:E.accessToken,refreshToken:E.refreshToken,expiresAt:E.accessTokenExpiresAt};return JSON.stringify(M)},set:async(h,S,E={})=>{let M=await c(h);if(M===null||M!==m())throw new le;let R=JSON.parse(S),_=Ft(M)??{},G={..._,accessToken:R.accessToken,accessTokenExpiresAt:R.expiresAt,refreshToken:R.refreshToken??_.refreshToken??"",baseUrl:_.baseUrl??r};await n({...Object.fromEntries(l.filter(Q=>Q!==s).map(Q=>[Q,null])),[s]:JSON.stringify(G),[Kt(i)]:null},E)},remove:async(h,S={})=>{if(await c(h)!==m())return;await n(Object.fromEntries((h===s?l:[h]).map(M=>[M,null])),S)}},storageKey:s,lock:e,fetchImpl:u,expirySkewMs:Ln,skewMs:Ln}),startedFrom:m}}function ea(){return process.env.MATILDA_AUTH_SKIP_BROWSER!=="1"&&gr()}async function Gd(t){let{baseUrl:e,openBrowser:n,onAuthorizeUrl:o,signal:r}=t;return Nn(r,async i=>{let s=be(e),a=await Gn(s,{requireReachable:!0,...i}),l="",u=0,c=0,f={},d=y=>{f[y]=(f[y]??0)+1},C=await(y=>(u+=1,Ut({metadata:a,clientId:Ae,scope:y,transport:{kind:"loopback",successRedirect:`${s}/api/auth/oauth/success?client_id=${encodeURIComponent(Ae)}`},signal:i.signal,onEvent:h=>{i.check(),h.type==="authorize_url"&&(l=h.url,o?.(h.url)),h.type==="state"&&h.status==="exchanging"&&(c+=1),i.check()},openBrowser:async h=>{if(i.check(),n===!1||!ea()){d("skipped");return}try{let{default:S}=await import("./open-QQ7FWG4A.js");i.check(),(await S(h)).once("error",()=>{}),d("succeeded")}catch{i.check(),d("failed")}i.check()}})))(Er).catch(y=>{throw i.check(),Le(y,s)??y});i.check();let g=Rr(C,e);await _r(g,void 0,i),i.check(),Ee({baseUrl:e,token:g.accessToken,authStage:"auth_started",authOutcome:"started",occurrenceCount:u});for(let[y,h]of Object.entries(f))Ee({baseUrl:e,token:g.accessToken,authStage:"browser_opened",authOutcome:y,occurrenceCount:h});return c>0&&Ee({baseUrl:e,token:g.accessToken,authStage:"callback_received",authOutcome:"succeeded",occurrenceCount:c}),Ee({baseUrl:e,token:g.accessToken,authStage:"token_persisted",authOutcome:"succeeded"}),{...g,authorizeUrl:l}})}async function $d(t){let{baseUrl:e,onDeviceCode:n,signal:o}=t;return Nn(o,async r=>{let i=be(e),s=await Gn(i,{requireReachable:!0,...r}),a=await Ut({metadata:s,clientId:Ae,scope:Er,transport:{kind:"device"},signal:r.signal,onEvent:u=>{r.check(),u.type==="user_code"&&n({userCode:u.userCode,verificationUri:u.verificationUri,verificationUriComplete:u.verificationUriComplete}),r.check()}}).catch(u=>{throw r.check(),Le(u,i)??u});r.check();let l=Rr(a,e);return await _r(l,void 0,r),l})}p();p();p();function $t(t){return typeof t=="object"&&t!==null&&"error"in t&&typeof t.error=="object"&&"message"in t.error}function Or(t){return typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"}p();function Pr(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:ta(t.error);if(s!==null&&s>0){let c=Math.min(t.retryAfterMaxDelayMs??t.maxDelayMs,2147483647),f=Math.min(s,c);return Math.max(r,f)}let a=t.jitterRatio??0;if(a<=0)return r;let l=t.random??Math.random,u=r*a*(l()*2-1);return Math.min(Math.max(0,r+u),n)}function ta(t){let e=Dr(t,"retry-after")??na(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 Dr(t,e){if(!oa(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 na(t,e){return ra(t)?Dr(t.response,e):null}function oa(t){return typeof t=="object"&&t!==null&&"headers"in t&&t.headers!=null}function ra(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 ia=new Set([429,503,1302,1305]);function jn(t,e){if(Vn(t))return!1;let n=aa(t);return n===null?!1:!!(ia.has(n)||e&&e.includes(n))}function Vn(t){return sa(t)==="insufficient_quota"}function sa(t){let e=Nr(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 Ur(t){let e=B(t),n=Nr(t),o=Lr(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 Xd(t,e){return Pr({attempt:t,initialDelayMs:e.initialDelayMs,maxDelayMs:e.maxDelayMs,retryAfterMode:"minimum",retryAfterMaxDelayMs:e.maxDelayMs,error:e.error})}function aa(t){if($t(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($t(o)){let r=Number(o.error.code);if(Number.isFinite(r)&&r>0)return r}}catch{}}if(Or(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 B(t)??null}function Nr(t){for(let e of la(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 $t(t)?{code:t.error.code,message:t.error.message}:null}function la(t){let e=Lr(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 Lr(t){return t instanceof Error?t.message:typeof t=="string"?t:null}function ua(t,e={}){if(ca(t))return{kind:"abort",diagnosis:"fail-fast",reason:"aborted"};let n=Ur(t),o=n.statusCode,r=ha(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(ma(i))return{kind:"provider-business",diagnosis:"fail-fast",reason:"allocated-quota-exceeded",...l};if(Vn(t))return{kind:"provider-business",diagnosis:"fail-fast",reason:"insufficient-quota",...l};if(jn(t,e.extraRetryErrorCodes))return{kind:n.transport==="sse"?"sse-provider":o!==void 0?"http":"provider",diagnosis:"retryable",reason:"rate-limit",...l};let u=pa(t);if(u!==void 0&&(o===void 0||o>=500))return{kind:"transport",diagnosis:"retryable",reason:"transport-error",transportCode:u,...o!==void 0?{statusCode:o}:{}};if(o!==void 0){let c=n.transport==="sse"?"sse-provider":"http";return o===529?{kind:c,diagnosis:"retryable",reason:"capacity-overload",...l}:o===401||o===403?{kind:c,diagnosis:"fail-fast",reason:"auth-error",...l}:o>=400&&o<500?{kind:c,diagnosis:"fail-fast",reason:"client-error",...l}:o>=500&&o<600?{kind:c,diagnosis:"retryable",reason:"server-error",...l}:{kind:c,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 np(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 Fr(t,e){return jn(t,e)||ua(t,{extraRetryErrorCodes:e}).diagnosis==="retryable"}function ca(t){return Yn(t)?!0:t instanceof Error&&t.name==="CanceledError"}var da=5;function pa(t){let e=t;for(let n=0;n<=da;n++){if(typeof e!="object"||e===null)return;let o=e.code;if(typeof o=="string"&&fa(o))return o;e=e instanceof Error?e.cause:void 0}}function fa(t){return ga.has(t)}var ga=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 ma(t){return t==="Throttling.AllocationQuota"}function ha(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 ge=(e=>(e.USE_OPENAI="openai",e))(ge||{});function Kr(t,e){if(delete t.usesMatildaSignIn,delete t.usesMatildaSavedApiKey,!fn(t))return;let n=t.baseUrl||K();Bn({baseUrl:n,channel:e})&&(t.usesMatildaSignIn=!0),!t.apiKey&&Gt(n)!==void 0&&(t.usesMatildaSavedApiKey=!0)}function fp(t,e={}){let n=t.apiKey?{value:t.apiKey,from:e.apiKeyFrom??"config"}:void 0;return fn(t)?xr({baseUrl:t.baseUrl||K(),channel:e.channel,apiKey:n,apiKeyEnvKey:t.apiKeyEnvKey}):n&&{kind:"api-key",from:n.from}}async function Ca(t,e){try{await Ir({baseUrl:t.baseUrl||K(),channel:e})}catch(n){if(!Fr(n))throw n}}function zn(t,e,n){t[e]=n}function ya(t,e){return t?.[e]}function gp(t,e,n,o,r){let i={...o||{}},s=r?.strictModelProvider===!0,a={...n||{},authType:e,proxy:t?.getProxy()};zn(i,"authType",{kind:"computed",detail:"provided by caller"}),t?.getProxy()&&zn(i,"proxy",{kind:"computed",detail:"Config.getProxy()"});let l=c=>ya(o,c)??{kind:"unknown"};for(let c of _n)n&&c in n&&!i[c]&&zn(i,c,l(c));Kr(a,t.getChannel());let u=kn(a,s);if(!u.valid)throw new Error(u.errors.map(c=>c.message).join(`
|
|
17
|
-
`));return{config:a,sources:i}}function kn(t,e=!1){let n=[];if(!t.apiKey&&!t.usesMatildaSignIn&&!t.usesMatildaSavedApiKey)if(e)n.push(new At(t.authType,t.model,t.apiKeyEnvKey));else{let o=t.apiKeyEnvKey||qo(t.authType);n.push(new Rt({authType:t.authType,model:t.model,baseUrl:t.baseUrl,envKey:o}))}if(!t.model)if(e)n.push(new bt(t.authType));else{let o=Jo(t.authType);n.push(new vt({authType:t.authType,envKey:o}))}return{valid:n.length===0,errors:n}}function Ta(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 mp(t,e,n){e.assertServer?.(t.baseUrl,n),Rn(t,e.getOrganizationId?.(),e.getCodeCreditLimitMinor?.()),Ho(t.customHeaders),Kr(t,e.getChannel()),t.usesMatildaSignIn&&await Ca(t,e.getChannel());let o=kn(t,!1);if(!o.valid)throw new Error(o.errors.map(s=>s.message).join(`
|
|
18
|
-
`));Qn(t.apiKey);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-H6JOS3XU.js");await s(t,e,n),i=a(t,e)}else throw new Error(`Error creating contentGenerator: Unsupported authType: ${r}`)}catch(s){let a=Ta(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 Ge(i,e,t)}var Sa=["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"],Ea=new Set([...Sa,...Jn]),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})",ba="[A-Za-z][0-9A-Za-z-]{0,23}",Gr="(?:0|[1-9]\\d{0,11}|[0-9A-Fa-f]{7,12})",Ra=new RegExp(`^${Re}(?:-${ba}(?:\\.${Gr})+)?$`),va=63,Ma=new RegExp(`^${Re}$`),_a=new RegExp(`^${Re}-preview\\.(?:0|[1-9]\\d{0,11})$`),ka=new RegExp(`^${Re}-canary\\.(?:0|[1-9]\\d{0,11})$`),wa=new RegExp(`^${Re}-nightly\\.(?:0|[1-9]\\d{0,11})\\.[0-9A-Fa-f]{7,12}$`),xa=new RegExp(`^${Re}-(preview|canary|nightly|development|internal)(?:\\.${Gr})+$`);function Ia(t){return t==="desktop"?"desktop":t===void 0||Aa.has(t)?"code_cli":"unknown"}function Oa(t){if(t==="android")return"android";if(t==="darwin")return"macos";if(t==="win32")return"windows";if(t==="linux")return"linux"}function Pa(t){if(t==="x64")return"x64";if(t==="arm64")return"arm64"}function Da(t){if(t===void 0)return"npm";if(t==="desktop")return"direct-download";if(t==="VSCode")return"vscode-marketplace"}function Ua(t,e){if(e==="desktop")return"matilda-desktop";if(t==="VSCode")return"matilda-vscode";if(e==="code_cli")return"matilda-code"}function Na(t){if(typeof t=="string"&&!(t.length>va||!Ra.test(t)))return t}function La(t){if(t!==void 0)return Ma.test(t)?"stable":_a.test(t)?"preview":ka.test(t)?"canary":wa.test(t)?"nightly":xa.exec(t)?.[1]}function $r(t,e=process.platform,n=process.arch){let o=t.getChannel?.(),r=Ia(o),i=Na(o==="desktop"&&process.env.CRAFT_AGENT_VERSION!==void 0?process.env.CRAFT_AGENT_VERSION:t.getCliVersion?.()),s=La(i),a=Oa(e),l=Pa(n),u=Da(o),c=Ua(o,r);return{...c?{"x-matilda-client-name":c}:{},...i?{"x-matilda-client-version":i}:{},...a?{"x-matilda-client-operating-system":a}:{},...l?{"x-matilda-client-architecture":l}:{},...u?{"x-matilda-client-distribution-channel":u}:{},...s?{"x-matilda-client-release-channel":s}:{}}}function Ep(t){let e=t.toLowerCase();return Ea.has(e)||e.startsWith("x-matilda-reported-")}function Fa(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"||Ne(e)}catch{return!1}}function Ap(t,e=t.apiKey){return t.authType==="openai"&&(!!e||t.usesMatildaSignIn===!0||t.usesMatildaSavedApiKey===!0)&&Fa(t.baseUrl)}var Ka=3e3,qe=1,Ga=24*60*60*1e3,Br=20,jr=999,$a=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"]),Ba=new Set(["ENOTFOUND","EAI_AGAIN"]),ja=new Set(["ECONNREFUSED","EHOSTUNREACH","ENETUNREACH"]),Va=new Set(["ABORT_ERR","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT"]),za=new Set(["ECONNRESET","EPIPE","UND_ERR_SOCKET"]);function Wa(t){return`${new URL(t).origin}/api/client-events`}function Ha(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 Wn(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??Ka);try{let a=await r(Wa(n),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${o}`},body:JSON.stringify(Ha(t)),signal:i.signal});return a.ok?!0:(et.warn(`client-events beacon: server rejected payload (HTTP ${a.status})`),!1)}catch{return!1}finally{clearTimeout(s)}}async function Fn(t,e){let n=typeof t.occurrenceCount=="number"&&Number.isFinite(t.occurrenceCount)?Math.max(1,Math.min(Math.floor(t.occurrenceCount),jr)):1;return Wn({eventType:"auth_funnel",authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:n},e)}function Vr(){try{let t=X.readFileSync(Hr(),"utf8"),e=JSON.parse(t);return e.schemaVersion!==qe||!Array.isArray(e.failures)?void 0:{schemaVersion:qe,failures:e.failures.filter(qa)}}catch{return}}function qa(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 zr(t){let e=Hr();if(t.failures.length===0){try{X.rmSync(e,{force:!0})}catch{}return}try{X.mkdirSync(Bt.dirname(e),{recursive:!0}),X.writeFileSync(e,`${JSON.stringify(t)}
|
|
20
|
-
`,"utf8")}catch{}}function Wr(t,e){return t.filter(n=>e-n.lastObservedAtMs<=Ga).sort((n,o)=>n.firstObservedAtMs-o.firstObservedAtMs).slice(-Br)}function Ja(t){let e=$r(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 Ya(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 Xa(t){if(!(!t||typeof t!="object"))for(let e of["status","statusCode"]){let n=t[e];if(typeof n=="number")return n}}function Qa(t,e){let n=Ya(t);if(n&&$a.has(n))return{reason:"tls",stage:"tls",responseReceived:!1};if(n&&Ba.has(n))return{reason:"dns",stage:"resolve",responseReceived:!1};if(n&&ja.has(n))return{reason:"connect",stage:"connect",responseReceived:!1};if(n&&Va.has(n))return{reason:"timeout",stage:n==="UND_ERR_BODY_TIMEOUT"?"response":"request",responseReceived:n==="UND_ERR_BODY_TIMEOUT"};if(n&&za.has(n))return{reason:"reset",stage:n==="UND_ERR_SOCKET"?"response":"request",responseReceived:n==="UND_ERR_SOCKET"};let o=Xa(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 Za(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 kp(t,e){let n=Ja(e.cliConfig);if(n.reportedSurface!=="code_cli"&&n.reportedSurface!=="desktop")return!1;let o=Qa(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=Vr()??{schemaVersion:qe,failures:[]},a=Wr(s.failures,r),l=Za(a,i);if(l>=0){let u=a[l];a[l]={...u,occurrenceCount:Math.min(u.occurrenceCount+1,jr),lastObservedAtMs:r}}else a.push(i);return zr({schemaVersion:qe,failures:a.slice(-Br)}),!0}async function wp(t){let e=Vr();if(!e)return;let n=Wr(e.failures,Date.now()),o=[];for(let r=0;r<n.length;r+=1){let i=n[r];if(!await Wn({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}}zr({schemaVersion:qe,failures:o})}function Hr(){return Bt.join(Ze.getGlobalMatildaDir(),"telemetry","cli-transport-failures.json")}var kg="http://localhost:4317";export{Us as a,gr as b,ei as c,cn as d,gt as e,ai as f,li as g,ht as h,Lo as i,Ki as j,En as k,Oi as l,Dl as m,_o as n,De as o,Ue as p,Gl as q,$l as r,Bl as s,Oo as t,Po as u,Ne as v,fn as w,Le as x,xi as y,K as z,$r as A,Ep as B,Ap as C,Fn as D,kp as E,wp as F,kg as G,Xu as H,bn as I,Rn as J,Ho as K,Qu as L,oc as M,rc as N,_t as O,Be as P,tr as Q,Sc as R,Rc as S,ir as T,Nt as U,Ad as V,mr as W,hr as X,be as Y,$n as Z,Bn as _,kr as $,Gt as aa,Xs as ba,Qs as ca,Kd as da,Ir as ea,ea as fa,Gd as ga,$d as ha,$t as ia,Or as ja,Pr as ka,ta as la,jn as ma,Vn as na,sa as oa,Ur as pa,Xd as qa,ua as ra,np as sa,Fr as ta,ge as ua,fp as va,gp as wa,mp as xa};
|
|
21
|
-
/**
|
|
22
|
-
* @license
|
|
23
|
-
* Copyright 2025 Matilda
|
|
24
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
25
|
-
*/
|
|
26
|
-
/**
|
|
27
|
-
* @license
|
|
28
|
-
* Copyright 2025 Google LLC
|
|
29
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
-
*/
|
|
31
|
-
/**
|
|
32
|
-
* @license
|
|
33
|
-
* Copyright 2026 Matilda Team
|
|
34
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
35
|
-
*/
|
|
36
|
-
/**
|
|
37
|
-
* @license
|
|
38
|
-
* Copyright 2026 Google LLC
|
|
39
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
40
|
-
*/
|
|
41
|
-
/**
|
|
42
|
-
* @license
|
|
43
|
-
* Copyright 2026 Matilda
|
|
44
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
45
|
-
*/
|
|
46
|
-
/**
|
|
47
|
-
* @license
|
|
48
|
-
* Copyright 2025 Matilda Team
|
|
49
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
50
|
-
*/
|
|
51
|
-
/**
|
|
52
|
-
* @license
|
|
53
|
-
* Copyright 2026 Maincode
|
|
54
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
55
|
-
*
|
|
56
|
-
* Low-level OAuth primitives for core-auth's unified `/api/auth/oauth/*` flow
|
|
57
|
-
* (ADR-029): PKCE pair generation, RFC 8414 discovery, the RFC 8628 device
|
|
58
|
-
* grant, and refresh. Vendored (as source) from matilda-core's
|
|
59
|
-
* `packages/client-sdk/src/auth.ts` and extended to carry the `id_token`
|
|
60
|
-
* (display identity) that the higher-level flows need. Node built-ins only —
|
|
61
|
-
* no third-party runtime dependencies.
|
|
62
|
-
*/
|
|
63
|
-
/**
|
|
64
|
-
* @license
|
|
65
|
-
* Copyright 2026 Maincode
|
|
66
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
67
|
-
*
|
|
68
|
-
* File-backed token store + cross-process lock. The store persists a JSON map
|
|
69
|
-
* (`{ [key]: value }`) at 0600 so callers can key several credentials in one
|
|
70
|
-
* file; the lock is an O_EXCL lockfile that serialises refreshes across
|
|
71
|
-
* processes (the guarantee a plaintext read/modify/write can't give).
|
|
72
|
-
*/
|
|
73
|
-
/**
|
|
74
|
-
* @license
|
|
75
|
-
* Copyright 2026 Maincode
|
|
76
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
77
|
-
*
|
|
78
|
-
* Hardened access-token manager: returns a valid access token, refreshing via
|
|
79
|
-
* core-auth's token endpoint when expired or forced. Single-flight within the
|
|
80
|
-
* process, serialised across processes by the store's lock, carries a prior
|
|
81
|
-
* refresh token forward when the response omits one, and evicts on a terminal
|
|
82
|
-
* `invalid_grant` so a dead session doesn't wedge the caller in a refresh loop.
|
|
83
|
-
*/
|
|
84
|
-
/**
|
|
85
|
-
* @license
|
|
86
|
-
* Copyright 2026 Maincode
|
|
87
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
88
|
-
*
|
|
89
|
-
* Browser login orchestration: PKCE + a loopback capture server, driven off
|
|
90
|
-
* discovery metadata. Unlike a bare loopback helper, this emits lifecycle
|
|
91
|
-
* events for a UI, honours an AbortSignal, and — instead of serving its own
|
|
92
|
-
* HTML — 302-redirects the browser to an app-owned branded landing
|
|
93
|
-
* (`successRedirect`). Returns a TokenSet including the `id_token`.
|
|
94
|
-
*/
|
|
95
|
-
/**
|
|
96
|
-
* @license
|
|
97
|
-
* Copyright 2026 Maincode
|
|
98
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
99
|
-
*
|
|
100
|
-
* Node auth surface for `@maincode-ai/matilda-client-sdk/auth/node`.
|
|
101
|
-
* Re-exports the OAuth primitives plus the higher-level login flow, file token
|
|
102
|
-
* store, and hardened token manager that the CLI (`packages/core`) and the
|
|
103
|
-
* Electron desktop app consume.
|
|
104
|
-
*/
|
|
105
|
-
/** @license Copyright 2026 Maincode SPDX-License-Identifier: Apache-2.0 */
|
|
106
|
-
/**
|
|
107
|
-
* @license
|
|
108
|
-
* Copyright 2026 Maincode
|
|
109
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
110
|
-
*
|
|
111
|
-
* Matilda account auth for the CLI, backed by the shared client SDK.
|
|
112
|
-
*
|
|
113
|
-
* The OAuth dance (PKCE, loopback capture, code exchange, refresh, cross-process
|
|
114
|
-
* token locking) is owned by `@maincode-ai/matilda-client-sdk/auth/node` — the
|
|
115
|
-
* auth team's tested implementation of ADR-029's unified `/api/auth/oauth/*`
|
|
116
|
-
* flow. This module keeps ONLY the CLI-specific concerns: which endpoint, the
|
|
117
|
-
* on-disk credential shape the rest of the CLI already reads, and surfacing the
|
|
118
|
-
* authorize URL to the Ink UI. No PKCE crypto, no loopback server, no token
|
|
119
|
-
* exchange lives here anymore (replaced the 391-line hand-rolled beta that hit
|
|
120
|
-
* the divergent `/api/auth/cli/*` endpoints and stored tokens in plaintext).
|
|
121
|
-
*/
|