@plusonelabs/cue 0.0.64 → 0.0.65
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/cue-v0.0.65.tar.gz +0 -0
- package/dist/cli.mjs +2 -2
- package/package.json +1 -1
- package/cue-v0.0.64.tar.gz +0 -0
|
Binary file
|
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url); global.__CUE_VERSION__ = '0.0.
|
|
2
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url); global.__CUE_VERSION__ = '0.0.65';
|
|
3
3
|
var lme=Object.create;var pT=Object.defineProperty;var ume=Object.getOwnPropertyDescriptor;var dme=Object.getOwnPropertyNames;var pme=Object.getPrototypeOf,fme=Object.prototype.hasOwnProperty;var Lt=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var T=(t,e)=>()=>(t&&(e=t(t=0)),e);var Te=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Un=(t,e)=>{for(var n in e)pT(t,n,{get:e[n],enumerable:!0})},fq=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of dme(e))!fme.call(t,o)&&o!==n&&pT(t,o,{get:()=>e[o],enumerable:!(i=ume(e,o))||i.enumerable});return t};var ke=(t,e,n)=>(n=t!=null?lme(pme(t)):{},fq(e||!t||!t.__esModule?pT(n,"default",{value:t,enumerable:!0}):n,t)),mq=t=>fq(pT({},"__esModule",{value:!0}),t);import fT from"fs";import sM from"path";function lm(){if(typeof global.__CUE_VERSION__<"u")return global.__CUE_VERSION__;try{let t=process.argv[1],e=sM.join(sM.dirname(t),"..","package.json");if(fT.existsSync(e)){let n=fT.readFileSync(e,"utf-8");return JSON.parse(n).version}}catch{}if(process.argv[1].includes("src/cli.tsx"))try{let t=sM.join(process.cwd(),"package.json");if(fT.existsSync(t)){let e=fT.readFileSync(t,"utf-8");return JSON.parse(e).version}}catch{}return"unknown"}var Mb=T(()=>{"use strict"});function rt(t,e,n,i,o){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?o.call(t,n):o?o.value=n:e.set(t,n),n}function de(t,e,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(t):i?i.value:e.get(t)}var vp=T(()=>{});var rM,hq=T(()=>{rM=function(){let{crypto:t}=globalThis;if(t?.randomUUID)return rM=t.randomUUID.bind(t),t.randomUUID();let e=new Uint8Array(1),n=t?()=>t.getRandomValues(e)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,i=>(+i^n()&15>>+i/4).toString(16))}});function Cp(t){return typeof t=="object"&&t!==null&&("name"in t&&t.name==="AbortError"||"message"in t&&String(t.message).includes("FetchRequestCanceledException"))}var Ub,yv=T(()=>{Ub=t=>{if(t instanceof Error)return t;if(typeof t=="object"&&t!==null){try{if(Object.prototype.toString.call(t)==="[object Error]"){let e=new Error(t.message,t.cause?{cause:t.cause}:{});return t.stack&&(e.stack=t.stack),t.cause&&!e.cause&&(e.cause=t.cause),t.name&&(e.name=t.name),e}}catch{}try{return new Error(JSON.stringify(t))}catch{}}return new Error(t)}});var yt,As,$s,um,Ev,vv,Cv,Sv,Iv,xv,bv,Bv,_v,jc=T(()=>{yv();yt=class extends Error{},As=class t extends yt{constructor(e,n,i,o){super(`${t.makeMessage(e,n,i)}`),this.status=e,this.headers=o,this.requestID=o?.get("request-id"),this.error=n}static makeMessage(e,n,i){let o=n?.message?typeof n.message=="string"?n.message:JSON.stringify(n.message):n?JSON.stringify(n):i;return e&&o?`${e} ${o}`:e?`${e} status code (no body)`:o||"(no status code or body)"}static generate(e,n,i,o){if(!e||!o)return new um({message:i,cause:Ub(n)});let s=n;return e===400?new vv(e,s,i,o):e===401?new Cv(e,s,i,o):e===403?new Sv(e,s,i,o):e===404?new Iv(e,s,i,o):e===409?new xv(e,s,i,o):e===422?new bv(e,s,i,o):e===429?new Bv(e,s,i,o):e>=500?new _v(e,s,i,o):new t(e,s,i,o)}},$s=class extends As{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}},um=class extends As{constructor({message:e,cause:n}){super(void 0,void 0,e||"Connection error.",void 0),n&&(this.cause=n)}},Ev=class extends um{constructor({message:e}={}){super({message:e??"Request timed out."})}},vv=class extends As{},Cv=class extends As{},Sv=class extends As{},Iv=class extends As{},xv=class extends As{},bv=class extends As{},Bv=class extends As{},_v=class extends As{}});function mT(t){return typeof t!="object"?{}:t??{}}function Eq(t){if(!t)return!0;for(let e in t)return!1;return!0}function vq(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var Ame,yq,aM,cM,Cq,AT,Lg=T(()=>{jc();Ame=/^[a-z][a-z0-9+.-]*:/i,yq=t=>Ame.test(t),aM=t=>(aM=Array.isArray,aM(t)),cM=aM;Cq=(t,e)=>{if(typeof e!="number"||!Number.isInteger(e))throw new yt(`${t} must be an integer`);if(e<0)throw new yt(`${t} must be a positive integer`);return e},AT=t=>{try{return JSON.parse(t)}catch{return}}});var Sq,Iq=T(()=>{Sq=t=>new Promise(e=>setTimeout(e,t))});var dm,lM=T(()=>{dm="0.71.2"});function gme(){return typeof Deno<"u"&&Deno.build!=null?"deno":typeof EdgeRuntime<"u"?"edge":Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]"?"node":"unknown"}function yme(){if(typeof navigator>"u"||!navigator)return null;let t=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:e,pattern:n}of t){let i=n.exec(navigator.userAgent);if(i){let o=i[1]||0,s=i[2]||0,c=i[3]||0;return{browser:e,version:`${o}.${s}.${c}`}}}return null}var _q,hme,xq,bq,Bq,wq,uM=T(()=>{lM();_q=()=>typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u";hme=()=>{let t=gme();if(t==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":dm,"X-Stainless-OS":bq(Deno.build.os),"X-Stainless-Arch":xq(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version=="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":dm,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(t==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":dm,"X-Stainless-OS":bq(globalThis.process.platform??"unknown"),"X-Stainless-Arch":xq(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let e=yme();return e?{"X-Stainless-Lang":"js","X-Stainless-Package-Version":dm,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${e.browser}`,"X-Stainless-Runtime-Version":e.version}:{"X-Stainless-Lang":"js","X-Stainless-Package-Version":dm,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};xq=t=>t==="x32"?"x32":t==="x86_64"||t==="x64"?"x64":t==="arm"?"arm":t==="aarch64"||t==="arm64"?"arm64":t?`other:${t}`:"unknown",bq=t=>(t=t.toLowerCase(),t.includes("ios")?"iOS":t==="android"?"Android":t==="darwin"?"MacOS":t==="win32"?"Windows":t==="freebsd"?"FreeBSD":t==="openbsd"?"OpenBSD":t==="linux"?"Linux":t?`Other:${t}`:"Unknown"),wq=()=>Bq??(Bq=hme())});function Dq(){if(typeof fetch<"u")return fetch;throw new Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function dM(...t){let e=globalThis.ReadableStream;if(typeof e>"u")throw new Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new e(...t)}function gT(t){let e=Symbol.asyncIterator in t?t[Symbol.asyncIterator]():t[Symbol.iterator]();return dM({start(){},async pull(n){let{done:i,value:o}=await e.next();i?n.close():n.enqueue(o)},async cancel(){await e.return?.()}})}function Fb(t){if(t[Symbol.asyncIterator])return t;let e=t.getReader();return{async next(){try{let n=await e.read();return n?.done&&e.releaseLock(),n}catch(n){throw e.releaseLock(),n}},async return(){let n=e.cancel();return e.releaseLock(),await n,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Tq(t){if(t===null||typeof t!="object")return;if(t[Symbol.asyncIterator]){await t[Symbol.asyncIterator]().return?.();return}let e=t.getReader(),n=e.cancel();e.releaseLock(),await n}var wv=T(()=>{});var Qq,Rq=T(()=>{Qq=({headers:t,body:e})=>({bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(e)})});function Oq(t){let e=0;for(let o of t)e+=o.length;let n=new Uint8Array(e),i=0;for(let o of t)n.set(o,i),i+=o.length;return n}function Pb(t){let e;return(kq??(e=new globalThis.TextEncoder,kq=e.encode.bind(e)))(t)}function pM(t){let e;return(Nq??(e=new globalThis.TextDecoder,Nq=e.decode.bind(e)))(t)}var kq,Nq,fM=T(()=>{});function Cme(t,e){for(let o=e??0;o<t.length;o++){if(t[o]===10)return{preceding:o,index:o+1,carriage:!1};if(t[o]===13)return{preceding:o,index:o+1,carriage:!0}}return null}function Mq(t){for(let i=0;i<t.length-1;i++){if(t[i]===10&&t[i+1]===10||t[i]===13&&t[i+1]===13)return i+2;if(t[i]===13&&t[i+1]===10&&i+3<t.length&&t[i+2]===13&&t[i+3]===10)return i+4}return-1}var Ka,qa,Sp,mM=T(()=>{vp();fM();Sp=class{constructor(){Ka.set(this,void 0),qa.set(this,void 0),rt(this,Ka,new Uint8Array,"f"),rt(this,qa,null,"f")}decode(e){if(e==null)return[];let n=e instanceof ArrayBuffer?new Uint8Array(e):typeof e=="string"?Pb(e):e;rt(this,Ka,Oq([de(this,Ka,"f"),n]),"f");let i=[],o;for(;(o=Cme(de(this,Ka,"f"),de(this,qa,"f")))!=null;){if(o.carriage&&de(this,qa,"f")==null){rt(this,qa,o.index,"f");continue}if(de(this,qa,"f")!=null&&(o.index!==de(this,qa,"f")+1||o.carriage)){i.push(pM(de(this,Ka,"f").subarray(0,de(this,qa,"f")-1))),rt(this,Ka,de(this,Ka,"f").subarray(de(this,qa,"f")),"f"),rt(this,qa,null,"f");continue}let s=de(this,qa,"f")!==null?o.preceding-1:o.preceding,c=pM(de(this,Ka,"f").subarray(0,s));i.push(c),rt(this,Ka,de(this,Ka,"f").subarray(o.index),"f"),rt(this,qa,null,"f")}return i}flush(){return de(this,Ka,"f").length?this.decode(`
|
|
4
4
|
`):[]}};Ka=new WeakMap,qa=new WeakMap;Sp.NEWLINE_CHARS=new Set([`
|
|
5
5
|
`,"\r"]);Sp.NEWLINE_REGEXP=/\r\n|[\n\r]/g});function Lb(){}function hT(t,e,n){return!e||yT[t]>yT[n]?Lb:e[t].bind(e)}function gs(t){let e=t.logger,n=t.logLevel??"off";if(!e)return Sme;let i=Uq.get(e);if(i&&i[0]===n)return i[1];let o={error:hT("error",e,n),warn:hT("warn",e,n),info:hT("info",e,n),debug:hT("debug",e,n)};return Uq.set(e,[n,o]),o}var yT,AM,Sme,Uq,Ip,ET=T(()=>{Lg();yT={off:0,error:200,warn:300,info:400,debug:500},AM=(t,e,n)=>{if(t){if(vq(yT,t))return t;gs(n).warn(`${e} was set to ${JSON.stringify(t)}, expected one of ${JSON.stringify(Object.keys(yT))}`)}};Sme={error:Lb,warn:Lb,info:Lb,debug:Lb},Uq=new WeakMap;Ip=t=>(t.options&&(t.options={...t.options},delete t.options.headers),t.headers&&(t.headers=Object.fromEntries((t.headers instanceof Headers?[...t.headers]:Object.entries(t.headers)).map(([e,n])=>[e,e.toLowerCase()==="x-api-key"||e.toLowerCase()==="authorization"||e.toLowerCase()==="cookie"||e.toLowerCase()==="set-cookie"?"***":n]))),"retryOfRequestLogID"in t&&(t.retryOfRequestLogID&&(t.retryOf=t.retryOfRequestLogID),delete t.retryOfRequestLogID),t)});async function*Ime(t,e){if(!t.body)throw e.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative"?new yt("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api"):new yt("Attempted to iterate over a response with no body");let n=new gM,i=new Sp,o=Fb(t.body);for await(let s of xme(o))for(let c of i.decode(s)){let d=n.decode(c);d&&(yield d)}for(let s of i.flush()){let c=n.decode(s);c&&(yield c)}}async function*xme(t){let e=new Uint8Array;for await(let n of t){if(n==null)continue;let i=n instanceof ArrayBuffer?new Uint8Array(n):typeof n=="string"?Pb(n):n,o=new Uint8Array(e.length+i.length);o.set(e),o.set(i,e.length),e=o;let s;for(;(s=Mq(e))!==-1;)yield e.slice(0,s),e=e.slice(s)}e.length>0&&(yield e)}function bme(t,e){let n=t.indexOf(e);return n!==-1?[t.substring(0,n),e,t.substring(n+e.length)]:[t,"",""]}var $b,Zu,gM,hM=T(()=>{vp();jc();wv();mM();wv();yv();Lg();fM();ET();jc();Zu=class t{constructor(e,n,i){this.iterator=e,$b.set(this,void 0),this.controller=n,rt(this,$b,i,"f")}static fromSSEResponse(e,n,i){let o=!1,s=i?gs(i):console;async function*c(){if(o)throw new yt("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");o=!0;let d=!1;try{for await(let f of Ime(e,n)){if(f.event==="completion")try{yield JSON.parse(f.data)}catch(m){throw s.error("Could not parse message into JSON:",f.data),s.error("From chunk:",f.raw),m}if(f.event==="message_start"||f.event==="message_delta"||f.event==="message_stop"||f.event==="content_block_start"||f.event==="content_block_delta"||f.event==="content_block_stop")try{yield JSON.parse(f.data)}catch(m){throw s.error("Could not parse message into JSON:",f.data),s.error("From chunk:",f.raw),m}if(f.event!=="ping"&&f.event==="error")throw new As(void 0,AT(f.data)??f.data,void 0,e.headers)}d=!0}catch(f){if(Cp(f))return;throw f}finally{d||n.abort()}}return new t(c,n,i)}static fromReadableStream(e,n,i){let o=!1;async function*s(){let d=new Sp,f=Fb(e);for await(let m of f)for(let h of d.decode(m))yield h;for(let m of d.flush())yield m}async function*c(){if(o)throw new yt("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");o=!0;let d=!1;try{for await(let f of s())d||f&&(yield JSON.parse(f));d=!0}catch(f){if(Cp(f))return;throw f}finally{d||n.abort()}}return new t(c,n,i)}[($b=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let e=[],n=[],i=this.iterator(),o=s=>({next:()=>{if(s.length===0){let c=i.next();e.push(c),n.push(c)}return s.shift()}});return[new t(()=>o(e),this.controller,de(this,$b,"f")),new t(()=>o(n),this.controller,de(this,$b,"f"))]}toReadableStream(){let e=this,n;return dM({async start(){n=e[Symbol.asyncIterator]()},async pull(i){try{let{value:o,done:s}=await n.next();if(s)return i.close();let c=Pb(JSON.stringify(o)+`
|
|
@@ -208,7 +208,7 @@ Please continue the conversation from where we left it off without asking the us
|
|
|
208
208
|
`)}isRunning(){return!!this.process&&!this.process.killed}getSessionId(){return this.sessionId}}});import{randomUUID as Rxe}from"crypto";var Gh,Fj=T(()=>{Uj();m_();Gh=class{processManager;outputStream;sessionId;options;isActive=!1;constructor(e,n){this.sessionId=n.sessionId||Rxe(),this.options=n,this.processManager=new Hh(e),this.outputStream=new Sd,this.setupEventHandlers()}setupEventHandlers(){this.processManager.on("message",e=>{let n=this.normalizeMessage(e);this.outputStream.push(n),e.metadata?.sessionId&&(this.sessionId=e.metadata.sessionId)}),this.processManager.on("output",e=>{this.outputStream.push({type:"gemini",content:e,timestamp:new Date().toISOString()})}),this.processManager.on("error",e=>{this.outputStream.setError(e)}),this.processManager.on("exit",()=>{this.isActive=!1,this.outputStream.end()})}normalizeMessage(e){let n=e,i=n.role||"gemini";return{type:this.mapRoleToType(i),content:n.content||n.text||"",timestamp:new Date().toISOString(),metadata:{model:n.model,tokenUsage:n.tokens}}}mapRoleToType(e){switch(e){case"user":return"user";case"assistant":case"gemini":return"gemini";case"tool_call":return"tool_call";case"tool_result":return"tool_result";default:return"system"}}async start(){await this.processManager.start(this.options),this.isActive=!0}async sendMessage(e){if(!this.isActive)throw new Error("Session not active");this.processManager.sendInput(e)}getOutputStream(){return this.outputStream}async stop(){await this.processManager.stop(),this.isActive=!1,this.outputStream.end()}getSessionId(){return this.sessionId}isSessionActive(){return this.isActive}}});import{existsSync as Zte,readdirSync as Wte,readFileSync as kxe,statSync as Nxe}from"fs";import{createHash as Oxe}from"crypto";import{homedir as Mxe}from"os";import{join as Pj}from"path";var tf,Vte=T(()=>{Fj();Mj();Qt();tf=class{sessions=new Map;executableFinder;maxSessions;constructor(e=5){this.maxSessions=e,this.executableFinder=new ef}async getOrCreateSession(e,n){let i=!1;if(n.continueLatest&&!e){let f=this.findLatestSessionForCwd(n.cwd);f&&(v.info("Found latest Gemini session for cwd (continueLatest)",{sessionId:f,cwd:n.cwd}),e=f)}if(e&&this.sessions.has(e)){let f=this.sessions.get(e);if(!f.isSessionActive())v.debug("Session inactive, removing from cache for cold resume",{sessionId:e}),this.sessions.delete(e),i=!0;else return v.debug("Reusing existing Gemini session",{sessionId:e}),n.prompt&&(v.debug("Sending new prompt to existing session",{sessionId:e,promptLength:n.prompt.length}),await f.sendMessage(n.prompt)),{session:f,isNew:!1,sessionId:e}}this.sessions.size>=this.maxSessions&&await this.cleanupOldestSession();let o=await this.executableFinder.find(),s=new Gh(o,{...n,sessionId:e}),c=s.getSessionId();this.sessions.set(c,s),await s.start();let d=!e;return v.info("Created new Gemini session",{sessionId:c,cwd:n.cwd,model:n.model,isNew:d,isColdResume:i}),{session:s,isNew:d,sessionId:c}}async closeSession(e){let n=this.sessions.get(e);if(!n){v.warn("Session not found for closing",{sessionId:e});return}await n.stop(),this.sessions.delete(e),v.info("Closed Gemini session",{sessionId:e})}async deleteSession(e,n=!1){let i=this.sessions.get(e);return i&&(await i.stop(),this.sessions.delete(e)),!0}getActiveSessions(){let e=[];return this.sessions.forEach((n,i)=>{e.push({sessionId:i,cwd:process.cwd(),model:"gemini-2.5-flash",isActive:n.isSessionActive(),createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString()})}),e}async cleanupOldestSession(){if(this.sessions.size===0)return;let e=Array.from(this.sessions.keys())[0];await this.closeSession(e),v.info("Cleaned up oldest Gemini session due to limit",{sessionId:e,maxSessions:this.maxSessions})}async closeAllSessions(){let e=Array.from(this.sessions.keys());for(let n of e)await this.closeSession(n);v.info("Closed all Gemini sessions",{count:e.length})}findLatestSessionForCwd(e){try{let n=Pj(Mxe(),".gemini","tmp");if(!Zte(n)){v.debug("Gemini tmp directory not found",{geminiTmpDir:n});return}let i=[],o=s=>{let c=Pj(n,s,"chats");if(Zte(c))try{let d=Wte(c).filter(f=>f.startsWith("session-")&&f.endsWith(".json"));for(let f of d){let m=Pj(c,f);i.push({name:f,path:m,mtime:Nxe(m).mtime,sessionId:f.replace(".json","")})}}catch{}};if(e){let s=Oxe("sha256").update(e).digest("hex");o(s)}else try{let s=Wte(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name);for(let c of s)o(c)}catch{}if(i.length===0){v.debug("No Gemini session files found",{geminiTmpDir:n,cwd:e});return}i.sort((s,c)=>c.mtime.getTime()-s.mtime.getTime());try{let c=JSON.parse(kxe(i[0].path,"utf-8")).sessionId||i[0].sessionId;return v.info("Found latest Gemini session",{cwd:e,sessionId:c,fileCount:i.length}),c}catch{return v.info("Found latest Gemini session (filename)",{cwd:e,sessionId:i[0].sessionId,fileCount:i.length}),i[0].sessionId}}catch(n){v.error("Error finding latest Gemini session",{error:String(n)});return}}}});var Xte=T(()=>{Jte();Mj();Uj();Fj();Vte()});import{readFileSync as Uxe,existsSync as kk,readdirSync as Fxe,statSync as Pxe,appendFileSync as Lxe,mkdirSync as $xe}from"fs";import{join as nI}from"path";import{homedir as zxe}from"os";var Nk,ene=T(()=>{Qt();Dj();Zg();Nk=class{projectsPath;constructor(){this.projectsPath=nI(zxe(),".cue","projects")}async loadChainedHistory(e,n){try{let i=this.findSessionFile(e,n);if(!i){if(v.info("\u{1F4C2} No local session file found, attempting backend fallback",{sessionId:e,cwd:n,searchPath:n?`${this.projectsPath}/${this.getProjectDirName(n)}/${e}.jsonl`:`${this.projectsPath}/*/${e}.jsonl`}),/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)&&n){let w=await this.fetchFromBackend(e,n);if(w.messages.length>0)return v.info("\u2705 Fetched session history from backend",{sessionId:e,messageCount:w.messages.length}),w}return{messages:[],lastUuid:null}}v.info("\u{1F4C2} Found session file",{sessionId:e,path:i});let s=Uxe(i,"utf-8").trim().split(`
|
|
209
209
|
`).filter(x=>x.trim());if(s.length===0)return{messages:[],lastUuid:null};let c=s.map(x=>xs.parse(x,i)).filter(x=>x!==null),d=new Map;c.forEach(x=>{x.uuid&&d.set(x.uuid,x)});let f=[...c].reverse().find(x=>x.uuid);if(!f||!f.uuid)return{messages:[],lastUuid:null};let m=[],h=f,C=new Set;for(;h&&h.uuid&&!(C.has(h.uuid)||(C.add(h.uuid),m.unshift(h),!h.parent_uuid));)h=d.get(h.parent_uuid);return{messages:m.filter(x=>x.message&&(x.message.role==="user"||x.message.role==="assistant")||x.tool_use_result).map(x=>this.convertToSessionMessage(x)),lastUuid:f.uuid}}catch(i){return v.error("\u274C Failed to load chained history",{sessionId:e,cwd:n,error:i instanceof Error?i.message:String(i)}),{messages:[],lastUuid:null}}}findSessionFile(e,n){if(n){let o=this.getProjectDirName(n),s=nI(this.projectsPath,o,`${e}.jsonl`);if(kk(s))return s}if(!kk(this.projectsPath))return null;let i=Fxe(this.projectsPath).filter(o=>{let s=nI(this.projectsPath,o);return Pxe(s).isDirectory()});for(let o of i){let s=nI(this.projectsPath,o,`${e}.jsonl`);if(kk(s))return s}return null}getProjectDirName(e){return(e.startsWith("/")?e:`/${e}`).replace(/\//g,"-")}extractRole(e){return e.author?.role||e.role||"user"}extractContent(e){return typeof e.content=="string"?e.content:e.content&&typeof e.content=="object"&&"parts"in e.content?(e.content.parts||[]).map(i=>i.text||"").filter(i=>i).join(`
|
|
210
210
|
`):""}convertToSessionMessage(e){if(e.tool_use_result&&e.message)return{role:e.message.role,content:e.message.content,contentType:typeof e.message.content=="string"?"text":"content_parts",timestamp:e.timestamp||new Date().toISOString(),uuid:e.uuid,messageId:e.message?.id,isToolResult:!0};if(e.tool_use_result)return{role:"tool",content:e.tool_use_result.stdout||e.tool_use_result.stderr||"",contentType:"text",timestamp:e.timestamp||new Date().toISOString(),uuid:e.uuid,isToolResult:!0};let n=e.message.role,i=e.message.content,o;return typeof i=="string"||Array.isArray(i)?o=i:o=String(i),{role:n,content:o,contentType:typeof o=="string"?"text":"content_parts",timestamp:e.timestamp||new Date().toISOString(),uuid:e.uuid,messageId:e.message?.id}}async fetchFromBackend(e,n){try{let i=la(),o=Ya();if(!o.accessToken&&!o.cueApiKey)return v.debug("No auth credentials for backend fallback",{sessionId:e}),{messages:[],lastUuid:null};let s={"Content-Type":"application/json"};o.accessToken?s.Authorization=`Bearer ${o.accessToken}`:o.cueApiKey&&(s["X-API-Key"]=o.cueApiKey),v.info("\u{1F504} Fetching session history from backend",{sessionId:e,baseUrl:i,hasAccessToken:!!o.accessToken,hasApiKey:!!o.cueApiKey});let c=await fetch(`${i}/api/v1/conversations/${e}/messages?limit=100`,{headers:s});if(!c.ok)return v.warn("Failed to fetch from backend",{sessionId:e,status:c.status,statusText:c.statusText}),{messages:[],lastUuid:null};let d=await c.json(),f=d.items||d.messages||d||[];if(f.length===0)return v.debug("No messages found in backend",{sessionId:e}),{messages:[],lastUuid:null};let m=f.map(C=>({role:this.extractRole(C),content:this.extractContent(C),contentType:"text",timestamp:C.created_at,uuid:C.id,messageId:C.id}));await this.saveToLocalJsonl(e,n,f);let h=m.length>0&&m[m.length-1].uuid||null;return v.info("\u2705 Backend fallback successful",{sessionId:e,messageCount:m.length,savedToLocal:!0}),{messages:m,lastUuid:h}}catch(i){return v.error("\u274C Backend fallback failed",{sessionId:e,error:i instanceof Error?i.message:String(i)}),{messages:[],lastUuid:null}}}async saveToLocalJsonl(e,n,i){try{let o=this.getProjectDirName(n),s=nI(this.projectsPath,o);kk(s)||$xe(s,{recursive:!0});let c=nI(s,`${e}.jsonl`),d=null;for(let f of i){let m=this.extractRole(f),h=this.extractContent(f),C={parentUuid:d,isSidechain:!1,userType:"external",cwd:n,sessionId:e,version:"0.0.1",type:m,message:{role:m,content:h},uuid:f.id,timestamp:f.created_at};Lxe(c,JSON.stringify(C)+`
|
|
211
|
-
`),d=f.id}v.debug("Saved backend messages to local JSONL",{sessionId:e,sessionFile:c,messageCount:i.length})}catch(o){v.error("Failed to save backend messages to local JSONL",{sessionId:e,error:o instanceof Error?o.message:String(o)})}}}});function jxe(t){if(!t)return!1;let e=t.toLowerCase();return e.includes("claude")||e.includes("sonnet")||e.includes("opus")||e.includes("haiku")||e.startsWith("claude-")}async function tne({sessionId:t,cwd:e,conversationHistory:n,model:i}){let o=new Nk;v.info("[Session Resume] Attempting to load history for session",{sessionId:t,cwd:e});try{let{messages:s,lastUuid:c}=await o.loadChainedHistory(t,e);if(s.length===0)return{messageCount:0,lastUuid:null};v.info(`[Session Resume] Successfully loaded ${s.length} messages from session history`,{sessionId:t,cwd:e,firstMessage:typeof s[0]?.content=="string"?s[0].content.substring(0,50):"Complex content",lastMessage:s[s.length-1]&&typeof s[s.length-1].content=="string"?s[s.length-1].content.substring(0,50):"Complex content"});let d=jxe(i);for(let f=0;f<s.length;f++){let m=s[f];if(m.isToolResult){if(d){if(m.role==="user"&&m.content&&Array.isArray(m.content)){let I={role:"user",content:m.content};n.addMessage(I),v.debug("Added Claude tool result as user message",{sessionId:t,model:i});continue}v.debug("Skipping legacy tool result for Claude model",{sessionId:t,model:i});continue}let h;for(let I=f-1;I>=0;I--){let x=s[I];if(x.role==="assistant"&&x.content&&Array.isArray(x.content)){let w=x.content.find(B=>typeof B=="object"&&B!==null&&"type"in B&&B.type==="tool_call");if(w&&"id"in w){h=w.id;break}}}let C={role:"tool",content:m.content,tool_call_id:h||"unknown"};n.addMessage(C)}else if(m.role==="assistant"&&Array.isArray(m.content)){let h=[],C=[];for(let I of m.content)if(typeof I=="object"&&I!==null&&"type"in I&&(I.type==="tool_call"||I.type==="tool_use")){let x=I;x.type==="tool_use"?h.push(x):h.push({id:x.id,type:"function",function:x.function})}else C.push(I);if(h.length>0)if(d){let I={role:"assistant",content:m.content};n.addMessage(I),v.debug("Loaded assistant message with embedded tool calls for Claude",{sessionId:t,model:i,toolCallsCount:h.length})}else{let I={role:"assistant",content:C.length>0?C.length===1&&C[0].type==="text"?C[0].text:C:null,tool_calls:h};n.addMessage(I),v.debug("Loaded assistant message with tool_calls field for OpenAI",{sessionId:t,toolCallsCount:h.length,hasTextContent:C.length>0})}else{let I={role:"assistant",content:m.content};n.addMessage(I)}}else{let h={role:m.role,content:m.content};n.addMessage(h)}}return c&&(Or.setLastParentUuid(t,c),v.info("[Session Resume] Session history loaded with parent chain restored",{sessionId:t,lastParentUuid:c,messageCount:s.length})),{messageCount:s.length,lastUuid:c}}catch(s){return v.error("\u274C Failed to load session history",{sessionId:t,cwd:e,error:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack:void 0}),{messageCount:0,lastUuid:null}}}var nne=T(()=>{Qt();ene();r_()});import{EventEmitter as Hxe}from"events";import{randomUUID as Gxe}from"crypto";var Kh,Lj=T(()=>{Qt();xk();sk();cu();Bk();n_();L3();vj();Ij();nne();cR();Kh=class extends Hxe{sessionId;processId;options;conversationHistory;state;tokenTracker;persistenceService;compactionService;historyLoadPromise;constructor(e,n,i={}){super(),this.sessionId=e,this.processId=n;let o=i.cwd||process.cwd();this.options={...i,cwd:o},this.conversationHistory=new rc(e),this.tokenTracker=new NS(e),this.compactionService=new ZS,this.persistenceService=new JS(e,{enabled:!0,cwd:this.options.cwd}),this.state={status:"idle",abortController:void 0,createdAt:new Date,lastActivityAt:new Date,messageCount:0},v.debug("CueSession created",{sessionId:e,processId:n,cwd:this.options.cwd,model:this.options.model,provider:this.options.provider,useStreamingRunner:this.options.useStreamingRunner}),this.persistenceService.setupEventListeners(this),this.historyLoadPromise=this.loadSessionHistory()}async sendMessage(e,n){if(this.state.status==="closed")throw new Error("Session is closed");if(this.state.status==="streaming"||this.state.status==="processing")throw v.warn("Session busy, cannot process message",{sessionId:this.sessionId,status:this.state.status}),new Error("Session is busy processing another message");if(!n?.isCompactSummary&&this.tokenTracker.shouldAutoCompact()){v.info("Auto-compacting before processing user input",{sessionId:this.sessionId,tokensUsed:this.tokenTracker.getTokenStats().totalTokensUsed,threshold:this.tokenTracker.getMaxTokens(),userMessage:e.substring(0,100)}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:"Compacting conversation history (exceeded 100k tokens)...",isSystemMessage:!0}});try{await this.compact(),v.info("Pre-processing compaction completed",{sessionId:this.sessionId,newTokenCount:this.tokenTracker.getTokenStats().totalTokensUsed})}catch(o){v.error("Pre-processing compaction failed, continuing anyway",{sessionId:this.sessionId,error:o instanceof Error?o.message:String(o)}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:"Warning: Compaction failed. Continuing with full history.",isSystemMessage:!0}})}}if(this.state={...this.state,status:"processing",lastActivityAt:new Date,messageCount:this.state.messageCount+1},!n?.isCompactSummary){let o;if(n?.attachments&&n.attachments.length>0){v.info("CueSession: Processing attachments",{count:n.attachments.length,attachments:n.attachments.map(d=>({type:d.type,hasData:!!d.data,dataLength:d.data?.length,mimeType:d.mimeType,name:d.name}))});let c=[];if(e){let d={type:"text",text:e};c.push(d)}for(let d of n.attachments)if(d.type==="image"&&d.data){let m={type:"image",source:{type:"base64",media_type:d.mimeType||"image/jpeg",data:d.data}};c.push(m),v.info("Added image attachment to user message",{name:d.name,mimeType:d.mimeType,dataLength:d.data?.length})}o=c}else o=e;let s={role:"user",content:o};this.conversationHistory.addMessage(s),this.emit("session-message",s)}let i=Gxe();this.emit("session-event",{type:"turn_start",sessionId:this.sessionId,data:{message:e,uuid:i,cwd:this.options.cwd,timestamp:new Date().toISOString(),isCompactSummary:n?.isCompactSummary}});try{this.state.abortController=new AbortController;let o=YS(this.options),s=(d,f)=>{v.debug("CueSession: Received session event",{eventType:d,...f}),this.emit("session-event",{type:d,sessionId:this.sessionId,data:f})},c=this.createStreamIterator(o,s);return this.state={...this.state,status:"streaming"},c}catch(o){throw this.state={...this.state,status:"error",error:o instanceof Error?o:new Error(String(o))},o}}async*createStreamIterator(e,n){try{let i={maxSteps:100,maxTokens:4e3,model:this.options.model||Mm("anthropic"),tools:ou(),systemPrompt:"You are a helpful AI assistant with access to various development tools.",stream:!0},o=i.model.toLowerCase(),s=o.includes("claude")||o.includes("sonnet")||o.includes("opus")||o.includes("haiku")||o.startsWith("claude-")||o==="claude-sonnet-4-5-20250929"||o==="claude-opus-4-5-20251101"||o==="claude-haiku-4-5-20251001",c=s?e.anthropicModel:e.openaiModel;if(!c)throw new Error(`No ${s?"Anthropic":"OpenAI"} model available from provider for model: ${i.model}`);v.debug("CueSession.createStreamIterator - agent",{model:i.model,providerType:e.config?.type||"unknown",isClaudeModel:s,hasAnthropicModel:!!e.anthropicModel,hasOpenAIModel:!!e.openaiModel,baseUrl:e.config?.type==="cue"?e.config.baseUrl:void 0,isProxy:e.config?.type==="cue",actualModelUsed:s?"anthropic":"openai"});let d={modelBase:c,hooks:{canContinue:async C=>{C.usage&&this.tokenTracker.updateTokenUsage(C.usage.inputTokens,C.usage.outputTokens);let I=this.tokenTracker.getTokenStats();return I.totalTokensUsed>this.tokenTracker.getMaxTokens()&&(v.warn("Token usage exceeds threshold during execution",{sessionId:this.sessionId,tokensUsed:I.totalTokensUsed,threshold:this.tokenTracker.getMaxTokens(),step:C.step,hasToolResults:C.lastStepResult?.nextStep==="runAgain"}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:`Note: Token usage at ${Math.round(I.percentageUsed)}% of limit. Compaction will occur after this response.`,isSystemMessage:!0}})),!0},canExecuteTool:async C=>(v.debug("CueSession: Tool execution check",{toolName:C.toolName,sessionId:C.sessionId}),!0)}},f={usage:{requests:0,inputTokens:0,outputTokens:0,cacheWriteTokens:0,cacheReadInputTokens:0},abortSignal:this.state.abortController?.signal,currentStep:0},m=new hd,h=C=>{let I=C.contentType;if(v.debug("buildMessageFromUpdate - full data:",{...C}),I=="text")return{id:C.uuid??"",content:[sA.text(C.content)],role:C.role,isUser:!1,timestamp:new Date};if(I=="content_parts")return{id:C.uuid??"",content:C.content,role:C.role,isUser:!1,timestamp:new Date};v.debug(`buildMessageFromUpdate - skip type: ${I}`)};if(this.options.useStreamingRunner){v.debug("CueSession: Calling agentRunner.runStreaming");let C=m.runStreaming(i,d,f,this.conversationHistory,n);v.debug("CueSession: Got streaming result, getting reader");let I=C.stream.getReader();try{for(v.debug("CueSession: Starting to read stream");;){let{done:x,value:w}=await I.read();if(v.debug("CueSession: Stream read result",{done:x,hasValue:!!w}),x)break;let B=w;if(B.eventType==="session_update"){let Q=h(B.data);Q&&(yield Q)}}v.debug("CueSession: Stream reading complete")}finally{I.releaseLock()}}else{let C=m.run(i,d,f,this.conversationHistory,n);for await(let I of C)if(I.eventType==="session_update"){let x=h(I.data);x&&(yield x)}}this.tokenTracker.shouldAutoCompact()&&(v.info("Compacting after response completion",{sessionId:this.sessionId,tokensUsed:this.tokenTracker.getTokenStats().totalTokensUsed,threshold:this.tokenTracker.getMaxTokens()}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:"Note: Conversation will be compacted before next message (exceeded 100k tokens).",isSystemMessage:!0}}))}finally{this.state={...this.state,status:"idle",lastActivityAt:new Date},v.debug("Stream iterator completed, status reset to idle",{sessionId:this.sessionId})}}getInfo(){return{sessionId:this.sessionId,projectId:this.options.projectId,processId:this.processId,cwd:this.options.cwd,model:this.options.model,provider:this.options.provider,createdAt:this.state.createdAt,lastActivityAt:this.state.lastActivityAt,messageCount:this.state.messageCount,isActive:this.state.status!=="closed"}}getTokenStats(){return this.tokenTracker.getTokenStats()}getConversationHistory(){return this.conversationHistory.getAllMessages()}async waitForHistoryLoad(){await this.historyLoadPromise}isActive(){return this.state.status!=="closed"&&this.state.status!=="error"}abort(){this.state.abortController&&!this.state.abortController.signal.aborted&&(this.state.abortController.abort(),this.state={...this.state,status:"idle"},v.info("Session aborted",{sessionId:this.sessionId}))}close(){this.abort(),this.state={...this.state,status:"closed"},this.persistenceService.cleanup(),this.removeAllListeners(),v.debug("Session closed",{sessionId:this.sessionId,messageCount:this.state.messageCount})}async loadSessionHistory(){v.info("\u{1F4C2} Loading session history...",{sessionId:this.sessionId,cwd:this.options.cwd});let{messageCount:e}=await tne({sessionId:this.sessionId,cwd:this.options.cwd,conversationHistory:this.conversationHistory,model:this.options.model});e>0?(this.state.messageCount=e,v.info(`\u2705 Session history loaded: ${e} messages`,{sessionId:this.sessionId,cwd:this.options.cwd})):v.info("\u{1F195} No existing history - starting fresh session",{sessionId:this.sessionId,cwd:this.options.cwd})}async compact(){if(this.state.status==="streaming"||this.state.status==="processing")throw new Error("Cannot compact while processing a message");return this.compactionService.compact({sessionId:this.sessionId,conversationHistory:this.conversationHistory,tokenTracker:this.tokenTracker,options:this.options,eventEmitter:this,abortSignal:this.state.abortController?.signal})}async updateModel(e){if(this.state.status==="streaming"||this.state.status==="processing")throw new Error("Cannot change model while processing a message");let n=this.options.model,i=this.isClaudeModel(n),o=this.isClaudeModel(e);this.options.model=e,v.info("Model changed",{sessionId:this.sessionId,oldModel:n,newModel:e,requiresReload:i!==o}),i!==o&&(v.info("Provider change detected, reloading conversation history",{sessionId:this.sessionId,fromProvider:i?"Claude":"OpenAI",toProvider:o?"Claude":"OpenAI"}),this.conversationHistory=new rc(this.sessionId),await this.loadSessionHistory(),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:`Model changed from ${n||"default"} to ${e}. History reloaded for compatibility.`,isSystemMessage:!0}}))}isClaudeModel(e){if(!e)return!1;let n=e.toLowerCase();return n.includes("claude")||n.includes("sonnet")||n.includes("opus")||n.includes("haiku")||n.startsWith("claude-")}}});import{randomUUID as Kxe}from"crypto";import{existsSync as qxe,readdirSync as Jxe,statSync as Yxe}from"fs";import{homedir as Zxe}from"os";import{join as $j}from"path";var nf,one=T(()=>{Qt();Lj();nf=class{sessions=new Map;sessionAccessTime=new Map;maxSessions;sessionTimeout;cleanupInterval;constructor(e=10,n=1440*60*1e3){this.maxSessions=e,this.sessionTimeout=n,this.startCleanupInterval(),v.debug("CueSessionManager initialized",{maxSessions:e,sessionTimeout:n})}async getOrCreateSession(e,n={}){if(n.continueLatest&&!e){let m=this.findLatestSessionForCwd(n.cwd);m&&(v.info("Found latest session for cwd (continueLatest)",{sessionId:m,cwd:n.cwd}),e=m)}if(e){let m=this.sessions.get(e);if(m&&m.isActive())return v.info("Reusing existing live session (HOT RESUME)",{sessionId:e,isHotResume:!0,currentModel:m.getInfo().model,requestedModel:n.model}),this.sessionAccessTime.set(e,new Date),n.model&&n.model!==m.getInfo().model&&(v.info("Model change detected in existing session",{sessionId:e,oldModel:m.getInfo().model,newModel:n.model}),await m.updateModel(n.model)),{session:m,isNew:!1,sessionId:e,state:"resumed_hot"}}let i=e||Kxe(),o=`cue-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,s=e!=null;v.debug(s?"Resuming Cue session from disk (COLD RESUME)":"Creating new Cue session",{sessionId:i,processId:o,isNew:!s,isResumingFromDisk:s}),this.sessions.size>=this.maxSessions&&await this.cleanupOldestSession();let c={...n,sessionId:i},d=new Kh(i,o,c);return n.onMessage&&(d.on("session-message",m=>{n.onMessage(m)}),d.on("partial",m=>{n.onMessage(m)})),this.sessions.set(i,d),this.sessionAccessTime.set(i,new Date),{session:d,isNew:!s,sessionId:i,state:s?"resumed_cold":"created"}}findLatestSessionForCwd(e){if(e)try{let n=e.replace(/\//g,"-").replace(/^-/,""),i=$j(Zxe(),".cue","projects",n);if(!qxe(i)){v.debug("Cue project directory not found",{projectDir:i});return}let o=Jxe(i).filter(c=>c.endsWith(".jsonl")).map(c=>({name:c,path:$j(i,c),mtime:Yxe($j(i,c)).mtime})).sort((c,d)=>d.mtime.getTime()-c.mtime.getTime());if(o.length===0){v.debug("No Cue session files found",{projectDir:i});return}let s=o[0].name.replace(".jsonl","");return v.info("Found latest Cue session for cwd",{cwd:e,sessionId:s,fileCount:o.length}),s}catch(n){v.error("Error finding latest Cue session",{error:String(n)});return}}async sendMessage(e,n,i=!1){let o=this.sessions.get(e);if(!o)if(i)o=(await this.getOrCreateSession(e)).session;else throw new Error(`No active session found: ${e}`);return this.sessionAccessTime.set(e,new Date),o.sendMessage(n)}async closeSession(e){let n=this.sessions.get(e);n&&(n.close(),this.sessionAccessTime.delete(e),v.debug("Session closed",{sessionId:e}))}async stopSession(e){let n=this.sessions.get(e);n?(n.abort(),v.info("Session stopped (aborted)",{sessionId:e})):v.warn("Cannot stop: session not found",{sessionId:e})}async resetSession(e){let n=this.sessions.get(e);n?(n.close(),this.sessions.delete(e),this.sessionAccessTime.delete(e),v.info("Session reset: closed and removed from memory",{sessionId:e,info:"Session will be recreated on next message"})):v.warn("Cannot reset: session not found",{sessionId:e})}async clearAndResetSession(e,n){let i=this.sessions.get(e),o=n||i?.getInfo().cwd||process.cwd(),{cueSessionPersistence:s}=await Promise.resolve().then(()=>(r_(),wte));s.clearSessionMessages(e,o)&&v.info("Session messages cleared from disk",{sessionId:e,cwd:o}),i?(i.close(),this.sessions.delete(e),this.sessionAccessTime.delete(e),v.info("Session cleared and reset: messages deleted, session removed from memory",{sessionId:e,cwd:o,info:"Session will start fresh on next message"})):v.info("Session cleared: messages deleted from disk",{sessionId:e,cwd:o,info:"Session was not in memory"})}async deleteSession(e,n=!0){v.info("Deleting session",{sessionId:e,deleteFromDisk:n});let i=this.sessions.get(e);return i&&(i.close(),this.sessions.delete(e),this.sessionAccessTime.delete(e)),!0}async cleanupOldestSession(){let e=new Date,n=null;for(let[i,o]of this.sessionAccessTime.entries())o<e&&(e=o,n=i);n&&(v.info("Cleaning up oldest session due to limit",{sessionId:n,accessTime:e}),await this.closeSession(n))}startCleanupInterval(){this.cleanupInterval=setInterval(async()=>{let e=new Date,n=[];for(let[i,o]of this.sessionAccessTime.entries())e.getTime()-o.getTime()>this.sessionTimeout&&n.push(i);for(let i of n)v.info("Cleaning up expired session",{sessionId:i}),await this.closeSession(i)},6e4)}getActiveSessions(){return Array.from(this.sessions.values()).map(e=>e.getInfo())}getSession(e){return this.sessions.get(e)}async cleanup(){v.debug("Cleaning up all sessions",{count:this.sessions.size}),this.cleanupInterval&&clearInterval(this.cleanupInterval);for(let[,e]of this.sessions.entries())e.close();this.sessions.clear(),this.sessionAccessTime.clear()}}});var ine=T(()=>{});var sne=T(()=>{Lj();one();ine()});import{readFileSync as rne}from"fs";import{join as ane,dirname as Wxe}from"path";import{fileURLToPath as Vxe}from"url";function zj(){try{let t=ane(cne,"../../cli/package.json");return JSON.parse(rne(t,"utf-8")).version}catch{try{let t=ane(cne,"../package.json");return JSON.parse(rne(t,"utf-8")).version}catch{return"0.0.1"}}}function lne(){return`Cue-CLI/${zj()} (${process.platform}; Node.js ${process.version})`}var Xxe,cne,une=T(()=>{Xxe=Vxe(import.meta.url),cne=Wxe(Xxe)});var dne=T(()=>{});var sA,pne=T(()=>{sA={text:t=>({type:"text",text:t}),toolUse:(t,e,n)=>({type:"tool_use",id:t,name:e,input:n}),toolCall:(t,e,n)=>({type:"tool_call",id:t,function:{name:e,arguments:n}}),toolMessage:(t,e,n)=>({type:"tool_message",role:t,content:e,tool_call_id:n}),thinking:(t,e)=>({type:"thinking",thinking:t,signature:e}),code:(t,e="plaintext")=>({type:"code",text:t,language:e}),table:t=>({type:"table",markdownText:t}),toolResult:(t,e,n)=>({type:"tool_result",tool_use_id:t,content:e,is_error:n}),getId:(t,e,n)=>{switch(e.type){case"tool_use":return`${t}_${e.id}_${e.type}_${n}`;case"tool_call":return`${t}_${e.id}_${e.type}_${n}`;case"tool_message":return`${t}_${e.tool_call_id}_${e.type}_${n}`;case"tool_result":return`${t}_${e.tool_use_id}_${e.type}_${n}`;default:return`${t}_${e.type}_${n}`}},parseTextContent:t=>{let e=t.trim();if(!e)return[];let n=[],i=e.split(`
|
|
211
|
+
`),d=f.id}v.debug("Saved backend messages to local JSONL",{sessionId:e,sessionFile:c,messageCount:i.length})}catch(o){v.error("Failed to save backend messages to local JSONL",{sessionId:e,error:o instanceof Error?o.message:String(o)})}}}});function jxe(t){if(!t)return!1;let e=t.toLowerCase();return e.includes("claude")||e.includes("sonnet")||e.includes("opus")||e.includes("haiku")||e.startsWith("claude-")}async function tne({sessionId:t,cwd:e,conversationHistory:n,model:i}){let o=new Nk;v.info("[Session Resume] Attempting to load history for session",{sessionId:t,cwd:e});try{let{messages:s,lastUuid:c}=await o.loadChainedHistory(t,e);if(s.length===0)return{messageCount:0,lastUuid:null};v.info(`[Session Resume] Successfully loaded ${s.length} messages from session history`,{sessionId:t,cwd:e,firstMessage:typeof s[0]?.content=="string"?s[0].content.substring(0,50):"Complex content",lastMessage:s[s.length-1]&&typeof s[s.length-1].content=="string"?s[s.length-1].content.substring(0,50):"Complex content"});let d=jxe(i);for(let f=0;f<s.length;f++){let m=s[f];if(m.isToolResult){if(d){if(m.role==="user"&&m.content&&Array.isArray(m.content)){let I={role:"user",content:m.content};n.addMessage(I),v.debug("Added Claude tool result as user message",{sessionId:t,model:i});continue}v.debug("Skipping legacy tool result for Claude model",{sessionId:t,model:i});continue}let h;for(let I=f-1;I>=0;I--){let x=s[I];if(x.role==="assistant"&&x.content&&Array.isArray(x.content)){let w=x.content.find(B=>typeof B=="object"&&B!==null&&"type"in B&&B.type==="tool_call");if(w&&"id"in w){h=w.id;break}}}let C={role:"tool",content:m.content,tool_call_id:h||"unknown"};n.addMessage(C)}else if(m.role==="assistant"&&Array.isArray(m.content)){let h=[],C=[];for(let I of m.content)if(typeof I=="object"&&I!==null&&"type"in I&&(I.type==="tool_call"||I.type==="tool_use")){let x=I;x.type==="tool_use"?h.push(x):h.push({id:x.id,type:"function",function:x.function})}else C.push(I);if(h.length>0)if(d){let I={role:"assistant",content:m.content};n.addMessage(I),v.debug("Loaded assistant message with embedded tool calls for Claude",{sessionId:t,model:i,toolCallsCount:h.length})}else{let I={role:"assistant",content:C.length>0?C.length===1&&C[0].type==="text"?C[0].text:C:null,tool_calls:h};n.addMessage(I),v.debug("Loaded assistant message with tool_calls field for OpenAI",{sessionId:t,toolCallsCount:h.length,hasTextContent:C.length>0})}else{let I={role:"assistant",content:m.content};n.addMessage(I)}}else{let h={role:m.role,content:m.content};n.addMessage(h)}}return c&&(Or.setLastParentUuid(t,c),v.info("[Session Resume] Session history loaded with parent chain restored",{sessionId:t,lastParentUuid:c,messageCount:s.length})),{messageCount:s.length,lastUuid:c}}catch(s){return v.error("\u274C Failed to load session history",{sessionId:t,cwd:e,error:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack:void 0}),{messageCount:0,lastUuid:null}}}var nne=T(()=>{Qt();ene();r_()});import{EventEmitter as Hxe}from"events";import{randomUUID as Gxe}from"crypto";var Kh,Lj=T(()=>{Qt();xk();sk();cu();Bk();n_();L3();vj();Ij();nne();cR();Kh=class extends Hxe{sessionId;processId;options;conversationHistory;state;tokenTracker;persistenceService;compactionService;historyLoadPromise;constructor(e,n,i={}){super(),this.sessionId=e,this.processId=n;let o=i.cwd||process.cwd();this.options={...i,cwd:o},this.conversationHistory=new rc(e),this.tokenTracker=new NS(e),this.compactionService=new ZS,this.persistenceService=new JS(e,{enabled:!0,cwd:this.options.cwd,backendSyncEnabled:!0}),this.state={status:"idle",abortController:void 0,createdAt:new Date,lastActivityAt:new Date,messageCount:0},v.debug("CueSession created",{sessionId:e,processId:n,cwd:this.options.cwd,model:this.options.model,provider:this.options.provider,useStreamingRunner:this.options.useStreamingRunner}),this.persistenceService.setupEventListeners(this),this.historyLoadPromise=this.loadSessionHistory()}async sendMessage(e,n){if(this.state.status==="closed")throw new Error("Session is closed");if(this.state.status==="streaming"||this.state.status==="processing")throw v.warn("Session busy, cannot process message",{sessionId:this.sessionId,status:this.state.status}),new Error("Session is busy processing another message");if(!n?.isCompactSummary&&this.tokenTracker.shouldAutoCompact()){v.info("Auto-compacting before processing user input",{sessionId:this.sessionId,tokensUsed:this.tokenTracker.getTokenStats().totalTokensUsed,threshold:this.tokenTracker.getMaxTokens(),userMessage:e.substring(0,100)}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:"Compacting conversation history (exceeded 100k tokens)...",isSystemMessage:!0}});try{await this.compact(),v.info("Pre-processing compaction completed",{sessionId:this.sessionId,newTokenCount:this.tokenTracker.getTokenStats().totalTokensUsed})}catch(o){v.error("Pre-processing compaction failed, continuing anyway",{sessionId:this.sessionId,error:o instanceof Error?o.message:String(o)}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:"Warning: Compaction failed. Continuing with full history.",isSystemMessage:!0}})}}if(this.state={...this.state,status:"processing",lastActivityAt:new Date,messageCount:this.state.messageCount+1},!n?.isCompactSummary){let o;if(n?.attachments&&n.attachments.length>0){v.info("CueSession: Processing attachments",{count:n.attachments.length,attachments:n.attachments.map(d=>({type:d.type,hasData:!!d.data,dataLength:d.data?.length,mimeType:d.mimeType,name:d.name}))});let c=[];if(e){let d={type:"text",text:e};c.push(d)}for(let d of n.attachments)if(d.type==="image"&&d.data){let m={type:"image",source:{type:"base64",media_type:d.mimeType||"image/jpeg",data:d.data}};c.push(m),v.info("Added image attachment to user message",{name:d.name,mimeType:d.mimeType,dataLength:d.data?.length})}o=c}else o=e;let s={role:"user",content:o};this.conversationHistory.addMessage(s),this.emit("session-message",s)}let i=Gxe();this.emit("session-event",{type:"turn_start",sessionId:this.sessionId,data:{message:e,uuid:i,cwd:this.options.cwd,timestamp:new Date().toISOString(),isCompactSummary:n?.isCompactSummary}});try{this.state.abortController=new AbortController;let o=YS(this.options),s=(d,f)=>{v.debug("CueSession: Received session event",{eventType:d,...f}),this.emit("session-event",{type:d,sessionId:this.sessionId,data:f})},c=this.createStreamIterator(o,s);return this.state={...this.state,status:"streaming"},c}catch(o){throw this.state={...this.state,status:"error",error:o instanceof Error?o:new Error(String(o))},o}}async*createStreamIterator(e,n){try{let i={maxSteps:100,maxTokens:4e3,model:this.options.model||Mm("anthropic"),tools:ou(),systemPrompt:"You are a helpful AI assistant with access to various development tools.",stream:!0},o=i.model.toLowerCase(),s=o.includes("claude")||o.includes("sonnet")||o.includes("opus")||o.includes("haiku")||o.startsWith("claude-")||o==="claude-sonnet-4-5-20250929"||o==="claude-opus-4-5-20251101"||o==="claude-haiku-4-5-20251001",c=s?e.anthropicModel:e.openaiModel;if(!c)throw new Error(`No ${s?"Anthropic":"OpenAI"} model available from provider for model: ${i.model}`);v.debug("CueSession.createStreamIterator - agent",{model:i.model,providerType:e.config?.type||"unknown",isClaudeModel:s,hasAnthropicModel:!!e.anthropicModel,hasOpenAIModel:!!e.openaiModel,baseUrl:e.config?.type==="cue"?e.config.baseUrl:void 0,isProxy:e.config?.type==="cue",actualModelUsed:s?"anthropic":"openai"});let d={modelBase:c,hooks:{canContinue:async C=>{C.usage&&this.tokenTracker.updateTokenUsage(C.usage.inputTokens,C.usage.outputTokens);let I=this.tokenTracker.getTokenStats();return I.totalTokensUsed>this.tokenTracker.getMaxTokens()&&(v.warn("Token usage exceeds threshold during execution",{sessionId:this.sessionId,tokensUsed:I.totalTokensUsed,threshold:this.tokenTracker.getMaxTokens(),step:C.step,hasToolResults:C.lastStepResult?.nextStep==="runAgain"}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:`Note: Token usage at ${Math.round(I.percentageUsed)}% of limit. Compaction will occur after this response.`,isSystemMessage:!0}})),!0},canExecuteTool:async C=>(v.debug("CueSession: Tool execution check",{toolName:C.toolName,sessionId:C.sessionId}),!0)}},f={usage:{requests:0,inputTokens:0,outputTokens:0,cacheWriteTokens:0,cacheReadInputTokens:0},abortSignal:this.state.abortController?.signal,currentStep:0},m=new hd,h=C=>{let I=C.contentType;if(v.debug("buildMessageFromUpdate - full data:",{...C}),I=="text")return{id:C.uuid??"",content:[sA.text(C.content)],role:C.role,isUser:!1,timestamp:new Date};if(I=="content_parts")return{id:C.uuid??"",content:C.content,role:C.role,isUser:!1,timestamp:new Date};v.debug(`buildMessageFromUpdate - skip type: ${I}`)};if(this.options.useStreamingRunner){v.debug("CueSession: Calling agentRunner.runStreaming");let C=m.runStreaming(i,d,f,this.conversationHistory,n);v.debug("CueSession: Got streaming result, getting reader");let I=C.stream.getReader();try{for(v.debug("CueSession: Starting to read stream");;){let{done:x,value:w}=await I.read();if(v.debug("CueSession: Stream read result",{done:x,hasValue:!!w}),x)break;let B=w;if(B.eventType==="session_update"){let Q=h(B.data);Q&&(yield Q)}}v.debug("CueSession: Stream reading complete")}finally{I.releaseLock()}}else{let C=m.run(i,d,f,this.conversationHistory,n);for await(let I of C)if(I.eventType==="session_update"){let x=h(I.data);x&&(yield x)}}this.tokenTracker.shouldAutoCompact()&&(v.info("Compacting after response completion",{sessionId:this.sessionId,tokensUsed:this.tokenTracker.getTokenStats().totalTokensUsed,threshold:this.tokenTracker.getMaxTokens()}),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:"Note: Conversation will be compacted before next message (exceeded 100k tokens).",isSystemMessage:!0}}))}finally{this.state={...this.state,status:"idle",lastActivityAt:new Date},v.debug("Stream iterator completed, status reset to idle",{sessionId:this.sessionId})}}getInfo(){return{sessionId:this.sessionId,projectId:this.options.projectId,processId:this.processId,cwd:this.options.cwd,model:this.options.model,provider:this.options.provider,createdAt:this.state.createdAt,lastActivityAt:this.state.lastActivityAt,messageCount:this.state.messageCount,isActive:this.state.status!=="closed"}}getTokenStats(){return this.tokenTracker.getTokenStats()}getConversationHistory(){return this.conversationHistory.getAllMessages()}async waitForHistoryLoad(){await this.historyLoadPromise}isActive(){return this.state.status!=="closed"&&this.state.status!=="error"}abort(){this.state.abortController&&!this.state.abortController.signal.aborted&&(this.state.abortController.abort(),this.state={...this.state,status:"idle"},v.info("Session aborted",{sessionId:this.sessionId}))}close(){this.abort(),this.state={...this.state,status:"closed"},this.persistenceService.cleanup(),this.removeAllListeners(),v.debug("Session closed",{sessionId:this.sessionId,messageCount:this.state.messageCount})}async loadSessionHistory(){v.info("\u{1F4C2} Loading session history...",{sessionId:this.sessionId,cwd:this.options.cwd});let{messageCount:e}=await tne({sessionId:this.sessionId,cwd:this.options.cwd,conversationHistory:this.conversationHistory,model:this.options.model});e>0?(this.state.messageCount=e,v.info(`\u2705 Session history loaded: ${e} messages`,{sessionId:this.sessionId,cwd:this.options.cwd})):v.info("\u{1F195} No existing history - starting fresh session",{sessionId:this.sessionId,cwd:this.options.cwd})}async compact(){if(this.state.status==="streaming"||this.state.status==="processing")throw new Error("Cannot compact while processing a message");return this.compactionService.compact({sessionId:this.sessionId,conversationHistory:this.conversationHistory,tokenTracker:this.tokenTracker,options:this.options,eventEmitter:this,abortSignal:this.state.abortController?.signal})}async updateModel(e){if(this.state.status==="streaming"||this.state.status==="processing")throw new Error("Cannot change model while processing a message");let n=this.options.model,i=this.isClaudeModel(n),o=this.isClaudeModel(e);this.options.model=e,v.info("Model changed",{sessionId:this.sessionId,oldModel:n,newModel:e,requiresReload:i!==o}),i!==o&&(v.info("Provider change detected, reloading conversation history",{sessionId:this.sessionId,fromProvider:i?"Claude":"OpenAI",toProvider:o?"Claude":"OpenAI"}),this.conversationHistory=new rc(this.sessionId),await this.loadSessionHistory(),this.emit("session-event",{type:on.UPDATE,sessionId:this.sessionId,data:{role:"system",content:`Model changed from ${n||"default"} to ${e}. History reloaded for compatibility.`,isSystemMessage:!0}}))}isClaudeModel(e){if(!e)return!1;let n=e.toLowerCase();return n.includes("claude")||n.includes("sonnet")||n.includes("opus")||n.includes("haiku")||n.startsWith("claude-")}}});import{randomUUID as Kxe}from"crypto";import{existsSync as qxe,readdirSync as Jxe,statSync as Yxe}from"fs";import{homedir as Zxe}from"os";import{join as $j}from"path";var nf,one=T(()=>{Qt();Lj();nf=class{sessions=new Map;sessionAccessTime=new Map;maxSessions;sessionTimeout;cleanupInterval;constructor(e=10,n=1440*60*1e3){this.maxSessions=e,this.sessionTimeout=n,this.startCleanupInterval(),v.debug("CueSessionManager initialized",{maxSessions:e,sessionTimeout:n})}async getOrCreateSession(e,n={}){if(n.continueLatest&&!e){let m=this.findLatestSessionForCwd(n.cwd);m&&(v.info("Found latest session for cwd (continueLatest)",{sessionId:m,cwd:n.cwd}),e=m)}if(e){let m=this.sessions.get(e);if(m&&m.isActive())return v.info("Reusing existing live session (HOT RESUME)",{sessionId:e,isHotResume:!0,currentModel:m.getInfo().model,requestedModel:n.model}),this.sessionAccessTime.set(e,new Date),n.model&&n.model!==m.getInfo().model&&(v.info("Model change detected in existing session",{sessionId:e,oldModel:m.getInfo().model,newModel:n.model}),await m.updateModel(n.model)),{session:m,isNew:!1,sessionId:e,state:"resumed_hot"}}let i=e||Kxe(),o=`cue-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,s=e!=null;v.debug(s?"Resuming Cue session from disk (COLD RESUME)":"Creating new Cue session",{sessionId:i,processId:o,isNew:!s,isResumingFromDisk:s}),this.sessions.size>=this.maxSessions&&await this.cleanupOldestSession();let c={...n,sessionId:i},d=new Kh(i,o,c);return n.onMessage&&(d.on("session-message",m=>{n.onMessage(m)}),d.on("partial",m=>{n.onMessage(m)})),this.sessions.set(i,d),this.sessionAccessTime.set(i,new Date),{session:d,isNew:!s,sessionId:i,state:s?"resumed_cold":"created"}}findLatestSessionForCwd(e){if(e)try{let n=e.replace(/\//g,"-").replace(/^-/,""),i=$j(Zxe(),".cue","projects",n);if(!qxe(i)){v.debug("Cue project directory not found",{projectDir:i});return}let o=Jxe(i).filter(c=>c.endsWith(".jsonl")).map(c=>({name:c,path:$j(i,c),mtime:Yxe($j(i,c)).mtime})).sort((c,d)=>d.mtime.getTime()-c.mtime.getTime());if(o.length===0){v.debug("No Cue session files found",{projectDir:i});return}let s=o[0].name.replace(".jsonl","");return v.info("Found latest Cue session for cwd",{cwd:e,sessionId:s,fileCount:o.length}),s}catch(n){v.error("Error finding latest Cue session",{error:String(n)});return}}async sendMessage(e,n,i=!1){let o=this.sessions.get(e);if(!o)if(i)o=(await this.getOrCreateSession(e)).session;else throw new Error(`No active session found: ${e}`);return this.sessionAccessTime.set(e,new Date),o.sendMessage(n)}async closeSession(e){let n=this.sessions.get(e);n&&(n.close(),this.sessionAccessTime.delete(e),v.debug("Session closed",{sessionId:e}))}async stopSession(e){let n=this.sessions.get(e);n?(n.abort(),v.info("Session stopped (aborted)",{sessionId:e})):v.warn("Cannot stop: session not found",{sessionId:e})}async resetSession(e){let n=this.sessions.get(e);n?(n.close(),this.sessions.delete(e),this.sessionAccessTime.delete(e),v.info("Session reset: closed and removed from memory",{sessionId:e,info:"Session will be recreated on next message"})):v.warn("Cannot reset: session not found",{sessionId:e})}async clearAndResetSession(e,n){let i=this.sessions.get(e),o=n||i?.getInfo().cwd||process.cwd(),{cueSessionPersistence:s}=await Promise.resolve().then(()=>(r_(),wte));s.clearSessionMessages(e,o)&&v.info("Session messages cleared from disk",{sessionId:e,cwd:o}),i?(i.close(),this.sessions.delete(e),this.sessionAccessTime.delete(e),v.info("Session cleared and reset: messages deleted, session removed from memory",{sessionId:e,cwd:o,info:"Session will start fresh on next message"})):v.info("Session cleared: messages deleted from disk",{sessionId:e,cwd:o,info:"Session was not in memory"})}async deleteSession(e,n=!0){v.info("Deleting session",{sessionId:e,deleteFromDisk:n});let i=this.sessions.get(e);return i&&(i.close(),this.sessions.delete(e),this.sessionAccessTime.delete(e)),!0}async cleanupOldestSession(){let e=new Date,n=null;for(let[i,o]of this.sessionAccessTime.entries())o<e&&(e=o,n=i);n&&(v.info("Cleaning up oldest session due to limit",{sessionId:n,accessTime:e}),await this.closeSession(n))}startCleanupInterval(){this.cleanupInterval=setInterval(async()=>{let e=new Date,n=[];for(let[i,o]of this.sessionAccessTime.entries())e.getTime()-o.getTime()>this.sessionTimeout&&n.push(i);for(let i of n)v.info("Cleaning up expired session",{sessionId:i}),await this.closeSession(i)},6e4)}getActiveSessions(){return Array.from(this.sessions.values()).map(e=>e.getInfo())}getSession(e){return this.sessions.get(e)}async cleanup(){v.debug("Cleaning up all sessions",{count:this.sessions.size}),this.cleanupInterval&&clearInterval(this.cleanupInterval);for(let[,e]of this.sessions.entries())e.close();this.sessions.clear(),this.sessionAccessTime.clear()}}});var ine=T(()=>{});var sne=T(()=>{Lj();one();ine()});import{readFileSync as rne}from"fs";import{join as ane,dirname as Wxe}from"path";import{fileURLToPath as Vxe}from"url";function zj(){try{let t=ane(cne,"../../cli/package.json");return JSON.parse(rne(t,"utf-8")).version}catch{try{let t=ane(cne,"../package.json");return JSON.parse(rne(t,"utf-8")).version}catch{return"0.0.1"}}}function lne(){return`Cue-CLI/${zj()} (${process.platform}; Node.js ${process.version})`}var Xxe,cne,une=T(()=>{Xxe=Vxe(import.meta.url),cne=Wxe(Xxe)});var dne=T(()=>{});var sA,pne=T(()=>{sA={text:t=>({type:"text",text:t}),toolUse:(t,e,n)=>({type:"tool_use",id:t,name:e,input:n}),toolCall:(t,e,n)=>({type:"tool_call",id:t,function:{name:e,arguments:n}}),toolMessage:(t,e,n)=>({type:"tool_message",role:t,content:e,tool_call_id:n}),thinking:(t,e)=>({type:"thinking",thinking:t,signature:e}),code:(t,e="plaintext")=>({type:"code",text:t,language:e}),table:t=>({type:"table",markdownText:t}),toolResult:(t,e,n)=>({type:"tool_result",tool_use_id:t,content:e,is_error:n}),getId:(t,e,n)=>{switch(e.type){case"tool_use":return`${t}_${e.id}_${e.type}_${n}`;case"tool_call":return`${t}_${e.id}_${e.type}_${n}`;case"tool_message":return`${t}_${e.tool_call_id}_${e.type}_${n}`;case"tool_result":return`${t}_${e.tool_use_id}_${e.type}_${n}`;default:return`${t}_${e.type}_${n}`}},parseTextContent:t=>{let e=t.trim();if(!e)return[];let n=[],i=e.split(`
|
|
212
212
|
`),o=0;for(;o<i.length;){let s=i[o].trim();if(s.startsWith("```")){let c=s.slice(3).trim()||"plaintext";o++;let d=[];for(;o<i.length&&!i[o].trim().startsWith("```");)d.push(i[o]),o++;n.push(sA.code(d.join(`
|
|
213
213
|
`),c)),o++}else if(s.includes("|")&&s.split("|").length>2){let c=[i[o]];for(o++;o<i.length&&i[o].includes("|");)c.push(i[o]),o++;n.push(sA.table(c.join(`
|
|
214
214
|
`)))}else{let c=[];for(;o<i.length&&!i[o].trim().startsWith("```")&&!(i[o].includes("|")&&i[o].split("|").length>2);)c.push(i[o]),o++;let d=c.join(`
|
package/package.json
CHANGED
package/cue-v0.0.64.tar.gz
DELETED
|
Binary file
|