@maincode-ai/matilda-code 0.22.1 → 0.22.2-nightly.20261107.317646b99
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-CUHHPELW.js +3 -0
- package/chunks/agent-headless-P2DULOWS.js +3 -0
- package/chunks/{askUserQuestion-A46IDHKS.js → askUserQuestion-DHYKAZWH.js} +1 -1
- package/chunks/ca-3NRDXS7D.js +23 -0
- package/chunks/chunk-355M6IU5.js +80 -0
- package/chunks/chunk-3TTI3ZQT.js +56 -0
- package/chunks/{chunk-CI5CVVGI.js → chunk-42UM7T4B.js} +53 -53
- package/chunks/{chunk-6RK6IJY5.js → chunk-46FFWNRO.js} +1 -1
- package/chunks/chunk-55YW6EUC.js +8 -0
- package/chunks/chunk-BQDEPKIG.js +46 -0
- package/chunks/{chunk-LONWTJOE.js → chunk-BS7Q7KA6.js} +8 -8
- package/chunks/chunk-DZKI2CAC.js +3 -0
- package/chunks/{chunk-TDFF4ZGY.js → chunk-E2KMVG7F.js} +1 -1
- package/chunks/chunk-ECXO253T.js +2580 -0
- package/chunks/chunk-FPGKJJJY.js +13 -0
- package/chunks/chunk-FY3LL4OC.js +8 -0
- package/chunks/chunk-HJK3NKAR.js +8 -0
- package/chunks/{chunk-ZABAV4XA.js → chunk-HRD7WD3P.js} +3 -3
- package/chunks/{chunk-GCMUSGTT.js → chunk-L2FKLLEC.js} +1 -1
- package/chunks/chunk-MZ73LBEY.js +9 -0
- package/chunks/chunk-N2BE647T.js +10 -0
- package/chunks/chunk-O2WOUWDJ.js +121 -0
- package/chunks/{chunk-UICLGQTV.js → chunk-OWEBLTAN.js} +1 -1
- package/chunks/{chunk-KYNP66YS.js → chunk-P24OL22U.js} +8 -8
- package/chunks/chunk-PFXCFIHY.js +8 -0
- package/chunks/{chunk-FI2FSW7J.js → chunk-VWM3GUBH.js} +1 -1
- package/chunks/chunk-WL27X35X.js +44 -0
- package/chunks/chunk-ZUQRP3N6.js +9 -0
- package/chunks/{computer-use-V2DT2IKO.js → computer-use-DIGHVJ7N.js} +7 -7
- package/chunks/{cron-create-JINCFLKY.js → cron-create-5RRFCP36.js} +1 -1
- package/chunks/{cron-delete-RF6JLUAV.js → cron-delete-7DTRWCSV.js} +1 -1
- package/chunks/{cron-list-VXLBAXZ3.js → cron-list-HY6XJD7D.js} +1 -1
- package/chunks/de-MINTIKBC.js +23 -0
- package/chunks/{edit-ZB4SONLT.js → edit-IVOZQDG7.js} +17 -17
- package/chunks/en-V4AM2EKE.js +23 -0
- package/chunks/{enter-worktree-CAFTW46C.js → enter-worktree-LQKNE24C.js} +1 -1
- package/chunks/{enterPlanMode-XSNXJJMC.js → enterPlanMode-AMKRMA4Q.js} +1 -1
- package/chunks/{exit-worktree-U37YLKJC.js → exit-worktree-353X52E6.js} +1 -1
- package/chunks/{exitPlanMode-XKAZCVAV.js → exitPlanMode-FA7FBOPZ.js} +1 -1
- package/chunks/fr-XRDTBTRU.js +23 -0
- package/chunks/{glob-LPIFPVGX.js → glob-OLQLERJP.js} +1 -1
- package/chunks/{goal-tools-VAH424PW.js → goal-tools-POD6LCKM.js} +1 -1
- package/chunks/grep-WCOSLJAC.js +22 -0
- package/chunks/ja-OYFHC7MP.js +23 -0
- package/chunks/{keychain-token-storage-UTWIIKCK.js → keychain-token-storage-BCODB632.js} +1 -1
- package/chunks/ls-JORGCXES.js +15 -0
- package/chunks/{lsp-H4EXPHFD.js → lsp-Y46R5DO5.js} +1 -1
- package/chunks/mcp-client-UUQFLTQ2.js +3 -0
- package/chunks/monitor-S7LII2PV.js +32 -0
- package/chunks/notebook-edit-R35SRELR.js +17 -0
- package/chunks/openaiContentGenerator-7UTX34FH.js +52 -0
- package/chunks/pt-6DJAKXHE.js +23 -0
- package/chunks/read-file-UNA4JSSL.js +3 -0
- package/chunks/ripGrep-LSOMEB27.js +3 -0
- package/chunks/ru-4UMYCMY6.js +23 -0
- package/chunks/scheduler-BCZEO32E.js +8 -0
- package/chunks/{send-message-5XHDGHSN.js → send-message-VY4DP63A.js} +1 -1
- package/chunks/shell-BXOPTHWD.js +3 -0
- package/chunks/{skill-FCVSGCSN.js → skill-3RC6M3O5.js} +4 -4
- package/chunks/symbol-search-YNGX4Z5T.js +19 -0
- package/chunks/{syntheticOutput-OIPRFBVD.js → syntheticOutput-4JANVS4D.js} +1 -1
- package/chunks/{task-create-QP44DKH4.js → task-create-NRBVXURQ.js} +1 -1
- package/chunks/{task-detach-AUTU6C4G.js → task-detach-VHDDAO2K.js} +1 -1
- package/chunks/{task-list-U2WAGMM7.js → task-list-T2IET466.js} +1 -1
- package/chunks/{task-stop-GN5WZ3IA.js → task-stop-OEAEE5R7.js} +1 -1
- package/chunks/{task-update-26N2AUQT.js → task-update-4ANRU74G.js} +1 -1
- package/chunks/{team-create-TN2KN27J.js → team-create-RUBIKSDJ.js} +1 -1
- package/chunks/team-delete-M4ORNSTT.js +8 -0
- package/chunks/{todoWrite-JN3ZV5O2.js → todoWrite-RN2OP46T.js} +1 -1
- package/chunks/{tool-search-VPMEQKAS.js → tool-search-O2ZT6LK7.js} +1 -1
- package/chunks/{web-fetch-CVAOVOZM.js → web-fetch-VA2BZ4VR.js} +1 -1
- package/chunks/{web-search-77CUPTFY.js → web-search-TZUX7I6D.js} +3 -5
- package/chunks/{workflow-JNZRGHJ4.js → workflow-7YOFJC77.js} +2 -2
- package/chunks/write-file-NK4IW2I5.js +15 -0
- package/cli.js +473 -451
- package/locales/ca.js +6 -3
- package/locales/de.js +6 -3
- package/locales/en.js +35 -3
- package/locales/fr.js +6 -3
- package/locales/ja.js +6 -3
- package/locales/pt.js +6 -3
- package/locales/ru.js +6 -3
- package/npm-postinstall.js +1 -1
- package/package.json +2 -2
- package/chunks/agent-JDATO222.js +0 -3
- package/chunks/agent-headless-ZOFNY4CF.js +0 -3
- package/chunks/ca-JKEHLTNL.js +0 -23
- package/chunks/chunk-2LVAK6TV.js +0 -80
- package/chunks/chunk-5JCW6FH6.js +0 -8
- package/chunks/chunk-7AEOFDY3.js +0 -8
- package/chunks/chunk-AEYNMLMW.js +0 -36
- package/chunks/chunk-DEN6RR3B.js +0 -3
- package/chunks/chunk-DUB7JMQV.js +0 -13
- package/chunks/chunk-HRCRNKY2.js +0 -8
- package/chunks/chunk-IV6PS6DB.js +0 -8
- package/chunks/chunk-QNXNECWR.js +0 -2602
- package/chunks/chunk-RH3AEZWO.js +0 -9
- package/chunks/chunk-SMTY6M3W.js +0 -10
- package/chunks/chunk-TKEFJ3O3.js +0 -9
- package/chunks/chunk-V2V3OF76.js +0 -56
- package/chunks/chunk-Y3SZK63U.js +0 -120
- package/chunks/chunk-ZSGBDQXU.js +0 -11
- package/chunks/de-GMGNR5CZ.js +0 -23
- package/chunks/en-3NQMLVKW.js +0 -23
- package/chunks/fr-WS3EBB36.js +0 -23
- package/chunks/grep-IF4GTD5A.js +0 -22
- package/chunks/ja-GBCDQ43R.js +0 -23
- package/chunks/ls-3EEHZY4W.js +0 -15
- package/chunks/mcp-client-EUPXG3VF.js +0 -3
- package/chunks/monitor-KBWRPPZ5.js +0 -32
- package/chunks/notebook-edit-K3KNR6DI.js +0 -17
- package/chunks/openaiContentGenerator-2NF5JGUC.js +0 -47
- package/chunks/pt-VID6J2CM.js +0 -23
- package/chunks/read-file-SRDZKBNS.js +0 -3
- package/chunks/ripGrep-675JNT4W.js +0 -3
- package/chunks/ru-EB6V6EAN.js +0 -23
- package/chunks/scheduler-O36AJTWS.js +0 -8
- package/chunks/shell-A7NRVDCY.js +0 -3
- package/chunks/symbol-search-ZM3HFCUV.js +0 -19
- package/chunks/team-delete-XCKD5FBZ.js +0 -8
- package/chunks/write-file-FJCU2PYT.js +0 -15
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import{b as n}from"./chunk-GZPNIYVZ.js";n();n();var x="MATILDA_API_KEY";var d="matilda-code-1.0",l="Matilda",O="https://matilda.maincode.com/api/v1/code",g={id:"matilda",label:"Matilda",description:"Connect to the Matilda Core code API endpoint",protocol:"openai",baseUrl:O,envKey:x,models:[{id:d,displayName:l,contextWindowSize:1048576,description:"Matilda Code model",generationConfig:{openAIRequestProfile:"matilda-code",timeout:6e5,samplingParams:{max_tokens:65536,chat_template_kwargs:{enable_thinking:!0}},schemaCompliance:"openapi_30",splitToolMedia:!0,customHeaders:{"User-Agent":"MatildaCode/0.1"}}}],documentationUrl:"https://help.maincode.com/products/matilda/v1/en/authentication/manage-api-keys"};var b=d,v="text-embedding-v4";n();import{AsyncLocalStorage as D}from"node:async_hooks";import{randomUUID as f}from"node:crypto";n();import{AsyncLocalStorage as P}from"node:async_hooks";var m=new P;var A="x-matilda-reported-operation-id",E="x-matilda-reported-attempt-purpose",y=[A,E],I=new Set(y),C=["answer","tool_followup","continuation","retry","compaction","unknown"],M=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,L=new Set(C),c=new D,_=new WeakSet;function T(){return f()}function a(t,e){let o=Object.freeze({operationId:t,attemptPurpose:e});return _.add(o),o}function q(t){return I.has(t.toLowerCase())}function s(){let t=c.getStore();return t&&_.has(t)?t:void 0}var R=class{activeOperationId;begin(e){return this.activeOperationId=T(),a(this.activeOperationId,e)}continue(e){let o=s()?.operationId??this.activeOperationId??T();return this.activeOperationId=o,a(o,e)}};function p(t,e){return c.run(t,e)}function z(t){c.enterWith(t)}function B(t,e){let o=s();return o?p(a(o.operationId,t),e):e()}function h(t,e){let o={next:(...r)=>p(t,()=>e.next(...r)),return:r=>p(t,()=>e.return(r)),throw:r=>p(t,()=>e.throw(r)),[Symbol.asyncIterator]:()=>o},i=Symbol.asyncDispose,u=i&&e[i];return i&&typeof u=="function"&&(o[i]=()=>p(t,()=>u.call(e))),o}function F(t,e){let o=s();return o?h(a(o.operationId,t),e):e}function V(){let t=s();if(!t||!M.test(t.operationId))return{};let e=m.getStore()?.attempt,o=e!==void 0&&e>1?"retry":t.attemptPurpose;return L.has(o)?{[A]:t.operationId,[E]:o}:{}}export{m as a,A as b,E as c,y as d,q as e,s as f,R as g,p as h,z as i,B as j,h as k,F as l,V as m,x as n,d as o,l as p,O as q,g as r,b as s,v as t};
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright 2026 Matilda Team
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @license
|
|
11
|
+
* Copyright 2025 Google LLC
|
|
12
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
*/
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import{d as T}from"./chunk-OWEBLTAN.js";import{b as W}from"./chunk-7ZODGQO6.js";import{a as P}from"./chunk-GT6MSEK4.js";import{b as g}from"./chunk-PFXCFIHY.js";import{c as l,ea as _}from"./chunk-WL27X35X.js";import{b as x}from"./chunk-GZPNIYVZ.js";import{f as U}from"./chunk-OWGSC52X.js";x();var F=U(W(),1);import*as d from"node:fs/promises";import{constants as B}from"node:fs";import*as b from"node:path";var f=_("AGENTS_TEAM_TASKS"),$=32768,v=16;function M(r){if(!r)return;let e=Buffer.byteLength(JSON.stringify(r),"utf-8");if(e>$)throw new Error(`Task metadata is too large (${e} bytes; max ${$}). Trim the payload or store the bulk content elsewhere.`)}var X={retries:{retries:30,minTimeout:5,maxTimeout:100,factor:2,randomize:!0},stale:5e3,onCompromised:r=>{f.warn("task lock compromised:",r?.message??r)}},A=new Map;function K(r){let e=A.get(r);return e||(e=new P,A.set(r,e)),e}async function h(r,e,t){return K(r).runExclusive(async()=>{let i;try{i=await F.default.lock(r,X)}catch(o){if(l(o)&&o.code==="ENOENT")return t();throw o}try{return await e()}finally{await i()}})}var q="__reciprocal__",j=new Map;function z(r){let e=j.get(r);return e||(e=new P,j.set(r,e)),e}function Y(r){if(!/^[1-9]\d*$/.test(r))throw new Error(`Invalid task ID "${r}". Task IDs must be positive integers.`)}function m(r,e){return Y(e),b.join(T(r),`${e}.json`)}var O=new Set;function ae(r){return O.add(r),()=>{O.delete(r)}}function k(r){for(let e of O)try{e(r)}catch(t){f.warn(`task update listener failed: ${t}`)}}async function ie(r,e){M(e.metadata);let t=T(r);await d.mkdir(t,{recursive:!0});let i=15;for(let o=0;o<i;o++){let c=await Z(t),s={id:c,subject:e.subject,description:e.description,activeForm:e.activeForm,owner:e.owner,status:"pending",blocks:[],blockedBy:[],metadata:e.metadata},n=b.join(t,`${c}.json`);try{await(await d.open(n,B.O_WRONLY|B.O_CREAT|B.O_EXCL)).close()}catch(a){if(l(a)&&a.code==="EEXIST")continue;throw a}try{await g(n,s)}catch(a){throw await d.unlink(n).catch(()=>{}),a}return k(r),s}throw new Error(`Failed to create task after ${i} attempts (ID contention).`)}async function oe(r,e){let t=m(r,e);try{let i=await d.readFile(t,"utf-8");return JSON.parse(i)}catch(i){if(l(i)&&i.code==="ENOENT")return;throw i}}var p=class extends Error{constructor(t,i,o){super(`Task #${t} is owned by "${o}". Only the leader or the owner can change status / owner / subject / description / blocks.`);this.taskId=t;this.callerName=i;this.actualOwner=o;this.name="TaskOwnershipError"}};async function ce(r,e,t,i){let o=m(r,e);return h(o,async()=>{let c;try{c=await d.readFile(o,"utf-8")}catch(n){if(l(n)&&n.code==="ENOENT")return;throw n}let s=JSON.parse(c);if(i?.callerName!==void 0&&i.callerName!==q&&(t.status!==void 0||t.owner!==void 0||t.subject!==void 0||t.description!==void 0||(t.addBlocks?.length??0)>0||(t.addBlockedBy?.length??0)>0)&&s.owner&&s.owner!==i.callerName)throw new p(e,i.callerName,s.owner);if(t.addBlocks?.length){let n=new Set(s.blocks);for(let a of t.addBlocks)n.add(a);s.blocks=Array.from(n)}if(t.addBlockedBy?.length){let n=new Set(s.blockedBy);for(let a of t.addBlockedBy)n.add(a);s.blockedBy=Array.from(n)}if(t.status!==void 0&&(s.status=t.status,t.status==="completed"&&s.blocks.length>0&&await Q(r,e,s.blocks)),t.owner!==void 0&&(s.owner=t.owner?t.owner:void 0),t.subject!==void 0&&(s.subject=t.subject),t.description!==void 0&&(s.description=t.description),t.activeForm!==void 0&&(s.activeForm=t.activeForm??void 0),t.metadata!==void 0){s.metadata=s.metadata??{};for(let[n,a]of Object.entries(t.metadata))n==="__proto__"||n==="constructor"||n==="prototype"||(a===null?delete s.metadata[n]:s.metadata[n]=a);Object.keys(s.metadata).length===0&&(s.metadata=void 0),M(s.metadata)}return await g(o,s),k(r),s},()=>{})}async function de(r,e,t){let i=m(r,e),o=await h(i,async()=>{let s;try{let a=await d.readFile(i,"utf-8");s=JSON.parse(a)}catch(a){if(l(a)&&a.code==="ENOENT")return null;throw a}if(t?.callerName!==void 0&&s.owner&&s.owner!==t.callerName)throw new p(e,t.callerName,s.owner);let n=new Set([...s.blocks,...s.blockedBy]);n.delete(e);try{await d.unlink(i)}catch(a){if(l(a)&&a.code==="ENOENT")return null;throw a}return n},()=>null);if(o===null)return!1;let c=await Promise.allSettled(Array.from(o).map(s=>G(r,s,e)));for(let s of c)s.status==="rejected"&&f.warn(`deleteTask(${e}): edge cleanup failed: ${s.reason}`);return k(r),!0}async function G(r,e,t){let i=m(r,e);await h(i,async()=>{try{let o=await d.readFile(i,"utf-8"),c=JSON.parse(o),s=c.blocks.length,n=c.blockedBy.length;if(c.blocks=c.blocks.filter(a=>a!==t),c.blockedBy=c.blockedBy.filter(a=>a!==t),c.blocks.length===s&&c.blockedBy.length===n)return;await g(i,c)}catch(o){if(l(o)&&o.code==="ENOENT")return;throw o}},()=>{})}async function R(r,e){let t=T(r),i;try{i=await d.readdir(t)}catch(n){if(l(n)&&n.code==="ENOENT")return[];let a=n instanceof Error?n.message:String(n);throw f.warn(`Failed to list tasks dir ${t}: ${a}`),n instanceof Error?n:new Error(a)}let o=i.filter(n=>n.endsWith(".json")),c=[];for(let n=0;n<o.length;n+=v){let a=o.slice(n,n+v),w=await Promise.all(a.map(async C=>{let y=b.join(t,C),S;try{S=await d.readFile(y,"utf-8")}catch(u){if(l(u)&&u.code==="ENOENT")return;let E=u instanceof Error?u.message:String(u);f.warn(`Failed to read task file ${y}: ${E}`);return}if(S.trim()!=="")try{return JSON.parse(S)}catch(u){let E=u instanceof Error?u.message:String(u);f.warn(`Quarantining corrupt task file ${y}: ${E}`);let D=`${y}.corrupt-${Date.now()}`;try{await d.rename(y,D)}catch(N){let J=N instanceof Error?N.message:String(N);f.warn(`Failed to quarantine ${y}: ${J}`)}return}}));c.push(...w)}let s=c.filter(n=>n!==void 0);return s.sort((n,a)=>Number(n.id)-Number(a.id)),e?s.filter(n=>!(e.status!==void 0&&n.status!==e.status||e.owner!==void 0&&n.owner!==e.owner||e.blockedBy!==void 0&&!n.blockedBy.includes(e.blockedBy))):s}async function le(r){let e=T(r);await d.rm(e,{recursive:!0,force:!0}),k(r)}async function Q(r,e,t){let i=await Promise.allSettled(t.map(async o=>{let c=m(r,o);await h(c,async()=>{let s;try{s=await d.readFile(c,"utf-8")}catch(w){if(l(w)&&w.code==="ENOENT")return;throw w}let n=JSON.parse(s),a=n.blockedBy.length;n.blockedBy=n.blockedBy.filter(w=>w!==e),n.blockedBy.length!==a&&await g(c,n)},()=>{})}));for(let o of i)o.status==="rejected"&&f.warn(`unblockDependents(${e}): ${o.reason}`);k(r)}async function ue(r,e,t,i){return i?.checkAgentBusy?z(t).runExclusive(()=>L(r,e,t,i,!0)):L(r,e,t,i,!1)}async function L(r,e,t,i,o){if(o&&await V(r,t))return;let c=m(r,e);return h(c,async()=>{let s;try{s=await d.readFile(c,"utf-8")}catch(a){if(l(a)&&a.code==="ENOENT")return;throw a}let n=JSON.parse(s);if(n.status==="pending"&&!n.owner)return n.owner=i?.ownerName??t,n.status="in_progress",await g(c,n),k(r),n},()=>{})}async function V(r,e){let t=await R(r,{status:"in_progress"}),i=e.split("@")[0];return t.some(o=>o.owner===e||o.owner===i)}async function H(r,e,t){let i=m(r,e);return h(i,async()=>{let o;try{o=await d.readFile(i,"utf-8")}catch(s){if(l(s)&&s.code==="ENOENT")return!1;throw s}let c=JSON.parse(o);return c.status!=="in_progress"||c.owner!==t?!1:(c.owner=void 0,c.status="pending",await g(i,c),!0)},()=>!1)}async function fe(r,e){let t=e.split("@")[0],o=(await R(r,{status:"in_progress"})).filter(a=>a.owner===e||a.owner===t),c=await Promise.allSettled(o.map(a=>H(r,a.id,a.owner))),s=c.filter(a=>a.status==="rejected");s.length>0&&f.warn(`unassignTeammateTasks: ${s.length}/${o.length} task(s) failed to unassign for ${e}`);let n=c.filter(a=>a.status==="fulfilled"&&a.value===!0).length;return n>0&&k(r),n}async function Z(r){let e;try{e=await d.readdir(r)}catch{return"1"}let t=0;for(let i of e){if(!i.endsWith(".json"))continue;let o=parseInt(i.replace(".json",""),10);!isNaN(o)&&o>t&&(t=o)}return String(t+1)}export{q as a,Y as b,ae as c,ie as d,oe as e,p as f,ce as g,de as h,R as i,le as j,ue as k,fe as l};
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright 2025 Matilda
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import{A as m,I as g,L as h,P as l,W as M}from"./chunk-WL27X35X.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();import*as s from"node:fs";import*as t from"node:path";var A="memory",y="MEMORY.md",x="meta.json",R="extract-cursor.json",O="consolidation.lock",T="memories";function D(r){let e=t.resolve(r);for(;;){let n=t.join(e,".git");if(s.existsSync(n))return e;let o=t.dirname(e);if(o===e)return null;e=o}}function j(r){let e=D(r);if(!e)return null;try{let n=s.readFileSync(t.join(e,".git"),"utf-8").trim();if(!n.startsWith("gitdir:"))return e;let o=t.resolve(e,n.slice(7).trim()),i=t.resolve(o,s.readFileSync(t.join(o,"commondir"),"utf-8").trim());return t.resolve(t.dirname(o))!==t.join(i,"worktrees")||s.realpathSync(s.readFileSync(t.join(o,"gitdir"),"utf-8").trim())!==t.join(s.realpathSync(e),".git")?e:t.basename(i)!==".git"?i.normalize("NFC"):t.dirname(i).normalize("NFC")}catch{return e}}function E(){return process.env.MATILDA_CODE_MEMORY_BASE_DIR?h(void 0,process.env.MATILDA_CODE_MEMORY_BASE_DIR):l.getRuntimeBaseDir()}var f=new Map;function c(r){let e=process.env.MATILDA_CODE_MEMORY_LOCAL==="1",n=e?"":E(),o=`${e?"local":n}\0${r}`,i=f.get(o);if(i!==void 0)return i;let a;if(e)a=t.join(r,m,A);else{let d=j(r)??t.resolve(r);a=t.join(n,"projects",g(d),A)}return f.set(o,a),a}function u(r){return t.dirname(c(r))}function C(r,e){let n=t.normalize(r),o=t.normalize(c(e)),i=t.relative(o,n);return i===""||!i.startsWith("..")&&!t.isAbsolute(i)}function N(r){return t.join(c(r),y)}function U(r){return t.join(u(r),x)}function F(r){return t.join(u(r),R)}function Y(r){return t.join(u(r),O)}function _(){return t.join(E(),T)}function k(){return t.join(_(),y)}function I(r){let e=t.normalize(r),n=t.normalize(_()),o=t.relative(n,e);return o===""||!o.startsWith("..")&&!t.isAbsolute(o)}function S(r,e){return C(r,e)||I(r)}var z="A secret in this text was stored as ***REDACTED***, as a memory should keep none.";function b(r,e,n){return S(t.resolve(r),e)?M(n):n}export{y as a,E as b,c,u as d,C as e,N as f,U as g,F as h,Y as i,_ as j,k,S as l,z as m,b as n};
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright 2025 Google LLC
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{a as r}from"./chunk-V6UPUMP3.js";import{
|
|
3
|
+
import{a as r}from"./chunk-V6UPUMP3.js";import{ea as g}from"./chunk-WL27X35X.js";import{b as f}from"./chunk-GZPNIYVZ.js";f();function C(n,o){return`Base directory for this skill: ${n}
|
|
4
4
|
Important: ALWAYS resolve absolute paths from this base directory when working with skills.
|
|
5
5
|
|
|
6
6
|
${o}
|
|
7
|
-
`}async function
|
|
7
|
+
`}async function h(n,o){let i=await n.listSkills(),l=o.getDisabledSkillNames(),t=e=>l.has(e.toLowerCase()),s=i.filter(e=>!e.disableModelInvocation&&n.isSkillActive(e)&&!t(e.name)),m=new Set(i.filter(e=>!e.disableModelInvocation&&e.paths&&e.paths.length>0&&!n.isSkillActive(e)&&!t(e.name)).map(e=>e.name)),a=o.getModelInvocableCommandsProvider(),c=a?a():[],k=new Set(i.filter(e=>!e.disableModelInvocation&&!t(e.name)).map(e=>e.name)),d=c.filter(e=>!k.has(e.name)),S=[...s.map(e=>({name:e.name,description:e.description,whenToUse:e.whenToUse,level:e.level})),...d.map(e=>({name:e.name,description:e.description}))];return{availableSkills:s,pendingConditionalSkillNames:m,modelInvocableCommands:d,entries:S}}function u(n,o){let i=n.level!==void 0?0:1,l=o.level!==void 0?0:1;return i!==l?i-l:n.name.localeCompare(o.name)}function H(n){return[...n].sort(u).map(o=>{if(o.level!==void 0){let i=`${r(o.description)}${o.whenToUse?` \u2014 ${r(o.whenToUse)}`:""} (${o.level})`;return`<skill>
|
|
8
8
|
<name>
|
|
9
9
|
${r(o.name)}
|
|
10
10
|
</name>
|
|
@@ -22,7 +22,7 @@ ${r(o.name)}
|
|
|
22
22
|
${r(o.description)}
|
|
23
23
|
</description>
|
|
24
24
|
</skill>`}).join(`
|
|
25
|
-
`)}function y(n,o){if(!(!n||!o?.length))for(let i of o)n.addSessionAllowRule(i)}f();var p=g("SKILL_HOOKS");function M(n,o,i){if(!i.hooks)return p.debug(`Skill '${i.name}' has no hooks to register`),0;let l=i.hooks,t=0;for(let s of Object.keys(l)){let m=l[s];if(m)for(let a of m){let c=a.matcher||"";for(let k of a.hooks){if(k.type==="function"){p.debug("Skipping function hook from skill (not supported in frontmatter)");continue}let d=v(k,i.skillRoot);n.addSessionHook(o,s,c,d,{skillRoot:i.skillRoot}),t++,p.debug(`Registered hook for ${s}
|
|
25
|
+
`)}function y(n,o){if(!(!n||!o?.length))for(let i of o)n.addSessionAllowRule(i)}f();var p=g("SKILL_HOOKS");function M(n,o,i){if(!i.hooks)return p.debug(`Skill '${i.name}' has no hooks to register`),0;let l=i.hooks,t=0;for(let s of Object.keys(l)){let m=l[s];if(m)for(let a of m){let c=a.matcher||"";for(let k of a.hooks){if(k.type==="function"){p.debug("Skipping function hook from skill (not supported in frontmatter)");continue}let d=v(k,i.skillRoot);n.addSessionHook(o,s,c,d,{skillRoot:i.skillRoot}),t++,p.debug(`Registered hook for ${s} from skill '${i.name}', matcher:`,c)}}}return t>0&&p.info(`Registered ${t} hooks from skill '${i.name}'`),t}function v(n,o){return n.type==="command"&&o?{...n,env:{...n.env,MATILDA_SKILL_ROOT:o}}:n}export{C as a,h as b,H as c,y as d,M as e};
|
|
26
26
|
/**
|
|
27
27
|
* @license
|
|
28
28
|
* Copyright 2025 Matilda
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{j as i,s as c}from"./chunk-
|
|
3
|
+
import{j as i,s as c}from"./chunk-FPGKJJJY.js";import{d as l}from"./chunk-P24OL22U.js";import{b as g}from"./chunk-GZPNIYVZ.js";g();import{readFile as y}from"node:fs/promises";function S(t){return t?`side-query:${t}`:"side-query"}function T(t,e){return e??t.getFastModel?.()??t.getModel()??c}function x(t){let e=t?.thinkingConfig;return{...t??{},thinkingConfig:e?{includeThoughts:!1,...e}:{includeThoughts:!1}}}async function h(t){let e=t.getOutputLanguageFilePath?.();if(e)try{let n=(await y(e,"utf8")).trim();return n?["Follow the user-visible output language preference below for this side query.",n].join(`
|
|
4
4
|
|
|
5
5
|
`):void 0}catch{return}}function C(t,e){return e?t===void 0?e:typeof t=="string"?`${t}
|
|
6
6
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import{d as b}from"./chunk-XPVKH5TC.js";import{ea as P}from"./chunk-WL27X35X.js";import{b as S}from"./chunk-GZPNIYVZ.js";S();var H=P("TRUSTED_HOOKS");var C=(n=>(n.PreToolUse="PreToolUse",n.PostToolUse="PostToolUse",n.PostToolUseFailure="PostToolUseFailure",n.PostToolBatch="PostToolBatch",n.Notification="Notification",n.UserPromptSubmit="UserPromptSubmit",n.UserPromptExpansion="UserPromptExpansion",n.SessionStart="SessionStart",n.Stop="Stop",n.SubagentStart="SubagentStart",n.SubagentStop="SubagentStop",n.PreCompact="PreCompact",n.PostCompact="PostCompact",n.SessionEnd="SessionEnd",n.PermissionRequest="PermissionRequest",n.PermissionDenied="PermissionDenied",n.StopFailure="StopFailure",n.TodoCreated="TodoCreated",n.TodoCompleted="TodoCompleted",n.InstructionsLoaded="InstructionsLoaded",n))(C||{});var N=["enabled","disabled","notifications"];function M(t){let e=t.name??"";switch(t.type){case"command":return e?`${e}:${t.command}`:t.command;case"http":return e?`${e}:${t.url}`:t.url;case"function":return e?`${e}:${t.id??"function"}`:t.id??"function";case"prompt":return e?`${e}:${t.prompt}`:t.prompt;default:return e||"unknown"}}function y(t){switch(t.type){case"command":return typeof t.command=="string"&&t.command!=="";case"http":return typeof t.url=="string"&&t.url!=="";case"prompt":return typeof t.prompt=="string"&&t.prompt!=="";case"function":return typeof t.callback=="function";default:return!1}}function B(t){if(typeof t!="object"||t===null||!y(t))return;if(t.name===void 0||typeof t.name=="string")return t;let e={...t};return delete e.name,e}var I=["ask","block","deny","approve","allow"],T=1e4;function R(t){return b(t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),0,T).replace(/&(?:a(?:mp?)?|lt?|gt?)?$/,"")}var c=t=>typeof t=="string",f=t=>typeof t=="boolean";function d(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var w=[["decision",t=>I.includes(t)],["continue",f],["hookSpecificOutput",d],["reason",c],["stopReason",c],["systemMessage",c],["suppressOutput",f],["terminalSequence",c]],D=[["message",c],["updatedInput",d],["updatedPermissions",Array.isArray],["interrupt",f]];function E(t){if(!d(t))return!1;let{behavior:e,updatedInput:i}=t;return e==="deny"?!0:e==="allow"&&(i==null||d(i))}function v(t){return[["permissionDecision",e=>t==="PreToolUse"&&(e==="allow"||e==="deny"||e==="ask")],["decision",e=>t==="PermissionRequest"&&E(e)],["permissionDecisionReason",c],["additionalContext",c],["tool_input",d]]}function m(t,e,i,s){let o={...t};for(let[r,p]of e){let a=o[r];a===void 0||a!==null&&p(a)||(a!==null&&s.push(`${i}${r}`),delete o[r])}return o}var q=t=>d(t.hookSpecificOutput);function L(t,e){switch(t){case"PreToolUse":return new l(e);case"PostToolUse":return new k(e);case"PostToolUseFailure":return new x(e);case"UserPromptExpansion":return new h(e);case"PostToolBatch":return new O(e);case"Stop":case"SubagentStop":return new _(e);case"PermissionRequest":return new g(e);default:return new u(e)}}var u=class{continue;stopReason;suppressOutput;systemMessage;terminalSequence;decision;reason;hookSpecificOutput;constructor(e={}){this.continue=e.continue,this.stopReason=e.stopReason,this.suppressOutput=e.suppressOutput,this.systemMessage=e.systemMessage,this.terminalSequence=e.terminalSequence,this.decision=e.decision,this.reason=e.reason,this.hookSpecificOutput=e.hookSpecificOutput}isBlockingDecision(){return this.decision==="block"||this.decision==="deny"}shouldStopExecution(){return this.continue===!1}getEffectiveReason(){return this.stopReason||this.reason||"No reason provided"}getRawAdditionalContext(){if(this.hookSpecificOutput&&"additionalContext"in this.hookSpecificOutput){let e=this.hookSpecificOutput.additionalContext;return typeof e=="string"?e:void 0}}getAdditionalContext(){let e=this.getRawAdditionalContext();if(e!==void 0)return e.replace(/</g,"<").replace(/>/g,">")}getBlockingError(){return this.isBlockingDecision()?{blocked:!0,reason:this.getEffectiveReason()}:{blocked:!1,reason:""}}shouldClearContext(){return!1}},l=class extends u{getPermissionDecision(){if(this.hookSpecificOutput&&"permissionDecision"in this.hookSpecificOutput){let e=this.hookSpecificOutput.permissionDecision;if(e==="allow"||e==="deny"||e==="ask")return e}if(this.decision==="allow"||this.decision==="approve")return"allow";if(this.decision==="deny"||this.decision==="block")return"deny";if(this.decision==="ask")return"ask"}getPermissionDecisionReason(){if(this.hookSpecificOutput&&"permissionDecisionReason"in this.hookSpecificOutput){let e=this.hookSpecificOutput.permissionDecisionReason;if(typeof e=="string")return e}return this.reason}isDenied(){return this.getPermissionDecision()==="deny"}isAsk(){return this.getPermissionDecision()==="ask"}isAllowed(){return this.getPermissionDecision()==="allow"}},k=class extends u{decision;reason;constructor(e={}){super(e),this.decision=e.decision??"allow",this.reason=e.reason??"No reason provided",e.decision===void 0&&H.debug('PostToolUseHookOutput: No explicit decision set, defaulting to "allow"'),e.reason===void 0&&H.debug('PostToolUseHookOutput: No explicit reason set, defaulting to "No reason provided"')}},x=class extends u{getAdditionalContext(){return super.getAdditionalContext()}},h=class extends u{getAdditionalContext(){let e=this.getRawAdditionalContext();if(e!==void 0)return R(e)}},O=class extends u{shouldStopExecution(){return super.shouldStopExecution()||this.isBlockingDecision()}},_=class extends u{stopReason;constructor(e={}){super(e),this.stopReason=e.stopReason}getStopReason(){if(this.stopReason)return`Stop hook feedback:
|
|
4
|
+
${this.stopReason}`}},g=class extends u{getPermissionDecision(){if(this.hookSpecificOutput&&"decision"in this.hookSpecificOutput){let e=this.hookSpecificOutput.decision;if(typeof e=="object"&&e!==null&&!Array.isArray(e)){let{behavior:i}=e;if(i==="allow"||i==="deny")return e}}return this.isBlockingDecision()?{behavior:"deny",message:this.reason}:void 0}isPermissionDenied(){return this.getPermissionDecision()?.behavior==="deny"}getDenyMessage(){return this.getPermissionDecision()?.message}shouldInterrupt(){return this.getPermissionDecision()?.interrupt===!0}getUpdatedToolInput(){return this.getPermissionDecision()?.updatedInput}getUpdatedPermissions(){return this.getPermissionDecision()?.updatedPermissions}};function $(t,e,i){let s=U(t,e??{}).output,o=s.reason||i,r={...s,decision:"deny",reason:o};if(t==="PreToolUse"){let p=new l(s);r.hookSpecificOutput={...s.hookSpecificOutput,permissionDecision:"deny",permissionDecisionReason:p.isDenied()&&p.getPermissionDecisionReason()||o}}if(t==="PermissionRequest"){let p=new g(s).getPermissionDecision(),a=p?.behavior==="deny"?p:void 0;r.hookSpecificOutput={...s.hookSpecificOutput,decision:{...a,behavior:"deny",message:a?.message||o}}}return r}function U(t,e){let i=[],s=m(e,w,"",i);if(s.hookSpecificOutput){let o=m(s.hookSpecificOutput,v(t),"hookSpecificOutput.",i);d(o.decision)&&(o.decision=m(o.decision,D,"hookSpecificOutput.decision.",i)),s.hookSpecificOutput=o}return{output:s,...i.length>0&&{unusableField:i[0]}}}function j(t,e){let i=new Map(t.map(o=>[o.id,o])),s={created:[],completed:[]};for(let o of e){let r=i.get(o.id);r?r.status!=="completed"&&o.status==="completed"&&s.completed.push(o):s.created.push(o)}return s}export{C as a,N as b,M as c,B as d,R as e,q as f,L as g,u as h,l as i,k as j,x as k,h as l,O as m,_ as n,g as o,$ as p,U as q,j as r};
|
|
5
|
+
/**
|
|
6
|
+
* @license
|
|
7
|
+
* Copyright 2026 Matilda Team
|
|
8
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
*/
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import{a as c}from"./chunk-V6UPUMP3.js";import{m as u}from"./chunk-P24OL22U.js";import{b as m}from"./chunk-GZPNIYVZ.js";m();import{AsyncLocalStorage as k}from"node:async_hooks";var a=new k,r=new WeakMap,p={turns:"max_turn_requests",session_turns:"max_turn_requests",loop_detected:"max_turn_requests",continuations:"max_turn_requests",session_tokens:"max_tokens"},h=class{jobs=new Map;joinsJobs;wake;closed=!1;keepsFinished=!1;revision=0;task;lastResponse;stop;ended;finished;constructor(e={}){this.joinsJobs=e.joinsJobs??!0}begin(e,t,s=e){this.task||(this.task={startUuid:e,rootUuid:s,recorder:t},this.ended&&this.finish(this.ended).catch(()=>{}))}get taskStartUuid(){return this.task?.startUuid}get taskRef(){return this.task?{startUuid:this.task.startUuid,rootUuid:this.task.rootUuid}:void 0}noteResponse(e){this.lastResponse=e}noteStop(e){this.stop=e}finish(e){let t=this.task;return t?(this.finished??=this.recordOutcome(t,e),this.finished):(this.ended??=e,Promise.resolve(void 0))}async recordOutcome(e,t){let s=this.stop&&(t.outcome==="completed"||t.outcome==="error")?p[this.stop]:t.outcome,i=s==="completed"&&this.lastResponse?.finalAnswer?this.lastResponse:void 0,n=t.limitKind??(s==="max_tokens"||s==="max_turn_requests"?this.stop:void 0);return await e.recorder.recordTaskOutcome({taskStartUuid:e.startUuid,outcome:s,...n?{limitKind:n}:{},...s==="completed"?{finalAnswerUuid:i?i.recordId??i.id:null}:{}}),{outcome:s,...i&&{finalAnswerId:i.id}}}static get current(){return a.getStore()}run(e){return a.run(this,e)}static detached(e){return a.run(void 0,e)}static register(e,t,s){let i=a.getStore();e.originTask??=s?.originTask??i?.taskRef;let n=s?.status==="running"?r.get(s):void 0,o=n??(i?.joinsJobs?i:void 0);if(o){if(n&&s&&n.consume(s),e.completion==="detached"||!n&&e.status!=="running"){o.changed();return}if(r.set(e,o),o.closed){t();return}o.jobs.set(e,t),o.changed()}}static changed(e){e&&r.get(e)?.changed()}static abandoned(e){return r.get(e)?.closed===!0}static detach(e){let t=r.get(e);return!t||t.closed||!t.owns(e)||e.status!=="running"?!1:(e.completion="detached",t.consume(e),t.changed(),!0)}owns(e){return this.jobs.has(e)}consume(e){r.delete(e),this.jobs.delete(e)}get pending(){return this.jobs.size>0}get position(){return this.revision}get paused(){return[...this.jobs.keys()].some(e=>e.status==="paused")}get running(){return[...this.jobs.keys()].filter(e=>e.status==="running")}changed(){this.revision++,this.wake?.()}async wait(e,t,s){this.closed||t.aborted||e!==this.revision||await new Promise(i=>{let n,o=()=>{clearTimeout(n),t.removeEventListener("abort",o),this.wake=void 0,i()};this.wake=o,t.addEventListener("abort",o,{once:!0}),s!==void 0&&(n=setTimeout(o,s))})}keepFinishedJobs(){this.keepsFinished=!0}close(){this.closed=!0;for(let[e,t]of this.jobs)e.status==="running"?t():this.keepsFinished&&e.status!=="paused"&&this.consume(e);this.changed()}};function g(d,e){let t=s=>{let i=s.description.replace(/[\p{Cc}\s]+/gu," ").trim(),n=Math.max(1,Math.round((e-s.startTime)/6e4));return`background ${s.kind} "${i.length>80?`${i.slice(0,77)}...`:i}" (running ${n} min)`};return{displayText:`Still waiting on ${d.map(t).join(", ")}.`,modelText:d.map(s=>["<task-notification>",`<task-id>${c(s.id)}</task-id>`,`<kind>${s.kind}</kind>`,"<status>running</status>",`<summary>${c(`The ${t(s)} is still running, and this request cannot finish until it does. If the request needs its result, keep waiting. If it should keep running after the request, such as a server or watcher, call ${u.TASK_DETACH}. If it is no longer needed, call ${u.TASK_STOP}.`)}</summary>`,"</task-notification>"].join(`
|
|
4
|
+
`)).join(`
|
|
5
|
+
`)}}export{h as a,g as b};
|
|
6
|
+
/**
|
|
7
|
+
* @license
|
|
8
|
+
* Copyright 2026 Matilda
|
|
9
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
*/
|
|
@@ -0,0 +1,121 @@
|
|
|
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 Jn,d as Xn,n as at,o as en,p as no,q as xe,s as lt}from"./chunk-FPGKJJJY.js";import{Aa as Yt,Ca as Jt,I as de,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 Xt,rb as Qt,tb as Zt,ya as qt}from"./chunk-42UM7T4B.js";import{P as Ze,Q as eo,V as to,d as Qn,e as Zn,ea as U,f as B,g as we,k as Qe,r as ue,w as ce}from"./chunk-WL27X35X.js";import{h as j,i as et,k as Wt,m as Ht}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 oo(t){return/^[0-9A-Fa-f]$/.test(t)}function Y(t){return t>="0"&&t<="9"}function ro(t){return t>=" "}function Oe(t){return`,:[]/{}()
|
|
4
|
+
+`.includes(t)}function tn(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"}function nn(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"||t>="0"&&t<="9"}var on=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,rn=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function sn(t){return`,[]/{}
|
|
5
|
+
+`.includes(t)}function an(t){return Ie(t)||Zr.test(t)}var Zr=/^[[{\w-]$/;function io(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 so(t,e){let n=t.charCodeAt(e);return n===32||n===9||n===13}function ao(t,e){let n=t.charCodeAt(e);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function Ie(t){return ln(t)||ut(t)}function ln(t){return t==='"'||t==="\u201C"||t==="\u201D"}function un(t){return t==='"'}function ut(t){return t==="'"||t==="\u2018"||t==="\u2019"||t==="`"||t==="\xB4"}function cn(t){return t==="'"}function pe(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 lo(t,e,n){return t.substring(0,e)+t.substring(e+n)}function uo(t){return/[,\n][ \t\r]*$/.test(t)}var ei={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},ti={'"':'"',"\\":"\\","/":"/",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(),an(t[e])&&uo(n)?(r||(n=F(n,",")),h()):r&&(n=pe(n,","));t[e]==="}"||t[e]==="]";)e++,s();if(e>=t.length)return n;Je();function i(){s();let T=g()||y()||E()||M()||b()||K(!1)||Q();return s(),T}function s(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,A=e,R=a(T);do R=l(),R&&(R=a(T));while(R);return e>A}function a(T){let A=T?q:so,R="";for(;;)if(A(t,e))R+=t[e],e++;else if(ao(t,e))R+=" ",e++;else break;return R.length>0?(n+=R,!0):!1}function l(){if(t[e]==="/"&&t[e+1]==="*"){for(;e<t.length&&!ni(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(tn(t[e]))for(;e<t.length&&nn(t[e]);)e++;return s(),!0}return!1}function c(T){a(!0);for(let A of T){let R=e+A.length;if(t.slice(e,R)===A)return e=R,!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(),!(E()||K(!0))){t[e]==="}"||t[e]==="{"||t[e]==="]"||t[e]==="["||t[e]===void 0?n=pe(n,","):N();break}s();let Xe=f(":"),te=e>=t.length;Xe||(an(t[e])||te?n=F(n,":"):_e()),i()||(Xe||te?n+="null":_e())}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=pe(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=pe(n,",")),n=`[
|
|
9
|
+
${n}
|
|
10
|
+
]`}function E(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,R=t[e]==="\\";if(R&&(e++,R=!0),Ie(t[e])){let Xe=un(t[e])?un:cn(t[e])?cn:ut(t[e])?ut:ln,te=e,ke=n.length,k='"';for(e++;;){if(e>=t.length){let I=P(e-1);return!T&&Oe(t.charAt(I))?(e=te,n=n.substring(0,ke),E(!0)):(k=F(k,'"'),n+=k,!0)}if(e===A)return k=F(k,'"'),n+=k,!0;if(Xe(t[e])){let I=e,zt=k.length;if(k+='"',e++,n+=k,s(!1),T||e>=t.length||Oe(t[e])||Ie(t[e])||Y(t[e]))return S(),!0;let W=P(I-1),Yn=t.charAt(W);if(Yn===",")return e=te,n=n.substring(0,ke),E(!1,W);if(Oe(Yn))return e=te,n=n.substring(0,ke),E(!0);n=n.substring(0,ke),e=I+1,k=`${k.substring(0,zt)}\\${k.substring(zt)}`}else if(T&&sn(t[e])){if(t[e-1]===":"&&on.test(t.substring(te+1,e+2)))for(;e<t.length&&rn.test(t[e]);)k+=t[e],e++;return k=F(k,'"'),n+=k,S(),!0}else if(t[e]==="\\"){let I=t.charAt(e+1);if(ti[I]!==void 0)k+=t.slice(e,e+2),e+=2;else if(I==="u"){let W=2;for(;W<6&&oo(t[e+W]);)W++;W===6?(k+=t.slice(e,e+6),e+=6):e+W>=t.length?e=t.length:Qr()}else k+=I,e+=2}else{let I=t.charAt(e);I==='"'&&t[e-1]!=="\\"?(k+=`\\${I}`,e++):io(I)?(k+=ei[I],e++):(ro(I)||Z(I),k+=I,e++)}R&&m()}}return!1}function S(){let T=!1;for(s();t[e]==="+";){T=!0,e++,s(),n=pe(n,'"',!0);let A=n.length;E()?n=lo(n,A,1):n=F(n,'"')}return T}function M(){let T=e;if(t[e]==="-"){if(e++,le())return O(T),!0;if(!Y(t[e]))return e=T,!1}for(;Y(t[e]);)e++;if(t[e]==="."){if(e++,le())return O(T),!0;if(!Y(t[e]))return e=T,!1;for(;Y(t[e]);)e++}if(t[e]==="e"||t[e]==="E"){if(e++,(t[e]==="-"||t[e]==="+")&&e++,le())return O(T),!0;if(!Y(t[e]))return e=T,!1;for(;Y(t[e]);)e++}if(!le())return e=T,!1;if(e>T){let A=t.slice(T,e),R=/^0\d/.test(A);return n+=R?`"${A}"`:A,!0}return!1}function b(){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 K(T){let A=e;if(tn(t[e])){for(;e<t.length&&nn(t[e]);)e++;let R=e;for(;q(t,R);)R++;if(t[R]==="(")return e=R+1,i(),t[e]===")"&&(e++,t[e]===";"&&e++),!0}for(;e<t.length&&!sn(t[e])&&!Ie(t[e])&&(!T||t[e]!==":");)e++;if(t[e-1]===":"&&on.test(t.substring(A,e+2)))for(;e<t.length&&rn.test(t[e]);)e++;if(e>A){for(;q(t,e-1)&&e>0;)e--;let R=t.slice(A,e);return n+=R==="undefined"?"null":JSON.stringify(R),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 le(){return e>=t.length||Oe(t[e])||q(t,e)}function O(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 N(){throw new V("Object key expected",e)}function _e(){throw new V("Colon expected",e)}function Qr(){let T=t.slice(e,e+6);throw new V(`Invalid unicode character "${T}"`,e)}}function ni(t,e){return t[e]==="*"&&t[e+1]==="/"}var oi=U("JSON_PARSE");function ri(t,e={}){if(!t||typeof t!="string")return e;try{return JSON.parse(t)}catch(n){let o=ii(t);if(o!==void 0)return o;try{let r=ct(t);return JSON.parse(r)}catch(r){let i=fo(t);if(i&&i!==t)try{return JSON.parse(ct(i))}catch{}return oi.error("Failed to parse JSON even with jsonrepair:",{originalError:n,repairError:r,jsonString:t}),e}}}var co=Symbol("tool-args-parse-failed");function po(t){if(t==null)return{};let e=typeof t=="string"?t.trim():"";if(!e)return{};let n=ri(e,co);return n===co?null:n&&typeof n=="object"&&!Array.isArray(n)?n:null}function ii(t){let e=fo(t);if(e&&e!==t.trim())try{return JSON.parse(e)}catch{return}}function fo(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 si=/[A-Za-z\u00C0-\u024F]/g;function ai(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 dn(t){let e=t.codePointAt(0);return e!==void 0&&ai(e)}function li(t){let e=t.match(si)?.length??0;if(e<24)return!1;let n=0;for(let o of t)dn(o)&&n++;return n===0||e>=n*8}function dt(t){if(!t||!li(t))return t;let e="",n=0,o=[...t];for(;n<o.length;){if(!dn(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&&dn(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 fe=U("TAGGED_THINKING_PARSER"),De=["<think>","<thinking>"],Ne=["</think>","</thinking>"],ui=Math.max(...De.map(t=>t.length),...Ne.map(t=>t.length));function Pe(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>ui?!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 fn(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 go(t){let e=[];for(let n of t){if(n.thought===!0||typeof n.text!="string"){e.push(n);continue}let o=dt(fn(n.text));(o.length>0||/^\s+$/.test(n.text))&&e.push({text:o.length>0?o:n.text})}return e}var pn=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,De);if(a){fe.debug(`taggedThinking: detected open tag "${a}" at offset ${s}`),Pe(r,i,this.mode),i="",this.mode="thought",s+=a.length;continue}let l=ft(o,s,Ne);if(l){fe.debug(`taggedThinking: dropping orphan close tag "${l}" at offset ${s}`),Pe(r,i,this.mode),i="",s+=l.length;continue}if(!n&&(pt(o,s,De)||pt(o,s,Ne)))break}else{let a=ft(o,s,Ne);if(a){fe.debug(`taggedThinking: detected close tag "${a}" at offset ${s}`),Pe(r,i,this.mode),i="",this.mode="text",s+=a.length;continue}let l=ft(o,s,De);if(l){s+=l.length;continue}if(!n&&(pt(o,s,Ne)||pt(o,s,De)))break}i+=this.buffer[s],s+=1}return s<this.buffer.length?(Pe(r,i,this.mode),this.buffer=this.buffer.slice(s),fe.debug(`taggedThinking: emitted ${r.length} part(s), buffered ${this.buffer.length} char(s)`),go(r)):(this.buffer="",this.mode==="thought"&&i&&fe.warn(`taggedThinking: flushing ${i.length} chars of unclosed thought on stream end`),Pe(r,i,this.mode),fe.debug(`taggedThinking: emitted ${r.length} part(s), flush complete`),go(r))}};function mo(t){return new pn().parse(t,!0)}p();function ho(t,e="auto"){return e==="openapi_30"?ci(t):t}function ci(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 ge(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 di(t){return t.total&&t.total>0?Math.max(t.total,(t.prompt||0)+gt(t)):(t.prompt||0)+gt(t)}function pi(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=U("CONVERTER"),Ro="(attached media from previous tool call)";function bo(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 fi=64,Co=1024;function yo(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>=Co&&e.emittedLength>n?e.emittedLength:n;if(t.length>r){let i=t.slice(r);return e.emittedText=t,e.emittedLength=t.length,e.cumulativeMode=!0,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>=fi?(e.cumulativeMode=!0,z.debug(`normalizeStreamingTextDelta: entered cumulative mode (exact repeat, ${t.length}b)`),""):(e.emittedLength+=t.length,t):(e.emittedText.length<Co&&(e.emittedText+=t),e.emittedLength+=t.length,t)}function vo(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 gi(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=vo(i.parameters)),s&&(s=ho(s,e)),n.push({type:"function",function:{name:i.name,description:i.description,parameters:s}})}}}return n}function mi(t,e,n={cleanOrphanToolCalls:!0}){let o=[];return Ci(t,o),yi(t.contents,o,e),o=Ao(o),n.cleanOrphanToolCalls&&(o=ki(o),o=Ao(o)),o}function hi(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=_i(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 Ci(t,e){if(!t.config?.systemInstruction)return;let n=_o(t.config.systemInstruction);n&&e.push({role:"system",content:n})}function yi(t,e,n){if(Array.isArray(t))for(let o of t)To(o,e,n);else t&&To(t,e,n)}function To(t,e,n){if(typeof t=="string"){e.push({role:"user",content:t});return}if(!Ai(t))return;let o=t.parts||[],r=t.role==="model"?"assistant":"user",i=[],s=[],a=[],l=0,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=Mo(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=Ei(d.functionResponse,n);if(g){if(n.splitToolMedia&&Array.isArray(g.content)){let y=[],h=[];for(let E of g.content)E&&(E.type==="image_url"||E.type==="input_audio"||E.type==="video_url"||E.type==="file")?y.push(E):E&&E.type==="text"&&h.push(E);if(y.length>0){let E=h.map(S=>S.text).join(`
|
|
11
|
+
`);g.content=E||"[media attached in following user message]",f.push(...y)}}e.push(g)}}}if(f.length>0&&e.push({role:"user",content:[{type:"text",text:Ro},...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 Ti(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 Ei(t,e){let n=Ti(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=Mo(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 Mo(t,e){let{modalities:n}=e;if(t.inlineData?.mimeType&&t.inlineData?.data){let o=t.inlineData.mimeType,r=Eo(o),i=t.inlineData.displayName||o;if(r==="image")return n.image?{type:"image_url",image_url:{url:`data:${o};base64,${t.inlineData.data}`}}:re("image",i,e);if(o==="application/pdf")return n.pdf?{type:"file",file:{filename:t.inlineData.displayName||"document.pdf",file_data:`data:${o};base64,${t.inlineData.data}`}}:re("pdf",i,e);if(r==="audio"){if(!n.audio)return re("audio",i,e);let s=Si(o);if(s)return{type:"input_audio",input_audio:{data:`data:${o};base64,${t.inlineData.data}`,format:s}}}return r==="video"?n.video?{type:"video_url",video_url:{url:`data:${o};base64,${t.inlineData.data}`}}:re("video",i,e):{type:"text",text:`Unsupported inline media type: ${o} (${i}).`}}if(t.fileData?.mimeType&&t.fileData?.fileUri){let o=t.fileData.displayName||"file",r=t.fileData.fileUri,i=t.fileData.mimeType,s=Eo(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 Eo(t){return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function Si(t){return t.includes("wav")?"wav":t.includes("mp3")||t.includes("mpeg")?"mp3":null}function Ai(t){return typeof t=="object"&&t!==null&&"role"in t&&"parts"in t&&Array.isArray(t.parts)}function _o(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>_o(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 mo(t);if(!t)return[];let o=dt(fn(t));return o?[{text:o}]:[]}function Ri(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=po(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:ko(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=bo(t.usage,{estimatedReasoningTokens:ge(i.length),estimatedContentTokens:ge(s.length)})}return o}function bi(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=yo(u,e.reasoningDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});c&&i.push({text:c,thought:!0})}}if(typeof n.delta?.content=="string"){let u=yo(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=ko(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=bo(t.usage,Mi(e))),o}function vi(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 Mi(t){return{estimatedReasoningTokens:ge(t.reasoningDeltaState?.emittedLength??0),estimatedContentTokens:ge(t.textDeltaState?.emittedLength??0)}}function ko(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 _i(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 gn(t){return t.role==="assistant"&&"tool_calls"in t&&Array.isArray(t.tool_calls)&&t.tool_calls.length>0}function So(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===Ro}function ki(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(gn(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(So(h)){C&&m.push(y);continue}if(!(h.role==="assistant"&&!gn(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(gn(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>"}`):So(l)?z.debug("cleanOrphanedToolCalls: dropping orphaned split tool media message"):e.push(l)}return e}function Ao(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:vo,convertGeminiToolsToOpenAI:gi,convertGeminiRequestToOpenAI:mi,convertGeminiResponseToOpenAI:hi,convertOpenAIResponseToGemini:Ri,convertOpenAIChunkToGemini:bi,flushOpenAIStreamToGemini:vi};p();p();var Hl=new Set(["ECONNRESET","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET","ConnectionClosed","ConnectionReset","ConnectionTimedOut"]),wo=new Set(["EAI_AGAIN","ECONNREFUSED","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","UND_ERR_CONNECT_TIMEOUT","ConnectionRefused","FailedToOpenSocket","HostUnreachable","NetworkUnreachable"]);p();var yt="NOT_A_PROXY",wi=/^(?:UND_ERR_SOCKET|HPE_.*|ERR_SSL_(?:WRONG_VERSION_NUMBER|PACKET_LENGTH_TOO_LONG|HTTP_REQUEST|UNKNOWN_PROTOCOL))$/,xi={"http:":80,"https:":443},Oi=/^(?:(?:.+\.)?localhost|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|::1)$/;function Ii(t){let e=t.toLowerCase().replace(/^\*?\./,"");if(e==="*")return{host:"*",wildcard:!0};let n=e.match(/^\[(.+)\](?::(\d+))?$/)??e.match(/^([^:]+):(\d+)$/),o=n?.[1]??e;return n?.[2]?{host:o,port:Number(n[2]),wildcard:!1}:{host:o,wildcard:!1}}function Pi(t){return(t??"").split(/[,\s]+/).filter(Boolean)}function Jl(t){return Pi(t).map(Ii)}function Di(t,e){let n=typeof t=="string"?new URL(t):t,o=n.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(Oi.test(o))return!0;let r=n.port?Number(n.port):xi[n.protocol];return e.some(i=>i.wildcard||(i.port===void 0||i.port===r)&&(o===i.host||o.endsWith(`.${i.host}`)))}function Xl(t){let e=t.connect.bind(t);return t.connect=async n=>{try{return await e(n)}catch(o){let{code:r}=o;throw typeof r=="string"&&wi.test(r)?Object.assign(new Error("The address did not answer as a proxy."),{code:yt}):o}},t}var Ct;function Ql(t,e=[]){Ct=t?{host:new URL(t).host,noProxy:e}:void 0}function xo(t){return Ct&&URL.canParse(t)&&!Di(t,Ct.noProxy)?Ct.host:void 0}var Le="MATILDA_BASE_URL",Ni=new Set(["localhost","127.0.0.1","[::1]"]);function ie(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}var Po=new Set;function Do(t){let e=ie(t||G());try{let{origin:n,pathname:o}=new URL(e);return`${n}${o.replace(/\/+$/,"")}`}catch{return e}}function Li(t){Po.add(Do(t))}function iu(t,e=(n,o)=>globalThis.fetch(n,o)){return async(n,o)=>{let r=await e(n,o);return Li(t),r}}function su(t){return Po.has(Do(t))}function au(t){try{let{host:e}=new URL(ie(t));return e===new URL(xe).host?"Matilda":e}catch{return t}}function No(t){let e;try{e=new URL(ie(t))}catch{return}if(!(!(e.protocol==="https:"||e.protocol==="http:"&&Ni.has(e.hostname))||e.username||e.password||e.search||e.hash))return`${e.origin}${e.pathname.replace(/\/+$/,"")}/api/v1/code`}function Lo(t=process.env){let e=t[Le]?.trim();return e?No(e):void 0}function Ue(t,e=process.env){let n=Lo(e);if(!n||!t)return!1;try{return new URL(t).origin===new URL(n).origin}catch{return!1}}function mn(t){return t.apiKeyEnvKey===at||Ui(t.baseUrl)}function Ui(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")||Ue(e)}var Tt="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.",Fi=new Map([["UNABLE_TO_GET_ISSUER_CERT_LOCALLY",Tt],["UNABLE_TO_VERIFY_LEAF_SIGNATURE",Tt],["SELF_SIGNED_CERT_IN_CHAIN",Tt],["DEPTH_ZERO_SELF_SIGNED_CERT",Tt],["CERT_HAS_EXPIRED","its certificate has expired."],["ERR_TLS_CERT_ALTNAME_INVALID","its certificate is for another name. Check the address."]]),Oo="its name does not resolve. Check the address and your network.",Io="it refused the connection. Check the address, and that it is running.",Gi=new Map([["ENOTFOUND",Oo],["EAI_AGAIN",Oo],["ECONNREFUSED",Io],["ConnectionRefused",Io],["UND_ERR_CONNECT_TIMEOUT","it did not answer. Check your network, VPN and proxy."]]),Uo=5,Ki=/^Proxy response \((\d+)\)/,Fo=t=>t?`the proxy at ${t}`:"your proxy";function $i(t,e){let n=Fo(e);if(t===407)return`${n} did not accept a user name and password (407). Set them in its address, as http://user:password@host:port.`;let o="add it to NO_PROXY if it is on your own network";return t===403?`${n} blocks it (403). Ask your network team to allow it, or ${o}.`:`${n} could not connect to it (${t}). Check the address, or ${o}.`}function Fe(t,e){if(B(t)!==void 0)return;let n=xo(e),o=t;for(let r=0;r<=Uo;r++){if(typeof o!="object"||o===null)return;let i=o,s=i.transportCode??i.code,{cause:a,message:l}=i,u=typeof l=="string"?Ki.exec(l):null;if(u)return new ue(`Could not reach ${ie(e)}: ${$i(Number(u[1]),n)}`,"UND_ERR_ABORTED");if(s===yt)return new ue(`Could not reach ${ie(e)}: ${Fo(n)} did not answer as a proxy. Check its address, and whether it starts with http:// or https://.`,yt);if(typeof s=="string"){let c=ie(e),f=Fi.get(s);if(f)return new ue(`Could not connect securely to ${c}: ${f}`,s);if(wo.has(s))return new ue(`Could not reach ${n?`the proxy at ${n}, for ${c}`:c}: ${Gi.get(s)??"the network cannot reach it. Check your network, VPN and proxy."}`,s)}o=a}}function hn(t,e){let n=t;for(let o=0;o<=Uo;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 ue(`${ie(e)} did not answer in time. Check your network, VPN and proxy.`,"ETIMEDOUT");n=s}}function Bi(t=process.env){let e=t[Le]?.trim();if(e&&!No(e))throw new Qe(`${Le} must be the HTTPS address of your Matilda deployment, such as https://matilda.example.com. HTTP is accepted only for localhost.`)}function G(t=process.env){return Bi(t),Lo(t)??xe}p();p();p();Ht();var ji=new Set(["service.version","service.instance.id","session.id"]);function se(t,e){et.warn(t),e?.push(t)}function Go(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){se(`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{se(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES key "${s}", using raw key`,e),l=s}let u;try{u=decodeURIComponent(a)}catch{se(`Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${l}", using raw value`,e),u=a}n[l]=u}return n}function Cn(t,e,n){for(let o of ji)o in t&&(se(`${e} cannot override reserved key "${o}"; ignoring`,n),delete t[o]);return t}function Ko(t,e){if(t==null)return{};if(typeof t!="object"||Array.isArray(t))return se("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){se("settings.telemetry.resourceAttributes has an empty or whitespace-only key; ignoring",e);continue}typeof r=="string"?n[i]=r:se(`settings.telemetry.resourceAttributes value for "${i}" must be a string (got ${typeof r}); ignoring`,e)}return n}function Ge(t){if(t!==void 0)return t==="true"||t==="1"}async function Vi(t){let e=t.argv??{},n=t.env??{},o=t.settings??{},r=e.telemetry??Ge(n.MATILDA_TELEMETRY_ENABLED)??o.enabled,i=e.telemetryOtlpEndpoint??n.MATILDA_TELEMETRY_OTLP_ENDPOINT??n.OTEL_EXPORTER_OTLP_ENDPOINT??o.otlpEndpoint,s=e.telemetryOtlpProtocol??n.MATILDA_TELEMETRY_OTLP_PROTOCOL??o.otlpProtocol,a=["grpc","http"].find(b=>b===s);if(s!==void 0&&a===void 0)throw new Qe(`Invalid telemetry OTLP protocol: ${String(s)}. Valid values are: grpc, http`);let l=e.telemetryLogPrompts??Ge(n.MATILDA_TELEMETRY_LOG_PROMPTS)??o.logPrompts,u=Ge(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=Cn(Go(n.OTEL_RESOURCE_ATTRIBUTES,C),"OTEL_RESOURCE_ATTRIBUTES",C),y=Cn(Ko(o.resourceAttributes,C),"settings.telemetry.resourceAttributes",C),h={...g,...y},E=n.OTEL_SERVICE_NAME?.trim();E&&(h["service.name"]=E);let S=Object.keys(h).length?h:void 0,M=Ge(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:S,metrics:{includeSessionId:M},resourceAttributeWarnings:C.length?C:void 0}}p();Ht();import*as X from"node:fs";import*as Vt from"node:path";p();p();p();p();Ht();p();import{AsyncLocalStorage as zi}from"node:async_hooks";var $o=new zi;p();import*as $ from"node:path";import{promises as At}from"node:fs";p();p();import Wi from"crypto";var St=new Uint8Array(256),Et=St.length;function yn(){return Et>St.length-16&&(Wi.randomFillSync(St),Et=0),St.slice(Et,Et+=16)}p();var x=[];for(let t=0;t<256;++t)x.push((t+256).toString(16).slice(1));function Bo(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 Hi from"crypto";var Tn={randomUUID:Hi.randomUUID};function qi(t,e,n){if(Tn.randomUUID&&!e&&!t)return Tn.randomUUID();t=t||{};let o=t.random||(t.rng||yn)();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 Bo(o)}var En=qi;import*as J from"os";var Rt=U("OPENAI_LOGGER"),Yi="########",Ji=/^[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 Xi(t,e){let n=e||process.cwd();if(!t)return $.join(n,"logs","openai");let o=t;return t==="~"||t.startsWith("~/")?o=$.join(J.homedir(),t.slice(1)):$.isAbsolute(t)||(o=$.resolve(n,t)),$.normalize(o)}function jo(t){return t&&t.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function Qi(t){let e=t.split("#");if(e.length!==3)return;let[,n,o]=e;if(!(!n||!o||!/^\d+$/.test(o)))return`subagent-${n}`}function Zi(t){if(t)return de(t)?jo(t):jo(Qi(t))}function es(t){if(!t)return;let e=t.indexOf(Yi);if(e>0)return t.slice(0,e);if(Ji.test(t))return t;let n=t.split("#");if(n.length>=3&&n[0])return n[0]}function ts(t){let e=t?.trim(),n=es(e);return!e&&!n?null:{...e?{promptId:e}:{},...n?{sessionId:n}:{}}}var Ke=class{logDir;initialized=!1;constructor(e,n){this.logDir=Xi(e,n)}async initialize(){if(!this.initialized)try{await At.mkdir(this.logDir,{recursive:!0}),this.initialized=!0}catch(e){throw Rt.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=En().slice(0,8),a=Zi(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:ts(r),system:{hostname:J.hostname(),platform:J.platform(),release:J.release(),nodeVersion:process.version}};try{return await At.writeFile(u,JSON.stringify(c,(f,d)=>typeof d=="string"?to(d):d,2),"utf-8"),u}catch(f){throw Rt.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 At.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"?[]:(Rt.error("Failed to read OpenAI log directory:",n),[])}}async readLogFile(e){try{let n=await At.readFile(e,"utf-8");return JSON.parse(n)}catch(n){throw Rt.error(`Failed to read log file ${e}:`,n),new Error(`Failed to read log file: ${n}`)}}},$u=new Ke;p();var ns="MATILDA_CODE_PROFILE_RUNTIME";function Vo(t=process.env){return t[ns]==="1"}var An=class{enabled;now;startedAt;requestIndex=0;openAIWireRequestIndex=0;requests=[];openaiWireRequests=[];tools=zo();constructor(e={}){this.enabled=e.enabled??Vo(),this.now=e.now??(()=>new Date().toISOString()),this.startedAt=this.now()}reset(e={}){this.enabled=e.enabled??Vo(),this.startedAt=this.now(),this.requestIndex=0,this.openAIWireRequestIndex=0,this.requests=[],this.openaiWireRequests=[],this.tools=zo()}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(ls(e)),contents:Wo(e.contents),systemInstructionBytes:is(e.config?.systemInstruction),generationConfigBytes:D(Ho(e.config)),tools:as(e.config?.tools)}))}recordOpenAIWireRequest(e){this.enabled&&(this.openAIWireRequestIndex+=1,this.openaiWireRequests.push({index:this.openAIWireRequestIndex,timestamp:this.now(),...os(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=rs();return this.tools.byName[e]=o,o}},Rn=new An;function os(t){let e=me(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],r={};for(let i of n){let s=me(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 zo(){return{toolUseCount:0,toolResultCount:0,toolResultErrorCount:0,totalToolUseArgBytes:0,maxToolUseArgBytes:0,totalToolResultBytes:0,maxToolResultBytes:0,byName:Object.create(null)}}function rs(){return{uses:0,argBytes:0,maxArgBytes:0,results:0,errors:0,resultBytes:0,maxResultBytes:0}}function Wo(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=me(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:[];ss(s,e)}return e}function is(t){return Wo(t).textBytes}function ss(t,e){for(let n of t){if(e.partCount+=1,typeof n=="string"){e.textBytes+=D(n);continue}let o=me(n);typeof o.text=="string"&&(e.textBytes+=D(o.text));let r=Sn(o.functionCall);r&&(e.functionCallCount+=1,e.functionCallArgBytes+=D(r.args));let i=Sn(o.functionResponse);i&&(e.functionResponseCount+=1,e.functionResponseBytes+=D(i.response)+D(i.parts));let s=Sn(o.inlineData);s&&(e.inlineDataCount+=1,e.inlineDataBytes+=D(s.data)),o.fileData&&(e.fileDataCount+=1)}}function as(t){let e=Array.isArray(t)?t:[],n=0;for(let o of e){let r=me(o),i=Array.isArray(r.functionDeclarations)?r.functionDeclarations:[];n+=i.length}return{count:e.length,functionDeclarationCount:n,schemaBytes:D(e)}}function ls(t){return{model:t.model,contents:t.contents,config:Ho(t.config)}}function Ho(t){if(!t)return;let e=me(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(us(t),"utf8")}function us(t){try{return JSON.stringify(t)??""}catch{return"[unserializable]"}}function me(t){return typeof t=="object"&&t!==null?t:{}}function Sn(t){return typeof t=="object"&&t!==null?t:null}p();function qo(t){let e=t.candidates?.[0]?.content?.parts;return!e||e.length===0?!1:e.some(cs)}function cs(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 Yo(){let t=Jn.getStore();return{attempt:t?.attempt??1,requestSetupMs:t?.requestSetupMs,retryTotalDelayMs:t?.retryTotalDelayMs}}var ae=U("LOGGING_CONTENT_GENERATOR"),ds=4096,Jo="...[truncated]",ps=ds-Jo.length,$e=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);qt(this.config,new Xt(n,o,r,H.getStore()))}_logApiResponse(e,n,o,r,i,s){Jt(this.config,new Zt(e,o,n,r,this.generatorAuthType,i,s,H.getStore()))}_logApiError(e,n,o,r,i){let s=Zn(o),a=we(o),l=o?.requestID||o?.request_id||e,u=B(o);Yt(this.config,new Qt({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){ae.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){ae.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=Yo(),r=rt(e.model,n);try{r.setAttribute("llm_request.stream",!1)}catch{}let i=Wt.setSpan(j.active(),r),s=Date.now(),a=de(n),l=this.startCaptureSession();try{Rn.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){ae.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:we(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){ae.warn("Failed to log OpenAI interaction:",d)}}),u}}async generateContentStream(e,n){let o=Yo(),r=rt(e.model,n);try{r.setAttribute("llm_request.stream",!0)}catch{}let i=Wt.setSpan(j.active(),r),s=Date.now(),a=de(n),l=this.startCaptureSession(),u;try{Rn.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:we(f),errorStatusCode:B(f),subagentName:H.getStore()||void 0,...o});try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,f,n)}catch(C){ae.warn("Failed to log OpenAI interaction:",C)}throw f}let c;if(this.openaiLogger)try{c=await l.resolve(e)}catch(f){ae.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():$o.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=de(o),f=!c||!!this.openaiLogger,d=[],m="",C="",g,y=!1,h,E=!1,S,M=H.getStore(),b,_=!1,K=O=>a?j.with(a,O):O(),Q=5*6e4,P,le=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 N of e){!m&&N.responseId&&(m=N.responseId),!C&&N.modelVersion&&(C=N.modelVersion),f&&d.push(N),N.usageMetadata&&(g=N.usageMetadata);let _e=N.candidates?.[0];_e?.finishReason&&(h=_e.finishReason),N.functionCalls?.length&&(E=!0),b===void 0&&qo(N)&&(b=Date.now()-n),le?.(),yield N,P!==void 0&&(clearTimeout(P),P=void 0)}P!==void 0&&(clearTimeout(P),P=void 0);let O=Date.now()-n,Z=f?this.consolidateGeminiResponsesForLogging(d):void 0,Je=c?void 0:this.extractResponseText(Z),ee=!h&&!E?new Error("Model stream ended without a finish reason"):void 0;ee&&(y=!0,S=ee),_||(ee?(K(()=>this.safelyLogApiError(m,O,ee,this.getClientVisibleModelId(r,C),o)),await K(()=>this.safelyLogOpenAIInteraction(i,Z,ee,o))):(K(()=>this.safelyLogApiResponse(m,O,this.getClientVisibleModelId(r,C),o,g,Je)),!c&&s&&ot(this.config,s,Je),await K(()=>this.safelyLogOpenAIInteraction(i,Z,void 0,o))))}catch(O){if(y=!0,S=O,!_){let Z=Date.now()-n;K(()=>this.safelyLogApiError(m,Z,O,this.getClientVisibleModelId(r,C),o)),await K(()=>this.safelyLogOpenAIInteraction(i,void 0,O,o))}throw O}finally{if(P!==void 0&&clearTimeout(P),s&&!_){let O=l?.aborted??!1;oe(s,{success:!y,inputTokens:g?.promptTokenCount,outputTokens:g?.candidatesTokenCount,cachedInputTokens:g?.cachedContentTokenCount,ttftMs:b,durationMs:Date.now()-n,error:y?O?st:it:void 0,responseId:m||void 0,finishReason:h,thoughtsTokenCount:g?.thoughtsTokenCount,subagentName:M||void 0,errorType:S?we(S):void 0,errorStatusCode:S?B(S):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){ae.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=ps-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}${Jo}`: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 bn="x-matilda-organization-id",fs=/^[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 hc(t){if(t!==void 0){if(typeof t!="string"||t.length!==36||!fs.test(t))throw new Error("--organization-id must be a single UUID.");return t.toLowerCase()}}function vn(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 gs(t){let e=vn(t.baseUrl);return!!e&&e.pathname.replace(/\/$/,"")==="/api/v1/code"&&t.authType==="openai"}function Mn(t,e,n){if(!(e===void 0&&n===void 0)&&!gs(t))throw new Error("Organization selection and credit spending require the first-party Matilda Core Code endpoint.")}function Xo(t){for(let e of Object.keys(t??{})){let n=e.toLowerCase();if(n===bn)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 Cc(t,e,n,o,r){Mn(n,o,r);let i=vn(n.baseUrl),s=vn(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(bn);if(a!==null&&a!==o)throw new Error("The request organization conflicts with --organization-id.");o!==void 0&&e.set(bn,o)}p();function Qo(t){switch(t){case"openai":return"OPENAI_API_KEY";default:return"API_KEY"}}function Zo(t){switch(t){case"openai":return"OPENAI_MODEL";default:return"MODEL"}}var Ce=class extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}},bt=class extends Ce{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.`))}},vt=class extends Ce{name="StrictMissingModelIdError";code="STRICT_MISSING_MODEL_ID";constructor(e){super(`Missing model id for strict modelProviders resolution (authType: ${e}).`)}},Mt=class extends Ce{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}'.`)}},_t=class extends Ce{name="MissingModelError";code="MISSING_MODEL";constructor(e){super(`Missing model for ${e.authType} auth. Set the environment variable '${e.envKey}'.`)}};p();import On from"node:process";p();function Ac(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 kt(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 ms=[[/^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"]]],er=[[/^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 hs(t,e="input"){let n=kt(t),o=e==="output"?er:ms;for(let[r,i]of o)if(r.test(n))return i}function Rc(t){let e=kt(t);return er.some(([n])=>n.test(e))}function Cs(t,e="input"){return hs(t,e)}function wt(t,e="input"){return Cs(t,e)??(e==="output"?32e3:131072)}p();p();var tr={image:!0,pdf:!0,audio:!0,video:!0},ys=[[/^gemini-3/,tr],[/^gemini-/,tr],[/^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 xt(t){let e=kt(t);for(let[n,o]of ys)if(n.test(e))return{...o};return{}}p();function nr(t,e,n={kind:"default"}){for(let o of t)if(or(o.value))return{value:o.value,source:o.source};return{value:e,source:n}}function _n(t){for(let e of t)if(or(e.value))return{value:e.value,source:e.source}}function or(t){return!(t==null||typeof t=="string"&&t.trim()==="")}function Ot(t){return{kind:"cli",detail:t}}function Ts(t){return{kind:"env",envKey:t}}function Be(t){return{kind:"settings",settingsPath:t}}function ye(t,e,n){return{kind:"modelProviders",authType:t,modelId:e,detail:n}}function kn(t){return{kind:"default",detail:t}}function It(t){return{kind:"computed",detail:t}}function Pt(t,e,n){let o=t[e];return{value:o!==void 0?n?n(o):o:void 0,source:Ts(e)}}function L(t,e){return{value:t,source:e}}p();var je=["samplingParams","timeout","maxRetries","retryErrorCodes","enableCacheControl","schemaCompliance","reasoning","contextWindowSize","customHeaders","extra_body","modalities","splitToolMedia","openAIRequestProfile"],rr=["model","apiKey","apiKeyEnvKey","baseUrl"],wn=[...rr,...je],ir={openai:{apiKey:["OPENAI_API_KEY"],baseUrl:["OPENAI_BASE_URL"],model:["OPENAI_MODEL","MATILDA_MODEL"]}},sr={openai:lt};var Te="MATILDA_API_KEY",Es="matilda-code-1.0";function Ss(t,e){if(!t)return!0;try{let{hostname:n}=new URL(t);return n==="matilda.maincode.com"||n.endsWith(".matilda.maincode.com")||Ue(t,e)}catch{return!1}}function As(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 Gc(t){let{authType:e,cli:n,settings:o,env:r,modelProvider:i,proxy:s}=t,a=[],l={},u=e?ir[e]:{model:[],apiKey:[],baseUrl:[]},c=[];e&&i&&c.push(L(i.id,ye(e,i.id,"model.id"))),n?.model&&c.push(L(n.model,Ot("--model"))),e==="openai"&&r[Te]&&!r.OPENAI_MODEL&&!r.MATILDA_MODEL&&c.push(L(Es,{kind:"env",envKey:Te}));for(let b of u.model)c.push(Pt(r,b));o?.model&&c.push(L(o.model,Be("model.name")));let f=e?sr[e]:"",d=nr(c,f,kn(f));l.model=d.source;let m=[];e&&i?.baseUrl&&m.push(L(i.baseUrl,ye(e,i.id,"baseUrl"))),n?.baseUrl&&m.push(L(n.baseUrl,Ot("--openaiBaseUrl"))),e==="openai"&&r[Te]&&!r.OPENAI_BASE_URL&&(r[Le]?.trim()||!o?.baseUrl)&&m.push(L(G(r),{kind:"env",envKey:Te}));for(let b of u.baseUrl)m.push(Pt(r,b));o?.baseUrl&&m.push(L(o.baseUrl,Be("security.auth.baseUrl")));let C=_n(m)??(e==="openai"?{value:G(r),source:kn("the configured Matilda endpoint")}:void 0);C&&(l.baseUrl=C.source);let g=[];if(e&&i?.envKey){let b=r[i.envKey];b&&g.push(L(b,{kind:"env",envKey:i.envKey,via:ye(e,i.id,"envKey")}))}if(n?.apiKey&&g.push(L(n.apiKey,Ot("--openaiApiKey"))),!i?.envKey){let b=r[Te];if(e==="openai"&&b&&Ss(C?.value,r)&&g.push(L(b,{kind:"env",envKey:Te})),C?.source.kind!=="default")for(let _ of u.apiKey)g.push(Pt(r,_))}o?.apiKey&&g.push(L(o.apiKey,Be("security.auth.apiKey")));let y=_n(g);y&&(l.apiKey=y.source);let h;e&&i?.envKey&&(h=i.envKey,l.apiKeyEnvKey={...ye(e,i.id,"envKey"),envKey:i.envKey});let E=Dt(o?.generationConfig,i?.generationConfig,e,i?.id??d.value,r),S=E.config;Object.assign(l,E.sources);let M={authType:e,model:d.value||"",apiKey:y?.value,apiKeyEnvKey:h,baseUrl:C?.value,proxy:s,...S};return s&&(l.proxy=It("Config.getProxy()")),l.authType=It("provided by caller"),{config:M,sources:l,warnings:a}}function Dt(t,e,n,o,r){let i={},s=Rs(t,e,n,o,i);return As(r,s,i,e),{config:s,sources:i}}function Rs(t,e,n,o,r){let i={};for(let s of je)n&&e&&s in e?(i[s]=e[s],r[s]=ye(n,o||"",`generationConfig.${s}`)):t&&s in t&&(i[s]=t[s],r[s]=Be(`model.generationConfig.${s}`));return i.modalities===void 0&&o&&(i.modalities=xt(o),r.modalities=It("auto-detected from model")),i}p();var Nt="$runtime|";function jc(t){let e=t;for(;e.startsWith(Nt);){let n=e.split("|").slice(2).join("|");if(!n)break;e=n}return e}p();p();var ar=U("MODEL_REGISTRY");function lr(t,e){return e?`${t}\0${e}`:t}var Lt=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=lr(o.id,o.baseUrl);if(n.has(r)){ar.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??wt(e.id),modalities:e.generationConfig.modalities??xt(e.id),baseUrl:e.baseUrl,envKey:e.envKey}))}findModel(e,n){if(n)return this.models.get(lr(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||G(),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"){ar.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(he).join(", ")}. Skipping.`);continue}this.models=this.registerModels(o)}}};var ur=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 Lt(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 Dt(this.settingsGenerationConfig,e.generationConfig,e.authType,e.id,On.env)}isManagedMatildaResolvedModel(e){return e?.id===en&&e?.envKey===at&&e?.baseUrl===xe&&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)?en:e}getModelDisplayName(e){return this.isManagedMatildaModel(e)?no: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=Dt(this.settingsGenerationConfig,void 0,this.currentAuthType,e,On.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=wt(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`${Nt}${e}|${n}`}extractRuntimeModelSnapshotId(e){if(e.startsWith(Nt))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=On.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 je)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,E=y&&this.generationConfigSources.apiKey?{...this.generationConfigSources.apiKey}:void 0,S=this.generationConfigSources.baseUrl,M=g&&!!this._generationConfig.baseUrl&&(S?.kind==="cli"||S?.kind==="env"||S?.kind==="settings"),b=M?this._generationConfig.baseUrl:void 0,_=M&&S?{...S}:void 0;this.applyResolvedModelDefaults(s),!this._generationConfig.apiKey&&h&&(this._generationConfig.apiKey=h,E&&(this.generationConfigSources.apiKey=E)),b&&(this._generationConfig.baseUrl=b,_&&(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 Zs}from"node:crypto";import{mkdirSync as ea,readFileSync as ta}from"node:fs";import{dirname as na,join as oa}from"node:path";p();p();import{randomBytes as bs,createHash as vs}from"node:crypto";import{setTimeout as Ms}from"node:timers/promises";var _s="urn:ietf:params:oauth:grant-type:device_code";function cr(t){return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function Pn(){let t=bs(32).toString("base64url"),e=vs("sha256").update(t).digest("base64url");return{codeVerifier:t,codeChallenge:e}}function Ee(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 ks=15e3;async function Dn(t){let e=t.replace(/\/+$/,""),n=new URL("/.well-known/oauth-authorization-server",e);if(n.protocol!=="https:"&&!cr(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(ks)});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 ws=15e3,In="Device code expired: restart the sign-in";async function Nn(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:fr(AbortSignal.timeout(ws),n.signal)})}catch(i){throw gr(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 dr(t,e,n={}){let o=await fetch(t,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:_s,client_id:e.clientId,device_code:e.deviceCode}),signal:n.signal});if(o.ok)return{kind:"authorized",tokens:Ee(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 pr(t,e,n={}){let o=e.interval*1e3;try{for(;Date.now()<e.expiresAt;){await Ms(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 dr(t,e,{signal:fr(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(In);case"access_denied":throw new Error("User denied the authorization request");default:throw new Error(`Device flow error: ${i.error}`)}}}}catch(r){throw gr(r,n.signal)?new Error(In):r}throw new Error(In)}function fr(t,e){return e?AbortSignal.any([t,e]):t}function gr(t,e){return!e?.aborted&&t instanceof Error&&t.name==="TimeoutError"}p();import{randomBytes as xs}from"node:crypto";import{promises as Se,openSync as Os,closeSync as Is,unlinkSync as hr,statSync as Ps}from"node:fs";import{dirname as Ds}from"node:path";var mr=new Map,Ns=2e4,Ls=3e4,Us=50;function Ln(t,e={}){let n=async()=>{try{let s=await Se.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 Se.mkdir(Ds(t),{recursive:!0});let l=`${t}.${process.pid}.${xs(4).toString("hex")}.tmp`;try{await Se.writeFile(l,JSON.stringify(s,null,2),{mode:384}),a?.throwIfAborted(),await Se.rename(l,t)}catch(u){throw await Se.rm(l,{force:!0}).catch(()=>{}),u}await Se.chmod(t,384).catch(()=>{})},r=(s,a={})=>{let u=(mr.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 mr.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:Fs(`${t}.lock`,e.lockTimeoutMs??Ns),update:r}}function Fs(t,e){let n=Promise.resolve();return o=>{let r=n.then(async()=>{await Gs(t,e);try{return await o()}finally{Ks(t)}});return n=r.then(()=>{},()=>{}),r}}async function Gs(t,e){let n=Date.now()+e;for(;;)try{Is(Os(t,"wx"));return}catch(o){if(o.code!=="EEXIST")throw o;try{if(Date.now()-Ps(t).mtimeMs>Ls){hr(t);continue}}catch{continue}if(Date.now()>n)throw Object.assign(new Error(`Timed out acquiring credential lock at ${t}`),{code:"ETIMEDOUT"});await $s(Us)}}function Ks(t){try{hr(t)}catch{}}function $s(t){return new Promise(e=>setTimeout(e,t))}p();var Ae=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 Ae("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&&Bs(C)==="invalid_grant"?(await t.store.remove(e),new Ae):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=Ee(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 Ae("Not signed in.");return!u?.forceRefresh&&a(c)?c.accessToken:(i||(i=l(c).finally(()=>{i=null})),i)}}}function Bs(t){try{return JSON.parse(t).error}catch{return}}p();import{createServer as js}from"node:http";import{randomBytes as Vs}from"node:crypto";async function Ut(t){if(t.transport.kind==="device")return zs(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}=Pn(),r=Vs(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=js((g,y)=>{let h=new URL(g.url??"/","http://127.0.0.1");if(h.pathname!=="/callback"){y.writeHead(404).end();return}let E=h.searchParams.get("error"),S=h.searchParams.get("state"),M=h.searchParams.get("code");if(E){let b=h.searchParams.get("error_description"),_=b?`OAuth error: ${E} (${b})`:`OAuth error: ${E}`;y.writeHead(400,{"content-type":"text/plain; charset=utf-8"}).end(`Sign-in failed: ${E}
|
|
16
|
+
`,()=>u(new Error(_)));return}if(S!==r){y.writeHead(400).end("State mismatch"),u(new Error("OAuth state mismatch"));return}if(!M){y.writeHead(400).end("Missing authorization code");return}Ws(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 E=await c;await Cr(f),e({type:"state",status:"exchanging"});let S=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:E,code_verifier:n,redirect_uri:g}),signal:t.signal});if(!S.ok){let b=await S.text().catch(()=>"");throw new Error(`Token exchange failed (${S.status}): ${b}`)}let M=Ee(await S.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 Cr(f)}}async function zs(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 Nn(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 pr(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 Cr(t){return t.listening?new Promise(e=>{t.close(()=>e()),t.closeAllConnections()}):Promise.resolve()}function Ws(t,e,n){t.writeHead(302,{location:e}).end(n)}p();var Hs=["www-browser"];function qs(t){let e=t.replace(/\\/g,"/").split("/").pop();return!!e&&Hs.includes(e)}function yr(t={}){let n=process.env.BROWSER?.trim()?.match(/^\S+/)?.[0];if(!t.ignoreBrowserBlocklist&&process.platform!=="win32"&&n&&qs(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 Ys}from"node:events";var Js=50;function Ft(t=Js){let e=new AbortController;return Ys(t,e.signal),e}function Xs(t){if(t)return t instanceof AbortController?t.signal:t}function $d(t,e){let n=Ft(e),o=Xs(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 Tr(t,e){let n=Ft(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 Er(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 Sr=5*6e4;async function Fn(t,e){let n=performance.now()+Sr,o=Ft(),r=()=>o.abort(new DOMException("Sign-in timed out","TimeoutError")),i=setTimeout(r,Sr),{signal:s,cleanup:a}=Tr([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 Qs=Dn;function Ar(t,e){return Er(()=>Qs(t,void 0,{signal:e}),e)}var be="matilda-code",br="matilda-desktop",vr="openid profile email offline_access",Gt="MATILDA_API_KEY",ra="matilda",Gn=3e5;function ve(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function Mr(){return oa(Ze.getGlobalMatildaDir(),"matilda-auth.json")}function We(){let t=Mr();return ea(na(t),{recursive:!0}),Ln(t,{lockTimeoutMs:2e4})}function ia(t){return t==="desktop"}function He(t){return t?.clientId?t.clientId:ia(t?.channel)?br:be}function ze(t){return`matilda:${t}`}function $t(t){return`${ze(t)}:refresh-rejected`}function qe(t){return t===be?[ze(t),ra]:[ze(t)]}function _r(){try{let t=ta(Mr(),"utf8");return JSON.parse(t)}catch{return{}}}function Kt(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 $n(t,e){return ve(t)===ve(e)}function sa(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 kr(t,e){let n=sa(t.idToken);return{accessToken:t.accessToken,accessTokenExpiresAt:t.expiresAt,refreshToken:t.refreshToken??"",userId:n.sub,email:n.email,displayName:n.name,baseUrl:e}}var Rr=new Map;async function Bn(t,e={}){let n=()=>{e.signal?.throwIfAborted(),e.check?.()};n();let o=Rr.get(t);if(o)return o;try{let r=await Ar(t,e.signal);return n(),Rr.set(t,r),r}catch(r){n();let i=e.requireReachable&&(Fe(r,t)??hn(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 jn(t){try{let e=_r(),n=He(t);for(let o of qe(n)){let r=Kt(e[o]);if(r)return r}return null}catch{return null}}function wr(t){let e=jn(t);return!e||t?.baseUrl&&!$n(e.baseUrl,t.baseUrl)?null:e}function Vn(t){return wr(t)!==null}async function xr(t,e){for(let n of e){let o=await t.get(n);if(Kt(o))return o}return null}async function aa(t,e){let n=He(t),o=qe(n),{store:r,lock:i,update:s}=We();await i(async()=>{let a=await xr(r,o);a!==null&&a!==e||await s({...Object.fromEntries(o.map(l=>[l,null])),[$t(n)]:"1"})})}function la(t){return t instanceof Error?t.code==="invalid_grant"||t.name==="InvalidGrantError"?!0:t.message==="Token refresh failed (401)":!1}function Re(t){Kn({authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:t.occurrenceCount},{baseUrl:t.baseUrl,token:t.token}).catch(()=>{})}async function Or(t,e,n={}){let o=He(e),r=ze(o),i={[r]:JSON.stringify(t),[$t(o)]:null};for(let l of qe(o))l!==r&&(i[l]=null);let{lock:s,update:a}=We();await s(()=>(n.check?.(),a(i,{signal:n.signal})))}async function ua(t,e){for(let n of qe(e))await t.remove(n);await t.remove($t(e))}var Ve="matilda:api-key";function Ir(){let t=_r()[Ve];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 Bt(t){let e=Ir();return e&&$n(e.baseUrl,t)?e.apiKey:void 0}async function ca(t){let e=Zs(),n=JSON.stringify(t?{...t,saveId:e}:{saveId:e}),{store:o,lock:r,update:i}=We(),s=await r(async()=>{let a=await o.get(Ve);return(t||a!==null)&&await i({[Ve]:n}),a});return()=>r(async()=>{await o.get(Ve)===n&&await i({[Ve]:s})})}function da(t){let e=jn(t);return e?{authenticated:!0,userId:e.userId,email:e.email,displayName:e.displayName,baseUrl:e.baseUrl,accessTokenExpiresAt:e.accessTokenExpiresAt}:{authenticated:!1}}async function rp(t){let e={channel:t?.channel,clientId:t?.clientId},{store:n,lock:o}=We(),r=await o(async()=>{let s=jn(e);return await ua(n,He(e)),s}),i=Ir()!==null;if(await ca(null),r?.accessToken){let s=ve(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 Pr(t){return!t||t===Gt}function Dr(t){let{baseUrl:e,channel:n,apiKey:o,apiKeyEnvKey:r}=t;if(Vn({baseUrl:e,channel:n})){let i=da({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}:Pr(r)&&process.env[Gt]?{kind:"api-key",from:Gt}:Bt(e)!==void 0?{kind:"api-key",from:"saved"}:{kind:"none"}}async function Nr(t){t?.signal?.throwIfAborted();let e=He(t),n=ze(e),o=wr({baseUrl:t?.baseUrl,channel:t?.channel,clientId:e});if(!o)return t?.fallbackAccessToken||(Pr(t?.apiKeyEnvKey)?process.env[Gt]:void 0)||t?.baseUrl&&Bt(t.baseUrl)||"";let r=ve(o.baseUrl),i=await Bn(r,{signal:t?.signal}),{manager:s,startedFrom:a}=pa(We(),i.token_endpoint,o.baseUrl,e,n,t?.signal),l=e===be&&(!!t?.forceRefresh||o.accessTokenExpiresAt-Date.now()<=Gn),u;try{u=await s.getAccessToken({forceRefresh:t?.forceRefresh})}catch(c){t?.signal?.throwIfAborted(),l&&Re({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 ce({cause:c,channel:t?.channel}):!la(c)&&f!=="no_refresh_token"?Fe(c,r)??hn(c,r)??c:c instanceof ce?new ce({cause:c,channel:t?.channel}):(e===br&&await aa({channel:t?.channel,clientId:e},a()),new ce({cause:c,channel:t?.channel}))}return t?.signal?.throwIfAborted(),l&&Re({baseUrl:o.baseUrl,token:u,authStage:"refresh",authOutcome:"succeeded"}),u}function pa({store:t,lock:e,update:n},o,r,i,s,a){let l=qe(i),u=(h,E)=>{d=f;let S=[E?.signal,a].filter(M=>M instanceof AbortSignal);return fetch(h,{...E,signal:S.length>1?AbortSignal.any(S):S[0]})},c=h=>xr(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 E=await c(h),S=Kt(E);if(f=S&&$n(S.baseUrl,r)?E:null,!f||!S?.accessToken)return null;let M={accessToken:S.accessToken,refreshToken:S.refreshToken,expiresAt:S.accessTokenExpiresAt};return JSON.stringify(M)},set:async(h,E,S={})=>{let M=await c(h);if(M===null||M!==m())throw new ce;let b=JSON.parse(E),_=Kt(M)??{},K={..._,accessToken:b.accessToken,accessTokenExpiresAt:b.expiresAt,refreshToken:b.refreshToken??_.refreshToken??"",baseUrl:_.baseUrl??r};await n({...Object.fromEntries(l.filter(Q=>Q!==s).map(Q=>[Q,null])),[s]:JSON.stringify(K),[$t(i)]:null},S)},remove:async(h,E={})=>{if(await c(h)!==m())return;await n(Object.fromEntries((h===s?l:[h]).map(M=>[M,null])),E)}},storageKey:s,lock:e,fetchImpl:u,expirySkewMs:Gn,skewMs:Gn}),startedFrom:m}}function fa(){return process.env.MATILDA_AUTH_SKIP_BROWSER!=="1"&&yr()}async function ip(t){let{baseUrl:e,openBrowser:n,onAuthorizeUrl:o,signal:r}=t;return Fn(r,async i=>{let s=ve(e),a=await Bn(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:be,scope:y,transport:{kind:"loopback",successRedirect:`${s}/api/auth/oauth/success?client_id=${encodeURIComponent(be)}`},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||!fa()){d("skipped");return}try{let{default:E}=await import("./open-QQ7FWG4A.js");i.check(),(await E(h)).once("error",()=>{}),d("succeeded")}catch{i.check(),d("failed")}i.check()}})))(vr).catch(y=>{throw i.check(),Fe(y,s)??y});i.check();let g=kr(C,e);await Or(g,void 0,i),i.check(),Re({baseUrl:e,token:g.accessToken,authStage:"auth_started",authOutcome:"started",occurrenceCount:u});for(let[y,h]of Object.entries(f))Re({baseUrl:e,token:g.accessToken,authStage:"browser_opened",authOutcome:y,occurrenceCount:h});return c>0&&Re({baseUrl:e,token:g.accessToken,authStage:"callback_received",authOutcome:"succeeded",occurrenceCount:c}),Re({baseUrl:e,token:g.accessToken,authStage:"token_persisted",authOutcome:"succeeded"}),{...g,authorizeUrl:l}})}async function sp(t){let{baseUrl:e,onDeviceCode:n,signal:o}=t;return Fn(o,async r=>{let i=ve(e),s=await Bn(i,{requireReachable:!0,...r}),a=await Ut({metadata:s,clientId:be,scope:vr,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(),Fe(u,i)??u});r.check();let l=kr(a,e);return await Or(l,void 0,r),l})}p();p();p();function jt(t){return typeof t=="object"&&t!==null&&"error"in t&&typeof t.error=="object"&&"message"in t.error}function Lr(t){return typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"}p();function Ur(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:ga(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 ga(t){let e=Fr(t,"retry-after")??ma(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 Fr(t,e){if(!ha(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 ma(t,e){return Ca(t)?Fr(t.response,e):null}function ha(t){return typeof t=="object"&&t!==null&&"headers"in t&&t.headers!=null}function Ca(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 ya=new Set([429,503,1302,1305]);function zn(t,e){if(Wn(t))return!1;let n=Ea(t);return n===null?!1:!!(ya.has(n)||e&&e.includes(n))}function Wn(t){return Ta(t)==="insufficient_quota"}function Ta(t){let e=Kr(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 Gr(t){let e=B(t),n=Kr(t),o=$r(t),r=o?.includes("event:error")||o?.includes("HTTP_STATUS/")?"sse":e!==void 0?"http":"unknown";return{...e!==void 0?{statusCode:e}:{},...n?.code!==void 0?{providerCode:String(n.code)}:{},...n?.message!==void 0?{providerMessage:n.message}:{},...n?.requestId!==void 0?{requestId:n.requestId}:{},transport:r}}function hp(t,e){return Ur({attempt:t,initialDelayMs:e.initialDelayMs,maxDelayMs:e.maxDelayMs,retryAfterMode:"minimum",retryAfterMaxDelayMs:e.maxDelayMs,error:e.error})}function Ea(t){if(jt(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(jt(o)){let r=Number(o.error.code);if(Number.isFinite(r)&&r>0)return r}}catch{}}if(Lr(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 Kr(t){for(let e of Sa(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 jt(t)?{code:t.error.code,message:t.error.message}:null}function Sa(t){let e=$r(t);if(!e)return[];let n=[];for(let i of e.split(/\r?\n/)){if(!i.startsWith("data:"))continue;let s=i.slice(5).trim();if(!(!s||s==="[DONE]"))try{n.push(JSON.parse(s))}catch{}}if(n.length>0)return n;let o=e.indexOf("{"),r=e.lastIndexOf("}");if(o!==-1&&r>o)try{n.push(JSON.parse(e.slice(o,r+1)))}catch{}return n}function $r(t){return t instanceof Error?t.message:typeof t=="string"?t:null}function Aa(t,e={}){if(Ra(t))return{kind:"abort",diagnosis:"fail-fast",reason:"aborted"};let n=Gr(t),o=n.statusCode,r=wa(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(ka(i))return{kind:"provider-business",diagnosis:"fail-fast",reason:"allocated-quota-exceeded",...l};if(Wn(t))return{kind:"provider-business",diagnosis:"fail-fast",reason:"insufficient-quota",...l};if(zn(t,e.extraRetryErrorCodes))return{kind:n.transport==="sse"?"sse-provider":o!==void 0?"http":"provider",diagnosis:"retryable",reason:"rate-limit",...l};let u=va(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 Sp(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 Br(t,e){return zn(t,e)||Aa(t,{extraRetryErrorCodes:e}).diagnosis==="retryable"}function Ra(t){return Qn(t)?!0:t instanceof Error&&t.name==="CanceledError"}var ba=5;function va(t){let e=t;for(let n=0;n<=ba;n++){if(typeof e!="object"||e===null)return;let o=e.code;if(typeof o=="string"&&Ma(o))return o;e=e instanceof Error?e.cause:void 0}}function Ma(t){return _a.has(t)}var _a=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 ka(t){return t==="Throttling.AllocationQuota"}function wa(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 he=(e=>(e.USE_OPENAI="openai",e))(he||{});function jr(t,e){if(delete t.usesMatildaSignIn,delete t.usesMatildaSavedApiKey,!mn(t))return;let n=t.baseUrl||G();Vn({baseUrl:n,channel:e})&&(t.usesMatildaSignIn=!0),!t.apiKey&&Bt(n)!==void 0&&(t.usesMatildaSavedApiKey=!0)}function Ip(t,e={}){let n=t.apiKey?{value:t.apiKey,from:e.apiKeyFrom??"config"}:void 0;return mn(t)?Dr({baseUrl:t.baseUrl||G(),channel:e.channel,apiKey:n,apiKeyEnvKey:t.apiKeyEnvKey}):n&&{kind:"api-key",from:n.from}}async function xa(t,e){try{await Nr({baseUrl:t.baseUrl||G(),channel:e})}catch(n){if(!Br(n))throw n}}function Hn(t,e,n){t[e]=n}function Oa(t,e){return t?.[e]}function Pp(t,e,n,o,r){let i={...o||{}},s=r?.strictModelProvider===!0,a={...n||{},authType:e,proxy:t?.getProxy()};Hn(i,"authType",{kind:"computed",detail:"provided by caller"}),t?.getProxy()&&Hn(i,"proxy",{kind:"computed",detail:"Config.getProxy()"});let l=c=>Oa(o,c)??{kind:"unknown"};for(let c of wn)n&&c in n&&!i[c]&&Hn(i,c,l(c));jr(a,t.getChannel());let u=xn(a,s);if(!u.valid)throw new Error(u.errors.map(c=>c.message).join(`
|
|
17
|
+
`));return{config:a,sources:i}}function xn(t,e=!1){let n=[];if(!t.apiKey&&!t.usesMatildaSignIn&&!t.usesMatildaSavedApiKey)if(e)n.push(new bt(t.authType,t.model,t.apiKeyEnvKey));else{let o=t.apiKeyEnvKey||Qo(t.authType);n.push(new Mt({authType:t.authType,model:t.model,baseUrl:t.baseUrl,envKey:o}))}if(!t.model)if(e)n.push(new vt(t.authType));else{let o=Zo(t.authType);n.push(new _t({authType:t.authType,envKey:o}))}return{valid:n.length===0,errors:n}}function Ia(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 Dp(t,e,n){e.assertServer?.(t.baseUrl,n,e.getContentGeneratorConfig?.()?.baseUrl),Mn(t,e.getOrganizationId?.(),e.getCodeCreditLimitMinor?.()),Xo(t.customHeaders),jr(t,e.getChannel()),t.usesMatildaSignIn&&await xa(t,e.getChannel());let o=xn(t,!1);if(!o.valid)throw new Error(o.errors.map(s=>s.message).join(`
|
|
18
|
+
`));eo(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-7UTX34FH.js");await s(t,e,n),i=a(t,e)}else throw new Error(`Error creating contentGenerator: Unsupported authType: ${r}`)}catch(s){let a=Ia(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 $e(i,e,t)}var Pa=["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"],Da=new Set([...Pa,...Xn]),Na=new Set(["VSCode","ACP","SDK","CI"]),Me="(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})",La="[A-Za-z][0-9A-Za-z-]{0,23}",Vr="(?:0|[1-9]\\d{0,11}|[0-9A-Fa-f]{7,12})",Ua=new RegExp(`^${Me}(?:-${La}(?:\\.${Vr})+)?$`),Fa=63,Ga=new RegExp(`^${Me}$`),Ka=new RegExp(`^${Me}-preview\\.(?:0|[1-9]\\d{0,11})$`),$a=new RegExp(`^${Me}-canary\\.(?:0|[1-9]\\d{0,11})$`),Ba=new RegExp(`^${Me}-nightly\\.(?:0|[1-9]\\d{0,11})\\.[0-9A-Fa-f]{7,12}$`),ja=new RegExp(`^${Me}-(preview|canary|nightly|development|internal)(?:\\.${Vr})+$`);function Va(t){return t==="desktop"?"desktop":t===void 0||Na.has(t)?"code_cli":"unknown"}function za(t){if(t==="android")return"android";if(t==="darwin")return"macos";if(t==="win32")return"windows";if(t==="linux")return"linux"}function Wa(t){if(t==="x64")return"x64";if(t==="arm64")return"arm64"}function Ha(t){if(t===void 0)return"npm";if(t==="desktop")return"direct-download";if(t==="VSCode")return"vscode-marketplace"}function qa(t,e){if(e==="desktop")return"matilda-desktop";if(t==="VSCode")return"matilda-vscode";if(e==="code_cli")return"matilda-code"}function Ya(t){if(typeof t=="string"&&!(t.length>Fa||!Ua.test(t)))return t}function Ja(t){if(t!==void 0)return Ga.test(t)?"stable":Ka.test(t)?"preview":$a.test(t)?"canary":Ba.test(t)?"nightly":ja.exec(t)?.[1]}function zr(t,e=process.platform,n=process.arch){let o=t.getChannel?.(),r=Va(o),i=Ya(o==="desktop"&&process.env.CRAFT_AGENT_VERSION!==void 0?process.env.CRAFT_AGENT_VERSION:t.getCliVersion?.()),s=Ja(i),a=za(e),l=Wa(n),u=Ha(o),c=qa(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 Kp(t){let e=t.toLowerCase();return Da.has(e)||e.startsWith("x-matilda-reported-")}function Xa(t){let e=t??G();try{let n=new URL(e);if(n.protocol!=="https:"&&n.protocol!=="http:")return!1;let o=n.hostname.toLowerCase();return o==="matilda.maincode.com"||o.endsWith(".matilda.maincode.com")||o==="core-api.matilda"||Ue(e)}catch{return!1}}function $p(t,e=t.apiKey){return t.authType==="openai"&&(!!e||t.usesMatildaSignIn===!0||t.usesMatildaSavedApiKey===!0)&&Xa(t.baseUrl)}var Qa=3e3,Ye=1,Za=24*60*60*1e3,Wr=20,Hr=999,el=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"]),tl=new Set(["ENOTFOUND","EAI_AGAIN"]),nl=new Set(["ECONNREFUSED","EHOSTUNREACH","ENETUNREACH"]),ol=new Set(["ABORT_ERR","ETIMEDOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT"]),rl=new Set(["ECONNRESET","EPIPE","UND_ERR_SOCKET"]);function il(t){return`${new URL(t).origin}/api/client-events`}function sl(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 qn(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??Qa);try{let a=await r(il(n),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${o}`},body:JSON.stringify(sl(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 Kn(t,e){let n=typeof t.occurrenceCount=="number"&&Number.isFinite(t.occurrenceCount)?Math.max(1,Math.min(Math.floor(t.occurrenceCount),Hr)):1;return qn({eventType:"auth_funnel",authStage:t.authStage,authOutcome:t.authOutcome,occurrenceCount:n},e)}function qr(){try{let t=X.readFileSync(Xr(),"utf8"),e=JSON.parse(t);return e.schemaVersion!==Ye||!Array.isArray(e.failures)?void 0:{schemaVersion:Ye,failures:e.failures.filter(al)}}catch{return}}function al(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 Yr(t){let e=Xr();if(t.failures.length===0){try{X.rmSync(e,{force:!0})}catch{}return}try{X.mkdirSync(Vt.dirname(e),{recursive:!0}),X.writeFileSync(e,`${JSON.stringify(t)}
|
|
20
|
+
`,"utf8")}catch{}}function Jr(t,e){return t.filter(n=>e-n.lastObservedAtMs<=Za).sort((n,o)=>n.firstObservedAtMs-o.firstObservedAtMs).slice(-Wr)}function ll(t){let e=zr(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 ul(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 cl(t){if(!(!t||typeof t!="object"))for(let e of["status","statusCode"]){let n=t[e];if(typeof n=="number")return n}}function dl(t,e){let n=ul(t);if(n&&el.has(n))return{reason:"tls",stage:"tls",responseReceived:!1};if(n&&tl.has(n))return{reason:"dns",stage:"resolve",responseReceived:!1};if(n&&nl.has(n))return{reason:"connect",stage:"connect",responseReceived:!1};if(n&&ol.has(n))return{reason:"timeout",stage:n==="UND_ERR_BODY_TIMEOUT"?"response":"request",responseReceived:n==="UND_ERR_BODY_TIMEOUT"};if(n&&rl.has(n))return{reason:"reset",stage:n==="UND_ERR_SOCKET"?"response":"request",responseReceived:n==="UND_ERR_SOCKET"};let o=cl(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 pl(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 Hp(t,e){let n=ll(e.cliConfig);if(n.reportedSurface!=="code_cli"&&n.reportedSurface!=="desktop")return!1;let o=dl(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=qr()??{schemaVersion:Ye,failures:[]},a=Jr(s.failures,r),l=pl(a,i);if(l>=0){let u=a[l];a[l]={...u,occurrenceCount:Math.min(u.occurrenceCount+1,Hr),lastObservedAtMs:r}}else a.push(i);return Yr({schemaVersion:Ye,failures:a.slice(-Wr)}),!0}async function qp(t){let e=qr();if(!e)return;let n=Jr(e.failures,Date.now()),o=[];for(let r=0;r<n.length;r+=1){let i=n[r];if(!await qn({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}}Yr({schemaVersion:Ye,failures:o})}function Xr(){return Vt.join(Ze.getGlobalMatildaDir(),"telemetry","cli-transport-failures.json")}var Hg="http://localhost:4317";export{qs as a,yr as b,ri as c,pn as d,gt as e,di as f,pi as g,ht as h,$o as i,Xi as j,Rn as k,Vi as l,Hl as m,wo as n,Jl as o,Di as p,Xl as q,Ql as r,Le as s,ie as t,iu as u,su as v,au as w,No as x,Lo as y,Ue as z,mn as A,Fe as B,Bi as C,G as D,zr as E,Kp as F,$p as G,Kn as H,Hp as I,qp as J,Hg as K,hc as L,vn as M,gs as N,Mn as O,Xo as P,Cc as Q,Ac as R,Rc as S,wt as T,je as U,ir as V,Gc as W,jc as X,ur as Y,Ft as Z,$d as _,Tr as $,Er as aa,ve as ba,jn as ca,Vn as da,Ir as ea,Bt as fa,ca as ga,da as ha,rp as ia,Nr as ja,fa as ka,ip as la,sp as ma,jt as na,Lr as oa,Ur as pa,ga as qa,zn as ra,Wn as sa,Ta as ta,Gr as ua,hp as va,Aa as wa,Sp as xa,Br as ya,he as za,Ip as Aa,Pp as Ba,Dp as Ca};
|
|
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
|
+
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{g as f,h,i as T,j as w,k as x,l as s}from"./chunk-QXSBPCBA.js";import{b as g}from"./chunk-
|
|
3
|
+
import{g as f,h,i as T,j as w,k as x,l as s}from"./chunk-QXSBPCBA.js";import{b as g}from"./chunk-PFXCFIHY.js";import{P as c,c as p}from"./chunk-WL27X35X.js";import{b as o}from"./chunk-GZPNIYVZ.js";o();import*as n from"node:fs/promises";import*as i from"node:path";o();function y(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}function M(){return i.join(c.getGlobalMatildaDir(),h)}function d(e){return i.join(M(),e)}function l(e){return i.join(d(e),w)}function I(e){return i.join(d(e),x)}function E(e){return i.join(c.getGlobalMatildaDir(),T,e)}function m(e){return e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function j(e,t){return`${m(e)}@${m(t)}`}function R(e,t){let r=m(e);if(!r)throw new Error(`Teammate name "${e}" sanitizes to an empty string. Choose a name with at least one alphanumeric character.`);if(r===f)throw new Error(`"${f}" is reserved for the team leader. Choose a different teammate name.`);let a=new Set(t.map(u=>u.name));if(a.has(r)){let u=[...a].join(", ")||"<none>";throw new Error(`A teammate named "${r}" already exists in this team (existing: ${u}). Choose a different name.`)}return r}function C(e){let t=new Set(e.map(r=>r.color).filter(r=>r!==void 0));for(let r of s)if(!t.has(r))return r;return s[e.length%s.length]}function O(e,t){let r=m(t);return e.find(a=>a.name===r)}function $(e){let t=e.trimStart();if(/^shutdown_approved\b/i.test(t))return"shutdown_approved";if(/^shutdown_rejected\b/i.test(t))return"shutdown_rejected"}async function P(e){let t=l(e);try{let r=await n.readFile(t,"utf-8");return JSON.parse(r)}catch(r){if(p(r)&&r.code==="ENOENT")return;throw r}}async function k(e,t){let r=l(e);await n.mkdir(i.dirname(r),{recursive:!0}),await g(r,t)}async function z(e,t){let r=l(e);await n.mkdir(i.dirname(r),{recursive:!0}),await n.writeFile(r,JSON.stringify(t,null,2)+`
|
|
4
4
|
`,{encoding:"utf-8",flag:"wx"})}async function L(e){let t;try{t=await P(e)}catch{return!1}return t?typeof t.leadPid!="number"||t.leadPid<=0||t.leadPid!==process.pid&&y(t.leadPid)?!1:(await b(e),!0):(await b(e),!0)}async function b(e){let t=d(e),r=E(e);await Promise.allSettled([n.rm(t,{recursive:!0,force:!0}),n.rm(r,{recursive:!0,force:!0})])}export{y as a,d as b,I as c,E as d,m as e,j as f,R as g,C as h,O as i,$ as j,k,z as l,L as m,b as n};
|
|
5
5
|
/**
|
|
6
6
|
* @license
|