@panda-agent/panda-cli 0.1.27 → 0.1.28

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.
@@ -1,13 +1,13 @@
1
- var fp=Object.defineProperty;var HC=Object.getOwnPropertyDescriptor;var m3=Object.getOwnPropertyNames;var g3=Object.prototype.hasOwnProperty;var gc=(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 Be=(t,e)=>()=>(t&&(e=t(t=0)),e);var dn=(t,e)=>{for(var n in e)fp(t,n,{get:e[n],enumerable:!0})},h3=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of m3(e))!g3.call(t,r)&&r!==n&&fp(t,r,{get:()=>e[r],enumerable:!(o=HC(e,r))||o.enumerable});return t};var y3=t=>h3(fp({},"__esModule",{value:!0}),t),ma=(t,e,n,o)=>{for(var r=o>1?void 0:o?HC(e,n):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(r=(o?s(e,n,r):s(r))||r);return o&&r&&fp(e,n,r),r},Or=(t,e)=>(n,o)=>e(n,o,t);var ls,mp=Be(()=>{"use strict";ls=class{events=new Map;maxListeners=10;on(e,n){this.events.has(e)||this.events.set(e,[]);let o=this.events.get(e);return o.length>=this.maxListeners&&this.maxListeners>0&&console.warn(`MaxListenersExceededWarning: Possible EventEmitter memory leak detected. ${o.length+1} listeners added for event "${e}". Use emitter.setMaxListeners() to increase limit.`),o.push(n),this}once(e,n){let o=(...r)=>{this.off(e,o),n(...r)};return o.listener=n,this.on(e,o)}emit(e,...n){let o=this.events.get(e);if(o&&o.length>0){let r=[...o];for(let i of r)try{i(...n)}catch(s){console.error(`[EventEmitter] Error in listener for event "${e}":`,s)}return!0}return!1}off(e,n){let o=this.events.get(e);if(o){let r=o.findIndex(i=>i===n||i.listener===n);r>-1&&o.splice(r,1)}return this}removeListener(e,n){return this.off(e,n)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listenerCount(e){return this.events.get(e)?.length||0}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}listeners(e){return[...this.events.get(e)||[]]}eventNames(){return[...this.events.keys()]}}});var hc,C1=Be(()=>{"use strict";mp();hc=class{emitter;streamingSubscriptions=new Map;sequenceNumbers=new Map;debug;constructor(e=!1){this.emitter=new ls,this.emitter.setMaxListeners(100),this.debug=e}emit(e,n){this.validatePayload(n),this.debug,n.timestamp||(n.timestamp=Date.now()),this.emitter.emit(e,n)}on(e,n){return this.emitter.on(e,n),()=>{this.emitter.off(e,n)}}once(e,n){return this.emitter.once(e,n),()=>{this.emitter.off(e,n)}}off(e,n){this.emitter.off(e,n)}async emitStreaming(e,n,o=!1){this.validatePayload(n);let r=n.conversationId,i=`${String(e)}:${r}`;this.sequenceNumbers.has(i)||this.sequenceNumbers.set(i,0);let s=this.sequenceNumbers.get(i);o?this.sequenceNumbers.delete(i):this.sequenceNumbers.set(i,s+1),this.debug,n.timestamp||(n.timestamp=Date.now());let a=this.streamingSubscriptions.get(e);if(a&&a.size>0){let l=[];for(let c of a)try{let u=c(n,o,s,r);u instanceof Promise&&l.push(u)}catch(u){console.error(`[EventBus] Error in streaming event handler for ${String(e)}:`,u)}l.length>0&&await Promise.all(l)}}subscribeStreaming(e,n){this.streamingSubscriptions.has(e)||this.streamingSubscriptions.set(e,new Set);let o=this.streamingSubscriptions.get(e);return o.add(n),()=>{o.delete(n),o.size===0&&this.streamingSubscriptions.delete(e)}}subscribeStreamingForChannel(e,n,o){let r=(i,s,a,l)=>{if(l===n)return o(i,s,a,l)};return this.subscribeStreaming(e,r)}resetStreamingSequence(e,n){let o=`${String(e)}:${n}`;this.sequenceNumbers.delete(o),this.debug}getStreamingSequence(e,n){let o=`${String(e)}:${n}`;return this.sequenceNumbers.get(o)||0}validatePayload(e){if(!e.conversationId)throw new Error("[EventBus] Event payload must contain conversationId")}listenerCount(e){let n=this.emitter.listenerCount(e),o=this.streamingSubscriptions.get(e)?.size||0;return n+o}removeAllListeners(e){e?(this.emitter.removeAllListeners(e),this.streamingSubscriptions.delete(e)):(this.emitter.removeAllListeners(),this.streamingSubscriptions.clear(),this.sequenceNumbers.clear())}destroy(){this.removeAllListeners(),this.debug}}});var P,Lr=Be(()=>{"use strict";P={TURN_CREATED:"turn-created",TURN_STARTED:"turn-started",TURN_COMPLETED:"turn-completed",TURN_FAILED:"turn-failed",TURN_CANCELLED:"turn-cancelled",TURN_CANCEL_RESOLVED:"turn-cancel-resolved",TURN_PAUSED:"turn-paused",TURN_RESUMED:"turn-resumed",WORK_STARTED:"work-started",WORK_COMPLETED:"work-completed",WORK_FAILED:"work-failed",THINKING_STARTED:"thinking-started",THINKING_STREAMING:"thinking-streaming",USER_MESSAGE_ADDED:"user-message-added",ASSISTANT_MESSAGE_STARTED:"assistant-message-started",MESSAGE_STREAMING:"message-streaming",MESSAGE_COMPLETED:"message-completed",TOOL_CALL_DETECTED:"tool-call-detected",TOOL_CALL_ARGS_STREAMING:"tool-call-args-streaming",TOOL_CALL_REQUESTED:"tool-call-requested",TOOL_CALL_EXECUTING:"tool-call-executing",TOOL_CALL_EXECUTED:"tool-call-executed",TOOL_CALL_PROGRESS:"tool-call-progress",TOOL_CALL_FAILED:"tool-call-failed",TOOL_CONFIRMATION_REQUEST:"tool-confirmation-request",TOOL_CONFIRMATION_RESPONSE:"tool-confirmation-response",CONVERSATION_CREATED:"conversation-created",CONVERSATION_ACTIVATED:"conversation-activated",CONVERSATION_DEACTIVATED:"conversation-deactivated",CONVERSATION_DELETED:"conversation-deleted",CONVERSATION_TITLE_UPDATED:"conversation-title-updated",CONVERSATION_ACTION_STARTED:"conversation-action-started",CONVERSATION_ACTION_MESSAGE_ADDED:"conversation-action-message-added",CONVERSATION_ACTION_MESSAGE_UPDATED:"conversation-action-message-updated",CONVERSATION_ACTION_ENDED:"conversation-action-ended",CONVERSATION_MESSAGES_REPLACED:"conversation-messages-replaced",CONVERSATION_UI_MESSAGES_UPDATED:"conversation-ui-messages-updated",AGENT_STARTED:"agent-started",AGENT_COMPLETED:"agent-completed",AGENT_FAILED:"agent-failed",ERROR:"error",WARNING:"warning",INFO:"info",LOG:"log",CONTEXT_METRICS_UPDATED:"context-metrics-updated",CONTEXT_WINDOW_WARNING:"context-window-warning",CONTEXT_COMPACTION:"context-compaction",MODELS_VISIBILITY_CHANGED:"models-visibility-changed",TODO_UPDATED:"todo-updated",TASK_LIST_CHANGED:"task-list-changed"}});function E1(t){return t.result?.editFileBaseline}var VC=Be(()=>{"use strict"});var je,tn=Be(()=>{"use strict";je=(function(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let t=new Uint8Array(16),e=[];for(let n=0;n<256;n++)e.push(n.toString(16).padStart(2,"0"));return function(){crypto.getRandomValues(t),t[6]=t[6]&15|64,t[8]=t[8]&63|128;let o=0,r="";return r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r}})()});var Use,v3,gp=Be(()=>{"use strict";Lr();Use=64*1024,v3=new Set([P.TURN_STARTED,P.TURN_COMPLETED,P.TURN_FAILED,P.TURN_CANCELLED,P.TURN_CANCEL_RESOLVED,P.USER_MESSAGE_ADDED,P.MESSAGE_STREAMING,P.TOOL_CALL_REQUESTED,P.TOOL_CALL_EXECUTED,P.TOOL_CALL_FAILED])});var qC=Be(()=>{"use strict";gp()});var GC=Be(()=>{"use strict"});var ZC=Be(()=>{"use strict"});var JC=Be(()=>{"use strict"});var YC=Be(()=>{"use strict"});var QC=Be(()=>{"use strict"});var dae,pae,XC=Be(()=>{"use strict";tn();Lr();gp();qC();GC();ZC();JC();YC();QC();dae=[P.MESSAGE_STREAMING,P.THINKING_STREAMING],pae={[P.TURN_CREATED]:!0,[P.TURN_STARTED]:!0,[P.TURN_COMPLETED]:!0,[P.TURN_FAILED]:!0,[P.TURN_CANCELLED]:!0,[P.TURN_CANCEL_RESOLVED]:!0,[P.TURN_PAUSED]:!0,[P.TURN_RESUMED]:!0,[P.WORK_STARTED]:!0,[P.WORK_COMPLETED]:!0,[P.WORK_FAILED]:!0,[P.THINKING_STARTED]:!0,[P.THINKING_STREAMING]:!0,[P.USER_MESSAGE_ADDED]:!0,[P.ASSISTANT_MESSAGE_STARTED]:!0,[P.MESSAGE_STREAMING]:!0,[P.MESSAGE_COMPLETED]:!0,[P.TOOL_CALL_DETECTED]:!0,[P.TOOL_CALL_ARGS_STREAMING]:!0,[P.TOOL_CALL_REQUESTED]:!0,[P.TOOL_CALL_EXECUTING]:!0,[P.TOOL_CALL_PROGRESS]:!0,[P.TOOL_CALL_EXECUTED]:!0,[P.TOOL_CALL_FAILED]:!0,[P.TOOL_CONFIRMATION_REQUEST]:!0,[P.TOOL_CONFIRMATION_RESPONSE]:!0,[P.CONVERSATION_CREATED]:!0,[P.CONVERSATION_ACTIVATED]:!0,[P.CONVERSATION_DEACTIVATED]:!0,[P.CONVERSATION_DELETED]:!0,[P.CONVERSATION_TITLE_UPDATED]:!0,[P.CONVERSATION_ACTION_STARTED]:!0,[P.CONVERSATION_ACTION_MESSAGE_ADDED]:!0,[P.CONVERSATION_ACTION_MESSAGE_UPDATED]:!0,[P.CONVERSATION_ACTION_ENDED]:!0,[P.CONVERSATION_MESSAGES_REPLACED]:!0,[P.CONVERSATION_UI_MESSAGES_UPDATED]:!0,[P.AGENT_STARTED]:!0,[P.AGENT_COMPLETED]:!0,[P.AGENT_FAILED]:!0,[P.ERROR]:!0,[P.WARNING]:!0,[P.INFO]:!0,[P.LOG]:!0,[P.CONTEXT_METRICS_UPDATED]:!0,[P.CONTEXT_WINDOW_WARNING]:!0,[P.CONTEXT_COMPACTION]:!0,[P.MODELS_VISIBILITY_CHANGED]:!0,[P.TODO_UPDATED]:!0,[P.TASK_LIST_CHANGED]:!0}});var eE=Be(()=>{"use strict"});var tE=Be(()=>{"use strict";XC();eE();gp()});var gr=Be(()=>{"use strict";mp();C1();Lr();VC();tE()});var kt=Be(()=>{"use strict"});function eb(){return globalThis._VSCODE_NLS_MESSAGES}function kc(){return globalThis._VSCODE_NLS_LANGUAGE}var tb=Be(()=>{"use strict"});function $P(t,e){let n;return e.length===0?n=t:n=t.replace(/\{(\d+)\}/g,(o,r)=>{let i=r[0],s=e[i],a=o;return typeof s=="string"?a=s:(typeof s=="number"||typeof s=="boolean"||s===void 0||s===null)&&(a=String(s)),a}),tB&&(n="\uFF3B"+n.replace(/[aouei]/g,"$&$&")+"\uFF3D"),n}function _e(t,e,...n){return $P(typeof t=="number"?nB(t,e):e,n)}function nB(t,e){let n=eb()?.[t];if(typeof n!="string"){if(typeof e=="string")return e;throw new Error(`!!! NLS MISSING: ${t} !!!`)}return n}var tB,ii=Be(()=>{"use strict";tb();tb();tB=kc()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0});var Sa,Dp,Op,Ic,rB,UP,rb,oB,iB,sB,aB,Ap,Mp,FP,lB,xo,To,Dn,BP,cB,nb,Lt,Cc,Lp,jP,gs,uB,zP,$r,si,dB,pB,Xue,ob,WP,KP,HP,ede,or=Be(()=>{"use strict";ii();Sa="en",Dp=!1,Op=!1,Ic=!1,rB=!1,UP=!1,rb=!1,oB=!1,iB=!1,sB=!1,aB=!1,Mp=Sa,FP=Sa,To=globalThis;typeof To.vscode<"u"&&typeof To.vscode.process<"u"?Dn=To.vscode.process:typeof process<"u"&&typeof process?.versions?.node=="string"&&(Dn=process);BP=typeof Dn?.versions?.electron=="string",cB=BP&&Dn?.type==="renderer";if(typeof Dn=="object"){Dp=Dn.platform==="win32",Op=Dn.platform==="darwin",Ic=Dn.platform==="linux",rB=Ic&&!!Dn.env.SNAP&&!!Dn.env.SNAP_REVISION,oB=BP,sB=!!Dn.env.CI||!!Dn.env.BUILD_ARTIFACTSTAGINGDIRECTORY||!!Dn.env.GITHUB_WORKSPACE,Ap=Sa,Mp=Sa;let t=Dn.env.VSCODE_NLS_CONFIG;if(t)try{let e=JSON.parse(t);Ap=e.userLocale,FP=e.osLocale,Mp=e.resolvedLanguage||Sa,lB=e.languagePack?.translationsConfigFile}catch{}UP=!0}else typeof navigator=="object"&&!cB?(xo=navigator.userAgent,Dp=xo.indexOf("Windows")>=0,Op=xo.indexOf("Macintosh")>=0,iB=(xo.indexOf("Macintosh")>=0||xo.indexOf("iPad")>=0||xo.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,Ic=xo.indexOf("Linux")>=0,aB=xo?.indexOf("Mobi")>=0,rb=!0,Mp=kc()||Sa,Ap=navigator.language.toLowerCase(),FP=Ap):console.error("Unable to resolve platform.");nb=0;Op?nb=1:Dp?nb=3:Ic&&(nb=2);Lt=Dp,Cc=Op,Lp=Ic,jP=UP,gs=rb,uB=rb&&typeof To.importScripts=="function",zP=uB?To.origin:void 0,$r=xo,si=Mp;(o=>{function t(){return si}o.value=t;function e(){return si.length===2?si==="en":si.length>=3?si[0]==="e"&&si[1]==="n"&&si[2]==="-":!1}o.isDefaultVariant=e;function n(){return si==="en"}o.isDefault=n})(dB||={});pB=typeof To.postMessage=="function"&&!To.importScripts,Xue=(()=>{if(pB){let t=[];To.addEventListener("message",n=>{if(n.data&&n.data.vscodeScheduleAsyncWork)for(let o=0,r=t.length;o<r;o++){let i=t[o];if(i.id===n.data.vscodeScheduleAsyncWork){t.splice(o,1),i.callback();return}}});let e=0;return n=>{let o=++e;t.push({id:o,callback:n}),To.postMessage({vscodeScheduleAsyncWork:o},"*")}}return t=>setTimeout(t)})(),ob=!!($r&&$r.indexOf("Chrome")>=0),WP=!!($r&&$r.indexOf("Firefox")>=0),KP=!!(!ob&&$r&&$r.indexOf("Safari")>=0),HP=!!($r&&$r.indexOf("Edg/")>=0),ede=!!($r&&$r.indexOf("Android")>=0)});var hs,ib,Ec,Np,VP,rde,sb=Be(()=>{"use strict";or();ib=globalThis.vscode;if(typeof ib<"u"&&typeof ib.process<"u"){let t=ib.process;hs={get platform(){return t.platform},get arch(){return t.arch},get env(){return t.env},cwd(){return t.cwd()}}}else typeof process<"u"&&typeof process?.versions?.node=="string"?hs={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:hs={get platform(){return Lt?"win32":Cc?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};Ec=hs.cwd,Np=hs.env,VP=hs.platform,rde=hs.arch});function xB(t,e){if(t===null||typeof t!="object")throw new $p(e,"Object",t)}function Pt(t,e){if(typeof t!="string")throw new $p(e,"string",t)}function Me(t){return t===Vt||t===On}function ab(t){return t===Vt}function _o(t){return t>=gB&&t<=yB||t>=hB&&t<=vB}function Fp(t,e,n,o){let r="",i=0,s=-1,a=0,l=0;for(let c=0;c<=t.length;++c){if(c<t.length)l=t.charCodeAt(c);else{if(o(l))break;l=Vt}if(o(l)){if(!(s===c-1||a===1))if(a===2){if(r.length<2||i!==2||r.charCodeAt(r.length-1)!==ys||r.charCodeAt(r.length-2)!==ys){if(r.length>2){let u=r.lastIndexOf(n);u===-1?(r="",i=0):(r=r.slice(0,u),i=r.length-1-r.lastIndexOf(n)),s=c,a=0;continue}else if(r.length!==0){r="",i=0,s=c,a=0;continue}}e&&(r+=r.length>0?`${n}..`:"..",i=2)}else r.length>0?r+=`${n}${t.slice(s+1,c)}`:r=t.slice(s+1,c),i=c-s-1;s=c,a=0}else l===ys&&a!==-1?++a:a=-1}return r}function TB(t){return t?`${t[0]==="."?"":"."}${t}`:""}function qP(t,e){xB(e,"pathObject");let n=e.dir||e.root,o=e.base||`${e.name||""}${TB(e.ext)}`;return n?n===e.root?`${n}${o}`:`${n}${t}${o}`:o}var gB,hB,yB,vB,ys,Vt,On,wo,bB,$p,Ln,Rt,wB,Ge,ai,Up,lt,Ut,Pc,ir,GP,Rc,ode,ide,sde,vr,ade,Nt=Be(()=>{"use strict";sb();gB=65,hB=97,yB=90,vB=122,ys=46,Vt=47,On=92,wo=58,bB=63,$p=class extends Error{constructor(e,n,o){let r;typeof n=="string"&&n.indexOf("not ")===0?(r="must not be",n=n.replace(/^not /,"")):r="must be";let i=e.indexOf(".")!==-1?"property":"argument",s=`The "${e}" ${i} ${r} of type ${n}`;s+=`. Received type ${typeof o}`,super(s),this.code="ERR_INVALID_ARG_TYPE"}};Ln=VP==="win32";Rt={resolve(...t){let e="",n="",o=!1;for(let r=t.length-1;r>=-1;r--){let i;if(r>=0){if(i=t[r],Pt(i,`paths[${r}]`),i.length===0)continue}else e.length===0?i=Ec():(i=Np[`=${e}`]||Ec(),(i===void 0||i.slice(0,2).toLowerCase()!==e.toLowerCase()&&i.charCodeAt(2)===On)&&(i=`${e}\\`));let s=i.length,a=0,l="",c=!1,u=i.charCodeAt(0);if(s===1)Me(u)&&(a=1,c=!0);else if(Me(u))if(c=!0,Me(i.charCodeAt(1))){let d=2,p=d;for(;d<s&&!Me(i.charCodeAt(d));)d++;if(d<s&&d!==p){let f=i.slice(p,d);for(p=d;d<s&&Me(i.charCodeAt(d));)d++;if(d<s&&d!==p){for(p=d;d<s&&!Me(i.charCodeAt(d));)d++;(d===s||d!==p)&&(l=`\\\\${f}\\${i.slice(p,d)}`,a=d)}}}else a=1;else _o(u)&&i.charCodeAt(1)===wo&&(l=i.slice(0,2),a=2,s>2&&Me(i.charCodeAt(2))&&(c=!0,a=3));if(l.length>0)if(e.length>0){if(l.toLowerCase()!==e.toLowerCase())continue}else e=l;if(o){if(e.length>0)break}else if(n=`${i.slice(a)}\\${n}`,o=c,c&&e.length>0)break}return n=Fp(n,!o,"\\",Me),o?`${e}\\${n}`:`${e}${n}`||"."},normalize(t){Pt(t,"path");let e=t.length;if(e===0)return".";let n=0,o,r=!1,i=t.charCodeAt(0);if(e===1)return ab(i)?"\\":t;if(Me(i))if(r=!0,Me(t.charCodeAt(1))){let a=2,l=a;for(;a<e&&!Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){let c=t.slice(l,a);for(l=a;a<e&&Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&!Me(t.charCodeAt(a));)a++;if(a===e)return`\\\\${c}\\${t.slice(l)}\\`;a!==l&&(o=`\\\\${c}\\${t.slice(l,a)}`,n=a)}}}else n=1;else _o(i)&&t.charCodeAt(1)===wo&&(o=t.slice(0,2),n=2,e>2&&Me(t.charCodeAt(2))&&(r=!0,n=3));let s=n<e?Fp(t.slice(n),!r,"\\",Me):"";if(s.length===0&&!r&&(s="."),s.length>0&&Me(t.charCodeAt(e-1))&&(s+="\\"),!r&&o===void 0&&t.includes(":")){if(s.length>=2&&_o(s.charCodeAt(0))&&s.charCodeAt(1)===wo)return`.\\${s}`;let a=t.indexOf(":");do if(a===e-1||Me(t.charCodeAt(a+1)))return`.\\${s}`;while((a=t.indexOf(":",a+1))!==-1)}return o===void 0?r?`\\${s}`:s:r?`${o}\\${s}`:`${o}${s}`},isAbsolute(t){Pt(t,"path");let e=t.length;if(e===0)return!1;let n=t.charCodeAt(0);return Me(n)||e>2&&_o(n)&&t.charCodeAt(1)===wo&&Me(t.charCodeAt(2))},join(...t){if(t.length===0)return".";let e,n;for(let i=0;i<t.length;++i){let s=t[i];Pt(s,"path"),s.length>0&&(e===void 0?e=n=s:e+=`\\${s}`)}if(e===void 0)return".";let o=!0,r=0;if(typeof n=="string"&&Me(n.charCodeAt(0))){++r;let i=n.length;i>1&&Me(n.charCodeAt(1))&&(++r,i>2&&(Me(n.charCodeAt(2))?++r:o=!1))}if(o){for(;r<e.length&&Me(e.charCodeAt(r));)r++;r>=2&&(e=`\\${e.slice(r)}`)}return Rt.normalize(e)},relative(t,e){if(Pt(t,"from"),Pt(e,"to"),t===e)return"";let n=Rt.resolve(t),o=Rt.resolve(e);if(n===o||(t=n.toLowerCase(),e=o.toLowerCase(),t===e))return"";if(n.length!==t.length||o.length!==e.length){let m=n.split("\\"),g=o.split("\\");m[m.length-1]===""&&m.pop(),g[g.length-1]===""&&g.pop();let h=m.length,y=g.length,v=h<y?h:y,b;for(b=0;b<v&&m[b].toLowerCase()===g[b].toLowerCase();b++);return b===0?o:b===v?y>v?g.slice(b).join("\\"):h>v?"..\\".repeat(h-1-b)+"..":"":"..\\".repeat(h-b)+g.slice(b).join("\\")}let r=0;for(;r<t.length&&t.charCodeAt(r)===On;)r++;let i=t.length;for(;i-1>r&&t.charCodeAt(i-1)===On;)i--;let s=i-r,a=0;for(;a<e.length&&e.charCodeAt(a)===On;)a++;let l=e.length;for(;l-1>a&&e.charCodeAt(l-1)===On;)l--;let c=l-a,u=s<c?s:c,d=-1,p=0;for(;p<u;p++){let m=t.charCodeAt(r+p);if(m!==e.charCodeAt(a+p))break;m===On&&(d=p)}if(p!==u){if(d===-1)return o}else{if(c>u){if(e.charCodeAt(a+p)===On)return o.slice(a+p+1);if(p===2)return o.slice(a+p)}s>u&&(t.charCodeAt(r+p)===On?d=p:p===2&&(d=3)),d===-1&&(d=0)}let f="";for(p=r+d+1;p<=i;++p)(p===i||t.charCodeAt(p)===On)&&(f+=f.length===0?"..":"\\..");return a+=d,f.length>0?`${f}${o.slice(a,l)}`:(o.charCodeAt(a)===On&&++a,o.slice(a,l))},toNamespacedPath(t){if(typeof t!="string"||t.length===0)return t;let e=Rt.resolve(t);if(e.length<=2)return t;if(e.charCodeAt(0)===On){if(e.charCodeAt(1)===On){let n=e.charCodeAt(2);if(n!==bB&&n!==ys)return`\\\\?\\UNC\\${e.slice(2)}`}}else if(_o(e.charCodeAt(0))&&e.charCodeAt(1)===wo&&e.charCodeAt(2)===On)return`\\\\?\\${e}`;return e},dirname(t){Pt(t,"path");let e=t.length;if(e===0)return".";let n=-1,o=0,r=t.charCodeAt(0);if(e===1)return Me(r)?t:".";if(Me(r)){if(n=o=1,Me(t.charCodeAt(1))){let a=2,l=a;for(;a<e&&!Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&!Me(t.charCodeAt(a));)a++;if(a===e)return t;a!==l&&(n=o=a+1)}}}}else _o(r)&&t.charCodeAt(1)===wo&&(n=e>2&&Me(t.charCodeAt(2))?3:2,o=n);let i=-1,s=!0;for(let a=e-1;a>=o;--a)if(Me(t.charCodeAt(a))){if(!s){i=a;break}}else s=!1;if(i===-1){if(n===-1)return".";i=n}return t.slice(0,i)},basename(t,e){e!==void 0&&Pt(e,"suffix"),Pt(t,"path");let n=0,o=-1,r=!0,i;if(t.length>=2&&_o(t.charCodeAt(0))&&t.charCodeAt(1)===wo&&(n=2),e!==void 0&&e.length>0&&e.length<=t.length){if(e===t)return"";let s=e.length-1,a=-1;for(i=t.length-1;i>=n;--i){let l=t.charCodeAt(i);if(Me(l)){if(!r){n=i+1;break}}else a===-1&&(r=!1,a=i+1),s>=0&&(l===e.charCodeAt(s)?--s===-1&&(o=i):(s=-1,o=a))}return n===o?o=a:o===-1&&(o=t.length),t.slice(n,o)}for(i=t.length-1;i>=n;--i)if(Me(t.charCodeAt(i))){if(!r){n=i+1;break}}else o===-1&&(r=!1,o=i+1);return o===-1?"":t.slice(n,o)},extname(t){Pt(t,"path");let e=0,n=-1,o=0,r=-1,i=!0,s=0;t.length>=2&&t.charCodeAt(1)===wo&&_o(t.charCodeAt(0))&&(e=o=2);for(let a=t.length-1;a>=e;--a){let l=t.charCodeAt(a);if(Me(l)){if(!i){o=a+1;break}continue}r===-1&&(i=!1,r=a+1),l===ys?n===-1?n=a:s!==1&&(s=1):n!==-1&&(s=-1)}return n===-1||r===-1||s===0||s===1&&n===r-1&&n===o+1?"":t.slice(n,r)},format:qP.bind(null,"\\"),parse(t){Pt(t,"path");let e={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return e;let n=t.length,o=0,r=t.charCodeAt(0);if(n===1)return Me(r)?(e.root=e.dir=t,e):(e.base=e.name=t,e);if(Me(r)){if(o=1,Me(t.charCodeAt(1))){let d=2,p=d;for(;d<n&&!Me(t.charCodeAt(d));)d++;if(d<n&&d!==p){for(p=d;d<n&&Me(t.charCodeAt(d));)d++;if(d<n&&d!==p){for(p=d;d<n&&!Me(t.charCodeAt(d));)d++;d===n?o=d:d!==p&&(o=d+1)}}}}else if(_o(r)&&t.charCodeAt(1)===wo){if(n<=2)return e.root=e.dir=t,e;if(o=2,Me(t.charCodeAt(2))){if(n===3)return e.root=e.dir=t,e;o=3}}o>0&&(e.root=t.slice(0,o));let i=-1,s=o,a=-1,l=!0,c=t.length-1,u=0;for(;c>=o;--c){if(r=t.charCodeAt(c),Me(r)){if(!l){s=c+1;break}continue}a===-1&&(l=!1,a=c+1),r===ys?i===-1?i=c:u!==1&&(u=1):i!==-1&&(u=-1)}return a!==-1&&(i===-1||u===0||u===1&&i===a-1&&i===s+1?e.base=e.name=t.slice(s,a):(e.name=t.slice(s,i),e.base=t.slice(s,a),e.ext=t.slice(i,a))),s>0&&s!==o?e.dir=t.slice(0,s-1):e.dir=e.root,e},sep:"\\",delimiter:";",win32:null,posix:null},wB=(()=>{if(Ln){let t=/\\/g;return()=>{let e=Ec().replace(t,"/");return e.slice(e.indexOf("/"))}}return()=>Ec()})(),Ge={resolve(...t){let e="",n=!1;for(let o=t.length-1;o>=0&&!n;o--){let r=t[o];Pt(r,`paths[${o}]`),r.length!==0&&(e=`${r}/${e}`,n=r.charCodeAt(0)===Vt)}if(!n){let o=wB();e=`${o}/${e}`,n=o.charCodeAt(0)===Vt}return e=Fp(e,!n,"/",ab),n?`/${e}`:e.length>0?e:"."},normalize(t){if(Pt(t,"path"),t.length===0)return".";let e=t.charCodeAt(0)===Vt,n=t.charCodeAt(t.length-1)===Vt;return t=Fp(t,!e,"/",ab),t.length===0?e?"/":n?"./":".":(n&&(t+="/"),e?`/${t}`:t)},isAbsolute(t){return Pt(t,"path"),t.length>0&&t.charCodeAt(0)===Vt},join(...t){if(t.length===0)return".";let e=[];for(let n=0;n<t.length;++n){let o=t[n];Pt(o,"path"),o.length>0&&e.push(o)}return e.length===0?".":Ge.normalize(e.join("/"))},relative(t,e){if(Pt(t,"from"),Pt(e,"to"),t===e||(t=Ge.resolve(t),e=Ge.resolve(e),t===e))return"";let n=1,o=t.length,r=o-n,i=1,s=e.length-i,a=r<s?r:s,l=-1,c=0;for(;c<a;c++){let d=t.charCodeAt(n+c);if(d!==e.charCodeAt(i+c))break;d===Vt&&(l=c)}if(c===a)if(s>a){if(e.charCodeAt(i+c)===Vt)return e.slice(i+c+1);if(c===0)return e.slice(i+c)}else r>a&&(t.charCodeAt(n+c)===Vt?l=c:c===0&&(l=0));let u="";for(c=n+l+1;c<=o;++c)(c===o||t.charCodeAt(c)===Vt)&&(u+=u.length===0?"..":"/..");return`${u}${e.slice(i+l)}`},toNamespacedPath(t){return t},dirname(t){if(Pt(t,"path"),t.length===0)return".";let e=t.charCodeAt(0)===Vt,n=-1,o=!0;for(let r=t.length-1;r>=1;--r)if(t.charCodeAt(r)===Vt){if(!o){n=r;break}}else o=!1;return n===-1?e?"/":".":e&&n===1?"//":t.slice(0,n)},basename(t,e){e!==void 0&&Pt(e,"suffix"),Pt(t,"path");let n=0,o=-1,r=!0,i;if(e!==void 0&&e.length>0&&e.length<=t.length){if(e===t)return"";let s=e.length-1,a=-1;for(i=t.length-1;i>=0;--i){let l=t.charCodeAt(i);if(l===Vt){if(!r){n=i+1;break}}else a===-1&&(r=!1,a=i+1),s>=0&&(l===e.charCodeAt(s)?--s===-1&&(o=i):(s=-1,o=a))}return n===o?o=a:o===-1&&(o=t.length),t.slice(n,o)}for(i=t.length-1;i>=0;--i)if(t.charCodeAt(i)===Vt){if(!r){n=i+1;break}}else o===-1&&(r=!1,o=i+1);return o===-1?"":t.slice(n,o)},extname(t){Pt(t,"path");let e=-1,n=0,o=-1,r=!0,i=0;for(let s=t.length-1;s>=0;--s){let a=t[s];if(a==="/"){if(!r){n=s+1;break}continue}o===-1&&(r=!1,o=s+1),a==="."?e===-1?e=s:i!==1&&(i=1):e!==-1&&(i=-1)}return e===-1||o===-1||i===0||i===1&&e===o-1&&e===n+1?"":t.slice(e,o)},format:qP.bind(null,"/"),parse(t){Pt(t,"path");let e={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return e;let n=t.charCodeAt(0)===Vt,o;n?(e.root="/",o=1):o=0;let r=-1,i=0,s=-1,a=!0,l=t.length-1,c=0;for(;l>=o;--l){let u=t.charCodeAt(l);if(u===Vt){if(!a){i=l+1;break}continue}s===-1&&(a=!1,s=l+1),u===ys?r===-1?r=l:c!==1&&(c=1):r!==-1&&(c=-1)}if(s!==-1){let u=i===0&&n?1:i;r===-1||c===0||c===1&&r===s-1&&r===i+1?e.base=e.name=t.slice(u,s):(e.name=t.slice(u,r),e.base=t.slice(u,s),e.ext=t.slice(r,s))}return i>0?e.dir=t.slice(0,i-1):n&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};Ge.win32=Rt.win32=Rt;Ge.posix=Rt.posix=Ge;ai=Ln?Rt.normalize:Ge.normalize,Up=Ln?Rt.isAbsolute:Ge.isAbsolute,lt=Ln?Rt.join:Ge.join,Ut=Ln?Rt.resolve:Ge.resolve,Pc=Ln?Rt.relative:Ge.relative,ir=Ln?Rt.dirname:Ge.dirname,GP=Ln?Rt.basename:Ge.basename,Rc=Ln?Rt.extname:Ge.extname,ode=Ln?Rt.format:Ge.format,ide=Ln?Rt.parse:Ge.parse,sde=Ln?Rt.toNamespacedPath:Ge.toNamespacedPath,vr=Ln?Rt.sep:Ge.sep,ade=Ln?Rt.delimiter:Ge.delimiter});function SB(){return!gs&&typeof process<"u"&&typeof process.cwd=="function"}function db(){return SB()?process.cwd():""}async function JP(t){return(await t())[0]||null}async function YP(t,e){let n=await e();if(!n)throw new Error("No workspace available");return Ut(n.path,t)}var pb=Be(()=>{"use strict";Nt();or()});var ka,fb=Be(()=>{"use strict";pb();ka=class{async getPrimaryWorkspace(){return JP(()=>this.getWorkspaceRoots())}async resolvePath(e){return YP(e,()=>this.getPrimaryWorkspace())}}});var zR={};dn(zR,{VSCodeWorkspaceProvider:()=>Lb});var Lb,WR=Be(()=>{"use strict";fb();Lb=class extends ka{constructor(n){super();this.vscodeApi=n;if(!n||!n.workspace)throw new Error('Invalid VSCode API instance. Make sure to pass the vscode module: new VSCodeWorkspaceProvider(require("vscode"))')}vscodeApi;async getWorkspaceRoots(){let n=this.vscodeApi.workspace.workspaceFolders;return!n||n.length===0?[]:n.map(o=>({path:o.uri.fsPath,name:o.name}))}async getWorkspaceForFile(n){try{let o=this.vscodeApi.Uri.file(n),r=this.vscodeApi.workspace.getWorkspaceFolder(o);return r?{path:r.uri.fsPath,name:r.name}:null}catch{return null}}async isPathInWorkspace(n){try{let o=this.vscodeApi.Uri.file(n);return this.vscodeApi.workspace.getWorkspaceFolder(o)!==void 0}catch{return!1}}}});var hA,yA=Be(()=>{"use strict";hA=`\u8BF7\u6267\u884C\u4E00\u6B21\u5B89\u5168\u7684 git \u63D0\u4EA4\u6D41\u7A0B\uFF0C\u5E76\u4E25\u683C\u9075\u5B88\u4EE5\u4E0B\u7EA6\u675F\uFF1A
1
+ var fp=Object.defineProperty;var HC=Object.getOwnPropertyDescriptor;var m3=Object.getOwnPropertyNames;var g3=Object.prototype.hasOwnProperty;var gc=(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 Be=(t,e)=>()=>(t&&(e=t(t=0)),e);var dn=(t,e)=>{for(var n in e)fp(t,n,{get:e[n],enumerable:!0})},h3=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of m3(e))!g3.call(t,r)&&r!==n&&fp(t,r,{get:()=>e[r],enumerable:!(o=HC(e,r))||o.enumerable});return t};var y3=t=>h3(fp({},"__esModule",{value:!0}),t),ma=(t,e,n,o)=>{for(var r=o>1?void 0:o?HC(e,n):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(r=(o?s(e,n,r):s(r))||r);return o&&r&&fp(e,n,r),r},Or=(t,e)=>(n,o)=>e(n,o,t);var ls,mp=Be(()=>{"use strict";ls=class{events=new Map;maxListeners=10;on(e,n){this.events.has(e)||this.events.set(e,[]);let o=this.events.get(e);return o.length>=this.maxListeners&&this.maxListeners>0&&console.warn(`MaxListenersExceededWarning: Possible EventEmitter memory leak detected. ${o.length+1} listeners added for event "${e}". Use emitter.setMaxListeners() to increase limit.`),o.push(n),this}once(e,n){let o=(...r)=>{this.off(e,o),n(...r)};return o.listener=n,this.on(e,o)}emit(e,...n){let o=this.events.get(e);if(o&&o.length>0){let r=[...o];for(let i of r)try{i(...n)}catch(s){console.error(`[EventEmitter] Error in listener for event "${e}":`,s)}return!0}return!1}off(e,n){let o=this.events.get(e);if(o){let r=o.findIndex(i=>i===n||i.listener===n);r>-1&&o.splice(r,1)}return this}removeListener(e,n){return this.off(e,n)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listenerCount(e){return this.events.get(e)?.length||0}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}listeners(e){return[...this.events.get(e)||[]]}eventNames(){return[...this.events.keys()]}}});var hc,C1=Be(()=>{"use strict";mp();hc=class{emitter;streamingSubscriptions=new Map;sequenceNumbers=new Map;debug;constructor(e=!1){this.emitter=new ls,this.emitter.setMaxListeners(100),this.debug=e}emit(e,n){this.validatePayload(n),this.debug,n.timestamp||(n.timestamp=Date.now()),this.emitter.emit(e,n)}on(e,n){return this.emitter.on(e,n),()=>{this.emitter.off(e,n)}}once(e,n){return this.emitter.once(e,n),()=>{this.emitter.off(e,n)}}off(e,n){this.emitter.off(e,n)}async emitStreaming(e,n,o=!1){this.validatePayload(n);let r=n.conversationId,i=`${String(e)}:${r}`;this.sequenceNumbers.has(i)||this.sequenceNumbers.set(i,0);let s=this.sequenceNumbers.get(i);o?this.sequenceNumbers.delete(i):this.sequenceNumbers.set(i,s+1),this.debug,n.timestamp||(n.timestamp=Date.now());let a=this.streamingSubscriptions.get(e);if(a&&a.size>0){let l=[];for(let c of a)try{let u=c(n,o,s,r);u instanceof Promise&&l.push(u)}catch(u){console.error(`[EventBus] Error in streaming event handler for ${String(e)}:`,u)}l.length>0&&await Promise.all(l)}}subscribeStreaming(e,n){this.streamingSubscriptions.has(e)||this.streamingSubscriptions.set(e,new Set);let o=this.streamingSubscriptions.get(e);return o.add(n),()=>{o.delete(n),o.size===0&&this.streamingSubscriptions.delete(e)}}subscribeStreamingForChannel(e,n,o){let r=(i,s,a,l)=>{if(l===n)return o(i,s,a,l)};return this.subscribeStreaming(e,r)}resetStreamingSequence(e,n){let o=`${String(e)}:${n}`;this.sequenceNumbers.delete(o),this.debug}getStreamingSequence(e,n){let o=`${String(e)}:${n}`;return this.sequenceNumbers.get(o)||0}validatePayload(e){if(!e.conversationId)throw new Error("[EventBus] Event payload must contain conversationId")}listenerCount(e){let n=this.emitter.listenerCount(e),o=this.streamingSubscriptions.get(e)?.size||0;return n+o}removeAllListeners(e){e?(this.emitter.removeAllListeners(e),this.streamingSubscriptions.delete(e)):(this.emitter.removeAllListeners(),this.streamingSubscriptions.clear(),this.sequenceNumbers.clear())}destroy(){this.removeAllListeners(),this.debug}}});var P,Lr=Be(()=>{"use strict";P={TURN_CREATED:"turn-created",TURN_STARTED:"turn-started",TURN_COMPLETED:"turn-completed",TURN_FAILED:"turn-failed",TURN_CANCELLED:"turn-cancelled",TURN_CANCEL_RESOLVED:"turn-cancel-resolved",TURN_PAUSED:"turn-paused",TURN_RESUMED:"turn-resumed",WORK_STARTED:"work-started",WORK_COMPLETED:"work-completed",WORK_FAILED:"work-failed",THINKING_STARTED:"thinking-started",THINKING_STREAMING:"thinking-streaming",USER_MESSAGE_ADDED:"user-message-added",ASSISTANT_MESSAGE_STARTED:"assistant-message-started",MESSAGE_STREAMING:"message-streaming",MESSAGE_COMPLETED:"message-completed",TOOL_CALL_DETECTED:"tool-call-detected",TOOL_CALL_ARGS_STREAMING:"tool-call-args-streaming",TOOL_CALL_REQUESTED:"tool-call-requested",TOOL_CALL_EXECUTING:"tool-call-executing",TOOL_CALL_EXECUTED:"tool-call-executed",TOOL_CALL_PROGRESS:"tool-call-progress",TOOL_CALL_FAILED:"tool-call-failed",TOOL_CONFIRMATION_REQUEST:"tool-confirmation-request",TOOL_CONFIRMATION_RESPONSE:"tool-confirmation-response",CONVERSATION_CREATED:"conversation-created",CONVERSATION_ACTIVATED:"conversation-activated",CONVERSATION_DEACTIVATED:"conversation-deactivated",CONVERSATION_DELETED:"conversation-deleted",CONVERSATION_TITLE_UPDATED:"conversation-title-updated",CONVERSATION_ACTION_STARTED:"conversation-action-started",CONVERSATION_ACTION_MESSAGE_ADDED:"conversation-action-message-added",CONVERSATION_ACTION_MESSAGE_UPDATED:"conversation-action-message-updated",CONVERSATION_ACTION_ENDED:"conversation-action-ended",CONVERSATION_MESSAGES_REPLACED:"conversation-messages-replaced",CONVERSATION_UI_MESSAGES_UPDATED:"conversation-ui-messages-updated",AGENT_STARTED:"agent-started",AGENT_COMPLETED:"agent-completed",AGENT_FAILED:"agent-failed",ERROR:"error",WARNING:"warning",INFO:"info",LOG:"log",CONTEXT_METRICS_UPDATED:"context-metrics-updated",CONTEXT_WINDOW_WARNING:"context-window-warning",CONTEXT_COMPACTION:"context-compaction",MODELS_VISIBILITY_CHANGED:"models-visibility-changed",TODO_UPDATED:"todo-updated",TASK_LIST_CHANGED:"task-list-changed"}});function E1(t){return t.result?.editFileBaseline}var VC=Be(()=>{"use strict"});var je,tn=Be(()=>{"use strict";je=(function(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let t=new Uint8Array(16),e=[];for(let n=0;n<256;n++)e.push(n.toString(16).padStart(2,"0"));return function(){crypto.getRandomValues(t),t[6]=t[6]&15|64,t[8]=t[8]&63|128;let o=0,r="";return r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+="-",r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r+=e[t[o++]],r}})()});var jse,v3,gp=Be(()=>{"use strict";Lr();jse=64*1024,v3=new Set([P.TURN_STARTED,P.TURN_COMPLETED,P.TURN_FAILED,P.TURN_CANCELLED,P.TURN_CANCEL_RESOLVED,P.USER_MESSAGE_ADDED,P.MESSAGE_STREAMING,P.TOOL_CALL_REQUESTED,P.TOOL_CALL_EXECUTED,P.TOOL_CALL_FAILED])});var qC=Be(()=>{"use strict";gp()});var GC=Be(()=>{"use strict"});var ZC=Be(()=>{"use strict"});var JC=Be(()=>{"use strict"});var YC=Be(()=>{"use strict"});var QC=Be(()=>{"use strict"});var fae,mae,XC=Be(()=>{"use strict";tn();Lr();gp();qC();GC();ZC();JC();YC();QC();fae=[P.MESSAGE_STREAMING,P.THINKING_STREAMING],mae={[P.TURN_CREATED]:!0,[P.TURN_STARTED]:!0,[P.TURN_COMPLETED]:!0,[P.TURN_FAILED]:!0,[P.TURN_CANCELLED]:!0,[P.TURN_CANCEL_RESOLVED]:!0,[P.TURN_PAUSED]:!0,[P.TURN_RESUMED]:!0,[P.WORK_STARTED]:!0,[P.WORK_COMPLETED]:!0,[P.WORK_FAILED]:!0,[P.THINKING_STARTED]:!0,[P.THINKING_STREAMING]:!0,[P.USER_MESSAGE_ADDED]:!0,[P.ASSISTANT_MESSAGE_STARTED]:!0,[P.MESSAGE_STREAMING]:!0,[P.MESSAGE_COMPLETED]:!0,[P.TOOL_CALL_DETECTED]:!0,[P.TOOL_CALL_ARGS_STREAMING]:!0,[P.TOOL_CALL_REQUESTED]:!0,[P.TOOL_CALL_EXECUTING]:!0,[P.TOOL_CALL_PROGRESS]:!0,[P.TOOL_CALL_EXECUTED]:!0,[P.TOOL_CALL_FAILED]:!0,[P.TOOL_CONFIRMATION_REQUEST]:!0,[P.TOOL_CONFIRMATION_RESPONSE]:!0,[P.CONVERSATION_CREATED]:!0,[P.CONVERSATION_ACTIVATED]:!0,[P.CONVERSATION_DEACTIVATED]:!0,[P.CONVERSATION_DELETED]:!0,[P.CONVERSATION_TITLE_UPDATED]:!0,[P.CONVERSATION_ACTION_STARTED]:!0,[P.CONVERSATION_ACTION_MESSAGE_ADDED]:!0,[P.CONVERSATION_ACTION_MESSAGE_UPDATED]:!0,[P.CONVERSATION_ACTION_ENDED]:!0,[P.CONVERSATION_MESSAGES_REPLACED]:!0,[P.CONVERSATION_UI_MESSAGES_UPDATED]:!0,[P.AGENT_STARTED]:!0,[P.AGENT_COMPLETED]:!0,[P.AGENT_FAILED]:!0,[P.ERROR]:!0,[P.WARNING]:!0,[P.INFO]:!0,[P.LOG]:!0,[P.CONTEXT_METRICS_UPDATED]:!0,[P.CONTEXT_WINDOW_WARNING]:!0,[P.CONTEXT_COMPACTION]:!0,[P.MODELS_VISIBILITY_CHANGED]:!0,[P.TODO_UPDATED]:!0,[P.TASK_LIST_CHANGED]:!0}});var eE=Be(()=>{"use strict"});var tE=Be(()=>{"use strict";XC();eE();gp()});var gr=Be(()=>{"use strict";mp();C1();Lr();VC();tE()});var kt=Be(()=>{"use strict"});function eb(){return globalThis._VSCODE_NLS_MESSAGES}function kc(){return globalThis._VSCODE_NLS_LANGUAGE}var tb=Be(()=>{"use strict"});function $P(t,e){let n;return e.length===0?n=t:n=t.replace(/\{(\d+)\}/g,(o,r)=>{let i=r[0],s=e[i],a=o;return typeof s=="string"?a=s:(typeof s=="number"||typeof s=="boolean"||s===void 0||s===null)&&(a=String(s)),a}),tB&&(n="\uFF3B"+n.replace(/[aouei]/g,"$&$&")+"\uFF3D"),n}function _e(t,e,...n){return $P(typeof t=="number"?nB(t,e):e,n)}function nB(t,e){let n=eb()?.[t];if(typeof n!="string"){if(typeof e=="string")return e;throw new Error(`!!! NLS MISSING: ${t} !!!`)}return n}var tB,ii=Be(()=>{"use strict";tb();tb();tB=kc()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0});var Sa,Dp,Op,Ic,rB,UP,rb,oB,iB,sB,aB,Ap,Mp,FP,lB,xo,To,Dn,BP,cB,nb,Lt,Cc,Lp,jP,gs,uB,zP,$r,si,dB,pB,tde,ob,WP,KP,HP,nde,or=Be(()=>{"use strict";ii();Sa="en",Dp=!1,Op=!1,Ic=!1,rB=!1,UP=!1,rb=!1,oB=!1,iB=!1,sB=!1,aB=!1,Mp=Sa,FP=Sa,To=globalThis;typeof To.vscode<"u"&&typeof To.vscode.process<"u"?Dn=To.vscode.process:typeof process<"u"&&typeof process?.versions?.node=="string"&&(Dn=process);BP=typeof Dn?.versions?.electron=="string",cB=BP&&Dn?.type==="renderer";if(typeof Dn=="object"){Dp=Dn.platform==="win32",Op=Dn.platform==="darwin",Ic=Dn.platform==="linux",rB=Ic&&!!Dn.env.SNAP&&!!Dn.env.SNAP_REVISION,oB=BP,sB=!!Dn.env.CI||!!Dn.env.BUILD_ARTIFACTSTAGINGDIRECTORY||!!Dn.env.GITHUB_WORKSPACE,Ap=Sa,Mp=Sa;let t=Dn.env.VSCODE_NLS_CONFIG;if(t)try{let e=JSON.parse(t);Ap=e.userLocale,FP=e.osLocale,Mp=e.resolvedLanguage||Sa,lB=e.languagePack?.translationsConfigFile}catch{}UP=!0}else typeof navigator=="object"&&!cB?(xo=navigator.userAgent,Dp=xo.indexOf("Windows")>=0,Op=xo.indexOf("Macintosh")>=0,iB=(xo.indexOf("Macintosh")>=0||xo.indexOf("iPad")>=0||xo.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,Ic=xo.indexOf("Linux")>=0,aB=xo?.indexOf("Mobi")>=0,rb=!0,Mp=kc()||Sa,Ap=navigator.language.toLowerCase(),FP=Ap):console.error("Unable to resolve platform.");nb=0;Op?nb=1:Dp?nb=3:Ic&&(nb=2);Lt=Dp,Cc=Op,Lp=Ic,jP=UP,gs=rb,uB=rb&&typeof To.importScripts=="function",zP=uB?To.origin:void 0,$r=xo,si=Mp;(o=>{function t(){return si}o.value=t;function e(){return si.length===2?si==="en":si.length>=3?si[0]==="e"&&si[1]==="n"&&si[2]==="-":!1}o.isDefaultVariant=e;function n(){return si==="en"}o.isDefault=n})(dB||={});pB=typeof To.postMessage=="function"&&!To.importScripts,tde=(()=>{if(pB){let t=[];To.addEventListener("message",n=>{if(n.data&&n.data.vscodeScheduleAsyncWork)for(let o=0,r=t.length;o<r;o++){let i=t[o];if(i.id===n.data.vscodeScheduleAsyncWork){t.splice(o,1),i.callback();return}}});let e=0;return n=>{let o=++e;t.push({id:o,callback:n}),To.postMessage({vscodeScheduleAsyncWork:o},"*")}}return t=>setTimeout(t)})(),ob=!!($r&&$r.indexOf("Chrome")>=0),WP=!!($r&&$r.indexOf("Firefox")>=0),KP=!!(!ob&&$r&&$r.indexOf("Safari")>=0),HP=!!($r&&$r.indexOf("Edg/")>=0),nde=!!($r&&$r.indexOf("Android")>=0)});var hs,ib,Ec,Np,VP,ide,sb=Be(()=>{"use strict";or();ib=globalThis.vscode;if(typeof ib<"u"&&typeof ib.process<"u"){let t=ib.process;hs={get platform(){return t.platform},get arch(){return t.arch},get env(){return t.env},cwd(){return t.cwd()}}}else typeof process<"u"&&typeof process?.versions?.node=="string"?hs={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:hs={get platform(){return Lt?"win32":Cc?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};Ec=hs.cwd,Np=hs.env,VP=hs.platform,ide=hs.arch});function xB(t,e){if(t===null||typeof t!="object")throw new $p(e,"Object",t)}function Pt(t,e){if(typeof t!="string")throw new $p(e,"string",t)}function Me(t){return t===Vt||t===On}function ab(t){return t===Vt}function _o(t){return t>=gB&&t<=yB||t>=hB&&t<=vB}function Fp(t,e,n,o){let r="",i=0,s=-1,a=0,l=0;for(let c=0;c<=t.length;++c){if(c<t.length)l=t.charCodeAt(c);else{if(o(l))break;l=Vt}if(o(l)){if(!(s===c-1||a===1))if(a===2){if(r.length<2||i!==2||r.charCodeAt(r.length-1)!==ys||r.charCodeAt(r.length-2)!==ys){if(r.length>2){let u=r.lastIndexOf(n);u===-1?(r="",i=0):(r=r.slice(0,u),i=r.length-1-r.lastIndexOf(n)),s=c,a=0;continue}else if(r.length!==0){r="",i=0,s=c,a=0;continue}}e&&(r+=r.length>0?`${n}..`:"..",i=2)}else r.length>0?r+=`${n}${t.slice(s+1,c)}`:r=t.slice(s+1,c),i=c-s-1;s=c,a=0}else l===ys&&a!==-1?++a:a=-1}return r}function TB(t){return t?`${t[0]==="."?"":"."}${t}`:""}function qP(t,e){xB(e,"pathObject");let n=e.dir||e.root,o=e.base||`${e.name||""}${TB(e.ext)}`;return n?n===e.root?`${n}${o}`:`${n}${t}${o}`:o}var gB,hB,yB,vB,ys,Vt,On,wo,bB,$p,Ln,Rt,wB,Ge,ai,Up,lt,Ut,Pc,ir,GP,Rc,sde,ade,lde,vr,cde,Nt=Be(()=>{"use strict";sb();gB=65,hB=97,yB=90,vB=122,ys=46,Vt=47,On=92,wo=58,bB=63,$p=class extends Error{constructor(e,n,o){let r;typeof n=="string"&&n.indexOf("not ")===0?(r="must not be",n=n.replace(/^not /,"")):r="must be";let i=e.indexOf(".")!==-1?"property":"argument",s=`The "${e}" ${i} ${r} of type ${n}`;s+=`. Received type ${typeof o}`,super(s),this.code="ERR_INVALID_ARG_TYPE"}};Ln=VP==="win32";Rt={resolve(...t){let e="",n="",o=!1;for(let r=t.length-1;r>=-1;r--){let i;if(r>=0){if(i=t[r],Pt(i,`paths[${r}]`),i.length===0)continue}else e.length===0?i=Ec():(i=Np[`=${e}`]||Ec(),(i===void 0||i.slice(0,2).toLowerCase()!==e.toLowerCase()&&i.charCodeAt(2)===On)&&(i=`${e}\\`));let s=i.length,a=0,l="",c=!1,u=i.charCodeAt(0);if(s===1)Me(u)&&(a=1,c=!0);else if(Me(u))if(c=!0,Me(i.charCodeAt(1))){let d=2,p=d;for(;d<s&&!Me(i.charCodeAt(d));)d++;if(d<s&&d!==p){let f=i.slice(p,d);for(p=d;d<s&&Me(i.charCodeAt(d));)d++;if(d<s&&d!==p){for(p=d;d<s&&!Me(i.charCodeAt(d));)d++;(d===s||d!==p)&&(l=`\\\\${f}\\${i.slice(p,d)}`,a=d)}}}else a=1;else _o(u)&&i.charCodeAt(1)===wo&&(l=i.slice(0,2),a=2,s>2&&Me(i.charCodeAt(2))&&(c=!0,a=3));if(l.length>0)if(e.length>0){if(l.toLowerCase()!==e.toLowerCase())continue}else e=l;if(o){if(e.length>0)break}else if(n=`${i.slice(a)}\\${n}`,o=c,c&&e.length>0)break}return n=Fp(n,!o,"\\",Me),o?`${e}\\${n}`:`${e}${n}`||"."},normalize(t){Pt(t,"path");let e=t.length;if(e===0)return".";let n=0,o,r=!1,i=t.charCodeAt(0);if(e===1)return ab(i)?"\\":t;if(Me(i))if(r=!0,Me(t.charCodeAt(1))){let a=2,l=a;for(;a<e&&!Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){let c=t.slice(l,a);for(l=a;a<e&&Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&!Me(t.charCodeAt(a));)a++;if(a===e)return`\\\\${c}\\${t.slice(l)}\\`;a!==l&&(o=`\\\\${c}\\${t.slice(l,a)}`,n=a)}}}else n=1;else _o(i)&&t.charCodeAt(1)===wo&&(o=t.slice(0,2),n=2,e>2&&Me(t.charCodeAt(2))&&(r=!0,n=3));let s=n<e?Fp(t.slice(n),!r,"\\",Me):"";if(s.length===0&&!r&&(s="."),s.length>0&&Me(t.charCodeAt(e-1))&&(s+="\\"),!r&&o===void 0&&t.includes(":")){if(s.length>=2&&_o(s.charCodeAt(0))&&s.charCodeAt(1)===wo)return`.\\${s}`;let a=t.indexOf(":");do if(a===e-1||Me(t.charCodeAt(a+1)))return`.\\${s}`;while((a=t.indexOf(":",a+1))!==-1)}return o===void 0?r?`\\${s}`:s:r?`${o}\\${s}`:`${o}${s}`},isAbsolute(t){Pt(t,"path");let e=t.length;if(e===0)return!1;let n=t.charCodeAt(0);return Me(n)||e>2&&_o(n)&&t.charCodeAt(1)===wo&&Me(t.charCodeAt(2))},join(...t){if(t.length===0)return".";let e,n;for(let i=0;i<t.length;++i){let s=t[i];Pt(s,"path"),s.length>0&&(e===void 0?e=n=s:e+=`\\${s}`)}if(e===void 0)return".";let o=!0,r=0;if(typeof n=="string"&&Me(n.charCodeAt(0))){++r;let i=n.length;i>1&&Me(n.charCodeAt(1))&&(++r,i>2&&(Me(n.charCodeAt(2))?++r:o=!1))}if(o){for(;r<e.length&&Me(e.charCodeAt(r));)r++;r>=2&&(e=`\\${e.slice(r)}`)}return Rt.normalize(e)},relative(t,e){if(Pt(t,"from"),Pt(e,"to"),t===e)return"";let n=Rt.resolve(t),o=Rt.resolve(e);if(n===o||(t=n.toLowerCase(),e=o.toLowerCase(),t===e))return"";if(n.length!==t.length||o.length!==e.length){let m=n.split("\\"),g=o.split("\\");m[m.length-1]===""&&m.pop(),g[g.length-1]===""&&g.pop();let h=m.length,y=g.length,v=h<y?h:y,b;for(b=0;b<v&&m[b].toLowerCase()===g[b].toLowerCase();b++);return b===0?o:b===v?y>v?g.slice(b).join("\\"):h>v?"..\\".repeat(h-1-b)+"..":"":"..\\".repeat(h-b)+g.slice(b).join("\\")}let r=0;for(;r<t.length&&t.charCodeAt(r)===On;)r++;let i=t.length;for(;i-1>r&&t.charCodeAt(i-1)===On;)i--;let s=i-r,a=0;for(;a<e.length&&e.charCodeAt(a)===On;)a++;let l=e.length;for(;l-1>a&&e.charCodeAt(l-1)===On;)l--;let c=l-a,u=s<c?s:c,d=-1,p=0;for(;p<u;p++){let m=t.charCodeAt(r+p);if(m!==e.charCodeAt(a+p))break;m===On&&(d=p)}if(p!==u){if(d===-1)return o}else{if(c>u){if(e.charCodeAt(a+p)===On)return o.slice(a+p+1);if(p===2)return o.slice(a+p)}s>u&&(t.charCodeAt(r+p)===On?d=p:p===2&&(d=3)),d===-1&&(d=0)}let f="";for(p=r+d+1;p<=i;++p)(p===i||t.charCodeAt(p)===On)&&(f+=f.length===0?"..":"\\..");return a+=d,f.length>0?`${f}${o.slice(a,l)}`:(o.charCodeAt(a)===On&&++a,o.slice(a,l))},toNamespacedPath(t){if(typeof t!="string"||t.length===0)return t;let e=Rt.resolve(t);if(e.length<=2)return t;if(e.charCodeAt(0)===On){if(e.charCodeAt(1)===On){let n=e.charCodeAt(2);if(n!==bB&&n!==ys)return`\\\\?\\UNC\\${e.slice(2)}`}}else if(_o(e.charCodeAt(0))&&e.charCodeAt(1)===wo&&e.charCodeAt(2)===On)return`\\\\?\\${e}`;return e},dirname(t){Pt(t,"path");let e=t.length;if(e===0)return".";let n=-1,o=0,r=t.charCodeAt(0);if(e===1)return Me(r)?t:".";if(Me(r)){if(n=o=1,Me(t.charCodeAt(1))){let a=2,l=a;for(;a<e&&!Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&Me(t.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&!Me(t.charCodeAt(a));)a++;if(a===e)return t;a!==l&&(n=o=a+1)}}}}else _o(r)&&t.charCodeAt(1)===wo&&(n=e>2&&Me(t.charCodeAt(2))?3:2,o=n);let i=-1,s=!0;for(let a=e-1;a>=o;--a)if(Me(t.charCodeAt(a))){if(!s){i=a;break}}else s=!1;if(i===-1){if(n===-1)return".";i=n}return t.slice(0,i)},basename(t,e){e!==void 0&&Pt(e,"suffix"),Pt(t,"path");let n=0,o=-1,r=!0,i;if(t.length>=2&&_o(t.charCodeAt(0))&&t.charCodeAt(1)===wo&&(n=2),e!==void 0&&e.length>0&&e.length<=t.length){if(e===t)return"";let s=e.length-1,a=-1;for(i=t.length-1;i>=n;--i){let l=t.charCodeAt(i);if(Me(l)){if(!r){n=i+1;break}}else a===-1&&(r=!1,a=i+1),s>=0&&(l===e.charCodeAt(s)?--s===-1&&(o=i):(s=-1,o=a))}return n===o?o=a:o===-1&&(o=t.length),t.slice(n,o)}for(i=t.length-1;i>=n;--i)if(Me(t.charCodeAt(i))){if(!r){n=i+1;break}}else o===-1&&(r=!1,o=i+1);return o===-1?"":t.slice(n,o)},extname(t){Pt(t,"path");let e=0,n=-1,o=0,r=-1,i=!0,s=0;t.length>=2&&t.charCodeAt(1)===wo&&_o(t.charCodeAt(0))&&(e=o=2);for(let a=t.length-1;a>=e;--a){let l=t.charCodeAt(a);if(Me(l)){if(!i){o=a+1;break}continue}r===-1&&(i=!1,r=a+1),l===ys?n===-1?n=a:s!==1&&(s=1):n!==-1&&(s=-1)}return n===-1||r===-1||s===0||s===1&&n===r-1&&n===o+1?"":t.slice(n,r)},format:qP.bind(null,"\\"),parse(t){Pt(t,"path");let e={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return e;let n=t.length,o=0,r=t.charCodeAt(0);if(n===1)return Me(r)?(e.root=e.dir=t,e):(e.base=e.name=t,e);if(Me(r)){if(o=1,Me(t.charCodeAt(1))){let d=2,p=d;for(;d<n&&!Me(t.charCodeAt(d));)d++;if(d<n&&d!==p){for(p=d;d<n&&Me(t.charCodeAt(d));)d++;if(d<n&&d!==p){for(p=d;d<n&&!Me(t.charCodeAt(d));)d++;d===n?o=d:d!==p&&(o=d+1)}}}}else if(_o(r)&&t.charCodeAt(1)===wo){if(n<=2)return e.root=e.dir=t,e;if(o=2,Me(t.charCodeAt(2))){if(n===3)return e.root=e.dir=t,e;o=3}}o>0&&(e.root=t.slice(0,o));let i=-1,s=o,a=-1,l=!0,c=t.length-1,u=0;for(;c>=o;--c){if(r=t.charCodeAt(c),Me(r)){if(!l){s=c+1;break}continue}a===-1&&(l=!1,a=c+1),r===ys?i===-1?i=c:u!==1&&(u=1):i!==-1&&(u=-1)}return a!==-1&&(i===-1||u===0||u===1&&i===a-1&&i===s+1?e.base=e.name=t.slice(s,a):(e.name=t.slice(s,i),e.base=t.slice(s,a),e.ext=t.slice(i,a))),s>0&&s!==o?e.dir=t.slice(0,s-1):e.dir=e.root,e},sep:"\\",delimiter:";",win32:null,posix:null},wB=(()=>{if(Ln){let t=/\\/g;return()=>{let e=Ec().replace(t,"/");return e.slice(e.indexOf("/"))}}return()=>Ec()})(),Ge={resolve(...t){let e="",n=!1;for(let o=t.length-1;o>=0&&!n;o--){let r=t[o];Pt(r,`paths[${o}]`),r.length!==0&&(e=`${r}/${e}`,n=r.charCodeAt(0)===Vt)}if(!n){let o=wB();e=`${o}/${e}`,n=o.charCodeAt(0)===Vt}return e=Fp(e,!n,"/",ab),n?`/${e}`:e.length>0?e:"."},normalize(t){if(Pt(t,"path"),t.length===0)return".";let e=t.charCodeAt(0)===Vt,n=t.charCodeAt(t.length-1)===Vt;return t=Fp(t,!e,"/",ab),t.length===0?e?"/":n?"./":".":(n&&(t+="/"),e?`/${t}`:t)},isAbsolute(t){return Pt(t,"path"),t.length>0&&t.charCodeAt(0)===Vt},join(...t){if(t.length===0)return".";let e=[];for(let n=0;n<t.length;++n){let o=t[n];Pt(o,"path"),o.length>0&&e.push(o)}return e.length===0?".":Ge.normalize(e.join("/"))},relative(t,e){if(Pt(t,"from"),Pt(e,"to"),t===e||(t=Ge.resolve(t),e=Ge.resolve(e),t===e))return"";let n=1,o=t.length,r=o-n,i=1,s=e.length-i,a=r<s?r:s,l=-1,c=0;for(;c<a;c++){let d=t.charCodeAt(n+c);if(d!==e.charCodeAt(i+c))break;d===Vt&&(l=c)}if(c===a)if(s>a){if(e.charCodeAt(i+c)===Vt)return e.slice(i+c+1);if(c===0)return e.slice(i+c)}else r>a&&(t.charCodeAt(n+c)===Vt?l=c:c===0&&(l=0));let u="";for(c=n+l+1;c<=o;++c)(c===o||t.charCodeAt(c)===Vt)&&(u+=u.length===0?"..":"/..");return`${u}${e.slice(i+l)}`},toNamespacedPath(t){return t},dirname(t){if(Pt(t,"path"),t.length===0)return".";let e=t.charCodeAt(0)===Vt,n=-1,o=!0;for(let r=t.length-1;r>=1;--r)if(t.charCodeAt(r)===Vt){if(!o){n=r;break}}else o=!1;return n===-1?e?"/":".":e&&n===1?"//":t.slice(0,n)},basename(t,e){e!==void 0&&Pt(e,"suffix"),Pt(t,"path");let n=0,o=-1,r=!0,i;if(e!==void 0&&e.length>0&&e.length<=t.length){if(e===t)return"";let s=e.length-1,a=-1;for(i=t.length-1;i>=0;--i){let l=t.charCodeAt(i);if(l===Vt){if(!r){n=i+1;break}}else a===-1&&(r=!1,a=i+1),s>=0&&(l===e.charCodeAt(s)?--s===-1&&(o=i):(s=-1,o=a))}return n===o?o=a:o===-1&&(o=t.length),t.slice(n,o)}for(i=t.length-1;i>=0;--i)if(t.charCodeAt(i)===Vt){if(!r){n=i+1;break}}else o===-1&&(r=!1,o=i+1);return o===-1?"":t.slice(n,o)},extname(t){Pt(t,"path");let e=-1,n=0,o=-1,r=!0,i=0;for(let s=t.length-1;s>=0;--s){let a=t[s];if(a==="/"){if(!r){n=s+1;break}continue}o===-1&&(r=!1,o=s+1),a==="."?e===-1?e=s:i!==1&&(i=1):e!==-1&&(i=-1)}return e===-1||o===-1||i===0||i===1&&e===o-1&&e===n+1?"":t.slice(e,o)},format:qP.bind(null,"/"),parse(t){Pt(t,"path");let e={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return e;let n=t.charCodeAt(0)===Vt,o;n?(e.root="/",o=1):o=0;let r=-1,i=0,s=-1,a=!0,l=t.length-1,c=0;for(;l>=o;--l){let u=t.charCodeAt(l);if(u===Vt){if(!a){i=l+1;break}continue}s===-1&&(a=!1,s=l+1),u===ys?r===-1?r=l:c!==1&&(c=1):r!==-1&&(c=-1)}if(s!==-1){let u=i===0&&n?1:i;r===-1||c===0||c===1&&r===s-1&&r===i+1?e.base=e.name=t.slice(u,s):(e.name=t.slice(u,r),e.base=t.slice(u,s),e.ext=t.slice(r,s))}return i>0?e.dir=t.slice(0,i-1):n&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};Ge.win32=Rt.win32=Rt;Ge.posix=Rt.posix=Ge;ai=Ln?Rt.normalize:Ge.normalize,Up=Ln?Rt.isAbsolute:Ge.isAbsolute,lt=Ln?Rt.join:Ge.join,Ut=Ln?Rt.resolve:Ge.resolve,Pc=Ln?Rt.relative:Ge.relative,ir=Ln?Rt.dirname:Ge.dirname,GP=Ln?Rt.basename:Ge.basename,Rc=Ln?Rt.extname:Ge.extname,sde=Ln?Rt.format:Ge.format,ade=Ln?Rt.parse:Ge.parse,lde=Ln?Rt.toNamespacedPath:Ge.toNamespacedPath,vr=Ln?Rt.sep:Ge.sep,cde=Ln?Rt.delimiter:Ge.delimiter});function SB(){return!gs&&typeof process<"u"&&typeof process.cwd=="function"}function db(){return SB()?process.cwd():""}async function JP(t){return(await t())[0]||null}async function YP(t,e){let n=await e();if(!n)throw new Error("No workspace available");return Ut(n.path,t)}var pb=Be(()=>{"use strict";Nt();or()});var ka,fb=Be(()=>{"use strict";pb();ka=class{async getPrimaryWorkspace(){return JP(()=>this.getWorkspaceRoots())}async resolvePath(e){return YP(e,()=>this.getPrimaryWorkspace())}}});var zR={};dn(zR,{VSCodeWorkspaceProvider:()=>Lb});var Lb,WR=Be(()=>{"use strict";fb();Lb=class extends ka{constructor(n){super();this.vscodeApi=n;if(!n||!n.workspace)throw new Error('Invalid VSCode API instance. Make sure to pass the vscode module: new VSCodeWorkspaceProvider(require("vscode"))')}vscodeApi;async getWorkspaceRoots(){let n=this.vscodeApi.workspace.workspaceFolders;return!n||n.length===0?[]:n.map(o=>({path:o.uri.fsPath,name:o.name}))}async getWorkspaceForFile(n){try{let o=this.vscodeApi.Uri.file(n),r=this.vscodeApi.workspace.getWorkspaceFolder(o);return r?{path:r.uri.fsPath,name:r.name}:null}catch{return null}}async isPathInWorkspace(n){try{let o=this.vscodeApi.Uri.file(n);return this.vscodeApi.workspace.getWorkspaceFolder(o)!==void 0}catch{return!1}}}});var hA,yA=Be(()=>{"use strict";hA=`\u8BF7\u6267\u884C\u4E00\u6B21\u5B89\u5168\u7684 git \u63D0\u4EA4\u6D41\u7A0B\uFF0C\u5E76\u4E25\u683C\u9075\u5B88\u4EE5\u4E0B\u7EA6\u675F\uFF1A
2
2
 
3
3
  1. \u5FC5\u987B\u901A\u8FC7 command\uFF08run_terminal_cmd\uFF09\u5DE5\u5177\u6267\u884C git \u547D\u4EE4\uFF0C\u4E0D\u8981\u5047\u8BBE\u547D\u4EE4\u8F93\u51FA\u3002
4
4
  2. \u5148\u83B7\u53D6\u5E76\u5206\u6790\uFF1Agit status\u3001git diff\uFF08\u542B staged/unstaged\uFF09\u3001git log \u6700\u8FD1\u63D0\u4EA4\u3002
5
5
  3. \u57FA\u4E8E\u53D8\u66F4\u751F\u6210\u4E00\u6761\u7B80\u6D01\u3001\u660E\u786E\u7684 commit message\uFF08\u9ED8\u8BA4\u4E2D\u6587\uFF0C\u82E5\u4ED3\u5E93\u5386\u53F2\u5168\u82F1\u6587\u53EF\u7528\u82F1\u6587\uFF09\u3002
6
6
  4. \u786E\u8BA4\u65E0\u654F\u611F\u6587\u4EF6\uFF08\u5982 .env\u3001\u51ED\u636E\u6587\u4EF6\uFF09\u88AB\u63D0\u4EA4\u3002
7
7
  5. \u4F7F\u7528 git add + git commit \u5B8C\u6210\u63D0\u4EA4\uFF1B\u4E0D\u8981\u4F7F\u7528 --no-verify\u3001--amend\u3001-i \u7B49\u5371\u9669/\u4EA4\u4E92\u53C2\u6570\u3002
8
- 6. \u63D0\u4EA4\u540E\u8F93\u51FA\u6700\u7EC8\u7ED3\u679C\uFF08commit hash \u4E0E message\uFF0C\u6216\u5931\u8D25\u539F\u56E0\uFF09\u3002`});var vA={};dn(vA,{commitActionHandler:()=>Wj});async function Wj(t,e){let{conversation:n,persist:o}=t,r=n.conversationId,i=n.eventBus,s=t.turnId??`action-${je()}`;try{if(e?.aborted){let a=new Error("Aborted");throw a.name="AbortError",a}n.submitUserMessage(hA,t.selectedModelId),await o()}catch(a){let l=typeof a=="object"&&a!==null&&"name"in a?String(a.name):"";if(!(e?.aborted===!0||l==="AbortError"))throw a}finally{i.emit(P.CONVERSATION_ACTION_ENDED,{conversationId:r,turnId:s})}}var bA=Be(()=>{"use strict";tn();gr();yA()});var X_={};dn(X_,{BrowserTabNotFoundError:()=>Sg,closePageViaPlaywright:()=>J_,closePlaywrightBrowserConnection:()=>Q_,createPageViaPlaywright:()=>Z_,ensureContextState:()=>Cg,ensurePageState:()=>Dt,focusPageViaPlaywright:()=>Y_,forceDisconnectPlaywrightForTarget:()=>ku,getPageForTargetId:()=>Ft,gotoPageWithNavigationGuard:()=>Su,listPagesViaPlaywright:()=>Iu,refLocator:()=>Vr,requireRef:()=>Ro,requireRefOrSelector:()=>Ao,resolveDefaultTargetId:()=>nD,restoreRoleRefsForTarget:()=>q_,storeRoleRefsForTarget:()=>wu,toAIFriendlyError:()=>qr});import{chromium as BH}from"playwright-core";function Hr(t){return t.replace(/\/$/,"")}function Ig(t){return typeof t!="string"?null:t.trim()||null}function tD(t,e){return`${Hr(t)}::${e}`}function nD(t,e){if(!t.length)return null;let n=Ig(e);return n&&t.some(r=>r.targetId===n)?n:t.find(r=>!/^chrome:\/\//i.test(r.url)&&!/^about:blank$/i.test(r.url))?.targetId??t[0]?.targetId??null}function Dt(t){let e=_g.get(t);if(e)return e;let n={console:[],errors:[],requests:[],requestIds:new WeakMap,nextRequestId:0};return _g.set(t,n),V_.has(t)||(V_.add(t),t.on("console",o=>{n.console.push({type:o.type(),text:o.text(),timestamp:new Date().toISOString(),location:o.location()}),n.console.length>zH&&n.console.shift()}),t.on("pageerror",o=>{n.errors.push({message:o.message||String(o),name:o.name||void 0,stack:o.stack||void 0,timestamp:new Date().toISOString()}),n.errors.length>WH&&n.errors.shift()}),t.on("request",o=>{n.nextRequestId+=1;let r=`r${n.nextRequestId}`;n.requestIds.set(o,r),n.requests.push({id:r,timestamp:new Date().toISOString(),method:o.method(),url:o.url(),resourceType:o.resourceType()}),n.requests.length>KH&&n.requests.shift()}),t.on("response",o=>{let r=o.request(),i=n.requestIds.get(r);if(i)for(let s=n.requests.length-1;s>=0;s-=1){let a=n.requests[s];if(a&&a.id===i){a.status=o.status(),a.ok=o.ok();break}}}),t.on("requestfailed",o=>{let r=n.requestIds.get(o);if(r)for(let i=n.requests.length-1;i>=0;i-=1){let s=n.requests[i];if(s&&s.id===r){s.failureText=o.failure()?.errorText,s.ok=!1;break}}}),t.on("close",()=>{_g.delete(t),V_.delete(t)})),n}function Cg(t){let e=Q4.get(t);if(e)return e;let n={traceActive:!1};return Q4.set(t,n),n}function HH(t){if(!X4.has(t)){X4.add(t),Cg(t);for(let e of t.pages())Dt(e);t.on("page",e=>Dt(e))}}function VH(t){for(let e of t.contexts())HH(e)}function wu(t){let e=Dt(t.page);e.roleRefs=t.refs,e.roleRefsFrameSelector=t.frameSelector,e.roleRefsMode=t.mode;let n=Ig(t.targetId);if(n)for(Tu.set(tD(t.cdpUrl,n),{refs:t.refs,...t.frameSelector?{frameSelector:t.frameSelector}:{},mode:t.mode});Tu.size>jH;){let o=Tu.keys().next();if(o.done)break;Tu.delete(o.value)}}function q_(t){let e=Ig(t.targetId);if(!e)return;let n=Tu.get(tD(t.cdpUrl,e));if(!n)return;let o=Dt(t.page);o.roleRefs||(o.roleRefs=n.refs,o.roleRefsFrameSelector=n.frameSelector,o.roleRefsMode=n.mode)}function Vr(t,e){let n=e.startsWith("@")?e.slice(1):e.startsWith("ref=")?e.slice(4):e;if(/^e\d+$/.test(n)){let o=_g.get(t);if(o?.roleRefsMode==="aria")return(o.roleRefsFrameSelector?t.frameLocator(o.roleRefsFrameSelector):t).locator(`aria-ref=${n}`);let r=o?.roleRefs?.[n];if(!r)throw new Error(`Unknown ref "${n}". Run a new snapshot and use a ref from that snapshot.`);let s=o?.roleRefsFrameSelector?t.frameLocator(o.roleRefsFrameSelector):t,a=r.name?s.getByRole(r.role,{name:r.name,exact:!0}):s.getByRole(r.role);return r.nth!==void 0?a.nth(r.nth):a}return t.locator(`aria-ref=${n}`)}function Ro(t){let e=typeof t=="string"?t.trim():"";if(!e)throw new Error("ref is required");return e}function Ao(t,e){let n=typeof t=="string"?t.trim():"",o=typeof e=="string"?e.trim():"";if(!n&&!o)throw new Error("ref or selector is required");return{...n?{ref:n}:{},...o?{selector:o}:{}}}async function G_(t){let e=Hr(t),n=Kr.get(e);if(n)return n;let o=gl.get(e);if(o)return await o;let i=(async()=>{let s;for(let a=0;a<3;a+=1)try{let l=5e3+a*2e3,c=await BH.connectOverCDP(e,{timeout:l}),u=()=>{Kr.get(e)?.browser===c&&Kr.delete(e)},d={browser:c,cdpUrl:e,onDisconnected:u};return Kr.set(e,d),c.on("disconnected",u),VH(c),d}catch(l){if(s=l,(l instanceof Error?l.message:String(l)).includes("rate limit"))break;await new Promise(u=>setTimeout(u,250+a*250))}throw s??new Error("CDP connect failed")})().finally(()=>{gl.delete(e)});return gl.set(e,i),await i}async function kg(t){return t.contexts().flatMap(e=>e.pages())}async function _u(t){let e=await t.context().newCDPSession(t);try{let n=await e.send("Target.getTargetInfo");return Ig(n?.targetInfo?.targetId)}finally{await e.detach().catch(()=>{})}}async function eD(t,e,n){let o=await kg(t),r=!1;for(let i of o){let s=null;try{s=await _u(i),r=!0}catch{s=null}if(s&&s===e)return i}if(n)try{let s=`${Hr(n).replace(/^ws(s?):\/\//,"http$1://")}/json/list`,a=new AbortController,l=setTimeout(()=>a.abort(),2e3);try{let d=(await(await fetch(s,{signal:a.signal})).json()).find(p=>p.id===e);if(d){let p=o.filter(f=>f.url()===d.url);if(p.length===1)return p[0]??null}}finally{clearTimeout(l)}}catch{}return!r&&o.length===1?o[0]??null:null}async function Ft(t){let{browser:e}=await G_(t.cdpUrl),n=await kg(e);if(!n.length){let r=e.contexts()[0]??await e.newContext();Cg(r);let i=await r.newPage();Dt(i),await i.goto("about:blank").catch(()=>{}),n=await kg(e)}if(!n.length)throw new Error("No pages available in the connected browser.");if(!t.targetId){let i=(await Promise.all(n.map(async l=>({targetId:await _u(l).catch(()=>""),url:l.url()})))).filter(l=>l.targetId!==null&&l.targetId.length>0),s=Hr(t.cdpUrl),a=nD(i,Po.get(s));if(a){let l=await eD(e,a,t.cdpUrl);if(l)return Po.set(s,a),l}return n[0]}let o=await eD(e,t.targetId,t.cdpUrl);if(o)return Po.set(Hr(t.cdpUrl),t.targetId),o;if(n.length===1)return n[0];throw new Sg}async function Su(t){return await t.page.goto(t.url,{timeout:t.timeoutMs,waitUntil:"domcontentloaded"})}async function ku(t){let e=Hr(t.cdpUrl),n=Kr.get(e);n&&(Kr.delete(e),gl.delete(e),n.onDisconnected&&typeof n.browser.off=="function"&&n.browser.off("disconnected",n.onDisconnected),n.browser.close().catch(()=>{}))}async function Iu(t){let{browser:e}=await G_(t.cdpUrl),n=await kg(e),o=[];for(let r of n){let i=await _u(r).catch(()=>null);i&&o.push({targetId:i,title:await r.title().catch(()=>""),url:r.url(),type:"page"})}return o}async function Z_(t){let{browser:e}=await G_(t.cdpUrl),n=e.contexts()[0]??await e.newContext();Cg(n);let o=await n.newPage();Dt(o);let r=t.url.trim()||"about:blank";if(r!=="about:blank")try{await Su({cdpUrl:t.cdpUrl,page:o,url:r,timeoutMs:3e4})}catch{}let i=await _u(o).catch(()=>null);if(!i)throw new Error("Failed to get targetId for new page");return Po.set(Hr(t.cdpUrl),i),{targetId:i,title:await o.title().catch(()=>""),url:o.url(),type:"page"}}async function J_(t){let e=Hr(t.cdpUrl),n=Po.get(e),o=await Ft(t),r=await _u(o).catch(()=>null);await o.close(),r&&n===r&&Po.delete(e)}async function Y_(t){await(await Ft(t)).bringToFront().catch(()=>{}),Po.set(Hr(t.cdpUrl),t.targetId)}async function Q_(t){let e=t?.cdpUrl?Hr(t.cdpUrl):null;if(e){let o=Kr.get(e);if(Kr.delete(e),gl.delete(e),Po.delete(e),!o)return;o.onDisconnected&&typeof o.browser.off=="function"&&o.browser.off("disconnected",o.onDisconnected),await o.browser.close().catch(()=>{});return}let n=Array.from(Kr.values());Kr.clear(),gl.clear(),Po.clear();for(let o of n)o.onDisconnected&&typeof o.browser.off=="function"&&o.browser.off("disconnected",o.onDisconnected),await o.browser.close().catch(()=>{})}function qr(t,e){let n=t instanceof Error?t.message:String(t),o=n.length>300?n.slice(0,300)+"...":n;return new Error(`${e}: ${o}`)}var Sg,_g,Q4,X4,V_,Tu,jH,zH,WH,KH,Kr,gl,Po,_i=Be(()=>{"use strict";Sg=class extends Error{constructor(){super("Browser tab not found. The targetId may be stale \u2014 use tabs to list available tabs."),this.name="BrowserTabNotFoundError"}},_g=new WeakMap,Q4=new WeakMap,X4=new WeakSet,V_=new WeakSet,Tu=new Map,jH=50,zH=500,WH=200,KH=500,Kr=new Map,gl=new Map,Po=new Map});import{Client as hk}from"@modelcontextprotocol/sdk/client/index.js";import{SSEClientTransport as sY}from"@modelcontextprotocol/sdk/client/sse.js";import{StdioClientTransport as aY}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as lY}from"@modelcontextprotocol/sdk/client/streamableHttp.js";function cY(t){if(!t||typeof t!="object")return!1;let e=t;if(String(e.name??"")==="UnauthorizedError"||Number(e.status??e.statusCode??NaN)===401)return!0;let r=String(e.code??"");if(r==="UNAUTHORIZED"||r==="401")return!0;let i=String(e.message??"").toLowerCase();return i.includes("unauthorized")||i.includes("401")}function h7(t){return t.replace(/[^a-zA-Z0-9_-]/g,"_")}function vk(t,e){return`mcp_${h7(t)}_${h7(e)}`}async function yk(t,e){return!e||e<=0?t:new Promise((n,o)=>{let r=setTimeout(()=>{o(new Error(`MCP operation timed out after ${e}ms`))},e);t.then(i=>{clearTimeout(r),n(i)},i=>{clearTimeout(r),o(i)})})}async function y7(t,e,n){if(t.length===0)return;let o=Math.max(1,e),r=0,i=Array.from({length:Math.min(o,t.length)},async()=>{for(;r<t.length;){let s=t[r++];s!==void 0&&await n(s)}});await Promise.all(i)}function uY(t){if(!Array.isArray(t))return[];let e=[];for(let n of t){if(!n||typeof n!="object")continue;let o=n,r=typeof o.type=="string"?o.type:"";if(r==="text"&&typeof o.text=="string")e.push({type:"text",text:o.text});else if(r==="image"&&typeof o.data=="string")e.push({type:"image",data:o.data,mimeType:typeof o.mimeType=="string"?o.mimeType:"image/png"});else if(r==="audio"&&typeof o.data=="string")e.push({type:"audio",data:o.data,mimeType:typeof o.mimeType=="string"?o.mimeType:"audio/wav"});else if(r==="resource"&&o.resource&&typeof o.resource=="object"){let i=o.resource;e.push({type:"resource",resource:{text:typeof i.text=="string"?i.text:void 0,blob:typeof i.blob=="string"?i.blob:void 0,mimeType:typeof i.mimeType=="string"?i.mimeType:void 0}})}else r==="resource_link"&&typeof o.uri=="string"&&e.push({type:"resource_link",uri:o.uri,title:typeof o.title=="string"?o.title:void 0,name:typeof o.name=="string"?o.name:void 0})}return e}var py,v7=Be(()=>{"use strict";py=class{clients=new Map;statuses=new Map;tools=new Map;currentConfig={};onSnapshotChanged;localConcurrency;remoteConcurrency;constructor(e={}){this.onSnapshotChanged=e.onSnapshotChanged,this.localConcurrency=e.localConcurrency??2,this.remoteConcurrency=e.remoteConcurrency??4}async start(e){await this.stop(),this.currentConfig={...e};for(let[r,i]of Object.entries(e))this.statuses.set(r,i.enabled===!1?{status:"disabled"}:{status:"pending"});this.emitSnapshot();let n=[],o=[];for(let[r,i]of Object.entries(e))i.enabled!==!1&&(i.type==="stdio"?n.push([r,i]):o.push([r,i]));await Promise.all([y7(n,this.localConcurrency,([r,i])=>this.connectServer(r,i)),y7(o,this.remoteConcurrency,([r,i])=>this.connectServer(r,i))]),await this.refreshTools()}async stop(){await Promise.all(Array.from(this.clients.values()).map(async({client:e})=>{try{await e.close()}catch{}})),this.clients.clear(),this.tools.clear();for(let[e,n]of Object.entries(this.currentConfig))this.statuses.set(e,n.enabled===!1?{status:"disabled"}:{status:"failed",error:"Disconnected"});this.emitSnapshot()}getSnapshot(){return{statuses:this.getStatuses(),tools:this.getToolsSync()}}getStatuses(){let e={};for(let n of Object.keys(this.currentConfig))e[n]=this.statuses.get(n)??{status:"failed",error:"Unknown status"};return e}getToolsSync(){let e={};for(let[n,o]of this.tools)e[n]=o;return e}async listTools(){let e={};for(let[n,o]of this.clients)try{let r=await o.client.listTools();for(let i of r.tools){let s=this.toDescriptor(n,i);e[s.id]=s}}catch(r){this.statuses.set(n,{status:"failed",error:r instanceof Error?r.message:String(r)})}this.tools.clear();for(let[n,o]of Object.entries(e))this.tools.set(n,o);return this.emitSnapshot(),e}async enableServer(e){let n=this.currentConfig[e];if(!n)throw new Error(`MCP server "${e}" not found in configuration`);let o=this.statuses.get(e);if(o?.status==="connected"||o?.status==="pending")return;let r=this.clients.get(e);if(r){try{await r.client.close()}catch{}this.clients.delete(e)}this.statuses.set(e,{status:"pending"}),this.emitSnapshot(),await this.connectServer(e,n),await this.listTools()}async disableServer(e){if(!this.currentConfig[e])throw new Error(`MCP server "${e}" not found in configuration`);let o=this.clients.get(e);if(o){try{await o.client.close()}catch{}this.clients.delete(e)}for(let[r,i]of this.tools)i.serverName===e&&this.tools.delete(r);this.statuses.set(e,{status:"disabled"}),this.emitSnapshot()}async callTool(e,n,o,r){let i=this.clients.get(e);if(!i)return{isError:!0,content:[{type:"text",text:`MCP server "${e}" is not connected`}]};let s=i.config.timeoutMs,a=i.client.callTool({name:n,arguments:o},void 0,typeof s=="number"&&s>0?{timeout:s}:void 0),l=await this.withAbort(a,r);return{content:uY(l.content),structuredContent:l.structuredContent,isError:!!l.isError}}async refreshTools(){this.emitSnapshot()}emitSnapshot(){this.onSnapshotChanged?.(this.getSnapshot())}async connectServer(e,n){if(n.type==="stdio"){await this.connectStdio(e,n);return}if(n.type==="http"){await this.connectHttp(e,n);return}if(n.type==="sse"){await this.connectSse(e,n);return}this.statuses.set(e,{status:"failed",error:"Unsupported transport"}),this.emitSnapshot()}async connectStdio(e,n){let o=new aY({command:n.command,args:n.args??[],cwd:n.cwd,env:{...process.env,...n.env??{}},stderr:"pipe"}),r=new hk({name:"panda-mcp-client",version:"0.0.1"});try{await yk(r.connect(o),n.timeoutMs),this.clients.set(e,{name:e,client:r,config:n}),this.statuses.set(e,{status:"connected"})}catch(i){try{await o.close()}catch{}this.statuses.set(e,this.toErrorStatus(i))}this.emitSnapshot()}async connectHttp(e,n){let o=new lY(new URL(n.url),{requestInit:n.headers?{headers:n.headers}:void 0}),r=new hk({name:"panda-mcp-client",version:"0.0.1"});try{await yk(r.connect(o),n.timeoutMs),this.clients.set(e,{name:e,client:r,config:n}),this.statuses.set(e,{status:"connected"})}catch(i){try{await o.close()}catch{}this.statuses.set(e,this.toErrorStatus(i))}this.emitSnapshot()}async connectSse(e,n){let o=new sY(new URL(n.url),{requestInit:n.headers?{headers:n.headers}:void 0}),r=new hk({name:"panda-mcp-client",version:"0.0.1"});try{await yk(r.connect(o),n.timeoutMs),this.clients.set(e,{name:e,client:r,config:n}),this.statuses.set(e,{status:"connected"})}catch(i){try{await o.close()}catch{}this.statuses.set(e,this.toErrorStatus(i))}this.emitSnapshot()}toErrorStatus(e){return cY(e)?{status:"needs_auth"}:{status:"failed",error:e instanceof Error?e.message:String(e)}}toDescriptor(e,n){return{id:vk(e,n.name),serverName:e,toolName:n.name,displayName:n.name,description:n.description??"",inputSchema:n.inputSchema??{type:"object"}}}async withAbort(e,n){if(n.aborted){let o=new Error("MCP tool call aborted");throw o.name="AbortError",o}return new Promise((o,r)=>{let i=()=>{s();let a=new Error("MCP tool call aborted");a.name="AbortError",r(a)},s=()=>n.removeEventListener("abort",i);n.addEventListener("abort",i,{once:!0}),e.then(a=>{s(),o(a)},a=>{s(),r(a)})})}}});var b7={};dn(b7,{CliMcpRuntime:()=>bk,toToolId:()=>vk});var bk,x7=Be(()=>{"use strict";v7();bk=class{manager=new py;async start(e){await this.manager.start(e)}async stop(){await this.manager.stop()}async status(){return this.manager.getStatuses()}async listTools(){return this.manager.listTools()}async callTool(e,n,o,r){return this.manager.callTool(e,n,o,r)}async setServerEnabled(e,n){n?await this.manager.enableServer(e):await this.manager.disableServer(e)}}});function fy(t){return typeof t=="object"&&t!==null}function T7(t){if(!fy(t))return;let e={};for(let[n,o]of Object.entries(t))typeof o=="string"&&(e[n]=o);return e}function dY(t){if(!fy(t))return;let e=typeof t.type=="string"?t.type:"stdio",n=typeof t.timeoutMs=="number"?t.timeoutMs:typeof t.timeout=="number"?t.timeout:void 0,o=typeof t.enabled=="boolean"?t.enabled:void 0;if(e==="stdio"){let r=typeof t.command=="string"?t.command:Array.isArray(t.command)&&typeof t.command[0]=="string"?t.command[0]:void 0;if(!r)return;let i=Array.isArray(t.args)?t.args.filter(s=>typeof s=="string"):Array.isArray(t.command)?t.command.slice(1).filter(s=>typeof s=="string"):void 0;return{type:"stdio",command:r,args:i,cwd:typeof t.cwd=="string"?t.cwd:void 0,env:T7(t.env??t.environment),timeoutMs:n,enabled:o}}if(e==="http"||e==="sse")return typeof t.url!="string"?void 0:{type:e,url:t.url,headers:T7(t.headers),timeoutMs:n,enabled:o,oauth:fy(t.oauth)?{enabled:typeof t.oauth.enabled=="boolean"?t.oauth.enabled:void 0,clientId:typeof t.oauth.clientId=="string"?t.oauth.clientId:void 0,clientSecret:typeof t.oauth.clientSecret=="string"?t.oauth.clientSecret:void 0,scope:typeof t.oauth.scope=="string"?t.oauth.scope:void 0}:void 0}}function w7(t){let e;try{e=JSON.parse(t)}catch{return{}}let n=e.mcp??e.mcpServers??{};if(!fy(n))return{};let o={};for(let[r,i]of Object.entries(n)){let s=dY(i);s&&(o[r]=s)}return o}var _7=Be(()=>{"use strict"});var Tk={};dn(Tk,{loadCliMcpConfig:()=>xk});import{promises as pY}from"fs";import fY from"os";import S7 from"path";async function k7(t){let e;try{e=await pY.readFile(t,"utf8")}catch{return{}}return w7(e)}async function xk(t){let e=S7.join(fY.homedir(),".panda","mcp.json"),n=S7.join(t,".panda","mcp.json"),[o,r]=await Promise.all([k7(e),k7(n)]);return{...o,...r}}var my=Be(()=>{"use strict";_7()});function I7(t){let e=[],n=[],o=!1;for(let a of t.content){if(a.type==="text"){e.push(a.text),n.push(a.text);continue}if(a.type==="image"){o=!0,n.push({inlineData:{mimeType:a.mimeType||"image/png",data:a.data}});continue}if(a.type==="audio"){o=!0,n.push({inlineData:{mimeType:a.mimeType||"audio/wav",data:a.data}});continue}if(a.type==="resource"){let l=a.resource?.text;typeof l=="string"&&l.length>0&&(e.push(l),n.push(l));continue}if(a.type==="resource_link"){let l=`Resource Link: ${a.title||a.name||a.uri} at ${a.uri}`;e.push(l),n.push(l);continue}}if(t.structuredContent!==void 0){let a=JSON.stringify(t.structuredContent);e.push(a),n.push(a)}let r=e.join(`
9
- `),s={llmContent:o?n:r};return t.isError&&(s.error={message:r||"MCP tool returned an error",type:"MCP_ERROR"}),s}var C7=Be(()=>{"use strict"});var gy,E7=Be(()=>{"use strict";C7();gy=class{constructor(e,n,o,r,i){this.params=e;this.serverName=n;this.toolName=o;this.toolDisplayName=r;this.runtime=i}params;serverName;toolName;toolDisplayName;runtime;getDescription(){return`Calling MCP tool: ${this.toolDisplayName} on server: ${this.serverName}`}toolLocations(){return[]}async shouldConfirmExecute(e){return!1}async execute(e,n){let o=await this.runtime.callTool(this.serverName,this.toolName,this.params,e);return I7(o)}}});var hy,P7=Be(()=>{"use strict";kt();E7();hy=class{constructor(e,n){this.descriptor=e;this.runtime=n;this.name=e.id,this.displayName=e.displayName,this.description=e.description,this.schema={name:e.id,description:e.description,parametersJsonSchema:e.inputSchema??{type:"object"}}}descriptor;runtime;name;displayName;description;runsIn="backend";kind="mcp";isOutputMarkdown=!0;canUpdateOutput=!1;schema;validateToolParams(e){return null}async build(e){return new gy(e,this.descriptor.serverName,this.descriptor.toolName,this.displayName,this.runtime)}}});var R7={};dn(R7,{CliMcpToolSource:()=>wk});var wk,A7=Be(()=>{"use strict";P7();wk=class{constructor(e){this.runtime=e}runtime;descriptorById=new Map;async getFunctionDeclarationsAsync(){let e=await this.runtime.listTools();return this.descriptorById=new Map(Object.entries(e)),Object.values(e).map(n=>({name:n.id,description:n.description??"",parametersJsonSchema:n.inputSchema??{type:"object"}}))}async getToolAsync(e){let n=this.descriptorById.get(e);if(!n){let o=await this.runtime.listTools();this.descriptorById=new Map(Object.entries(o)),n=this.descriptorById.get(e)}if(n)return new hy(n,this.runtime)}}});var Ak={};dn(Ak,{runMcpCommand:()=>Rk,updateMcpConfigEnabled:()=>NY});import{promises as Sk}from"fs";import $7 from"os";import Pk from"path";function kk(t){return t.mcp??t.mcpServers??{}}function Ik(t,e){"mcp"in t?t.mcp=e:("mcpServers"in t,t.mcpServers=e)}function _k(t,e){let n=t.indexOf(e);if(!(n<0||n+1>=t.length))return t[n+1]}function LY(t,e){let n=t.indexOf(e);return n<0||n+1>=t.length?[]:t[n+1].split(" ").map(o=>o.trim()).filter(Boolean)}async function Ck(t){try{let e=await Sk.readFile(t,"utf8"),n=JSON.parse(e);return typeof n=="object"&&n?n:{}}catch{return{}}}async function Ek(t,e){await Sk.mkdir(Pk.dirname(t),{recursive:!0}),await Sk.writeFile(t,JSON.stringify(e,null,2),"utf8")}function md(){console.log(["MCP \u5B50\u547D\u4EE4\u7528\u6CD5\uFF1A"," panda mcp list",' panda mcp add <name> --command <cmd> [--args "arg1 arg2"]'," panda mcp add <name> --url <url> [--type http|sse]"," panda mcp remove <name>"," panda mcp enable <name>"," panda mcp disable <name>","","\u8BF4\u660E\uFF1A"," list \u5217\u51FA\u5F53\u524D\u5DF2\u914D\u7F6E\u7684 MCP \u670D\u52A1\u5668"," add --command \u6DFB\u52A0 stdio \u7C7B\u578B MCP \u670D\u52A1\u5668"," add --url \u6DFB\u52A0 http/sse \u7C7B\u578B MCP \u670D\u52A1\u5668"," remove \u5220\u9664\u6307\u5B9A MCP \u670D\u52A1\u5668"," enable \u542F\u7528\u6307\u5B9A MCP \u670D\u52A1\u5668\uFF08\u6301\u4E45\u5316\u5230 mcp.json\uFF09"," disable \u7981\u7528\u6307\u5B9A MCP \u670D\u52A1\u5668\uFF08\u6301\u4E45\u5316\u5230 mcp.json\uFF09"].join(`
10
- `))}async function Rk(t,e){let n=t[0],o=Pk.join($7.homedir(),".panda","mcp.json");if(!n||n==="-h"||n==="--help")return md(),0;if(n==="list"){let r=await xk(e),i=Object.entries(r);if(i.length===0)return console.log("\u5F53\u524D\u672A\u914D\u7F6E MCP \u670D\u52A1\u5668\u3002"),0;for(let[s,a]of i)a.type==="stdio"?console.log(`${s}: stdio ${a.command} ${(a.args??[]).join(" ")}`.trim()):console.log(`${s}: ${a.type} ${a.url}`);return 0}if(n==="add"){let r=t[1];if(!r)return console.error("\u7F3A\u5C11 MCP \u670D\u52A1\u5668\u540D\u79F0"),md(),1;let i=_k(t,"--command"),s=_k(t,"--url"),a=_k(t,"--type"),l=LY(t,"--args");if(!i&&!s)return console.error("\u5FC5\u987B\u63D0\u4F9B --command \u6216 --url \u5176\u4E2D\u4E4B\u4E00"),1;let c=await Ck(o),u=kk(c);return i?u[r]={type:"stdio",command:i,args:l}:s&&(u[r]={type:a==="sse"?"sse":"http",url:s}),Ik(c,u),await Ek(o,c),console.log(`\u5DF2\u6DFB\u52A0 MCP \u670D\u52A1\u5668 "${r}" \u5230 ${o}`),0}if(n==="remove"){let r=t[1];if(!r)return console.error("\u7F3A\u5C11 MCP \u670D\u52A1\u5668\u540D\u79F0"),md(),1;let i=await Ck(o),s=kk(i);return r in s?(delete s[r],Ik(i,s),await Ek(o,i),console.log(`\u5DF2\u4ECE ${o} \u5220\u9664 MCP \u670D\u52A1\u5668 "${r}"`),0):(console.error(`\u5728 ${o} \u4E2D\u672A\u627E\u5230 MCP \u670D\u52A1\u5668 "${r}"`),1)}if(n==="enable"||n==="disable"){let r=t[1];if(!r)return console.error("\u7F3A\u5C11 MCP \u670D\u52A1\u5668\u540D\u79F0"),md(),1;let i=n==="enable";try{return await F7(o,r,i),console.log(`\u5DF2\u5728 ${o} \u4E2D\u5C06 "${r}" \u8BBE\u4E3A ${i?"\u542F\u7528":"\u7981\u7528"}`),0}catch(s){return console.error(s instanceof Error?s.message:String(s)),1}}return console.error(`\u672A\u77E5 mcp \u5B50\u547D\u4EE4\uFF1A${n}`),md(),1}async function F7(t,e,n){let o=await Ck(t),r=kk(o);if(!(e in r))throw new Error(`\u5728 ${t} \u4E2D\u672A\u627E\u5230 MCP \u670D\u52A1\u5668 "${e}"`);r[e].enabled=n,Ik(o,r),await Ek(t,o)}async function NY(t,e,n){let o=n??Pk.join($7.homedir(),".panda","mcp.json");return await F7(o,t,e),{file:o,ok:!0}}var vy=Be(()=>{my()});import{closeSync as Tse,openSync as wse}from"node:fs";import{resolve as HF}from"node:path";import{fileURLToPath as _se}from"node:url";gr();var nE=new Set;function rE(t){return nE.add(t),()=>nE.delete(t)}var oE="[stdout-guard]",P1=!1,Nr="",cs=null;function iE(t){if(t.length===0)return!0;try{return JSON.parse(t),!0}catch{return!1}}function sE(){P1||(P1=!0,cs=process.stdout.write.bind(process.stdout),process.stdout.write=function(t,e,n){let o=typeof t=="string"?t:Buffer.from(t).toString("utf-8");Nr+=o;let r,i=!0;for(;(r=Nr.indexOf(`
8
+ 6. \u63D0\u4EA4\u540E\u8F93\u51FA\u6700\u7EC8\u7ED3\u679C\uFF08commit hash \u4E0E message\uFF0C\u6216\u5931\u8D25\u539F\u56E0\uFF09\u3002`});var vA={};dn(vA,{commitActionHandler:()=>Wj});async function Wj(t,e){let{conversation:n,persist:o}=t,r=n.conversationId,i=n.eventBus,s=t.turnId??`action-${je()}`;try{if(e?.aborted){let a=new Error("Aborted");throw a.name="AbortError",a}n.submitUserMessage(hA,t.selectedModelId),await o()}catch(a){let l=typeof a=="object"&&a!==null&&"name"in a?String(a.name):"";if(!(e?.aborted===!0||l==="AbortError"))throw a}finally{i.emit(P.CONVERSATION_ACTION_ENDED,{conversationId:r,turnId:s})}}var bA=Be(()=>{"use strict";tn();gr();yA()});var X_={};dn(X_,{BrowserTabNotFoundError:()=>Sg,closePageViaPlaywright:()=>J_,closePlaywrightBrowserConnection:()=>Q_,createPageViaPlaywright:()=>Z_,ensureContextState:()=>Cg,ensurePageState:()=>Dt,focusPageViaPlaywright:()=>Y_,forceDisconnectPlaywrightForTarget:()=>ku,getPageForTargetId:()=>Ft,gotoPageWithNavigationGuard:()=>Su,listPagesViaPlaywright:()=>Iu,refLocator:()=>Vr,requireRef:()=>Ro,requireRefOrSelector:()=>Ao,resolveDefaultTargetId:()=>nD,restoreRoleRefsForTarget:()=>q_,storeRoleRefsForTarget:()=>wu,toAIFriendlyError:()=>qr});import{chromium as BH}from"playwright-core";function Hr(t){return t.replace(/\/$/,"")}function Ig(t){return typeof t!="string"?null:t.trim()||null}function tD(t,e){return`${Hr(t)}::${e}`}function nD(t,e){if(!t.length)return null;let n=Ig(e);return n&&t.some(r=>r.targetId===n)?n:t.find(r=>!/^chrome:\/\//i.test(r.url)&&!/^about:blank$/i.test(r.url))?.targetId??t[0]?.targetId??null}function Dt(t){let e=_g.get(t);if(e)return e;let n={console:[],errors:[],requests:[],requestIds:new WeakMap,nextRequestId:0};return _g.set(t,n),V_.has(t)||(V_.add(t),t.on("console",o=>{n.console.push({type:o.type(),text:o.text(),timestamp:new Date().toISOString(),location:o.location()}),n.console.length>zH&&n.console.shift()}),t.on("pageerror",o=>{n.errors.push({message:o.message||String(o),name:o.name||void 0,stack:o.stack||void 0,timestamp:new Date().toISOString()}),n.errors.length>WH&&n.errors.shift()}),t.on("request",o=>{n.nextRequestId+=1;let r=`r${n.nextRequestId}`;n.requestIds.set(o,r),n.requests.push({id:r,timestamp:new Date().toISOString(),method:o.method(),url:o.url(),resourceType:o.resourceType()}),n.requests.length>KH&&n.requests.shift()}),t.on("response",o=>{let r=o.request(),i=n.requestIds.get(r);if(i)for(let s=n.requests.length-1;s>=0;s-=1){let a=n.requests[s];if(a&&a.id===i){a.status=o.status(),a.ok=o.ok();break}}}),t.on("requestfailed",o=>{let r=n.requestIds.get(o);if(r)for(let i=n.requests.length-1;i>=0;i-=1){let s=n.requests[i];if(s&&s.id===r){s.failureText=o.failure()?.errorText,s.ok=!1;break}}}),t.on("close",()=>{_g.delete(t),V_.delete(t)})),n}function Cg(t){let e=Q4.get(t);if(e)return e;let n={traceActive:!1};return Q4.set(t,n),n}function HH(t){if(!X4.has(t)){X4.add(t),Cg(t);for(let e of t.pages())Dt(e);t.on("page",e=>Dt(e))}}function VH(t){for(let e of t.contexts())HH(e)}function wu(t){let e=Dt(t.page);e.roleRefs=t.refs,e.roleRefsFrameSelector=t.frameSelector,e.roleRefsMode=t.mode;let n=Ig(t.targetId);if(n)for(Tu.set(tD(t.cdpUrl,n),{refs:t.refs,...t.frameSelector?{frameSelector:t.frameSelector}:{},mode:t.mode});Tu.size>jH;){let o=Tu.keys().next();if(o.done)break;Tu.delete(o.value)}}function q_(t){let e=Ig(t.targetId);if(!e)return;let n=Tu.get(tD(t.cdpUrl,e));if(!n)return;let o=Dt(t.page);o.roleRefs||(o.roleRefs=n.refs,o.roleRefsFrameSelector=n.frameSelector,o.roleRefsMode=n.mode)}function Vr(t,e){let n=e.startsWith("@")?e.slice(1):e.startsWith("ref=")?e.slice(4):e;if(/^e\d+$/.test(n)){let o=_g.get(t);if(o?.roleRefsMode==="aria")return(o.roleRefsFrameSelector?t.frameLocator(o.roleRefsFrameSelector):t).locator(`aria-ref=${n}`);let r=o?.roleRefs?.[n];if(!r)throw new Error(`Unknown ref "${n}". Run a new snapshot and use a ref from that snapshot.`);let s=o?.roleRefsFrameSelector?t.frameLocator(o.roleRefsFrameSelector):t,a=r.name?s.getByRole(r.role,{name:r.name,exact:!0}):s.getByRole(r.role);return r.nth!==void 0?a.nth(r.nth):a}return t.locator(`aria-ref=${n}`)}function Ro(t){let e=typeof t=="string"?t.trim():"";if(!e)throw new Error("ref is required");return e}function Ao(t,e){let n=typeof t=="string"?t.trim():"",o=typeof e=="string"?e.trim():"";if(!n&&!o)throw new Error("ref or selector is required");return{...n?{ref:n}:{},...o?{selector:o}:{}}}async function G_(t){let e=Hr(t),n=Kr.get(e);if(n)return n;let o=gl.get(e);if(o)return await o;let i=(async()=>{let s;for(let a=0;a<3;a+=1)try{let l=5e3+a*2e3,c=await BH.connectOverCDP(e,{timeout:l}),u=()=>{Kr.get(e)?.browser===c&&Kr.delete(e)},d={browser:c,cdpUrl:e,onDisconnected:u};return Kr.set(e,d),c.on("disconnected",u),VH(c),d}catch(l){if(s=l,(l instanceof Error?l.message:String(l)).includes("rate limit"))break;await new Promise(u=>setTimeout(u,250+a*250))}throw s??new Error("CDP connect failed")})().finally(()=>{gl.delete(e)});return gl.set(e,i),await i}async function kg(t){return t.contexts().flatMap(e=>e.pages())}async function _u(t){let e=await t.context().newCDPSession(t);try{let n=await e.send("Target.getTargetInfo");return Ig(n?.targetInfo?.targetId)}finally{await e.detach().catch(()=>{})}}async function eD(t,e,n){let o=await kg(t),r=!1;for(let i of o){let s=null;try{s=await _u(i),r=!0}catch{s=null}if(s&&s===e)return i}if(n)try{let s=`${Hr(n).replace(/^ws(s?):\/\//,"http$1://")}/json/list`,a=new AbortController,l=setTimeout(()=>a.abort(),2e3);try{let d=(await(await fetch(s,{signal:a.signal})).json()).find(p=>p.id===e);if(d){let p=o.filter(f=>f.url()===d.url);if(p.length===1)return p[0]??null}}finally{clearTimeout(l)}}catch{}return!r&&o.length===1?o[0]??null:null}async function Ft(t){let{browser:e}=await G_(t.cdpUrl),n=await kg(e);if(!n.length){let r=e.contexts()[0]??await e.newContext();Cg(r);let i=await r.newPage();Dt(i),await i.goto("about:blank").catch(()=>{}),n=await kg(e)}if(!n.length)throw new Error("No pages available in the connected browser.");if(!t.targetId){let i=(await Promise.all(n.map(async l=>({targetId:await _u(l).catch(()=>""),url:l.url()})))).filter(l=>l.targetId!==null&&l.targetId.length>0),s=Hr(t.cdpUrl),a=nD(i,Po.get(s));if(a){let l=await eD(e,a,t.cdpUrl);if(l)return Po.set(s,a),l}return n[0]}let o=await eD(e,t.targetId,t.cdpUrl);if(o)return Po.set(Hr(t.cdpUrl),t.targetId),o;if(n.length===1)return n[0];throw new Sg}async function Su(t){return await t.page.goto(t.url,{timeout:t.timeoutMs,waitUntil:"domcontentloaded"})}async function ku(t){let e=Hr(t.cdpUrl),n=Kr.get(e);n&&(Kr.delete(e),gl.delete(e),n.onDisconnected&&typeof n.browser.off=="function"&&n.browser.off("disconnected",n.onDisconnected),n.browser.close().catch(()=>{}))}async function Iu(t){let{browser:e}=await G_(t.cdpUrl),n=await kg(e),o=[];for(let r of n){let i=await _u(r).catch(()=>null);i&&o.push({targetId:i,title:await r.title().catch(()=>""),url:r.url(),type:"page"})}return o}async function Z_(t){let{browser:e}=await G_(t.cdpUrl),n=e.contexts()[0]??await e.newContext();Cg(n);let o=await n.newPage();Dt(o);let r=t.url.trim()||"about:blank";if(r!=="about:blank")try{await Su({cdpUrl:t.cdpUrl,page:o,url:r,timeoutMs:3e4})}catch{}let i=await _u(o).catch(()=>null);if(!i)throw new Error("Failed to get targetId for new page");return Po.set(Hr(t.cdpUrl),i),{targetId:i,title:await o.title().catch(()=>""),url:o.url(),type:"page"}}async function J_(t){let e=Hr(t.cdpUrl),n=Po.get(e),o=await Ft(t),r=await _u(o).catch(()=>null);await o.close(),r&&n===r&&Po.delete(e)}async function Y_(t){await(await Ft(t)).bringToFront().catch(()=>{}),Po.set(Hr(t.cdpUrl),t.targetId)}async function Q_(t){let e=t?.cdpUrl?Hr(t.cdpUrl):null;if(e){let o=Kr.get(e);if(Kr.delete(e),gl.delete(e),Po.delete(e),!o)return;o.onDisconnected&&typeof o.browser.off=="function"&&o.browser.off("disconnected",o.onDisconnected),await o.browser.close().catch(()=>{});return}let n=Array.from(Kr.values());Kr.clear(),gl.clear(),Po.clear();for(let o of n)o.onDisconnected&&typeof o.browser.off=="function"&&o.browser.off("disconnected",o.onDisconnected),await o.browser.close().catch(()=>{})}function qr(t,e){let n=t instanceof Error?t.message:String(t),o=n.length>300?n.slice(0,300)+"...":n;return new Error(`${e}: ${o}`)}var Sg,_g,Q4,X4,V_,Tu,jH,zH,WH,KH,Kr,gl,Po,_i=Be(()=>{"use strict";Sg=class extends Error{constructor(){super("Browser tab not found. The targetId may be stale \u2014 use tabs to list available tabs."),this.name="BrowserTabNotFoundError"}},_g=new WeakMap,Q4=new WeakMap,X4=new WeakSet,V_=new WeakSet,Tu=new Map,jH=50,zH=500,WH=200,KH=500,Kr=new Map,gl=new Map,Po=new Map});import{Client as hk}from"@modelcontextprotocol/sdk/client/index.js";import{SSEClientTransport as lY}from"@modelcontextprotocol/sdk/client/sse.js";import{StdioClientTransport as cY}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as uY}from"@modelcontextprotocol/sdk/client/streamableHttp.js";function dY(t){if(!t||typeof t!="object")return!1;let e=t;if(String(e.name??"")==="UnauthorizedError"||Number(e.status??e.statusCode??NaN)===401)return!0;let r=String(e.code??"");if(r==="UNAUTHORIZED"||r==="401")return!0;let i=String(e.message??"").toLowerCase();return i.includes("unauthorized")||i.includes("401")}function h7(t){return t.replace(/[^a-zA-Z0-9_-]/g,"_")}function vk(t,e){return`mcp_${h7(t)}_${h7(e)}`}async function yk(t,e){return!e||e<=0?t:new Promise((n,o)=>{let r=setTimeout(()=>{o(new Error(`MCP operation timed out after ${e}ms`))},e);t.then(i=>{clearTimeout(r),n(i)},i=>{clearTimeout(r),o(i)})})}async function y7(t,e,n){if(t.length===0)return;let o=Math.max(1,e),r=0,i=Array.from({length:Math.min(o,t.length)},async()=>{for(;r<t.length;){let s=t[r++];s!==void 0&&await n(s)}});await Promise.all(i)}function pY(t){if(!Array.isArray(t))return[];let e=[];for(let n of t){if(!n||typeof n!="object")continue;let o=n,r=typeof o.type=="string"?o.type:"";if(r==="text"&&typeof o.text=="string")e.push({type:"text",text:o.text});else if(r==="image"&&typeof o.data=="string")e.push({type:"image",data:o.data,mimeType:typeof o.mimeType=="string"?o.mimeType:"image/png"});else if(r==="audio"&&typeof o.data=="string")e.push({type:"audio",data:o.data,mimeType:typeof o.mimeType=="string"?o.mimeType:"audio/wav"});else if(r==="resource"&&o.resource&&typeof o.resource=="object"){let i=o.resource;e.push({type:"resource",resource:{text:typeof i.text=="string"?i.text:void 0,blob:typeof i.blob=="string"?i.blob:void 0,mimeType:typeof i.mimeType=="string"?i.mimeType:void 0}})}else r==="resource_link"&&typeof o.uri=="string"&&e.push({type:"resource_link",uri:o.uri,title:typeof o.title=="string"?o.title:void 0,name:typeof o.name=="string"?o.name:void 0})}return e}var py,v7=Be(()=>{"use strict";py=class{clients=new Map;statuses=new Map;tools=new Map;currentConfig={};onSnapshotChanged;localConcurrency;remoteConcurrency;constructor(e={}){this.onSnapshotChanged=e.onSnapshotChanged,this.localConcurrency=e.localConcurrency??2,this.remoteConcurrency=e.remoteConcurrency??4}async start(e){await this.stop(),this.currentConfig={...e};for(let[r,i]of Object.entries(e))this.statuses.set(r,i.enabled===!1?{status:"disabled"}:{status:"pending"});this.emitSnapshot();let n=[],o=[];for(let[r,i]of Object.entries(e))i.enabled!==!1&&(i.type==="stdio"?n.push([r,i]):o.push([r,i]));await Promise.all([y7(n,this.localConcurrency,([r,i])=>this.connectServer(r,i)),y7(o,this.remoteConcurrency,([r,i])=>this.connectServer(r,i))]),await this.refreshTools()}async stop(){await Promise.all(Array.from(this.clients.values()).map(async({client:e})=>{try{await e.close()}catch{}})),this.clients.clear(),this.tools.clear();for(let[e,n]of Object.entries(this.currentConfig))this.statuses.set(e,n.enabled===!1?{status:"disabled"}:{status:"failed",error:"Disconnected"});this.emitSnapshot()}getSnapshot(){return{statuses:this.getStatuses(),tools:this.getToolsSync()}}getStatuses(){let e={};for(let n of Object.keys(this.currentConfig))e[n]=this.statuses.get(n)??{status:"failed",error:"Unknown status"};return e}getToolsSync(){let e={};for(let[n,o]of this.tools)e[n]=o;return e}async listTools(){let e={};for(let[n,o]of this.clients)try{let r=await o.client.listTools();for(let i of r.tools){let s=this.toDescriptor(n,i);e[s.id]=s}}catch(r){this.statuses.set(n,{status:"failed",error:r instanceof Error?r.message:String(r)})}this.tools.clear();for(let[n,o]of Object.entries(e))this.tools.set(n,o);return this.emitSnapshot(),e}async enableServer(e){let n=this.currentConfig[e];if(!n)throw new Error(`MCP server "${e}" not found in configuration`);let o=this.statuses.get(e);if(o?.status==="connected"||o?.status==="pending")return;let r=this.clients.get(e);if(r){try{await r.client.close()}catch{}this.clients.delete(e)}this.statuses.set(e,{status:"pending"}),this.emitSnapshot(),await this.connectServer(e,n),await this.listTools()}async disableServer(e){if(!this.currentConfig[e])throw new Error(`MCP server "${e}" not found in configuration`);let o=this.clients.get(e);if(o){try{await o.client.close()}catch{}this.clients.delete(e)}for(let[r,i]of this.tools)i.serverName===e&&this.tools.delete(r);this.statuses.set(e,{status:"disabled"}),this.emitSnapshot()}async callTool(e,n,o,r){let i=this.clients.get(e);if(!i)return{isError:!0,content:[{type:"text",text:`MCP server "${e}" is not connected`}]};let s=i.config.timeoutMs,a=i.client.callTool({name:n,arguments:o},void 0,typeof s=="number"&&s>0?{timeout:s}:void 0),l=await this.withAbort(a,r);return{content:pY(l.content),structuredContent:l.structuredContent,isError:!!l.isError}}async refreshTools(){this.emitSnapshot()}emitSnapshot(){this.onSnapshotChanged?.(this.getSnapshot())}async connectServer(e,n){if(n.type==="stdio"){await this.connectStdio(e,n);return}if(n.type==="http"){await this.connectHttp(e,n);return}if(n.type==="sse"){await this.connectSse(e,n);return}this.statuses.set(e,{status:"failed",error:"Unsupported transport"}),this.emitSnapshot()}async connectStdio(e,n){let o=new cY({command:n.command,args:n.args??[],cwd:n.cwd,env:{...process.env,...n.env??{}},stderr:"pipe"}),r=new hk({name:"panda-mcp-client",version:"0.0.1"});try{await yk(r.connect(o),n.timeoutMs),this.clients.set(e,{name:e,client:r,config:n}),this.statuses.set(e,{status:"connected"})}catch(i){try{await o.close()}catch{}this.statuses.set(e,this.toErrorStatus(i))}this.emitSnapshot()}async connectHttp(e,n){let o=new uY(new URL(n.url),{requestInit:n.headers?{headers:n.headers}:void 0}),r=new hk({name:"panda-mcp-client",version:"0.0.1"});try{await yk(r.connect(o),n.timeoutMs),this.clients.set(e,{name:e,client:r,config:n}),this.statuses.set(e,{status:"connected"})}catch(i){try{await o.close()}catch{}this.statuses.set(e,this.toErrorStatus(i))}this.emitSnapshot()}async connectSse(e,n){let o=new lY(new URL(n.url),{requestInit:n.headers?{headers:n.headers}:void 0}),r=new hk({name:"panda-mcp-client",version:"0.0.1"});try{await yk(r.connect(o),n.timeoutMs),this.clients.set(e,{name:e,client:r,config:n}),this.statuses.set(e,{status:"connected"})}catch(i){try{await o.close()}catch{}this.statuses.set(e,this.toErrorStatus(i))}this.emitSnapshot()}toErrorStatus(e){return dY(e)?{status:"needs_auth"}:{status:"failed",error:e instanceof Error?e.message:String(e)}}toDescriptor(e,n){return{id:vk(e,n.name),serverName:e,toolName:n.name,displayName:n.name,description:n.description??"",inputSchema:n.inputSchema??{type:"object"}}}async withAbort(e,n){if(n.aborted){let o=new Error("MCP tool call aborted");throw o.name="AbortError",o}return new Promise((o,r)=>{let i=()=>{s();let a=new Error("MCP tool call aborted");a.name="AbortError",r(a)},s=()=>n.removeEventListener("abort",i);n.addEventListener("abort",i,{once:!0}),e.then(a=>{s(),o(a)},a=>{s(),r(a)})})}}});var b7={};dn(b7,{CliMcpRuntime:()=>bk,toToolId:()=>vk});var bk,x7=Be(()=>{"use strict";v7();bk=class{manager=new py;async start(e){await this.manager.start(e)}async stop(){await this.manager.stop()}async status(){return this.manager.getStatuses()}async listTools(){return this.manager.listTools()}async callTool(e,n,o,r){return this.manager.callTool(e,n,o,r)}async setServerEnabled(e,n){n?await this.manager.enableServer(e):await this.manager.disableServer(e)}}});function fy(t){return typeof t=="object"&&t!==null}function T7(t){if(!fy(t))return;let e={};for(let[n,o]of Object.entries(t))typeof o=="string"&&(e[n]=o);return e}function fY(t){if(!fy(t))return;let e=typeof t.type=="string"?t.type:"stdio",n=typeof t.timeoutMs=="number"?t.timeoutMs:typeof t.timeout=="number"?t.timeout:void 0,o=typeof t.enabled=="boolean"?t.enabled:void 0;if(e==="stdio"){let r=typeof t.command=="string"?t.command:Array.isArray(t.command)&&typeof t.command[0]=="string"?t.command[0]:void 0;if(!r)return;let i=Array.isArray(t.args)?t.args.filter(s=>typeof s=="string"):Array.isArray(t.command)?t.command.slice(1).filter(s=>typeof s=="string"):void 0;return{type:"stdio",command:r,args:i,cwd:typeof t.cwd=="string"?t.cwd:void 0,env:T7(t.env??t.environment),timeoutMs:n,enabled:o}}if(e==="http"||e==="sse")return typeof t.url!="string"?void 0:{type:e,url:t.url,headers:T7(t.headers),timeoutMs:n,enabled:o,oauth:fy(t.oauth)?{enabled:typeof t.oauth.enabled=="boolean"?t.oauth.enabled:void 0,clientId:typeof t.oauth.clientId=="string"?t.oauth.clientId:void 0,clientSecret:typeof t.oauth.clientSecret=="string"?t.oauth.clientSecret:void 0,scope:typeof t.oauth.scope=="string"?t.oauth.scope:void 0}:void 0}}function w7(t){let e;try{e=JSON.parse(t)}catch{return{}}let n=e.mcp??e.mcpServers??{};if(!fy(n))return{};let o={};for(let[r,i]of Object.entries(n)){let s=fY(i);s&&(o[r]=s)}return o}var _7=Be(()=>{"use strict"});var Tk={};dn(Tk,{loadCliMcpConfig:()=>xk});import{promises as mY}from"fs";import gY from"os";import S7 from"path";async function k7(t){let e;try{e=await mY.readFile(t,"utf8")}catch{return{}}return w7(e)}async function xk(t){let e=S7.join(gY.homedir(),".panda","mcp.json"),n=S7.join(t,".panda","mcp.json"),[o,r]=await Promise.all([k7(e),k7(n)]);return{...o,...r}}var my=Be(()=>{"use strict";_7()});function I7(t){let e=[],n=[],o=!1;for(let a of t.content){if(a.type==="text"){e.push(a.text),n.push(a.text);continue}if(a.type==="image"){o=!0,n.push({inlineData:{mimeType:a.mimeType||"image/png",data:a.data}});continue}if(a.type==="audio"){o=!0,n.push({inlineData:{mimeType:a.mimeType||"audio/wav",data:a.data}});continue}if(a.type==="resource"){let l=a.resource?.text;typeof l=="string"&&l.length>0&&(e.push(l),n.push(l));continue}if(a.type==="resource_link"){let l=`Resource Link: ${a.title||a.name||a.uri} at ${a.uri}`;e.push(l),n.push(l);continue}}if(t.structuredContent!==void 0){let a=JSON.stringify(t.structuredContent);e.push(a),n.push(a)}let r=e.join(`
9
+ `),s={llmContent:o?n:r};return t.isError&&(s.error={message:r||"MCP tool returned an error",type:"MCP_ERROR"}),s}var C7=Be(()=>{"use strict"});var gy,E7=Be(()=>{"use strict";C7();gy=class{constructor(e,n,o,r,i){this.params=e;this.serverName=n;this.toolName=o;this.toolDisplayName=r;this.runtime=i}params;serverName;toolName;toolDisplayName;runtime;getDescription(){return`Calling MCP tool: ${this.toolDisplayName} on server: ${this.serverName}`}toolLocations(){return[]}async shouldConfirmExecute(e){return!1}async execute(e,n){let o=await this.runtime.callTool(this.serverName,this.toolName,this.params,e);return I7(o)}}});var hy,P7=Be(()=>{"use strict";kt();E7();hy=class{constructor(e,n){this.descriptor=e;this.runtime=n;this.name=e.id,this.displayName=e.displayName,this.description=e.description,this.schema={name:e.id,description:e.description,parametersJsonSchema:e.inputSchema??{type:"object"}}}descriptor;runtime;name;displayName;description;runsIn="backend";kind="mcp";isOutputMarkdown=!0;canUpdateOutput=!1;schema;validateToolParams(e){return null}async build(e){return new gy(e,this.descriptor.serverName,this.descriptor.toolName,this.displayName,this.runtime)}}});var R7={};dn(R7,{CliMcpToolSource:()=>wk});var wk,A7=Be(()=>{"use strict";P7();wk=class{constructor(e){this.runtime=e}runtime;descriptorById=new Map;async getFunctionDeclarationsAsync(){let e=await this.runtime.listTools();return this.descriptorById=new Map(Object.entries(e)),Object.values(e).map(n=>({name:n.id,description:n.description??"",parametersJsonSchema:n.inputSchema??{type:"object"}}))}async getToolAsync(e){let n=this.descriptorById.get(e);if(!n){let o=await this.runtime.listTools();this.descriptorById=new Map(Object.entries(o)),n=this.descriptorById.get(e)}if(n)return new hy(n,this.runtime)}}});var Ak={};dn(Ak,{runMcpCommand:()=>Rk,updateMcpConfigEnabled:()=>FY});import{promises as Sk}from"fs";import $7 from"os";import Pk from"path";function kk(t){return t.mcp??t.mcpServers??{}}function Ik(t,e){"mcp"in t?t.mcp=e:("mcpServers"in t,t.mcpServers=e)}function _k(t,e){let n=t.indexOf(e);if(!(n<0||n+1>=t.length))return t[n+1]}function $Y(t,e){let n=t.indexOf(e);return n<0||n+1>=t.length?[]:t[n+1].split(" ").map(o=>o.trim()).filter(Boolean)}async function Ck(t){try{let e=await Sk.readFile(t,"utf8"),n=JSON.parse(e);return typeof n=="object"&&n?n:{}}catch{return{}}}async function Ek(t,e){await Sk.mkdir(Pk.dirname(t),{recursive:!0}),await Sk.writeFile(t,JSON.stringify(e,null,2),"utf8")}function md(){console.log(["MCP \u5B50\u547D\u4EE4\u7528\u6CD5\uFF1A"," panda mcp list",' panda mcp add <name> --command <cmd> [--args "arg1 arg2"]'," panda mcp add <name> --url <url> [--type http|sse]"," panda mcp remove <name>"," panda mcp enable <name>"," panda mcp disable <name>","","\u8BF4\u660E\uFF1A"," list \u5217\u51FA\u5F53\u524D\u5DF2\u914D\u7F6E\u7684 MCP \u670D\u52A1\u5668"," add --command \u6DFB\u52A0 stdio \u7C7B\u578B MCP \u670D\u52A1\u5668"," add --url \u6DFB\u52A0 http/sse \u7C7B\u578B MCP \u670D\u52A1\u5668"," remove \u5220\u9664\u6307\u5B9A MCP \u670D\u52A1\u5668"," enable \u542F\u7528\u6307\u5B9A MCP \u670D\u52A1\u5668\uFF08\u6301\u4E45\u5316\u5230 mcp.json\uFF09"," disable \u7981\u7528\u6307\u5B9A MCP \u670D\u52A1\u5668\uFF08\u6301\u4E45\u5316\u5230 mcp.json\uFF09"].join(`
10
+ `))}async function Rk(t,e){let n=t[0],o=Pk.join($7.homedir(),".panda","mcp.json");if(!n||n==="-h"||n==="--help")return md(),0;if(n==="list"){let r=await xk(e),i=Object.entries(r);if(i.length===0)return console.log("\u5F53\u524D\u672A\u914D\u7F6E MCP \u670D\u52A1\u5668\u3002"),0;for(let[s,a]of i)a.type==="stdio"?console.log(`${s}: stdio ${a.command} ${(a.args??[]).join(" ")}`.trim()):console.log(`${s}: ${a.type} ${a.url}`);return 0}if(n==="add"){let r=t[1];if(!r)return console.error("\u7F3A\u5C11 MCP \u670D\u52A1\u5668\u540D\u79F0"),md(),1;let i=_k(t,"--command"),s=_k(t,"--url"),a=_k(t,"--type"),l=$Y(t,"--args");if(!i&&!s)return console.error("\u5FC5\u987B\u63D0\u4F9B --command \u6216 --url \u5176\u4E2D\u4E4B\u4E00"),1;let c=await Ck(o),u=kk(c);return i?u[r]={type:"stdio",command:i,args:l}:s&&(u[r]={type:a==="sse"?"sse":"http",url:s}),Ik(c,u),await Ek(o,c),console.log(`\u5DF2\u6DFB\u52A0 MCP \u670D\u52A1\u5668 "${r}" \u5230 ${o}`),0}if(n==="remove"){let r=t[1];if(!r)return console.error("\u7F3A\u5C11 MCP \u670D\u52A1\u5668\u540D\u79F0"),md(),1;let i=await Ck(o),s=kk(i);return r in s?(delete s[r],Ik(i,s),await Ek(o,i),console.log(`\u5DF2\u4ECE ${o} \u5220\u9664 MCP \u670D\u52A1\u5668 "${r}"`),0):(console.error(`\u5728 ${o} \u4E2D\u672A\u627E\u5230 MCP \u670D\u52A1\u5668 "${r}"`),1)}if(n==="enable"||n==="disable"){let r=t[1];if(!r)return console.error("\u7F3A\u5C11 MCP \u670D\u52A1\u5668\u540D\u79F0"),md(),1;let i=n==="enable";try{return await F7(o,r,i),console.log(`\u5DF2\u5728 ${o} \u4E2D\u5C06 "${r}" \u8BBE\u4E3A ${i?"\u542F\u7528":"\u7981\u7528"}`),0}catch(s){return console.error(s instanceof Error?s.message:String(s)),1}}return console.error(`\u672A\u77E5 mcp \u5B50\u547D\u4EE4\uFF1A${n}`),md(),1}async function F7(t,e,n){let o=await Ck(t),r=kk(o);if(!(e in r))throw new Error(`\u5728 ${t} \u4E2D\u672A\u627E\u5230 MCP \u670D\u52A1\u5668 "${e}"`);r[e].enabled=n,Ik(o,r),await Ek(t,o)}async function FY(t,e,n){let o=n??Pk.join($7.homedir(),".panda","mcp.json");return await F7(o,t,e),{file:o,ok:!0}}var vy=Be(()=>{my()});import{closeSync as _se,openSync as Sse}from"node:fs";import{resolve as HF}from"node:path";import{fileURLToPath as kse}from"node:url";gr();var nE=new Set;function rE(t){return nE.add(t),()=>nE.delete(t)}var oE="[stdout-guard]",P1=!1,Nr="",cs=null;function iE(t){if(t.length===0)return!0;try{return JSON.parse(t),!0}catch{return!1}}function sE(){P1||(P1=!0,cs=process.stdout.write.bind(process.stdout),process.stdout.write=function(t,e,n){let o=typeof t=="string"?t:Buffer.from(t).toString("utf-8");Nr+=o;let r,i=!0;for(;(r=Nr.indexOf(`
11
11
  `))!==-1;){let a=Nr.slice(0,r);Nr=Nr.slice(r+1),iE(a)?i=cs(a+`
12
12
  `):process.stderr.write(`${oE} ${a}
13
13
  `)}let s=typeof e=="function"?e:n;return s&&queueMicrotask(()=>s()),i},rE(async()=>{Nr.length>0&&(cs&&iE(Nr)?cs(Nr+`
@@ -1555,13 +1555,13 @@ If REJECT:
1555
1555
 
1556
1556
  # Custom Instructions
1557
1557
 
1558
- ${r.customInstructions}`:i[ga.CustomInstructions]="";let l=new yp().resolveSimple(z3,i);return W3(l)}function LE(t){let e={},n=[];for(let[o,r]of Object.entries(t.inputs)){let i={description:r.description};switch(r.type){case"string":case"number":case"integer":case"boolean":i.type=r.type;break;case"string[]":i.type="array",i.items={type:"string"};break;case"number[]":i.type="array",i.items={type:"number"};break;default:{let s=r.type;throw new Error(`Unsupported input type '${s}' for parameter '${o}'. Supported types: string, number, integer, boolean, string[], number[]`)}}r.enum&&r.enum.length>0&&(i.enum=r.enum),e[o]=i,r.required&&n.push(o)}return{type:"object",properties:e,required:n.length>0?n:void 0}}tn();Lr();function D1(t){if(t.role!=="assistant")return[];let e=t;if(!e.toolCalls||e.toolCalls.length===0)return[];let n=[];for(let o of e.toolCalls){if(!o.function?.name)continue;let r=o.id||`temp_${o.function.name}_${n.length}`;n.push({id:r,type:o.type||"function",function:{name:o.function.name,arguments:o.function.arguments||"{}"}})}return n}function yr(t){if(typeof t.content=="string")return t.content;if(Array.isArray(t.content))return t.content.filter(n=>n.type==="text"||typeof n=="object"&&"text"in n||typeof n=="string").map(n=>typeof n=="object"&&"text"in n?n.text:typeof n=="string"?n:"").filter(n=>n.length>0).join("");if(t.content!==null&&t.content!==void 0)try{return String(t.content)}catch{return""}return""}gr();function Gn(t){return`agent_${t.toLowerCase().replace(/[^a-z0-9_]/g,"_")}`}function K3(){return us().filter(t=>!t.isMainRole).map(t=>Gn(t.role))}var kle=[I.READ_FILE,I.WRITE_FILE,I.EDIT_FILE,"show_notification","execute_command"],Ile=[I.DELETE_FILE,I.GREP,I.GLOB,I.WEB_FETCH,I.WEB_SEARCH,I.RUN_TERMINAL_CMD,I.AWAIT_SHELL,I.STOP_SHELL,"http_request","watch_file",I.CRON_CREATE,I.CRON_DELETE,I.CRON_LIST],NE=[I.READ_FILE,I.LIST_FILES,I.GREP,I.GLOB,I.ASK_QUESTION,I.WEB_FETCH,I.WEB_SEARCH,...K3(),I.CRON_LIST],H3=[I.CREATE_PLAN];function O1(t){return NE.includes(t)}function $E(t){return NE.includes(t)||H3.includes(t)}var vc={OK:200,BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,TOO_MANY_REQUESTS:429,INTERNAL_SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},vp=[vc.TOO_MANY_REQUESTS,vc.INTERNAL_SERVER_ERROR,vc.BAD_GATEWAY,vc.SERVICE_UNAVAILABLE,vc.GATEWAY_TIMEOUT];var L1={"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4":8192,"gpt-3.5-turbo":16385,"o1-preview":128e3,"o1-mini":128e3,"o3-mini":2e5,"claude-3-5-sonnet-20241022":2e5,"claude-3-5-haiku-20241022":2e5,"claude-3-opus-20240229":2e5,"claude-3-sonnet-20240229":2e5,"claude-3-haiku-20240307":2e5,"claude-sonnet-4-20250514":2e5,"claude-opus-4-20250514":2e5,"claude-sonnet-4-5-20250929":2e5,"claude-opus-4-1-20250805":2e5,"claude-3-7-sonnet-20250219":2e5,"claude-haiku-4-5-20251001":2e5,"claude-sonnet-4-5-20250929:1m":1e6,"gemini-2.0-flash":1e6,"gemini-2.0-flash-lite":1e6,"gemini-1.5-pro":2e6,"gemini-1.5-flash":1e6,"deepseek-chat":64e3,"deepseek-coder":64e3,"deepseek-reasoner":64e3,"mistral-large-latest":128e3,"mistral-medium-latest":32e3,"mistral-small-latest":32e3,"codestral-latest":32e3,default:2e5};function FE(t){if(t in L1)return L1[t];for(let[e,n]of Object.entries(L1))if(t.startsWith(e))return n;return 2e5}var N1={"gpt-4o":16384,"gpt-4o-mini":16384,"gpt-4-turbo":4096,"o1-preview":32768,"o1-mini":65536,"o3-mini":1e5,"claude-3-5-sonnet-20241022":8192,"claude-3-5-haiku-20241022":8192,"claude-3-opus-20240229":4096,"claude-sonnet-4-20250514":16384,"claude-opus-4-20250514":32e3,"claude-sonnet-4-5-20250929":16384,"claude-opus-4-1-20250805":32e3,"claude-3-7-sonnet-20250219":8192,"claude-haiku-4-5-20251001":8192,"gemini-2.0-flash":8192,"gemini-1.5-pro":8192,default:4096};function UE(t){if(t in N1)return N1[t];for(let[e,n]of Object.entries(N1))if(t.startsWith(e))return n;return 4096}function BE(t){return{id:t.id,type:"function",function:{name:t.function.name,arguments:t.function.argumentsChunks.join("")}}}var ds=class{toolCallsMap=new Map;addDelta(e){if(!e.id&&!e.function?.name){console.warn("[ToolCallAggregator] Skipping malformed tool call delta: no id and no function.name",e);return}let n=e.id||`temp_${e.function?.name||"unknown"}`,o=this.toolCallsMap.get(n);if(!o&&e.id&&e.function?.name){let r=`temp_${e.function.name}`,i=this.toolCallsMap.get(r);i&&i.id===r&&(o=i,n=r)}if(!o)o={id:e.id||n,type:e.type??"function",function:{name:e.function?.name||"",argumentsChunks:e.function?.arguments?[e.function.arguments]:[]}},this.toolCallsMap.set(n,o);else if(e.id&&!o.id)this.toolCallsMap.delete(n),o.id=e.id,this.toolCallsMap.set(e.id,o);else if(e.id&&o.id!==e.id){if(!e.function?.name||e.function.name===o.function.name||o.function.name===""){let i=[...o.function.argumentsChunks],s=e.function?.arguments!==void 0&&e.function.arguments!==""?[...i,e.function.arguments]:i;n!==e.id&&this.toolCallsMap.delete(n),o={id:e.id,type:e.type??"function",function:{name:e.function?.name||o.function.name||"",argumentsChunks:s}}}else o={id:e.id,type:e.type??"function",function:{name:e.function?.name||"",argumentsChunks:e.function?.arguments?[e.function.arguments]:[]}};this.toolCallsMap.set(e.id,o)}else e.function?.name&&(o.function.name=e.function.name),e.function?.arguments&&o.function.argumentsChunks.push(e.function.arguments)}addDeltas(e){for(let n of e)this.addDelta(n)}getToolCalls(){return Array.from(this.toolCallsMap.values(),BE)}hasToolCalls(){return this.toolCallsMap.size>0}getToolCallCount(){return this.toolCallsMap.size}reset(){this.toolCallsMap.clear()}getToolCall(e){let n=this.toolCallsMap.get(e);return n?BE(n):void 0}};var V3=/at position (\d+)/i;function q3(t){let e=t.match(V3);if(!e)return;let n=parseInt(e[1],10);if(!(!Number.isFinite(n)||n<0))return n}function G3(t,e){let n=t.length,o=Math.min(Math.max(0,e),n),r=t.slice(Math.max(0,o-80),o),i=t.slice(o,Math.min(n,o+80));return`
1558
+ ${r.customInstructions}`:i[ga.CustomInstructions]="";let l=new yp().resolveSimple(z3,i);return W3(l)}function LE(t){let e={},n=[];for(let[o,r]of Object.entries(t.inputs)){let i={description:r.description};switch(r.type){case"string":case"number":case"integer":case"boolean":i.type=r.type;break;case"string[]":i.type="array",i.items={type:"string"};break;case"number[]":i.type="array",i.items={type:"number"};break;default:{let s=r.type;throw new Error(`Unsupported input type '${s}' for parameter '${o}'. Supported types: string, number, integer, boolean, string[], number[]`)}}r.enum&&r.enum.length>0&&(i.enum=r.enum),e[o]=i,r.required&&n.push(o)}return{type:"object",properties:e,required:n.length>0?n:void 0}}tn();Lr();function D1(t){if(t.role!=="assistant")return[];let e=t;if(!e.toolCalls||e.toolCalls.length===0)return[];let n=[];for(let o of e.toolCalls){if(!o.function?.name)continue;let r=o.id||`temp_${o.function.name}_${n.length}`;n.push({id:r,type:o.type||"function",function:{name:o.function.name,arguments:o.function.arguments||"{}"}})}return n}function yr(t){if(typeof t.content=="string")return t.content;if(Array.isArray(t.content))return t.content.filter(n=>n.type==="text"||typeof n=="object"&&"text"in n||typeof n=="string").map(n=>typeof n=="object"&&"text"in n?n.text:typeof n=="string"?n:"").filter(n=>n.length>0).join("");if(t.content!==null&&t.content!==void 0)try{return String(t.content)}catch{return""}return""}gr();function Gn(t){return`agent_${t.toLowerCase().replace(/[^a-z0-9_]/g,"_")}`}function K3(){return us().filter(t=>!t.isMainRole).map(t=>Gn(t.role))}var Cle=[I.READ_FILE,I.WRITE_FILE,I.EDIT_FILE,"show_notification","execute_command"],Ele=[I.DELETE_FILE,I.GREP,I.GLOB,I.WEB_FETCH,I.WEB_SEARCH,I.RUN_TERMINAL_CMD,I.AWAIT_SHELL,I.STOP_SHELL,"http_request","watch_file",I.CRON_CREATE,I.CRON_DELETE,I.CRON_LIST],NE=[I.READ_FILE,I.LIST_FILES,I.GREP,I.GLOB,I.ASK_QUESTION,I.WEB_FETCH,I.WEB_SEARCH,...K3(),I.CRON_LIST],H3=[I.CREATE_PLAN];function O1(t){return NE.includes(t)}function $E(t){return NE.includes(t)||H3.includes(t)}var vc={OK:200,BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,TOO_MANY_REQUESTS:429,INTERNAL_SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},vp=[vc.TOO_MANY_REQUESTS,vc.INTERNAL_SERVER_ERROR,vc.BAD_GATEWAY,vc.SERVICE_UNAVAILABLE,vc.GATEWAY_TIMEOUT];var L1={"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4":8192,"gpt-3.5-turbo":16385,"o1-preview":128e3,"o1-mini":128e3,"o3-mini":2e5,"claude-3-5-sonnet-20241022":2e5,"claude-3-5-haiku-20241022":2e5,"claude-3-opus-20240229":2e5,"claude-3-sonnet-20240229":2e5,"claude-3-haiku-20240307":2e5,"claude-sonnet-4-20250514":2e5,"claude-opus-4-20250514":2e5,"claude-sonnet-4-5-20250929":2e5,"claude-opus-4-1-20250805":2e5,"claude-3-7-sonnet-20250219":2e5,"claude-haiku-4-5-20251001":2e5,"claude-sonnet-4-5-20250929:1m":1e6,"gemini-2.0-flash":1e6,"gemini-2.0-flash-lite":1e6,"gemini-1.5-pro":2e6,"gemini-1.5-flash":1e6,"deepseek-chat":64e3,"deepseek-coder":64e3,"deepseek-reasoner":64e3,"mistral-large-latest":128e3,"mistral-medium-latest":32e3,"mistral-small-latest":32e3,"codestral-latest":32e3,default:2e5};function FE(t){if(t in L1)return L1[t];for(let[e,n]of Object.entries(L1))if(t.startsWith(e))return n;return 2e5}var N1={"gpt-4o":16384,"gpt-4o-mini":16384,"gpt-4-turbo":4096,"o1-preview":32768,"o1-mini":65536,"o3-mini":1e5,"claude-3-5-sonnet-20241022":8192,"claude-3-5-haiku-20241022":8192,"claude-3-opus-20240229":4096,"claude-sonnet-4-20250514":16384,"claude-opus-4-20250514":32e3,"claude-sonnet-4-5-20250929":16384,"claude-opus-4-1-20250805":32e3,"claude-3-7-sonnet-20250219":8192,"claude-haiku-4-5-20251001":8192,"gemini-2.0-flash":8192,"gemini-1.5-pro":8192,default:4096};function UE(t){if(t in N1)return N1[t];for(let[e,n]of Object.entries(N1))if(t.startsWith(e))return n;return 4096}function BE(t){return{id:t.id,type:"function",function:{name:t.function.name,arguments:t.function.argumentsChunks.join("")}}}var ds=class{toolCallsMap=new Map;addDelta(e){if(!e.id&&!e.function?.name){console.warn("[ToolCallAggregator] Skipping malformed tool call delta: no id and no function.name",e);return}let n=e.id||`temp_${e.function?.name||"unknown"}`,o=this.toolCallsMap.get(n);if(!o&&e.id&&e.function?.name){let r=`temp_${e.function.name}`,i=this.toolCallsMap.get(r);i&&i.id===r&&(o=i,n=r)}if(!o)o={id:e.id||n,type:e.type??"function",function:{name:e.function?.name||"",argumentsChunks:e.function?.arguments?[e.function.arguments]:[]}},this.toolCallsMap.set(n,o);else if(e.id&&!o.id)this.toolCallsMap.delete(n),o.id=e.id,this.toolCallsMap.set(e.id,o);else if(e.id&&o.id!==e.id){if(!e.function?.name||e.function.name===o.function.name||o.function.name===""){let i=[...o.function.argumentsChunks],s=e.function?.arguments!==void 0&&e.function.arguments!==""?[...i,e.function.arguments]:i;n!==e.id&&this.toolCallsMap.delete(n),o={id:e.id,type:e.type??"function",function:{name:e.function?.name||o.function.name||"",argumentsChunks:s}}}else o={id:e.id,type:e.type??"function",function:{name:e.function?.name||"",argumentsChunks:e.function?.arguments?[e.function.arguments]:[]}};this.toolCallsMap.set(e.id,o)}else e.function?.name&&(o.function.name=e.function.name),e.function?.arguments&&o.function.argumentsChunks.push(e.function.arguments)}addDeltas(e){for(let n of e)this.addDelta(n)}getToolCalls(){return Array.from(this.toolCallsMap.values(),BE)}hasToolCalls(){return this.toolCallsMap.size>0}getToolCallCount(){return this.toolCallsMap.size}reset(){this.toolCallsMap.clear()}getToolCall(e){let n=this.toolCallsMap.get(e);return n?BE(n):void 0}};var V3=/at position (\d+)/i;function q3(t){let e=t.match(V3);if(!e)return;let n=parseInt(e[1],10);if(!(!Number.isFinite(n)||n<0))return n}function G3(t,e){let n=t.length,o=Math.min(Math.max(0,e),n),r=t.slice(Math.max(0,o-80),o),i=t.slice(o,Math.min(n,o+80));return`
1559
1559
 
1560
1560
  \u51FA\u9519\u4F4D\u7F6E\uFF080-based \u7D22\u5F15: ${e}\uFF0C\u53C2\u6570\u957F\u5EA6: ${n}\uFF09\uFF1A
1561
1561
  \u4F4D\u7F6E ${o} \u4E4B\u524D\uFF08\u6700\u591A 80 \u5B57\u7B26\uFF09: ${JSON.stringify(r)}
1562
1562
  \u4F4D\u7F6E ${o} \u8D77\uFF08\u6700\u591A 80 \u5B57\u7B26\uFF09: ${JSON.stringify(i)}`}function $1(t,e,n){if(e.length===0)return t;let o=n instanceof Error?n.message:String(n),r=q3(o);return r===void 0?t:t+G3(e,r)}var va={VALID:"valid",MISSING_API_KEY:"missing-api-key",MISSING_ENV_SECRET:"missing-env-secret",INVALID:"invalid"};function F1(){return process.env.DEBUG==="true"||process.env.VITEST_DEBUG==="true"}var bp=class t{static instance=null;static getInstance(){return t.instance||(t.instance=new t),t.instance}logRequest(e,n,o,r){F1()&&(console.log(`[LLM DEBUG] Request: ${e}/${n}, Messages: ${o.length}`),r?.tools&&r.tools.length>0&&console.log(`[LLM DEBUG] Tools: ${r.tools.map(i=>i.function.name).join(", ")}`))}logResponse(e,n,o,r){if(!F1())return;let i="",s=[];o.forEach(a=>{a.role==="assistant"&&(typeof a.content=="string"?i+=a.content:Array.isArray(a.content)&&(i+=a.content.filter(l=>l.type==="text").map(l=>l.text).join("")),"toolCalls"in a&&a.toolCalls&&a.toolCalls.forEach(l=>{l.id&&l.function?.name&&s.push({id:l.id,name:l.function.name})}))}),s.length>0?console.log(`[LLM DEBUG] Response: ${s.length} tool call(s): ${s.map(a=>a.name).join(", ")}`):i&&console.log(`[LLM DEBUG] Response: "${i.substring(0,100)}${i.length>100?"...":""}"`)}logError(e,n,o){F1()&&(console.error(`
1563
1563
  [LLM DEBUG] ========== Error ==========`),console.error(`[LLM DEBUG] Provider: ${e}`),console.error(`[LLM DEBUG] Model: ${n}`),console.error(`[LLM DEBUG] Error: ${o.message}`),o.stack&&console.error(`[LLM DEBUG] Stack: ${o.stack}`),console.error(`[LLM DEBUG] ===============================
1564
- `))}};function pn(t){if(!t||t.length===0)return 0;let e=0;for(let n of t){let o=n.codePointAt(0);e+=o<=127?.25:1.3}return Math.floor(e)}function bc(t,e){return 4+pn(e)}var U1=class{encode(e){return Array.from(e).map((n,o)=>o)}decode(e){return""}count(e){return pn(e)}},Kle=new U1;var Fe=class extends Error{constructor(n,o,r,i){super(n);this.llm=o;this.code=r;this.statusCode=i;this.name="LLMError"}llm;code;statusCode},ni=class{static providerName="base";static defaultOptions=void 0;uniqueId;model;title;apiKey;apiBase;_contextLength;completionOptions;requestOptions;capabilities;promptTemplates;baseChatSystemMessage;baseAgentSystemMessage;autocompleteOptions;cacheBehavior;embeddingId;maxEmbeddingChunkSize;maxEmbeddingBatchSize;roles;env;lastRequestId;logger;_llmOptions;constructor(e){let n=this.mergeWithDefaults(e);this._llmOptions=n,this.uniqueId=n.uniqueId||this.generateUniqueId(),this.model=n.model,this.title=n.title,this.apiKey=n.apiKey,this.apiBase=n.apiBase,this._contextLength=n.contextLength,this.completionOptions=n.completionOptions||{model:this.model,maxOutputTokens:4096,temperature:.5},this.requestOptions=n.requestOptions,this.capabilities=n.capabilities,this.promptTemplates=n.promptTemplates,this.baseChatSystemMessage=n.baseChatSystemMessage,this.baseAgentSystemMessage=n.baseAgentSystemMessage,this.autocompleteOptions=n.autocompleteOptions,this.cacheBehavior=n.cacheBehavior,this.env=n.env,this.embeddingId=n.embeddingId||`${this.providerName}::${this.model}`,this.maxEmbeddingChunkSize=n.maxEmbeddingChunkSize||500,this.maxEmbeddingBatchSize=n.maxEmbeddingBatchSize||64}get providerName(){return this.constructor.providerName}get underlyingProviderName(){return this.providerName}get contextLength(){return this._contextLength||FE(this.model)}async*streamChat(e,n,o,r){let i=this.mergeCompletionOptions(o),s=this.compileChatMessages(e,i);this.logRequest(s.messages,i);let a=bp.getInstance();a.logRequest(this.providerName,this.model,s.messages,i);let l=[],c,u=[];try{for await(let f of this._streamChat(s.messages,n,i))f.role==="assistant"&&typeof f.content=="string"&&f.content.length>0&&l.push(f.content),"usage"in f&&f.usage&&(c=f.usage),u.push(f),yield f;a.logResponse(this.providerName,this.model,u,c)}catch(f){throw this.logError(f),a.logError(this.providerName,this.model,f),f}let d=l.join(""),p=this.messagesToString(s.messages);return c===void 0&&(c={promptTokens:pn(p),completionTokens:pn(d)}),{modelTitle:this.title||this.model,modelProvider:this.providerName,prompt:p,completion:d,usage:c}}async chat(e,n,o){let r={role:"assistant",content:""};for await(let i of this.streamChat(e,n,o))i.role==="assistant"&&(typeof i.content=="string"?r.content=(r.content||"")+i.content:Array.isArray(i.content)&&(r.content=i.content),"toolCalls"in i&&(r.toolCalls=i.toolCalls),"usage"in i&&(r.usage=i.usage));return r}async*streamComplete(e,n,o){let r=[{role:"user",content:e}],i=[];for await(let s of this.streamChat(r,n,o))s.role==="assistant"&&typeof s.content=="string"&&(s.content.length>0&&i.push(s.content),yield s.content);return{modelTitle:this.title||this.model,modelProvider:this.providerName,prompt:e,completion:i.join("")}}async complete(e,n,o){let r="";for await(let i of this.streamComplete(e,n,o))r+=i;return r}async*streamFim(e,n,o,r){throw new Fe(`Provider ${this.providerName} does not support FIM completions`,this,"FIM_NOT_SUPPORTED")}async embed(e){throw new Fe(`Provider ${this.providerName} does not support embeddings`,this,"EMBEDDINGS_NOT_SUPPORTED")}async rerank(e,n){throw new Fe(`Provider ${this.providerName} does not support reranking`,this,"RERANK_NOT_SUPPORTED")}countTokens(e){return Math.ceil(e.length/4)}compileChatMessages(e,n){let o=n.maxOutputTokens||this.completionOptions.maxOutputTokens||4096,i=this.contextLength-o,s=0,a=[],l=0;for(let c=e.length-1;c>=0;c--){let u=e[c],d=typeof u.content=="string"?u.content:u.content.map(f=>"text"in f?f.text:"").join(""),p=this.countTokens(d);if(s+p>i&&a.length>0){l++;continue}s+=p,a.unshift(u)}return{messages:a,tokenCount:s,truncated:l>0,removedMessages:l>0?l:void 0}}async listModels(){return[{id:this.model,displayName:this.title??this.model}]}renderPromptTemplate(e,n,o,r){if(typeof e=="function")return e(n,o);let i=e;for(let[s,a]of Object.entries(o))i=i.replace(new RegExp(`\\{\\{${s}\\}\\}`,"g"),a);return i}supportsImages(){return this.capabilities?.supportsImages??!1}supportsCompletions(){return this.capabilities?.supportsCompletions??!0}supportsPrefill(){return this.capabilities?.supportsPrefill??!1}supportsFim(){return this.capabilities?.supportsFim??!1}supportsStreaming(){return this.capabilities?.supportsStreaming??!0}supportsTools(){return this.capabilities?.supportsTools??!1}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}getConfigurationStatus(){if(this.requiresApiKey()&&!this.apiKey)return va.MISSING_API_KEY;if(this.env){for(let e of Object.values(this.env))if(!e)return va.MISSING_ENV_SECRET}return va.VALID}requiresApiKey(){return!0}mergeCompletionOptions(e){return{...this.completionOptions,...e}}generateUniqueId(){return`${this.providerName}::${this.model}::${Date.now()}`}mergeWithDefaults(e){let n=this.constructor.defaultOptions;return n?{...n,...e,completionOptions:{...n.completionOptions,...e.completionOptions,model:e.model},requestOptions:{...n.requestOptions,...e.requestOptions}}:e}messagesToString(e){return e.map(n=>{let o=typeof n.content=="string"?n.content:n.content.map(r=>"text"in r?r.text:"[image]").join("");return`[${n.role}]: ${o}`}).join(`
1564
+ `))}};function pn(t){if(!t||t.length===0)return 0;let e=0;for(let n of t){let o=n.codePointAt(0);e+=o<=127?.25:1.3}return Math.floor(e)}function bc(t,e){return 4+pn(e)}var U1=class{encode(e){return Array.from(e).map((n,o)=>o)}decode(e){return""}count(e){return pn(e)}},Vle=new U1;var Fe=class extends Error{constructor(n,o,r,i){super(n);this.llm=o;this.code=r;this.statusCode=i;this.name="LLMError"}llm;code;statusCode},ni=class{static providerName="base";static defaultOptions=void 0;uniqueId;model;title;apiKey;apiBase;_contextLength;completionOptions;requestOptions;capabilities;promptTemplates;baseChatSystemMessage;baseAgentSystemMessage;autocompleteOptions;cacheBehavior;embeddingId;maxEmbeddingChunkSize;maxEmbeddingBatchSize;roles;env;lastRequestId;logger;_llmOptions;constructor(e){let n=this.mergeWithDefaults(e);this._llmOptions=n,this.uniqueId=n.uniqueId||this.generateUniqueId(),this.model=n.model,this.title=n.title,this.apiKey=n.apiKey,this.apiBase=n.apiBase,this._contextLength=n.contextLength,this.completionOptions=n.completionOptions||{model:this.model,maxOutputTokens:4096,temperature:.5},this.requestOptions=n.requestOptions,this.capabilities=n.capabilities,this.promptTemplates=n.promptTemplates,this.baseChatSystemMessage=n.baseChatSystemMessage,this.baseAgentSystemMessage=n.baseAgentSystemMessage,this.autocompleteOptions=n.autocompleteOptions,this.cacheBehavior=n.cacheBehavior,this.env=n.env,this.embeddingId=n.embeddingId||`${this.providerName}::${this.model}`,this.maxEmbeddingChunkSize=n.maxEmbeddingChunkSize||500,this.maxEmbeddingBatchSize=n.maxEmbeddingBatchSize||64}get providerName(){return this.constructor.providerName}get underlyingProviderName(){return this.providerName}get contextLength(){return this._contextLength||FE(this.model)}async*streamChat(e,n,o,r){let i=this.mergeCompletionOptions(o),s=this.compileChatMessages(e,i);this.logRequest(s.messages,i);let a=bp.getInstance();a.logRequest(this.providerName,this.model,s.messages,i);let l=[],c,u=[];try{for await(let f of this._streamChat(s.messages,n,i))f.role==="assistant"&&typeof f.content=="string"&&f.content.length>0&&l.push(f.content),"usage"in f&&f.usage&&(c=f.usage),u.push(f),yield f;a.logResponse(this.providerName,this.model,u,c)}catch(f){throw this.logError(f),a.logError(this.providerName,this.model,f),f}let d=l.join(""),p=this.messagesToString(s.messages);return c===void 0&&(c={promptTokens:pn(p),completionTokens:pn(d)}),{modelTitle:this.title||this.model,modelProvider:this.providerName,prompt:p,completion:d,usage:c}}async chat(e,n,o){let r={role:"assistant",content:""};for await(let i of this.streamChat(e,n,o))i.role==="assistant"&&(typeof i.content=="string"?r.content=(r.content||"")+i.content:Array.isArray(i.content)&&(r.content=i.content),"toolCalls"in i&&(r.toolCalls=i.toolCalls),"usage"in i&&(r.usage=i.usage));return r}async*streamComplete(e,n,o){let r=[{role:"user",content:e}],i=[];for await(let s of this.streamChat(r,n,o))s.role==="assistant"&&typeof s.content=="string"&&(s.content.length>0&&i.push(s.content),yield s.content);return{modelTitle:this.title||this.model,modelProvider:this.providerName,prompt:e,completion:i.join("")}}async complete(e,n,o){let r="";for await(let i of this.streamComplete(e,n,o))r+=i;return r}async*streamFim(e,n,o,r){throw new Fe(`Provider ${this.providerName} does not support FIM completions`,this,"FIM_NOT_SUPPORTED")}async embed(e){throw new Fe(`Provider ${this.providerName} does not support embeddings`,this,"EMBEDDINGS_NOT_SUPPORTED")}async rerank(e,n){throw new Fe(`Provider ${this.providerName} does not support reranking`,this,"RERANK_NOT_SUPPORTED")}countTokens(e){return Math.ceil(e.length/4)}compileChatMessages(e,n){let o=n.maxOutputTokens||this.completionOptions.maxOutputTokens||4096,i=this.contextLength-o,s=0,a=[],l=0;for(let c=e.length-1;c>=0;c--){let u=e[c],d=typeof u.content=="string"?u.content:u.content.map(f=>"text"in f?f.text:"").join(""),p=this.countTokens(d);if(s+p>i&&a.length>0){l++;continue}s+=p,a.unshift(u)}return{messages:a,tokenCount:s,truncated:l>0,removedMessages:l>0?l:void 0}}async listModels(){return[{id:this.model,displayName:this.title??this.model}]}renderPromptTemplate(e,n,o,r){if(typeof e=="function")return e(n,o);let i=e;for(let[s,a]of Object.entries(o))i=i.replace(new RegExp(`\\{\\{${s}\\}\\}`,"g"),a);return i}supportsImages(){return this.capabilities?.supportsImages??!1}supportsCompletions(){return this.capabilities?.supportsCompletions??!0}supportsPrefill(){return this.capabilities?.supportsPrefill??!1}supportsFim(){return this.capabilities?.supportsFim??!1}supportsStreaming(){return this.capabilities?.supportsStreaming??!0}supportsTools(){return this.capabilities?.supportsTools??!1}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}getConfigurationStatus(){if(this.requiresApiKey()&&!this.apiKey)return va.MISSING_API_KEY;if(this.env){for(let e of Object.values(this.env))if(!e)return va.MISSING_ENV_SECRET}return va.VALID}requiresApiKey(){return!0}mergeCompletionOptions(e){return{...this.completionOptions,...e}}generateUniqueId(){return`${this.providerName}::${this.model}::${Date.now()}`}mergeWithDefaults(e){let n=this.constructor.defaultOptions;return n?{...n,...e,completionOptions:{...n.completionOptions,...e.completionOptions,model:e.model},requestOptions:{...n.requestOptions,...e.requestOptions}}:e}messagesToString(e){return e.map(n=>{let o=typeof n.content=="string"?n.content:n.content.map(r=>"text"in r?r.text:"[image]").join("");return`[${n.role}]: ${o}`}).join(`
1565
1565
  `)}logRequest(e,n){this.logger?.debug(`Request to ${this.providerName}/${this.model}`,{messageCount:e.length,options:n})}logError(e){this.logger?.error(`Error from ${this.providerName}/${this.model}`,e)}};var ba=class extends Error{constructor(n,o,r){super(n);this.statusCode=o;this.retryAfter=r;this.name="RetriableError"}statusCode;retryAfter},xc=class extends Error{constructor(n){super(`Fallback to non-streaming triggered: ${n.message}`);this.originalError=n;this.name="FallbackToNonStreamingError"}originalError},B1=class extends Error{constructor(n,o){super(`Fallback model triggered: ${o}`);this.originalError=n;this.fallbackModel=o;this.name="FallbackModelError"}originalError;fallbackModel};function WE(t){if((t.status??t.statusCode)===529)return!0;let n=t.message.toLowerCase();return n.includes("overloaded")||n.includes('"type":"overloaded_error"')}function Q3(t){return t?t==="title_gen"||t==="summary"||t==="classifier":!1}function X3(t){if(t instanceof ba&&t.retryAfter!==void 0)return t.retryAfter;let e=t.retryAfter;return z1(e)}var xa=(t,e)=>{if(e.attempt>=e.maxRetries)return{action:"fail"};if(WE(t))return Q3(e.querySource)?{action:"fail"}:e.fallbackModel&&e.consecutiveOverloadErrors>=3?{action:"fallback-model",fallbackModel:e.fallbackModel}:{action:"retry"};if(!eU(t))return{action:"fail"};let o=X3(t);return{action:"retry",...o!==void 0&&{delayMs:o}}};function j1(t){if(t.statusCode!==void 0){if(vp.includes(t.statusCode))return!0;if(t.statusCode>=400&&t.statusCode<500&&t.statusCode!==429)return!1}if(t.code){let o=t.code.toUpperCase();if(["NO_CONTENT","SERVER_ERROR","API_ERROR","RATE_LIMIT","TIMEOUT","NETWORK_TERMINATED"].includes(o))return!0;if(["MISSING_API_KEY","UNAUTHORIZED","FORBIDDEN","CONTENT_FILTERED","NOT_FOUND","INVALID_RESPONSE"].includes(o))return!1}let e=t.message.toLowerCase();return["rate limit","too many requests","timeout","terminated","fetch failed","econnreset","econnrefused","socket hang up","network error","service unavailable","internal server error","bad gateway","gateway timeout","stream completed without any content"].some(o=>e.includes(o))}function eU(t){if(t instanceof ba)return!0;if(t instanceof Fe)return j1(t);if("statusCode"in t&&typeof t.statusCode=="number")return vp.includes(t.statusCode);if("status"in t&&typeof t.status=="number")return vp.includes(t.status);let e=t.message.toLowerCase();return["rate limit","too many requests","timeout","terminated","fetch failed","econnreset","econnrefused","socket hang up","network error","service unavailable","internal server error","bad gateway","gateway timeout"].some(o=>e.includes(o))}function Tc(t,e=1e3,n=3e4,o=!0){let r=e*Math.pow(2,t);if(o){let i=r*.25*Math.random();r+=i}return Math.min(r,n)}function z1(t){if(t===void 0)return;if(typeof t=="number")return t*1e3;let e=parseInt(t,10);if(!isNaN(e))return e*1e3;let n=new Date(t);if(!isNaN(n.getTime()))return Math.max(0,n.getTime()-Date.now())}function W1(t){return new Promise(e=>setTimeout(e,t))}async function wc(t,e={}){let{maxRetries:n=3,baseDelay:o=1e3,maxDelay:r=3e4,useJitter:i=!0,context:s,decide:a=xa,onRetry:l}=e,c,u=0;for(let d=0;d<=n;d++)try{return await t()}catch(p){c=p,WE(c)?u++:u=0;let f={attempt:d,maxRetries:n,consecutiveOverloadErrors:u,...s},m=a(c,f);if(m.action==="fail")throw c;if(m.action==="fallback-to-non-stream")throw new xc(c);if(m.action==="fallback-model"){let h=m.fallbackModel??s?.fallbackModel;throw h?new B1(c,h):c}let g=m.delayMs;g===void 0&&(g=Tc(d,o,r,i)),l?.(c,d,g),await W1(g)}throw c}function Ta(t){if(!t)return 0;let e=t.promptTokensDetails?.cachedTokens??0,n=t.promptTokensDetails?.cacheWriteTokens??0;return t.promptTokens+t.completionTokens+e+n}function K1(t){return t?t.promptTokens>0||t.completionTokens>0||(t.promptTokensDetails?.cachedTokens??0)>0||(t.promptTokensDetails?.cacheWriteTokens??0)>0:!1}var xp=class{contentChunks=[];cachedContent="";cacheDirty=!1;toolCallAggregator=new ds;addChunk(e){if(e.role!=="assistant")return;let n=e;if(typeof n.content=="string")n.content.length>0&&(this.contentChunks.push(n.content),this.cacheDirty=!0);else if(Array.isArray(n.content))for(let o of n.content)o.type==="text"&&o.text.length>0&&(this.contentChunks.push(o.text),this.cacheDirty=!0);n.toolCalls&&this.toolCallAggregator.addDeltas(n.toolCalls)}getMessage(){let e=this.toolCallAggregator.getToolCalls(),n=e.length>0?e.map(o=>({id:o.id,type:o.type,function:{name:o.function.name,arguments:o.function.arguments}})):void 0;return{role:"assistant",content:this.getContent(),toolCalls:n}}getContent(){return this.cacheDirty&&(this.cachedContent=this.contentChunks.join(""),this.cacheDirty=!1),this.cachedContent}hasToolCalls(){return this.toolCallAggregator.hasToolCalls()}getToolCallCount(){return this.toolCallAggregator.getToolCallCount()}reset(){this.contentChunks=[],this.cachedContent="",this.cacheDirty=!1,this.toolCallAggregator.reset()}};async function*KE(t,e,n){let o,r=()=>{o!==void 0&&(clearTimeout(o),o=void 0)},i=()=>new Promise((s,a)=>{o=setTimeout(()=>{o=void 0,a(n())},e),t.next().then(l=>{r(),s(l)}).catch(l=>{r(),a(l)})});try{let s=await i();for(;!s.done;)yield s.value,s=await i();return s.value}finally{r()}}var HE=1500,VE="Idle timeout (no response for 3 minutes)",tU="\u8BF7\u6C42\u8D85\u65F6\uFF083 \u5206\u949F\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",nU="\u6A21\u578B\u8FD4\u56DE\u7684\u5DE5\u5177\u53C2\u6570\u683C\u5F0F\u6709\u8BEF\uFF0C\u8BF7\u91CD\u8BD5",rU=["timeout","timed out","\u8D85\u65F6"],oU="Failed to parse tool arguments:";function iU(t){let e=(typeof t=="string"?t:t.message??"").toLowerCase();return rU.some(n=>e.includes(n))}function sU(t){return(typeof t=="string"?t:t.message??"").startsWith(oU)}function aU(t,e){let n="cause"in e&&e.cause instanceof Error?e.cause:null;if(!n)return t;let o=[];if(n instanceof Fe&&(n.statusCode!==void 0&&!t.includes(String(n.statusCode))&&o.push(`HTTP ${n.statusCode}`),n.code!=null&&String(n.code).length>0&&!t.includes(String(n.code))&&o.push(`code ${n.code}`)),n.message&&n.message!==t&&!t.includes(n.message)&&o.push(n.message),o.length===0)return t;let r=o.join(" \xB7 "),i=`${t} (${r})`;if(i.length<=HE)return i;let s=HE-t.length-4;return s<8?t:`${t} (${r.slice(0,s)}\u2026)`}function qE(t){let e=typeof t=="string"?new Error(t):t;if(iU(e))return tU;if(sU(e))return nU;let n=(e instanceof Error?e.message:String(t))||"\u8BF7\u6C42\u5931\u8D25";return e instanceof Error&&(n=aU(n,e)),n}var lU=new Set(["UNABLE_TO_VERIFY_LEAF_SIGNATURE","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","CERT_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CERT_REVOKED","CERT_REJECTED","CERT_UNTRUSTED","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","CERT_CHAIN_TOO_LONG","PATH_LENGTH_EXCEEDED","ERR_TLS_CERT_ALTNAME_INVALID","HOSTNAME_MISMATCH","ERR_TLS_HANDSHAKE_TIMEOUT","ERR_SSL_WRONG_VERSION_NUMBER","ERR_SSL_DECRYPTION_FAILED_OR_BAD_RECORD_MAC"]);function YE(t){if(!t||typeof t!="object")return null;let e=t,n=5,o=0;for(;e&&o<n;){if(e instanceof Error&&"code"in e&&typeof e.code=="string"){let r=e.code,i=lU.has(r);return{code:r,message:e.message,isSSLError:i}}if(e instanceof Error&&"cause"in e&&e.cause!==e)e=e.cause,o++;else break}return null}function cU(t){if(t.includes("<!DOCTYPE html")||t.includes("<html")){let e=t.match(/<title>([^<]+)<\/title>/);return e&&e[1]?e[1].trim():""}return t}var GE=1200,ZE=480;function uU(t){try{let e=JSON.stringify(t);return e.length>ZE?`${e.slice(0,ZE)}\u2026`:e}catch{return""}}function dU(t){let e=t.error;if(e&&typeof e=="object"){let n=e,o=[];for(let i of["message","type","code","param"]){let s=n[i];typeof s=="string"&&s.length>0&&o.push(`${i}: ${s}`)}if(o.length>0)return o.join("; ");let r=uU(e);if(r)return r}return""}function JE(t,e){let n=[],o=t.toLowerCase();if(e.param&&typeof e.param=="string"&&!o.includes(String(e.param).toLowerCase())&&n.push(`param: ${e.param}`),e.type&&typeof e.type=="string"&&!o.includes(String(e.type).toLowerCase())&&n.push(`type: ${e.type}`),e.code!=null&&String(e.code).length>0){let s=String(e.code);o.includes(s.toLowerCase())||n.push(`code: ${s}`)}if(e.requestID&&!o.includes(e.requestID.toLowerCase())&&n.push(`request id: ${e.requestID}`),n.length===0)return t;let r=n.join("; "),i=`${t} (${r})`;return i.length<=GE?i:`${t} (${r.slice(0,GE-t.length-4)}\u2026)`}function QE(t,e){let n=YE(t);if(n){let{code:s,isSSLError:a}=n;if(s==="ETIMEDOUT")return"Request timed out. Check your internet connection and proxy settings";if(a)switch(s){case"UNABLE_TO_VERIFY_LEAF_SIGNATURE":case"UNABLE_TO_GET_ISSUER_CERT":case"UNABLE_TO_GET_ISSUER_CERT_LOCALLY":return"Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates";case"CERT_HAS_EXPIRED":return"Unable to connect to API: SSL certificate has expired";case"CERT_REVOKED":return"Unable to connect to API: SSL certificate has been revoked";case"DEPTH_ZERO_SELF_SIGNED_CERT":case"SELF_SIGNED_CERT_IN_CHAIN":return"Unable to connect to API: Self-signed certificate detected. Check your proxy or corporate SSL certificates";case"ERR_TLS_CERT_ALTNAME_INVALID":case"HOSTNAME_MISMATCH":return"Unable to connect to API: SSL certificate hostname mismatch";case"CERT_NOT_YET_VALID":return"Unable to connect to API: SSL certificate is not yet valid";default:return`Unable to connect to API: SSL error (${s})`}}if(t.message==="Connection error.")return n?.code?`Unable to connect to API (${n.code})`:"Unable to connect to API. Check your internet connection";if(!t.message){let a=dU(t)||`API error (status ${t.status??"unknown"})`;return JE(a,t)}let o=t.message,r=cU(o);r!==o&&r.length>0&&(o=r);let i=e.apiBase||"default";return t.status===400&&o.toLowerCase().includes("model")?o=`${o} (model: ${e.model}, apiBase: ${i})`:t.status===401?o=`Authentication failed: ${o}`:t.status===429&&(o=`Rate limit exceeded: ${o}`),JE(o,t)}function XE(t){let e=YE(t);if(e){let{code:n,isSSLError:o}=e;if(n==="ETIMEDOUT")return"Request timed out. Check your internet connection and proxy settings";if(o)switch(n){case"UNABLE_TO_VERIFY_LEAF_SIGNATURE":case"UNABLE_TO_GET_ISSUER_CERT":case"UNABLE_TO_GET_ISSUER_CERT_LOCALLY":return"Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates";case"CERT_HAS_EXPIRED":return"Unable to connect to API: SSL certificate has expired";case"CERT_REVOKED":return"Unable to connect to API: SSL certificate has been revoked";case"DEPTH_ZERO_SELF_SIGNED_CERT":case"SELF_SIGNED_CERT_IN_CHAIN":return"Unable to connect to API: Self-signed certificate detected. Check your proxy or corporate SSL certificates";case"ERR_TLS_CERT_ALTNAME_INVALID":case"HOSTNAME_MISMATCH":return"Unable to connect to API: SSL certificate hostname mismatch";case"CERT_NOT_YET_VALID":return"Unable to connect to API: SSL certificate is not yet valid";default:return`Unable to connect to API: SSL error (${n})`}}return t.message==="Connection error."?e?.code?`Unable to connect to API (${e.code})`:"Unable to connect to API. Check your internet connection":null}function pU(){try{return typeof process<"u"&&process.env?.PANDA_TOOL_ARGS_DEBUG==="1"}catch{return!1}}function ps(t,e){if(pU())try{console.log("[Panda][ToolArgsDebug]",t,JSON.stringify(e))}catch{console.log("[Panda][ToolArgsDebug]",t,e)}}function H1(t){let e=t.trim();if(!e.startsWith("{"))return null;try{let r=JSON.parse(e);if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}catch{}if(!e.includes("}{"))return null;let n=e.split(/\}\s*\{/);if(n.length<2)return null;let o="{"+n[n.length-1];try{let r=JSON.parse(o);if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}catch{return null}return null}function fU(t){let e=t.status??t.statusCode;return typeof e=="number"?e:void 0}function mU(t){let e=t.retryAfter;return z1(e)}function Tp(t){let e=t instanceof Error?t:new Error(String(t)),n=e.message.toLowerCase(),o=fU(e),r=mU(e);if(e instanceof ba)return{originalError:e,category:"network",statusCode:o,retryAfterMs:r,message:e.message};if(e instanceof Fe){if(e.code?.toUpperCase()==="CONTENT_FILTERED")return{originalError:e,category:"content_filtered",statusCode:o,retryAfterMs:r,message:e.message};if(j1(e)){let i=e.code?.toUpperCase();return e.statusCode===429||i==="RATE_LIMIT"?{originalError:e,category:"rate_limit_429",statusCode:o,retryAfterMs:r,message:e.message}:i==="TIMEOUT"?{originalError:e,category:"timeout",statusCode:o,retryAfterMs:r,message:e.message}:i==="SERVER_ERROR"?{originalError:e,category:"server_5xx",statusCode:o,retryAfterMs:r,message:e.message}:{originalError:e,category:"network",statusCode:o,retryAfterMs:r,message:e.message}}return e.code?.toUpperCase()==="UNAUTHORIZED"||e.statusCode===401||e.statusCode===403?{originalError:e,category:"auth",statusCode:o,retryAfterMs:r,message:e.message}:{originalError:e,category:"invalid_request",statusCode:o,retryAfterMs:r,message:e.message}}return o===429?{originalError:e,category:"rate_limit_429",statusCode:o,retryAfterMs:r,message:e.message}:o===529||n.includes("overloaded")||n.includes('"type":"overloaded_error"')?{originalError:e,category:"overload_529",statusCode:o,retryAfterMs:r,message:e.message}:o!==void 0&&o>=500?{originalError:e,category:"server_5xx",statusCode:o,retryAfterMs:r,message:e.message}:o!==void 0&&o>=400?{originalError:e,category:"invalid_request",statusCode:o,retryAfterMs:r,message:e.message}:n.includes("timeout")?{originalError:e,category:"timeout",statusCode:o,retryAfterMs:r,message:e.message}:n.includes("network")||n.includes("econnreset")||n.includes("fetch failed")||n.includes("socket hang up")||n.includes("terminated")?{originalError:e,category:"network",statusCode:o,retryAfterMs:r,message:e.message}:o===401||o===403?{originalError:e,category:"auth",statusCode:o,retryAfterMs:r,message:e.message}:{originalError:e,category:"unknown",statusCode:o,retryAfterMs:r,message:e.message}}function gU(t){return t==="summary"||t==="title_gen"||t==="classifier"}function eP(t,e){return e.attempt>=e.maxRetries?{action:"fail",reason:"retries_exhausted"}:t.category==="content_filtered"||t.category==="invalid_request"||t.category==="auth"?{action:"fail",reason:`non_retryable_${t.category}`}:t.category==="overload_529"?gU(e.querySource)?{action:"fail",reason:"background_overload_drop"}:e.fallbackModel&&e.consecutiveOverloadErrors>=3?{action:"fallback_model",fallbackModel:e.fallbackModel}:!e.toolCallStarted&&e.consecutiveOverloadErrors>=2?{action:"fallback_to_non_stream"}:{action:"retry",delayMs:Tc(e.attempt)}:t.category==="rate_limit_429"?{action:"retry",delayMs:t.retryAfterMs??Tc(e.attempt)}:t.category==="network"||t.category==="timeout"||t.category==="server_5xx"?{action:"retry",delayMs:Tc(e.attempt)}:{action:"fail",reason:"unknown_error"}}var wa=class{constructor(e){this.llm=e}llm;run(e){return this.runInternal(e)}async*runInternal(e){let n=0,o=3,r=0,i=!1,s=!1,a={...e.options};for(;;)try{if(s){let u=await this.llm.chat(e.messages,e.signal,a);return yield{type:"chunk",chunk:u},{modelTitle:this.llm.title??this.llm.model,modelProvider:this.llm.providerName,prompt:JSON.stringify(e.messages),completion:typeof u.content=="string"?u.content:JSON.stringify(u.content??""),usage:"usage"in u?u.usage:void 0,message:u}}let l=this.llm.streamChat(e.messages,e.signal,a),c=await l.next();for(;!c.done;){let u=c.value;u.role==="assistant"&&Array.isArray(u.toolCalls)&&u.toolCalls.length>0&&(i=!0),yield{type:"chunk",chunk:u},c=await l.next()}return c.value}catch(l){if(e.signal.aborted)throw l instanceof Error?l:new Error(String(l));let c=Tp(l);c.category==="overload_529"?r++:r=0;let u=eP(c,{attempt:n,maxRetries:o,consecutiveOverloadErrors:r,querySource:e.querySource,fallbackModel:e.fallbackModel,toolCallStarted:i});if(u.action==="fail")throw c.originalError;if(u.action==="fallback_to_non_stream"){s=!0,yield{type:"fallback_non_stream",error:c};continue}if(u.action==="fallback_model"){a={...a,modelId:u.fallbackModel},r=0,yield{type:"fallback_model",fromModel:this.llm.model,toModel:u.fallbackModel,error:c};continue}n++,yield{type:"retry",attempt:n,delayMs:u.delayMs,error:c},await W1(u.delayMs)}}};var hU="Failed to parse tool arguments:",yU=' When writing file content (e.g. CSS/JS), escape double quotes as \\". Please retry with valid JSON.',vU=2;function V1(t){return typeof t.args?.__parseError=="boolean"&&t.args.__parseError===!0}function rP(t){let e=new Error(t.args.__parseErrorMessage);return{request:t,status:"error",error:e}}function wp(){return typeof process<"u"&&(process.env.NODE_ENV==="test"||process.env.VITEST==="true"||typeof global<"u"&&global.__vitest__)}async function*oP(t,e,n,o,r,i,s){let a=s.maxIterations??50,l=s.continueOnToolError??!0,c=s.verbose??!1,u=(x,T,W)=>{s.eventBus.emit(P.LOG,{conversationId:i,turnId:s.turnId,level:x,source:"ReAct",message:T,data:W})},d=s.messagesRef??{current:[...n]},p=[],f=0,m=!1,g,h=0;u("info",`Starting reAct with ${o.length} tools, max ${a} iterations`);let y=new Set(o.map(x=>x.function.name));c&&o.length===0&&console.warn("[ReAct] WARNING: No tools available! This may cause the model to use XML tags instead of function calling.");let v=s.querySource??"chat_main",b={tools:o.length>0?o:void 0,toolChoice:o.length>0?"auto":"none",...s.modelId?{modelId:s.modelId}:{},...s.gatewayTraceId?{gatewayTraceId:s.gatewayTraceId}:{},querySource:v,...s.fallbackModel?{fallbackModel:s.fallbackModel}:{}},R=new Map;try{for(;!r.aborted&&f<a;){f++,u("debug",`Iteration ${f}: Calling LLM`),s.beforeIteration&&await s.beforeIteration({iterationCount:f,messagesHolder:d,signal:r});let x,T=!1,W=!1,A=[];try{async function*E(){let te=new wa(t).run({messages:d.current,signal:r,options:b,querySource:v,fallbackModel:s.fallbackModel}),ee=await te.next();for(;!ee.done;){let ue=ee.value;ue.type==="chunk"?yield ue.chunk:ue.type==="retry"?(s.onLlmRetry?.(ue.error.originalError,ue.attempt,ue.delayMs),u("warn",`Retrying LLM call (LlmExecutor attempt ${ue.attempt}) after ${ue.delayMs}ms: ${ue.error.message}`),A.push({attempt:ue.attempt,delayMs:ue.delayMs,errorMessage:ue.error.message})):ue.type==="fallback_non_stream"?u("info",`LLM fallback to non-stream: ${ue.error.message}`):ue.type==="fallback_model"&&u("warn",`LLM fallback model ${ue.fromModel??"?"} -> ${ue.toModel}`),ee=await te.next()}return ee.value}let V=KE(E(),18e4,()=>new Error(VE)),ae=new xp,Te=new ds,me=new Set,ne=new Map,Pe=await V.next();for(;!Pe.done;){for(;A.length>0;)yield{kind:"streamingRetryBoundary",...A.shift()};let H=Pe.value;if(H.role==="thinking"&&(W=!0),s.onStreamChunk?.(H),ae.addChunk(H),H.role==="assistant"){let te=H;if(te.toolCalls&&te.toolCalls.length>0)for(let ee of te.toolCalls){Te.addDelta(ee);let ue=ee.id||`temp_${ee.function?.name||"unknown"}`,Q=Te.getToolCall(ue);if(Q&&Q.function.name&&!me.has(ue)&&(me.add(ue),yield{kind:"toolCallDetected",toolCallId:Q.id,toolName:Q.function.name}),Q&&ee.function?.arguments){let We=(ne.get(ue)||"")+ee.function.arguments;ne.set(ue,We),yield{kind:"toolCallArgsStreaming",toolCallId:Q.id,toolName:Q.function.name,argsDelta:ee.function.arguments,argsAccumulated:We}}}}yield{kind:"streamChunk",chunk:H},Pe=await V.next()}for(;A.length>0;)yield{kind:"streamingRetryBoundary",...A.shift()};let de=Pe.value;de?.usage&&(g=de.usage),x=ae.getMessage(),yield{kind:"assistantMessage",message:x},T=!0}catch(E){let V=E instanceof Error?E:new Error(String(E));throw u("error",`LLM call failed at iteration ${f}: ${V.message}`),c&&!wp()&&(console.error("[ReAct] LLM call failed:",V.message),E instanceof Error&&E.stack&&console.error("[ReAct] Error stack:",E.stack)),V}if(!T)break;let U=bU(x);if(U.length===0){if(xU(W,x)&&h<vU){h++,d.current.push(x),u("warn","Only thinking without assistant content, continuing to next iteration");continue}u("info",`No tool calls, ending reAct loop after ${f} iterations`),d.current.push(x);break}h=0;let _=U.map(E=>E.function.name).filter(E=>!y.has(E));_.length>0&&!wp()&&(console.error(`[ReAct] ERROR: Invalid tool calls detected: ${_.join(", ")}`),console.error(`[ReAct] Available tools: ${Array.from(y).join(", ")}`));let $=[],N=[];R.clear();for await(let E of TU(e,U,r,l,i,s.conversationContext,{interactionMode:s.interactionMode,isSubWork:s.isSubWork},s.onToolOutput))E.kind==="toolCallScheduled"?(R.set(E.toolCall.id,{toolCall:E.toolCall,scheduledCall:E.scheduledCall}),yield{kind:"toolCallScheduled",toolCall:E.toolCall,scheduledCall:E.scheduledCall}):(R.delete(E.toolCall.id),$.push(nP(E.toolCall,E.scheduledCall)),N.push(E.scheduledCall),yield{kind:"toolCallCompleted",toolCall:E.toolCall,scheduledCall:E.scheduledCall});for(let[,{toolCall:E,scheduledCall:V}]of R)V.status="cancelled",$.push(nP(E,V)),yield{kind:"toolCallCompleted",toolCall:E,scheduledCall:V};R.clear(),d.current.push(x),d.current.push(...$);let K={iteration:f,assistantMessage:x,toolCalls:U,toolResults:$,scheduledToolCalls:N};p.push(K),s.onIteration&&s.onIteration(K),yield{kind:"iteration",iteration:K}}}catch(x){for(let[,{toolCall:T,scheduledCall:W}]of R)W.status="cancelled",yield{kind:"toolCallCompleted",toolCall:T,scheduledCall:W};if(R.clear(),r.aborted)u("warn","Execution aborted by signal");else throw x}f>=a&&(m=!0,u("warn",`Stopped by max iterations (${a})`));let M=EU(d.current),B=e.getToolCalls();yield{kind:"done",result:{finalMessage:M,messages:d.current,iterations:p,iterationCount:f,toolCallHistory:B,stoppedByMaxIterations:m,usage:g}}}function bU(t){return t.toolCalls&&t.toolCalls.length>0?D1(t):[]}function xU(t,e){if(!t)return!1;let n=typeof e.content=="string"?e.content.trim().length>0:!1,o=e.toolCalls&&e.toolCalls.length>0;return!n&&!o}function iP(t){return t==="plan"?new Error("Currently in Plan mode, this tool cannot be used."):new Error("Currently in Ask mode, this tool cannot be used.")}function sP(t,e,n){return e||!t?!1:t==="plan"?!$E(n):t==="ask"?!O1(n):!1}async function*TU(t,e,n,o,r,i,s,a){!e.some(u=>u.function.name==="ask_question")&&e.length>0&&e.every(u=>O1(u.function.name))?yield*_U(t,e,n,o,r,i,s,a):yield*wU(t,e,n,o,r,i,s,a),await t.notifyAllCompleteIfTerminal()}async function*wU(t,e,n,o,r,i,s,a){for(let l of e){if(n.aborted)break;let c=aP(l,r,i);if(V1(c)){let u=rP(c);yield{kind:"toolCallScheduled",toolCall:l,scheduledCall:u},yield{kind:"toolCallCompleted",toolCall:l,scheduledCall:u};continue}try{let u=await t.buildCall(c,n);if(yield{kind:"toolCallScheduled",toolCall:l,scheduledCall:u},u.status!=="cancelled")if(sP(s?.interactionMode,s?.isSubWork,c.name)&&s?.interactionMode){let p=iP(s.interactionMode);yield{kind:"toolCallCompleted",toolCall:l,scheduledCall:{request:c,status:"error",error:p}}}else await t.executeScheduledCall(u,n,p=>{a?.({toolCallId:l.id,toolName:l.function.name,output:p})}),yield{kind:"toolCallCompleted",toolCall:l,scheduledCall:u};else yield{kind:"toolCallCompleted",toolCall:l,scheduledCall:u}}catch(u){if(!wp()){let p=(u instanceof Error?u:new Error(String(u))).message;console.error(`[ReAct] Tool ${l.function.name} scheduling failed:`,p),console.log("[Panda][ReAct][ToolDebug] scheduling failed (sequential)",{toolName:l.function.name,toolCallId:l.id,argumentsPreview:l.function.arguments?.length>800?`${l.function.arguments.slice(0,800)}\u2026`:l.function.arguments,convertedCallArgs:"args"in c?c.args:void 0,errorMessage:p})}let d=u instanceof Error?u:new Error(String(u));if(yield{kind:"toolCallCompleted",toolCall:l,scheduledCall:{request:c,status:"error",error:d}},!o)throw u}}}async function*_U(t,e,n,o,r,i,s,a){let l=[];for(let u of e){if(n.aborted)break;let d=aP(u,r,i);if(V1(d)){let p=rP(d);yield{kind:"toolCallScheduled",toolCall:u,scheduledCall:p},l.push({toolCall:u,scheduledCall:p});continue}try{let p=await t.buildCall(d,n);if(yield{kind:"toolCallScheduled",toolCall:u,scheduledCall:p},sP(s?.interactionMode,s?.isSubWork,d.name)&&s?.interactionMode){let m=iP(s.interactionMode);l.push({toolCall:u,scheduledCall:{request:d,status:"error",error:m}})}else l.push({toolCall:u,scheduledCall:p})}catch(p){if(!wp()){let m=(p instanceof Error?p:new Error(String(p))).message;console.error(`[ReAct] Tool ${u.function.name} scheduling failed:`,m),console.log("[Panda][ReAct][ToolDebug] scheduling failed (parallel read-only batch)",{toolName:u.function.name,toolCallId:u.id,argumentsPreview:u.function.arguments?.length>800?`${u.function.arguments.slice(0,800)}\u2026`:u.function.arguments,convertedCallArgs:"args"in d?d.args:void 0,errorMessage:m})}let f=p instanceof Error?p:new Error(String(p));if(yield{kind:"toolCallCompleted",toolCall:u,scheduledCall:{request:d,status:"error",error:f}},!o)throw p}}if(l.length===0)return;if(l.some(u=>u.scheduledCall.status==="awaiting_approval"))for(let{toolCall:u,scheduledCall:d}of l){if(n.aborted)break;d.status!=="cancelled"&&d.status!=="error"&&await t.executeScheduledCall(d,n,p=>{a?.({toolCallId:u.id,toolName:u.function.name,output:p})}),yield{kind:"toolCallCompleted",toolCall:u,scheduledCall:d}}else{let u=l.filter(d=>d.scheduledCall.status==="scheduled");await Promise.allSettled(u.map(d=>t.executeScheduledCall(d.scheduledCall,n,p=>{a?.({toolCallId:d.toolCall.id,toolName:d.toolCall.function.name,output:p})})));for(let{toolCall:d,scheduledCall:p}of l)yield{kind:"toolCallCompleted",toolCall:d,scheduledCall:p}}if(!o&&l.some(u=>u.scheduledCall.status==="error"))throw l.find(d=>d.scheduledCall.status==="error")?.scheduledCall.error??new Error("Tool execution failed")}function aP(t,e,n){let o=kU(t);if(V1(o))return o;if(o.name.startsWith("agent_")&&o.args){let r=o.args;r.context||(r.context={});let i=r.context;i.extra||(i.extra={});let s=i.extra;s.conversationId=e,n&&(s.conversation=n.conversation,s.turn=n.turn)}return o}function SU(t){let n=t.trim().match(/"command"\s*:\s*"((?:[^"\\]|\\.)*)"/);return n?{command:n[1].replace(/\\(.)/g,(r,i)=>i)}:null}function kU(t){let e={},n=t.function.arguments||"{}";try{let o=JSON.parse(n);if(typeof o=="string")try{e=JSON.parse(o)}catch{e={instruction:o}}else typeof o=="object"&&o!==null?e=o:e={}}catch(o){if(t.function.name==="run_terminal_cmd"){let r=SU(n);if(r)e=r;else{let i=H1(n);if(i)ps("convertToolCall:lenient-parse",{tool:t.function.name,reason:"concatenated-json-objects",rawLength:n.length}),e=i;else return tP(t.function.name,o,n)}}else{let r=H1(n);if(r)ps("convertToolCall:lenient-parse",{tool:t.function.name,reason:"concatenated-json-objects",rawLength:n.length}),e=r;else return tP(t.function.name,o,n)}}return ps("convertToolCall:after-parse",{tool:t.function.name,toolCallId:t.id,rawLength:n.length,rawPreview:n.length>800?`${n.slice(0,800)}\u2026`:n,keys:Object.keys(e)}),{name:t.function.name,args:{...e,...t.function.name==="ask_question"?{tool_call_id:t.id}:{}}}}function tP(t,e,n){let o=e instanceof Error?e.message:String(e),r=hU+" "+o+yU;return r=$1(r,n,e),{name:t,args:{__parseError:!0,__parseErrorMessage:r}}}function nP(t,e){let n;switch(e.status){case"success":n=e.result?CU(e.result):"Tool executed successfully";break;case"error":n=`Tool execution failed: ${e.error?.message||"Unknown error"}`;break;case"cancelled":n="Tool execution was cancelled";break;default:n=`Tool execution status: ${e.status}`}return{role:"tool",content:n,toolCallId:t.id}}function lP(t){if(t.status==="success"&&t.result)return{content:IU(t.result)||"\u2705",isLast:!0,toolResult:{result:t.result,durationMs:t.durationMs}};if(t.status==="error"){let e;if(t.result?.error){let n=t.result.error;e=new Error(n.message||"Unknown error"),e.name="ToolError"}else t.error?e=t.error instanceof Error?t.error:new Error(String(t.error)):e=new Error(`Tool execution failed with status: ${t.status}`);return{content:e.message,isLast:!0,toolError:e}}return t.result?{content:"\u2705",isLast:!0,toolResult:{result:t.result,durationMs:t.durationMs}}:{content:"\u2705",isLast:!0}}function IU(t){if(t==null)return"\u2705";if(typeof t=="string")return t;if(typeof t=="object"){if("llmContent"in t&&typeof t.llmContent=="string")return t.llmContent;try{return JSON.stringify(t,null,2)}catch{return String(t)}}return String(t)}function CU(t){if(t.error)return`Error: ${t.error.message}`;let e=t.llmContent;return typeof e=="string"?e:Array.isArray(e)?e.map(n=>typeof n=="string"?n:n.text?n.text:"").join(""):JSON.stringify(e)}function EU(t){for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.role==="assistant")return n}return{role:"assistant",content:""}}function PU(t){return us().filter(e=>!e.isMainRole).filter(e=>e.enabledInModes.includes(t)).map(e=>Gn(e.role))}function cP(t,e,n,o){let r=t;if(o.length>0&&(r=r.filter(s=>o.includes(s.name))),n)return r.filter(s=>!s.name.startsWith("agent_"));let i=PU(e);return r=r.filter(s=>s.name.startsWith("agent_")?i.includes(s.name):!0),e!=="plan"&&(r=r.filter(s=>s.name!=="create_plan")),(e==="agent"||e==="ask"||e==="plan"||e==="office")&&(r=r.filter(s=>s.name!=="browser")),r}function uP(t){if(t.role!=="assistant")return!1;let e=typeof t.content=="string"?t.content.trim().length>0:Array.isArray(t.content)&&t.content.length>0,n=t.toolCalls&&t.toolCalls.length>0;return!e&&!n}function Mn(t){let e=t.length;if(e===0)return;let n=e-1;for(;n>=0&&t[n].role==="tool";)n--;if(n>=0){let u=t[n];u.role==="assistant"&&(!u.toolCalls||u.toolCalls.length===0)&&(t.length=n+1)}if(t.length===0)return;let o=!1;for(let u=0;u<t.length;u++)if(t[u].role==="assistant"&&t[u].toolCalls?.length){o=!0;break}if(!o){let u=0;for(let d=0;d<t.length;d++){let p=t[d];p.role!=="tool"&&!uP(p)&&(t[u]=p,u++)}t.length=u;return}let r=new Map,i=new Map,s=new Set;for(let u=0;u<t.length;u++){let d=t[u];if(d.role==="assistant"&&d.toolCalls&&d.toolCalls.length>0){let p=[];for(let f of d.toolCalls)typeof f.id=="string"&&f.id.trim()!==""&&p.push(f.id);p.length>0&&r.set(u,p)}else if(d.role==="tool"&&d.toolResults&&d.toolResults.length>0){let p=[];for(let f of d.toolResults)typeof f.toolCallId=="string"&&f.toolCallId.trim()!==""&&p.push(f.toolCallId);p.length>0?i.set(u,p):s.add(u)}}let a=new Set,l=new Set;i.forEach(u=>{u.forEach(d=>l.add(d))}),r.forEach((u,d)=>{let p=[];for(let f of u)l.has(f)&&(a.add(f),p.push(f));p.length===0?delete t[d].toolCalls:p.length<u.length&&(t[d].toolCalls=p.map(f=>t[d].toolCalls.find(m=>m.id===f)))}),i.forEach((u,d)=>{u.some(f=>a.has(f))||s.add(d)});let c=0;for(let u=0;u<t.length;u++){let d=t[u];s.has(u)||uP(d)||(t[c]=d,c++)}t.length=c}function dP(t){let{displayPath:e,mime:n,startLine:o,endLine:r,body:i}=t,s=o!==void 0&&r!==void 0?` (lines ${o}-${r})`:"",a=n?` [${n}]`:"";return`--- File: ${e}${s}${a} ---
1566
1566
  ${i}
1567
1567
  --- End file ---`}function RU(t){if(typeof t=="string")return t;let e=[];for(let n of t)n.type==="text"&&n.text!==void 0?e.push({type:"text",text:n.text}):n.type==="image"&&n.imageUrl!==void 0?e.push({type:"imageUrl",imageUrl:{url:n.imageUrl}}):n.type==="code"&&n.text!==void 0?e.push({type:"text",text:n.text}):n.type==="fileContext"&&n.displayPath&&n.body!==void 0?e.push({type:"text",text:dP({displayPath:n.displayPath,mime:n.mime,startLine:n.startLine,endLine:n.endLine,body:n.body})}):n.type==="pandaSkill"&&n.skillName&&e.push({type:"text",text:`<Panda Skill>
@@ -1630,7 +1630,7 @@ ${u.join(`
1630
1630
 
1631
1631
  `),{leaks:o,details:s}}};function UB(t){Pa=t}if(FB){let t="__is_disposable_tracked__";UB(new class{trackDisposable(e){let n=new Error("Potentially leaked disposable").stack;setTimeout(()=>{e[t]||console.log(n)},3e3)}setParent(e,n){if(e&&e!==Tt.None)try{e[t]=!0}catch{}}markAsDisposed(e){if(e&&e!==Tt.None)try{e[t]=!0}catch{}}markAsSingleton(e){}})}function xb(t){return Pa?.trackDisposable(t),t}function Tb(t){Pa?.markAsDisposed(t)}function vb(t,e){Pa?.setParent(t,e)}function BB(t,e){if(Pa)for(let n of t)Pa.setParent(n,e)}function xR(t){if(yb.is(t)){let e=[];for(let n of t)if(n)try{n.dispose()}catch(o){e.push(o)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(t)?[]:t}else if(t)return t.dispose(),t}function TR(...t){let e=bs(()=>xR(t));return BB(t,e),e}var bb=class{constructor(e){this._isDisposed=!1,this._fn=e,xb(this)}dispose(){if(!this._isDisposed){if(!this._fn)throw new Error("Unbound disposable context: Need to use an arrow function to preserve the value of this");this._isDisposed=!0,Tb(this),this._fn()}}};function bs(t){return new bb(t)}var li=class t{constructor(){this._toDispose=new Set;this._isDisposed=!1;xb(this)}static{this.DISABLE_DISPOSED_WARNING=!1}dispose(){this._isDisposed||(Tb(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{xR(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e||e===Tt.None)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return vb(e,this),this._isDisposed?t.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}delete(e){if(e){if(e===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(e),e.dispose()}}deleteAndLeak(e){e&&this._toDispose.has(e)&&(this._toDispose.delete(e),vb(e,null))}assertNotDisposed(){this._isDisposed&&br(new Mc("Object disposed"))}},Tt=class{constructor(){this._store=new li;xb(this),vb(this._store,this)}static{this.None=Object.freeze({dispose(){}})}dispose(){Tb(this),this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};function wR(t,e){return new wb(t,e)}var wb=class{constructor(e,n){this.reducer=e;this.options=n;this.state={flowing:!1,ended:!1,destroyed:!1};this.buffer={data:[],error:[]};this.listeners={data:[],error:[],end:[]};this.pendingWritePromises=[]}pause(){this.state.destroyed||(this.state.flowing=!1)}resume(){this.state.destroyed||this.state.flowing||(this.state.flowing=!0,this.flowData(),this.flowErrors(),this.flowEnd())}write(e){if(!this.state.destroyed){if(this.state.flowing)this.emitData(e);else if(this.buffer.data.push(e),typeof this.options?.highWaterMark=="number"&&this.buffer.data.length>this.options.highWaterMark)return new Promise(n=>this.pendingWritePromises.push(n))}}error(e){this.state.destroyed||(this.state.flowing?this.emitError(e):this.buffer.error.push(e))}end(e){this.state.destroyed||(typeof e<"u"&&this.write(e),this.state.flowing?(this.emitEnd(),this.destroy()):this.state.ended=!0)}emitData(e){this.listeners.data.slice(0).forEach(n=>n(e))}emitError(e){this.listeners.error.length===0?br(e):this.listeners.error.slice(0).forEach(n=>n(e))}emitEnd(){this.listeners.end.slice(0).forEach(e=>e())}on(e,n){if(!this.state.destroyed)switch(e){case"data":this.listeners.data.push(n),this.resume();break;case"end":this.listeners.end.push(n),this.state.flowing&&this.flowEnd()&&this.destroy();break;case"error":this.listeners.error.push(n),this.state.flowing&&this.flowErrors();break}}removeListener(e,n){if(this.state.destroyed)return;let o;switch(e){case"data":o=this.listeners.data;break;case"end":o=this.listeners.end;break;case"error":o=this.listeners.error;break}if(o){let r=o.indexOf(n);r>=0&&o.splice(r,1)}}flowData(){if(this.buffer.data.length===0)return;if(typeof this.reducer=="function"){let n=this.reducer(this.buffer.data);this.emitData(n)}else for(let n of this.buffer.data)this.emitData(n);this.buffer.data.length=0;let e=[...this.pendingWritePromises];this.pendingWritePromises.length=0,e.forEach(n=>n())}flowErrors(){if(this.listeners.error.length>0){for(let e of this.buffer.error)this.emitError(e);this.buffer.error.length=0}}flowEnd(){return this.state.ended?(this.emitEnd(),this.listeners.end.length>0):!1}destroy(){this.state.destroyed||(this.state.destroyed=!0,this.state.ended=!0,this.buffer.data.length=0,this.buffer.error.length=0,this.listeners.data.length=0,this.listeners.error.length=0,this.listeners.end.length=0,this.pendingWritePromises.length=0)}};function _R(t,e){return new Promise((n,o)=>{let r=[];jB(t,{onData:i=>{e&&r.push(i)},onError:i=>{e?o(i):n(void 0)},onEnd:()=>{n(e?e(r):void 0)}})})}function jB(t,e,n){t.on("error",o=>{n?.isCancellationRequested||e.onError(o)}),t.on("end",()=>{n?.isCancellationRequested||e.onEnd()}),t.on("data",o=>{n?.isCancellationRequested||e.onData(o)})}function SR(t,e){let n=wR(e);return n.end(t),n}var Oc=typeof Buffer<"u",WB=new vs(()=>new Uint8Array(256)),_b,Sb,ci=class t{static alloc(e){return Oc?new t(Buffer.allocUnsafe(e)):new t(new Uint8Array(e))}static wrap(e){return Oc&&!Buffer.isBuffer(e)&&(e=Buffer.from(e.buffer,e.byteOffset,e.byteLength)),new t(e)}static fromString(e,n){return!(n?.dontUseNodeBuffer||!1)&&Oc?new t(Buffer.from(e)):(_b||(_b=new TextEncoder),new t(_b.encode(e)))}static fromByteArray(e){let n=t.alloc(e.length);for(let o=0,r=e.length;o<r;o++)n.buffer[o]=e[o];return n}static concat(e,n){if(typeof n>"u"){n=0;for(let i=0,s=e.length;i<s;i++)n+=e[i].byteLength}let o=t.alloc(n),r=0;for(let i=0,s=e.length;i<s;i++){let a=e[i];o.set(a,r),r+=a.byteLength}return o}static isNativeBuffer(e){return Oc&&Buffer.isBuffer(e)}constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}clone(){let e=t.alloc(this.byteLength);return e.set(this),e}toString(){return Oc?this.buffer.toString():(Sb||(Sb=new TextDecoder),Sb.decode(this.buffer))}slice(e,n){return new t(this.buffer.subarray(e,n))}set(e,n){if(e instanceof t)this.buffer.set(e.buffer,n);else if(e instanceof Uint8Array)this.buffer.set(e,n);else if(e instanceof ArrayBuffer)this.buffer.set(new Uint8Array(e),n);else if(ArrayBuffer.isView(e))this.buffer.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n);else throw new Error("Unknown argument 'array'")}readUInt32BE(e){return HB(this.buffer,e)}writeUInt32BE(e,n){VB(this.buffer,e,n)}readUInt32LE(e){return qB(this.buffer,e)}writeUInt32LE(e,n){GB(this.buffer,e,n)}readUInt8(e){return ZB(this.buffer,e)}writeUInt8(e,n){JB(this.buffer,e,n)}indexOf(e,n=0){return KB(this.buffer,e instanceof t?e.buffer:e,n)}equals(e){return this===e?!0:this.byteLength!==e.byteLength?!1:this.buffer.every((n,o)=>n===e.buffer[o])}};function KB(t,e,n=0){let o=e.byteLength,r=t.byteLength;if(o===0)return 0;if(o===1)return t.indexOf(e[0]);if(o>r-n)return-1;let i=WB.value;i.fill(e.length);for(let c=0;c<e.length;c++)i[e[c]]=e.length-c-1;let s=n+e.length-1,a=s,l=-1;for(;s<r;)if(t[s]===e[a]){if(a===0){l=s;break}s--,a--}else s+=Math.max(e.length-a,i[t[s]]),a=e.length-1;return l}function HB(t,e){return t[e]*2**24+t[e+1]*2**16+t[e+2]*2**8+t[e+3]}function VB(t,e,n){t[n+3]=e,e=e>>>8,t[n+2]=e,e=e>>>8,t[n+1]=e,e=e>>>8,t[n]=e}function qB(t,e){return t[e+0]<<0>>>0|t[e+1]<<8>>>0|t[e+2]<<16>>>0|t[e+3]<<24>>>0}function GB(t,e,n){t[n+0]=e&255,e=e>>>8,t[n+1]=e&255,e=e>>>8,t[n+2]=e&255,e=e>>>8,t[n+3]=e&255}function ZB(t,e){return t[e]}function JB(t,e,n){t[n]=e}function ef(t){return _R(t,e=>ci.concat(e))}function IR(t){return SR(t,e=>ci.concat(e))}var kR="0123456789abcdef";function CR({buffer:t}){let e="";for(let n=0;n<t.length;n++){let o=t[n];e+=kR[o>>>4],e+=kR[o&15]}return e}var ER=class t{static{this.Undefined=new t(void 0)}constructor(e){this.element=e,this.next=t.Undefined,this.prev=t.Undefined}};var YB=globalThis.performance.now.bind(globalThis.performance),tf=class t{static create(e){return new t(e)}constructor(e){this._now=e===!1?Date.now:YB,this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}};var PR=!1,QB=!1,Rb;(j=>{j.None=()=>Tt.None;function e(_){if(QB){let{onDidAddListener:$}=_,N=Lc.create(),K=0;_.onDidAddListener=()=>{++K===2&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),N.print()),$?.()}}}function n(_,$){return f(_,()=>{},0,void 0,!0,void 0,$)}j.defer=n;function o(_){return($,N=null,K)=>{let E=!1,V;return V=_(ae=>{if(!E)return V?V.dispose():E=!0,$.call(N,ae)},null,K),E&&V.dispose(),V}}j.once=o;function r(_,$){return j.once(j.filter(_,$))}j.onceIf=r;function i(_,$,N){return d((K,E=null,V)=>_(ae=>K.call(E,$(ae)),null,V),N)}j.map=i;function s(_,$,N){return d((K,E=null,V)=>_(ae=>{$(ae),K.call(E,ae)},null,V),N)}j.forEach=s;function a(_,$,N){return d((K,E=null,V)=>_(ae=>$(ae)&&K.call(E,ae),null,V),N)}j.filter=a;function l(_){return _}j.signal=l;function c(..._){return($,N=null,K)=>{let E=TR(..._.map(V=>V(ae=>$.call(N,ae))));return p(E,K)}}j.any=c;function u(_,$,N,K){let E=N;return i(_,V=>(E=$(E,V),E),K)}j.reduce=u;function d(_,$){let N,K={onWillAddFirstListener(){N=_(E.fire,E)},onDidRemoveLastListener(){N?.dispose()}};$||e(K);let E=new Ve(K);return $?.add(E),E.event}function p(_,$){return $ instanceof Array?$.push(_):$&&$.add(_),_}function f(_,$,N=100,K=!1,E=!1,V,ae){let Te,me,ne,Pe=0,de,H={leakWarningThreshold:V,onWillAddFirstListener(){Te=_(ee=>{Pe++,me=$(me,ee),K&&!ne&&(te.fire(me),me=void 0),de=()=>{let ue=me;me=void 0,ne=void 0,(!K||Pe>1)&&te.fire(ue),Pe=0},typeof N=="number"?(ne&&clearTimeout(ne),ne=setTimeout(de,N)):ne===void 0&&(ne=null,queueMicrotask(de))})},onWillRemoveListener(){E&&Pe>0&&de?.()},onDidRemoveLastListener(){de=void 0,Te.dispose()}};ae||e(H);let te=new Ve(H);return ae?.add(te),te.event}j.debounce=f;function m(_,$=0,N){return j.debounce(_,(K,E)=>K?(K.push(E),K):[E],$,void 0,!0,void 0,N)}j.accumulate=m;function g(_,$=(K,E)=>K===E,N){let K=!0,E;return a(_,V=>{let ae=K||!$(V,E);return K=!1,E=V,ae},N)}j.latch=g;function h(_,$,N){return[j.filter(_,$,N),j.filter(_,K=>!$(K),N)]}j.split=h;function y(_,$=!1,N=[],K){let E=N.slice(),V=_(me=>{E?E.push(me):Te.fire(me)});K&&K.add(V);let ae=()=>{E?.forEach(me=>Te.fire(me)),E=null},Te=new Ve({onWillAddFirstListener(){V||(V=_(me=>Te.fire(me)),K&&K.add(V))},onDidAddFirstListener(){E&&($?setTimeout(ae):ae())},onDidRemoveLastListener(){V&&V.dispose(),V=null}});return K&&K.add(Te),Te.event}j.buffer=y;function v(_,$){return(K,E,V)=>{let ae=$(new R);return _(function(Te){let me=ae.evaluate(Te);me!==b&&K.call(E,me)},void 0,V)}}j.chain=v;let b=Symbol("HaltChainable");class R{constructor(){this.steps=[]}map($){return this.steps.push($),this}forEach($){return this.steps.push(N=>($(N),N)),this}filter($){return this.steps.push(N=>$(N)?N:b),this}reduce($,N){let K=N;return this.steps.push(E=>(K=$(K,E),K)),this}latch($=(N,K)=>N===K){let N=!0,K;return this.steps.push(E=>{let V=N||!$(E,K);return N=!1,K=E,V?E:b}),this}evaluate($){for(let N of this.steps)if($=N($),$===b)break;return $}}function M(_,$,N=K=>K){let K=(...Te)=>ae.fire(N(...Te)),E=()=>_.on($,K),V=()=>_.removeListener($,K),ae=new Ve({onWillAddFirstListener:E,onDidRemoveLastListener:V});return ae.event}j.fromNodeEventEmitter=M;function B(_,$,N=K=>K){let K=(...Te)=>ae.fire(N(...Te)),E=()=>_.addEventListener($,K),V=()=>_.removeEventListener($,K),ae=new Ve({onWillAddFirstListener:E,onDidRemoveLastListener:V});return ae.event}j.fromDOMEventEmitter=B;function S(_,$){let N,K=new Promise((E,V)=>{let ae=o(_)(E,null,$);N=()=>ae.dispose()});return K.cancel=N,K}j.toPromise=S;function x(_,$){return _(N=>$.fire(N))}j.forward=x;function T(_,$,N){return $(N),_(K=>$(K))}j.runAndSubscribe=T;class W{constructor($,N){this._observable=$;this._counter=0;this._hasChanged=!1;let K={onWillAddFirstListener:()=>{$.addObserver(this),this._observable.reportChanges()},onDidRemoveLastListener:()=>{$.removeObserver(this)}};N||e(K),this.emitter=new Ve(K),N&&N.add(this.emitter)}beginUpdate($){this._counter++}handlePossibleChange($){}handleChange($,N){this._hasChanged=!0}endUpdate($){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function A(_,$){return new W(_,$).emitter.event}j.fromObservable=A;function U(_){return($,N,K)=>{let E=0,V=!1,ae={beginUpdate(){E++},endUpdate(){E--,E===0&&(_.reportChanges(),V&&(V=!1,$.call(N)))},handlePossibleChange(){},handleChange(){V=!0}};_.addObserver(ae),_.reportChanges();let Te={dispose(){_.removeObserver(ae)}};return K instanceof li?K.add(Te):Array.isArray(K)&&K.push(Te),Te}}j.fromObservableLight=U})(Rb||={});var kb=class t{constructor(e){this.listenerCount=0;this.invocationCount=0;this.elapsedOverall=0;this.durations=[];this.name=`${e}_${t._idPool++}`,t.all.add(this)}static{this.all=new Set}static{this._idPool=0}start(e){this._stopWatch=new tf,this.listenerCount=e}stop(){if(this._stopWatch){let e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}},RR=-1;var Ib=class t{constructor(e,n,o=(t._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e;this.threshold=n;this.name=o;this._warnCountdown=0}static{this._idPool=1}dispose(){this._stacks?.clear()}check(e,n){let o=this.threshold;if(o<=0||n<o)return;this._stacks||(this._stacks=new Map);let r=this._stacks.get(e.value)||0;if(this._stacks.set(e.value,r+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=o*.5;let[i,s]=this.getMostFrequentStack(),a=`[${this.name}] potential listener LEAK detected, having ${n} listeners already. MOST frequent listener (${s}):`;console.warn(a),console.warn(i);let l=new Cb(a,i);this._errorHandler(l)}return()=>{let i=this._stacks.get(e.value)||0;this._stacks.set(e.value,i-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,n=0;for(let[o,r]of this._stacks)(!e||n<r)&&(e=[o,r],n=r);return e}},Lc=class t{constructor(e){this.value=e}static create(){let e=new Error;return new t(e.stack??"")}print(){console.warn(this.value.split(`
1632
1632
  `).slice(2).join(`
1633
- `))}},Cb=class extends Error{constructor(e,n){super(e),this.name="ListenerLeakError",this.stack=n}},Eb=class extends Error{constructor(e,n){super(e),this.name="ListenerRefusalError",this.stack=n}},XB=0,Ra=class{constructor(e){this.value=e;this.id=XB++}},ej=2,tj=(t,e)=>{if(t instanceof Ra)e(t);else for(let n=0;n<t.length;n++){let o=t[n];o&&e(o)}},Ve=class{constructor(e){this._size=0;this._options=e,this._leakageMon=RR>0||this._options?.leakWarningThreshold?new Ib(e?.onListenerError??br,this._options?.leakWarningThreshold??RR):void 0,this._perfMon=this._options?._profName?new kb(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){if(!this._disposed){if(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners){if(PR){let e=this._listeners;queueMicrotask(()=>{tj(e,n=>n.stack?.print())})}this._listeners=void 0,this._size=0}this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose()}}get event(){return this._event??=(e,n,o)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let l=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(l);let c=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],u=new Eb(`${l}. HINT: Stack shows most frequent listener (${c[1]}-times)`,c[0]);return(this._options?.onListenerError||br)(u),Tt.None}if(this._disposed)return Tt.None;n&&(e=e.bind(n));let r=new Ra(e),i,s;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=Lc.create(),i=this._leakageMon.check(r.stack,this._size+1)),PR&&(r.stack=s??Lc.create()),this._listeners?this._listeners instanceof Ra?(this._deliveryQueue??=new Pb,this._listeners=[this._listeners,r]):this._listeners.push(r):(this._options?.onWillAddFirstListener?.(this),this._listeners=r,this._options?.onDidAddFirstListener?.(this)),this._options?.onDidAddListener?.(this),this._size++;let a=bs(()=>{i?.(),this._removeListener(r)});return o instanceof li?o.add(a):Array.isArray(o)&&o.push(a),a},this._event}_removeListener(e){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1){this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),this._size=0;return}let n=this._listeners,o=n.indexOf(e);if(o===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,n[o]=void 0;let r=this._deliveryQueue.current===this;if(this._size*ej<=n.length){let i=0;for(let s=0;s<n.length;s++)n[s]?n[i++]=n[s]:r&&i<this._deliveryQueue.end&&(this._deliveryQueue.end--,i<this._deliveryQueue.i&&this._deliveryQueue.i--);n.length=i}}_deliver(e,n){if(!e)return;let o=this._options?.onListenerError||br;if(!o){e.value(n);return}try{e.value(n)}catch(r){o(r)}}_deliverQueue(e){let n=e.current._listeners;for(;e.i<e.end;)this._deliver(n[e.i++],e.value);e.reset()}fire(e){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof Ra)this._deliver(this._listeners,e);else{let n=this._deliveryQueue;n.enqueue(this,e,this._listeners.length),this._deliverQueue(n)}this._perfMon?.stop()}hasListeners(){return this._size>0}};var Pb=class{constructor(){this.i=-1;this.end=0}enqueue(e,n,o){this.i=0,this.end=o,this.current=e,this.value=n}reset(){this.i=this.end,this.current=void 0,this.value=void 0}};var AR=Object.freeze(function(t,e){let n=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(n)}}}),nf;(o=>{function t(r){return r===o.None||r===o.Cancelled||r instanceof Ab?!0:!r||typeof r!="object"?!1:typeof r.isCancellationRequested=="boolean"&&typeof r.onCancellationRequested=="function"}o.isCancellationToken=t,o.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Rb.None}),o.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:AR})})(nf||={});var Ab=class{constructor(){this._isCancelled=!1;this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?AR:(this._emitter||(this._emitter=new Ve),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}};function nj(t){return t}var rf=class{constructor(e,n){this.lastCache=void 0;this.lastArgKey=void 0;typeof e=="function"?(this._fn=e,this._computeKey=nj):(this._fn=n,this._computeKey=e.getCacheKey)}get(e){let n=this._computeKey(e);return this.lastArgKey!==n&&(this.lastArgKey=n,this.lastCache=this._fn(e)),this.lastCache}};function NR(t){return!t||typeof t!="string"?!0:t.trim().length===0}function $R(t,e){return t<e?-1:t>e?1:0}function rj(t,e,n=0,o=t.length,r=0,i=e.length){for(;n<o&&r<i;n++,r++){let l=t.charCodeAt(n),c=e.charCodeAt(r);if(l<c)return-1;if(l>c)return 1}let s=o-n,a=i-r;return s<a?-1:s>a?1:0}function FR(t,e,n=0,o=t.length,r=0,i=e.length){for(;n<o&&r<i;n++,r++){let l=t.charCodeAt(n),c=e.charCodeAt(r);if(l===c)continue;if(l>=128||c>=128)return rj(t.toLowerCase(),e.toLowerCase(),n,o,r,i);MR(l)&&(l-=32),MR(c)&&(c-=32);let u=l-c;if(u!==0)return u}let s=o-n,a=i-r;return s<a?-1:s>a?1:0}function MR(t){return t>=97&&t<=122}function Aa(t,e){return t.length===e.length&&FR(t,e)===0}function Mb(t,e){let n=e.length;return n<=t.length&&FR(t,e,0,n)===0}function UR(t){return 55296<=t&&t<=56319}function Db(t){return 56320<=t&&t<=57343}function BR(t,e){return(t-55296<<10)+(e-56320)+65536}var oj=/(?:\x1b\[|\x9b)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~]/,ij=/(?:\x1b\]|\x9d).*?(?:\x1b\\|\x07|\x9c)/,sj=/\x1b(?:[ #%\(\)\*\+\-\.\/]?[a-zA-Z0-9\|}~@])/,wfe=new RegExp("(?:"+[oj.source,ij.source,sj.source].join("|")+")","g");var _fe=String.fromCharCode(65279);var DR=class t{static{this._INSTANCE=null}static getInstance(){return t._INSTANCE||(t._INSTANCE=new t),t._INSTANCE}constructor(){this._data=aj()}getGraphemeBreakType(e){if(e<32)return e===10?3:e===13?2:4;if(e<127)return 0;let n=this._data,o=n.length/3,r=1;for(;r<=o;)if(e<n[3*r])r=2*r;else if(e>n[3*r+1])r=2*r+1;else return n[3*r+2];return 0}};function aj(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}var OR=class t{constructor(e){this.confusableDictionary=e}static{this.ambiguousCharacterData=new vs(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,1523,96,8242,96,1370,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,118002,50,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,118003,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,118004,52,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,118005,53,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,118006,54,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,118007,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,118008,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,118009,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,117974,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,117975,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71913,67,71922,67,65315,67,8557,67,8450,67,8493,67,117976,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,117977,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,117978,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,117979,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,117980,71,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,117981,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,117983,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,117984,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,118001,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,117982,108,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,117985,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,117986,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,117987,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,118000,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,117988,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,117989,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,117990,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,117991,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,117992,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,117993,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,117994,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,117995,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71910,87,71919,87,117996,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,117997,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,117998,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,71909,90,66293,90,65338,90,8484,90,8488,90,117999,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65283,35,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"cs":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"es":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"fr":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"it":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ja":[8211,45,8218,44,65281,33,8216,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65292,44,65297,49,65307,59],"ko":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pt-BR":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ru":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"zh-hans":[160,32,65374,126,8218,44,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65297,49],"zh-hant":[8211,45,65374,126,8218,44,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89]}'))}static{this.cache=new rf({getCacheKey:JSON.stringify},e=>{function n(u){let d=new Map;for(let p=0;p<u.length;p+=2)d.set(u[p],u[p+1]);return d}function o(u,d){let p=new Map(u);for(let[f,m]of d)p.set(f,m);return p}function r(u,d){if(!u)return d;let p=new Map;for(let[f,m]of u)d.has(f)&&p.set(f,m);return p}let i=this.ambiguousCharacterData.value,s=e.filter(u=>!u.startsWith("_")&&Object.hasOwn(i,u));s.length===0&&(s=["_default"]);let a;for(let u of s){let d=n(i[u]);a=r(a,d)}let l=n(i._common),c=o(l,a);return new t(c)})}static getInstance(e){return t.cache.get(Array.from(e))}static{this._locales=new vs(()=>Object.keys(t.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")))}static getLocales(){return t._locales.value}isAmbiguous(e){return this.confusableDictionary.has(e)}containsAmbiguousCharacter(e){for(let n=0;n<e.length;n++){let o=e.codePointAt(n);if(typeof o=="number"&&this.isAmbiguous(o))return!0}return!1}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}},LR=class t{static getRawData(){return JSON.parse('{"_common":[11,12,13,127,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999],"cs":[173,8203,12288],"de":[173,8203,12288],"es":[8203,12288],"fr":[173,8203,12288],"it":[160,173,12288],"ja":[173],"ko":[173,12288],"pl":[173,8203,12288],"pt-BR":[173,8203,12288],"qps-ploc":[160,173,8203,12288],"ru":[173,12288],"tr":[160,173,8203,12288],"zh-hans":[160,173,8203,12288],"zh-hant":[173,12288]}')}static{this._data=void 0}static getData(){return this._data||(this._data=new Set([...Object.values(t.getRawData())].flat())),this._data}static isInvisibleCharacter(e){return t.getData().has(e)}static containsInvisibleCharacter(e){for(let n=0;n<e.length;n++){let o=e.codePointAt(n);if(typeof o=="number"&&(t.isInvisibleCharacter(o)||o===32))return!0}return!1}static get codePoints(){return t.getData()}};function Ob(t,e,n=32){let o=n-e,r=~((1<<o)-1);return(t<<e|(r&t)>>>o)>>>0}function $c(t,e=32){return t instanceof ArrayBuffer?CR(ci.wrap(new Uint8Array(t))):(t>>>0).toString(16).padStart(e/4,"0")}var of=class t{constructor(){this._h0=1732584193;this._h1=4023233417;this._h2=2562383102;this._h3=271733878;this._h4=3285377520;this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}static{this._bigBlock32=new DataView(new ArrayBuffer(320))}update(e){let n=e.length;if(n===0)return;let o=this._buff,r=this._buffLen,i=this._leftoverHighSurrogate,s,a;for(i!==0?(s=i,a=-1,i=0):(s=e.charCodeAt(0),a=0);;){let l=s;if(UR(s))if(a+1<n){let c=e.charCodeAt(a+1);Db(c)?(a++,l=BR(s,c)):l=65533}else{i=s;break}else Db(s)&&(l=65533);if(r=this._push(o,r,l),a++,a<n)s=e.charCodeAt(a);else break}this._buffLen=r,this._leftoverHighSurrogate=i}_push(e,n,o){return o<128?e[n++]=o:o<2048?(e[n++]=192|(o&1984)>>>6,e[n++]=128|(o&63)>>>0):o<65536?(e[n++]=224|(o&61440)>>>12,e[n++]=128|(o&4032)>>>6,e[n++]=128|(o&63)>>>0):(e[n++]=240|(o&1835008)>>>18,e[n++]=128|(o&258048)>>>12,e[n++]=128|(o&4032)>>>6,e[n++]=128|(o&63)>>>0),n>=64&&(this._step(),n-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),n}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),$c(this._h0)+$c(this._h1)+$c(this._h2)+$c(this._h3)+$c(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,this._buff.subarray(this._buffLen).fill(0),this._buffLen>56&&(this._step(),this._buff.fill(0));let e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){let e=t._bigBlock32,n=this._buffDV;for(let d=0;d<64;d+=4)e.setUint32(d,n.getUint32(d,!1),!1);for(let d=64;d<320;d+=4)e.setUint32(d,Ob(e.getUint32(d-12,!1)^e.getUint32(d-32,!1)^e.getUint32(d-56,!1)^e.getUint32(d-64,!1),1),!1);let o=this._h0,r=this._h1,i=this._h2,s=this._h3,a=this._h4,l,c,u;for(let d=0;d<80;d++)d<20?(l=r&i|~r&s,c=1518500249):d<40?(l=r^i^s,c=1859775393):d<60?(l=r&i|r&s|i&s,c=2400959708):(l=r^i^s,c=3395469782),u=Ob(o,5)+l+a+c+e.getUint32(d*4,!1)&4294967295,a=s,s=i,i=Ob(r,30),r=o,o=u;this._h0=this._h0+o&4294967295,this._h1=this._h1+r&4294967295,this._h2=this._h2+i&4294967295,this._h3=this._h3+s&4294967295,this._h4=this._h4+a&4294967295}};function jR(t){let n=`${(t??"").trim().toLowerCase()}|${Date.now()}|${je()}`,o=new of;o.update(n);let i=o.digest().slice(0,32),s=i.slice(0,8),a=i.slice(8,12),l=`4${i.slice(12,15)}`,c=(parseInt(i.slice(16,20),16)&16383|32768).toString(16).padStart(4,"0"),u=i.slice(20,32);return`${s}-${a}-${l}-${c}-${u}`}var sf=class t{config;policyEngine;eventBus;messageBus;toolScheduler;roleManager;packRegistry;llm;workspaceProvider;toolProvider;environmentSnapshot;getSystemReminder;getUserContext;onContextOverThreshold;onContextPartialCompress;persistConversation;switchToAgentCallback;getGatewayTraceEmail;llmInjected;initialized=!1;constructor(e={}){this.config=e.config??Ca(),e.llm&&(this.llmInjected=e.llm),e.toolProvider&&(this.toolProvider=e.toolProvider),e.environment&&(this.environmentSnapshot=e.environment),e.workspaceProvider?this.workspaceProvider=e.workspaceProvider:e.workspacePath?this.workspaceProvider=new Ia(e.workspacePath):this.workspaceProvider=new Ia,e.getSystemReminder&&(this.getSystemReminder=e.getSystemReminder),e.getUserContext&&(this.getUserContext=e.getUserContext),e.getGatewayTraceEmail&&(this.getGatewayTraceEmail=e.getGatewayTraceEmail)}buildGatewayTraceId(){return jR(this.getGatewayTraceEmail?.())}getSystemReminderProvider(){return this.getSystemReminder}getUserContextProvider(){return this.getUserContext}async preloadUserContext(){this.getUserContext&&await this.getUserContext.load()}async refreshUserContext(){this.getUserContext&&await this.getUserContext.refresh()}setOnContextOverThreshold(e){this.onContextOverThreshold=e}getOnContextOverThreshold(){return this.onContextOverThreshold}setOnContextPartialCompress(e){this.onContextPartialCompress=e}getOnContextPartialCompress(){return this.onContextPartialCompress}setPersistConversation(e){this.persistConversation=e}getPersistConversation(){return this.persistConversation}setSwitchToAgentCallback(e){this.switchToAgentCallback=e}getSwitchToAgentCallback(){return this.switchToAgentCallback}createVSCodeWorkspaceProvider(){try{if(typeof gc>"u")throw new Error("require is not available. VSCodeWorkspaceProvider cannot be created.");let e=gc("vscode"),{VSCodeWorkspaceProvider:n}=(WR(),y3(zR));return new n(e)}catch(e){return console.warn("[Config] Failed to load VSCodeWorkspaceProvider, falling back to default:",e instanceof Error?e.message:e),new Ia}}static create(e){return new t(e)}getConfig(){return{...this.config}}getLoggingConfig(){return this.config.logging}getInternalLoggingConfig(){return this.config.logging.internal}getUserLoggingConfig(){return this.config.logging.user}getEnvironment(){return this.config.environment}getVersion(){return this.config.version}getTrivalModels(){return this.config.trivalModels??[]}isDevelopment(){return this.config.environment==="development"}isProduction(){return this.config.environment==="production"}isVSCodeIntegration(){return!1}reload(){this.config=Ca()}async initialize(){if(this.initialized)throw new Error("Config already initialized");let e=this.getDefaultPolicyDecision();this.policyEngine=new jp(e);for(let r of ub)this.policyEngine.addRule(r);let n=this.config.llm?.debug??!1;if(this.eventBus=new hc(n),(this.config.llm?.enableMessageBus??!0)&&(this.messageBus=new zp(this.policyEngine,n)),!this.toolProvider)throw new Error("ToolProvider is required. Please provide a toolProvider in ConfigParameters.");if(this.toolScheduler=new Vp(this.toolProvider,this.policyEngine),this.llmInjected&&(this.llm=this.llmInjected),this.llm){if(await ti.getInstance().load(),!this.toolProvider)throw new Error("ToolProvider is required for RoleManager. Please provide a toolProvider in ConfigParameters.");this.roleManager=new Ac({toolProvider:this.toolProvider,llm:this.llm,toolScheduler:this.toolScheduler,eventBus:this.eventBus,messageBus:this.messageBus});let i;this.workspaceProvider?i=(await this.workspaceProvider.getPrimaryWorkspace())?.path??"":typeof process<"u"&&typeof process.cwd=="function"?i=process.cwd():i="";let s=Ac.createDefaultContext(i,{environment:this.environmentSnapshot});await this.roleManager.registerAllRoles(s)}!!1&&this.workspaceProvider&&await this.workspaceProvider.resolvePath("."),this.initialized=!0}getDefaultPolicyDecision(){let e=this.config.llm?.defaultPolicyDecision;return e==="allow"?Et.ALLOW:e==="deny"?Et.DENY:e==="exclude"?Et.EXCLUDE:Et.ASK}getOrThrow(e,n){if(!this.initialized||n===void 0)throw new Error("Config not initialized. Call initialize() first.");return n}getPolicyEngine(){return this.getOrThrow("policyEngine",this.policyEngine)}getEventBus(){return this.getOrThrow("eventBus",this.eventBus)}getMessageBus(){if(!this.initialized)throw new Error("Config not initialized. Call initialize() first.");return this.messageBus}getToolScheduler(){return this.getOrThrow("toolScheduler",this.toolScheduler)}getRoleManager(){return this.getOrThrow("roleManager",this.roleManager)}setRoleManager(e){this.roleManager=e}getPackRegistry(){return this.packRegistry}setPackRegistry(e){this.packRegistry=e}getLLM(){return this.getOrThrow("llm",this.llm)}setLLM(e){this.llm=e}getEnvironmentSnapshot(){return this.environmentSnapshot}setEnvironmentSnapshot(e){this.environmentSnapshot=e}getWorkspaceProvider(){if(!this.workspaceProvider)throw new Error("WorkspaceProvider not initialized");return this.workspaceProvider}setToolProvider(e){this.toolProvider=e}getToolProvider(){return this.toolProvider}isInitialized(){return this.initialized}isTestRendererEnabled(){return this.config.environment==="development"}isDebugMode(){let e=this.config.logging?.internal;return e?this.config.environment==="development"&&e.minLevel==="debug":!1}};tn();tn();gr();tn();gr();function KR(t){if(t.role==="tool"||t.role==="assistant"&&t.toolCalls!==void 0&&t.toolCalls.length>0)return!0;let e=t.displayData;if(e!==void 0&&typeof e=="object"&&e!==null&&"tool"in e){let n=e.tool;return typeof n=="string"&&n.length>0}return!1}var cj=new Set(["AUTH_LOGOUT_REQUIRED","JWT_BLACKLISTED","PANDA_NOT_LOGGED_IN"]);function uj(t){if(!t)return;let e=t.trim().toLowerCase();return e==="user"||e==="user-cancel"?"user":e==="system"?"system":e==="timeout"?"timeout":e==="superseded"?"superseded":"unknown"}function dj(t){if(t)return t.trim().toUpperCase()}function pj(t,e){let n=t?.trim();if(n)return e&&cj.has(e)||n.includes("PANDA_NOT_LOGGED_IN")?"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u5DF2\u62D2\u7EDD\u672C\u6B21\u8BF7\u6C42\u3002\u8BF7\u5148\u6267\u884C /auth login\u3002":n}function Ma(t){let e=uj(t.cancelReason),n=dj(t.errorCode),o=pj(t.errorMessage,n),r=t.terminalStatus==="cancelled"&&e==="user"&&t.inputEmptyAtCancel===!0&&t.hasQueuedWork!==!0&&t.isViewingSubThread!==!0&&t.hasMeaningfulOutput!==!0;return{terminalStatus:t.terminalStatus,...e!==void 0?{cancelReason:e}:{},shouldFinalizeTurn:!0,shouldFinalizeCancelledOutput:t.terminalStatus==="cancelled",shouldAdvanceQueue:!0,shouldRewind:r,...r&&t.restoreCandidate!==void 0?{restorePrompt:t.restoreCandidate}:{},...o!==void 0?{normalizedErrorMessage:o}:{},...n!==void 0?{normalizedErrorCode:n}:{}}}var fj="",Da=class t{turnId;conversationId;createdAt;cctx;prompt;turnDisplaySummary;modelId;source;runtimeModelInfo;gatewayTraceId;state;works=[];rootWork=null;tchMessageRange=[0,0];uiMessageRange=[0,0];compacted=!1;metrics;isRestored;result;startTime;constructor(e,n,o,r,i){this.cctx=e,this.conversationId=e.conversationId,typeof n=="string"?(this.isRestored=!1,this.turnId=je(),this.createdAt=Date.now(),this.prompt=n,this.turnDisplaySummary=i,this.modelId=o,this.source=r,this.runtimeModelInfo=void 0,this.gatewayTraceId=e.config.buildGatewayTraceId(),this.state={status:"pending"},this.compacted=!1):(this.isRestored=!0,this.turnId=n.turnId,this.createdAt=0,this.prompt=fj,this.turnDisplaySummary=void 0,this.modelId=void 0,this.source=void 0,this.runtimeModelInfo=void 0,this.gatewayTraceId=n.turnId,this.state={status:"completed"},this.uiMessageRange=[n.uiStart,n.uiEnd],this.tchMessageRange=[n.tchStart,n.tchEnd],this.compacted=n.compacted??!1)}static createForRestore(e,n,o,r){return new t(e,{turnId:n,compacted:r,...o})}getTchMessages(){return this.cctx.tchMessages.slice(this.tchMessageRange[0],this.tchMessageRange[1])}getUiMessages(){return this.cctx.uiMessages.slice(this.uiMessageRange[0],this.uiMessageRange[1])}async start(){if(this.isRestored)throw new Error("Cannot start a restored turn");if(this.state.status!=="pending")throw new Error(`Turn ${this.turnId} is not in pending state`);this.startTime=Date.now(),this.state.status="running";let e=this.cctx.config.getEventBus();if(e.emit(P.TURN_STARTED,{conversationId:this.conversationId,turnId:this.turnId,prompt:this.prompt,...this.turnDisplaySummary!==void 0&&this.turnDisplaySummary!==this.prompt?{displayPrompt:this.turnDisplaySummary}:{},updatedAt:this.cctx.updatedAt}),await this.hydrateRuntimeModelInfo(),!this.isCancelledAfterConcurrentCancel())try{if(this.rootWork===null&&(this.emitLog("debug","Turn","Creating Main Role Work..."),this.rootWork=await this.createMainRoleWork()),this.isCancelledAfterConcurrentCancel()||(this.rootWork!==null?(this.emitLog("info","Turn",`Executing rootWork: ${this.rootWork.workId}`),await this.rootWork.execute(this.prompt)):this.emitLog("warn","Turn","No rootWork created, task will complete without execution"),this.isCancelledAfterConcurrentCancel()))return;this.state.status="completed",this.collectResults(),this.metrics=this.collectMetrics(),this.rootWork!==null&&await this.rootWork.emitContextMetricsAfterReAct(),e.emit(P.TURN_COMPLETED,{conversationId:this.conversationId,turnId:this.turnId,result:this.result,duration:this.startTime!==void 0?Date.now()-this.startTime:void 0,turnTchMessages:this.cctx.tchMessages.slice(this.tchMessageRange[0],this.tchMessageRange[1]),turnUiMessages:this.cctx.uiMessages.slice(this.uiMessageRange[0],this.cctx.uiMessages.length),conversationUiMessages:[...this.cctx.uiMessages],metrics:this.metrics})}catch(n){if(this.isCancelledAfterConcurrentCancel())return;this.state.status="failed",this.state.error=n instanceof Error?n:new Error(String(n)),console.warn("[TurnImpl] TURN_FAILED source error snapshot",{conversationId:this.conversationId,turnId:this.turnId,errorName:this.state.error.name,errorMessage:this.state.error.message,errorCode:this.state.error.code,isLLMErrorLike:typeof this.state.error.code=="string"}),this.metrics=this.collectMetrics();let o=Ma({terminalStatus:"failed",errorMessage:this.state.error.message,errorCode:typeof this.state.error?.code=="string"?this.state.error.code:void 0});throw e.emit(P.TURN_FAILED,{conversationId:this.conversationId,turnId:this.turnId,error:this.state.error,errorCode:typeof this.state.error?.code=="string"?this.state.error.code:void 0,...o.normalizedErrorMessage!==void 0?{normalizedError:o.normalizedErrorMessage}:{},metrics:this.metrics}),n}}createMainRoleWorkSync(){if(this.isRestored)return null;if(this.rootWork!==null)return this.rootWork;let e=this.cctx.config;if(!e.isInitialized())return this.emitLog("warn","Turn","Config is not initialized, cannot create Main Role Work"),null;try{let n=e.getRoleManager(),o=this.cctx.interactionMode,r=e.getPackRegistry(),i=aE(o,r),s=n.getRoleDefinition(i);if(!s)throw this.emitLog("error","Turn",`Main role is not registered in RoleManager: ${i}`),new Error(`Main role is not registered in RoleManager: ${i}`);if(!e.getToolProvider())throw this.emitLog("error","Turn","ToolProvider is not available from Config"),new Error("ToolProvider is not available from Config");let l=new _a(this.cctx,this,i,s);return this.works.push(l),this.cctx.registerWork(l.workId,this.turnId),this.rootWork=l,this.emitLog("info","Turn",`Main Role Work created: ${l.workId}, role=${i}`),l}catch(n){let o=n instanceof Error?n.message:String(n);return this.emitLog("error","Turn",`Failed to create Main Role Work: ${o}`),null}}async createMainRoleWork(){return this.createMainRoleWorkSync()}async cancel(e){if(this.isRestored||this.state.status==="completed"||this.state.status==="cancelled")return;this.state.status="cancelled",this.collectResults(),this.metrics=this.collectMetrics();let n=e?.restorePrompt;this.cctx.eventBus.emit(P.TURN_CANCELLED,{conversationId:this.conversationId,turnId:this.turnId,...e?.reason!==void 0?{reason:e.reason}:{},...e?.inputEmptyAtCancel!==void 0?{inputEmptyAtCancel:e.inputEmptyAtCancel}:{},...e?.isViewingSubThread!==void 0?{isViewingSubThread:e.isViewingSubThread}:{},...n!==void 0&&n!==""?{restorePromptCandidate:n}:{},metrics:this.metrics}),this.rootWork!==null&&await this.rootWork.cancel()}getResult(){return this.result}getElapsedMs(){if(this.startTime!==void 0)return Date.now()-this.startTime}isCancelledAfterConcurrentCancel(){return this.state.status==="cancelled"}async hydrateRuntimeModelInfo(){if(!this.cctx.config.isInitialized())return;let e;try{e=this.cctx.config.getLLM()}catch{return}if(typeof e.getModelInfo=="function")try{this.runtimeModelInfo=await e.getModelInfo(this.modelId)}catch{this.runtimeModelInfo=void 0}}collectResults(){let e=[];this.rootWork!==null&&this.rootWork.state.result!==void 0&&e.push(this.rootWork.state.result);for(let o of this.works)o!==this.rootWork&&o.state.result!==void 0&&e.push(o.state.result);let n=this.rootWork?.state.result?.output;this.result={success:this.state.status==="completed",workResults:e,error:this.state.error,...n!==void 0?{output:n}:{}}}collectMetrics(){let e=Date.now(),n=this.startTime??e,o=e-n,r=this.rootWork?.getReActResult?.()??null,i={},s=0;if(r?.toolCallHistory)for(let f of r.toolCallHistory){let m=f.request.name;i[m]=(i[m]??0)+1,s++}let a=this.modelId??"unknown",l=this.runtimeModelInfo?.displayName??a,c=this.state.status==="completed"?"completed":this.state.status==="cancelled"?"cancelled":"failed",u=r?.usage?.promptTokens??0,d=r?.usage?.completionTokens??0,p=Ta(r?.usage);return{modelId:a,modelName:l,interactionMode:this.cctx.interactionMode,startedAt:n,completedAt:e,duration:o,reactLoopCount:r?.iterationCount??0,toolCallCount:s,toolCallBreakdown:i,promptTokens:u,completionTokens:d,totalTokens:p,status:c,errorMessage:this.state.error?.message}}emitLog(e,n,o,r){this.cctx.eventBus.emit(P.LOG,{conversationId:this.conversationId,turnId:this.turnId,level:e,source:n,message:o,...r!==void 0?{data:r}:{}})}};function mj(t){return`[file:${t.replace(/\\/g,"/")}]`}function HR(t){switch(t.type){case"text":return t.text??"";case"image":return"[img]";case"fileContext":return t.displayPath?mj(t.displayPath):"[file]";case"code":return"[code]";case"pandaCommand":return t.commandName?`/${t.commandName}`:"";case"pandaSkill":return t.skillName?`/${t.skillName}`:"";default:return""}}function gj(t){if(t.type!=="fileContext")return"";let e=t.displayPath??"";return e?typeof t.startLine=="number"&&typeof t.endLine=="number"?`@${e}:${t.startLine}-${t.endLine}`:`@${e}`:""}function VR(t,e){if(e.type!=="fileContext")return t;let n=gj(e);return n&&t.endsWith(n)?t.slice(0,-n.length):t}function hj(t,e){return t.type!=="pandaSkill"&&t.type!=="pandaCommand"||e.length===0?!1:!/^\s/u.test(e)}function xs(t){if(typeof t=="string")return t;if(t.length===0)return"";let e=HR(t[0]);t[0].type==="text"&&t[1]?.type==="fileContext"&&(e=VR(e,t[1]));let n=e;for(let o=1;o<t.length;o++){let r=t[o-1],i=t[o],s=HR(i);i.type==="text"&&t[o+1]?.type==="fileContext"&&(s=VR(s,t[o+1])),hj(r,s)&&(n+=" "),n+=s}return n}function af(t){return typeof t=="string"?t:t.map(e=>e.type==="fileContext"?{...e,body:void 0}:e)}tn();gr();function Oa(t,e){return t.resolveWorkById(e)}function yj(t){return t&&typeof t=="object"&&"tool"in t?t.tool:void 0}function vj(t,e,n,o,r){let i={messageId:e,role:n,content:o,turnId:r},s=!t.isSubAgent;return{message:i,isMain:s}}function bj(t,e){if(e.toolResult){let n=e.displayData&&typeof e.displayData=="object"&&e.displayData!==null&&"status"in e.displayData&&typeof e.displayData.status=="object"?e.displayData.status:void 0;return{...t,...e.displayData,status:{...n,state:"success",duration:e.toolResult.durationMs}}}return e.toolError?{...t,status:{state:"error",error:e.toolError.message}}:t}var lf=class{cctx;eventBus;policy;map=new Map;streamingContentByTurnId=new Map;constructor(e,n){this.cctx=e,this.eventBus=e.config.getEventBus(),this.policy=n}createMessage(e){let n=je(),{turnId:o,workId:r,messageType:i,initialContent:s="",uiContent:a,toolCallId:l,displayData:c}=e;if(i==="user"&&!r)return this.createUserMessageForTest(n,o,s,a);let u=Oa(this.cctx,r);if(!u)throw new Error(`ContextEngine: work not found for workId=${r}`);let d=i==="tool"?yj(c):void 0,{message:p,isMain:f}=vj(u,n,i,s,o),m=this.policy.applyCreate({messageId:n,messageType:i,initialContent:s,uiContent:a,toolCallId:i==="tool"?l:void 0,toolName:d,displayData:c,workId:r,turnId:o}),{uiStart:g,tchLenBefore:h,tchMessageIndex:y,uiMessageIndex:v}=this.pushPolicyOutputAndGetIndices(u,m);this.updateTurnRangesForCreate(o,i,f,u,g,h);let b=m.tch??p;this.registerInProgressIfNeeded(n,b,v,y,o,r,i,l,d);let R=i==="user"&&a!==void 0?a:s;return this.emitCreateEventByMessageType(i,o,r,n,R,d,l,c,v),n}createUserMessageForTest(e,n,o,r){let i=this.cctx.uiMessages.length,s=this.cctx.tchMessages.length,a=this.policy.applyCreate({messageId:e,messageType:"user",initialContent:o,uiContent:r,turnId:n});a.tch&&this.cctx.tchMessages.push(a.tch),a.ui&&this.cctx.uiMessages.push(a.ui);let l=this.cctx.currentTurn;l&&l.turnId===n&&(l.uiMessageRange[0]=i,l.uiMessageRange[1]=this.cctx.uiMessages.length,l.tchMessageRange[0]=s,l.tchMessageRange[1]=this.cctx.tchMessages.length);let c=r!==void 0?r:o;return this.eventBus.emit(P.USER_MESSAGE_ADDED,{conversationId:this.cctx.conversationId,turnId:n,messageId:e,content:c}),e}pushPolicyOutputAndGetIndices(e,n){let o=this.cctx.uiMessages.length,r=e.tchMessageRef,i=r.length,s,a;return n.tch&&(r.push(n.tch),s=r.length-1),n.ui&&(this.cctx.uiMessages.push(n.ui),a=this.cctx.uiMessages.length-1),{uiStart:o,tchLenBefore:i,tchMessageIndex:s,uiMessageIndex:a}}updateTurnRangesForCreate(e,n,o,r,i,s){let a=this.cctx.currentTurn;!a||a.turnId!==e||(n==="user"?(a.uiMessageRange[0]=i,a.uiMessageRange[1]=this.cctx.uiMessages.length,o&&(a.tchMessageRange[0]=s,a.tchMessageRange[1]=this.cctx.tchMessages.length),o||(r.tchMessageRange[0]=Math.min(r.tchMessageRange[0],s),r.tchMessageRange[1]=r.tchMessageRef.length)):o?(r.uiMessageRange[1]=this.cctx.uiMessages.length,r.tchMessageRange[1]=this.cctx.tchMessages.length,a.uiMessageRange[1]=this.cctx.uiMessages.length,a.tchMessageRange[1]=this.cctx.tchMessages.length):(a.uiMessageRange[1]=this.cctx.uiMessages.length,r.uiMessageRange[1]=this.cctx.uiMessages.length,r.tchMessageRange[1]=r.tchMessageRef.length))}registerInProgressIfNeeded(e,n,o,r,i,s,a,l,c){a!=="user"&&this.map.set(e,{message:n,uiMessageIndex:o,tchMessageIndex:r,turnId:i,workId:s,messageType:a,...a==="tool"&&l!==void 0&&{toolCallId:l},...a==="tool"&&c!==void 0&&{toolName:c},...(a==="assistant"||a==="thinking")&&{pendingContentChunks:typeof n.content=="string"&&n.content.length>0?[n.content]:[]}})}emitCreateEventByMessageType(e,n,o,r,i,s,a,l,c){let u=this.cctx.conversationId,d=c!==void 0,p={conversationId:u,turnId:n,workId:o,messageId:r};if(e==="user"){this.eventBus.emit(P.USER_MESSAGE_ADDED,{...p,content:i});return}if(e==="assistant"){let f=typeof i=="string"?i:"";if(this.streamingContentByTurnId.set(n,f),d&&f){let m=!!Oa(this.cctx,o)?.isSubAgent;this.eventBus.emit(P.ASSISTANT_MESSAGE_STARTED,{...p,chunk:f,isSubAgentWork:m})}return}if(e==="thinking"&&d){let f=typeof i=="string"?i:"",m=!!Oa(this.cctx,o)?.isSubAgent;this.eventBus.emit(P.THINKING_STARTED,{...p,isSubAgentWork:m,...f&&{chunk:f}});return}e==="tool"&&d&&this.eventBus.emit(P.TOOL_CALL_REQUESTED,{...p,toolName:s??"",args:{},toolCallId:a??"",displayData:l})}updateMessage(e,n){let o=this.map.get(e);if(!o)return;let{message:r,uiMessageIndex:i,tchMessageIndex:s,turnId:a,workId:l,messageType:c}=o,u=this.cctx.conversationId,d=n.isLast===!0,p=c==="assistant"||c==="thinking",f=typeof r.content=="string"?r.content:"";if(p){let v=o.pendingContentChunks??[];n.content!==void 0&&n.content.length>0&&(v.push(n.content),o.pendingContentChunks=v),d&&(f=v.join(""),r.content=f)}else n.content!==void 0&&(f=(typeof r.content=="string"?r.content:"")+n.content,r.content=f);n.toolCalls!==void 0&&(r.toolCalls=n.toolCalls);let m=i!==void 0?this.cctx.uiMessages[i]:void 0,g;m&&(p?d&&(m.content=f):m.content=f,n.displayData!==void 0&&(m.displayData=n.displayData),d&&(c==="assistant"?this.applyCompletionDuration(m):c==="thinking"&&(g=this.applyCompletionDuration(m,{status:{state:"complete"}}))));let h=this.cctx.resolveWorkById(l),y=c==="tool"?o.toolName:void 0;if(s!==void 0&&h){let v=this.policy.applyUpdate({messageId:e,messageType:c,content:f,toolCallId:o.toolCallId,toolName:y,toolResult:n.toolResult,toolError:n.toolError,toolCalls:c==="assistant"?r.toolCalls:void 0,turnId:a});v.tch&&(h.tchMessageRef[s]=v.tch)}c==="assistant"?this.applyAssistantUpdate(o,n,m,d,u,a,l,e):c==="thinking"?this.applyThinkingUpdate(o,n,m,d,g,u,a,l,e):c==="tool"&&this.applyToolUpdate(o,n,m,d,y,u,a,l,e),d&&(o.pendingContentChunks=void 0,this.map.delete(e))}applyAssistantUpdate(e,n,o,r,i,s,a,l){if(o){let c=!!Oa(this.cctx,a)?.isSubAgent;this.eventBus.emitStreaming(P.MESSAGE_STREAMING,{conversationId:i,turnId:s,workId:a,messageId:l,isSubAgentWork:c,chunk:r?"":n.content??"",done:r},r)}r?this.streamingContentByTurnId.delete(s):n.content&&n.content.length>0&&this.streamingContentByTurnId.set(s,this.collectPendingAssistantContentByTurnId(s))}applyThinkingUpdate(e,n,o,r,i,s,a,l,c){if(o){let u=!!Oa(this.cctx,l)?.isSubAgent;this.eventBus.emitStreaming(P.THINKING_STREAMING,{conversationId:s,turnId:a,workId:l,messageId:c,isSubAgentWork:u,chunk:n.content??"",duration:i},r)}}applyToolUpdate(e,n,o,r,i,s,a,l,c){if(!o)return;if(!r){let p=e.toolCallId??"";p&&this.eventBus.emit(P.TOOL_CALL_PROGRESS,{conversationId:s,turnId:a,workId:l,toolName:i??"",toolCallId:p,messageId:c,displayData:o.displayData});return}let u=o.displayData&&typeof o.displayData=="object"?o.displayData:{};o.displayData=bj(u,n);let d=e.toolCallId??"";if(n.toolError)this.eventBus.emit(P.TOOL_CALL_FAILED,{conversationId:s,turnId:a,workId:l,toolName:i??"",toolCallId:d,error:n.toolError,messageId:c,displayData:o.displayData});else if(n.toolResult){let p=n.toolResult.result,f={conversationId:s,turnId:a,workId:l,toolName:i??"",toolCallId:d,result:p,duration:n.toolResult.durationMs,messageId:c};this.eventBus.emit(P.TOOL_CALL_EXECUTED,f)}}applyCompletionDuration(e,n){let o=Date.now()-(e.timestamp??Date.now()),r=e.displayData&&typeof e.displayData=="object"?e.displayData:{};return e.displayData={...r,duration:o,...n},o}getStreamingContentByTurnId(e){return this.streamingContentByTurnId.get(e)??this.collectPendingAssistantContentByTurnId(e)}finalizeTurnOnCancel(e){let n=this.getStreamingContentByTurnId(e);this.streamingContentByTurnId.delete(e);for(let[o,r]of this.map.entries())r.turnId===e&&this.map.delete(o);n.trim()&&this.commitCanceledAssistantMessage(n.trim(),e)}appendTurnFailureMessage(e,n,o){if(!Oa(this.cctx,n))return;let i=qE(o);this.createMessage({turnId:e,workId:n,messageType:"assistant",initialContent:i})}commitCanceledAssistantMessage(e,n){let o=je(),r=this.policy.applyUpdate({messageId:o,messageType:"assistant",content:e,turnId:n});r.tch&&this.cctx.tchMessages.push(r.tch),this.cctx.uiMessages.push({messageId:o,role:"assistant",content:e,timestamp:Date.now(),turnId:n})}clearContext(){this.map.clear(),this.streamingContentByTurnId.clear()}collectPendingAssistantContentByTurnId(e){for(let n of this.map.values()){if(n.turnId!==e||n.messageType!=="assistant")continue;let o=n.pendingContentChunks;return o&&o.length>0?o.join(""):typeof n.message.content=="string"?n.message.content:""}return""}};var qR=I.DELETE_FILE,GR=I.READ_FILE,ZR=I.WRITE_FILE,JR=I.GREP,YR=I.GLOB,xj=new Set([qR,GR,ZR,JR,YR]),Tj={[qR]:"delete",[GR]:"read",[ZR]:"write",[JR]:"grep",[YR]:"glob_file_search"};function wj(t){return xj.has(t)}function _j(t,e,n,o,r){let i=Tj[e]??"tool",s=n?`${i} success`:`${i} failed`;return{messageId:t,role:"tool",content:"",toolResults:[{toolCallId:o,content:s,isError:!n}],turnId:r}}function Sj(t){let{messageId:e,messageType:n,initialContent:o="",toolCallId:r,turnId:i}=t;switch(n){case"user":return{messageId:e,role:"user",content:o,turnId:i};case"assistant":return{messageId:e,role:"assistant",content:o,turnId:i};case"thinking":return{messageId:e,role:"thinking",content:o,turnId:i};case"tool":return{messageId:e,role:"tool",content:"",toolResults:[{toolCallId:r??"",content:"",isError:!1}],turnId:i};default:return}}function kj(t){let{messageId:e,messageType:n,initialContent:o="",uiContent:r,turnId:i}=t,l={messageId:e,role:n==="user"?"user":n,content:n==="user"&&r!==void 0?r:o,timestamp:Date.now(),turnId:i};return n==="user"?{...l,...t.workId!==void 0&&{workId:t.workId}}:{...l,...t.displayData!==void 0&&{displayData:t.displayData},...t.workId!==void 0&&{workId:t.workId}}}function Ij(t){let{messageId:e,messageType:n,content:o,toolCallId:r="",toolResult:i,toolError:s,turnId:a}=t,l=t.toolName;switch(n){case"assistant":return{messageId:e,role:"assistant",content:o,turnId:a,...t.toolCalls?.length?{toolCalls:t.toolCalls}:{}};case"thinking":return{messageId:e,role:"thinking",content:o,turnId:a};case"tool":{let c=!s&&!!i;return l!==void 0&&wj(l)?_j(e,l,c,r,a):{messageId:e,role:"tool",content:o,toolResults:[{toolCallId:r,content:o,isError:!!s}],turnId:a}}default:return}}var cf=class{applyCreate(e){let n=Sj(e),o=kj(e);return{...n!==void 0&&{tch:n},ui:o}}applyUpdate(e){let n=Ij(e);return{...n!==void 0&&{tch:n}}}};function QR(t,e){return typeof t!="number"?0:Math.max(0,e-t)}function Cj(t,e){if(t.role!=="thinking")return!1;let n=t.displayData;if(!n||typeof n!="object"||n.status?.state!=="streaming")return!1;let o=typeof n.duration=="number"?n.duration:QR(t.timestamp,e);return t.displayData={...n,status:{state:"cancelled"},duration:o},!0}function Ej(t){return typeof t=="object"&&t!==null&&"tool"in t}function Pj(t,e){if(t.role!=="tool")return!1;let n=t.displayData;if(!Ej(n))return!1;let o=n.status;if(!o||o.state!=="pending"&&o.state!=="executing")return!1;let r={...o,state:"cancelled",duration:o.duration??QR(t.timestamp,e)};return t.displayData={...n,status:r},!0}function XR(t,e){return Cj(t,e)||Pj(t,e)}function eA(t,e){let n=Date.now(),o=!1;for(let r of t)r.turnId===e&&XR(r,n)&&(o=!0);return o}function tA(t){let e=Date.now(),n=!1;for(let o of t)XR(o,e)&&(n=!0);return n}var Ur=class{conversationId;createdAt;updatedAt;config;eventBus;tchMessages=[];uiMessages=[];turns=[];currentTurn=null;state={status:"idle"};mainFlowUsage=void 0;restored=!1;title=void 0;migrateSource=void 0;migrateModelId=void 0;interactionMode="agent";cronOrigin=void 0;isEphemeral=!1;_contextEngine;pendingQueue=[];_conversationActionExecutor;_actionAbort;_persistedTurnRanges;workIdToTurnId=new Map;turnIdToWorkIds=new Map;constructor(e,n){this._persistedTurnRanges=void 0,n?(this.conversationId=n.conversationId,this.createdAt=n.createdAt,this.updatedAt=n.updatedAt??n.createdAt,this.uiMessages=n.uiMessages,this.mainFlowUsage=n.lastUsage,this.title=n.title,this.migrateSource=n.migrateSource,this.migrateModelId=n.migrateModelId,this.interactionMode=n.interactionMode??"agent",this.isEphemeral=n.isEphemeral??!1,this.cronOrigin=n.cronOrigin,this.restored=!0,this._persistedTurnRanges=n.turnRanges?.length?n.turnRanges:void 0,n.tchMessages?this.tchMessages=n.tchMessages:n.fromMigrate&&(this.tchMessages=n.uiMessages.map(o=>({...o}))),this.materializeTurnsFromTurnRanges(n.turnRanges,n.turnMetrics)):(this.conversationId=je(),this.createdAt=Date.now(),this.updatedAt=this.createdAt),this.config=e,this.eventBus=e.getEventBus(),this._contextEngine=new lf(this,new cf),this.eventBus.on(P.TURN_COMPLETED,o=>{if(o.conversationId!==this.conversationId)return;let r=this.currentTurn;if(r&&r.turnId!==o.turnId)return;let i=Ma({terminalStatus:"completed"});this.applyTerminalTurnDecision(o.turnId,r,i)}),this.eventBus.on(P.TURN_FAILED,o=>{if(o.conversationId!==this.conversationId)return;let r=this.currentTurn;if(r&&r.turnId!==o.turnId)return;let i=Ma({terminalStatus:"failed",errorMessage:typeof o.error=="string"?o.error:o.error instanceof Error?o.error.message:String(o.error),errorCode:o.errorCode});this.applyTerminalTurnDecision(o.turnId,r,i)}),this.eventBus.on(P.TURN_CANCELLED,o=>{if(o.conversationId!==this.conversationId)return;let r=this.currentTurn;if(r&&r.turnId!==o.turnId)return;let i=Ma({terminalStatus:"cancelled",cancelReason:o.reason,hasQueuedWork:this.pendingQueue.length>0,hasMeaningfulOutput:this.hasMeaningfulOutputForTurn(o.turnId),inputEmptyAtCancel:o.inputEmptyAtCancel,isViewingSubThread:o.isViewingSubThread,restoreCandidate:o.restorePromptCandidate});this.applyTerminalTurnDecision(o.turnId,r,i),i.shouldRewind&&this.config.getPersistConversation()?.(this.conversationId).catch(()=>{}),this.eventBus.emit(P.TURN_CANCEL_RESOLVED,{conversationId:this.conversationId,turnId:o.turnId,revertApplied:i.shouldRewind,...i.restorePrompt!==void 0?{restorePrompt:i.restorePrompt}:{}})}),this.eventBus.emit(P.CONVERSATION_CREATED,{conversationId:this.conversationId})}hasMeaningfulOutputForTurn(e){let n=this.turns.find(s=>s.turnId===e);if(!n)return!1;let o=Math.max(0,n.uiMessageRange[0]),r=this.currentTurn?.turnId===e?this.uiMessages.length:n.uiMessageRange[1],i=Math.min(this.uiMessages.length,Math.max(o,r));for(let s=o;s<i;s++){let a=this.uiMessages[s];if(a&&(KR(a)||a.role==="assistant"&&(typeof a.content=="string"&&a.content.trim().length>0||Array.isArray(a.content)&&a.content.length>0)))return!0}return!1}applyTerminalTurnDecision(e,n,o){o.shouldFinalizeCancelledOutput&&this._contextEngine.finalizeTurnOnCancel(e),n&&n.turnId===e&&(n.uiMessageRange[1]=this.uiMessages.length,n.tchMessageRange[1]=this.tchMessages.length),this.currentTurn=null,this.state={status:"idle"},this.unregisterWorksByTurnId(e),o.shouldRewind&&this.truncateToBeforeTurn(e),o.terminalStatus==="cancelled"&&!o.shouldRewind&&eA(this.uiMessages,e)&&this.eventBus.emit(P.CONVERSATION_UI_MESSAGES_UPDATED,{conversationId:this.conversationId,uiMessages:[...this.uiMessages]}),o.shouldAdvanceQueue&&this.processNextPendingWork()}materializeTurnsFromTurnRanges(e,n){if(!e?.length)return;let o=this.uiMessages.length,r=this.tchMessages.length;for(let i=0;i<e.length;i++){let s=e[i],a=i+1<e.length?e[i+1].uiStart:o,l=i+1<e.length?e[i+1].tchStart:r,c=Da.createForRestore(this,s.turnId,{uiStart:s.uiStart,tchStart:s.tchStart,uiEnd:a,tchEnd:l},s.compacted);if(n){let u=n.get(s.turnId);u&&(c.metrics=u)}this.turns.push(c)}this._persistedTurnRanges=void 0}getContextEngine(){return this._contextEngine}registerWork(e,n){this.workIdToTurnId.set(e,n);let o=this.turnIdToWorkIds.get(n);o?o.add(e):this.turnIdToWorkIds.set(n,new Set([e]))}unregisterWorksByTurnId(e){let n=this.turnIdToWorkIds.get(e);if(n){for(let o of n)this.workIdToTurnId.delete(o);this.turnIdToWorkIds.delete(e)}}resolveWorkById(e){let n=this.workIdToTurnId.get(e);return n?this.turns.find(r=>r.turnId===n)?.works.find(r=>r.workId===e):void 0}submitUserMessage(e,n,o){this.pendingQueue.push({kind:"user_message",prompt:e,modelId:n,displayContent:o}),this.state.status==="idle"&&this.processNextPendingWork()}enqueueConversationAction(e,n){this.pendingQueue.push({kind:"conversation_action",actionId:e,modelId:n?.modelId,displayLabel:n?.displayLabel}),this.state.status==="idle"&&this.processNextPendingWork()}setConversationActionExecutor(e){this._conversationActionExecutor=e}abortInFlightConversationAction(){this._actionAbort?.controller.abort()}cancelConversationActionIfTurnId(e){return this._actionAbort&&this._actionAbort.turnId===e?(this._actionAbort.controller.abort(),!0):!1}getPendingQueue(){return this.pendingQueue.slice()}removePendingUserMessage(e){e>=0&&e<this.pendingQueue.length&&this.pendingQueue.splice(e,1)}async sendPendingUserMessageImmediately(e){if(e<0||e>=this.pendingQueue.length)return;let n=this.pendingQueue.splice(e,1)[0];this.pendingQueue.unshift(n),this.currentTurn!==null?await this.currentTurn.cancel({reason:"superseded"}):this._actionAbort?this._actionAbort.controller.abort():this.processNextPendingWork()}clearContext(){this.isEphemeral&&(this.state.status!=="idle"||this.currentTurn!==null||(this.pendingQueue.length=0,this.tchMessages.length=0,this.uiMessages.length=0,this.turns.length=0,this.currentTurn=null,this.state={status:"idle"},this.workIdToTurnId.clear(),this.turnIdToWorkIds.clear(),this._contextEngine.clearContext()))}getTurnRangesForPersistence(){let e=this.turns.map(r=>({turnId:r.turnId,uiStart:r.uiMessageRange[0],tchStart:r.tchMessageRange[0],...r.compacted?{compacted:!0}:{}})),o=[...this._persistedTurnRanges??[],...e].sort((r,i)=>r.uiStart-i.uiStart);return o.length>0?o:[]}truncateToBeforeTurn(e){if(this.state.status!=="idle"||this.currentTurn!==null)throw new Error("Cannot truncate conversation while a turn is running");if(this.turns.length>0){let o=this._persistedTurnRanges?.find(a=>a.turnId===e);if(o){if(o.uiStart===0){this.tchMessages.length=0,this.uiMessages.length=0;for(let l of this.turns)this.unregisterWorksByTurnId(l.turnId);this.turns.length=0,this._persistedTurnRanges=void 0,this._contextEngine.clearContext();return}this.uiMessages.splice(o.uiStart),o.compacted&&o.tchStart===0?this.tchMessages.length=0:this.tchMessages.splice(o.tchStart);let a=this.turns.filter(l=>l.uiMessageRange[0]>=o.uiStart);for(let l of a)this.unregisterWorksByTurnId(l.turnId);this.turns=this.turns.filter(l=>l.uiMessageRange[0]<o.uiStart),this._persistedTurnRanges=this._persistedTurnRanges?.filter(l=>l.uiStart<o.uiStart)??void 0;return}let r=this.turns.findIndex(a=>a.turnId===e);if(r<0)throw new Error(`Turn not found: ${e}`);let i=this.turns[r];if(r===0&&i.uiMessageRange[0]===0){this.tchMessages.length=0,this.uiMessages.length=0;for(let a of this.turns)this.unregisterWorksByTurnId(a.turnId);this.turns.length=0,this._contextEngine.clearContext();return}this.uiMessages.splice(i.uiMessageRange[0]),i.compacted&&i.tchMessageRange[0]===0?this.tchMessages.length=0:this.tchMessages.splice(i.tchMessageRange[0]);let s=this.turns.slice(r);for(let a of s)this.unregisterWorksByTurnId(a.turnId);this.turns.splice(r);return}let n=this._persistedTurnRanges?.find(o=>o.turnId===e);if(!n)throw new Error(`Turn not found: ${e}`);if(this._persistedTurnRanges=void 0,n.uiStart===0){this.tchMessages.length=0,this.uiMessages.length=0,this.workIdToTurnId.clear(),this.turnIdToWorkIds.clear(),this._contextEngine.clearContext();return}this.uiMessages.splice(n.uiStart),n.compacted&&n.tchStart===0?this.tchMessages.length=0:this.tchMessages.splice(n.tchStart)}processNextPendingWork(){if(this.pendingQueue.length===0||this.state.status!=="idle")return;let e=this.pendingQueue.shift();if(e.kind==="user_message"){this.startPendingUserTurn(e);return}this.runPendingConversationAction(e)}startPendingUserTurn(e){let{prompt:n,modelId:o,displayContent:r}=e,i=typeof n=="string"?n:n.map(p=>p.type==="text"?p.text??"":p.type==="fileContext"?p.body??"":"").join(`
1633
+ `))}},Cb=class extends Error{constructor(e,n){super(e),this.name="ListenerLeakError",this.stack=n}},Eb=class extends Error{constructor(e,n){super(e),this.name="ListenerRefusalError",this.stack=n}},XB=0,Ra=class{constructor(e){this.value=e;this.id=XB++}},ej=2,tj=(t,e)=>{if(t instanceof Ra)e(t);else for(let n=0;n<t.length;n++){let o=t[n];o&&e(o)}},Ve=class{constructor(e){this._size=0;this._options=e,this._leakageMon=RR>0||this._options?.leakWarningThreshold?new Ib(e?.onListenerError??br,this._options?.leakWarningThreshold??RR):void 0,this._perfMon=this._options?._profName?new kb(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){if(!this._disposed){if(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners){if(PR){let e=this._listeners;queueMicrotask(()=>{tj(e,n=>n.stack?.print())})}this._listeners=void 0,this._size=0}this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose()}}get event(){return this._event??=(e,n,o)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let l=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(l);let c=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],u=new Eb(`${l}. HINT: Stack shows most frequent listener (${c[1]}-times)`,c[0]);return(this._options?.onListenerError||br)(u),Tt.None}if(this._disposed)return Tt.None;n&&(e=e.bind(n));let r=new Ra(e),i,s;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=Lc.create(),i=this._leakageMon.check(r.stack,this._size+1)),PR&&(r.stack=s??Lc.create()),this._listeners?this._listeners instanceof Ra?(this._deliveryQueue??=new Pb,this._listeners=[this._listeners,r]):this._listeners.push(r):(this._options?.onWillAddFirstListener?.(this),this._listeners=r,this._options?.onDidAddFirstListener?.(this)),this._options?.onDidAddListener?.(this),this._size++;let a=bs(()=>{i?.(),this._removeListener(r)});return o instanceof li?o.add(a):Array.isArray(o)&&o.push(a),a},this._event}_removeListener(e){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1){this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),this._size=0;return}let n=this._listeners,o=n.indexOf(e);if(o===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,n[o]=void 0;let r=this._deliveryQueue.current===this;if(this._size*ej<=n.length){let i=0;for(let s=0;s<n.length;s++)n[s]?n[i++]=n[s]:r&&i<this._deliveryQueue.end&&(this._deliveryQueue.end--,i<this._deliveryQueue.i&&this._deliveryQueue.i--);n.length=i}}_deliver(e,n){if(!e)return;let o=this._options?.onListenerError||br;if(!o){e.value(n);return}try{e.value(n)}catch(r){o(r)}}_deliverQueue(e){let n=e.current._listeners;for(;e.i<e.end;)this._deliver(n[e.i++],e.value);e.reset()}fire(e){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof Ra)this._deliver(this._listeners,e);else{let n=this._deliveryQueue;n.enqueue(this,e,this._listeners.length),this._deliverQueue(n)}this._perfMon?.stop()}hasListeners(){return this._size>0}};var Pb=class{constructor(){this.i=-1;this.end=0}enqueue(e,n,o){this.i=0,this.end=o,this.current=e,this.value=n}reset(){this.i=this.end,this.current=void 0,this.value=void 0}};var AR=Object.freeze(function(t,e){let n=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(n)}}}),nf;(o=>{function t(r){return r===o.None||r===o.Cancelled||r instanceof Ab?!0:!r||typeof r!="object"?!1:typeof r.isCancellationRequested=="boolean"&&typeof r.onCancellationRequested=="function"}o.isCancellationToken=t,o.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Rb.None}),o.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:AR})})(nf||={});var Ab=class{constructor(){this._isCancelled=!1;this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?AR:(this._emitter||(this._emitter=new Ve),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}};function nj(t){return t}var rf=class{constructor(e,n){this.lastCache=void 0;this.lastArgKey=void 0;typeof e=="function"?(this._fn=e,this._computeKey=nj):(this._fn=n,this._computeKey=e.getCacheKey)}get(e){let n=this._computeKey(e);return this.lastArgKey!==n&&(this.lastArgKey=n,this.lastCache=this._fn(e)),this.lastCache}};function NR(t){return!t||typeof t!="string"?!0:t.trim().length===0}function $R(t,e){return t<e?-1:t>e?1:0}function rj(t,e,n=0,o=t.length,r=0,i=e.length){for(;n<o&&r<i;n++,r++){let l=t.charCodeAt(n),c=e.charCodeAt(r);if(l<c)return-1;if(l>c)return 1}let s=o-n,a=i-r;return s<a?-1:s>a?1:0}function FR(t,e,n=0,o=t.length,r=0,i=e.length){for(;n<o&&r<i;n++,r++){let l=t.charCodeAt(n),c=e.charCodeAt(r);if(l===c)continue;if(l>=128||c>=128)return rj(t.toLowerCase(),e.toLowerCase(),n,o,r,i);MR(l)&&(l-=32),MR(c)&&(c-=32);let u=l-c;if(u!==0)return u}let s=o-n,a=i-r;return s<a?-1:s>a?1:0}function MR(t){return t>=97&&t<=122}function Aa(t,e){return t.length===e.length&&FR(t,e)===0}function Mb(t,e){let n=e.length;return n<=t.length&&FR(t,e,0,n)===0}function UR(t){return 55296<=t&&t<=56319}function Db(t){return 56320<=t&&t<=57343}function BR(t,e){return(t-55296<<10)+(e-56320)+65536}var oj=/(?:\x1b\[|\x9b)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~]/,ij=/(?:\x1b\]|\x9d).*?(?:\x1b\\|\x07|\x9c)/,sj=/\x1b(?:[ #%\(\)\*\+\-\.\/]?[a-zA-Z0-9\|}~@])/,Sfe=new RegExp("(?:"+[oj.source,ij.source,sj.source].join("|")+")","g");var kfe=String.fromCharCode(65279);var DR=class t{static{this._INSTANCE=null}static getInstance(){return t._INSTANCE||(t._INSTANCE=new t),t._INSTANCE}constructor(){this._data=aj()}getGraphemeBreakType(e){if(e<32)return e===10?3:e===13?2:4;if(e<127)return 0;let n=this._data,o=n.length/3,r=1;for(;r<=o;)if(e<n[3*r])r=2*r;else if(e>n[3*r+1])r=2*r+1;else return n[3*r+2];return 0}};function aj(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}var OR=class t{constructor(e){this.confusableDictionary=e}static{this.ambiguousCharacterData=new vs(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,1523,96,8242,96,1370,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,118002,50,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,118003,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,118004,52,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,118005,53,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,118006,54,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,118007,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,118008,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,118009,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,117974,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,117975,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71913,67,71922,67,65315,67,8557,67,8450,67,8493,67,117976,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,117977,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,117978,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,117979,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,117980,71,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,117981,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,117983,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,117984,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,118001,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,117982,108,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,117985,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,117986,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,117987,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,118000,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,117988,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,117989,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,117990,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,117991,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,117992,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,117993,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,117994,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,117995,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71910,87,71919,87,117996,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,117997,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,117998,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,71909,90,66293,90,65338,90,8484,90,8488,90,117999,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65283,35,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"cs":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"es":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"fr":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"it":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ja":[8211,45,8218,44,65281,33,8216,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65292,44,65297,49,65307,59],"ko":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pt-BR":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ru":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"zh-hans":[160,32,65374,126,8218,44,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65297,49],"zh-hant":[8211,45,65374,126,8218,44,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89]}'))}static{this.cache=new rf({getCacheKey:JSON.stringify},e=>{function n(u){let d=new Map;for(let p=0;p<u.length;p+=2)d.set(u[p],u[p+1]);return d}function o(u,d){let p=new Map(u);for(let[f,m]of d)p.set(f,m);return p}function r(u,d){if(!u)return d;let p=new Map;for(let[f,m]of u)d.has(f)&&p.set(f,m);return p}let i=this.ambiguousCharacterData.value,s=e.filter(u=>!u.startsWith("_")&&Object.hasOwn(i,u));s.length===0&&(s=["_default"]);let a;for(let u of s){let d=n(i[u]);a=r(a,d)}let l=n(i._common),c=o(l,a);return new t(c)})}static getInstance(e){return t.cache.get(Array.from(e))}static{this._locales=new vs(()=>Object.keys(t.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")))}static getLocales(){return t._locales.value}isAmbiguous(e){return this.confusableDictionary.has(e)}containsAmbiguousCharacter(e){for(let n=0;n<e.length;n++){let o=e.codePointAt(n);if(typeof o=="number"&&this.isAmbiguous(o))return!0}return!1}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}},LR=class t{static getRawData(){return JSON.parse('{"_common":[11,12,13,127,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999],"cs":[173,8203,12288],"de":[173,8203,12288],"es":[8203,12288],"fr":[173,8203,12288],"it":[160,173,12288],"ja":[173],"ko":[173,12288],"pl":[173,8203,12288],"pt-BR":[173,8203,12288],"qps-ploc":[160,173,8203,12288],"ru":[173,12288],"tr":[160,173,8203,12288],"zh-hans":[160,173,8203,12288],"zh-hant":[173,12288]}')}static{this._data=void 0}static getData(){return this._data||(this._data=new Set([...Object.values(t.getRawData())].flat())),this._data}static isInvisibleCharacter(e){return t.getData().has(e)}static containsInvisibleCharacter(e){for(let n=0;n<e.length;n++){let o=e.codePointAt(n);if(typeof o=="number"&&(t.isInvisibleCharacter(o)||o===32))return!0}return!1}static get codePoints(){return t.getData()}};function Ob(t,e,n=32){let o=n-e,r=~((1<<o)-1);return(t<<e|(r&t)>>>o)>>>0}function $c(t,e=32){return t instanceof ArrayBuffer?CR(ci.wrap(new Uint8Array(t))):(t>>>0).toString(16).padStart(e/4,"0")}var of=class t{constructor(){this._h0=1732584193;this._h1=4023233417;this._h2=2562383102;this._h3=271733878;this._h4=3285377520;this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}static{this._bigBlock32=new DataView(new ArrayBuffer(320))}update(e){let n=e.length;if(n===0)return;let o=this._buff,r=this._buffLen,i=this._leftoverHighSurrogate,s,a;for(i!==0?(s=i,a=-1,i=0):(s=e.charCodeAt(0),a=0);;){let l=s;if(UR(s))if(a+1<n){let c=e.charCodeAt(a+1);Db(c)?(a++,l=BR(s,c)):l=65533}else{i=s;break}else Db(s)&&(l=65533);if(r=this._push(o,r,l),a++,a<n)s=e.charCodeAt(a);else break}this._buffLen=r,this._leftoverHighSurrogate=i}_push(e,n,o){return o<128?e[n++]=o:o<2048?(e[n++]=192|(o&1984)>>>6,e[n++]=128|(o&63)>>>0):o<65536?(e[n++]=224|(o&61440)>>>12,e[n++]=128|(o&4032)>>>6,e[n++]=128|(o&63)>>>0):(e[n++]=240|(o&1835008)>>>18,e[n++]=128|(o&258048)>>>12,e[n++]=128|(o&4032)>>>6,e[n++]=128|(o&63)>>>0),n>=64&&(this._step(),n-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),n}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),$c(this._h0)+$c(this._h1)+$c(this._h2)+$c(this._h3)+$c(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,this._buff.subarray(this._buffLen).fill(0),this._buffLen>56&&(this._step(),this._buff.fill(0));let e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){let e=t._bigBlock32,n=this._buffDV;for(let d=0;d<64;d+=4)e.setUint32(d,n.getUint32(d,!1),!1);for(let d=64;d<320;d+=4)e.setUint32(d,Ob(e.getUint32(d-12,!1)^e.getUint32(d-32,!1)^e.getUint32(d-56,!1)^e.getUint32(d-64,!1),1),!1);let o=this._h0,r=this._h1,i=this._h2,s=this._h3,a=this._h4,l,c,u;for(let d=0;d<80;d++)d<20?(l=r&i|~r&s,c=1518500249):d<40?(l=r^i^s,c=1859775393):d<60?(l=r&i|r&s|i&s,c=2400959708):(l=r^i^s,c=3395469782),u=Ob(o,5)+l+a+c+e.getUint32(d*4,!1)&4294967295,a=s,s=i,i=Ob(r,30),r=o,o=u;this._h0=this._h0+o&4294967295,this._h1=this._h1+r&4294967295,this._h2=this._h2+i&4294967295,this._h3=this._h3+s&4294967295,this._h4=this._h4+a&4294967295}};function jR(t){let n=`${(t??"").trim().toLowerCase()}|${Date.now()}|${je()}`,o=new of;o.update(n);let i=o.digest().slice(0,32),s=i.slice(0,8),a=i.slice(8,12),l=`4${i.slice(12,15)}`,c=(parseInt(i.slice(16,20),16)&16383|32768).toString(16).padStart(4,"0"),u=i.slice(20,32);return`${s}-${a}-${l}-${c}-${u}`}var sf=class t{config;policyEngine;eventBus;messageBus;toolScheduler;roleManager;packRegistry;llm;workspaceProvider;toolProvider;environmentSnapshot;getSystemReminder;getUserContext;onContextOverThreshold;onContextPartialCompress;persistConversation;switchToAgentCallback;getGatewayTraceEmail;llmInjected;initialized=!1;constructor(e={}){this.config=e.config??Ca(),e.llm&&(this.llmInjected=e.llm),e.toolProvider&&(this.toolProvider=e.toolProvider),e.environment&&(this.environmentSnapshot=e.environment),e.workspaceProvider?this.workspaceProvider=e.workspaceProvider:e.workspacePath?this.workspaceProvider=new Ia(e.workspacePath):this.workspaceProvider=new Ia,e.getSystemReminder&&(this.getSystemReminder=e.getSystemReminder),e.getUserContext&&(this.getUserContext=e.getUserContext),e.getGatewayTraceEmail&&(this.getGatewayTraceEmail=e.getGatewayTraceEmail)}buildGatewayTraceId(){return jR(this.getGatewayTraceEmail?.())}getSystemReminderProvider(){return this.getSystemReminder}getUserContextProvider(){return this.getUserContext}async preloadUserContext(){this.getUserContext&&await this.getUserContext.load()}async refreshUserContext(){this.getUserContext&&await this.getUserContext.refresh()}setOnContextOverThreshold(e){this.onContextOverThreshold=e}getOnContextOverThreshold(){return this.onContextOverThreshold}setOnContextPartialCompress(e){this.onContextPartialCompress=e}getOnContextPartialCompress(){return this.onContextPartialCompress}setPersistConversation(e){this.persistConversation=e}getPersistConversation(){return this.persistConversation}setSwitchToAgentCallback(e){this.switchToAgentCallback=e}getSwitchToAgentCallback(){return this.switchToAgentCallback}createVSCodeWorkspaceProvider(){try{if(typeof gc>"u")throw new Error("require is not available. VSCodeWorkspaceProvider cannot be created.");let e=gc("vscode"),{VSCodeWorkspaceProvider:n}=(WR(),y3(zR));return new n(e)}catch(e){return console.warn("[Config] Failed to load VSCodeWorkspaceProvider, falling back to default:",e instanceof Error?e.message:e),new Ia}}static create(e){return new t(e)}getConfig(){return{...this.config}}getLoggingConfig(){return this.config.logging}getInternalLoggingConfig(){return this.config.logging.internal}getUserLoggingConfig(){return this.config.logging.user}getEnvironment(){return this.config.environment}getVersion(){return this.config.version}getTrivalModels(){return this.config.trivalModels??[]}isDevelopment(){return this.config.environment==="development"}isProduction(){return this.config.environment==="production"}isVSCodeIntegration(){return!1}reload(){this.config=Ca()}async initialize(){if(this.initialized)throw new Error("Config already initialized");let e=this.getDefaultPolicyDecision();this.policyEngine=new jp(e);for(let r of ub)this.policyEngine.addRule(r);let n=this.config.llm?.debug??!1;if(this.eventBus=new hc(n),(this.config.llm?.enableMessageBus??!0)&&(this.messageBus=new zp(this.policyEngine,n)),!this.toolProvider)throw new Error("ToolProvider is required. Please provide a toolProvider in ConfigParameters.");if(this.toolScheduler=new Vp(this.toolProvider,this.policyEngine),this.llmInjected&&(this.llm=this.llmInjected),this.llm){if(await ti.getInstance().load(),!this.toolProvider)throw new Error("ToolProvider is required for RoleManager. Please provide a toolProvider in ConfigParameters.");this.roleManager=new Ac({toolProvider:this.toolProvider,llm:this.llm,toolScheduler:this.toolScheduler,eventBus:this.eventBus,messageBus:this.messageBus});let i;this.workspaceProvider?i=(await this.workspaceProvider.getPrimaryWorkspace())?.path??"":typeof process<"u"&&typeof process.cwd=="function"?i=process.cwd():i="";let s=Ac.createDefaultContext(i,{environment:this.environmentSnapshot});await this.roleManager.registerAllRoles(s)}!!1&&this.workspaceProvider&&await this.workspaceProvider.resolvePath("."),this.initialized=!0}getDefaultPolicyDecision(){let e=this.config.llm?.defaultPolicyDecision;return e==="allow"?Et.ALLOW:e==="deny"?Et.DENY:e==="exclude"?Et.EXCLUDE:Et.ASK}getOrThrow(e,n){if(!this.initialized||n===void 0)throw new Error("Config not initialized. Call initialize() first.");return n}getPolicyEngine(){return this.getOrThrow("policyEngine",this.policyEngine)}getEventBus(){return this.getOrThrow("eventBus",this.eventBus)}getMessageBus(){if(!this.initialized)throw new Error("Config not initialized. Call initialize() first.");return this.messageBus}getToolScheduler(){return this.getOrThrow("toolScheduler",this.toolScheduler)}getRoleManager(){return this.getOrThrow("roleManager",this.roleManager)}setRoleManager(e){this.roleManager=e}getPackRegistry(){return this.packRegistry}setPackRegistry(e){this.packRegistry=e}getLLM(){return this.getOrThrow("llm",this.llm)}setLLM(e){this.llm=e}getEnvironmentSnapshot(){return this.environmentSnapshot}setEnvironmentSnapshot(e){this.environmentSnapshot=e}getWorkspaceProvider(){if(!this.workspaceProvider)throw new Error("WorkspaceProvider not initialized");return this.workspaceProvider}setToolProvider(e){this.toolProvider=e}getToolProvider(){return this.toolProvider}isInitialized(){return this.initialized}isTestRendererEnabled(){return this.config.environment==="development"}isDebugMode(){let e=this.config.logging?.internal;return e?this.config.environment==="development"&&e.minLevel==="debug":!1}};tn();tn();gr();tn();gr();function KR(t){if(t.role==="tool"||t.role==="assistant"&&t.toolCalls!==void 0&&t.toolCalls.length>0)return!0;let e=t.displayData;if(e!==void 0&&typeof e=="object"&&e!==null&&"tool"in e){let n=e.tool;return typeof n=="string"&&n.length>0}return!1}var cj=new Set(["AUTH_LOGOUT_REQUIRED","JWT_BLACKLISTED","PANDA_NOT_LOGGED_IN"]);function uj(t){if(!t)return;let e=t.trim().toLowerCase();return e==="user"||e==="user-cancel"?"user":e==="system"?"system":e==="timeout"?"timeout":e==="superseded"?"superseded":"unknown"}function dj(t){if(t)return t.trim().toUpperCase()}function pj(t,e){let n=t?.trim();if(n)return e&&cj.has(e)||n.includes("PANDA_NOT_LOGGED_IN")?"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u5DF2\u62D2\u7EDD\u672C\u6B21\u8BF7\u6C42\u3002\u8BF7\u5148\u6267\u884C /auth login\u3002":n}function Ma(t){let e=uj(t.cancelReason),n=dj(t.errorCode),o=pj(t.errorMessage,n),r=t.terminalStatus==="cancelled"&&e==="user"&&t.inputEmptyAtCancel===!0&&t.hasQueuedWork!==!0&&t.isViewingSubThread!==!0&&t.hasMeaningfulOutput!==!0;return{terminalStatus:t.terminalStatus,...e!==void 0?{cancelReason:e}:{},shouldFinalizeTurn:!0,shouldFinalizeCancelledOutput:t.terminalStatus==="cancelled",shouldAdvanceQueue:!0,shouldRewind:r,...r&&t.restoreCandidate!==void 0?{restorePrompt:t.restoreCandidate}:{},...o!==void 0?{normalizedErrorMessage:o}:{},...n!==void 0?{normalizedErrorCode:n}:{}}}var fj="",Da=class t{turnId;conversationId;createdAt;cctx;prompt;turnDisplaySummary;modelId;source;runtimeModelInfo;gatewayTraceId;state;works=[];rootWork=null;tchMessageRange=[0,0];uiMessageRange=[0,0];compacted=!1;metrics;isRestored;result;startTime;constructor(e,n,o,r,i){this.cctx=e,this.conversationId=e.conversationId,typeof n=="string"?(this.isRestored=!1,this.turnId=je(),this.createdAt=Date.now(),this.prompt=n,this.turnDisplaySummary=i,this.modelId=o,this.source=r,this.runtimeModelInfo=void 0,this.gatewayTraceId=e.config.buildGatewayTraceId(),this.state={status:"pending"},this.compacted=!1):(this.isRestored=!0,this.turnId=n.turnId,this.createdAt=0,this.prompt=fj,this.turnDisplaySummary=void 0,this.modelId=void 0,this.source=void 0,this.runtimeModelInfo=void 0,this.gatewayTraceId=n.turnId,this.state={status:"completed"},this.uiMessageRange=[n.uiStart,n.uiEnd],this.tchMessageRange=[n.tchStart,n.tchEnd],this.compacted=n.compacted??!1)}static createForRestore(e,n,o,r){return new t(e,{turnId:n,compacted:r,...o})}getTchMessages(){return this.cctx.tchMessages.slice(this.tchMessageRange[0],this.tchMessageRange[1])}getUiMessages(){return this.cctx.uiMessages.slice(this.uiMessageRange[0],this.uiMessageRange[1])}async start(){if(this.isRestored)throw new Error("Cannot start a restored turn");if(this.state.status!=="pending")throw new Error(`Turn ${this.turnId} is not in pending state`);this.startTime=Date.now(),this.state.status="running";let e=this.cctx.config.getEventBus();if(e.emit(P.TURN_STARTED,{conversationId:this.conversationId,turnId:this.turnId,prompt:this.prompt,...this.turnDisplaySummary!==void 0&&this.turnDisplaySummary!==this.prompt?{displayPrompt:this.turnDisplaySummary}:{},updatedAt:this.cctx.updatedAt}),await this.hydrateRuntimeModelInfo(),!this.isCancelledAfterConcurrentCancel())try{if(this.rootWork===null&&(this.emitLog("debug","Turn","Creating Main Role Work..."),this.rootWork=await this.createMainRoleWork()),this.isCancelledAfterConcurrentCancel()||(this.rootWork!==null?(this.emitLog("info","Turn",`Executing rootWork: ${this.rootWork.workId}`),await this.rootWork.execute(this.prompt)):this.emitLog("warn","Turn","No rootWork created, task will complete without execution"),this.isCancelledAfterConcurrentCancel()))return;this.state.status="completed",this.collectResults(),this.metrics=this.collectMetrics(),this.rootWork!==null&&await this.rootWork.emitContextMetricsAfterReAct(),e.emit(P.TURN_COMPLETED,{conversationId:this.conversationId,turnId:this.turnId,result:this.result,duration:this.startTime!==void 0?Date.now()-this.startTime:void 0,turnTchMessages:this.cctx.tchMessages.slice(this.tchMessageRange[0],this.tchMessageRange[1]),turnUiMessages:this.cctx.uiMessages.slice(this.uiMessageRange[0],this.cctx.uiMessages.length),conversationUiMessages:[...this.cctx.uiMessages],metrics:this.metrics})}catch(n){if(this.isCancelledAfterConcurrentCancel())return;this.state.status="failed",this.state.error=n instanceof Error?n:new Error(String(n)),console.warn("[TurnImpl] TURN_FAILED source error snapshot",{conversationId:this.conversationId,turnId:this.turnId,errorName:this.state.error.name,errorMessage:this.state.error.message,errorCode:this.state.error.code,isLLMErrorLike:typeof this.state.error.code=="string"}),this.metrics=this.collectMetrics();let o=Ma({terminalStatus:"failed",errorMessage:this.state.error.message,errorCode:typeof this.state.error?.code=="string"?this.state.error.code:void 0});throw e.emit(P.TURN_FAILED,{conversationId:this.conversationId,turnId:this.turnId,error:this.state.error,errorCode:typeof this.state.error?.code=="string"?this.state.error.code:void 0,...o.normalizedErrorMessage!==void 0?{normalizedError:o.normalizedErrorMessage}:{},metrics:this.metrics}),n}}createMainRoleWorkSync(){if(this.isRestored)return null;if(this.rootWork!==null)return this.rootWork;let e=this.cctx.config;if(!e.isInitialized())return this.emitLog("warn","Turn","Config is not initialized, cannot create Main Role Work"),null;try{let n=e.getRoleManager(),o=this.cctx.interactionMode,r=e.getPackRegistry(),i=aE(o,r),s=n.getRoleDefinition(i);if(!s)throw this.emitLog("error","Turn",`Main role is not registered in RoleManager: ${i}`),new Error(`Main role is not registered in RoleManager: ${i}`);if(!e.getToolProvider())throw this.emitLog("error","Turn","ToolProvider is not available from Config"),new Error("ToolProvider is not available from Config");let l=new _a(this.cctx,this,i,s);return this.works.push(l),this.cctx.registerWork(l.workId,this.turnId),this.rootWork=l,this.emitLog("info","Turn",`Main Role Work created: ${l.workId}, role=${i}`),l}catch(n){let o=n instanceof Error?n.message:String(n);return this.emitLog("error","Turn",`Failed to create Main Role Work: ${o}`),null}}async createMainRoleWork(){return this.createMainRoleWorkSync()}async cancel(e){if(this.isRestored||this.state.status==="completed"||this.state.status==="cancelled")return;this.state.status="cancelled",this.collectResults(),this.metrics=this.collectMetrics();let n=e?.restorePrompt;this.cctx.eventBus.emit(P.TURN_CANCELLED,{conversationId:this.conversationId,turnId:this.turnId,...e?.reason!==void 0?{reason:e.reason}:{},...e?.inputEmptyAtCancel!==void 0?{inputEmptyAtCancel:e.inputEmptyAtCancel}:{},...e?.isViewingSubThread!==void 0?{isViewingSubThread:e.isViewingSubThread}:{},...n!==void 0&&n!==""?{restorePromptCandidate:n}:{},metrics:this.metrics}),this.rootWork!==null&&await this.rootWork.cancel()}getResult(){return this.result}getElapsedMs(){if(this.startTime!==void 0)return Date.now()-this.startTime}isCancelledAfterConcurrentCancel(){return this.state.status==="cancelled"}async hydrateRuntimeModelInfo(){if(!this.cctx.config.isInitialized())return;let e;try{e=this.cctx.config.getLLM()}catch{return}if(typeof e.getModelInfo=="function")try{this.runtimeModelInfo=await e.getModelInfo(this.modelId)}catch{this.runtimeModelInfo=void 0}}collectResults(){let e=[];this.rootWork!==null&&this.rootWork.state.result!==void 0&&e.push(this.rootWork.state.result);for(let o of this.works)o!==this.rootWork&&o.state.result!==void 0&&e.push(o.state.result);let n=this.rootWork?.state.result?.output;this.result={success:this.state.status==="completed",workResults:e,error:this.state.error,...n!==void 0?{output:n}:{}}}collectMetrics(){let e=Date.now(),n=this.startTime??e,o=e-n,r=this.rootWork?.getReActResult?.()??null,i={},s=0;if(r?.toolCallHistory)for(let f of r.toolCallHistory){let m=f.request.name;i[m]=(i[m]??0)+1,s++}let a=this.modelId??"unknown",l=this.runtimeModelInfo?.displayName??a,c=this.state.status==="completed"?"completed":this.state.status==="cancelled"?"cancelled":"failed",u=r?.usage?.promptTokens??0,d=r?.usage?.completionTokens??0,p=Ta(r?.usage);return{modelId:a,modelName:l,interactionMode:this.cctx.interactionMode,startedAt:n,completedAt:e,duration:o,reactLoopCount:r?.iterationCount??0,toolCallCount:s,toolCallBreakdown:i,promptTokens:u,completionTokens:d,totalTokens:p,status:c,errorMessage:this.state.error?.message}}emitLog(e,n,o,r){this.cctx.eventBus.emit(P.LOG,{conversationId:this.conversationId,turnId:this.turnId,level:e,source:n,message:o,...r!==void 0?{data:r}:{}})}};function mj(t){return`[file:${t.replace(/\\/g,"/")}]`}function HR(t){switch(t.type){case"text":return t.text??"";case"image":return"[img]";case"fileContext":return t.displayPath?mj(t.displayPath):"[file]";case"code":return"[code]";case"pandaCommand":return t.commandName?`/${t.commandName}`:"";case"pandaSkill":return t.skillName?`/${t.skillName}`:"";default:return""}}function gj(t){if(t.type!=="fileContext")return"";let e=t.displayPath??"";return e?typeof t.startLine=="number"&&typeof t.endLine=="number"?`@${e}:${t.startLine}-${t.endLine}`:`@${e}`:""}function VR(t,e){if(e.type!=="fileContext")return t;let n=gj(e);return n&&t.endsWith(n)?t.slice(0,-n.length):t}function hj(t,e){return t.type!=="pandaSkill"&&t.type!=="pandaCommand"||e.length===0?!1:!/^\s/u.test(e)}function xs(t){if(typeof t=="string")return t;if(t.length===0)return"";let e=HR(t[0]);t[0].type==="text"&&t[1]?.type==="fileContext"&&(e=VR(e,t[1]));let n=e;for(let o=1;o<t.length;o++){let r=t[o-1],i=t[o],s=HR(i);i.type==="text"&&t[o+1]?.type==="fileContext"&&(s=VR(s,t[o+1])),hj(r,s)&&(n+=" "),n+=s}return n}function af(t){return typeof t=="string"?t:t.map(e=>e.type==="fileContext"?{...e,body:void 0}:e)}tn();gr();function Oa(t,e){return t.resolveWorkById(e)}function yj(t){return t&&typeof t=="object"&&"tool"in t?t.tool:void 0}function vj(t,e,n,o,r){let i={messageId:e,role:n,content:o,turnId:r},s=!t.isSubAgent;return{message:i,isMain:s}}function bj(t,e){if(e.toolResult){let n=e.displayData&&typeof e.displayData=="object"&&e.displayData!==null&&"status"in e.displayData&&typeof e.displayData.status=="object"?e.displayData.status:void 0;return{...t,...e.displayData,status:{...n,state:"success",duration:e.toolResult.durationMs}}}return e.toolError?{...t,status:{state:"error",error:e.toolError.message}}:t}var lf=class{cctx;eventBus;policy;map=new Map;streamingContentByTurnId=new Map;constructor(e,n){this.cctx=e,this.eventBus=e.config.getEventBus(),this.policy=n}createMessage(e){let n=je(),{turnId:o,workId:r,messageType:i,initialContent:s="",uiContent:a,toolCallId:l,displayData:c}=e;if(i==="user"&&!r)return this.createUserMessageForTest(n,o,s,a);let u=Oa(this.cctx,r);if(!u)throw new Error(`ContextEngine: work not found for workId=${r}`);let d=i==="tool"?yj(c):void 0,{message:p,isMain:f}=vj(u,n,i,s,o),m=this.policy.applyCreate({messageId:n,messageType:i,initialContent:s,uiContent:a,toolCallId:i==="tool"?l:void 0,toolName:d,displayData:c,workId:r,turnId:o}),{uiStart:g,tchLenBefore:h,tchMessageIndex:y,uiMessageIndex:v}=this.pushPolicyOutputAndGetIndices(u,m);this.updateTurnRangesForCreate(o,i,f,u,g,h);let b=m.tch??p;this.registerInProgressIfNeeded(n,b,v,y,o,r,i,l,d);let R=i==="user"&&a!==void 0?a:s;return this.emitCreateEventByMessageType(i,o,r,n,R,d,l,c,v),n}createUserMessageForTest(e,n,o,r){let i=this.cctx.uiMessages.length,s=this.cctx.tchMessages.length,a=this.policy.applyCreate({messageId:e,messageType:"user",initialContent:o,uiContent:r,turnId:n});a.tch&&this.cctx.tchMessages.push(a.tch),a.ui&&this.cctx.uiMessages.push(a.ui);let l=this.cctx.currentTurn;l&&l.turnId===n&&(l.uiMessageRange[0]=i,l.uiMessageRange[1]=this.cctx.uiMessages.length,l.tchMessageRange[0]=s,l.tchMessageRange[1]=this.cctx.tchMessages.length);let c=r!==void 0?r:o;return this.eventBus.emit(P.USER_MESSAGE_ADDED,{conversationId:this.cctx.conversationId,turnId:n,messageId:e,content:c}),e}pushPolicyOutputAndGetIndices(e,n){let o=this.cctx.uiMessages.length,r=e.tchMessageRef,i=r.length,s,a;return n.tch&&(r.push(n.tch),s=r.length-1),n.ui&&(this.cctx.uiMessages.push(n.ui),a=this.cctx.uiMessages.length-1),{uiStart:o,tchLenBefore:i,tchMessageIndex:s,uiMessageIndex:a}}updateTurnRangesForCreate(e,n,o,r,i,s){let a=this.cctx.currentTurn;!a||a.turnId!==e||(n==="user"?(a.uiMessageRange[0]=i,a.uiMessageRange[1]=this.cctx.uiMessages.length,o&&(a.tchMessageRange[0]=s,a.tchMessageRange[1]=this.cctx.tchMessages.length),o||(r.tchMessageRange[0]=Math.min(r.tchMessageRange[0],s),r.tchMessageRange[1]=r.tchMessageRef.length)):o?(r.uiMessageRange[1]=this.cctx.uiMessages.length,r.tchMessageRange[1]=this.cctx.tchMessages.length,a.uiMessageRange[1]=this.cctx.uiMessages.length,a.tchMessageRange[1]=this.cctx.tchMessages.length):(a.uiMessageRange[1]=this.cctx.uiMessages.length,r.uiMessageRange[1]=this.cctx.uiMessages.length,r.tchMessageRange[1]=r.tchMessageRef.length))}registerInProgressIfNeeded(e,n,o,r,i,s,a,l,c){a!=="user"&&this.map.set(e,{message:n,uiMessageIndex:o,tchMessageIndex:r,turnId:i,workId:s,messageType:a,...a==="tool"&&l!==void 0&&{toolCallId:l},...a==="tool"&&c!==void 0&&{toolName:c},...(a==="assistant"||a==="thinking")&&{pendingContentChunks:typeof n.content=="string"&&n.content.length>0?[n.content]:[]}})}emitCreateEventByMessageType(e,n,o,r,i,s,a,l,c){let u=this.cctx.conversationId,d=c!==void 0,p={conversationId:u,turnId:n,workId:o,messageId:r};if(e==="user"){this.eventBus.emit(P.USER_MESSAGE_ADDED,{...p,content:i});return}if(e==="assistant"){let f=typeof i=="string"?i:"";if(this.streamingContentByTurnId.set(n,f),d&&f){let m=!!Oa(this.cctx,o)?.isSubAgent;this.eventBus.emit(P.ASSISTANT_MESSAGE_STARTED,{...p,chunk:f,isSubAgentWork:m})}return}if(e==="thinking"&&d){let f=typeof i=="string"?i:"",m=!!Oa(this.cctx,o)?.isSubAgent;this.eventBus.emit(P.THINKING_STARTED,{...p,isSubAgentWork:m,...f&&{chunk:f}});return}e==="tool"&&d&&this.eventBus.emit(P.TOOL_CALL_REQUESTED,{...p,toolName:s??"",args:{},toolCallId:a??"",displayData:l})}updateMessage(e,n){let o=this.map.get(e);if(!o)return;let{message:r,uiMessageIndex:i,tchMessageIndex:s,turnId:a,workId:l,messageType:c}=o,u=this.cctx.conversationId,d=n.isLast===!0,p=c==="assistant"||c==="thinking",f=typeof r.content=="string"?r.content:"";if(p){let v=o.pendingContentChunks??[];n.content!==void 0&&n.content.length>0&&(v.push(n.content),o.pendingContentChunks=v),d&&(f=v.join(""),r.content=f)}else n.content!==void 0&&(f=(typeof r.content=="string"?r.content:"")+n.content,r.content=f);n.toolCalls!==void 0&&(r.toolCalls=n.toolCalls);let m=i!==void 0?this.cctx.uiMessages[i]:void 0,g;m&&(p?d&&(m.content=f):m.content=f,n.displayData!==void 0&&(m.displayData=n.displayData),d&&(c==="assistant"?this.applyCompletionDuration(m):c==="thinking"&&(g=this.applyCompletionDuration(m,{status:{state:"complete"}}))));let h=this.cctx.resolveWorkById(l),y=c==="tool"?o.toolName:void 0;if(s!==void 0&&h){let v=this.policy.applyUpdate({messageId:e,messageType:c,content:f,toolCallId:o.toolCallId,toolName:y,toolResult:n.toolResult,toolError:n.toolError,toolCalls:c==="assistant"?r.toolCalls:void 0,turnId:a});v.tch&&(h.tchMessageRef[s]=v.tch)}c==="assistant"?this.applyAssistantUpdate(o,n,m,d,u,a,l,e):c==="thinking"?this.applyThinkingUpdate(o,n,m,d,g,u,a,l,e):c==="tool"&&this.applyToolUpdate(o,n,m,d,y,u,a,l,e),d&&(o.pendingContentChunks=void 0,this.map.delete(e))}applyAssistantUpdate(e,n,o,r,i,s,a,l){if(o){let c=!!Oa(this.cctx,a)?.isSubAgent;this.eventBus.emitStreaming(P.MESSAGE_STREAMING,{conversationId:i,turnId:s,workId:a,messageId:l,isSubAgentWork:c,chunk:r?"":n.content??"",done:r},r)}r?this.streamingContentByTurnId.delete(s):n.content&&n.content.length>0&&this.streamingContentByTurnId.set(s,this.collectPendingAssistantContentByTurnId(s))}applyThinkingUpdate(e,n,o,r,i,s,a,l,c){if(o){let u=!!Oa(this.cctx,l)?.isSubAgent;this.eventBus.emitStreaming(P.THINKING_STREAMING,{conversationId:s,turnId:a,workId:l,messageId:c,isSubAgentWork:u,chunk:n.content??"",duration:i},r)}}applyToolUpdate(e,n,o,r,i,s,a,l,c){if(!o)return;if(!r){let p=e.toolCallId??"";p&&this.eventBus.emit(P.TOOL_CALL_PROGRESS,{conversationId:s,turnId:a,workId:l,toolName:i??"",toolCallId:p,messageId:c,displayData:o.displayData});return}let u=o.displayData&&typeof o.displayData=="object"?o.displayData:{};o.displayData=bj(u,n);let d=e.toolCallId??"";if(n.toolError)this.eventBus.emit(P.TOOL_CALL_FAILED,{conversationId:s,turnId:a,workId:l,toolName:i??"",toolCallId:d,error:n.toolError,messageId:c,displayData:o.displayData});else if(n.toolResult){let p=n.toolResult.result,f={conversationId:s,turnId:a,workId:l,toolName:i??"",toolCallId:d,result:p,duration:n.toolResult.durationMs,messageId:c};this.eventBus.emit(P.TOOL_CALL_EXECUTED,f)}}applyCompletionDuration(e,n){let o=Date.now()-(e.timestamp??Date.now()),r=e.displayData&&typeof e.displayData=="object"?e.displayData:{};return e.displayData={...r,duration:o,...n},o}getStreamingContentByTurnId(e){return this.streamingContentByTurnId.get(e)??this.collectPendingAssistantContentByTurnId(e)}finalizeTurnOnCancel(e){let n=this.getStreamingContentByTurnId(e);this.streamingContentByTurnId.delete(e);for(let[o,r]of this.map.entries())r.turnId===e&&this.map.delete(o);n.trim()&&this.commitCanceledAssistantMessage(n.trim(),e)}appendTurnFailureMessage(e,n,o){if(!Oa(this.cctx,n))return;let i=qE(o);this.createMessage({turnId:e,workId:n,messageType:"assistant",initialContent:i})}commitCanceledAssistantMessage(e,n){let o=je(),r=this.policy.applyUpdate({messageId:o,messageType:"assistant",content:e,turnId:n});r.tch&&this.cctx.tchMessages.push(r.tch),this.cctx.uiMessages.push({messageId:o,role:"assistant",content:e,timestamp:Date.now(),turnId:n})}clearContext(){this.map.clear(),this.streamingContentByTurnId.clear()}collectPendingAssistantContentByTurnId(e){for(let n of this.map.values()){if(n.turnId!==e||n.messageType!=="assistant")continue;let o=n.pendingContentChunks;return o&&o.length>0?o.join(""):typeof n.message.content=="string"?n.message.content:""}return""}};var qR=I.DELETE_FILE,GR=I.READ_FILE,ZR=I.WRITE_FILE,JR=I.GREP,YR=I.GLOB,xj=new Set([qR,GR,ZR,JR,YR]),Tj={[qR]:"delete",[GR]:"read",[ZR]:"write",[JR]:"grep",[YR]:"glob_file_search"};function wj(t){return xj.has(t)}function _j(t,e,n,o,r){let i=Tj[e]??"tool",s=n?`${i} success`:`${i} failed`;return{messageId:t,role:"tool",content:"",toolResults:[{toolCallId:o,content:s,isError:!n}],turnId:r}}function Sj(t){let{messageId:e,messageType:n,initialContent:o="",toolCallId:r,turnId:i}=t;switch(n){case"user":return{messageId:e,role:"user",content:o,turnId:i};case"assistant":return{messageId:e,role:"assistant",content:o,turnId:i};case"thinking":return{messageId:e,role:"thinking",content:o,turnId:i};case"tool":return{messageId:e,role:"tool",content:"",toolResults:[{toolCallId:r??"",content:"",isError:!1}],turnId:i};default:return}}function kj(t){let{messageId:e,messageType:n,initialContent:o="",uiContent:r,turnId:i}=t,l={messageId:e,role:n==="user"?"user":n,content:n==="user"&&r!==void 0?r:o,timestamp:Date.now(),turnId:i};return n==="user"?{...l,...t.workId!==void 0&&{workId:t.workId}}:{...l,...t.displayData!==void 0&&{displayData:t.displayData},...t.workId!==void 0&&{workId:t.workId}}}function Ij(t){let{messageId:e,messageType:n,content:o,toolCallId:r="",toolResult:i,toolError:s,turnId:a}=t,l=t.toolName;switch(n){case"assistant":return{messageId:e,role:"assistant",content:o,turnId:a,...t.toolCalls?.length?{toolCalls:t.toolCalls}:{}};case"thinking":return{messageId:e,role:"thinking",content:o,turnId:a};case"tool":{let c=!s&&!!i;return l!==void 0&&wj(l)?_j(e,l,c,r,a):{messageId:e,role:"tool",content:o,toolResults:[{toolCallId:r,content:o,isError:!!s}],turnId:a}}default:return}}var cf=class{applyCreate(e){let n=Sj(e),o=kj(e);return{...n!==void 0&&{tch:n},ui:o}}applyUpdate(e){let n=Ij(e);return{...n!==void 0&&{tch:n}}}};function QR(t,e){return typeof t!="number"?0:Math.max(0,e-t)}function Cj(t,e){if(t.role!=="thinking")return!1;let n=t.displayData;if(!n||typeof n!="object"||n.status?.state!=="streaming")return!1;let o=typeof n.duration=="number"?n.duration:QR(t.timestamp,e);return t.displayData={...n,status:{state:"cancelled"},duration:o},!0}function Ej(t){return typeof t=="object"&&t!==null&&"tool"in t}function Pj(t,e){if(t.role!=="tool")return!1;let n=t.displayData;if(!Ej(n))return!1;let o=n.status;if(!o||o.state!=="pending"&&o.state!=="executing")return!1;let r={...o,state:"cancelled",duration:o.duration??QR(t.timestamp,e)};return t.displayData={...n,status:r},!0}function XR(t,e){return Cj(t,e)||Pj(t,e)}function eA(t,e){let n=Date.now(),o=!1;for(let r of t)r.turnId===e&&XR(r,n)&&(o=!0);return o}function tA(t){let e=Date.now(),n=!1;for(let o of t)XR(o,e)&&(n=!0);return n}var Ur=class{conversationId;createdAt;updatedAt;config;eventBus;tchMessages=[];uiMessages=[];turns=[];currentTurn=null;state={status:"idle"};mainFlowUsage=void 0;restored=!1;title=void 0;migrateSource=void 0;migrateModelId=void 0;interactionMode="agent";cronOrigin=void 0;isEphemeral=!1;_contextEngine;pendingQueue=[];_conversationActionExecutor;_actionAbort;_persistedTurnRanges;workIdToTurnId=new Map;turnIdToWorkIds=new Map;constructor(e,n){this._persistedTurnRanges=void 0,n?(this.conversationId=n.conversationId,this.createdAt=n.createdAt,this.updatedAt=n.updatedAt??n.createdAt,this.uiMessages=n.uiMessages,this.mainFlowUsage=n.lastUsage,this.title=n.title,this.migrateSource=n.migrateSource,this.migrateModelId=n.migrateModelId,this.interactionMode=n.interactionMode??"agent",this.isEphemeral=n.isEphemeral??!1,this.cronOrigin=n.cronOrigin,this.restored=!0,this._persistedTurnRanges=n.turnRanges?.length?n.turnRanges:void 0,n.tchMessages?this.tchMessages=n.tchMessages:n.fromMigrate&&(this.tchMessages=n.uiMessages.map(o=>({...o}))),this.materializeTurnsFromTurnRanges(n.turnRanges,n.turnMetrics)):(this.conversationId=je(),this.createdAt=Date.now(),this.updatedAt=this.createdAt),this.config=e,this.eventBus=e.getEventBus(),this._contextEngine=new lf(this,new cf),this.eventBus.on(P.TURN_COMPLETED,o=>{if(o.conversationId!==this.conversationId)return;let r=this.currentTurn;if(r&&r.turnId!==o.turnId)return;let i=Ma({terminalStatus:"completed"});this.applyTerminalTurnDecision(o.turnId,r,i)}),this.eventBus.on(P.TURN_FAILED,o=>{if(o.conversationId!==this.conversationId)return;let r=this.currentTurn;if(r&&r.turnId!==o.turnId)return;let i=Ma({terminalStatus:"failed",errorMessage:typeof o.error=="string"?o.error:o.error instanceof Error?o.error.message:String(o.error),errorCode:o.errorCode});this.applyTerminalTurnDecision(o.turnId,r,i)}),this.eventBus.on(P.TURN_CANCELLED,o=>{if(o.conversationId!==this.conversationId)return;let r=this.currentTurn;if(r&&r.turnId!==o.turnId)return;let i=Ma({terminalStatus:"cancelled",cancelReason:o.reason,hasQueuedWork:this.pendingQueue.length>0,hasMeaningfulOutput:this.hasMeaningfulOutputForTurn(o.turnId),inputEmptyAtCancel:o.inputEmptyAtCancel,isViewingSubThread:o.isViewingSubThread,restoreCandidate:o.restorePromptCandidate});this.applyTerminalTurnDecision(o.turnId,r,i),i.shouldRewind&&this.config.getPersistConversation()?.(this.conversationId).catch(()=>{}),this.eventBus.emit(P.TURN_CANCEL_RESOLVED,{conversationId:this.conversationId,turnId:o.turnId,revertApplied:i.shouldRewind,...i.restorePrompt!==void 0?{restorePrompt:i.restorePrompt}:{}})}),this.eventBus.emit(P.CONVERSATION_CREATED,{conversationId:this.conversationId})}hasMeaningfulOutputForTurn(e){let n=this.turns.find(s=>s.turnId===e);if(!n)return!1;let o=Math.max(0,n.uiMessageRange[0]),r=this.currentTurn?.turnId===e?this.uiMessages.length:n.uiMessageRange[1],i=Math.min(this.uiMessages.length,Math.max(o,r));for(let s=o;s<i;s++){let a=this.uiMessages[s];if(a&&(KR(a)||a.role==="assistant"&&(typeof a.content=="string"&&a.content.trim().length>0||Array.isArray(a.content)&&a.content.length>0)))return!0}return!1}applyTerminalTurnDecision(e,n,o){o.shouldFinalizeCancelledOutput&&this._contextEngine.finalizeTurnOnCancel(e),n&&n.turnId===e&&(n.uiMessageRange[1]=this.uiMessages.length,n.tchMessageRange[1]=this.tchMessages.length),this.currentTurn=null,this.state={status:"idle"},this.unregisterWorksByTurnId(e),o.shouldRewind&&this.truncateToBeforeTurn(e),o.terminalStatus==="cancelled"&&!o.shouldRewind&&eA(this.uiMessages,e)&&this.eventBus.emit(P.CONVERSATION_UI_MESSAGES_UPDATED,{conversationId:this.conversationId,uiMessages:[...this.uiMessages]}),o.shouldAdvanceQueue&&this.processNextPendingWork()}materializeTurnsFromTurnRanges(e,n){if(!e?.length)return;let o=this.uiMessages.length,r=this.tchMessages.length;for(let i=0;i<e.length;i++){let s=e[i],a=i+1<e.length?e[i+1].uiStart:o,l=i+1<e.length?e[i+1].tchStart:r,c=Da.createForRestore(this,s.turnId,{uiStart:s.uiStart,tchStart:s.tchStart,uiEnd:a,tchEnd:l},s.compacted);if(n){let u=n.get(s.turnId);u&&(c.metrics=u)}this.turns.push(c)}this._persistedTurnRanges=void 0}getContextEngine(){return this._contextEngine}registerWork(e,n){this.workIdToTurnId.set(e,n);let o=this.turnIdToWorkIds.get(n);o?o.add(e):this.turnIdToWorkIds.set(n,new Set([e]))}unregisterWorksByTurnId(e){let n=this.turnIdToWorkIds.get(e);if(n){for(let o of n)this.workIdToTurnId.delete(o);this.turnIdToWorkIds.delete(e)}}resolveWorkById(e){let n=this.workIdToTurnId.get(e);return n?this.turns.find(r=>r.turnId===n)?.works.find(r=>r.workId===e):void 0}submitUserMessage(e,n,o){this.pendingQueue.push({kind:"user_message",prompt:e,modelId:n,displayContent:o}),this.state.status==="idle"&&this.processNextPendingWork()}enqueueConversationAction(e,n){this.pendingQueue.push({kind:"conversation_action",actionId:e,modelId:n?.modelId,displayLabel:n?.displayLabel}),this.state.status==="idle"&&this.processNextPendingWork()}setConversationActionExecutor(e){this._conversationActionExecutor=e}abortInFlightConversationAction(){this._actionAbort?.controller.abort()}cancelConversationActionIfTurnId(e){return this._actionAbort&&this._actionAbort.turnId===e?(this._actionAbort.controller.abort(),!0):!1}getPendingQueue(){return this.pendingQueue.slice()}removePendingUserMessage(e){e>=0&&e<this.pendingQueue.length&&this.pendingQueue.splice(e,1)}async sendPendingUserMessageImmediately(e){if(e<0||e>=this.pendingQueue.length)return;let n=this.pendingQueue.splice(e,1)[0];this.pendingQueue.unshift(n),this.currentTurn!==null?await this.currentTurn.cancel({reason:"superseded"}):this._actionAbort?this._actionAbort.controller.abort():this.processNextPendingWork()}clearContext(){this.isEphemeral&&(this.state.status!=="idle"||this.currentTurn!==null||(this.pendingQueue.length=0,this.tchMessages.length=0,this.uiMessages.length=0,this.turns.length=0,this.currentTurn=null,this.state={status:"idle"},this.workIdToTurnId.clear(),this.turnIdToWorkIds.clear(),this._contextEngine.clearContext()))}getTurnRangesForPersistence(){let e=this.turns.map(r=>({turnId:r.turnId,uiStart:r.uiMessageRange[0],tchStart:r.tchMessageRange[0],...r.compacted?{compacted:!0}:{}})),o=[...this._persistedTurnRanges??[],...e].sort((r,i)=>r.uiStart-i.uiStart);return o.length>0?o:[]}truncateToBeforeTurn(e){if(this.state.status!=="idle"||this.currentTurn!==null)throw new Error("Cannot truncate conversation while a turn is running");if(this.turns.length>0){let o=this._persistedTurnRanges?.find(a=>a.turnId===e);if(o){if(o.uiStart===0){this.tchMessages.length=0,this.uiMessages.length=0;for(let l of this.turns)this.unregisterWorksByTurnId(l.turnId);this.turns.length=0,this._persistedTurnRanges=void 0,this._contextEngine.clearContext();return}this.uiMessages.splice(o.uiStart),o.compacted&&o.tchStart===0?this.tchMessages.length=0:this.tchMessages.splice(o.tchStart);let a=this.turns.filter(l=>l.uiMessageRange[0]>=o.uiStart);for(let l of a)this.unregisterWorksByTurnId(l.turnId);this.turns=this.turns.filter(l=>l.uiMessageRange[0]<o.uiStart),this._persistedTurnRanges=this._persistedTurnRanges?.filter(l=>l.uiStart<o.uiStart)??void 0;return}let r=this.turns.findIndex(a=>a.turnId===e);if(r<0)throw new Error(`Turn not found: ${e}`);let i=this.turns[r];if(r===0&&i.uiMessageRange[0]===0){this.tchMessages.length=0,this.uiMessages.length=0;for(let a of this.turns)this.unregisterWorksByTurnId(a.turnId);this.turns.length=0,this._contextEngine.clearContext();return}this.uiMessages.splice(i.uiMessageRange[0]),i.compacted&&i.tchMessageRange[0]===0?this.tchMessages.length=0:this.tchMessages.splice(i.tchMessageRange[0]);let s=this.turns.slice(r);for(let a of s)this.unregisterWorksByTurnId(a.turnId);this.turns.splice(r);return}let n=this._persistedTurnRanges?.find(o=>o.turnId===e);if(!n)throw new Error(`Turn not found: ${e}`);if(this._persistedTurnRanges=void 0,n.uiStart===0){this.tchMessages.length=0,this.uiMessages.length=0,this.workIdToTurnId.clear(),this.turnIdToWorkIds.clear(),this._contextEngine.clearContext();return}this.uiMessages.splice(n.uiStart),n.compacted&&n.tchStart===0?this.tchMessages.length=0:this.tchMessages.splice(n.tchStart)}processNextPendingWork(){if(this.pendingQueue.length===0||this.state.status!=="idle")return;let e=this.pendingQueue.shift();if(e.kind==="user_message"){this.startPendingUserTurn(e);return}this.runPendingConversationAction(e)}startPendingUserTurn(e){let{prompt:n,modelId:o,displayContent:r}=e,i=typeof n=="string"?n:n.map(p=>p.type==="text"?p.text??"":p.type==="fileContext"?p.body??"":"").join(`
1634
1634
  `).trim()||"[attachment]",s=`panda-${this.config.getVersion()}`,a=r??af(n),l=xs(a),c=Da,u=new c(this,i,o,s,l);this.turns.push(u),this.currentTurn=u,this.state={status:"running"};let d=u.createMainRoleWorkSync();if(this._contextEngine.createMessage({turnId:u.turnId,workId:d?.workId??"",messageType:"user",initialContent:n,uiContent:a}),!this.title){let p=a,f=typeof p=="string"?p:p.find(m=>m.type==="text")?.text??p.find(m=>m.type==="fileContext")?.displayPath??p.find(m=>m.type==="pandaCommand")?.commandName??p.find(m=>m.type==="pandaSkill")?.skillName??"";this.title=f.slice(0,30)+(f.length>30?"...":"")}this.updatedAt=Date.now(),u.start().catch(()=>{})}async runPendingConversationAction(e){let n=this._conversationActionExecutor;if(!n){this.pendingQueue.unshift(e);return}let o=`action-${je()}`,r=new AbortController;this._actionAbort={turnId:o,controller:r},this.state={status:"running"},this.currentTurn=null,this.eventBus.emit(P.CONVERSATION_ACTION_STARTED,{conversationId:this.conversationId,turnId:o,actionId:e.actionId,...e.displayLabel!==void 0?{displayLabel:e.displayLabel}:{}});try{await n({actionId:e.actionId,signal:r.signal,modelId:e.modelId,turnId:o})}catch{}finally{this._actionAbort=void 0,this.state={status:"idle"},this.processNextPendingWork()}}};var uf=["agent","ask","plan","office","team"];function $b(t,e){return`pack_${t}_${e}`}function nA(t){return uf.includes(t)}function rA(t,e){return{turnId:t,modelId:e.modelId,modelName:e.modelName,interactionMode:e.interactionMode,startedAt:e.startedAt,completedAt:e.completedAt,duration:e.duration,reactLoopCount:e.reactLoopCount,toolCallCount:e.toolCallCount,toolCallBreakdown:e.toolCallBreakdown,promptTokens:e.promptTokens,completionTokens:e.completionTokens,totalTokens:e.totalTokens,status:e.status,errorMessage:e.errorMessage}}function oA(t){return{modelId:t.modelId,modelName:t.modelName,interactionMode:t.interactionMode,startedAt:t.startedAt,completedAt:t.completedAt,duration:t.duration,reactLoopCount:t.reactLoopCount,toolCallCount:t.toolCallCount,toolCallBreakdown:t.toolCallBreakdown,promptTokens:t.promptTokens,completionTokens:t.completionTokens,totalTokens:t.totalTokens,status:t.status,errorMessage:t.errorMessage}}var Rj=100;function Aj(t){let e={messageId:t.messageId,role:t.role,content:t.content};return t.toolCalls?.length&&(e.toolCalls=t.toolCalls),t.toolResults?.length&&(e.toolResults=t.toolResults),t.displayData&&(e.displayData=t.displayData),t.timestamp&&(e.timestamp=t.timestamp),t.workId&&(e.workId=t.workId),e.turnId=t.turnId,e}function iA(t){return{messageId:t.messageId,role:t.role,content:t.content,toolCalls:t.toolCalls,toolResults:t.toolResults,displayData:t.displayData,timestamp:t.timestamp,workId:t.workId,turnId:t.turnId??""}}function Fb(t){for(let e of t)if(e.role==="user")return(typeof e.content=="string"?e.content:e.content.find(o=>o.type==="text")?.text??"").slice(0,Rj);return""}function Ub(t,e,n){let o={schemaVersion:3,conversationId:t.conversationId,workspaceId:e,createdAt:t.createdAt,updatedAt:t.updatedAt,title:n??t.title??Mj(t),messages:t.uiMessages.map(Aj),lastUsage:t.mainFlowUsage};t.migrateSource&&(o.migrateSource=t.migrateSource),t.migrateModelId&&(o.migrateModelId=t.migrateModelId),o.interactionMode=t.interactionMode??"agent",t.planMeta&&(o.planMeta=t.planMeta);let r=t.getTurnRangesForPersistence?.();r&&r.length>0?o.turnRanges=r:t.turns.length>0&&(o.turnRanges=t.turns.map(s=>({turnId:s.turnId,uiStart:s.uiMessageRange[0],tchStart:s.tchMessageRange[0]})));let i=[];for(let s of t.turns)s.metrics&&i.push(rA(s.turnId,s.metrics));return i.length>0&&(o.turnMetrics=i),t.cronOrigin&&(o.cronOrigin=t.cronOrigin),o}function Fc(t){return t.messages.map(iA)}function df(t){let e={conversationId:t.conversationId,title:t.title,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,status:"active",preview:Fb(t.messages.map(iA))};return t.migrateSource&&(e.migrateSource=t.migrateSource),t.migrateModelId&&(e.migrateModelId=t.migrateModelId),e.interactionMode=t.interactionMode??"agent",t.planMeta&&(e.planMeta=t.planMeta),t.cronOrigin?.createdBy==="kairos_cron"&&(e.fromCron=!0,t.cronOrigin.taskId&&(e.cronTaskId=t.cronOrigin.taskId)),e}function sA(t){let e={conversationId:t.conversationId,title:t.title??"",createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.uiMessages.length,status:"active",preview:Fb(t.uiMessages)};return t.migrateSource&&(e.migrateSource=t.migrateSource),t.migrateModelId&&(e.migrateModelId=t.migrateModelId),e.interactionMode=t.interactionMode??"agent",t.planMeta&&(e.planMeta=t.planMeta),t.cronOrigin?.createdBy==="kairos_cron"&&(e.fromCron=!0,t.cronOrigin.taskId&&(e.cronTaskId=t.cronOrigin.taskId)),e}function Mj(t){let e=Fb(t.uiMessages);return e?e.slice(0,30)+(e.length>30?"...":""):`\u5BF9\u8BDD ${new Date(t.createdAt).toLocaleString()}`}function Dj(t){return t==="user"||t==="assistant"||t==="thinking"}function pf(t){let e=[];for(let n of t){if(!Dj(n.role))continue;let o={messageId:n.messageId,role:n.role,content:n.content,turnId:n.turnId};n.timestamp!==void 0&&(o.timestamp=n.timestamp),n.workId!==void 0&&(o.workId=n.workId),n.synthetic===!0&&(o.synthetic=!0),e.push(o)}return e}tn();var aA=`
1635
1635
  You are the component that summarizes internal chat history into a given structure.
1636
1636
 
@@ -1865,13 +1865,13 @@ Session-only by default; set durable true only when the user wants persistence a
1865
1865
  `)?fO(t,e+`
1866
1866
  `,"",o):fO(t,e,n,o)}function bO(t,e,n){return oq(t,t,e,n,void 0,void 0,{context:3,timeout:5e3})?.hunks??[]}var xO="STRING_NOT_FOUND",TO="STRING_NOT_UNIQUE";function Jg(t,e){return{error:{llmContent:t,error:{message:t,type:e}}}}function wO(t){if(typeof t.filepath!="string"||typeof t.old_string!="string"||t.new_string===void 0)throw new Error("filepath, old_string, and new_string are required");return{filepath:t.filepath,old_string:t.old_string,new_string:t.new_string,replace_all:t.replace_all??!1}}function _O(t,e,n,o,r){if(e==="")return t.trim()!==""?Jg("Cannot create new file - file already exists.",TO):{content:n};let i=mO(t,e);if(!i)return Jg(`String to replace not found in file.
1867
1867
  String: ${e}`,xO);let s=t.split(i).length-1;if(s>1&&!o)return Jg(`Found ${s} matches of the string to replace, but replace_all is false. Set replace_all=true or provide a more unique old_string.`,TO);let a=r?.isMarkdown===!0,l=yO(n,{isMarkdown:a}),c=hO(e,i,l),u=vO(t,i,c,o);return u===t?Jg("String not found in file. Failed to apply edit.",xO):{content:u}}function aq(t){let e=0,n=0;for(let o of t)for(let r of o.lines)r.startsWith("+")?e++:r.startsWith("-")&&n++;return{addedLines:e,removedLines:n}}function SO(t,e,n,o,r,i){let s=aq(o),a=`${s.addedLines} insertions, ${s.removedLines} deletions`;return{llmContent:`File edited successfully: ${t}
1868
- ${a}`,displayData:{tool:"edit_file",uri:t,status:{state:"success"},summary:a,structuredPatch:o,oldString:r,newString:i},editFileBaseline:{uri:t,originalContent:e,newContent:n}}}function kO(t,e){let n=Cn("Failed to edit file",t,"FILE_EDIT_ERROR"),o=n.error?.message??String(t);return{...n,displayData:{tool:"edit_file",uri:e??"",status:{state:"error",error:o}}}}function IO(t){return`Editing file ${t}`}function CO(t){return[{path:t}]}var mq=new Set([".md",".markdown",".mdown",".mkd",".mkdn"]);function gq(t){return mq.has(pq(t).toLowerCase())}var Yg=class extends De{workspaceRoot;typedParams;constructor(e,n,o,r,i){super(e,o,r,i),this.workspaceRoot=n,this.typedParams=wO(e)}getDescription(){return IO(this.typedParams.filepath)}toolLocations(){return CO(this.typedParams.filepath)}async execute(e,n){let{filepath:o,old_string:r,new_string:i,replace_all:s}=this.typedParams;try{let a=o;o.startsWith("~/")?a=EO(process.env.HOME||process.env.USERPROFILE||"",o.slice(2)):this.workspaceRoot&&!fq(o)&&(a=EO(this.workspaceRoot,o));let l=null;try{l=await cq(a)}catch(v){if(v?.code!=="ENOENT")throw v}let c=l?Du(l):{content:"",encoding:"utf8",hasBom:!1,eol:"LF"},u=ki(c.content),d=ki(r),p=ki(i),f=_O(u,d,p,s??!1,{isMarkdown:gq(a)});if("error"in f)return f.error;let m=f.content,g=jD(m,c.eol),h=BD(g,c.encoding,c.hasBom);await lq(dq(a),{recursive:!0}),await uq(a,h);let y=bO(a,u,m);return SO(a,u,m,y,r,i)}catch(a){return kO(a,o)}}};import{isAbsolute as LO,resolve as NO}from"node:path";import{spawn as DO}from"node:child_process";import xq from"node:os";import gS from"node:path";import Oo from"node:fs";import{mkdir as Tq}from"node:fs/promises";import{createHash as wq}from"node:crypto";var hq=new Set(["ls","dir","pwd","cd","cat","head","tail","less","more","find","locate","which","whereis","file","stat","du","df","tree","wc","sort","uniq","diff","comm","echo","printf","grep","egrep","fgrep","rg","ag","sed","awk","cut","tr","xargs","date","cal","uptime","whoami","id","hostname","uname","env","printenv","set","export","ps","top","htop","jobs","pgrep","ping","traceroute","host","nslookup","dig","netstat","ss","ip","ifconfig","git","node","npm","npx","yarn","pnpm","python","python3","pip","pip3","ruby","gem","bundler","go","cargo","rustc","java","javac","mvn","gradle","make","cmake","tar","zip","unzip","gzip","gunzip","bzip2","--version","-v","--help","-h","man","info"]),yq=[{pattern:/\brm\s+(-[rf]+\s+)?[\/~]\s*$/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u5220\u9664\u6839\u76EE\u5F55\u6216\u7528\u6237\u76EE\u5F55",suggestion:"\u8BF7\u6307\u5B9A\u5177\u4F53\u7684\u6587\u4EF6\u6216\u76EE\u5F55\u8DEF\u5F84"},{pattern:/\brm\s+(-[rf]+\s+)?\*\s*$/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u5220\u9664\u6240\u6709\u6587\u4EF6",suggestion:"\u8BF7\u6307\u5B9A\u5177\u4F53\u7684\u6587\u4EF6\u8DEF\u5F84"},{pattern:/:(){ :|:& };:/,riskLevel:"blocked",description:"Fork bomb \u653B\u51FB"},{pattern:/\bdd\s+.*of=\/dev\/(sd|hd|nvme)/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u76F4\u63A5\u5199\u5165\u78C1\u76D8\u8BBE\u5907"},{pattern:/\bmkfs\b/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u683C\u5F0F\u5316\u6587\u4EF6\u7CFB\u7EDF"},{pattern:/>\s*\/dev\/(sd|hd|nvme)/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u91CD\u5B9A\u5411\u5230\u78C1\u76D8\u8BBE\u5907"},{pattern:/\bformat\s+[a-z]:/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u683C\u5F0F\u5316\u9A71\u52A8\u5668\uFF08Windows\uFF09"},{pattern:/\bsudo\b/i,riskLevel:"dangerous",description:"\u4F7F\u7528 sudo \u63D0\u6743\u6267\u884C",suggestion:"\u8003\u8651\u662F\u5426\u771F\u7684\u9700\u8981 root \u6743\u9650"},{pattern:/\bsu\s+-?\s*$/i,riskLevel:"dangerous",description:"\u5207\u6362\u5230 root \u7528\u6237"},{pattern:/\brm\s+(-[rf]+)/i,riskLevel:"dangerous",description:"\u9012\u5F52/\u5F3A\u5236\u5220\u9664\u6587\u4EF6",suggestion:"\u8BF7\u786E\u8BA4\u5220\u9664\u8DEF\u5F84\u662F\u5426\u6B63\u786E"},{pattern:/\bchmod\s+(-R\s+)?[0-7]{3,4}\s+\//i,riskLevel:"dangerous",description:"\u4FEE\u6539\u7CFB\u7EDF\u76EE\u5F55\u6743\u9650"},{pattern:/\bchown\s+(-R\s+)?\w+:\w+\s+\//i,riskLevel:"dangerous",description:"\u4FEE\u6539\u7CFB\u7EDF\u76EE\u5F55\u6240\u6709\u8005"},{pattern:/\bkill\s+(-9\s+)?-1\b/i,riskLevel:"dangerous",description:"\u6740\u6B7B\u6240\u6709\u8FDB\u7A0B"},{pattern:/\bkillall\b/i,riskLevel:"dangerous",description:"\u6279\u91CF\u6740\u6B7B\u8FDB\u7A0B",suggestion:"\u8BF7\u786E\u8BA4\u8FDB\u7A0B\u540D\u79F0\u662F\u5426\u6B63\u786E"},{pattern:/\breboot\b|\bshutdown\b|\bhalt\b|\bpoweroff\b/i,riskLevel:"dangerous",description:"\u7CFB\u7EDF\u91CD\u542F/\u5173\u673A\u547D\u4EE4"},{pattern:/\bsystemctl\s+(stop|restart|disable)\b/i,riskLevel:"dangerous",description:"\u505C\u6B62/\u91CD\u542F\u7CFB\u7EDF\u670D\u52A1"},{pattern:/\biptables\b|\bfirewall-cmd\b|\bufw\b/i,riskLevel:"dangerous",description:"\u4FEE\u6539\u9632\u706B\u5899\u89C4\u5219"},{pattern:/>\s*\/etc\//i,riskLevel:"dangerous",description:"\u5199\u5165\u7CFB\u7EDF\u914D\u7F6E\u76EE\u5F55"},{pattern:/\bcurl\b.*\|\s*(bash|sh|zsh)/i,riskLevel:"dangerous",description:"\u4ECE\u7F51\u7EDC\u4E0B\u8F7D\u5E76\u6267\u884C\u811A\u672C",suggestion:"\u5EFA\u8BAE\u5148\u4E0B\u8F7D\u811A\u672C\u68C0\u67E5\u5185\u5BB9\uFF0C\u518D\u624B\u52A8\u6267\u884C"},{pattern:/\bwget\b.*-O\s*-\s*\|\s*(bash|sh|zsh)/i,riskLevel:"dangerous",description:"\u4ECE\u7F51\u7EDC\u4E0B\u8F7D\u5E76\u6267\u884C\u811A\u672C",suggestion:"\u5EFA\u8BAE\u5148\u4E0B\u8F7D\u811A\u672C\u68C0\u67E5\u5185\u5BB9\uFF0C\u518D\u624B\u52A8\u6267\u884C"},{pattern:/\beval\s+.*\$\(/i,riskLevel:"dangerous",description:"\u52A8\u6001\u6267\u884C\u547D\u4EE4"},{pattern:/\brm\b/i,riskLevel:"moderate",description:"\u5220\u9664\u6587\u4EF6",suggestion:"\u8BF7\u786E\u8BA4\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E"},{pattern:/\bmv\b.*\//i,riskLevel:"moderate",description:"\u79FB\u52A8\u6587\u4EF6"},{pattern:/\bcp\s+-r/i,riskLevel:"moderate",description:"\u9012\u5F52\u590D\u5236\u6587\u4EF6"},{pattern:/\bchmod\b/i,riskLevel:"moderate",description:"\u4FEE\u6539\u6587\u4EF6\u6743\u9650"},{pattern:/\bchown\b/i,riskLevel:"moderate",description:"\u4FEE\u6539\u6587\u4EF6\u6240\u6709\u8005"},{pattern:/\bcurl\b|\bwget\b/i,riskLevel:"moderate",description:"\u7F51\u7EDC\u8BF7\u6C42"},{pattern:/\bnpm\s+(install|i)\s+(-g|--global)/i,riskLevel:"moderate",description:"\u5168\u5C40\u5B89\u88C5 npm \u5305"},{pattern:/\bpip\s+install\b/i,riskLevel:"moderate",description:"\u5B89\u88C5 Python \u5305"},{pattern:/\bgit\s+(push|force|reset\s+--hard)/i,riskLevel:"moderate",description:"Git \u63A8\u9001\u6216\u5F3A\u5236\u64CD\u4F5C"},{pattern:/\bdocker\s+(rm|rmi|prune)/i,riskLevel:"moderate",description:"Docker \u5220\u9664\u64CD\u4F5C"},{pattern:/>\s+[^\s|&;]+/,riskLevel:"moderate",description:"\u6587\u4EF6\u91CD\u5B9A\u5411\uFF08\u8986\u76D6\uFF09"},{pattern:/>>\s+[^\s|&;]+/,riskLevel:"moderate",description:"\u6587\u4EF6\u91CD\u5B9A\u5411\uFF08\u8FFD\u52A0\uFF09"}],Qg=class{analyze(e){let n=this.normalizeCommand(e),o=[],r=[],i="safe",s=this.extractMainCommand(n);if(this.isSimpleSafeCommand(n,s))return{riskLevel:"safe",detectedPatterns:[],suggestions:[],requiresConfirmation:!1,reason:"\u5E38\u7528\u5B89\u5168\u547D\u4EE4"};for(let c of yq)c.pattern.test(n)&&(o.push(c.description),c.suggestion&&r.push(c.suggestion),i=this.getHigherRiskLevel(i,c.riskLevel));let a=this.analyzeCommandChain(n);a&&(o.push(a.description),i=this.getHigherRiskLevel(i,a.riskLevel));let l=this.generateReason(i,o);return{riskLevel:i,detectedPatterns:o,suggestions:[...new Set(r)],requiresConfirmation:i!=="safe",reason:l}}normalizeCommand(e){return e.trim().replace(/\s+/g," ").replace(/\\\n/g," ")}extractMainCommand(e){let n=e.replace(/^(\w+=\S+\s+)+/,"");n=n.replace(/^[\/\w.-]+\//,"");let o=n.match(/^([\w.-]+)/);return o?o[1].toLowerCase():""}isSimpleSafeCommand(e,n){return hq.has(n)?!(/[|&;]/.test(e)||/>\s*\//.test(e)||/`|\$\(/.test(e)):!1}analyzeCommandChain(e){let n=(e.match(/\|/g)||[]).length;if(n>5)return{description:`\u590D\u6742\u547D\u4EE4\u94FE\uFF08${n} \u4E2A\u7BA1\u9053\uFF09`,riskLevel:"moderate"};let o=(e.match(/[;&|]{1,2}/g)||[]).length;return o>3?{description:`\u591A\u547D\u4EE4\u94FE\u63A5\uFF08${o} \u4E2A\u8FDE\u63A5\u7B26\uFF09`,riskLevel:"moderate"}:/&\s*$/.test(e)||/&\s*[^&]/.test(e)?{description:"\u540E\u53F0\u6267\u884C\u547D\u4EE4",riskLevel:"moderate"}:null}getHigherRiskLevel(e,n){let o=["safe","moderate","dangerous","blocked"],r=o.indexOf(e);return o.indexOf(n)>r?n:e}generateReason(e,n){return e==="safe"?"\u672A\u68C0\u6D4B\u5230\u5B89\u5168\u98CE\u9669":e==="blocked"?`\u547D\u4EE4\u88AB\u963B\u6B62\uFF1A${n[0]||"\u5305\u542B\u5371\u9669\u64CD\u4F5C"}`:n.length===0?e==="dangerous"?"\u5305\u542B\u9AD8\u98CE\u9669\u64CD\u4F5C":"\u5305\u542B\u9700\u8981\u786E\u8BA4\u7684\u64CD\u4F5C":n.join("; ")}};function mS(t,e,n){if(t.name==="zsh"){let o=`[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
1868
+ ${a}`,displayData:{tool:"edit_file",uri:t,status:{state:"success"},summary:a,structuredPatch:o,oldString:r,newString:i},editFileBaseline:{uri:t,originalContent:e,newContent:n}}}function kO(t,e){let n=Cn("Failed to edit file",t,"FILE_EDIT_ERROR"),o=n.error?.message??String(t);return{...n,displayData:{tool:"edit_file",uri:e??"",status:{state:"error",error:o}}}}function IO(t){return`Editing file ${t}`}function CO(t){return[{path:t}]}var mq=new Set([".md",".markdown",".mdown",".mkd",".mkdn"]);function gq(t){return mq.has(pq(t).toLowerCase())}var Yg=class extends De{workspaceRoot;typedParams;constructor(e,n,o,r,i){super(e,o,r,i),this.workspaceRoot=n,this.typedParams=wO(e)}getDescription(){return IO(this.typedParams.filepath)}toolLocations(){return CO(this.typedParams.filepath)}async execute(e,n){let{filepath:o,old_string:r,new_string:i,replace_all:s}=this.typedParams;try{let a=o;o.startsWith("~/")?a=EO(process.env.HOME||process.env.USERPROFILE||"",o.slice(2)):this.workspaceRoot&&!fq(o)&&(a=EO(this.workspaceRoot,o));let l=null;try{l=await cq(a)}catch(v){if(v?.code!=="ENOENT")throw v}let c=l?Du(l):{content:"",encoding:"utf8",hasBom:!1,eol:"LF"},u=ki(c.content),d=ki(r),p=ki(i),f=_O(u,d,p,s??!1,{isMarkdown:gq(a)});if("error"in f)return f.error;let m=f.content,g=jD(m,c.eol),h=BD(g,c.encoding,c.hasBom);await lq(dq(a),{recursive:!0}),await uq(a,h);let y=bO(a,u,m);return SO(a,u,m,y,r,i)}catch(a){return kO(a,o)}}};import{isAbsolute as LO,resolve as NO}from"node:path";import{spawn as DO}from"node:child_process";import wq from"node:os";import gS from"node:path";import Oo from"node:fs";import{mkdir as _q}from"node:fs/promises";import{createHash as Sq}from"node:crypto";var hq=new Set(["ls","dir","pwd","cd","cat","head","tail","less","more","find","locate","which","whereis","file","stat","du","df","tree","wc","sort","uniq","diff","comm","echo","printf","grep","egrep","fgrep","rg","ag","sed","awk","cut","tr","xargs","date","cal","uptime","whoami","id","hostname","uname","env","printenv","set","export","ps","top","htop","jobs","pgrep","ping","traceroute","host","nslookup","dig","netstat","ss","ip","ifconfig","git","node","npm","npx","yarn","pnpm","python","python3","pip","pip3","ruby","gem","bundler","go","cargo","rustc","java","javac","mvn","gradle","make","cmake","tar","zip","unzip","gzip","gunzip","bzip2","--version","-v","--help","-h","man","info"]),yq=[{pattern:/\brm\s+(-[rf]+\s+)?[\/~]\s*$/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u5220\u9664\u6839\u76EE\u5F55\u6216\u7528\u6237\u76EE\u5F55",suggestion:"\u8BF7\u6307\u5B9A\u5177\u4F53\u7684\u6587\u4EF6\u6216\u76EE\u5F55\u8DEF\u5F84"},{pattern:/\brm\s+(-[rf]+\s+)?\*\s*$/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u5220\u9664\u6240\u6709\u6587\u4EF6",suggestion:"\u8BF7\u6307\u5B9A\u5177\u4F53\u7684\u6587\u4EF6\u8DEF\u5F84"},{pattern:/:(){ :|:& };:/,riskLevel:"blocked",description:"Fork bomb \u653B\u51FB"},{pattern:/\bdd\s+.*of=\/dev\/(sd|hd|nvme)/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u76F4\u63A5\u5199\u5165\u78C1\u76D8\u8BBE\u5907"},{pattern:/\bmkfs\b/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u683C\u5F0F\u5316\u6587\u4EF6\u7CFB\u7EDF"},{pattern:/>\s*\/dev\/(sd|hd|nvme)/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u91CD\u5B9A\u5411\u5230\u78C1\u76D8\u8BBE\u5907"},{pattern:/\bformat\s+[a-z]:/i,riskLevel:"blocked",description:"\u5C1D\u8BD5\u683C\u5F0F\u5316\u9A71\u52A8\u5668\uFF08Windows\uFF09"},{pattern:/\bsudo\b/i,riskLevel:"dangerous",description:"\u4F7F\u7528 sudo \u63D0\u6743\u6267\u884C",suggestion:"\u8003\u8651\u662F\u5426\u771F\u7684\u9700\u8981 root \u6743\u9650"},{pattern:/\bsu\s+-?\s*$/i,riskLevel:"dangerous",description:"\u5207\u6362\u5230 root \u7528\u6237"},{pattern:/\brm\s+(-[rf]+)/i,riskLevel:"dangerous",description:"\u9012\u5F52/\u5F3A\u5236\u5220\u9664\u6587\u4EF6",suggestion:"\u8BF7\u786E\u8BA4\u5220\u9664\u8DEF\u5F84\u662F\u5426\u6B63\u786E"},{pattern:/\bchmod\s+(-R\s+)?[0-7]{3,4}\s+\//i,riskLevel:"dangerous",description:"\u4FEE\u6539\u7CFB\u7EDF\u76EE\u5F55\u6743\u9650"},{pattern:/\bchown\s+(-R\s+)?\w+:\w+\s+\//i,riskLevel:"dangerous",description:"\u4FEE\u6539\u7CFB\u7EDF\u76EE\u5F55\u6240\u6709\u8005"},{pattern:/\bkill\s+(-9\s+)?-1\b/i,riskLevel:"dangerous",description:"\u6740\u6B7B\u6240\u6709\u8FDB\u7A0B"},{pattern:/\bkillall\b/i,riskLevel:"dangerous",description:"\u6279\u91CF\u6740\u6B7B\u8FDB\u7A0B",suggestion:"\u8BF7\u786E\u8BA4\u8FDB\u7A0B\u540D\u79F0\u662F\u5426\u6B63\u786E"},{pattern:/\breboot\b|\bshutdown\b|\bhalt\b|\bpoweroff\b/i,riskLevel:"dangerous",description:"\u7CFB\u7EDF\u91CD\u542F/\u5173\u673A\u547D\u4EE4"},{pattern:/\bsystemctl\s+(stop|restart|disable)\b/i,riskLevel:"dangerous",description:"\u505C\u6B62/\u91CD\u542F\u7CFB\u7EDF\u670D\u52A1"},{pattern:/\biptables\b|\bfirewall-cmd\b|\bufw\b/i,riskLevel:"dangerous",description:"\u4FEE\u6539\u9632\u706B\u5899\u89C4\u5219"},{pattern:/>\s*\/etc\//i,riskLevel:"dangerous",description:"\u5199\u5165\u7CFB\u7EDF\u914D\u7F6E\u76EE\u5F55"},{pattern:/\bcurl\b.*\|\s*(bash|sh|zsh)/i,riskLevel:"dangerous",description:"\u4ECE\u7F51\u7EDC\u4E0B\u8F7D\u5E76\u6267\u884C\u811A\u672C",suggestion:"\u5EFA\u8BAE\u5148\u4E0B\u8F7D\u811A\u672C\u68C0\u67E5\u5185\u5BB9\uFF0C\u518D\u624B\u52A8\u6267\u884C"},{pattern:/\bwget\b.*-O\s*-\s*\|\s*(bash|sh|zsh)/i,riskLevel:"dangerous",description:"\u4ECE\u7F51\u7EDC\u4E0B\u8F7D\u5E76\u6267\u884C\u811A\u672C",suggestion:"\u5EFA\u8BAE\u5148\u4E0B\u8F7D\u811A\u672C\u68C0\u67E5\u5185\u5BB9\uFF0C\u518D\u624B\u52A8\u6267\u884C"},{pattern:/\beval\s+.*\$\(/i,riskLevel:"dangerous",description:"\u52A8\u6001\u6267\u884C\u547D\u4EE4"},{pattern:/\brm\b/i,riskLevel:"moderate",description:"\u5220\u9664\u6587\u4EF6",suggestion:"\u8BF7\u786E\u8BA4\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E"},{pattern:/\bmv\b.*\//i,riskLevel:"moderate",description:"\u79FB\u52A8\u6587\u4EF6"},{pattern:/\bcp\s+-r/i,riskLevel:"moderate",description:"\u9012\u5F52\u590D\u5236\u6587\u4EF6"},{pattern:/\bchmod\b/i,riskLevel:"moderate",description:"\u4FEE\u6539\u6587\u4EF6\u6743\u9650"},{pattern:/\bchown\b/i,riskLevel:"moderate",description:"\u4FEE\u6539\u6587\u4EF6\u6240\u6709\u8005"},{pattern:/\bcurl\b|\bwget\b/i,riskLevel:"moderate",description:"\u7F51\u7EDC\u8BF7\u6C42"},{pattern:/\bnpm\s+(install|i)\s+(-g|--global)/i,riskLevel:"moderate",description:"\u5168\u5C40\u5B89\u88C5 npm \u5305"},{pattern:/\bpip\s+install\b/i,riskLevel:"moderate",description:"\u5B89\u88C5 Python \u5305"},{pattern:/\bgit\s+(push|force|reset\s+--hard)/i,riskLevel:"moderate",description:"Git \u63A8\u9001\u6216\u5F3A\u5236\u64CD\u4F5C"},{pattern:/\bdocker\s+(rm|rmi|prune)/i,riskLevel:"moderate",description:"Docker \u5220\u9664\u64CD\u4F5C"},{pattern:/>\s+[^\s|&;]+/,riskLevel:"moderate",description:"\u6587\u4EF6\u91CD\u5B9A\u5411\uFF08\u8986\u76D6\uFF09"},{pattern:/>>\s+[^\s|&;]+/,riskLevel:"moderate",description:"\u6587\u4EF6\u91CD\u5B9A\u5411\uFF08\u8FFD\u52A0\uFF09"}],Qg=class{analyze(e){let n=this.normalizeCommand(e),o=[],r=[],i="safe",s=this.extractMainCommand(n);if(this.isSimpleSafeCommand(n,s))return{riskLevel:"safe",detectedPatterns:[],suggestions:[],requiresConfirmation:!1,reason:"\u5E38\u7528\u5B89\u5168\u547D\u4EE4"};for(let c of yq)c.pattern.test(n)&&(o.push(c.description),c.suggestion&&r.push(c.suggestion),i=this.getHigherRiskLevel(i,c.riskLevel));let a=this.analyzeCommandChain(n);a&&(o.push(a.description),i=this.getHigherRiskLevel(i,a.riskLevel));let l=this.generateReason(i,o);return{riskLevel:i,detectedPatterns:o,suggestions:[...new Set(r)],requiresConfirmation:i!=="safe",reason:l}}normalizeCommand(e){return e.trim().replace(/\s+/g," ").replace(/\\\n/g," ")}extractMainCommand(e){let n=e.replace(/^(\w+=\S+\s+)+/,"");n=n.replace(/^[\/\w.-]+\//,"");let o=n.match(/^([\w.-]+)/);return o?o[1].toLowerCase():""}isSimpleSafeCommand(e,n){return hq.has(n)?!(/[|&;]/.test(e)||/>\s*\//.test(e)||/`|\$\(/.test(e)):!1}analyzeCommandChain(e){let n=(e.match(/\|/g)||[]).length;if(n>5)return{description:`\u590D\u6742\u547D\u4EE4\u94FE\uFF08${n} \u4E2A\u7BA1\u9053\uFF09`,riskLevel:"moderate"};let o=(e.match(/[;&|]{1,2}/g)||[]).length;return o>3?{description:`\u591A\u547D\u4EE4\u94FE\u63A5\uFF08${o} \u4E2A\u8FDE\u63A5\u7B26\uFF09`,riskLevel:"moderate"}:/&\s*$/.test(e)||/&\s*[^&]/.test(e)?{description:"\u540E\u53F0\u6267\u884C\u547D\u4EE4",riskLevel:"moderate"}:null}getHigherRiskLevel(e,n){let o=["safe","moderate","dangerous","blocked"],r=o.indexOf(e);return o.indexOf(n)>r?n:e}generateReason(e,n){return e==="safe"?"\u672A\u68C0\u6D4B\u5230\u5B89\u5168\u98CE\u9669":e==="blocked"?`\u547D\u4EE4\u88AB\u963B\u6B62\uFF1A${n[0]||"\u5305\u542B\u5371\u9669\u64CD\u4F5C"}`:n.length===0?e==="dangerous"?"\u5305\u542B\u9AD8\u98CE\u9669\u64CD\u4F5C":"\u5305\u542B\u9700\u8981\u786E\u8BA4\u7684\u64CD\u4F5C":n.join("; ")}};var vq="$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new(); chcp 65001 > $null; ",bq="chcp 65001 >nul & ";function mS(t,e,n){if(t.name==="zsh"){let o=`[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
1869
1869
  [[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true
1870
1870
  cd -- "$1"
1871
1871
  eval `+JSON.stringify(e);return{executable:t.path,args:["-l","-c",o,"panda",n]}}if(t.name==="bash"){let o=`shopt -s expand_aliases
1872
1872
  [[ -f ~/.bashrc ]] && source ~/.bashrc >/dev/null 2>&1 || true
1873
1873
  cd -- "$1"
1874
- eval `+JSON.stringify(e);return{executable:t.path,args:["-l","-c",o,"panda",n]}}return t.kind==="posix"?{executable:t.path,args:["-c",e]}:RD(t.kind)?{executable:t.path,args:["-NoProfile","-Command",e]}:t.kind==="cmd"?{executable:t.path,args:["/d","/s","/c",e]}:{executable:t.path,args:["-c",e]}}var vq=/(\d?&?>+\s*)[Nn][Uu][Ll](?=\s|$|[|&;)\n])/g;function PO(t){return t.replace(vq,"$1/dev/null")}function RO(t){if(t.startsWith("\\\\"))return t.replace(/\\/g,"/");let e=t.match(/^([A-Za-z]):[/\\]/);return e?"/"+e[1].toLowerCase()+t.slice(2).replace(/\\/g,"/"):t.replace(/\\/g,"/")}import{spawn as bq}from"node:child_process";var AO=200;function MO(t){return new Promise(e=>{setTimeout(e,t)})}async function Ou(t,e={}){if(!(!t||t<=0)&&!e.exited?.()){if(process.platform==="win32"){await new Promise(n=>{let o=!1,r=()=>{o||(o=!0,n())};try{let i=bq("taskkill",["/pid",String(t),"/f","/t"],{stdio:"ignore",windowsHide:!0});i.once("exit",r),i.once("error",r)}catch{r()}});return}try{if(process.kill(-t,"SIGTERM"),await MO(AO),e.exited?.())return;try{process.kill(-t,"SIGKILL")}catch{}return}catch{}try{if(process.kill(t,"SIGTERM"),await MO(AO),e.exited?.())return;try{process.kill(t,"SIGKILL")}catch{}}catch{}}}var Lu=class extends Error{command;exitCode;stderr;constructor(e,n,o,r,i){super(e,{cause:i}),this.name="CommandExecutionError",this.message=e,this.command=n,this.exitCode=o,this.stderr=r}};var Ii={timeout:3e4,maxOutputLines:5e3,maxOutputSize:1024*1024,maxBackgroundTasks:200,backgroundTaskRetentionMs:1800*1e3};function OO(t,e){let n=Ru();return process.platform==="win32"&&n.kind==="posix"?{command:PO(t),cwd:e,posixCwdForArgs:RO(e)}:{command:t,cwd:e,posixCwdForArgs:e}}var Nu=class{securityAnalyzer;activeProcesses=new Map;backgroundTasks=new Map;constructor(){this.securityAnalyzer=new Qg}resolveCwd(e,n){try{return Oo.accessSync(e,Oo.constants.F_OK),e}catch{return n}}async startBackground(e,n={}){let o=n.cwd||process.cwd(),r=this.resolveCwd(o,process.cwd()),i=Ru(),s=OO(e,r),a=mS(i,s.command,s.posixCwdForArgs),l={cwd:r,env:{...process.env,...n.env},stdio:"pipe",shell:!1,detached:process.platform!=="win32",...process.platform==="win32"?{windowsHide:!0}:{}},c=`bg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.cleanupBackgroundTasks();let u=this.getBackgroundOutputDir();await Tq(u,{recursive:!0});let d=gS.join(u,`${c}.log`),p=DO(a.executable,a.args,l),f=Oo.createWriteStream(d,{flags:"a"});return p.stdout?.on("data",m=>f.write(m)),p.stderr?.on("data",m=>f.write(m)),p.on("close",m=>{let g=this.backgroundTasks.get(c);g&&(g.finishedAt=Date.now(),g.exitCode=m),f.end()}),await new Promise((m,g)=>{let h=!1,y=Date.now();p.once("error",v=>{if(!h){h=!0,f.end();try{Oo.unlinkSync(d)}catch{}g(new Lu(`Failed to start background command: ${v.message}`,e,null,"",v))}}),p.once("spawn",()=>{h||(h=!0,process.platform!=="win32"&&p.unref(),this.backgroundTasks.set(c,{child:p,outputFilePath:d,startedAt:y,command:e,workingDirectory:r,pid:p.pid??0}),m({taskId:c,pid:p.pid??0,command:e,workingDirectory:r,startedAt:y,outputFilePath:d}))})})}getBackgroundTask(e){let n=this.backgroundTasks.get(e);if(n)return{taskId:e,pid:n.pid,command:n.command,workingDirectory:n.workingDirectory,startedAt:n.startedAt,outputFilePath:n.outputFilePath}}getBackgroundTaskInfo(e){let n=this.backgroundTasks.get(e);if(!n)return;let o="running";return n.finishedAt!==void 0&&(n.killed?o="killed":(n.exitCode??0)===0?o="completed":o="failed"),{taskId:e,pid:n.pid,command:n.command,workingDirectory:n.workingDirectory,startedAt:n.startedAt,outputFilePath:n.outputFilePath,state:o,finishedAt:n.finishedAt,exitCode:n.exitCode}}async awaitBackgroundTask(e,n){let o=Date.now();if(!this.getBackgroundTaskInfo(e))throw new Error(`Background task not found: ${e}`);for(;Date.now()-o<n;){let s=this.getBackgroundTaskInfo(e);if(!s)throw new Error(`Background task not found: ${e}`);if(s.state!=="running")return{task:s,timedOut:!1};await new Promise(a=>setTimeout(a,250))}let i=this.getBackgroundTaskInfo(e);if(!i)throw new Error(`Background task not found: ${e}`);return{task:i,timedOut:!0}}readBackgroundOutputTail(e,n=4096){let o=this.backgroundTasks.get(e);if(!o)throw new Error(`Background task not found: ${e}`);try{let r=Oo.readFileSync(o.outputFilePath,"utf8");return r.length<=n?r:r.slice(r.length-n)}catch{return""}}readBackgroundOutputSlice(e,n=0,o=4096){let r=this.backgroundTasks.get(e);if(!r)throw new Error(`Background task not found: ${e}`);try{let s=Oo.statSync(r.outputFilePath).size,a=Math.max(0,Math.min(n,s)),l=Math.max(1,o),c=Math.min(s,a+l);return c<=a?{content:"",startOffset:a,endOffset:c,totalBytes:s,truncated:!1}:{content:Oo.readFileSync(r.outputFilePath).subarray(a,c).toString("utf8"),startOffset:a,endOffset:c,totalBytes:s,truncated:c<s}}catch{return{content:"",startOffset:0,endOffset:0,totalBytes:0,truncated:!1}}}stopBackgroundTask(e){return this.stopBackgroundTaskDetailed(e).signalSent??!1}stopBackgroundTaskDetailed(e){let n=this.backgroundTasks.get(e);if(!n)return{found:!1};let o=this.getBackgroundTaskInfo(e);if(o&&o.state!=="running")return{found:!0,state:o.state,alreadyFinished:!0,signalSent:!1};try{return n.killed=!0,Ou(n.pid,{exited:()=>n.finishedAt!==void 0}),{found:!0,state:"running",alreadyFinished:!1,signalSent:!0}}catch{return{found:!0,state:"running",alreadyFinished:!1,signalSent:!1}}}getBackgroundOutputDir(){let e=gS.join(xq.homedir(),".panda"),n=wq("sha1").update(process.cwd()).digest("hex").slice(0,12),o=process.env.PANDA_SESSION_ID||`${process.pid}`;return gS.join(e,"tmp",n,o,"tasks")}cleanupBackgroundTasks(){let e=Date.now(),n=[...this.backgroundTasks.entries()];for(let[r,i]of n){let s=i.finishedAt;if(s!==void 0&&e-s>Ii.backgroundTaskRetentionMs){this.backgroundTasks.delete(r);try{Oo.unlinkSync(i.outputFilePath)}catch{}}}let o=[...this.backgroundTasks.entries()].sort((r,i)=>r[1].startedAt-i[1].startedAt);for(;o.length>Ii.maxBackgroundTasks;){let r=o.shift();if(!r)break;let[i,s]=r;if(s.finishedAt!==void 0){this.backgroundTasks.delete(i);try{Oo.unlinkSync(s.outputFilePath)}catch{}}}}async execute(e,n={}){let o=Date.now(),r=n.timeout??Ii.timeout,i=n.maxOutputLines??Ii.maxOutputLines,s=n.cwd||process.cwd(),a=this.resolveCwd(s,process.cwd()),l=Ru(),c=OO(e,a),u=mS(l,c.command,c.posixCwdForArgs),d={cwd:a,env:{...process.env,...n.env},stdio:"pipe",shell:!1,detached:process.platform!=="win32",...process.platform==="win32"?{windowsHide:!0}:{}};return new Promise((p,f)=>{let m="",g="",h=0,y=0,v=!1,b=!1,R=!1,M=!1,B=!1,S=e,x=DO(u.executable,u.args,d),T=`${Date.now()}-${Math.random().toString(36).slice(2)}`;this.activeProcesses.set(T,x);let W;r>0&&(W=setTimeout(()=>{M||(R=!0,Ou(x.pid,{exited:()=>B}))},r)),n.signal&&n.signal.addEventListener("abort",()=>{M||(b=!0,Ou(x.pid,{exited:()=>B}))}),x.stdout?.on("data",A=>{let j=A.toString().split(`
1874
+ eval `+JSON.stringify(e);return{executable:t.path,args:["-l","-c",o,"panda",n]}}return t.kind==="posix"?{executable:t.path,args:["-c",e]}:RD(t.kind)?{executable:t.path,args:["-NoProfile","-Command",vq+e]}:t.kind==="cmd"?{executable:t.path,args:["/d","/s","/c",bq+e]}:{executable:t.path,args:["-c",e]}}var xq=/(\d?&?>+\s*)[Nn][Uu][Ll](?=\s|$|[|&;)\n])/g;function PO(t){return t.replace(xq,"$1/dev/null")}function RO(t){if(t.startsWith("\\\\"))return t.replace(/\\/g,"/");let e=t.match(/^([A-Za-z]):[/\\]/);return e?"/"+e[1].toLowerCase()+t.slice(2).replace(/\\/g,"/"):t.replace(/\\/g,"/")}import{spawn as Tq}from"node:child_process";var AO=200;function MO(t){return new Promise(e=>{setTimeout(e,t)})}async function Ou(t,e={}){if(!(!t||t<=0)&&!e.exited?.()){if(process.platform==="win32"){await new Promise(n=>{let o=!1,r=()=>{o||(o=!0,n())};try{let i=Tq("taskkill",["/pid",String(t),"/f","/t"],{stdio:"ignore",windowsHide:!0});i.once("exit",r),i.once("error",r)}catch{r()}});return}try{if(process.kill(-t,"SIGTERM"),await MO(AO),e.exited?.())return;try{process.kill(-t,"SIGKILL")}catch{}return}catch{}try{if(process.kill(t,"SIGTERM"),await MO(AO),e.exited?.())return;try{process.kill(t,"SIGKILL")}catch{}}catch{}}}var Lu=class extends Error{command;exitCode;stderr;constructor(e,n,o,r,i){super(e,{cause:i}),this.name="CommandExecutionError",this.message=e,this.command=n,this.exitCode=o,this.stderr=r}};var Ii={timeout:3e4,maxOutputLines:5e3,maxOutputSize:1024*1024,maxBackgroundTasks:200,backgroundTaskRetentionMs:1800*1e3};function OO(t,e){let n=Ru();return process.platform==="win32"&&n.kind==="posix"?{command:PO(t),cwd:e,posixCwdForArgs:RO(e)}:{command:t,cwd:e,posixCwdForArgs:e}}var Nu=class{securityAnalyzer;activeProcesses=new Map;backgroundTasks=new Map;constructor(){this.securityAnalyzer=new Qg}resolveCwd(e,n){try{return Oo.accessSync(e,Oo.constants.F_OK),e}catch{return n}}async startBackground(e,n={}){let o=n.cwd||process.cwd(),r=this.resolveCwd(o,process.cwd()),i=Ru(),s=OO(e,r),a=mS(i,s.command,s.posixCwdForArgs),l={cwd:r,env:{...process.env,...n.env},stdio:"pipe",shell:!1,detached:process.platform!=="win32",...process.platform==="win32"?{windowsHide:!0}:{}},c=`bg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.cleanupBackgroundTasks();let u=this.getBackgroundOutputDir();await _q(u,{recursive:!0});let d=gS.join(u,`${c}.log`),p=DO(a.executable,a.args,l),f=Oo.createWriteStream(d,{flags:"a"});return p.stdout?.on("data",m=>f.write(m)),p.stderr?.on("data",m=>f.write(m)),p.on("close",m=>{let g=this.backgroundTasks.get(c);g&&(g.finishedAt=Date.now(),g.exitCode=m),f.end()}),await new Promise((m,g)=>{let h=!1,y=Date.now();p.once("error",v=>{if(!h){h=!0,f.end();try{Oo.unlinkSync(d)}catch{}g(new Lu(`Failed to start background command: ${v.message}`,e,null,"",v))}}),p.once("spawn",()=>{h||(h=!0,process.platform!=="win32"&&p.unref(),this.backgroundTasks.set(c,{child:p,outputFilePath:d,startedAt:y,command:e,workingDirectory:r,pid:p.pid??0}),m({taskId:c,pid:p.pid??0,command:e,workingDirectory:r,startedAt:y,outputFilePath:d}))})})}getBackgroundTask(e){let n=this.backgroundTasks.get(e);if(n)return{taskId:e,pid:n.pid,command:n.command,workingDirectory:n.workingDirectory,startedAt:n.startedAt,outputFilePath:n.outputFilePath}}getBackgroundTaskInfo(e){let n=this.backgroundTasks.get(e);if(!n)return;let o="running";return n.finishedAt!==void 0&&(n.killed?o="killed":(n.exitCode??0)===0?o="completed":o="failed"),{taskId:e,pid:n.pid,command:n.command,workingDirectory:n.workingDirectory,startedAt:n.startedAt,outputFilePath:n.outputFilePath,state:o,finishedAt:n.finishedAt,exitCode:n.exitCode}}async awaitBackgroundTask(e,n){let o=Date.now();if(!this.getBackgroundTaskInfo(e))throw new Error(`Background task not found: ${e}`);for(;Date.now()-o<n;){let s=this.getBackgroundTaskInfo(e);if(!s)throw new Error(`Background task not found: ${e}`);if(s.state!=="running")return{task:s,timedOut:!1};await new Promise(a=>setTimeout(a,250))}let i=this.getBackgroundTaskInfo(e);if(!i)throw new Error(`Background task not found: ${e}`);return{task:i,timedOut:!0}}readBackgroundOutputTail(e,n=4096){let o=this.backgroundTasks.get(e);if(!o)throw new Error(`Background task not found: ${e}`);try{let r=Oo.readFileSync(o.outputFilePath,"utf8");return r.length<=n?r:r.slice(r.length-n)}catch{return""}}readBackgroundOutputSlice(e,n=0,o=4096){let r=this.backgroundTasks.get(e);if(!r)throw new Error(`Background task not found: ${e}`);try{let s=Oo.statSync(r.outputFilePath).size,a=Math.max(0,Math.min(n,s)),l=Math.max(1,o),c=Math.min(s,a+l);return c<=a?{content:"",startOffset:a,endOffset:c,totalBytes:s,truncated:!1}:{content:Oo.readFileSync(r.outputFilePath).subarray(a,c).toString("utf8"),startOffset:a,endOffset:c,totalBytes:s,truncated:c<s}}catch{return{content:"",startOffset:0,endOffset:0,totalBytes:0,truncated:!1}}}stopBackgroundTask(e){return this.stopBackgroundTaskDetailed(e).signalSent??!1}stopBackgroundTaskDetailed(e){let n=this.backgroundTasks.get(e);if(!n)return{found:!1};let o=this.getBackgroundTaskInfo(e);if(o&&o.state!=="running")return{found:!0,state:o.state,alreadyFinished:!0,signalSent:!1};try{return n.killed=!0,Ou(n.pid,{exited:()=>n.finishedAt!==void 0}),{found:!0,state:"running",alreadyFinished:!1,signalSent:!0}}catch{return{found:!0,state:"running",alreadyFinished:!1,signalSent:!1}}}getBackgroundOutputDir(){let e=gS.join(wq.homedir(),".panda"),n=Sq("sha1").update(process.cwd()).digest("hex").slice(0,12),o=process.env.PANDA_SESSION_ID||`${process.pid}`;return gS.join(e,"tmp",n,o,"tasks")}cleanupBackgroundTasks(){let e=Date.now(),n=[...this.backgroundTasks.entries()];for(let[r,i]of n){let s=i.finishedAt;if(s!==void 0&&e-s>Ii.backgroundTaskRetentionMs){this.backgroundTasks.delete(r);try{Oo.unlinkSync(i.outputFilePath)}catch{}}}let o=[...this.backgroundTasks.entries()].sort((r,i)=>r[1].startedAt-i[1].startedAt);for(;o.length>Ii.maxBackgroundTasks;){let r=o.shift();if(!r)break;let[i,s]=r;if(s.finishedAt!==void 0){this.backgroundTasks.delete(i);try{Oo.unlinkSync(s.outputFilePath)}catch{}}}}async execute(e,n={}){let o=Date.now(),r=n.timeout??Ii.timeout,i=n.maxOutputLines??Ii.maxOutputLines,s=n.cwd||process.cwd(),a=this.resolveCwd(s,process.cwd()),l=Ru(),c=OO(e,a),u=mS(l,c.command,c.posixCwdForArgs),d={cwd:a,env:{...process.env,...n.env},stdio:"pipe",shell:!1,detached:process.platform!=="win32",...process.platform==="win32"?{windowsHide:!0}:{}};return new Promise((p,f)=>{let m="",g="",h=0,y=0,v=!1,b=!1,R=!1,M=!1,B=!1,S=e,x=DO(u.executable,u.args,d),T=`${Date.now()}-${Math.random().toString(36).slice(2)}`;this.activeProcesses.set(T,x);let W;r>0&&(W=setTimeout(()=>{M||(R=!0,Ou(x.pid,{exited:()=>B}))},r)),n.signal&&n.signal.addEventListener("abort",()=>{M||(b=!0,Ou(x.pid,{exited:()=>B}))}),x.stdout?.on("data",A=>{let j=A.toString().split(`
1875
1875
  `);for(let _ of j){if(h>=i){v=!0;break}m+=_+(j.indexOf(_)<j.length-1?`
1876
1876
  `:""),(_.includes(`
1877
1877
  `)||j.indexOf(_)<j.length-1)&&h++}m.length>Ii.maxOutputSize&&(v=!0,m=m.slice(0,Ii.maxOutputSize))}),x.stderr?.on("data",A=>{let j=A.toString().split(`
@@ -1888,34 +1888,34 @@ Duration: ${d}ms
1888
1888
  --- STDOUT ---
1889
1889
  ${f}${p.stderr?`
1890
1890
  --- STDERR ---
1891
- ${p.stderr}`:""}`,y=(p.exitCode??0)!==0&&!p.timedOut,v=(p.stdout||p.stderr||"")+(p.timedOut?m:""),b=v.length>200?v.slice(0,200)+"\u2026":v||void 0,R=this.baseDisplay({status:{state:y?"error":"success"},exitCode:p.exitCode??void 0,outputPreview:b,blockTimedOut:p.timedOut});return{llmContent:h,displayData:R,execution:p,security:g,...y&&{error:{message:`Command exited with code ${u.exitCode}`,type:"COMMAND_EXECUTION_ERROR"}}}}catch(c){let u=c instanceof Error?c.message:String(c),d=u.includes("timeout"),p=u.includes("cancelled")||e.aborted,f=this.buildExecution(o,l,{exitCode:null,stderr:u,timedOut:d,cancelled:p}),m=this.buildSecurity("Command execution failed"),g=this.baseDisplay({status:{state:"error"}});return{llmContent:`Command execution failed: ${u}`,displayData:g,error:{message:u,type:d?"TIMEOUT":p?"CANCELLED":"COMMAND_EXECUTION_ERROR"},execution:f,security:m}}}};import{execSync as Sq}from"node:child_process";import{existsSync as zO}from"node:fs";import{createRequire as kq}from"node:module";import{dirname as WO,join as th}from"node:path";import{fileURLToPath as Iq}from"node:url";var dwe=process.env.RIPGREP_PREBUILT_VERSION||"v15.0.1",_q=process.env.RG_NPM_SCOPE||"@panda-agent",$O=[{packageNameSuffix:"darwin-arm64",nodeKey:"arm64-darwin",assetTriple:"aarch64-apple-darwin",ext:"tar.gz",os:"darwin",cpu:"arm64"},{packageNameSuffix:"darwin-x64",nodeKey:"x64-darwin",assetTriple:"x86_64-apple-darwin",ext:"tar.gz",os:"darwin",cpu:"x64"},{packageNameSuffix:"linux-arm64",nodeKey:"arm64-linux",assetTriple:"aarch64-unknown-linux-gnu",ext:"tar.gz",os:"linux",cpu:"arm64"},{packageNameSuffix:"linux-x64",nodeKey:"x64-linux",assetTriple:"x86_64-unknown-linux-musl",ext:"tar.gz",os:"linux",cpu:"x64"},{packageNameSuffix:"win32-arm64",nodeKey:"arm64-win32",assetTriple:"aarch64-pc-windows-msvc",ext:"zip",os:"win32",cpu:"arm64"},{packageNameSuffix:"win32-x64",nodeKey:"x64-win32",assetTriple:"x86_64-pc-windows-msvc",ext:"zip",os:"win32",cpu:"x64"}];function FO(t){return`${_q}/ripgrep-${t.packageNameSuffix}`}var UO={"arm64-darwin":{triple:"aarch64-apple-darwin",ext:"tar.gz"},"x64-darwin":{triple:"x86_64-apple-darwin",ext:"tar.gz"},"arm64-linux":{triple:"aarch64-unknown-linux-gnu",ext:"tar.gz"},"x64-linux":{triple:"x86_64-unknown-linux-musl",ext:"tar.gz"},"arm64-win32":{triple:"aarch64-pc-windows-msvc",ext:"zip"},"x64-win32":{triple:"x86_64-pc-windows-msvc",ext:"zip"}};function BO(t,e){let n=`${t}-${e}`;if(!UO[n])throw new Error(`[rg-release-map] \u4E0D\u652F\u6301\u7684\u5E73\u53F0: ${n}\u3002\u652F\u6301: ${Object.keys(UO).join(", ")}`);return n}function hS(t,e){return e==="win32"?"rg.exe":"rg"}function Cq(){return(process.env.RIPGREP_PATH||process.env.RG_PATH||"").trim()}function Eq(t){let e=`${process.arch}-${process.platform}`,n=$O.find(o=>o.nodeKey===e);if(!n)return"";try{let r=kq(th(t,"package.json")).resolve(`${FO(n)}/package.json`),i=hS(process.arch,process.platform),s=th(WO(r),"bin",i);if(zO(s))return s}catch{}return""}function Pq(t){try{let e=BO(process.arch,process.platform),n=hS(process.arch,process.platform),o=th(t,"vendor","ripgrep",e,n);if(zO(o))return o}catch{}return""}function Rq(){let t=process.platform==="win32"?"where rg":"command -v rg";try{return Sq(t,{encoding:"utf8",stdio:["pipe","pipe","ignore"],windowsHide:!0}).trim().split(/\r?\n/)[0]||""}catch{return""}}var Aq=Iq(import.meta.url),Mq=WO(Aq),jO=th(Mq,".."),Tl=Cq()||Eq(jO)||Pq(jO)||Rq();import{isAbsolute as Dq,resolve as Oq}from"node:path";import{spawn as Lq}from"node:child_process";function Nq(){if(!Tl)throw new Error("rgPath is undefined from @vscode/ripgrep");return Tl.replace(/\bnode_modules\.asar\b/,"node_modules.asar.unpacked")}var KO=100,$q=2e3,Fq=12e3,Uq="(Results truncated: showing first 100 matches. Use a more specific path or pattern for more.)";function Bq(t){return`(Results truncated: output exceeded ${t} characters. Use a more specific pattern or path.)`}function jq(t,e,n,o={maxResults:KO,maxLineLength:$q,maxCharLimit:Fq}){let{maxResults:r,maxLineLength:i,maxCharLimit:s}=o,a=t.length>r,l=t.slice(0,r),c=g=>g.length>i?g.substring(0,i)+"...":g,u=l.map(g=>`${g.filePath}:${g.lineNumber}:${c(g.lineText)}`),d=u.length>0?u.join(`
1891
+ ${p.stderr}`:""}`,y=(p.exitCode??0)!==0&&!p.timedOut,v=(p.stdout||p.stderr||"")+(p.timedOut?m:""),b=v.length>200?v.slice(0,200)+"\u2026":v||void 0,R=this.baseDisplay({status:{state:y?"error":"success"},exitCode:p.exitCode??void 0,outputPreview:b,blockTimedOut:p.timedOut});return{llmContent:h,displayData:R,execution:p,security:g,...y&&{error:{message:`Command exited with code ${u.exitCode}`,type:"COMMAND_EXECUTION_ERROR"}}}}catch(c){let u=c instanceof Error?c.message:String(c),d=u.includes("timeout"),p=u.includes("cancelled")||e.aborted,f=this.buildExecution(o,l,{exitCode:null,stderr:u,timedOut:d,cancelled:p}),m=this.buildSecurity("Command execution failed"),g=this.baseDisplay({status:{state:"error"}});return{llmContent:`Command execution failed: ${u}`,displayData:g,error:{message:u,type:d?"TIMEOUT":p?"CANCELLED":"COMMAND_EXECUTION_ERROR"},execution:f,security:m}}}};import{execSync as Iq}from"node:child_process";import{existsSync as zO}from"node:fs";import{createRequire as Cq}from"node:module";import{dirname as WO,join as th}from"node:path";import{fileURLToPath as Eq}from"node:url";var fwe=process.env.RIPGREP_PREBUILT_VERSION||"v15.0.1",kq=process.env.RG_NPM_SCOPE||"@panda-agent",$O=[{packageNameSuffix:"darwin-arm64",nodeKey:"arm64-darwin",assetTriple:"aarch64-apple-darwin",ext:"tar.gz",os:"darwin",cpu:"arm64"},{packageNameSuffix:"darwin-x64",nodeKey:"x64-darwin",assetTriple:"x86_64-apple-darwin",ext:"tar.gz",os:"darwin",cpu:"x64"},{packageNameSuffix:"linux-arm64",nodeKey:"arm64-linux",assetTriple:"aarch64-unknown-linux-gnu",ext:"tar.gz",os:"linux",cpu:"arm64"},{packageNameSuffix:"linux-x64",nodeKey:"x64-linux",assetTriple:"x86_64-unknown-linux-musl",ext:"tar.gz",os:"linux",cpu:"x64"},{packageNameSuffix:"win32-arm64",nodeKey:"arm64-win32",assetTriple:"aarch64-pc-windows-msvc",ext:"zip",os:"win32",cpu:"arm64"},{packageNameSuffix:"win32-x64",nodeKey:"x64-win32",assetTriple:"x86_64-pc-windows-msvc",ext:"zip",os:"win32",cpu:"x64"}];function FO(t){return`${kq}/ripgrep-${t.packageNameSuffix}`}var UO={"arm64-darwin":{triple:"aarch64-apple-darwin",ext:"tar.gz"},"x64-darwin":{triple:"x86_64-apple-darwin",ext:"tar.gz"},"arm64-linux":{triple:"aarch64-unknown-linux-gnu",ext:"tar.gz"},"x64-linux":{triple:"x86_64-unknown-linux-musl",ext:"tar.gz"},"arm64-win32":{triple:"aarch64-pc-windows-msvc",ext:"zip"},"x64-win32":{triple:"x86_64-pc-windows-msvc",ext:"zip"}};function BO(t,e){let n=`${t}-${e}`;if(!UO[n])throw new Error(`[rg-release-map] \u4E0D\u652F\u6301\u7684\u5E73\u53F0: ${n}\u3002\u652F\u6301: ${Object.keys(UO).join(", ")}`);return n}function hS(t,e){return e==="win32"?"rg.exe":"rg"}function Pq(){return(process.env.RIPGREP_PATH||process.env.RG_PATH||"").trim()}function Rq(t){let e=`${process.arch}-${process.platform}`,n=$O.find(o=>o.nodeKey===e);if(!n)return"";try{let r=Cq(th(t,"package.json")).resolve(`${FO(n)}/package.json`),i=hS(process.arch,process.platform),s=th(WO(r),"bin",i);if(zO(s))return s}catch{}return""}function Aq(t){try{let e=BO(process.arch,process.platform),n=hS(process.arch,process.platform),o=th(t,"vendor","ripgrep",e,n);if(zO(o))return o}catch{}return""}function Mq(){let t=process.platform==="win32"?"where rg":"command -v rg";try{return Iq(t,{encoding:"utf8",stdio:["pipe","pipe","ignore"],windowsHide:!0}).trim().split(/\r?\n/)[0]||""}catch{return""}}var Dq=Eq(import.meta.url),Oq=WO(Dq),jO=th(Oq,".."),Tl=Pq()||Rq(jO)||Aq(jO)||Mq();import{isAbsolute as Lq,resolve as Nq}from"node:path";import{spawn as $q}from"node:child_process";function Fq(){if(!Tl)throw new Error("rgPath is undefined from @vscode/ripgrep");return Tl.replace(/\bnode_modules\.asar\b/,"node_modules.asar.unpacked")}var KO=100,Uq=2e3,Bq=12e3,jq="(Results truncated: showing first 100 matches. Use a more specific path or pattern for more.)";function zq(t){return`(Results truncated: output exceeded ${t} characters. Use a more specific pattern or path.)`}function Wq(t,e,n,o={maxResults:KO,maxLineLength:Uq,maxCharLimit:Bq}){let{maxResults:r,maxLineLength:i,maxCharLimit:s}=o,a=t.length>r,l=t.slice(0,r),c=g=>g.length>i?g.substring(0,i)+"...":g,u=l.map(g=>`${g.filePath}:${g.lineNumber}:${c(g.lineText)}`),d=u.length>0?u.join(`
1892
1892
  `):"No matches found",p=!1;d.length>s&&(d=d.substring(0,s)+`
1893
- `+Bq(s),p=!0),a&&(d+=`
1894
- `+Uq);let f=new Map;for(let g of l)f.set(g.filePath,(f.get(g.filePath)||0)+1);let m=[];for(let[g,h]of f){let y=g.split(/[\\/]/).pop()??g;m.push({name:y,path:g,count:h})}return{text:d,displayData:{tool:"grep",pattern:e,searchDir:n,items:m},truncatedByCount:a,truncatedByChars:p}}var nh=class extends De{workspaceRoot;typedParams;constructor(e,n,o,r,i){if(super(e,o,r,i),this.workspaceRoot=e._workspaceRoot||n,typeof e.pattern!="string")throw new Error("pattern must be a string");this.typedParams={pattern:e.pattern,dir_path:e.dir_path,case_sensitive:e.case_sensitive??!1}}getDescription(){return`Searching for "${this.typedParams.pattern}" in ${this.typedParams.dir_path||"workspace"}`}toolLocations(){return this.typedParams.dir_path?[{path:this.typedParams.dir_path}]:[]}async execute(e,n){let{pattern:o,dir_path:r,case_sensitive:i}=this.typedParams;try{let s=r?Dq(r)?r:Oq(this.workspaceRoot||process.cwd(),r):this.workspaceRoot||process.cwd(),{text:a,displayData:l}=await this.executeRipgrep(o,s,i??!1,e);return{llmContent:a,displayData:l}}catch(s){return{llmContent:`Grep failed: ${s instanceof Error?s.message:String(s)}`,error:{message:s instanceof Error?s.message:String(s),type:"GREP_ERROR"}}}}async executeRipgrep(e,n,o,r){let i=Nq();return new Promise((s,a)=>{let l=["--json","--max-count",String(KO),...o?[]:["--ignore-case"],e,n],c=Lq(i,l,{cwd:n}),u="",d="";c.stdout?.on("data",p=>{u+=p.toString()}),c.stderr?.on("data",p=>{d+=p.toString()}),r&&typeof r.addEventListener=="function"&&r.addEventListener("abort",()=>{c.kill(),a(new Error("Grep cancelled"))}),c.on("close",p=>{if(p===0||p===null||p===1){let{text:f,displayData:m}=this.parseRipgrepOutput(u,e,n);s({text:f,displayData:m})}else a(new Error(`ripgrep exited with code ${p}: ${d}`))}),c.on("error",p=>{a(new Error(`Failed to execute ripgrep: ${p.message}. Make sure ripgrep is installed.`))})})}parseRipgrepOutput(e,n,o){if(!e.trim())return{text:"No matches found",displayData:{tool:"grep",pattern:n,searchDir:o,items:[]}};let r=e.trim().split(`
1895
- `).filter(l=>l.trim()),i=[];for(let l of r)try{let c=JSON.parse(l);if(c.type==="match"){let u=c.data.path.text,d=c.data.line_number,p=c.data.lines.text.trim();i.push({filePath:u,lineNumber:d,lineText:p})}}catch{}let{text:s,displayData:a}=jq(i,n,o);return{text:s,displayData:a}}};import{stat as Vq}from"node:fs/promises";import{isAbsolute as qq,resolve as Gq,join as Zq,basename as Jq}from"node:path";import{spawn as zq}from"node:child_process";import{stat as Wq}from"node:fs/promises";function Kq(){if(!Tl)throw new Error("rgPath is undefined from @vscode/ripgrep");return Tl.replace(/\bnode_modules\.asar\b/,"node_modules.asar.unpacked")}function HO(t){return!!(t&&typeof t=="object"&&t.aborted===!0)}async function Hq(t){if(!(await Wq(t).catch(()=>{}))?.isDirectory()){let n=new Error(`No such file or directory: '${t}'`);throw n.code="ENOENT",n.path=t,n}}async function*VO(t){let{cwd:e,pattern:n,exclude:o=[],maxResults:r,signal:i}=t;if(await Hq(e),HO(i))throw new Error("Glob cancelled");let s=Kq(),a=["--files","--glob=!.git/*",`--glob=${n}`];for(let f of o)f&&a.push(`--glob=!${f}`);t.includeHidden&&a.push("--hidden"),t.respectGitIgnore===!1&&a.push("--no-ignore"),t.caseSensitive===!1&&a.push("--glob-case-insensitive");let l=zq(s,a,{cwd:e,windowsHide:!0,stdio:["ignore","pipe","ignore"]}),c=()=>{l.kill()};i&&typeof i.addEventListener=="function"&&i.addEventListener("abort",c,{once:!0});let u=l.stdout;if(!u)throw new Error("ripgrep stdout is not available");let d=0,p="";try{for await(let f of u){if(HO(i))throw new Error("Glob cancelled");p+=typeof f=="string"?f:f.toString();let m=p.split(/\r?\n/);p=m.pop()??"";for(let g of m)if(g&&(yield g,d++,d>=r)){l.kill();return}}p&&d<r&&(yield p)}finally{i&&typeof i.removeEventListener=="function"&&i.removeEventListener("abort",c)}}var qO=100,Yq="(Results truncated: showing first 100 files. Use a more specific pattern or dir_path for more.)";function Qq(t){if(t!=null){if(typeof t=="string")return t?[t]:void 0;if(Array.isArray(t)){let e=t.filter(n=>typeof n=="string");return e.length?e:void 0}}}var rh=class extends De{workspaceRoot;typedParams;constructor(e,n,o,r,i){if(super(e,o,r,i),this.workspaceRoot=e._workspaceRoot||n,typeof e.pattern!="string")throw new Error("pattern must be a string");let s=e.max_results;this.typedParams={pattern:e.pattern,dir_path:e.dir_path,exclude:Qq(e.exclude),max_results:typeof s=="number"&&s>=1&&s<=1e4?s:qO,respect_git_ignore:e.respect_git_ignore!==!1,include_hidden:e.include_hidden===!0,case_sensitive:e.case_sensitive===!0,sort_by_modified_time:e.sort_by_modified_time!==!1}}getDescription(){return`Finding files matching pattern "${this.typedParams.pattern}"`}toolLocations(){return this.typedParams.dir_path?[{path:this.typedParams.dir_path}]:[]}async execute(e,n){let{pattern:o,dir_path:r,exclude:i,max_results:s,respect_git_ignore:a,include_hidden:l,case_sensitive:c,sort_by_modified_time:u}=this.typedParams;try{let d=r?qq(r)?r:Gq(this.workspaceRoot||process.cwd(),r):this.workspaceRoot||process.cwd();if(e.aborted)return{llmContent:"Glob cancelled",displayData:{tool:"glob_file_search",pattern:o,searchDir:d,items:[]}};let p=s??qO,f=[];for await(let b of VO({cwd:d,pattern:o,exclude:i,includeHidden:l,respectGitIgnore:a,caseSensitive:c,maxResults:p,signal:e}))f.push(b);let m=f.length>=p&&p>0,g=[];for(let b of f){let R=Zq(d,b);try{let M=await Vq(R);if(!M.isFile())continue;g.push({fullPath:R,name:Jq(R),mtime:M.mtimeMs})}catch{continue}}u?g.sort((b,R)=>R.mtime-b.mtime):g.sort((b,R)=>b.fullPath.localeCompare(R.fullPath));let h=g.map(b=>({name:b.name,path:b.fullPath,isDirectory:!1})),y;return h.length===0?y="No files found matching the pattern":y=h.map(b=>b.path).join(`
1893
+ `+zq(s),p=!0),a&&(d+=`
1894
+ `+jq);let f=new Map;for(let g of l)f.set(g.filePath,(f.get(g.filePath)||0)+1);let m=[];for(let[g,h]of f){let y=g.split(/[\\/]/).pop()??g;m.push({name:y,path:g,count:h})}return{text:d,displayData:{tool:"grep",pattern:e,searchDir:n,items:m},truncatedByCount:a,truncatedByChars:p}}var nh=class extends De{workspaceRoot;typedParams;constructor(e,n,o,r,i){if(super(e,o,r,i),this.workspaceRoot=e._workspaceRoot||n,typeof e.pattern!="string")throw new Error("pattern must be a string");this.typedParams={pattern:e.pattern,dir_path:e.dir_path,case_sensitive:e.case_sensitive??!1}}getDescription(){return`Searching for "${this.typedParams.pattern}" in ${this.typedParams.dir_path||"workspace"}`}toolLocations(){return this.typedParams.dir_path?[{path:this.typedParams.dir_path}]:[]}async execute(e,n){let{pattern:o,dir_path:r,case_sensitive:i}=this.typedParams;try{let s=r?Lq(r)?r:Nq(this.workspaceRoot||process.cwd(),r):this.workspaceRoot||process.cwd(),{text:a,displayData:l}=await this.executeRipgrep(o,s,i??!1,e);return{llmContent:a,displayData:l}}catch(s){return{llmContent:`Grep failed: ${s instanceof Error?s.message:String(s)}`,error:{message:s instanceof Error?s.message:String(s),type:"GREP_ERROR"}}}}async executeRipgrep(e,n,o,r){let i=Fq();return new Promise((s,a)=>{let l=["--json","--max-count",String(KO),...o?[]:["--ignore-case"],e,n],c=$q(i,l,{cwd:n}),u="",d="";c.stdout?.on("data",p=>{u+=p.toString()}),c.stderr?.on("data",p=>{d+=p.toString()}),r&&typeof r.addEventListener=="function"&&r.addEventListener("abort",()=>{c.kill(),a(new Error("Grep cancelled"))}),c.on("close",p=>{if(p===0||p===null||p===1){let{text:f,displayData:m}=this.parseRipgrepOutput(u,e,n);s({text:f,displayData:m})}else a(new Error(`ripgrep exited with code ${p}: ${d}`))}),c.on("error",p=>{a(new Error(`Failed to execute ripgrep: ${p.message}. Make sure ripgrep is installed.`))})})}parseRipgrepOutput(e,n,o){if(!e.trim())return{text:"No matches found",displayData:{tool:"grep",pattern:n,searchDir:o,items:[]}};let r=e.trim().split(`
1895
+ `).filter(l=>l.trim()),i=[];for(let l of r)try{let c=JSON.parse(l);if(c.type==="match"){let u=c.data.path.text,d=c.data.line_number,p=c.data.lines.text.trim();i.push({filePath:u,lineNumber:d,lineText:p})}}catch{}let{text:s,displayData:a}=Wq(i,n,o);return{text:s,displayData:a}}};import{stat as Gq}from"node:fs/promises";import{isAbsolute as Zq,resolve as Jq,join as Yq,basename as Qq}from"node:path";import{spawn as Kq}from"node:child_process";import{stat as Hq}from"node:fs/promises";function Vq(){if(!Tl)throw new Error("rgPath is undefined from @vscode/ripgrep");return Tl.replace(/\bnode_modules\.asar\b/,"node_modules.asar.unpacked")}function HO(t){return!!(t&&typeof t=="object"&&t.aborted===!0)}async function qq(t){if(!(await Hq(t).catch(()=>{}))?.isDirectory()){let n=new Error(`No such file or directory: '${t}'`);throw n.code="ENOENT",n.path=t,n}}async function*VO(t){let{cwd:e,pattern:n,exclude:o=[],maxResults:r,signal:i}=t;if(await qq(e),HO(i))throw new Error("Glob cancelled");let s=Vq(),a=["--files","--glob=!.git/*",`--glob=${n}`];for(let f of o)f&&a.push(`--glob=!${f}`);t.includeHidden&&a.push("--hidden"),t.respectGitIgnore===!1&&a.push("--no-ignore"),t.caseSensitive===!1&&a.push("--glob-case-insensitive");let l=Kq(s,a,{cwd:e,windowsHide:!0,stdio:["ignore","pipe","ignore"]}),c=()=>{l.kill()};i&&typeof i.addEventListener=="function"&&i.addEventListener("abort",c,{once:!0});let u=l.stdout;if(!u)throw new Error("ripgrep stdout is not available");let d=0,p="";try{for await(let f of u){if(HO(i))throw new Error("Glob cancelled");p+=typeof f=="string"?f:f.toString();let m=p.split(/\r?\n/);p=m.pop()??"";for(let g of m)if(g&&(yield g,d++,d>=r)){l.kill();return}}p&&d<r&&(yield p)}finally{i&&typeof i.removeEventListener=="function"&&i.removeEventListener("abort",c)}}var qO=100,Xq="(Results truncated: showing first 100 files. Use a more specific pattern or dir_path for more.)";function eG(t){if(t!=null){if(typeof t=="string")return t?[t]:void 0;if(Array.isArray(t)){let e=t.filter(n=>typeof n=="string");return e.length?e:void 0}}}var rh=class extends De{workspaceRoot;typedParams;constructor(e,n,o,r,i){if(super(e,o,r,i),this.workspaceRoot=e._workspaceRoot||n,typeof e.pattern!="string")throw new Error("pattern must be a string");let s=e.max_results;this.typedParams={pattern:e.pattern,dir_path:e.dir_path,exclude:eG(e.exclude),max_results:typeof s=="number"&&s>=1&&s<=1e4?s:qO,respect_git_ignore:e.respect_git_ignore!==!1,include_hidden:e.include_hidden===!0,case_sensitive:e.case_sensitive===!0,sort_by_modified_time:e.sort_by_modified_time!==!1}}getDescription(){return`Finding files matching pattern "${this.typedParams.pattern}"`}toolLocations(){return this.typedParams.dir_path?[{path:this.typedParams.dir_path}]:[]}async execute(e,n){let{pattern:o,dir_path:r,exclude:i,max_results:s,respect_git_ignore:a,include_hidden:l,case_sensitive:c,sort_by_modified_time:u}=this.typedParams;try{let d=r?Zq(r)?r:Jq(this.workspaceRoot||process.cwd(),r):this.workspaceRoot||process.cwd();if(e.aborted)return{llmContent:"Glob cancelled",displayData:{tool:"glob_file_search",pattern:o,searchDir:d,items:[]}};let p=s??qO,f=[];for await(let b of VO({cwd:d,pattern:o,exclude:i,includeHidden:l,respectGitIgnore:a,caseSensitive:c,maxResults:p,signal:e}))f.push(b);let m=f.length>=p&&p>0,g=[];for(let b of f){let R=Yq(d,b);try{let M=await Gq(R);if(!M.isFile())continue;g.push({fullPath:R,name:Qq(R),mtime:M.mtimeMs})}catch{continue}}u?g.sort((b,R)=>R.mtime-b.mtime):g.sort((b,R)=>b.fullPath.localeCompare(R.fullPath));let h=g.map(b=>({name:b.name,path:b.fullPath,isDirectory:!1})),y;return h.length===0?y="No files found matching the pattern":y=h.map(b=>b.path).join(`
1896
1896
  `),m&&(y+=`
1897
1897
 
1898
- `+Yq.replace("100",String(p))),{llmContent:y,displayData:{tool:"glob_file_search",pattern:o,searchDir:d,items:h}}}catch(d){let p=d instanceof Error?d.message:String(d);return{llmContent:`Glob failed: ${p}`,error:{message:p,type:"GLOB_ERROR"}}}}};import{promises as Xq}from"node:dns";import eG from"turndown";function GO(t){if(t==="127.0.0.1"||t==="::1"||t==="localhost"||t.startsWith("10."))return!0;if(t.startsWith("172.")){let e=parseInt(t.split(".")[1],10);if(e>=16&&e<=31)return!0}return!!(t.startsWith("192.168.")||t.startsWith("127.")||t==="0.0.0.0"||t.startsWith("fe80:")||t.startsWith("fc")||t.startsWith("fd")||t.startsWith("::ffff:127.")||t.startsWith("::ffff:10.")||t.startsWith("::ffff:172.")||t.startsWith("::ffff:192.168."))}function yS(t){return t.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"").replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()}var ZO=3e4,tG=12e4,JO=2*1024*1024,YO=5,nG=/^(text\/|application\/(json|xml|xhtml\+xml)|application\/.*\+xml)/i;async function QO(t){let e=await Xq.lookup(t,{all:!0,verbatim:!0});for(let{address:n}of e)if(GO(n))throw new Error(`Blocked: ${t} resolves to private or reserved address (${n}). web_fetch only allows public URLs.`)}async function rG(t){try{let e=new eG({headingStyle:"atx",hr:"---",bulletListMarker:"-",codeBlockStyle:"fenced",emDelimiter:"*"});return e.remove(["script","style","meta","link"]),e.turndown(t)}catch{return yS(t)}}var oh=class extends De{typedParams;constructor(e,n,o,r){super(e,n,o,r);let i=e.url;if(typeof i!="string"||!i.trim())throw new Error("url must be a non-empty string");this.typedParams={url:i.trim(),format:e.format||"markdown",timeoutMs:typeof e.timeoutMs=="number"?Math.min(e.timeoutMs,tG):ZO,maxBytes:typeof e.maxBytes=="number"?Math.min(e.maxBytes,5*1024*1024):JO,maxChars:typeof e.maxChars=="number"?Math.min(e.maxChars,2e5):2e4}}getDescription(){return`Fetching ${this.typedParams.url}`}toolLocations(){return[]}async execute(e,n){let{url:o,format:r}=this.typedParams,i=this.typedParams.timeoutMs??ZO,s=this.typedParams.maxBytes??JO,a=this.typedParams.maxChars??2e4,l={tool:"web_fetch",url:o,format:r};try{let S=new URL(o);if(S.protocol!=="http:"&&S.protocol!=="https:")return this.errorResult(l,"Only http and https URLs are allowed.","web_fetch_processing_error");let x=S.hostname;if(!x||x==="localhost"||x==="127.0.0.1"||x==="::1")return this.errorResult(l,"localhost and loopback addresses are not allowed.","web_fetch_processing_error");await QO(x)}catch(S){let x=S instanceof Error?S.message:String(S);return x.includes("Blocked:")?this.errorResult(l,x,"web_fetch_processing_error"):this.errorResult(l,`Invalid URL or DNS: ${x}`,"web_fetch_no_url_in_prompt")}let c=o,u=null;for(let S=0;S<=YO;S++){let x=new AbortController,T=setTimeout(()=>x.abort(),i);if(e?.aborted)return clearTimeout(T),this.errorResult(l,"Request cancelled.","web_fetch_fallback_failed");e&&typeof e.addEventListener=="function"&&e.addEventListener("abort",()=>x.abort(),{once:!0});try{u=await fetch(c,{redirect:"manual",signal:x.signal,headers:{"User-Agent":"Mozilla/5.0 (compatible; Panda-WebFetch/1.0)",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,application/json;q=0.8,text/*;q=0.7,*/*;q=0.5","Accept-Language":"en-US,en;q=0.9"}})}catch(W){clearTimeout(T);let A=W instanceof Error?W.message:String(W);return this.errorResult(l,A.includes("abort")?"Request timed out or cancelled.":A,"web_fetch_fallback_failed")}if(clearTimeout(T),u.status>=300&&u.status<400){let W=u.headers.get("location");if(!W||S>=YO)return this.errorResult(l,"Too many redirects or missing Location.","web_fetch_fallback_failed");let A=new URL(W,c).href;if(A.startsWith("http://")||A.startsWith("https://")){try{let U=new URL(A).hostname;await QO(U)}catch(U){let j=U instanceof Error?U.message:String(U);return this.errorResult(l,j,"web_fetch_processing_error")}c=A;continue}return this.errorResult(l,"Redirect to non-http(s) URL not allowed.","web_fetch_processing_error")}break}let d=u;l.httpStatus=d.status;let p=d.headers.get("content-type")||"";if(l.contentType=p,!d.ok)return this.errorResult(l,`HTTP ${d.status}`,"web_fetch_fallback_failed");let f=p.split(";")[0].trim().toLowerCase();if(!nG.test(f)&&!f.startsWith("text/"))return this.errorResult(l,`Content-Type "${f}" is not allowed. Use text/html, text/plain, application/json, or application/xml.`,"web_fetch_processing_error");let m;try{let S=d.body?.getReader();if(!S)return this.errorResult(l,"No response body.","web_fetch_fallback_failed");let x=[],T=0;for(;;){let{done:U,value:j}=await S.read();if(U)break;if(T+=j.length,T>s){x.push(j.subarray(0,j.length-(T-s)));break}x.push(j)}let W=x.reduce((U,j)=>U+j.length,0);m=new Uint8Array(W);let A=0;for(let U of x)m.set(U,A),A+=U.length}catch(S){let x=S instanceof Error?S.message:String(S);return this.errorResult(l,x,"web_fetch_fallback_failed")}l.bytes=m.byteLength,l.truncated=m.byteLength>=s;let g=p.match(/charset=([^;]+)/i),h=g?g[1].trim():"utf-8",y;try{y=new TextDecoder(h).decode(m)}catch{y=new TextDecoder("utf-8").decode(m)}let v=y,b=f.includes("html");r==="markdown"&&b?v=await rG(y):r==="text"&&b&&(v=yS(y));let R=v.length>a;R&&(v=v.slice(0,a));let B=[`Fetched: ${o}`,`HTTP ${d.status}`,p?`Content-Type: ${p}`:"",`Bytes: ${m.byteLength}${l.truncated?" (truncated)":""}`,R?`Content truncated to ${a} characters.`:""].filter(Boolean).join(`
1898
+ `+Xq.replace("100",String(p))),{llmContent:y,displayData:{tool:"glob_file_search",pattern:o,searchDir:d,items:h}}}catch(d){let p=d instanceof Error?d.message:String(d);return{llmContent:`Glob failed: ${p}`,error:{message:p,type:"GLOB_ERROR"}}}}};import{promises as tG}from"node:dns";import nG from"turndown";function GO(t){if(t==="127.0.0.1"||t==="::1"||t==="localhost"||t.startsWith("10."))return!0;if(t.startsWith("172.")){let e=parseInt(t.split(".")[1],10);if(e>=16&&e<=31)return!0}return!!(t.startsWith("192.168.")||t.startsWith("127.")||t==="0.0.0.0"||t.startsWith("fe80:")||t.startsWith("fc")||t.startsWith("fd")||t.startsWith("::ffff:127.")||t.startsWith("::ffff:10.")||t.startsWith("::ffff:172.")||t.startsWith("::ffff:192.168."))}function yS(t){return t.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"").replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()}var ZO=3e4,rG=12e4,JO=2*1024*1024,YO=5,oG=/^(text\/|application\/(json|xml|xhtml\+xml)|application\/.*\+xml)/i;async function QO(t){let e=await tG.lookup(t,{all:!0,verbatim:!0});for(let{address:n}of e)if(GO(n))throw new Error(`Blocked: ${t} resolves to private or reserved address (${n}). web_fetch only allows public URLs.`)}async function iG(t){try{let e=new nG({headingStyle:"atx",hr:"---",bulletListMarker:"-",codeBlockStyle:"fenced",emDelimiter:"*"});return e.remove(["script","style","meta","link"]),e.turndown(t)}catch{return yS(t)}}var oh=class extends De{typedParams;constructor(e,n,o,r){super(e,n,o,r);let i=e.url;if(typeof i!="string"||!i.trim())throw new Error("url must be a non-empty string");this.typedParams={url:i.trim(),format:e.format||"markdown",timeoutMs:typeof e.timeoutMs=="number"?Math.min(e.timeoutMs,rG):ZO,maxBytes:typeof e.maxBytes=="number"?Math.min(e.maxBytes,5*1024*1024):JO,maxChars:typeof e.maxChars=="number"?Math.min(e.maxChars,2e5):2e4}}getDescription(){return`Fetching ${this.typedParams.url}`}toolLocations(){return[]}async execute(e,n){let{url:o,format:r}=this.typedParams,i=this.typedParams.timeoutMs??ZO,s=this.typedParams.maxBytes??JO,a=this.typedParams.maxChars??2e4,l={tool:"web_fetch",url:o,format:r};try{let S=new URL(o);if(S.protocol!=="http:"&&S.protocol!=="https:")return this.errorResult(l,"Only http and https URLs are allowed.","web_fetch_processing_error");let x=S.hostname;if(!x||x==="localhost"||x==="127.0.0.1"||x==="::1")return this.errorResult(l,"localhost and loopback addresses are not allowed.","web_fetch_processing_error");await QO(x)}catch(S){let x=S instanceof Error?S.message:String(S);return x.includes("Blocked:")?this.errorResult(l,x,"web_fetch_processing_error"):this.errorResult(l,`Invalid URL or DNS: ${x}`,"web_fetch_no_url_in_prompt")}let c=o,u=null;for(let S=0;S<=YO;S++){let x=new AbortController,T=setTimeout(()=>x.abort(),i);if(e?.aborted)return clearTimeout(T),this.errorResult(l,"Request cancelled.","web_fetch_fallback_failed");e&&typeof e.addEventListener=="function"&&e.addEventListener("abort",()=>x.abort(),{once:!0});try{u=await fetch(c,{redirect:"manual",signal:x.signal,headers:{"User-Agent":"Mozilla/5.0 (compatible; Panda-WebFetch/1.0)",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,application/json;q=0.8,text/*;q=0.7,*/*;q=0.5","Accept-Language":"en-US,en;q=0.9"}})}catch(W){clearTimeout(T);let A=W instanceof Error?W.message:String(W);return this.errorResult(l,A.includes("abort")?"Request timed out or cancelled.":A,"web_fetch_fallback_failed")}if(clearTimeout(T),u.status>=300&&u.status<400){let W=u.headers.get("location");if(!W||S>=YO)return this.errorResult(l,"Too many redirects or missing Location.","web_fetch_fallback_failed");let A=new URL(W,c).href;if(A.startsWith("http://")||A.startsWith("https://")){try{let U=new URL(A).hostname;await QO(U)}catch(U){let j=U instanceof Error?U.message:String(U);return this.errorResult(l,j,"web_fetch_processing_error")}c=A;continue}return this.errorResult(l,"Redirect to non-http(s) URL not allowed.","web_fetch_processing_error")}break}let d=u;l.httpStatus=d.status;let p=d.headers.get("content-type")||"";if(l.contentType=p,!d.ok)return this.errorResult(l,`HTTP ${d.status}`,"web_fetch_fallback_failed");let f=p.split(";")[0].trim().toLowerCase();if(!oG.test(f)&&!f.startsWith("text/"))return this.errorResult(l,`Content-Type "${f}" is not allowed. Use text/html, text/plain, application/json, or application/xml.`,"web_fetch_processing_error");let m;try{let S=d.body?.getReader();if(!S)return this.errorResult(l,"No response body.","web_fetch_fallback_failed");let x=[],T=0;for(;;){let{done:U,value:j}=await S.read();if(U)break;if(T+=j.length,T>s){x.push(j.subarray(0,j.length-(T-s)));break}x.push(j)}let W=x.reduce((U,j)=>U+j.length,0);m=new Uint8Array(W);let A=0;for(let U of x)m.set(U,A),A+=U.length}catch(S){let x=S instanceof Error?S.message:String(S);return this.errorResult(l,x,"web_fetch_fallback_failed")}l.bytes=m.byteLength,l.truncated=m.byteLength>=s;let g=p.match(/charset=([^;]+)/i),h=g?g[1].trim():"utf-8",y;try{y=new TextDecoder(h).decode(m)}catch{y=new TextDecoder("utf-8").decode(m)}let v=y,b=f.includes("html");r==="markdown"&&b?v=await iG(y):r==="text"&&b&&(v=yS(y));let R=v.length>a;R&&(v=v.slice(0,a));let B=[`Fetched: ${o}`,`HTTP ${d.status}`,p?`Content-Type: ${p}`:"",`Bytes: ${m.byteLength}${l.truncated?" (truncated)":""}`,R?`Content truncated to ${a} characters.`:""].filter(Boolean).join(`
1899
1899
  `)+`
1900
1900
 
1901
- `+v;return l.status={state:"success"},{llmContent:B,displayData:l}}errorResult(e,n,o){return e.status={state:"error",error:n},{llmContent:`Web fetch failed: ${n}`,error:{message:n,type:o},displayData:e}}};var XO="https://mcp.exa.ai/mcp",oG=25e3,vS=8,ih=class extends De{typedParams;constructor(e,n,o,r){super(e,n,o,r);let i=e.query;if(typeof i!="string"||!i.trim())throw new Error("query must be a non-empty string");this.typedParams={query:i.trim(),numResults:typeof e.numResults=="number"?e.numResults:vS,type:e.type||"auto",livecrawl:e.livecrawl||"fallback",contextMaxCharacters:typeof e.contextMaxCharacters=="number"?e.contextMaxCharacters:1e4}}getDescription(){return`Searching: ${this.typedParams.query}`}toolLocations(){return[]}async execute(e,n){let{query:o,numResults:r,type:i,livecrawl:s,contextMaxCharacters:a}=this.typedParams,l={tool:"web_search",query:o,numResults:r??vS,status:{state:"pending"}},c={jsonrpc:"2.0",id:1,method:"tools/call",params:{name:"web_search_exa",arguments:{query:o,numResults:r??vS,type:i??"auto",livecrawl:s??"fallback",contextMaxCharacters:a??1e4}}},u=new AbortController,d=setTimeout(()=>u.abort(),oG);if(e?.aborted)return clearTimeout(d),this.errorResult("Request cancelled.",l);e&&typeof e.addEventListener=="function"&&e.addEventListener("abort",()=>u.abort(),{once:!0});try{let p=typeof process<"u"&&process.env&&process.env.PANDA_WEB_SEARCH_API_KEY,f=p?`${XO}?exaApiKey=${encodeURIComponent(p)}`:XO,m=await fetch(f,{method:"POST",headers:{Accept:"application/json, text/event-stream","Content-Type":"application/json"},body:JSON.stringify(c),signal:u.signal});if(clearTimeout(d),!m.ok){let v=await m.text();return this.errorResult(`Search failed (${m.status}): ${v||m.statusText}`,l)}let g=await m.text(),h=this.parseSearchResponse(g);if(h===null)return this.errorResult("No search results or invalid response.",l);let y=h;return l.status={state:"success"},{llmContent:y,displayData:l}}catch(p){clearTimeout(d);let f=p instanceof Error?p.message:String(p),m=p instanceof Error&&p.name==="AbortError";return f.includes("abort")||m?this.errorResult("Search timed out or was cancelled.",l):this.errorResult(f,l)}}parseSearchResponse(e){let n=e.split(`
1901
+ `+v;return l.status={state:"success"},{llmContent:B,displayData:l}}errorResult(e,n,o){return e.status={state:"error",error:n},{llmContent:`Web fetch failed: ${n}`,error:{message:n,type:o},displayData:e}}};var XO="https://mcp.exa.ai/mcp",sG=25e3,vS=8,ih=class extends De{typedParams;constructor(e,n,o,r){super(e,n,o,r);let i=e.query;if(typeof i!="string"||!i.trim())throw new Error("query must be a non-empty string");this.typedParams={query:i.trim(),numResults:typeof e.numResults=="number"?e.numResults:vS,type:e.type||"auto",livecrawl:e.livecrawl||"fallback",contextMaxCharacters:typeof e.contextMaxCharacters=="number"?e.contextMaxCharacters:1e4}}getDescription(){return`Searching: ${this.typedParams.query}`}toolLocations(){return[]}async execute(e,n){let{query:o,numResults:r,type:i,livecrawl:s,contextMaxCharacters:a}=this.typedParams,l={tool:"web_search",query:o,numResults:r??vS,status:{state:"pending"}},c={jsonrpc:"2.0",id:1,method:"tools/call",params:{name:"web_search_exa",arguments:{query:o,numResults:r??vS,type:i??"auto",livecrawl:s??"fallback",contextMaxCharacters:a??1e4}}},u=new AbortController,d=setTimeout(()=>u.abort(),sG);if(e?.aborted)return clearTimeout(d),this.errorResult("Request cancelled.",l);e&&typeof e.addEventListener=="function"&&e.addEventListener("abort",()=>u.abort(),{once:!0});try{let p=typeof process<"u"&&process.env&&process.env.PANDA_WEB_SEARCH_API_KEY,f=p?`${XO}?exaApiKey=${encodeURIComponent(p)}`:XO,m=await fetch(f,{method:"POST",headers:{Accept:"application/json, text/event-stream","Content-Type":"application/json"},body:JSON.stringify(c),signal:u.signal});if(clearTimeout(d),!m.ok){let v=await m.text();return this.errorResult(`Search failed (${m.status}): ${v||m.statusText}`,l)}let g=await m.text(),h=this.parseSearchResponse(g);if(h===null)return this.errorResult("No search results or invalid response.",l);let y=h;return l.status={state:"success"},{llmContent:y,displayData:l}}catch(p){clearTimeout(d);let f=p instanceof Error?p.message:String(p),m=p instanceof Error&&p.name==="AbortError";return f.includes("abort")||m?this.errorResult("Search timed out or was cancelled.",l):this.errorResult(f,l)}}parseSearchResponse(e){let n=e.split(`
1902
1902
  `);for(let o of n)if(o.startsWith("data: "))try{let r=JSON.parse(o.slice(6));if(r.result?.content?.length){let i=r.result.content.map(s=>typeof s.text=="string"?s.text:"").filter(Boolean);if(i.length)return i.join(`
1903
1903
 
1904
1904
  `)}}catch{}try{let o=JSON.parse(e);if(o.result?.content?.length){let r=o.result.content.map(i=>i.text??"").filter(Boolean);if(r.length)return r.join(`
1905
1905
 
1906
- `)}}catch{}return null}errorResult(e,n){return n&&(n.status={state:"error",error:e}),{llmContent:`Web search failed: ${e}`,error:{message:e,type:"web_search_failed"},displayData:n}}};import{readFile as gG}from"node:fs/promises";import{readdir as sG,readFile as aG}from"node:fs/promises";import{join as tL,resolve as Ci}from"node:path";var iG=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;function eL(t,e){let n=e.trim();return n.startsWith('"')&&n.endsWith('"')||n.startsWith("'")&&n.endsWith("'")?n.slice(1,-1).replace(/\\n/g,`
1907
- `):n}function wl(t,e){let n=t.match(iG);if(!n)return null;let o=n[1],r=n[2].trim(),i,s;for(let a of o.split(/\r?\n/)){let l=a.indexOf(":");if(l===-1)continue;let c=a.slice(0,l).trim(),u=a.slice(l+1).trim();c==="name"?i=eL(c,u):c==="description"&&(s=eL(c,u))}return!i||typeof i!="string"||!s||typeof s!="string"||i!==e?null:{name:i,description:s,body:r}}var lG="SKILL.md";async function nL(t,e){let n=[],o=Ci(t);try{let r=await sG(o,{withFileTypes:!0});for(let i of r){if(!i.isDirectory())continue;let s=Ci(o,i.name,lG),a;try{a=await aG(s,"utf-8")}catch{continue}let l=wl(a,i.name);l&&n.push({name:l.name,description:l.description,path:s,source:e})}}catch{}return n}async function Ei(t,e){let n=new Map,o=e?.trim()??"",r=o?Ci(o):Ci(process.env.HOME||process.env.USERPROFILE||process.cwd()),i=t?.trim()?Ci(t.trim()):"";if(i)for(let l of[tL(".claude","skills"),tL(".panda","skills")]){let c=Ci(i,l),u=await nL(c,"project");for(let d of u)n.set(d.name,d)}let s=Ci(Zr(o),"skills"),a=Ci(r,".claude","skills");for(let l of[s,a]){let c=await nL(l,"global");for(let u of c)n.set(u.name,u)}return Array.from(n.values()).sort((l,c)=>l.name.localeCompare(c.name))}Nt();or();function Pi(t){return t===47||t===92}function $u(t){return t.replace(/[\\/]/g,Ge.sep)}function rL(t){return t.indexOf("/")===-1&&(t=$u(t)),/^[a-zA-Z]:(\/|$)/.test(t)&&(t="/"+t),t}function bS(t,e=Ge.sep){if(!t)return"";let n=t.length,o=t.charCodeAt(0);if(Pi(o)){if(Pi(t.charCodeAt(1))&&!Pi(t.charCodeAt(2))){let i=3,s=i;for(;i<n&&!Pi(t.charCodeAt(i));i++);if(s!==i&&!Pi(t.charCodeAt(i+1))){for(i+=1;i<n;i++)if(Pi(t.charCodeAt(i)))return t.slice(0,i+1).replace(/[\\/]/g,e)}}return e}else if(uG(o)&&t.charCodeAt(1)===58)return Pi(t.charCodeAt(2))?t.slice(0,2)+e:t.slice(0,2);let r=t.indexOf("://");if(r!==-1){for(r+=3;r<n;r++)if(Pi(t.charCodeAt(r)))return t.slice(0,r+1)}return""}function xS(t,e,n,o=vr){if(t===e)return!0;if(!t||!e||e.length>t.length)return!1;if(n){if(!Mb(t,e))return!1;if(e.length===t.length)return!0;let i=e.length;return e.charAt(e.length-1)===o&&i--,t.charAt(i)===o}return e.charAt(e.length-1)!==o&&(e+=o),t.indexOf(e)===0}function uG(t){return t>=65&&t<=90||t>=97&&t<=122}or();function TS(t){let e=$u(t).replace(/\/+/g,"/");for(;e.length>1&&e.endsWith("/");)e=e.slice(0,-1);return Lt?e.toLowerCase():e}function oL(t){let e=TS(t),n=e.match(/\/([^/]+)\/SKILL\.md$/i);return n?`${n[1]}/SKILL.md`.toLowerCase():e.toLowerCase()}function pG(t,e){let n=TS(t),o=TS(e);return Lt?Aa(n,o):n===o}function _l(t,e){if(e.length===0)return!1;if(e.some(o=>pG(t,o)))return!0;let n=oL(t);return!n||n==="skill.md"?!1:e.some(o=>oL(o)===n)}or();function fG(t){if(!t)return".";let e=t.replace(/\\/g,"/");for(;e.length>1&&e.endsWith("/");)e=e.slice(0,-1);let n=e.lastIndexOf("/");return n===-1?".":n===0?"/":e.slice(0,n)}function mG(t){return Lt?t.replace(/\\/g,"/"):t}function sh(t,e,n){let o=fG(e),r=mG(o),i=n?.sessionId??"",s=`Base directory for this skill: ${r}
1906
+ `)}}catch{}return null}errorResult(e,n){return n&&(n.status={state:"error",error:e}),{llmContent:`Web search failed: ${e}`,error:{message:e,type:"web_search_failed"},displayData:n}}};import{readFile as yG}from"node:fs/promises";import{readdir as lG,readFile as cG}from"node:fs/promises";import{join as tL,resolve as Ci}from"node:path";var aG=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;function eL(t,e){let n=e.trim();return n.startsWith('"')&&n.endsWith('"')||n.startsWith("'")&&n.endsWith("'")?n.slice(1,-1).replace(/\\n/g,`
1907
+ `):n}function wl(t,e){let n=t.match(aG);if(!n)return null;let o=n[1],r=n[2].trim(),i,s;for(let a of o.split(/\r?\n/)){let l=a.indexOf(":");if(l===-1)continue;let c=a.slice(0,l).trim(),u=a.slice(l+1).trim();c==="name"?i=eL(c,u):c==="description"&&(s=eL(c,u))}return!i||typeof i!="string"||!s||typeof s!="string"||i!==e?null:{name:i,description:s,body:r}}var uG="SKILL.md";async function nL(t,e){let n=[],o=Ci(t);try{let r=await lG(o,{withFileTypes:!0});for(let i of r){if(!i.isDirectory())continue;let s=Ci(o,i.name,uG),a;try{a=await cG(s,"utf-8")}catch{continue}let l=wl(a,i.name);l&&n.push({name:l.name,description:l.description,path:s,source:e})}}catch{}return n}async function Ei(t,e){let n=new Map,o=e?.trim()??"",r=o?Ci(o):Ci(process.env.HOME||process.env.USERPROFILE||process.cwd()),i=t?.trim()?Ci(t.trim()):"";if(i)for(let l of[tL(".claude","skills"),tL(".panda","skills")]){let c=Ci(i,l),u=await nL(c,"project");for(let d of u)n.set(d.name,d)}let s=Ci(Zr(o),"skills"),a=Ci(r,".claude","skills");for(let l of[s,a]){let c=await nL(l,"global");for(let u of c)n.set(u.name,u)}return Array.from(n.values()).sort((l,c)=>l.name.localeCompare(c.name))}Nt();or();function Pi(t){return t===47||t===92}function $u(t){return t.replace(/[\\/]/g,Ge.sep)}function rL(t){return t.indexOf("/")===-1&&(t=$u(t)),/^[a-zA-Z]:(\/|$)/.test(t)&&(t="/"+t),t}function bS(t,e=Ge.sep){if(!t)return"";let n=t.length,o=t.charCodeAt(0);if(Pi(o)){if(Pi(t.charCodeAt(1))&&!Pi(t.charCodeAt(2))){let i=3,s=i;for(;i<n&&!Pi(t.charCodeAt(i));i++);if(s!==i&&!Pi(t.charCodeAt(i+1))){for(i+=1;i<n;i++)if(Pi(t.charCodeAt(i)))return t.slice(0,i+1).replace(/[\\/]/g,e)}}return e}else if(pG(o)&&t.charCodeAt(1)===58)return Pi(t.charCodeAt(2))?t.slice(0,2)+e:t.slice(0,2);let r=t.indexOf("://");if(r!==-1){for(r+=3;r<n;r++)if(Pi(t.charCodeAt(r)))return t.slice(0,r+1)}return""}function xS(t,e,n,o=vr){if(t===e)return!0;if(!t||!e||e.length>t.length)return!1;if(n){if(!Mb(t,e))return!1;if(e.length===t.length)return!0;let i=e.length;return e.charAt(e.length-1)===o&&i--,t.charAt(i)===o}return e.charAt(e.length-1)!==o&&(e+=o),t.indexOf(e)===0}function pG(t){return t>=65&&t<=90||t>=97&&t<=122}or();function TS(t){let e=$u(t).replace(/\/+/g,"/");for(;e.length>1&&e.endsWith("/");)e=e.slice(0,-1);return Lt?e.toLowerCase():e}function oL(t){let e=TS(t),n=e.match(/\/([^/]+)\/SKILL\.md$/i);return n?`${n[1]}/SKILL.md`.toLowerCase():e.toLowerCase()}function mG(t,e){let n=TS(t),o=TS(e);return Lt?Aa(n,o):n===o}function _l(t,e){if(e.length===0)return!1;if(e.some(o=>mG(t,o)))return!0;let n=oL(t);return!n||n==="skill.md"?!1:e.some(o=>oL(o)===n)}or();function gG(t){if(!t)return".";let e=t.replace(/\\/g,"/");for(;e.length>1&&e.endsWith("/");)e=e.slice(0,-1);let n=e.lastIndexOf("/");return n===-1?".":n===0?"/":e.slice(0,n)}function hG(t){return Lt?t.replace(/\\/g,"/"):t}function sh(t,e,n){let o=gG(e),r=hG(o),i=n?.sessionId??"",s=`Base directory for this skill: ${r}
1908
1908
 
1909
- ${t}`;return s=s.replaceAll("${PANDA_SKILL_DIR}",r),s=s.replaceAll("${CLAUDE_SKILL_DIR}",r),s=s.replaceAll("${PANDA_CONVERSATION_ID}",i),s=s.replaceAll("${CLAUDE_SESSION_ID}",i),s}var ah=class extends De{workspaceRoot;userHome;constructor(e,n,o,r,i){super(e,o,r,i),this.workspaceRoot=n||(typeof process<"u"&&process.cwd?process.cwd():""),this.userHome=process.env.HOME||process.env.USERPROFILE||""}getDescription(){return`Load skill: ${this.params.skill_name??"(none)"}`}async execute(e){let n=this.params.skill_name,o=this.params._disabledPaths??[],i=(await Ei(this.workspaceRoot,this.userHome)).filter(m=>!_l(m.path,o)),s=i.find(m=>m.name===n);if(!s){let m=i.length>0?i.map(g=>g.name).join(", "):"(none)";return{llmContent:`Skill "${n}" not found or disabled. Available skills: ${m}. Use Panda settings (Rules/Skills tab) to enable, then use the exact name.`,displayData:{tool:"use_skill",skillName:n,status:{state:"error",error:"SKILL_NOT_FOUND"}},error:{message:`Skill "${n}" not found or not enabled`,type:"SKILL_NOT_FOUND"}}}let a;try{a=await gG(s.path,"utf-8")}catch(m){let g=m instanceof Error?m.message:String(m);return{llmContent:`Failed to read skill file: ${g}`,displayData:{tool:"use_skill",skillName:n,status:{state:"error",error:g}},error:{message:g,type:"READ_FAILED"}}}let l=s.name,u=wl(a,l)?.body??a,d=typeof this.params._conversationId=="string"&&this.params._conversationId.trim()?this.params._conversationId.trim():void 0,p=sh(u,s.path,{sessionId:d});return{llmContent:`Skill loaded: "${s.name}". Follow the instructions below.
1909
+ ${t}`;return s=s.replaceAll("${PANDA_SKILL_DIR}",r),s=s.replaceAll("${CLAUDE_SKILL_DIR}",r),s=s.replaceAll("${PANDA_CONVERSATION_ID}",i),s=s.replaceAll("${CLAUDE_SESSION_ID}",i),s}var ah=class extends De{workspaceRoot;userHome;constructor(e,n,o,r,i){super(e,o,r,i),this.workspaceRoot=n||(typeof process<"u"&&process.cwd?process.cwd():""),this.userHome=process.env.HOME||process.env.USERPROFILE||""}getDescription(){return`Load skill: ${this.params.skill_name??"(none)"}`}async execute(e){let n=this.params.skill_name,o=this.params._disabledPaths??[],i=(await Ei(this.workspaceRoot,this.userHome)).filter(m=>!_l(m.path,o)),s=i.find(m=>m.name===n);if(!s){let m=i.length>0?i.map(g=>g.name).join(", "):"(none)";return{llmContent:`Skill "${n}" not found or disabled. Available skills: ${m}. Use Panda settings (Rules/Skills tab) to enable, then use the exact name.`,displayData:{tool:"use_skill",skillName:n,status:{state:"error",error:"SKILL_NOT_FOUND"}},error:{message:`Skill "${n}" not found or not enabled`,type:"SKILL_NOT_FOUND"}}}let a;try{a=await yG(s.path,"utf-8")}catch(m){let g=m instanceof Error?m.message:String(m);return{llmContent:`Failed to read skill file: ${g}`,displayData:{tool:"use_skill",skillName:n,status:{state:"error",error:g}},error:{message:g,type:"READ_FAILED"}}}let l=s.name,u=wl(a,l)?.body??a,d=typeof this.params._conversationId=="string"&&this.params._conversationId.trim()?this.params._conversationId.trim():void 0,p=sh(u,s.path,{sessionId:d});return{llmContent:`Skill loaded: "${s.name}". Follow the instructions below.
1910
1910
 
1911
- `+p,displayData:{tool:"use_skill",skillName:s.name,status:{state:"success"}}}}};import{dirname as hG}from"node:path";import{mkdir as yG,writeFile as vG}from"node:fs/promises";function iL(t){if(typeof t.plan!="string"||t.plan.trim().length===0)throw new Error("plan must be a non-empty string");return{name:typeof t.name=="string"?t.name:void 0,overview:typeof t.overview=="string"?t.overview:void 0,plan:t.plan}}function sL(t,e,n){return{llmContent:`Plan file written successfully: ${t}`,displayData:{tool:"create_plan",planMarkdown:e,planFilePath:t,planTitle:n,status:{state:"success"}}}}function aL(t,e){let n=t instanceof Error?t.message:String(t);return{llmContent:n,error:{message:n,type:"CREATE_PLAN_ERROR"},displayData:{tool:"create_plan",planMarkdown:"",planFilePath:e,status:{state:"error",error:n}}}}var lh=class extends De{constructor(n,o,r,i=I.CREATE_PLAN,s){super(n,r,i,s);this.deps=o}deps;getDescription(){return`Create plan file: ${this.deps.planFilePath}`}toolLocations(){return[{path:this.deps.planFilePath}]}async execute(n,o){try{let r=iL(this.params),i=this.deps.planFilePath;return await yG(hG(i),{recursive:!0}),await vG(i,r.plan,"utf8"),sL(i,r.plan,r.name)}catch(r){return aL(r,this.deps.planFilePath)}}};var ch=class extends De{workspaceRoot;userHome;constructor(e,n,o,r){super(e,void 0,o,r),this.workspaceRoot=n||(typeof process<"u"&&process.cwd?process.cwd():""),this.userHome=process.env.HOME||process.env.USERPROFILE||""}getDescription(){return"List enabled skills"}async execute(e){let n=this.params._disabledPaths??[],r=(await Ei(this.workspaceRoot,this.userHome)).filter(a=>!_l(a.path,n));if(r.length===0)return{llmContent:"No enabled skills found.",displayData:{tool:"list_skills",items:[],status:{state:"success"}}};let i=r.map(a=>`- ${a.name}: ${a.description||""}`.trim()),s=r.map(a=>({name:a.name,description:a.description??""}));return{llmContent:`Enabled skills:
1911
+ `+p,displayData:{tool:"use_skill",skillName:s.name,status:{state:"success"}}}}};import{dirname as vG}from"node:path";import{mkdir as bG,writeFile as xG}from"node:fs/promises";function iL(t){if(typeof t.plan!="string"||t.plan.trim().length===0)throw new Error("plan must be a non-empty string");return{name:typeof t.name=="string"?t.name:void 0,overview:typeof t.overview=="string"?t.overview:void 0,plan:t.plan}}function sL(t,e,n){return{llmContent:`Plan file written successfully: ${t}`,displayData:{tool:"create_plan",planMarkdown:e,planFilePath:t,planTitle:n,status:{state:"success"}}}}function aL(t,e){let n=t instanceof Error?t.message:String(t);return{llmContent:n,error:{message:n,type:"CREATE_PLAN_ERROR"},displayData:{tool:"create_plan",planMarkdown:"",planFilePath:e,status:{state:"error",error:n}}}}var lh=class extends De{constructor(n,o,r,i=I.CREATE_PLAN,s){super(n,r,i,s);this.deps=o}deps;getDescription(){return`Create plan file: ${this.deps.planFilePath}`}toolLocations(){return[{path:this.deps.planFilePath}]}async execute(n,o){try{let r=iL(this.params),i=this.deps.planFilePath;return await bG(vG(i),{recursive:!0}),await xG(i,r.plan,"utf8"),sL(i,r.plan,r.name)}catch(r){return aL(r,this.deps.planFilePath)}}};var ch=class extends De{workspaceRoot;userHome;constructor(e,n,o,r){super(e,void 0,o,r),this.workspaceRoot=n||(typeof process<"u"&&process.cwd?process.cwd():""),this.userHome=process.env.HOME||process.env.USERPROFILE||""}getDescription(){return"List enabled skills"}async execute(e){let n=this.params._disabledPaths??[],r=(await Ei(this.workspaceRoot,this.userHome)).filter(a=>!_l(a.path,n));if(r.length===0)return{llmContent:"No enabled skills found.",displayData:{tool:"list_skills",items:[],status:{state:"success"}}};let i=r.map(a=>`- ${a.name}: ${a.description||""}`.trim()),s=r.map(a=>({name:a.name,description:a.description??""}));return{llmContent:`Enabled skills:
1912
1912
  ${i.join(`
1913
1913
  `)}`,displayData:{tool:"list_skills",items:s,status:{state:"success"}}}}};var Sl=class{runtime="ext-host";async awaitTask(e,n){let o=Rs.createStandalone(),r={state:"running",exitCode:null},i=!1;if(n.pattern){let a=Date.now()+n.blockUntilMs,l=new RegExp(n.pattern,"m");for(;;){let c=Math.max(0,a-Date.now()),u=Math.min(c,250);r=(await o.awaitBackgroundTask(e,u)).task;let p=o.readBackgroundOutputTail(e,n.tailBytes??4096);if(l.test(p)){i=!1;break}if(r.state!=="running"){i=!1;break}if(c<=0){i=!0;break}}}else{let a=await o.awaitBackgroundTask(e,n.blockUntilMs);r=a.task,i=a.timedOut}let s=typeof n.offset=="number"?o.readBackgroundOutputSlice(e,n.offset,n.limit??4096):(()=>{let a=o.readBackgroundOutputTail(e,n.tailBytes??4096),l=a.length;return{content:a,startOffset:Math.max(0,l-(n.tailBytes??4096)),endOffset:l,totalBytes:l}})();return{taskId:e,state:r.state,exitCode:r.exitCode??null,timedOut:i,output:s.content,outputStartOffset:s.startOffset,outputEndOffset:s.endOffset,outputTotalBytes:s.totalBytes}}async stopTask(e){let o=Rs.createStandalone().stopBackgroundTaskDetailed(e);return{taskId:e,found:o.found,state:o.state,alreadyFinished:o.alreadyFinished,signalSent:o.signalSent}}};var uh=class extends De{typedParams;constructor(e,n,o){if(super(e,void 0,n,o),typeof e.task_id!="string"||!e.task_id.trim())throw new Error("task_id must be a non-empty string");this.typedParams={task_id:e.task_id,block_until_ms:typeof e.block_until_ms=="number"?e.block_until_ms:void 0,offset:typeof e.offset=="number"?e.offset:void 0,limit:typeof e.limit=="number"?e.limit:void 0,tail_bytes:typeof e.tail_bytes=="number"?e.tail_bytes:void 0,pattern:typeof e.pattern=="string"?e.pattern:void 0}}getDescription(){return`Await shell task ${this.typedParams.task_id}`}async execute(){let e=this.typedParams.task_id;if(e.startsWith("wb-bg-"))return{llmContent:`Task id does not belong to ext-host runtime: ${e}`,displayData:{tool:"await_shell",taskId:e,status:{state:"error",error:"task runtime mismatch"}},error:{type:"TASK_RUNTIME_MISMATCH",message:`Unsupported task id format for ext-host: ${e}`}};let n=this.typedParams.block_until_ms??3e4,o=this.typedParams.offset,r=this.typedParams.limit??4096,i=this.typedParams.tail_bytes??4096,s=new Sl;try{let a=await s.awaitTask(e,{blockUntilMs:n,offset:o,limit:r,tailBytes:i,pattern:this.typedParams.pattern}),l=typeof o=="number"?`--- OUTPUT [${a.outputStartOffset??0}, ${a.outputEndOffset??0}) / ${a.outputTotalBytes??0} ---`:"--- OUTPUT TAIL ---",c={tool:"await_shell",taskId:e,status:{state:"success"},taskState:a.state,exitCode:a.exitCode??null,blockTimedOut:a.timedOut,outputOffset:a.outputStartOffset,outputEndOffset:a.outputEndOffset,outputTotalBytes:a.outputTotalBytes,outputPreview:a.output?a.output.length>200?`${a.output.slice(0,200)}\u2026`:a.output:void 0};return{llmContent:[`Task ID: ${e}`,`State: ${a.state}`,`Exit Code: ${a.exitCode??"N/A"}`,a.timedOut?`Timed out after ${n}ms while waiting.`:"Task reached a stable state within wait window.",l,a.output||"(no output)"].join(`
1914
1914
  `),displayData:c}}catch(a){let l=a instanceof Error?a.message:String(a),c=l.includes("not found")||l.includes("TASK_NOT_FOUND:"),u={tool:"await_shell",taskId:e,status:{state:"error",error:l}};return{llmContent:`Failed to await shell task: ${l}`,displayData:u,error:{type:l.includes("TASK_RUNTIME_MISMATCH:")?"TASK_RUNTIME_MISMATCH":c?"TASK_NOT_FOUND":"COMMAND_EXECUTION_ERROR",message:l}}}}};var dh=class extends De{typedParams;constructor(e,n,o){if(super(e,void 0,n,o),typeof e.task_id!="string"||!e.task_id.trim())throw new Error("task_id must be a non-empty string");this.typedParams={task_id:e.task_id}}getDescription(){return`Stop shell task ${this.typedParams.task_id}`}async execute(){let e=this.typedParams.task_id;if(e.startsWith("wb-bg-"))return{llmContent:`Task id does not belong to ext-host runtime: ${e}`,displayData:{tool:"stop_shell",taskId:e,status:{state:"error",error:"task runtime mismatch"}},error:{type:"TASK_RUNTIME_MISMATCH",message:`Unsupported task id format for ext-host: ${e}`}};let o=await new Sl().stopTask(e);if(!o.found){let i={tool:"stop_shell",taskId:e,status:{state:"error",error:`Task not found: ${e}`}};return{llmContent:`Background task not found: ${e}`,displayData:i,error:{type:"TASK_NOT_FOUND",message:`Task not found: ${e}`}}}let r={tool:"stop_shell",taskId:e,status:{state:"success"},taskState:o.state,alreadyFinished:o.alreadyFinished,signalSent:o.signalSent};return o.alreadyFinished?{llmContent:[`Task already finished, no stop signal sent: ${e} (state: ${o.state??"unknown"})`,"signalSent: false","alreadyFinished: true"].join(`
1915
1915
  `),displayData:r}:{llmContent:[o.signalSent?`Stop signal sent to background task: ${e}`:`Failed to send stop signal to task: ${e}`,`signalSent: ${o.signalSent?"true":"false"}`,"alreadyFinished: false"].join(`
1916
- `),displayData:r,...o.signalSent?{}:{error:{type:"COMMAND_EXECUTION_ERROR",message:`Task stop failed: ${e}`}}}}};var bG=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:6}];function xG(t,e){let{min:n,max:o}=e,r=new Set;for(let i of t.split(",")){let s=i.match(/^\*(?:\/(\d+))?$/);if(s){let c=s[1]?parseInt(s[1],10):1;if(c<1)return null;for(let u=n;u<=o;u+=c)r.add(u);continue}let a=i.match(/^(\d+)-(\d+)(?:\/(\d+))?$/);if(a){let c=parseInt(a[1],10),u=parseInt(a[2],10),d=a[3]?parseInt(a[3],10):1,p=n===0&&o===6,f=p?7:o;if(c>u||d<1||c<n||u>f)return null;for(let m=c;m<=u;m+=d)r.add(p&&m===7?0:m);continue}if(i.match(/^\d+$/)){let c=parseInt(i,10);if(n===0&&o===6&&c===7&&(c=0),c<n||c>o)return null;r.add(c);continue}return null}return r.size===0?null:Array.from(r).sort((i,s)=>i-s)}function Fu(t){let e=t.trim().split(/\s+/);if(e.length!==5)return null;let n=[];for(let o=0;o<5;o++){let r=xG(e[o],bG[o]);if(!r)return null;n.push(r)}return{minute:n[0],hour:n[1],dayOfMonth:n[2],month:n[3],dayOfWeek:n[4]}}function cL(t,e){let n=new Set(t.minute),o=new Set(t.hour),r=new Set(t.dayOfMonth),i=new Set(t.month),s=new Set(t.dayOfWeek),a=t.dayOfMonth.length===31,l=t.dayOfWeek.length===7,c=new Date(e.getTime());c.setSeconds(0,0),c.setMinutes(c.getMinutes()+1);let u=366*24*60;for(let d=0;d<u;d++){let p=c.getMonth()+1;if(!i.has(p)){c.setMonth(c.getMonth()+1,1),c.setHours(0,0,0,0);continue}let f=c.getDate(),m=c.getDay();if(!(a&&l?!0:a?s.has(m):l?r.has(f):r.has(f)||s.has(m))){c.setDate(c.getDate()+1),c.setHours(0,0,0,0);continue}if(!o.has(c.getHours())){c.setHours(c.getHours()+1,0,0,0);continue}if(!n.has(c.getMinutes())){c.setMinutes(c.getMinutes()+1);continue}return c}return null}var lL=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function TG(t,e){return new Date(2e3,0,1,e,t).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"})}function wG(t,e){let n=new Date;return n.setUTCHours(e,t,0,0),n.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",timeZoneName:"short"})}function Uu(t,e){let n=e?.utc??!1,o=t.trim().split(/\s+/);if(o.length!==5)return t;let[r,i,s,a,l]=o,c=r.match(/^\*\/(\d+)$/);if(c&&i==="*"&&s==="*"&&a==="*"&&l==="*"){let m=parseInt(c[1],10);return m===1?"Every minute":`Every ${m} minutes`}if(r.match(/^\d+$/)&&i==="*"&&s==="*"&&a==="*"&&l==="*"){let m=parseInt(r,10);return m===0?"Every hour":`Every hour at :${m.toString().padStart(2,"0")}`}let u=i.match(/^\*\/(\d+)$/);if(r.match(/^\d+$/)&&u&&s==="*"&&a==="*"&&l==="*"){let m=parseInt(u[1],10),g=parseInt(r,10),h=g===0?"":` at :${g.toString().padStart(2,"0")}`;return m===1?`Every hour${h}`:`Every ${m} hours${h}`}if(!r.match(/^\d+$/)||!i.match(/^\d+$/))return t;let d=parseInt(r,10),p=parseInt(i,10),f=n?wG:TG;if(s==="*"&&a==="*"&&l==="*")return`Every day at ${f(d,p)}`;if(s==="*"&&a==="*"&&l.match(/^\d$/)){let m=parseInt(l,10)%7,g;if(n){let h=new Date,y=(m-h.getUTCDay()+7)%7;h.setUTCDate(h.getUTCDate()+y),h.setUTCHours(p,d,0,0),g=lL[h.getDay()]}else g=lL[m];if(g)return`Every ${g} at ${f(d,p)}`}return s==="*"&&a==="*"&&l==="1-5"?`Weekdays at ${f(d,p)}`:t}import{randomUUID as PG}from"node:crypto";import{readFileSync as RG}from"node:fs";import{mkdir as AG,readFile as MG,writeFile as DG}from"node:fs/promises";import{join as OG}from"node:path";import{join as _G}from"node:path";var uL="scheduled_tasks.json",dL="scheduled_tasks.lock";function ph(t,e){return _G(t,"projects",e)}import{randomUUID as SG}from"node:crypto";var kG=!1;function fL(t){kG=t}var IG=SG();function ju(){return IG}var Bu=new Map;function fh(t){return Bu.get(t)??[]}function mL(t,e){let n=Bu.get(t)??[];n.push(e),Bu.set(t,n)}function wS(t,e){if(e.length===0)return 0;let n=new Set(e),o=Bu.get(t)??[],r=o.filter(s=>!n.has(s.id)),i=o.length-r.length;return i===0?0:(Bu.set(t,r),i)}function gL(t,e){return wS(t,e)===e.length}function mh(){return Ca().cron?.enabled!==!1}function hL(){return Ca().cron?.durableEnabled!==!1}function it(t,e){typeof process<"u"&&process.env.PANDA_CRON_DEBUG==="1"&&console.debug(`[panda-cron] ${t}`)}var pL;function CG(){let t=pL;pL=void 0,t&&t()}typeof process<"u"&&process.once("beforeExit",()=>{CG()});function gh(t){if(!t||typeof t!="object")return;let e=t.code;return typeof e=="string"?e:void 0}function yL(t){let e=gh(t);return e==="ENOENT"||e==="EACCES"||e==="EPERM"}function vL(t){if(!Number.isFinite(t)||t<=0)return!1;try{return process.kill(t,0),!0}catch{return!1}}function zu(t,e){try{return JSON.parse(t)}catch{return null}}function kl(t,e){return JSON.stringify(t,null,e)}var bL=null;function As(t){bL=t}function _S(){return bL}function hh(t,e,n){let o=(n??"").trim();if(!o)throw new Error("[panda cron] createCronTaskContext: workspacePath is required (non-empty)");return{pandaHome:t,workspaceId:e,workspacePath:o,storageDir:ph(t,e)}}var EG=null;function xL(){return EG}function Wu(t){return OG(t,uL)}async function Cl(t){let e;try{e=await MG(Wu(t),{encoding:"utf-8"})}catch(i){return yL(i)?[]:(it(`[ScheduledTasks] readCronTasks: ${String(i)}`),[])}let n=zu(e,!1);if(!n||typeof n!="object")return[];let o=n;if(!Array.isArray(o.tasks))return[];let r=[];for(let i of o.tasks){if(!i||typeof i.id!="string"||typeof i.cron!="string"||typeof i.prompt!="string"||typeof i.createdAt!="number"){it(`[ScheduledTasks] skipping malformed task: ${kl(i)}`);continue}if(!Fu(i.cron)){it(`[ScheduledTasks] skipping task ${i.id} with invalid cron '${i.cron}'`);continue}r.push({id:i.id,cron:i.cron,prompt:i.prompt,createdAt:i.createdAt,...typeof i.title=="string"&&i.title.trim()?{title:i.title.trim()}:{},...typeof i.lastFiredAt=="number"?{lastFiredAt:i.lastFiredAt}:{},...i.recurring?{recurring:!0}:{},...i.permanent?{permanent:!0}:{},...i.disabled===!0?{disabled:!0}:{}})}return r}function TL(t){let e;try{e=RG(Wu(t),"utf-8")}catch{return!1}let n=zu(e,!1);if(!n||typeof n!="object")return!1;let o=n.tasks;return Array.isArray(o)&&o.length>0}async function SS(t,e){await AG(e,{recursive:!0});let n={tasks:t.map(({durable:o,...r})=>r)};await DG(Wu(e),kl(n,2)+`
1917
- `,"utf-8")}function wL(t,e){let n=xL();if(!n)return;let o=_S();if(o)try{n({workspaceId:o.workspaceId,workspacePath:o.workspacePath,pandaHome:o.pandaHome,storageDir:o.storageDir,kind:t,ruleCount:e})}catch(r){it(`[ScheduledTasks] cron-tasks write observer threw: ${String(r)}`)}}async function _L(t,e,n,o,r,i){let s=_S();if(!s)throw new Error("[panda cron] addCronTask requires CronTaskContext (setCronTaskContext)");let a=PG().slice(0,8),l={id:a,cron:t,prompt:e,createdAt:Date.now(),...n?{recurring:!0}:{},...typeof i=="string"&&i.trim()?{title:i.trim()}:{}};if(!o)return mL(s.workspaceId,r?{...l,agentId:r}:l),a;let c=await Cl(s.storageDir);return c.push(l),await SS(c,s.storageDir),wL("add",c.length),a}async function Ku(t,e,n){if(t.length===0||n!==void 0&&gL(n,t)||e===void 0)return;let o=new Set(t),r=await Cl(e),i=r.filter(s=>!o.has(s.id));i.length!==r.length&&(await SS(i,e),wL("remove",i.length))}async function SL(t,e,n){if(t.length===0)return;let o=new Set(t),r=await Cl(n),i=!1;for(let s of r)o.has(s.id)&&(s.lastFiredAt=e,i=!0);i&&await SS(r,n)}async function yh(t,e){let n=await Cl(t),o=fh(e).map(r=>({...r,durable:!1}));return[...n,...o]}function Il(t,e){let n=Fu(t);if(!n)return null;let o=cL(n,new Date(e));return o?o.getTime():null}var El={recurringFrac:.1,recurringCapMs:900*1e3,oneShotMaxMs:90*1e3,oneShotFloorMs:0,oneShotMinuteMod:30,recurringMaxAgeMs:10080*60*1e3};function kL(t){let e=parseInt(t.slice(0,8),16)/4294967296;return Number.isFinite(e)?e:0}function kS(t,e,n,o=El){let r=Il(t,e);if(r===null)return null;let i=Il(t,r);if(i===null)return r;let s=Math.min(kL(n)*o.recurringFrac*(i-r),o.recurringCapMs);return r+s}function IL(t,e,n,o=El){let r=Il(t,e);if(r===null)return null;if(new Date(r).getMinutes()%o.oneShotMinuteMod!==0)return r;let i=o.oneShotFloorMs+kL(n)*(o.oneShotMaxMs-o.oneShotFloorMs);return Math.max(r-i,e)}function CL(t,e){return t.filter(n=>{if(n.disabled)return!1;let o=Il(n.cron,n.createdAt);return o!==null&&o<e})}var EL=50,LG=Math.floor(El.recurringMaxAgeMs/(1440*60*1e3));function IS(t){let e=typeof t._pandaHome=="string"?t._pandaHome.trim():"",n=typeof t._workspaceId=="string"?t._workspaceId.trim():"",o=typeof t._workspacePath=="string"?t._workspacePath.trim():"";return!e||!n||!o?null:{pandaHome:e,workspaceId:n,workspacePath:o}}var vh=class extends De{constructor(e,n,o=I.CRON_CREATE,r){super(e,n,o,r)}getDescription(){return`Schedule cron: ${typeof this.params.cron=="string"?this.params.cron:""}`}async execute(e){let n=IS(this.params);if(!n)return{llmContent:"cron_create: missing internal _pandaHome/_workspaceId/_workspacePath (host wiring).",error:{message:"missing cron context",type:"INVALID_PARAMS"}};if(!mh())return{llmContent:"Kairos cron is disabled in configuration.",error:{message:"cron disabled",type:"DISABLED"}};let o=typeof this.params.cron=="string"?this.params.cron.trim():"",r=typeof this.params.prompt=="string"?this.params.prompt:"",i=this.params.recurring!==!1,s=this.params.durable===!0;if(!o||!r)return{llmContent:"cron and prompt are required.",error:{message:"invalid params",type:"INVALID_PARAMS"}};if(!Fu(o))return{llmContent:`Invalid cron expression '${o}'. Expected 5 fields: M H DoM Mon DoW.`,error:{message:"invalid cron",type:"VALIDATION"}};if(Il(o,Date.now())===null)return{llmContent:`Cron expression '${o}' does not match any calendar date in the next year.`,error:{message:"cron no match",type:"VALIDATION"}};let a=hh(n.pandaHome,n.workspaceId,n.workspacePath);As(a);try{if((await yh(a.storageDir,n.workspaceId)).length>=EL)return{llmContent:`Too many scheduled jobs (max ${EL}). Cancel one first.`,error:{message:"max jobs",type:"VALIDATION"}};let c=s&&hL(),u=await _L(o,r,i,c);fL(!0);let d=Uu(o),p=c?"Persisted to scheduled_tasks.json under your Panda home projects folder.":"Session-only (in memory for this process; not written to disk).",f=i?` Auto-expires after ${LG} days. Use cron_delete to cancel sooner.`:" One-shot: fires once then auto-deletes.";return{llmContent:`Scheduled job ${u} (${d}). ${p}${f}`}}catch(l){let c=l instanceof Error?l.message:String(l);return{llmContent:`cron_create failed: ${c}`,error:{message:c,type:"EXECUTION_FAILED"}}}finally{As(null)}}},bh=class extends De{constructor(e,n,o=I.CRON_DELETE,r){super(e,n,o,r)}getDescription(){return`Delete cron job ${typeof this.params.id=="string"?this.params.id:""}`}async execute(e){let n=IS(this.params);if(!n)return{llmContent:"cron_delete: missing internal _pandaHome/_workspaceId/_workspacePath.",error:{message:"missing cron context",type:"INVALID_PARAMS"}};if(!mh())return{llmContent:"Kairos cron is disabled in configuration.",error:{message:"cron disabled",type:"DISABLED"}};let o=typeof this.params.id=="string"?this.params.id.trim():"";if(!o)return{llmContent:"id is required.",error:{message:"invalid params",type:"INVALID_PARAMS"}};let r=hh(n.pandaHome,n.workspaceId,n.workspacePath);As(r);try{return(await yh(r.storageDir,n.workspaceId)).find(a=>a.id===o)?(await Ku([o],r.storageDir,n.workspaceId),{llmContent:`Cancelled scheduled job ${o}.`}):{llmContent:`No scheduled job with id '${o}'.`,error:{message:"not found",type:"VALIDATION"}}}catch(i){let s=i instanceof Error?i.message:String(i);return{llmContent:`cron_delete failed: ${s}`,error:{message:s,type:"EXECUTION_FAILED"}}}finally{As(null)}}},xh=class extends De{constructor(e,n,o=I.CRON_LIST,r){super(e,n,o,r)}getDescription(){return"List scheduled cron jobs"}async execute(e){let n=IS(this.params);if(!n)return{llmContent:"cron_list: missing internal _pandaHome/_workspaceId/_workspacePath.",error:{message:"missing cron context",type:"INVALID_PARAMS"}};if(!mh())return{llmContent:"Kairos cron is disabled in configuration.",error:{message:"cron disabled",type:"DISABLED"}};let o=hh(n.pandaHome,n.workspaceId,n.workspacePath);As(o);try{let i=(await yh(o.storageDir,n.workspaceId)).map(s=>{let a=Uu(s.cron),l=s.recurring?"recurring":"one-shot",c=s.durable===!1?" [session-only]":"",u=s.prompt.length>80?`${s.prompt.slice(0,80)}\u2026`:s.prompt;return`${s.id} \u2014 ${a} (${l})${c}: ${u}`});return{llmContent:i.length>0?i.join(`
1918
- `):"No scheduled jobs."}}catch(r){let i=r instanceof Error?r.message:String(r);return{llmContent:`cron_list failed: ${i}`,error:{message:i,type:"EXECUTION_FAILED"}}}finally{As(null)}}};async function PL(t){let e=t.readFileToolConfig,{toolName:n,params:o,workspaceRoot:r,messageBus:i,toolDisplayName:s}=t;switch(n){case I.DELETE_FILE:return new Vg(o,r??"",t.userHome,i,n,s);case I.READ_FILE:return new Hg(o,r,i,e,n,s);case I.WRITE_FILE:return new qg(o,r,i,n,s);case I.LIST_FILES:return new Gg(o,r,i,n,s);case I.EDIT_FILE:return new Yg(o,r,i,n,s);case I.RUN_TERMINAL_CMD:return new eh(o,r,i,n,s);case I.AWAIT_SHELL:return new uh(o,n,s);case I.STOP_SHELL:return new dh(o,n,s);case I.GREP:return new nh(o,r,i,n,s);case I.GLOB:return new rh(o,r,i,n,s);case I.WEB_FETCH:return new oh(o,i,n,s);case I.WEB_SEARCH:return new ih(o,i,n,s);case I.USE_SKILL:return new ah(o,r??"",i,n,s);case I.LIST_SKILLS:return new ch(o,r??"",n,s);case I.CREATE_PLAN:{let a=typeof t.planFilePath=="string"?t.planFilePath:void 0;if(!a)throw new Error("create_plan requires planFilePath in node environment.");return new lh(o,{planFilePath:a},i,n,s)}case I.BROWSER:return new vl(o,i,n,s);case I.CRON_CREATE:return new vh(o,i,n,s);case I.CRON_DELETE:return new bh(o,i,n,s);case I.CRON_LIST:return new xh(o,i,n,s);default:throw new Error(`Unsupported tool: ${n} in node environment.`)}}import{mkdir as NG,readFile as $G,unlink as AL,writeFile as CS}from"node:fs/promises";import{dirname as FG,join as UG}from"node:path";var BG=k.object({sessionId:k.string(),pid:k.number(),acquiredAt:k.number()}),Hu;function Vu(t){return UG(t,dL)}async function ML(t){let e;try{e=await $G(Vu(t),"utf8")}catch{return}let n=BG.safeParse(zu(e,!1));return n.success?n.data:void 0}async function RL(t,e){let n=Vu(e),o=kl(t);try{return await CS(n,o,{flag:"wx"}),!0}catch(r){let i=gh(r);if(i==="EEXIST")return!1;if(i==="ENOENT"){await NG(FG(n),{recursive:!0});try{return await CS(n,o,{flag:"wx"}),!0}catch(s){if(gh(s)==="EEXIST")return!1;throw s}}throw r}}async function ES(t){let e=t?.dir;if(!e)throw new Error("[panda cron] tryAcquireSchedulerLock requires opts.dir");let n=t?.lockIdentity??ju(),o={sessionId:n,pid:process.pid,acquiredAt:Date.now()};if(await RL(o,e))return Hu=void 0,it(`[ScheduledTasks] acquired scheduler lock (PID ${process.pid})`),!0;let r=await ML(e);return r?.sessionId===n?(r.pid!==process.pid&&await CS(Vu(e),kl(o)),!0):r&&vL(r.pid)?(Hu!==r.sessionId&&(Hu=r.sessionId,it(`[ScheduledTasks] scheduler lock held by session ${r.sessionId} (PID ${r.pid})`)),!1):(await AL(Vu(e)).catch(()=>{}),await RL(o,e)?(Hu=void 0,!0):!1)}async function Th(t){let e=t?.dir;if(!e)return;Hu=void 0;let n=t?.lockIdentity??ju(),o=await ML(e);if(!(!o||o.sessionId!==n))try{await AL(Vu(e)),it("[ScheduledTasks] released scheduler lock")}catch{}}function DL(t){if(!t)return;t.unref?.call(t)}var jG=1e3,zG=300,WG=5e3;function KG(t,e,n){return n===0?!1:!!(t.recurring&&!t.permanent&&e-t.createdAt>=n)}function OL(t){let{onFire:e,isLoading:n,assistantMode:o=!1,onFireTask:r,onMissed:i,dir:s,lockIdentity:a,getJitterConfig:l,isKilled:c,filter:u,workspaceId:d}=t,p={dir:s,lockIdentity:a},f=[],m=new Map,g=new Set,h=new Set,y=null,v=null,b=null,R=!1,M=!1;async function B(T){let W=await Cl(s);if(R||(f=W,!T))return;let A=Date.now(),U=CL(W,A).filter(j=>!j.recurring&&!g.has(j.id)&&(!u||u(j)));if(U.length>0){for(let j of U)g.add(j.id),m.set(j.id,1/0);U.length,U.map(j=>j.id).join(","),i?i(U):e(PS(U)),Ku(U.map(j=>j.id),s,d).catch(j=>it(`[ScheduledTasks] failed to remove missed tasks: ${j}`)),it(`[ScheduledTasks] surfaced ${U.length} missed one-shot task(s)`)}}function S(){if(c?.()||n()&&!o)return;let T=Date.now(),W=new Set,A=[],U=l?.()??El;function j(_,$){if(u&&!u(_)||_.disabled||(W.add(_.id),h.has(_.id)))return;let N=m.get(_.id);if(N===void 0&&(N=_.recurring?kS(_.cron,_.lastFiredAt??_.createdAt,_.id,U)??1/0:IL(_.cron,_.createdAt,_.id,U)??1/0,m.set(_.id,N),it(`[ScheduledTasks] scheduled ${_.id} for ${N===1/0?"never":new Date(N).toISOString()}`)),T<N)return;it(`[ScheduledTasks] firing ${_.id}${_.recurring?" (recurring)":""}`),_.recurring,_.id,r?r(_):e(_.prompt);let K=KG(_,T,U.recurringMaxAgeMs);if(K){let E=Math.floor((T-_.createdAt)/1e3/60/60);it(`[ScheduledTasks] recurring task ${_.id} aged out (${E}h since creation), deleting after final fire`),_.id}if(_.recurring&&!K){let E=kS(_.cron,T,_.id,U)??1/0;m.set(_.id,E),$||A.push(_.id)}else $?(wS(d,[_.id]),m.delete(_.id)):(h.add(_.id),Ku([_.id],s,d).catch(E=>it(`[ScheduledTasks] failed to remove task ${_.id}: ${E}`)).finally(()=>h.delete(_.id)),m.delete(_.id))}if(M){for(let _ of f)j(_,!1);if(A.length>0){for(let _ of A)h.add(_);SL(A,T,s).catch(_=>it(`[ScheduledTasks] failed to persist lastFiredAt: ${_}`)).finally(()=>{for(let _ of A)h.delete(_)})}}for(let _ of fh(d))j(_,!0);if(W.size===0){m.clear();return}for(let _ of m.keys())W.has(_)||m.delete(_)}async function x(){if(R)return;let{default:T}=await import("chokidar");if(R)return;if(M=await ES(p).catch(()=>!1),R){M&&(M=!1,Th(p));return}M||(v=setInterval(()=>{ES(p).then(A=>{if(R){A&&Th(p);return}A&&(M=!0,v&&(clearInterval(v),v=null))}).catch(A=>it(String(A),{level:"error"}))},WG),DL(v)),B(!0);let W=Wu(s);b=T.watch(W,{persistent:!1,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:zG},ignorePermissionErrors:!0}),b.on("add",()=>{B(!1)}),b.on("change",()=>{B(!1)}),b.on("unlink",()=>{R||(f=[],m.clear())}),y=setInterval(S,jG),DL(y)}return{start(){R=!1,it(`[ScheduledTasks] scheduler start() \u2014 dir=${s}, workspaceId=${d}, hasTasks=${TL(s)}`),x()},stop(){R=!0,y&&(clearInterval(y),y=null),v&&(clearInterval(v),v=null),b?.close(),b=null,M&&(M=!1,Th(p))},getNextFireTime(){let T=1/0;for(let W of m.values())W<T&&(T=W);return T===1/0?null:T}}}function PS(t){let e=t.length>1,n=`The following one-shot scheduled task${e?"s were":" was"} missed while Panda was not running. ${e?"They have":"It has"} already been removed from this workspace's scheduled_tasks.json (under your Panda home projects folder).
1916
+ `),displayData:r,...o.signalSent?{}:{error:{type:"COMMAND_EXECUTION_ERROR",message:`Task stop failed: ${e}`}}}}};var TG=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:6}];function wG(t,e){let{min:n,max:o}=e,r=new Set;for(let i of t.split(",")){let s=i.match(/^\*(?:\/(\d+))?$/);if(s){let c=s[1]?parseInt(s[1],10):1;if(c<1)return null;for(let u=n;u<=o;u+=c)r.add(u);continue}let a=i.match(/^(\d+)-(\d+)(?:\/(\d+))?$/);if(a){let c=parseInt(a[1],10),u=parseInt(a[2],10),d=a[3]?parseInt(a[3],10):1,p=n===0&&o===6,f=p?7:o;if(c>u||d<1||c<n||u>f)return null;for(let m=c;m<=u;m+=d)r.add(p&&m===7?0:m);continue}if(i.match(/^\d+$/)){let c=parseInt(i,10);if(n===0&&o===6&&c===7&&(c=0),c<n||c>o)return null;r.add(c);continue}return null}return r.size===0?null:Array.from(r).sort((i,s)=>i-s)}function Fu(t){let e=t.trim().split(/\s+/);if(e.length!==5)return null;let n=[];for(let o=0;o<5;o++){let r=wG(e[o],TG[o]);if(!r)return null;n.push(r)}return{minute:n[0],hour:n[1],dayOfMonth:n[2],month:n[3],dayOfWeek:n[4]}}function cL(t,e){let n=new Set(t.minute),o=new Set(t.hour),r=new Set(t.dayOfMonth),i=new Set(t.month),s=new Set(t.dayOfWeek),a=t.dayOfMonth.length===31,l=t.dayOfWeek.length===7,c=new Date(e.getTime());c.setSeconds(0,0),c.setMinutes(c.getMinutes()+1);let u=366*24*60;for(let d=0;d<u;d++){let p=c.getMonth()+1;if(!i.has(p)){c.setMonth(c.getMonth()+1,1),c.setHours(0,0,0,0);continue}let f=c.getDate(),m=c.getDay();if(!(a&&l?!0:a?s.has(m):l?r.has(f):r.has(f)||s.has(m))){c.setDate(c.getDate()+1),c.setHours(0,0,0,0);continue}if(!o.has(c.getHours())){c.setHours(c.getHours()+1,0,0,0);continue}if(!n.has(c.getMinutes())){c.setMinutes(c.getMinutes()+1);continue}return c}return null}var lL=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function _G(t,e){return new Date(2e3,0,1,e,t).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"})}function SG(t,e){let n=new Date;return n.setUTCHours(e,t,0,0),n.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",timeZoneName:"short"})}function Uu(t,e){let n=e?.utc??!1,o=t.trim().split(/\s+/);if(o.length!==5)return t;let[r,i,s,a,l]=o,c=r.match(/^\*\/(\d+)$/);if(c&&i==="*"&&s==="*"&&a==="*"&&l==="*"){let m=parseInt(c[1],10);return m===1?"Every minute":`Every ${m} minutes`}if(r.match(/^\d+$/)&&i==="*"&&s==="*"&&a==="*"&&l==="*"){let m=parseInt(r,10);return m===0?"Every hour":`Every hour at :${m.toString().padStart(2,"0")}`}let u=i.match(/^\*\/(\d+)$/);if(r.match(/^\d+$/)&&u&&s==="*"&&a==="*"&&l==="*"){let m=parseInt(u[1],10),g=parseInt(r,10),h=g===0?"":` at :${g.toString().padStart(2,"0")}`;return m===1?`Every hour${h}`:`Every ${m} hours${h}`}if(!r.match(/^\d+$/)||!i.match(/^\d+$/))return t;let d=parseInt(r,10),p=parseInt(i,10),f=n?SG:_G;if(s==="*"&&a==="*"&&l==="*")return`Every day at ${f(d,p)}`;if(s==="*"&&a==="*"&&l.match(/^\d$/)){let m=parseInt(l,10)%7,g;if(n){let h=new Date,y=(m-h.getUTCDay()+7)%7;h.setUTCDate(h.getUTCDate()+y),h.setUTCHours(p,d,0,0),g=lL[h.getDay()]}else g=lL[m];if(g)return`Every ${g} at ${f(d,p)}`}return s==="*"&&a==="*"&&l==="1-5"?`Weekdays at ${f(d,p)}`:t}import{randomUUID as AG}from"node:crypto";import{readFileSync as MG}from"node:fs";import{mkdir as DG,readFile as OG,writeFile as LG}from"node:fs/promises";import{join as NG}from"node:path";import{join as kG}from"node:path";var uL="scheduled_tasks.json",dL="scheduled_tasks.lock";function ph(t,e){return kG(t,"projects",e)}import{randomUUID as IG}from"node:crypto";var CG=!1;function fL(t){CG=t}var EG=IG();function ju(){return EG}var Bu=new Map;function fh(t){return Bu.get(t)??[]}function mL(t,e){let n=Bu.get(t)??[];n.push(e),Bu.set(t,n)}function wS(t,e){if(e.length===0)return 0;let n=new Set(e),o=Bu.get(t)??[],r=o.filter(s=>!n.has(s.id)),i=o.length-r.length;return i===0?0:(Bu.set(t,r),i)}function gL(t,e){return wS(t,e)===e.length}function mh(){return Ca().cron?.enabled!==!1}function hL(){return Ca().cron?.durableEnabled!==!1}function it(t,e){typeof process<"u"&&process.env.PANDA_CRON_DEBUG==="1"&&console.debug(`[panda-cron] ${t}`)}var pL;function PG(){let t=pL;pL=void 0,t&&t()}typeof process<"u"&&process.once("beforeExit",()=>{PG()});function gh(t){if(!t||typeof t!="object")return;let e=t.code;return typeof e=="string"?e:void 0}function yL(t){let e=gh(t);return e==="ENOENT"||e==="EACCES"||e==="EPERM"}function vL(t){if(!Number.isFinite(t)||t<=0)return!1;try{return process.kill(t,0),!0}catch{return!1}}function zu(t,e){try{return JSON.parse(t)}catch{return null}}function kl(t,e){return JSON.stringify(t,null,e)}var bL=null;function As(t){bL=t}function _S(){return bL}function hh(t,e,n){let o=(n??"").trim();if(!o)throw new Error("[panda cron] createCronTaskContext: workspacePath is required (non-empty)");return{pandaHome:t,workspaceId:e,workspacePath:o,storageDir:ph(t,e)}}var RG=null;function xL(){return RG}function Wu(t){return NG(t,uL)}async function Cl(t){let e;try{e=await OG(Wu(t),{encoding:"utf-8"})}catch(i){return yL(i)?[]:(it(`[ScheduledTasks] readCronTasks: ${String(i)}`),[])}let n=zu(e,!1);if(!n||typeof n!="object")return[];let o=n;if(!Array.isArray(o.tasks))return[];let r=[];for(let i of o.tasks){if(!i||typeof i.id!="string"||typeof i.cron!="string"||typeof i.prompt!="string"||typeof i.createdAt!="number"){it(`[ScheduledTasks] skipping malformed task: ${kl(i)}`);continue}if(!Fu(i.cron)){it(`[ScheduledTasks] skipping task ${i.id} with invalid cron '${i.cron}'`);continue}r.push({id:i.id,cron:i.cron,prompt:i.prompt,createdAt:i.createdAt,...typeof i.title=="string"&&i.title.trim()?{title:i.title.trim()}:{},...typeof i.lastFiredAt=="number"?{lastFiredAt:i.lastFiredAt}:{},...i.recurring?{recurring:!0}:{},...i.permanent?{permanent:!0}:{},...i.disabled===!0?{disabled:!0}:{}})}return r}function TL(t){let e;try{e=MG(Wu(t),"utf-8")}catch{return!1}let n=zu(e,!1);if(!n||typeof n!="object")return!1;let o=n.tasks;return Array.isArray(o)&&o.length>0}async function SS(t,e){await DG(e,{recursive:!0});let n={tasks:t.map(({durable:o,...r})=>r)};await LG(Wu(e),kl(n,2)+`
1917
+ `,"utf-8")}function wL(t,e){let n=xL();if(!n)return;let o=_S();if(o)try{n({workspaceId:o.workspaceId,workspacePath:o.workspacePath,pandaHome:o.pandaHome,storageDir:o.storageDir,kind:t,ruleCount:e})}catch(r){it(`[ScheduledTasks] cron-tasks write observer threw: ${String(r)}`)}}async function _L(t,e,n,o,r,i){let s=_S();if(!s)throw new Error("[panda cron] addCronTask requires CronTaskContext (setCronTaskContext)");let a=AG().slice(0,8),l={id:a,cron:t,prompt:e,createdAt:Date.now(),...n?{recurring:!0}:{},...typeof i=="string"&&i.trim()?{title:i.trim()}:{}};if(!o)return mL(s.workspaceId,r?{...l,agentId:r}:l),a;let c=await Cl(s.storageDir);return c.push(l),await SS(c,s.storageDir),wL("add",c.length),a}async function Ku(t,e,n){if(t.length===0||n!==void 0&&gL(n,t)||e===void 0)return;let o=new Set(t),r=await Cl(e),i=r.filter(s=>!o.has(s.id));i.length!==r.length&&(await SS(i,e),wL("remove",i.length))}async function SL(t,e,n){if(t.length===0)return;let o=new Set(t),r=await Cl(n),i=!1;for(let s of r)o.has(s.id)&&(s.lastFiredAt=e,i=!0);i&&await SS(r,n)}async function yh(t,e){let n=await Cl(t),o=fh(e).map(r=>({...r,durable:!1}));return[...n,...o]}function Il(t,e){let n=Fu(t);if(!n)return null;let o=cL(n,new Date(e));return o?o.getTime():null}var El={recurringFrac:.1,recurringCapMs:900*1e3,oneShotMaxMs:90*1e3,oneShotFloorMs:0,oneShotMinuteMod:30,recurringMaxAgeMs:10080*60*1e3};function kL(t){let e=parseInt(t.slice(0,8),16)/4294967296;return Number.isFinite(e)?e:0}function kS(t,e,n,o=El){let r=Il(t,e);if(r===null)return null;let i=Il(t,r);if(i===null)return r;let s=Math.min(kL(n)*o.recurringFrac*(i-r),o.recurringCapMs);return r+s}function IL(t,e,n,o=El){let r=Il(t,e);if(r===null)return null;if(new Date(r).getMinutes()%o.oneShotMinuteMod!==0)return r;let i=o.oneShotFloorMs+kL(n)*(o.oneShotMaxMs-o.oneShotFloorMs);return Math.max(r-i,e)}function CL(t,e){return t.filter(n=>{if(n.disabled)return!1;let o=Il(n.cron,n.createdAt);return o!==null&&o<e})}var EL=50,$G=Math.floor(El.recurringMaxAgeMs/(1440*60*1e3));function IS(t){let e=typeof t._pandaHome=="string"?t._pandaHome.trim():"",n=typeof t._workspaceId=="string"?t._workspaceId.trim():"",o=typeof t._workspacePath=="string"?t._workspacePath.trim():"";return!e||!n||!o?null:{pandaHome:e,workspaceId:n,workspacePath:o}}var vh=class extends De{constructor(e,n,o=I.CRON_CREATE,r){super(e,n,o,r)}getDescription(){return`Schedule cron: ${typeof this.params.cron=="string"?this.params.cron:""}`}async execute(e){let n=IS(this.params);if(!n)return{llmContent:"cron_create: missing internal _pandaHome/_workspaceId/_workspacePath (host wiring).",error:{message:"missing cron context",type:"INVALID_PARAMS"}};if(!mh())return{llmContent:"Kairos cron is disabled in configuration.",error:{message:"cron disabled",type:"DISABLED"}};let o=typeof this.params.cron=="string"?this.params.cron.trim():"",r=typeof this.params.prompt=="string"?this.params.prompt:"",i=this.params.recurring!==!1,s=this.params.durable===!0;if(!o||!r)return{llmContent:"cron and prompt are required.",error:{message:"invalid params",type:"INVALID_PARAMS"}};if(!Fu(o))return{llmContent:`Invalid cron expression '${o}'. Expected 5 fields: M H DoM Mon DoW.`,error:{message:"invalid cron",type:"VALIDATION"}};if(Il(o,Date.now())===null)return{llmContent:`Cron expression '${o}' does not match any calendar date in the next year.`,error:{message:"cron no match",type:"VALIDATION"}};let a=hh(n.pandaHome,n.workspaceId,n.workspacePath);As(a);try{if((await yh(a.storageDir,n.workspaceId)).length>=EL)return{llmContent:`Too many scheduled jobs (max ${EL}). Cancel one first.`,error:{message:"max jobs",type:"VALIDATION"}};let c=s&&hL(),u=await _L(o,r,i,c);fL(!0);let d=Uu(o),p=c?"Persisted to scheduled_tasks.json under your Panda home projects folder.":"Session-only (in memory for this process; not written to disk).",f=i?` Auto-expires after ${$G} days. Use cron_delete to cancel sooner.`:" One-shot: fires once then auto-deletes.";return{llmContent:`Scheduled job ${u} (${d}). ${p}${f}`}}catch(l){let c=l instanceof Error?l.message:String(l);return{llmContent:`cron_create failed: ${c}`,error:{message:c,type:"EXECUTION_FAILED"}}}finally{As(null)}}},bh=class extends De{constructor(e,n,o=I.CRON_DELETE,r){super(e,n,o,r)}getDescription(){return`Delete cron job ${typeof this.params.id=="string"?this.params.id:""}`}async execute(e){let n=IS(this.params);if(!n)return{llmContent:"cron_delete: missing internal _pandaHome/_workspaceId/_workspacePath.",error:{message:"missing cron context",type:"INVALID_PARAMS"}};if(!mh())return{llmContent:"Kairos cron is disabled in configuration.",error:{message:"cron disabled",type:"DISABLED"}};let o=typeof this.params.id=="string"?this.params.id.trim():"";if(!o)return{llmContent:"id is required.",error:{message:"invalid params",type:"INVALID_PARAMS"}};let r=hh(n.pandaHome,n.workspaceId,n.workspacePath);As(r);try{return(await yh(r.storageDir,n.workspaceId)).find(a=>a.id===o)?(await Ku([o],r.storageDir,n.workspaceId),{llmContent:`Cancelled scheduled job ${o}.`}):{llmContent:`No scheduled job with id '${o}'.`,error:{message:"not found",type:"VALIDATION"}}}catch(i){let s=i instanceof Error?i.message:String(i);return{llmContent:`cron_delete failed: ${s}`,error:{message:s,type:"EXECUTION_FAILED"}}}finally{As(null)}}},xh=class extends De{constructor(e,n,o=I.CRON_LIST,r){super(e,n,o,r)}getDescription(){return"List scheduled cron jobs"}async execute(e){let n=IS(this.params);if(!n)return{llmContent:"cron_list: missing internal _pandaHome/_workspaceId/_workspacePath.",error:{message:"missing cron context",type:"INVALID_PARAMS"}};if(!mh())return{llmContent:"Kairos cron is disabled in configuration.",error:{message:"cron disabled",type:"DISABLED"}};let o=hh(n.pandaHome,n.workspaceId,n.workspacePath);As(o);try{let i=(await yh(o.storageDir,n.workspaceId)).map(s=>{let a=Uu(s.cron),l=s.recurring?"recurring":"one-shot",c=s.durable===!1?" [session-only]":"",u=s.prompt.length>80?`${s.prompt.slice(0,80)}\u2026`:s.prompt;return`${s.id} \u2014 ${a} (${l})${c}: ${u}`});return{llmContent:i.length>0?i.join(`
1918
+ `):"No scheduled jobs."}}catch(r){let i=r instanceof Error?r.message:String(r);return{llmContent:`cron_list failed: ${i}`,error:{message:i,type:"EXECUTION_FAILED"}}}finally{As(null)}}};async function PL(t){let e=t.readFileToolConfig,{toolName:n,params:o,workspaceRoot:r,messageBus:i,toolDisplayName:s}=t;switch(n){case I.DELETE_FILE:return new Vg(o,r??"",t.userHome,i,n,s);case I.READ_FILE:return new Hg(o,r,i,e,n,s);case I.WRITE_FILE:return new qg(o,r,i,n,s);case I.LIST_FILES:return new Gg(o,r,i,n,s);case I.EDIT_FILE:return new Yg(o,r,i,n,s);case I.RUN_TERMINAL_CMD:return new eh(o,r,i,n,s);case I.AWAIT_SHELL:return new uh(o,n,s);case I.STOP_SHELL:return new dh(o,n,s);case I.GREP:return new nh(o,r,i,n,s);case I.GLOB:return new rh(o,r,i,n,s);case I.WEB_FETCH:return new oh(o,i,n,s);case I.WEB_SEARCH:return new ih(o,i,n,s);case I.USE_SKILL:return new ah(o,r??"",i,n,s);case I.LIST_SKILLS:return new ch(o,r??"",n,s);case I.CREATE_PLAN:{let a=typeof t.planFilePath=="string"?t.planFilePath:void 0;if(!a)throw new Error("create_plan requires planFilePath in node environment.");return new lh(o,{planFilePath:a},i,n,s)}case I.BROWSER:return new vl(o,i,n,s);case I.CRON_CREATE:return new vh(o,i,n,s);case I.CRON_DELETE:return new bh(o,i,n,s);case I.CRON_LIST:return new xh(o,i,n,s);default:throw new Error(`Unsupported tool: ${n} in node environment.`)}}import{mkdir as FG,readFile as UG,unlink as AL,writeFile as CS}from"node:fs/promises";import{dirname as BG,join as jG}from"node:path";var zG=k.object({sessionId:k.string(),pid:k.number(),acquiredAt:k.number()}),Hu;function Vu(t){return jG(t,dL)}async function ML(t){let e;try{e=await UG(Vu(t),"utf8")}catch{return}let n=zG.safeParse(zu(e,!1));return n.success?n.data:void 0}async function RL(t,e){let n=Vu(e),o=kl(t);try{return await CS(n,o,{flag:"wx"}),!0}catch(r){let i=gh(r);if(i==="EEXIST")return!1;if(i==="ENOENT"){await FG(BG(n),{recursive:!0});try{return await CS(n,o,{flag:"wx"}),!0}catch(s){if(gh(s)==="EEXIST")return!1;throw s}}throw r}}async function ES(t){let e=t?.dir;if(!e)throw new Error("[panda cron] tryAcquireSchedulerLock requires opts.dir");let n=t?.lockIdentity??ju(),o={sessionId:n,pid:process.pid,acquiredAt:Date.now()};if(await RL(o,e))return Hu=void 0,it(`[ScheduledTasks] acquired scheduler lock (PID ${process.pid})`),!0;let r=await ML(e);return r?.sessionId===n?(r.pid!==process.pid&&await CS(Vu(e),kl(o)),!0):r&&vL(r.pid)?(Hu!==r.sessionId&&(Hu=r.sessionId,it(`[ScheduledTasks] scheduler lock held by session ${r.sessionId} (PID ${r.pid})`)),!1):(await AL(Vu(e)).catch(()=>{}),await RL(o,e)?(Hu=void 0,!0):!1)}async function Th(t){let e=t?.dir;if(!e)return;Hu=void 0;let n=t?.lockIdentity??ju(),o=await ML(e);if(!(!o||o.sessionId!==n))try{await AL(Vu(e)),it("[ScheduledTasks] released scheduler lock")}catch{}}function DL(t){if(!t)return;t.unref?.call(t)}var WG=1e3,KG=300,HG=5e3;function VG(t,e,n){return n===0?!1:!!(t.recurring&&!t.permanent&&e-t.createdAt>=n)}function OL(t){let{onFire:e,isLoading:n,assistantMode:o=!1,onFireTask:r,onMissed:i,dir:s,lockIdentity:a,getJitterConfig:l,isKilled:c,filter:u,workspaceId:d}=t,p={dir:s,lockIdentity:a},f=[],m=new Map,g=new Set,h=new Set,y=null,v=null,b=null,R=!1,M=!1;async function B(T){let W=await Cl(s);if(R||(f=W,!T))return;let A=Date.now(),U=CL(W,A).filter(j=>!j.recurring&&!g.has(j.id)&&(!u||u(j)));if(U.length>0){for(let j of U)g.add(j.id),m.set(j.id,1/0);U.length,U.map(j=>j.id).join(","),i?i(U):e(PS(U)),Ku(U.map(j=>j.id),s,d).catch(j=>it(`[ScheduledTasks] failed to remove missed tasks: ${j}`)),it(`[ScheduledTasks] surfaced ${U.length} missed one-shot task(s)`)}}function S(){if(c?.()||n()&&!o)return;let T=Date.now(),W=new Set,A=[],U=l?.()??El;function j(_,$){if(u&&!u(_)||_.disabled||(W.add(_.id),h.has(_.id)))return;let N=m.get(_.id);if(N===void 0&&(N=_.recurring?kS(_.cron,_.lastFiredAt??_.createdAt,_.id,U)??1/0:IL(_.cron,_.createdAt,_.id,U)??1/0,m.set(_.id,N),it(`[ScheduledTasks] scheduled ${_.id} for ${N===1/0?"never":new Date(N).toISOString()}`)),T<N)return;it(`[ScheduledTasks] firing ${_.id}${_.recurring?" (recurring)":""}`),_.recurring,_.id,r?r(_):e(_.prompt);let K=VG(_,T,U.recurringMaxAgeMs);if(K){let E=Math.floor((T-_.createdAt)/1e3/60/60);it(`[ScheduledTasks] recurring task ${_.id} aged out (${E}h since creation), deleting after final fire`),_.id}if(_.recurring&&!K){let E=kS(_.cron,T,_.id,U)??1/0;m.set(_.id,E),$||A.push(_.id)}else $?(wS(d,[_.id]),m.delete(_.id)):(h.add(_.id),Ku([_.id],s,d).catch(E=>it(`[ScheduledTasks] failed to remove task ${_.id}: ${E}`)).finally(()=>h.delete(_.id)),m.delete(_.id))}if(M){for(let _ of f)j(_,!1);if(A.length>0){for(let _ of A)h.add(_);SL(A,T,s).catch(_=>it(`[ScheduledTasks] failed to persist lastFiredAt: ${_}`)).finally(()=>{for(let _ of A)h.delete(_)})}}for(let _ of fh(d))j(_,!0);if(W.size===0){m.clear();return}for(let _ of m.keys())W.has(_)||m.delete(_)}async function x(){if(R)return;let{default:T}=await import("chokidar");if(R)return;if(M=await ES(p).catch(()=>!1),R){M&&(M=!1,Th(p));return}M||(v=setInterval(()=>{ES(p).then(A=>{if(R){A&&Th(p);return}A&&(M=!0,v&&(clearInterval(v),v=null))}).catch(A=>it(String(A),{level:"error"}))},HG),DL(v)),B(!0);let W=Wu(s);b=T.watch(W,{persistent:!1,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:KG},ignorePermissionErrors:!0}),b.on("add",()=>{B(!1)}),b.on("change",()=>{B(!1)}),b.on("unlink",()=>{R||(f=[],m.clear())}),y=setInterval(S,WG),DL(y)}return{start(){R=!1,it(`[ScheduledTasks] scheduler start() \u2014 dir=${s}, workspaceId=${d}, hasTasks=${TL(s)}`),x()},stop(){R=!0,y&&(clearInterval(y),y=null),v&&(clearInterval(v),v=null),b?.close(),b=null,M&&(M=!1,Th(p))},getNextFireTime(){let T=1/0;for(let W of m.values())W<T&&(T=W);return T===1/0?null:T}}}function PS(t){let e=t.length>1,n=`The following one-shot scheduled task${e?"s were":" was"} missed while Panda was not running. ${e?"They have":"It has"} already been removed from this workspace's scheduled_tasks.json (under your Panda home projects folder).
1919
1919
 
1920
1920
  Do NOT execute ${e?"these prompts":"this prompt"} yet. First use the ask_question tool to ask whether to run ${e?"each one":"it"} now. Only execute if the user confirms.`,o=t.map(r=>{let i=`[${Uu(r.cron)}, created ${new Date(r.createdAt).toLocaleString()}]`,s=(r.prompt.match(/`+/g)??[]).reduce((l,c)=>Math.max(l,c.length),0),a="`".repeat(Math.max(3,s+1));return`${i}
1921
1921
  ${a}
@@ -1924,8 +1924,8 @@ ${a}`});return`${n}
1924
1924
 
1925
1925
  ${o.join(`
1926
1926
 
1927
- `)}`}function RS(t,e){return e.getSessionForWorkspace?e.getSessionForWorkspace(t)??null:e.getActiveWorkspaceId?.()!==t?null:e.getSession?.()??null}function LL(t,e){let n=null,o=null;function r(a){a!==n&&(n=a,it(`[cron] isLoading state for ${t}: ${a}`))}function i(a){a!==o&&(o=a,it(`[cron] isKilled state for ${t}: ${a}`))}function s(a,l){let c=RS(t,e);if(!c){e.getSessionForWorkspace?it(`[cron] skip ${l} ws=${t} \u2014 getSessionForWorkspace returned null (workspace not hot)`):it(`[cron] skip ${l} ws=${t} \u2014 no getSessionForWorkspace and active workspace mismatch`);return}c.submitCronFire?(it(`[cron] dispatch ${l} ws=${t} via submitCronFire taskId=${a.cronTaskId??"(none)"}`),Promise.resolve(c.submitCronFire(a)).catch(u=>{it(`[cron] submitCronFire rejected ws=${t}: ${String(u)}`)})):(it(`[cron] dispatch ${l} ws=${t} via legacy submit (no submitCronFire on sink)`),c.submit(a.prompt))}return{isLoading:()=>{let a=RS(t,e);if(!a)return r("blocked: no session (workspace not hot)"),!0;let l=a.isConversationCoreBusy();return r(l?"blocked: conversation core busy":"ready"),l},isKilled:()=>{let a=RS(t,e);if(!a)return i("alive (no session, default enabled=true)"),!1;let l=a.getCronCompiledFlags().enabled;return i(l?"alive (cron enabled)":"killed: cron compiled flag disabled"),!l},onFire:a=>{s({targetWorkspaceId:t,prompt:a},"fire")},onFireTask:a=>{s({targetWorkspaceId:t,prompt:a.prompt,cronTaskId:a.id,titleHint:a.title},"fire")},onMissed:a=>{s({targetWorkspaceId:t,prompt:PS(a),cronTaskId:a[0]?.id,titleHint:"\u9519\u8FC7\u7684\u5B9A\u65F6\u4EFB\u52A1"},"missed")}}}var wh=class{byId=new Map;pandaHome;host;constructor(e){this.pandaHome=e.pandaHome,this.host={getActiveWorkspaceId:e.getActiveWorkspaceId,getSession:e.getSession,getSessionForWorkspace:e.getSessionForWorkspace}}syncFromWorkspaceIds(e){let n=new Set(e),o=[],r=[];for(let i of this.byId.keys())n.has(i)||(this.byId.get(i).stop(),this.byId.delete(i),o.push(i));for(let i of n){if(this.byId.has(i))continue;let s=ph(this.pandaHome,i),a=LL(i,this.host),l=OL({dir:s,workspaceId:i,lockIdentity:`${ju()}:cron:${i}`,onFire:a.onFire,onFireTask:a.onFireTask,onMissed:a.onMissed,isLoading:a.isLoading,isKilled:a.isKilled});l.start(),this.byId.set(i,{scheduler:l,stop:()=>l.stop()}),r.push(i)}(r.length>0||o.length>0)&&it(`[cron-registry] syncFromWorkspaceIds: total=${this.byId.size} added=[${r.join(",")}] removed=[${o.join(",")}] kept=${this.byId.size-r.length}`)}dispose(){for(let{stop:e}of this.byId.values())e();this.byId.clear()}};tn();function NL(t){let{id:e,displayName:n,config:o,capabilities:r}=t,i=typeof o.contextLength=="number"&&o.contextLength>0?o.contextLength:2e5,s=typeof o.maxOutputTokens=="number"&&o.maxOutputTokens>0?o.maxOutputTokens:4096,a=r?.supportsMultimodal===!0;return{modelId:e,displayName:n,contextLength:i,maxOutputTokens:s,...a?{supportsMultimodal:!0}:{}}}import HG,{APIError as $L}from"openai";var Yr=class extends ni{static providerName="openai";client;organization;project;defaultHeaders;streamUsage;constructor(e){super(e),this.organization=e.organization,this.project=e.project,this.defaultHeaders=e.defaultHeaders,this.streamUsage=e.streamUsage??!0}getOpenAIClientBearerToken(){return this.apiKey??"dummy-key"}mergeOpenAIClientDefaultHeaders(){return{...this.defaultHeaders??{}}}buildStreamRequestExtra(e){return{}}getOpenAIClientExtraOptions(){return{}}async getClient(){if(!this.client){let e=this.getOpenAIClientBearerToken(),n=this.mergeOpenAIClientDefaultHeaders(),o=this.requestOptions?.timeout||18e4;this.client=new HG({apiKey:e,baseURL:this.apiBase,organization:this.organization,project:this.project,timeout:o,defaultHeaders:n,maxRetries:0,...this.getOpenAIClientExtraOptions()}),console.log("[OpenAICompatibleLLM] client initialized",{model:this.model,baseURL:this.apiBase,timeoutMs:o})}return this.client}convertMessages(e){let n=[],o=!1,r="",i=this.supportsReasoning();for(let s of e)switch(s.role){case"user":n.push(this.convertUserMessage(s)),Array.isArray(s.content)&&(o=s.content.some(a=>a.type==="imageUrl"));break;case"assistant":{let a=this.convertAssistantMessage(s,i?r:"");n.push(a),r="";break}case"system":n.push({role:"system",content:s.content});break;case"tool":n.push({role:"tool",content:s.content,tool_call_id:s.toolCallId});break;case"thinking":{if(i){let a=typeof s.content=="string"?s.content:s.content.map(l=>l.type==="text"?l.text:"").join("");r?r+=`
1928
- `+a:r=a}break}}return{messages:n,hasImages:o}}convertUserMessage(e){return typeof e.content=="string"?{role:"user",content:e.content}:{role:"user",content:e.content.map(o=>o.type==="text"?{type:"text",text:o.text}:{type:"image_url",image_url:{url:o.imageUrl.url,detail:o.imageUrl.detail||"auto"}})}}convertAssistantMessage(e,n=""){let r={role:"assistant",content:typeof e.content=="string"?e.content:e.content.map(a=>a.type==="text"?a.text:"").join("")},i="toolCalls"in e?e.toolCalls:void 0,s=i&&i.length>0;return s&&(r.tool_calls=i.filter(a=>a.id&&a.function?.name).map(a=>({id:a.id,type:"function",function:{name:a.function.name,arguments:a.function.arguments||"{}"}}))),(n||s)&&(r.reasoning_content=n),r}convertTools(e){if(!(!e||e.length===0))return e.map(n=>({type:"function",function:{name:n.function.name,description:n.function.description,parameters:n.function.parameters,strict:n.function.strict}}))}convertToolChoice(e){if(e)return typeof e=="string"?e:{type:"function",function:{name:e.function.name}}}buildRequestParams(e,n,o){let r={model:this.model,messages:e,stream:o,temperature:this.normalizeTemperature(n.temperature),top_p:n.topP,frequency_penalty:n.frequencyPenalty,presence_penalty:n.presencePenalty,max_tokens:n.maxOutputTokens??4096,stop:n.stop,seed:n.seed},i=this.convertTools(n.tools);return i&&(r.tools=i,r.tool_choice=this.convertToolChoice(n.toolChoice)),o&&this.streamUsage&&(r.stream_options={include_usage:!0}),this.logger?.debug("[buildRequestParams] Resolved max_tokens",{model:this.model,max_tokens:r.max_tokens,optionsMaxOutputTokens:n.maxOutputTokens,completionDefaultMaxOutputTokens:this.completionOptions.maxOutputTokens,fallbackDefaultMaxTokens:4096,stream:o}),r}normalizeTemperature(e){if(e===void 0)return e;let n=this.model.toLowerCase(),o=(this.apiBase||"").toLowerCase();return n.startsWith("kimi-k2.5")&&o.includes("moonshot.cn")&&e!==1?(this.logger?.debug("Overriding temperature to 1 for Moonshot kimi-k2.5 model",{model:this.model,requestedTemperature:e}),1):e}extractReasoningAndContent(e,n){if("reasoning"in e&&e.reasoning)return{reasoning:typeof e.reasoning=="string"?e.reasoning:JSON.stringify(e.reasoning)};if("reasoning_content"in e&&e.reasoning_content){let o={reasoning:e.reasoning_content};return e.content&&(o.content=e.content),o}if("reasoning_details"in e&&e.reasoning_details){let o=e.reasoning_details;return{reasoning:JSON.stringify(o)}}if(e.content){let o=this.parseThinkingTags(e.content,n);return o||{content:e.content}}return null}parseThinkingTags(e,n){if(n||(n={inThinkingBlock:!1,thinkingBuffer:""}),!(e.includes("<think>")||e.includes("</think>")))return n.inThinkingBlock&&(n.thinkingBuffer+=e),null;let r=e,i={};if(r.includes("<think>")){let s=r.indexOf("<think>");if(s!==-1){let a=r.substring(0,s);a&&(i.content=a),n.inThinkingBlock=!0,n.thinkingBuffer="",r=r.substring(s+7)}}if(r.includes("</think>")){let s=r.indexOf("</think>");s!==-1&&(n.inThinkingBlock&&(n.thinkingBuffer+=r.substring(0,s),i.reasoning=n.thinkingBuffer,n.thinkingBuffer=""),n.inThinkingBlock=!1,r=r.substring(s+8),r&&(i.content=(i.content||"")+r))}else if(n.inThinkingBlock)return n.thinkingBuffer+=r,null;return i.reasoning||i.content?i:null}async*_streamChat(e,n,o){let r=Date.now(),{messages:i}=this.convertMessages(e),s=await this.getClient(),a=this.buildRequestParams(i,o,!0),l=!1;this.logger?.debug("[OpenAICompatible] requestStart",{provider:this.providerName,model:this.model,apiBase:this.apiBase??"default",messageCount:i.length,hasTools:!!o.tools?.length,hasApiKey:!!this.apiKey});try{let c=this.buildStreamRequestExtra(o),u=await wc(()=>s.chat.completions.create(a,{signal:n,...c}),{maxRetries:3,context:{modelId:this.model,querySource:"chat_main"},decide:(v,b)=>this.isOverloadedError(v)&&b.consecutiveOverloadErrors>=3?{action:"fallback-to-non-stream"}:xa(v,b),onRetry:(v,b,R)=>{this.logger?.debug(`Retry attempt ${b} after ${R}ms`,{error:v})}}),d=new Map,p,f=!1,m=0,g=0,h=null,y={inThinkingBlock:!1,thinkingBuffer:""};for await(let v of u){if(m++,n.aborted)break;if(!v.choices||v.choices.length===0){g++;continue}let b=v.choices[0];if(!b){g++;continue}b.finish_reason&&(h=b.finish_reason);let R=b.finish_reason?.toLowerCase();if(R==="content_filter"||R==="filter")throw new Fe(`Stream finished with reason: ${b.finish_reason}. Content was filtered by the API.`,this,"CONTENT_FILTERED");let M=b.delta,B=this.extractReasoningAndContent(M,y);if(n.aborted||(B?(B.reasoning&&(f=!0,yield{role:"thinking",content:B.reasoning}),B.content&&(f=!0,yield{role:"assistant",content:B.content})):M.content&&(y.inThinkingBlock||(f=!0,yield{role:"assistant",content:M.content})),n.aborted))break;if(M.tool_calls)for(let S of M.tool_calls){let x=d.get(S.index);if(x){if(S.id&&!x.id&&(x.id=S.id),S.function?.arguments){x.function=x.function||{name:"",arguments:""};let j=(x.function.arguments||"")+S.function.arguments;x.function.arguments=j}S.function?.name&&!x.function?.name&&(x.function=x.function||{name:"",arguments:""},x.function.name=S.function.name)}else{let j={id:S.id,type:S.type,function:S.function?{name:S.function.name,arguments:S.function.arguments||""}:void 0};d.set(S.index,j)}l=!0;let T=d.get(S.index),W=S.function?.arguments||"",A=S.function?.name||T.function?.name||"",U=200;if(W.length>U)for(let j=0;j<W.length;j+=U){let _=W.slice(j,j+U);yield{role:"assistant",content:"",toolCalls:[{id:T.id,type:"function",function:{name:j===0?A:"",arguments:_}}]},j+U<W.length&&await new Promise($=>setTimeout($,0))}else yield{role:"assistant",content:"",toolCalls:[{id:T.id,type:"function",function:{name:A,arguments:W}}]}}v.usage&&(p={promptTokens:v.usage.prompt_tokens,completionTokens:v.usage.completion_tokens,promptTokensDetails:v.usage.prompt_tokens_details?{cachedTokens:v.usage.prompt_tokens_details.cached_tokens}:void 0,completionTokensDetails:v.usage.completion_tokens_details?{reasoningTokens:v.usage.completion_tokens_details.reasoning_tokens}:void 0})}if(y.inThinkingBlock&&y.thinkingBuffer&&(f=!0,yield{role:"thinking",content:y.thinkingBuffer}),p&&(yield{role:"assistant",content:"",usage:p}),!f&&d.size===0)throw console.warn("[OpenAICompatibleLLM] empty completion stream",{model:this.model,baseURL:this.apiBase,chunkCount:m,emptyChunkCount:g,lastFinishReason:h}),new Fe("\u6A21\u578B\u8BF7\u6C42\u5F02\u5E38\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002",this,"NO_CONTENT")}catch(c){if(c instanceof xc&&!l&&!n.aborted){yield*this.streamFromNonStreamingFallback(s,i,o,n);return}let u=Date.now()-r,d=c,p=c&&typeof c=="object"?Object.getOwnPropertyNames(c):[],f=(()=>{try{return JSON.stringify(c&&typeof c=="object"?c:{value:String(c)})}catch{return}})();throw console.error("[OpenAICompatibleLLM] stream failed",{model:this.model,baseURL:this.apiBase,elapsedMs:u,aborted:n.aborted,errorName:d?.name??typeof c,errorMessage:d?.message??String(c),errorStatus:d?.status,errorCode:d?.code,errorType:d?.type,errorCause:d?.cause instanceof Error?{name:d.cause.name,message:d.cause.message}:d?.cause,errorOwnProps:p,errorJson:f}),this.wrapError(c)}}isOverloadedError(e){if(e instanceof $L&&e.status===529)return!0;if(e instanceof Error){let n=e.message.toLowerCase();return n.includes("overloaded")||n.includes('"type":"overloaded_error"')}return!1}async*streamFromNonStreamingFallback(e,n,o,r){let i=this.buildRequestParams(n,o,!1),s=this.buildStreamRequestExtra(o),a=await wc(()=>e.chat.completions.create(i,{signal:r,...s}),{maxRetries:2,context:{modelId:this.model,querySource:"chat_main"},decide:xa}),l=a.choices?.[0]?.message;if(!l)throw new Fe("Fallback non-stream response missing message",this,"INVALID_RESPONSE");let c=l.content??"";c&&(yield{role:"assistant",content:c}),l.tool_calls&&l.tool_calls.length>0&&(yield{role:"assistant",content:"",toolCalls:l.tool_calls.map(u=>u.type==="function"?{id:u.id,type:"function",function:{name:u.function.name,arguments:u.function.arguments}}:{id:u.id,type:"function",function:{name:u.custom.name,arguments:u.custom.input}})}),a.usage&&(yield{role:"assistant",content:"",usage:{promptTokens:a.usage.prompt_tokens,completionTokens:a.usage.completion_tokens}})}async listModels(){try{return(await(await this.getClient()).models.list()).data.map(o=>({id:o.id,displayName:o.id}))}catch(e){return this.logger?.error("Failed to list models",e),[{id:this.model,displayName:this.model}]}}wrapError(e){if(e instanceof Fe)return e;if(e instanceof $L){let n=e,o=QE(n,{model:this.model,apiBase:this.apiBase}),r=this.extractGatewayErrorDetail(n);if(this.logger?.debug("[OpenAICompatibleProvider] APIError detail extracted",{status:n.status,openaiCode:typeof n.code=="number"?String(n.code):n.code,gatewayCode:r.code,gatewayType:r.type,gatewayMessage:r.message}),(r.code??"").toLowerCase()==="jwt_blacklisted")return this.logger?.debug("[OpenAICompatibleProvider] Mapping jwt_blacklisted -> AUTH_LOGOUT_REQUIRED",{status:n.status,message:r.message||o}),new Fe(r.message||o,this,"AUTH_LOGOUT_REQUIRED",n.status);let i=r.code??(typeof n.code=="number"?String(n.code):n.code);return new Fe(o,this,i,n.status)}if(e instanceof Error){if(e.name==="AbortError")throw e;let n=XE(e);if(n)return new Fe(n,this,void 0,void 0);let o=e.message.toLowerCase();return o.includes("terminated")||o.includes("fetch failed")||o.includes("network")?new Fe(e.message,this,"NETWORK_TERMINATED"):new Fe(e.message,this,"UNKNOWN_ERROR")}return new Fe("Unknown error",this,"UNKNOWN_ERROR")}formatApiErrorMessage(e){let n=this.extractGatewayErrorDetail(e),o=n.message||e.message||"Unknown API error",r=this.apiBase||"default",i=[n.code,n.type].filter(a=>typeof a=="string"&&a.length>0),s=i.length>0?` [${i.join(", ")}]`:"";return e.status===400&&o.toLowerCase().includes("model")?`${o}${s} (model: ${this.model}, apiBase: ${r})`:e.status===401?`Authentication failed: ${o}${s}`:!n.message&&e.status===403&&o.toLowerCase().includes("invalid request source")?`\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u6CE8\u610F\u8EAB\u4EFD\u72B6\u6001\u53CA\u53D1\u9001\u6E90\u3002${s}`:e.status===429?`Rate limit exceeded: ${o}${s}`:`${o}${s}`}extractGatewayErrorDetail(e){let n=[e.body,this.pickObjectProperty(e.response,"body"),e.error,this.pickObjectProperty(e.response,"error"),this.tryParseJson(e.message)];for(let o of n){let r=this.parseGatewayErrorCandidate(o);if(r.message||r.code||r.type)return r}return{}}parseGatewayErrorCandidate(e){if(!e)return{};if(typeof e=="string"){let l=this.tryParseJson(e);return l?this.parseGatewayErrorCandidate(l):{}}if(typeof e!="object")return{};let n=e,o=this.pickObjectProperty(n,"error"),r=o&&typeof o=="object"?o:n,i=this.pickString(r.type),s=this.pickString(r.code),a=this.pickString(r.message);return{type:i,code:s,message:a}}tryParseJson(e){if(typeof e!="string")return;let n=e.trim();if(n.length===0)return;if(n.startsWith("{")&&n.endsWith("}"))try{return JSON.parse(n)}catch{}let o=n.indexOf("{"),r=n.lastIndexOf("}");if(o===-1||r===-1||r<=o)return;let i=n.slice(o,r+1);try{return JSON.parse(i)}catch{return}}pickObjectProperty(e,n){if(!(!e||typeof e!="object"))return e[n]}pickString(e){return typeof e=="string"&&e.length>0?e:void 0}requiresApiKey(){return!0}supportsImages(){return this.capabilities?.supportsImages??this.detectImageSupport()}supportsTools(){return this.capabilities?.supportsTools??!0}supportsStreaming(){return!0}detectImageSupport(){let e=this.model.toLowerCase();return e.includes("vision")||e.includes("gpt-4o")||e.includes("gpt-4-turbo")||e.includes("claude-3")||e.includes("gemini")}};var VG="https://api.openai.com/v1",AS={"gpt-4o":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0},"gpt-4o-mini":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0},"gpt-4-turbo":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0},"gpt-4-vision-preview":{supportsImages:!0,supportsTools:!1,supportsStreaming:!0},"gpt-4":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0},"gpt-3.5-turbo":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0},"o1-preview":{supportsImages:!1,supportsTools:!1,supportsStreaming:!0,supportsReasoning:!0},"o1-mini":{supportsImages:!1,supportsTools:!1,supportsStreaming:!0,supportsReasoning:!0},"o3-mini":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0}};function qG(t){if(t in AS)return AS[t];for(let[e,n]of Object.entries(AS))if(t.startsWith(e))return n;return{supportsImages:!1,supportsTools:!0,supportsStreaming:!0}}function FL(t){let e=t.capabilities||qG(t.model);return new Yr({...t,apiBase:t.apiBase||VG,capabilities:e})}typeof global<"u"&&(global.PANDA_CONFIG={environment:"development",buildTarget:"vscode",version:"0.9.6",vscodeIntegration:!0,authBaseUrl:"https://192.168.63.230:10443",tlsInsecure:!1,logging:{internal:{enabled:!0,minLevel:"debug",outputToConsole:!0,remote:{enabled:!1,endpoint:"",minLevel:"error",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4}},user:{enabled:!0,minLevel:"info",remote:{enabled:!1,endpoint:"",minLevel:"warn",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4},enabledCategories:["CORE","LLM","TOOLS","USER","CHAT","SYSTEM","ERROR"]}}});typeof window<"u"&&(window.PANDA_CONFIG={environment:"development",buildTarget:"vscode",version:"0.9.6",vscodeIntegration:!0,authBaseUrl:"https://192.168.63.230:10443",tlsInsecure:!1,logging:{internal:{enabled:!0,minLevel:"debug",outputToConsole:!0,remote:{enabled:!1,endpoint:"",minLevel:"error",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4}},user:{enabled:!0,minLevel:"info",remote:{enabled:!1,endpoint:"",minLevel:"warn",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4},enabledCategories:["CORE","LLM","TOOLS","USER","CHAT","SYSTEM","ERROR"]}}});var Qr={environment:"development",buildTarget:"vscode",version:"0.9.6",vscodeIntegration:!0,authBaseUrl:"https://192.168.63.230:10443",tlsInsecure:!1,logging:{internal:{enabled:!0,minLevel:"debug",outputToConsole:!0,remote:{enabled:!1,endpoint:"",minLevel:"error",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4}},user:{enabled:!0,minLevel:"info",remote:{enabled:!1,endpoint:"",minLevel:"warn",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4},enabledCategories:["CORE","LLM","TOOLS","USER","CHAT","SYSTEM","ERROR"]}}};var GG="192.168.63.230",ZG="192.168.63.231",JG=`-----BEGIN CERTIFICATE-----
1927
+ `)}`}function RS(t,e){return e.getSessionForWorkspace?e.getSessionForWorkspace(t)??null:e.getActiveWorkspaceId?.()!==t?null:e.getSession?.()??null}function LL(t,e){let n=null,o=null;function r(a){a!==n&&(n=a,it(`[cron] isLoading state for ${t}: ${a}`))}function i(a){a!==o&&(o=a,it(`[cron] isKilled state for ${t}: ${a}`))}function s(a,l){let c=RS(t,e);if(!c){e.getSessionForWorkspace?it(`[cron] skip ${l} ws=${t} \u2014 getSessionForWorkspace returned null (workspace not hot)`):it(`[cron] skip ${l} ws=${t} \u2014 no getSessionForWorkspace and active workspace mismatch`);return}c.submitCronFire?(it(`[cron] dispatch ${l} ws=${t} via submitCronFire taskId=${a.cronTaskId??"(none)"}`),Promise.resolve(c.submitCronFire(a)).catch(u=>{it(`[cron] submitCronFire rejected ws=${t}: ${String(u)}`)})):(it(`[cron] dispatch ${l} ws=${t} via legacy submit (no submitCronFire on sink)`),c.submit(a.prompt))}return{isLoading:()=>{let a=RS(t,e);if(!a)return r("blocked: no session (workspace not hot)"),!0;let l=a.isConversationCoreBusy();return r(l?"blocked: conversation core busy":"ready"),l},isKilled:()=>{let a=RS(t,e);if(!a)return i("alive (no session, default enabled=true)"),!1;let l=a.getCronCompiledFlags().enabled;return i(l?"alive (cron enabled)":"killed: cron compiled flag disabled"),!l},onFire:a=>{s({targetWorkspaceId:t,prompt:a},"fire")},onFireTask:a=>{s({targetWorkspaceId:t,prompt:a.prompt,cronTaskId:a.id,titleHint:a.title},"fire")},onMissed:a=>{s({targetWorkspaceId:t,prompt:PS(a),cronTaskId:a[0]?.id,titleHint:"\u9519\u8FC7\u7684\u5B9A\u65F6\u4EFB\u52A1"},"missed")}}}var wh=class{byId=new Map;pandaHome;host;constructor(e){this.pandaHome=e.pandaHome,this.host={getActiveWorkspaceId:e.getActiveWorkspaceId,getSession:e.getSession,getSessionForWorkspace:e.getSessionForWorkspace}}syncFromWorkspaceIds(e){let n=new Set(e),o=[],r=[];for(let i of this.byId.keys())n.has(i)||(this.byId.get(i).stop(),this.byId.delete(i),o.push(i));for(let i of n){if(this.byId.has(i))continue;let s=ph(this.pandaHome,i),a=LL(i,this.host),l=OL({dir:s,workspaceId:i,lockIdentity:`${ju()}:cron:${i}`,onFire:a.onFire,onFireTask:a.onFireTask,onMissed:a.onMissed,isLoading:a.isLoading,isKilled:a.isKilled});l.start(),this.byId.set(i,{scheduler:l,stop:()=>l.stop()}),r.push(i)}(r.length>0||o.length>0)&&it(`[cron-registry] syncFromWorkspaceIds: total=${this.byId.size} added=[${r.join(",")}] removed=[${o.join(",")}] kept=${this.byId.size-r.length}`)}dispose(){for(let{stop:e}of this.byId.values())e();this.byId.clear()}};tn();function NL(t){let{id:e,displayName:n,config:o,capabilities:r}=t,i=typeof o.contextLength=="number"&&o.contextLength>0?o.contextLength:2e5,s=typeof o.maxOutputTokens=="number"&&o.maxOutputTokens>0?o.maxOutputTokens:4096,a=r?.supportsMultimodal===!0;return{modelId:e,displayName:n,contextLength:i,maxOutputTokens:s,...a?{supportsMultimodal:!0}:{}}}import qG,{APIError as $L}from"openai";var Yr=class extends ni{static providerName="openai";client;organization;project;defaultHeaders;streamUsage;constructor(e){super(e),this.organization=e.organization,this.project=e.project,this.defaultHeaders=e.defaultHeaders,this.streamUsage=e.streamUsage??!0}getOpenAIClientBearerToken(){return this.apiKey??"dummy-key"}mergeOpenAIClientDefaultHeaders(){return{...this.defaultHeaders??{}}}buildStreamRequestExtra(e){return{}}getOpenAIClientExtraOptions(){return{}}async getClient(){if(!this.client){let e=this.getOpenAIClientBearerToken(),n=this.mergeOpenAIClientDefaultHeaders(),o=this.requestOptions?.timeout||18e4;this.client=new qG({apiKey:e,baseURL:this.apiBase,organization:this.organization,project:this.project,timeout:o,defaultHeaders:n,maxRetries:0,...this.getOpenAIClientExtraOptions()}),console.log("[OpenAICompatibleLLM] client initialized",{model:this.model,baseURL:this.apiBase,timeoutMs:o})}return this.client}convertMessages(e){let n=[],o=!1,r="",i=this.supportsReasoning();for(let s of e)switch(s.role){case"user":n.push(this.convertUserMessage(s)),Array.isArray(s.content)&&(o=s.content.some(a=>a.type==="imageUrl"));break;case"assistant":{let a=this.convertAssistantMessage(s,i?r:"");n.push(a),r="";break}case"system":n.push({role:"system",content:s.content});break;case"tool":n.push({role:"tool",content:s.content,tool_call_id:s.toolCallId});break;case"thinking":{if(i){let a=typeof s.content=="string"?s.content:s.content.map(l=>l.type==="text"?l.text:"").join("");r?r+=`
1928
+ `+a:r=a}break}}return{messages:n,hasImages:o}}convertUserMessage(e){return typeof e.content=="string"?{role:"user",content:e.content}:{role:"user",content:e.content.map(o=>o.type==="text"?{type:"text",text:o.text}:{type:"image_url",image_url:{url:o.imageUrl.url,detail:o.imageUrl.detail||"auto"}})}}convertAssistantMessage(e,n=""){let r={role:"assistant",content:typeof e.content=="string"?e.content:e.content.map(a=>a.type==="text"?a.text:"").join("")},i="toolCalls"in e?e.toolCalls:void 0,s=i&&i.length>0;return s&&(r.tool_calls=i.filter(a=>a.id&&a.function?.name).map(a=>({id:a.id,type:"function",function:{name:a.function.name,arguments:a.function.arguments||"{}"}}))),(n||s)&&(r.reasoning_content=n),r}convertTools(e){if(!(!e||e.length===0))return e.map(n=>({type:"function",function:{name:n.function.name,description:n.function.description,parameters:n.function.parameters,strict:n.function.strict}}))}convertToolChoice(e){if(e)return typeof e=="string"?e:{type:"function",function:{name:e.function.name}}}buildRequestParams(e,n,o){let r={model:this.model,messages:e,stream:o,temperature:this.normalizeTemperature(n.temperature),top_p:n.topP,frequency_penalty:n.frequencyPenalty,presence_penalty:n.presencePenalty,max_tokens:n.maxOutputTokens??4096,stop:n.stop,seed:n.seed},i=this.convertTools(n.tools);return i&&(r.tools=i,r.tool_choice=this.convertToolChoice(n.toolChoice)),o&&this.streamUsage&&(r.stream_options={include_usage:!0}),this.logger?.debug("[buildRequestParams] Resolved max_tokens",{model:this.model,max_tokens:r.max_tokens,optionsMaxOutputTokens:n.maxOutputTokens,completionDefaultMaxOutputTokens:this.completionOptions.maxOutputTokens,fallbackDefaultMaxTokens:4096,stream:o}),r}normalizeTemperature(e){if(e===void 0)return e;let n=this.model.toLowerCase(),o=(this.apiBase||"").toLowerCase();return n.startsWith("kimi-k2.5")&&o.includes("moonshot.cn")&&e!==1?(this.logger?.debug("Overriding temperature to 1 for Moonshot kimi-k2.5 model",{model:this.model,requestedTemperature:e}),1):e}extractReasoningAndContent(e,n){if("reasoning"in e&&e.reasoning)return{reasoning:typeof e.reasoning=="string"?e.reasoning:JSON.stringify(e.reasoning)};if("reasoning_content"in e&&e.reasoning_content){let o={reasoning:e.reasoning_content};return e.content&&(o.content=e.content),o}if("reasoning_details"in e&&e.reasoning_details){let o=e.reasoning_details;return{reasoning:JSON.stringify(o)}}if(e.content){let o=this.parseThinkingTags(e.content,n);return o||{content:e.content}}return null}parseThinkingTags(e,n){if(n||(n={inThinkingBlock:!1,thinkingBuffer:""}),!(e.includes("<think>")||e.includes("</think>")))return n.inThinkingBlock&&(n.thinkingBuffer+=e),null;let r=e,i={};if(r.includes("<think>")){let s=r.indexOf("<think>");if(s!==-1){let a=r.substring(0,s);a&&(i.content=a),n.inThinkingBlock=!0,n.thinkingBuffer="",r=r.substring(s+7)}}if(r.includes("</think>")){let s=r.indexOf("</think>");s!==-1&&(n.inThinkingBlock&&(n.thinkingBuffer+=r.substring(0,s),i.reasoning=n.thinkingBuffer,n.thinkingBuffer=""),n.inThinkingBlock=!1,r=r.substring(s+8),r&&(i.content=(i.content||"")+r))}else if(n.inThinkingBlock)return n.thinkingBuffer+=r,null;return i.reasoning||i.content?i:null}async*_streamChat(e,n,o){let r=Date.now(),{messages:i}=this.convertMessages(e),s=await this.getClient(),a=this.buildRequestParams(i,o,!0),l=!1;this.logger?.debug("[OpenAICompatible] requestStart",{provider:this.providerName,model:this.model,apiBase:this.apiBase??"default",messageCount:i.length,hasTools:!!o.tools?.length,hasApiKey:!!this.apiKey});try{let c=this.buildStreamRequestExtra(o),u=await wc(()=>s.chat.completions.create(a,{signal:n,...c}),{maxRetries:3,context:{modelId:this.model,querySource:"chat_main"},decide:(v,b)=>this.isOverloadedError(v)&&b.consecutiveOverloadErrors>=3?{action:"fallback-to-non-stream"}:xa(v,b),onRetry:(v,b,R)=>{this.logger?.debug(`Retry attempt ${b} after ${R}ms`,{error:v})}}),d=new Map,p,f=!1,m=0,g=0,h=null,y={inThinkingBlock:!1,thinkingBuffer:""};for await(let v of u){if(m++,n.aborted)break;if(!v.choices||v.choices.length===0){g++;continue}let b=v.choices[0];if(!b){g++;continue}b.finish_reason&&(h=b.finish_reason);let R=b.finish_reason?.toLowerCase();if(R==="content_filter"||R==="filter")throw new Fe(`Stream finished with reason: ${b.finish_reason}. Content was filtered by the API.`,this,"CONTENT_FILTERED");let M=b.delta,B=this.extractReasoningAndContent(M,y);if(n.aborted||(B?(B.reasoning&&(f=!0,yield{role:"thinking",content:B.reasoning}),B.content&&(f=!0,yield{role:"assistant",content:B.content})):M.content&&(y.inThinkingBlock||(f=!0,yield{role:"assistant",content:M.content})),n.aborted))break;if(M.tool_calls)for(let S of M.tool_calls){let x=d.get(S.index);if(x){if(S.id&&!x.id&&(x.id=S.id),S.function?.arguments){x.function=x.function||{name:"",arguments:""};let j=(x.function.arguments||"")+S.function.arguments;x.function.arguments=j}S.function?.name&&!x.function?.name&&(x.function=x.function||{name:"",arguments:""},x.function.name=S.function.name)}else{let j={id:S.id,type:S.type,function:S.function?{name:S.function.name,arguments:S.function.arguments||""}:void 0};d.set(S.index,j)}l=!0;let T=d.get(S.index),W=S.function?.arguments||"",A=S.function?.name||T.function?.name||"",U=200;if(W.length>U)for(let j=0;j<W.length;j+=U){let _=W.slice(j,j+U);yield{role:"assistant",content:"",toolCalls:[{id:T.id,type:"function",function:{name:j===0?A:"",arguments:_}}]},j+U<W.length&&await new Promise($=>setTimeout($,0))}else yield{role:"assistant",content:"",toolCalls:[{id:T.id,type:"function",function:{name:A,arguments:W}}]}}v.usage&&(p={promptTokens:v.usage.prompt_tokens,completionTokens:v.usage.completion_tokens,promptTokensDetails:v.usage.prompt_tokens_details?{cachedTokens:v.usage.prompt_tokens_details.cached_tokens}:void 0,completionTokensDetails:v.usage.completion_tokens_details?{reasoningTokens:v.usage.completion_tokens_details.reasoning_tokens}:void 0})}if(y.inThinkingBlock&&y.thinkingBuffer&&(f=!0,yield{role:"thinking",content:y.thinkingBuffer}),p&&(yield{role:"assistant",content:"",usage:p}),!f&&d.size===0)throw console.warn("[OpenAICompatibleLLM] empty completion stream",{model:this.model,baseURL:this.apiBase,chunkCount:m,emptyChunkCount:g,lastFinishReason:h}),new Fe("\u6A21\u578B\u8BF7\u6C42\u5F02\u5E38\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002",this,"NO_CONTENT")}catch(c){if(c instanceof xc&&!l&&!n.aborted){yield*this.streamFromNonStreamingFallback(s,i,o,n);return}let u=Date.now()-r,d=c,p=c&&typeof c=="object"?Object.getOwnPropertyNames(c):[],f=(()=>{try{return JSON.stringify(c&&typeof c=="object"?c:{value:String(c)})}catch{return}})();throw console.error("[OpenAICompatibleLLM] stream failed",{model:this.model,baseURL:this.apiBase,elapsedMs:u,aborted:n.aborted,errorName:d?.name??typeof c,errorMessage:d?.message??String(c),errorStatus:d?.status,errorCode:d?.code,errorType:d?.type,errorCause:d?.cause instanceof Error?{name:d.cause.name,message:d.cause.message}:d?.cause,errorOwnProps:p,errorJson:f}),this.wrapError(c)}}isOverloadedError(e){if(e instanceof $L&&e.status===529)return!0;if(e instanceof Error){let n=e.message.toLowerCase();return n.includes("overloaded")||n.includes('"type":"overloaded_error"')}return!1}async*streamFromNonStreamingFallback(e,n,o,r){let i=this.buildRequestParams(n,o,!1),s=this.buildStreamRequestExtra(o),a=await wc(()=>e.chat.completions.create(i,{signal:r,...s}),{maxRetries:2,context:{modelId:this.model,querySource:"chat_main"},decide:xa}),l=a.choices?.[0]?.message;if(!l)throw new Fe("Fallback non-stream response missing message",this,"INVALID_RESPONSE");let c=l.content??"";c&&(yield{role:"assistant",content:c}),l.tool_calls&&l.tool_calls.length>0&&(yield{role:"assistant",content:"",toolCalls:l.tool_calls.map(u=>u.type==="function"?{id:u.id,type:"function",function:{name:u.function.name,arguments:u.function.arguments}}:{id:u.id,type:"function",function:{name:u.custom.name,arguments:u.custom.input}})}),a.usage&&(yield{role:"assistant",content:"",usage:{promptTokens:a.usage.prompt_tokens,completionTokens:a.usage.completion_tokens}})}async listModels(){try{return(await(await this.getClient()).models.list()).data.map(o=>({id:o.id,displayName:o.id}))}catch(e){return this.logger?.error("Failed to list models",e),[{id:this.model,displayName:this.model}]}}wrapError(e){if(e instanceof Fe)return e;if(e instanceof $L){let n=e,o=QE(n,{model:this.model,apiBase:this.apiBase}),r=this.extractGatewayErrorDetail(n);if(this.logger?.debug("[OpenAICompatibleProvider] APIError detail extracted",{status:n.status,openaiCode:typeof n.code=="number"?String(n.code):n.code,gatewayCode:r.code,gatewayType:r.type,gatewayMessage:r.message}),(r.code??"").toLowerCase()==="jwt_blacklisted")return this.logger?.debug("[OpenAICompatibleProvider] Mapping jwt_blacklisted -> AUTH_LOGOUT_REQUIRED",{status:n.status,message:r.message||o}),new Fe(r.message||o,this,"AUTH_LOGOUT_REQUIRED",n.status);let i=r.code??(typeof n.code=="number"?String(n.code):n.code);return new Fe(o,this,i,n.status)}if(e instanceof Error){if(e.name==="AbortError")throw e;let n=XE(e);if(n)return new Fe(n,this,void 0,void 0);let o=e.message.toLowerCase();return o.includes("terminated")||o.includes("fetch failed")||o.includes("network")?new Fe(e.message,this,"NETWORK_TERMINATED"):new Fe(e.message,this,"UNKNOWN_ERROR")}return new Fe("Unknown error",this,"UNKNOWN_ERROR")}formatApiErrorMessage(e){let n=this.extractGatewayErrorDetail(e),o=n.message||e.message||"Unknown API error",r=this.apiBase||"default",i=[n.code,n.type].filter(a=>typeof a=="string"&&a.length>0),s=i.length>0?` [${i.join(", ")}]`:"";return e.status===400&&o.toLowerCase().includes("model")?`${o}${s} (model: ${this.model}, apiBase: ${r})`:e.status===401?`Authentication failed: ${o}${s}`:!n.message&&e.status===403&&o.toLowerCase().includes("invalid request source")?`\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u6CE8\u610F\u8EAB\u4EFD\u72B6\u6001\u53CA\u53D1\u9001\u6E90\u3002${s}`:e.status===429?`Rate limit exceeded: ${o}${s}`:`${o}${s}`}extractGatewayErrorDetail(e){let n=[e.body,this.pickObjectProperty(e.response,"body"),e.error,this.pickObjectProperty(e.response,"error"),this.tryParseJson(e.message)];for(let o of n){let r=this.parseGatewayErrorCandidate(o);if(r.message||r.code||r.type)return r}return{}}parseGatewayErrorCandidate(e){if(!e)return{};if(typeof e=="string"){let l=this.tryParseJson(e);return l?this.parseGatewayErrorCandidate(l):{}}if(typeof e!="object")return{};let n=e,o=this.pickObjectProperty(n,"error"),r=o&&typeof o=="object"?o:n,i=this.pickString(r.type),s=this.pickString(r.code),a=this.pickString(r.message);return{type:i,code:s,message:a}}tryParseJson(e){if(typeof e!="string")return;let n=e.trim();if(n.length===0)return;if(n.startsWith("{")&&n.endsWith("}"))try{return JSON.parse(n)}catch{}let o=n.indexOf("{"),r=n.lastIndexOf("}");if(o===-1||r===-1||r<=o)return;let i=n.slice(o,r+1);try{return JSON.parse(i)}catch{return}}pickObjectProperty(e,n){if(!(!e||typeof e!="object"))return e[n]}pickString(e){return typeof e=="string"&&e.length>0?e:void 0}requiresApiKey(){return!0}supportsImages(){return this.capabilities?.supportsImages??this.detectImageSupport()}supportsTools(){return this.capabilities?.supportsTools??!0}supportsStreaming(){return!0}detectImageSupport(){let e=this.model.toLowerCase();return e.includes("vision")||e.includes("gpt-4o")||e.includes("gpt-4-turbo")||e.includes("claude-3")||e.includes("gemini")}};var GG="https://api.openai.com/v1",AS={"gpt-4o":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0},"gpt-4o-mini":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0},"gpt-4-turbo":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0},"gpt-4-vision-preview":{supportsImages:!0,supportsTools:!1,supportsStreaming:!0},"gpt-4":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0},"gpt-3.5-turbo":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0},"o1-preview":{supportsImages:!1,supportsTools:!1,supportsStreaming:!0,supportsReasoning:!0},"o1-mini":{supportsImages:!1,supportsTools:!1,supportsStreaming:!0,supportsReasoning:!0},"o3-mini":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0}};function ZG(t){if(t in AS)return AS[t];for(let[e,n]of Object.entries(AS))if(t.startsWith(e))return n;return{supportsImages:!1,supportsTools:!0,supportsStreaming:!0}}function FL(t){let e=t.capabilities||ZG(t.model);return new Yr({...t,apiBase:t.apiBase||GG,capabilities:e})}typeof global<"u"&&(global.PANDA_CONFIG={environment:"development",buildTarget:"vscode",version:"0.9.6",vscodeIntegration:!0,authBaseUrl:"https://192.168.63.230:10443",tlsInsecure:!1,logging:{internal:{enabled:!0,minLevel:"debug",outputToConsole:!0,remote:{enabled:!1,endpoint:"",minLevel:"error",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4}},user:{enabled:!0,minLevel:"info",remote:{enabled:!1,endpoint:"",minLevel:"warn",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4},enabledCategories:["CORE","LLM","TOOLS","USER","CHAT","SYSTEM","ERROR"]}}});typeof window<"u"&&(window.PANDA_CONFIG={environment:"development",buildTarget:"vscode",version:"0.9.6",vscodeIntegration:!0,authBaseUrl:"https://192.168.63.230:10443",tlsInsecure:!1,logging:{internal:{enabled:!0,minLevel:"debug",outputToConsole:!0,remote:{enabled:!1,endpoint:"",minLevel:"error",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4}},user:{enabled:!0,minLevel:"info",remote:{enabled:!1,endpoint:"",minLevel:"warn",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4},enabledCategories:["CORE","LLM","TOOLS","USER","CHAT","SYSTEM","ERROR"]}}});var Qr={environment:"development",buildTarget:"vscode",version:"0.9.6",vscodeIntegration:!0,authBaseUrl:"https://192.168.63.230:10443",tlsInsecure:!1,logging:{internal:{enabled:!0,minLevel:"debug",outputToConsole:!0,remote:{enabled:!1,endpoint:"",minLevel:"error",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4}},user:{enabled:!0,minLevel:"info",remote:{enabled:!1,endpoint:"",minLevel:"warn",batchSize:50,flushInterval:5e3,enableCompression:!0,timeout:1e4},enabledCategories:["CORE","LLM","TOOLS","USER","CHAT","SYSTEM","ERROR"]}}};var JG="192.168.63.230",YG="192.168.63.231",QG=`-----BEGIN CERTIFICATE-----
1929
1929
  MIIDEzCCAfugAwIBAgIUCOzOCvhw35AJJ6oPOOL6Ab5hWoEwDQYJKoZIhvcNAQEL
1930
1930
  BQAwGTEXMBUGA1UEAwwOMTkyLjE2OC42My4yMzAwHhcNMjYwNDI0MDIwODI4WhcN
1931
1931
  MzYwNDIxMDIwODI4WjAZMRcwFQYDVQQDDA4xOTIuMTY4LjYzLjIzMDCCASIwDQYJ
@@ -1943,7 +1943,7 @@ i13eUTNcYT1/lTaSHuj1cxmfX7OSa/TOtZXZ3DEvV5odGgwy4/h8HI4Z7JJd8pTW
1943
1943
  3LPMKv8xJXheUYSPMApiqsFN/COmTKYPHUCJqYalyiogbZeTafCCe/sEV3Pth7i1
1944
1944
  w1TVPWSJtKkAM8Kp/oQV8mnNqLDojUH9xY7ymnq7mcp14zCyBM0uhtO0Eq7uvil8
1945
1945
  x8f80BmLS4GFT+0LpwFwe8KpWOT8Taw=
1946
- -----END CERTIFICATE-----`,YG=`-----BEGIN CERTIFICATE-----
1946
+ -----END CERTIFICATE-----`,XG=`-----BEGIN CERTIFICATE-----
1947
1947
  MIIDEzCCAfugAwIBAgIUbgb7QI2ysrjKyytdEHkdh+wWBwswDQYJKoZIhvcNAQEL
1948
1948
  BQAwGTEXMBUGA1UEAwwOMTkyLjE2OC42My4yMzEwHhcNMjYwNDA3MDE1MDM2WhcN
1949
1949
  MzYwNDA0MDE1MDM2WjAZMRcwFQYDVQQDDA4xOTIuMTY4LjYzLjIzMTCCASIwDQYJ
@@ -1961,57 +1961,57 @@ dt6I9+Oxn+00tfP+sDTiSppiGiL4i0ogLhp/qYt5DG/JrC5EVhN6eCmprx8HthlU
1961
1961
  U/0RQnfOp9d/Ea80AMAWBDALawCp3L+wcmPMkuGoqxoAfoFSM8O957AqHVXDqk3E
1962
1962
  X5MUpgsazXZJHI+umk1pri20puvDL4mZfISk5C3McG1jiJxPtxhxR+XB6AWc1KOE
1963
1963
  rXNKmLMvjajd0TnP+TMVN8fUnC/2NbQ=
1964
- -----END CERTIFICATE-----`;function QG(t){try{switch(new URL(t).hostname){case GG:return JG;case ZG:return YG;default:return}}catch{return}}function Pl(t){let e=QG(t);if(e)return{rejectUnauthorized:!0,ca:e,checkServerIdentity:()=>{}}}import{createHmac as UL,randomBytes as XG}from"node:crypto";import{Agent as BL,fetch as jL}from"undici";function eZ(t){try{let e=t.split(".");if(e.length<2)return;let n=Buffer.from(e[1],"base64url").toString("utf8"),r=JSON.parse(n).email;return typeof r=="string"&&r.length>0?r:void 0}catch{return}}function tZ(t,e){return{"AH-Trace-Id":t,"AH-Trace-End":e?"true":"false"}}var nZ="v1",rZ="panda-signing-key#@142";function zL(t){return t.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function oZ(t,e,n){let o=Math.floor(Date.now()/1e3).toString(),r=zL(XG(16)),i=`${o}
1964
+ -----END CERTIFICATE-----`;function eZ(t){try{switch(new URL(t).hostname){case JG:return QG;case YG:return XG;default:return}}catch{return}}function Pl(t){let e=eZ(t);if(e)return{rejectUnauthorized:!0,ca:e,checkServerIdentity:()=>{}}}import{createHmac as UL,randomBytes as tZ}from"node:crypto";import{Agent as BL,fetch as jL}from"undici";function nZ(t){try{let e=t.split(".");if(e.length<2)return;let n=Buffer.from(e[1],"base64url").toString("utf8"),r=JSON.parse(n).email;return typeof r=="string"&&r.length>0?r:void 0}catch{return}}function rZ(t,e){return{"AH-Trace-Id":t,"AH-Trace-End":e?"true":"false"}}var oZ="v1",iZ="panda-signing-key#@142";function zL(t){return t.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function sZ(t,e,n){let o=Math.floor(Date.now()/1e3).toString(),r=zL(tZ(16)),i=`${o}
1965
1965
  ${r}
1966
- ${n}`,s=UL("sha256",t).update(rZ,"utf8").digest(),a=zL(UL("sha256",s).update(i,"utf8").digest());return{"X-Panda-Sid":e,"X-Panda-Timestamp":o,"X-Panda-Nonce":r,"X-Panda-Sign-Ver":nZ,"X-Panda-Sign":a}}var _h=class extends Yr{static providerName="pandaGateway";_authToken;_authSigningKey;_authGatewaySessionId;_authEmail;insecureTlsAgent;pinnedTlsAgent;setAuthToken(e){this._authToken=e,this._authEmail=eZ(e),this.client=void 0}setAuthSigningToken(e){this._authSigningKey=e}setAuthGatewaySessionId(e){this._authGatewaySessionId=e}getOpenAIClientBearerToken(){return this._authToken??this.apiKey??"dummy-key"}mergeOpenAIClientDefaultHeaders(){let e={...super.mergeOpenAIClientDefaultHeaders()};return this._authToken&&this.apiKey&&!e["X-API-Key"]&&(e["X-API-Key"]=this.apiKey),e["X-Source"]||(e["X-Source"]="pandacode"),this._authEmail&&!e["X-User-Email"]&&(e["X-User-Email"]=this._authEmail),e}getGatewaySourceHeader(){let e=this.defaultHeaders?.["X-Source"];return e&&e.trim().length>0?e:"pandacode"}shouldUseInsecureTlsForGateway(){return Qr.tlsInsecure===!0&&(this.apiBase??"").startsWith("https://")}getOpenAIClientExtraOptions(){if(this.shouldUseInsecureTlsForGateway())return this.insecureTlsAgent||(this.insecureTlsAgent=new BL({connect:{rejectUnauthorized:!1}})),{fetch:(async(r,i)=>await jL(r,{...i??{},dispatcher:this.insecureTlsAgent}))};let e=Pl(this.apiBase??"");return e?(this.pinnedTlsAgent||(this.pinnedTlsAgent=new BL({connect:e})),{fetch:(async(o,r)=>await jL(o,{...r??{},dispatcher:this.pinnedTlsAgent}))}):{}}async getClient(){return this.client,super.getClient()}buildStreamRequestExtra(e){let n=this.getGatewaySourceHeader(),o=this._authSigningKey&&this._authGatewaySessionId?oZ(this._authSigningKey,this._authGatewaySessionId,n):{};return e.gatewayTraceId!==void 0&&e.gatewayTraceId!==""?(Object.assign(o,tZ(e.gatewayTraceId,e.gatewayTraceEnd??!1)),{headers:o}):Object.keys(o).length>0?{headers:o}:{}}requiresApiKey(){return!0}};function WL(t){if(!t.apiKey)throw new Fe("Panda gateway requires API key (X-API-Key)",{providerName:_h.providerName,model:t.model},"MISSING_API_KEY");return new _h({...t})}var iZ={"deepseek-chat":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsFim:!1},"deepseek-coder":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsFim:!0},"deepseek-reasoner":{supportsImages:!1,supportsTools:!1,supportsStreaming:!0,supportsReasoning:!0}},MS=class extends Yr{static providerName="deepseek";constructor(e){if(!e.apiKey)throw new Fe("DeepSeek API key is required",{providerName:"deepseek",model:e.model},"MISSING_API_KEY");let n=e.capabilities||iZ[e.model]||{supportsTools:!0,supportsStreaming:!0};super({...e,apiBase:e.apiBase,capabilities:n})}requiresApiKey(){return!0}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}supportsFim(){return this.model.includes("coder")}buildRequestParams(e,n,o){let r={model:this.model,messages:e,stream:o,temperature:this.normalizeTemperature(n.temperature),top_p:n.topP,frequency_penalty:n.frequencyPenalty,presence_penalty:n.presencePenalty,max_tokens:n.maxOutputTokens??this.completionOptions.maxOutputTokens,stop:n.stop,seed:n.seed},i=this.convertTools(n.tools);return i&&(r.tools=i,r.tool_choice=this.convertToolChoice(n.toolChoice)),o&&this.streamUsage&&(r.stream_options={include_usage:!0}),this.supportsReasoning()&&(r.reasoning_effort="max"),r}extractReasoningAndContent(e){if("reasoning_content"in e&&e.reasoning_content){let n={reasoning:e.reasoning_content};return e.content&&(n.content=e.content),n}return e.content?{content:e.content}:null}};function KL(t){return new MS(t)}var sZ={"kimi-k2.5":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0}},DS=class extends Yr{static providerName="moonshot";constructor(e){if(!e.apiKey)throw new Fe("Moonshot API key is required",{providerName:"moonshot",model:e.model},"MISSING_API_KEY");let n=e.capabilities||sZ[e.model]||{supportsTools:!0,supportsStreaming:!0};super({...e,apiBase:e.apiBase||"https://api.moonshot.cn/v1",capabilities:n})}requiresApiKey(){return!0}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}normalizeTemperature(e){let n=e??1;return n!==1&&this.logger?.debug("[Moonshot] Overriding temperature to 1 for Kimi K2.5",{model:this.model,requestedTemperature:n}),1}buildRequestParams(e,n,o){let r={model:this.model,messages:e,stream:o,temperature:this.normalizeTemperature(n.temperature),top_p:n.topP,frequency_penalty:n.frequencyPenalty,presence_penalty:n.presencePenalty,max_tokens:n.maxOutputTokens??4096,stop:n.stop,seed:n.seed},i=this.convertTools(n.tools);return i&&(r.tools=i,r.tool_choice=this.convertToolChoice(n.toolChoice)),o&&this.streamUsage&&(r.stream_options={include_usage:!0}),this.logger?.debug("[Moonshot] buildRequestParams",{model:this.model,messageCount:e.length,max_tokens:r.max_tokens,stream:o}),r}extractReasoningAndContent(e){if("reasoning_content"in e&&e.reasoning_content){let n={reasoning:e.reasoning_content};return e.content&&(n.content=e.content),n}return e.content?{content:e.content}:null}};function HL(t){return new DS(t)}import uZ from"@anthropic-ai/sdk";function Ms(t){return typeof t=="string"?t:t.filter(e=>e.type==="text").map(e=>e.text).join("")}var OS="</thinking_mode>";function VL(){return{pendingSuffix:"",pastEndTag:!1}}function aZ(t,e){for(let n=Math.min(t.length,e.length-1);n>=1;n--)if(t.endsWith(e.slice(0,n)))return n;return 0}function qL(t,e){let n=[],o=e.pendingSuffix+t;if(e.pendingSuffix="",e.pastEndTag)return o&&n.push({assistant:o}),n;let r=o.indexOf(OS);if(r!==-1){let s=o.slice(0,r);s&&n.push({thinking:s}),e.pastEndTag=!0;let a=o.slice(r+OS.length);return a&&n.push({assistant:a}),n}let i=aZ(o,OS);if(i>0){let s=o.slice(0,o.length-i);s&&n.push({thinking:s}),e.pendingSuffix=o.slice(o.length-i)}else o&&n.push({thinking:o});return n}function LS(t){if(t.pastEndTag)return;let e=t.pendingSuffix||void 0;return t.pendingSuffix="",e}function lZ(t){t.pendingSuffix="",t.pastEndTag=!1}function GL(t){let e=LS(t);return lZ(t),e}var NS={"claude-3-5-sonnet-20241022":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-5-haiku-20241022":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-opus-20240229":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-sonnet-20240229":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-haiku-20240307":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-sonnet-4-20250514":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-opus-4-20250514":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-sonnet-4-5-20250929":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-opus-4-1-20250805":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-3-7-sonnet-20250219":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-haiku-4-5-20251001":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0}};function dZ(t){if(t in NS)return NS[t];for(let[e,n]of Object.entries(NS))if(t.startsWith(e))return n;return{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1}}function pZ(t){return t.includes("sonnet-4-5")||t.includes("claude-sonnet-4-5")}function fZ(t){let e=t.match(/^data:([^;]+);base64,(.+)$/);return e?e[2]:null}function mZ(t){let e=t.match(/^data:([^;]+);base64/);if(e){let n=e[1].toLowerCase();if(n==="image/png"||n==="image/jpeg"||n==="image/gif"||n==="image/webp")return n}return"image/png"}var $S=class extends ni{static providerName="anthropic";client;_authToken;_authEmail;reasoningBudgetTokens;enable1mContext;constructor(e){if(super(e),!this.apiKey)throw new Fe("Anthropic API key is required",this,"MISSING_API_KEY");this.reasoningBudgetTokens=e.reasoningBudgetTokens??2048,this.enable1mContext=e.enable1mContext??pZ(this.model),e.capabilities||(this.capabilities=dZ(this.model));let n=this.apiBase||"https://api.anthropic.com/v1";this.apiBase=n}async getClient(){return this.client||(this.client=new uZ({apiKey:this.apiKey,baseURL:this.apiBase||"https://api.anthropic.com/v1",timeout:this.requestOptions?.timeout||18e4,maxRetries:0})),this.client}setAuthToken(e){this._authToken=e,this._authEmail=this.extractEmailFromJwt(e)}requiresApiKey(){return!0}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}convertTool(e){return{name:e.function.name,description:e.function.description,input_schema:e.function.parameters??{type:"object",properties:{}}}}convertMessageContentToBlocks(e){let n=[];if(typeof e=="string")e&&n.push({type:"text",text:e});else for(let o of e)if(o.type==="text")o.text&&n.push({type:"text",text:o.text});else if(o.type==="imageUrl"){let r=fZ(o.imageUrl.url);r?n.push({type:"image",source:{type:"base64",media_type:mZ(o.imageUrl.url),data:r}}):console.warn("Anthropic: image URL is not a data URL, skipping")}return n}convertToolCallsToBlocks(e){if(!e.id||!e.function?.name)return;let n={};try{let o=JSON.parse(e.function.arguments||"{}");typeof o=="object"&&o!==null&&!Array.isArray(o)&&(n=o)}catch{n={}}return{type:"tool_use",id:e.id,name:e.function.name,input:n}}getContentBlocksFromChatMessage(e){switch(e.role){case"tool":return[{type:"tool_result",tool_use_id:e.toolCallId,content:typeof e.content=="string"?e.content:Ms(e.content)}];case"user":return this.convertMessageContentToBlocks(e.content);case"thinking":if(e.redactedThinking)return[{type:"redacted_thinking",data:e.redactedThinking}];if(e.signature){let o=typeof e.content=="string"?e.content:Ms(e.content);if(o)return[{type:"thinking",thinking:o,signature:e.signature}]}return[];case"assistant":let n=this.convertMessageContentToBlocks(e.content);if("toolCalls"in e&&e.toolCalls)for(let o of e.toolCalls){let r=this.convertToolCallsToBlocks(o);r&&n.push(r)}return n;default:return[]}}addCacheControlToLastBlock(e){if(typeof e.content=="string")return{...e,content:[{type:"text",text:e.content,cache_control:{type:"ephemeral"}}]};let n=[...e.content],o=n.length-1;if(o<0)return e;let r=n[o];return r.type==="thinking"||r.type==="redacted_thinking"?e:(n[o]={...r,cache_control:{type:"ephemeral"}},{...e,content:n})}convertMessages(e,n=!1){let o=e.filter(l=>l.role!=="system"),r=[],i,s=[],a=()=>{i&&s.length>0&&(r.push({role:i,content:s}),s=[])};for(let l of o){let c=l.role==="user"||l.role==="tool"?"user":"assistant";i!==c&&(a(),i=c),s.push(...this.getContentBlocksFromChatMessage(l))}if(a(),n){let l=[];for(let u=0;u<r.length;u++)r[u].role==="user"&&l.push(u);let c=l.slice(-2);for(let u of c)r[u]=this.addCacheControlToLastBlock(r[u])}return r}getHeaders(e=!1,n){let o={"Content-Type":"application/json","anthropic-version":"2023-06-01","x-api-key":this.apiKey};return e&&(o["anthropic-beta"]="prompt-caching-2024-07-31"),this.enable1mContext&&(o["anthropic-beta"]=o["anthropic-beta"]?`${o["anthropic-beta"]},context-1m-2025-08-07`:"context-1m-2025-08-07"),o["X-Source"]=o["X-Source"]||"pandacode",this._authEmail&&!o["X-User-Email"]&&(o["X-User-Email"]=this._authEmail),n?.gatewayTraceId&&(o["AH-Trace-Id"]=n.gatewayTraceId,o["AH-Trace-End"]=n.gatewayTraceEnd?"true":"false"),this._authToken&&(o.Authorization=`Bearer ${this._authToken}`,this.apiKey&&!o["X-API-Key"]&&(o["X-API-Key"]=this.apiKey)),o}convertArgs(e){let n=this.supportsReasoning()&&(e.reasoningTokens!==void 0||this.reasoningBudgetTokens>0),o={model:this.model,max_tokens:e.maxOutputTokens??UE(this.model)??4096,temperature:n?void 0:e.temperature??0,top_p:e.topP,top_k:e.topK,stop_sequences:e.stop?.filter(r=>r.trim()!==""),stream:!0};return e.tools&&e.tools.length>0&&(o.tools=e.tools.map(r=>this.convertTool(r)),e.toolChoice?typeof e.toolChoice=="string"?e.toolChoice==="none"?o.tool_choice={type:"none"}:e.toolChoice==="auto"?o.tool_choice={type:"auto"}:e.toolChoice==="required"&&(o.tool_choice={type:"any"}):o.tool_choice={type:"tool",name:e.toolChoice.function.name}:n||(o.tool_choice={type:"any"})),n&&(o.thinking={type:"enabled",budget_tokens:e.reasoningTokens??this.reasoningBudgetTokens}),o}async*handleStreamResponse(e,n){let o,r,i="",s={promptTokens:0,completionTokens:0,promptTokensDetails:{cachedTokens:0,cacheWriteTokens:0}},a=VL();for await(let l of e){if(n?.aborted)break;switch(l.type){case"message_start":{let c=l;s.promptTokens=c.message.usage.input_tokens,s.promptTokensDetails.cachedTokens=c.message.usage.cache_read_input_tokens??void 0,s.promptTokensDetails.cacheWriteTokens=c.message.usage.cache_creation_input_tokens??void 0;break}case"message_delta":{let c=l;c.usage&&(s.completionTokens=c.usage.output_tokens);break}case"content_block_start":{let c=l;c.content_block.type==="tool_use"&&(o=c.content_block.id,r=c.content_block.name,i=""),c.content_block.type==="redacted_thinking"&&(yield{role:"thinking",content:"",redactedThinking:c.content_block.data});break}case"content_block_delta":{let c=l;switch(c.delta.type){case"text_delta":{let u=c.delta.text??"";u&&(yield{role:"assistant",content:u});break}case"thinking_delta":{let u=c.delta.thinking??"";if(!u)break;let d=qL(u,a);for(let p of d)p.thinking&&(yield{role:"thinking",content:p.thinking}),p.assistant&&(yield{role:"assistant",content:p.assistant});break}case"signature_delta":yield{role:"thinking",content:"",signature:c.delta.signature};break;case"input_json_delta":if(o&&r){i+=c.delta.partial_json||"";let u;try{let d=JSON.parse(i);typeof d=="object"&&d!==null&&!Array.isArray(d)&&(u=d)}catch{}yield{role:"assistant",content:"",toolCalls:[{id:o,type:"function",function:{name:r,arguments:c.delta.partial_json,...u?{args:u}:{}}}]}}break}break}case"content_block_stop":{let c=GL(a);c&&(yield{role:"thinking",content:c}),o=void 0,r=void 0,i="";break}case"message_stop":{let c=LS(a);c&&(yield{role:"thinking",content:c}),yield{role:"assistant",content:"",usage:s};break}}}}async*_streamChat(e,n,o){let r=e.filter(g=>g.role==="system"),i=r.length>0?typeof r[0].content=="string"?r[0].content:Ms(r[0].content):void 0,s=!!(this.cacheBehavior?.cacheSystemMessage&&i),a=!!(this.cacheBehavior?.cacheConversation||o.cacheBehavior?.cacheConversation),l=this.convertMessages(e,a),c={...this.convertArgs(o),messages:l,system:s&&i?[{type:"text",text:i,cache_control:{type:"ephemeral"}}]:i},u={},d=this.getHeaders(s||a,{gatewayTraceId:o.gatewayTraceId,gatewayTraceEnd:o.gatewayTraceEnd??!1}),p={};for(let[g,h]of Object.entries(d))g==="x-api-key"||g==="anthropic-version"||g==="Content-Type"||(p[g]=h);Object.keys(p).length>0&&(u.headers=p);let f=await this.getClient(),m=await wc(async()=>{try{return await f.messages.create(c,u)}catch(g){let h=g.message||`Anthropic API error: ${g.status||"unknown"}`;throw new Fe(h,this,g.status===401?"UNAUTHORIZED":g.status===429?"RATE_LIMIT":g.status===500?"SERVER_ERROR":"API_ERROR",g.status)}},{maxRetries:3,context:{modelId:this.model,querySource:"chat_main"},decide:xa,onRetry:(g,h,y)=>{this.logger?.debug(`Retry attempt ${h} after ${y}ms`,{error:g})}});if(!("on"in m)&&!(Symbol.asyncIterator in m))throw new Fe("Expected streaming response but got non-streaming response",this,"INVALID_RESPONSE");yield*this.handleStreamResponse(m,n)}extractEmailFromJwt(e){try{let n=e.split(".");if(n.length<2)return;let o=Buffer.from(n[1],"base64url").toString("utf8"),i=JSON.parse(o).email;return typeof i=="string"&&i.length>0?i:void 0}catch{return}}};function ZL(t){return new $S(t)}import{Ollama as xZ}from"ollama";var FS="http://localhost:11434";function JL(t){let e=(t??FS).trim();return e=e.replace(/\/v1\/?$/i,""),e=e.replace(/\/$/,""),e||FS}function gZ(t){let e=t.id;if(typeof e=="string"&&e.trim().length>0)return e}function hZ(){try{if(typeof globalThis<"u"&&"crypto"in globalThis&&typeof globalThis.crypto.randomUUID=="function")return`ollama-${globalThis.crypto.randomUUID()}`}catch{}return`ollama-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function yZ(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return!1;try{let n=JSON.parse(e);return typeof n=="object"&&n!==null&&!Array.isArray(n)}catch{return!1}}function YL(t){if(t?.length)return t.map(e=>({type:"function",function:{name:e.function.name,description:e.function.description,parameters:e.function.parameters}}))}function vZ(t){if(typeof t.content=="string")return{role:"user",content:t.content};let e=[],n=[];for(let r of t.content)if(r.type==="text")e.push(r.text);else if(r.type==="imageUrl"){let i=r.imageUrl.url,s="data:",a=i.indexOf("base64,");if(i.startsWith(s)&&a!==-1){let l=i.slice(a+7);l&&n.push(l)}}let o={role:"user",content:e.join(`
1967
- `)};return n.length>0&&(o.images=n),o}function bZ(t){let e=Ms(t.content),n=t.toolCalls;return n?.length?{role:"assistant",content:e||" ",tool_calls:n.filter(o=>o.function?.name).map(o=>{let r={},i=o.function?.arguments;if(typeof i=="string"&&i.trim())try{let s=JSON.parse(i);typeof s=="object"&&s!==null&&!Array.isArray(s)&&(r=s)}catch{}return{function:{name:o.function.name,arguments:r}}})}:{role:"assistant",content:e}}function QL(t){let e=[];for(let n of t)switch(n.role){case"thinking":break;case"system":e.push({role:"system",content:typeof n.content=="string"?n.content:Ms(n.content)});break;case"user":e.push(vZ(n));break;case"assistant":e.push(bZ(n));break;case"tool":e.push({role:"user",content:n.content});break;default:break}return e}function XL(t,e){e?.length&&e.forEach((n,o)=>{let r=t.get(o),i=n.function?.name??r?.function?.name??"",s=r?.id??gZ(n)??hZ(),a=n.function?.arguments,l=r?.function?.arguments??"";a==null||(typeof a=="string"?yZ(a)?l=a:l=l+a:typeof a=="object"&&(l=JSON.stringify(a))),t.set(o,{id:s,type:"function",function:{name:i,arguments:l}})})}function e5(t){return[...t.entries()].sort((e,n)=>e[0]-n[0]).map(([,e])=>e)}var TZ=32768;var Sh={tags:"/api/tags",show:"/api/show",pull:"/api/pull",push:"/api/push",delete:"/api/delete"},US={llama3:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.1":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.2":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.2-vision":{supportsImages:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.3":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"qwen2.5":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"qwen2.5-coder":{supportsFim:!0,supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},qwen2:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},codellama:{supportsFim:!0,supportsStreaming:!0,supportsCompletions:!0},mistral:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},mixtral:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},gemma:{supportsStreaming:!0,supportsCompletions:!0},gemma2:{supportsStreaming:!0,supportsCompletions:!0},phi3:{supportsStreaming:!0,supportsCompletions:!0},"phi3.5":{supportsStreaming:!0,supportsCompletions:!0},"deepseek-coder":{supportsFim:!0,supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"deepseek-v2":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"deepseek-r1":{supportsReasoning:!0,supportsStreaming:!0,supportsCompletions:!0},codestral:{supportsFim:!0,supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"command-r":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},llava:{supportsImages:!0,supportsStreaming:!0,supportsCompletions:!0},moondream:{supportsImages:!0,supportsStreaming:!0,supportsCompletions:!0},"nomic-embed-text":{supportsEmbeddings:!0}},BS=class t extends ni{static providerName="ollama";nativeApiBase;installingModels=new Set;constructor(e){let n=JL(e.apiBase),o=e.capabilities??t.inferCapabilities(e.model);super({...e,apiBase:n,apiKey:e.apiKey,capabilities:o}),this.nativeApiBase=n}static inferCapabilities(e){let n=e.toLowerCase().split(":")[0];if(US[n])return US[n];for(let[o,r]of Object.entries(US))if(n.includes(o)||o.includes(n))return r;return{supportsStreaming:!0,supportsCompletions:!0,supportsTools:!1,supportsImages:!1,supportsFim:!1}}requiresApiKey(){return!1}supportsImages(){if(this.capabilities?.supportsImages!==void 0)return this.capabilities.supportsImages;let e=this.model.toLowerCase();return e.includes("vision")||e.includes("llava")||e.includes("moondream")||e.includes("gemma2")&&e.includes("27b")}supportsTools(){let e=this.model.toLowerCase();return e.includes("llama3.1")||e.includes("llama3.2")||e.includes("llama3.3")||e.includes("qwen2.5")||e.includes("qwen2")||e.includes("mistral")||e.includes("mixtral")||e.includes("command-r")?!0:this.capabilities?.supportsTools??!1}supportsFim(){let e=this.model.toLowerCase();return e.includes("coder")||e.includes("codellama")||e.includes("codestral")||(this.capabilities?.supportsFim??!1)}createOllamaClient(){let e={};return this.apiKey&&(e.Authorization=`Bearer ${this.apiKey}`),new xZ({host:this.nativeApiBase,...Object.keys(e).length>0?{headers:e}:{}})}buildOllamaOptions(e){let o={num_ctx:this.contextLength>0?this.contextLength:TZ};return e.temperature!==void 0&&(o.temperature=e.temperature),e.topP!==void 0&&(o.top_p=e.topP),e.maxOutputTokens!==void 0&&(o.num_predict=e.maxOutputTokens),e.frequencyPenalty!==void 0&&(o.frequency_penalty=e.frequencyPenalty),e.presencePenalty!==void 0&&(o.presence_penalty=e.presencePenalty),e.seed!==void 0&&(o.seed=e.seed),e.stop?.length&&(o.stop=e.stop),o}async*_streamChat(e,n,o){let r=this.createOllamaClient(),i=QL(e),s=YL(o.tools),a=()=>{r.abort()};n.addEventListener("abort",a,{once:!0});let l=new Map,c=!1,u=0,d;try{if(n.aborted)return;let p=await r.chat({model:this.model,messages:i,stream:!0,tools:s,options:this.buildOllamaOptions(o)});for await(let f of p){if(u++,n.aborted)break;if(f&&typeof f=="object"&&"error"in f&&f.error)throw new Error(String(f.error));let m=f,g=m.message;g&&(typeof g.thinking=="string"&&g.thinking.length>0&&(c=!0,yield{role:"thinking",content:g.thinking}),typeof g.content=="string"&&g.content.length>0&&(c=!0,yield{role:"assistant",content:g.content}),g.tool_calls?.length&&(XL(l,g.tool_calls),c=!0,console.log("[Panda][OllamaProvider] tool_calls chunk",{chunkIndex:u,done:m.done,raw:g.tool_calls,mergedArgumentsByIndex:Object.fromEntries([...l.entries()].map(([h,y])=>[h,y.function?.arguments??""]))})),(m.prompt_eval_count!==void 0||m.eval_count!==void 0)&&(d={promptTokens:m.prompt_eval_count??0,completionTokens:m.eval_count??0}))}if(l.size>0){let f=e5(l);console.log("[Panda][OllamaProvider] yield final toolCalls (single shot)",{deltas:f.map(m=>({id:m.id,name:m.function?.name,arguments:m.function?.arguments}))}),yield{role:"assistant",content:"",toolCalls:f}}if(d&&(yield{role:"assistant",content:"",usage:d}),!c&&l.size===0)throw new Fe(`Stream completed without any content. Received ${u} chunk(s).`,this,"NO_CONTENT")}catch(p){throw this.wrapOllamaError(p)}finally{n.removeEventListener("abort",a)}}wrapOllamaError(e){if(e instanceof Fe)return e;if(e instanceof Error){if(e.name==="AbortError")throw e;let n=e.status_code,o=this.formatOllamaErrorMessage(e.message,n);return new Fe(o,this,"OLLAMA_ERROR",n)}return new Fe("Unknown Ollama error",this,"UNKNOWN_ERROR")}formatOllamaErrorMessage(e,n){return n===404?`Model not found: ${this.model}. Make sure the model is installed in Ollama (try: ollama pull ${this.model})`:n===503?"Ollama service unavailable. Make sure Ollama is running (try: ollama serve)":e}async listModels(){try{let e=await this.fetchNativeApi(Sh.tags);return!e.models||!Array.isArray(e.models)?(this.logger?.debug("Ollama returned unexpected response format for listModels"),[{id:this.model,displayName:this.model}]):e.models.map(n=>({id:n.name,displayName:n.name}))}catch(e){return this.logger?.error("Failed to list Ollama models",e),[{id:this.model,displayName:this.model}]}}async getOllamaModelInfo(e){try{return await this.fetchNativeApi(Sh.show,{name:e})}catch(n){return this.logger?.error(`Failed to get Ollama model info for ${e}`,n),null}}async checkOllamaStatus(){try{let e=await fetch(`${this.nativeApiBase}/api/version`,{method:"GET",signal:AbortSignal.timeout(5e3)});return e.ok?{running:!0,version:(await e.json()).version}:{running:!1,error:`Ollama returned status ${e.status}`}}catch(e){return{running:!1,error:e instanceof Error?e.message:String(e)}}}async installModel(e,n,o){if(this.installingModels.has(e))throw new Error(`Model ${e} is already being installed`);this.installingModels.add(e);try{let r=await fetch(`${this.nativeApiBase}${Sh.pull}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,stream:!0}),signal:n});if(!r.ok){let l=await r.text();throw new Error(`Failed to install model ${e}: ${l}`)}if(!r.body)throw new Error(`Response body is null for model ${e} installation`);let i=r.body.getReader(),s=new TextDecoder,a="";for(;;){let{done:l,value:c}=await i.read();if(l)break;a+=s.decode(c,{stream:!0});let u=a.split(`
1968
- `);a=u.pop()||"";for(let d of u)if(d.trim())try{let p=JSON.parse(d);if(o&&p.total&&p.completed&&o(p.status||`Installing ${e}`,p.completed,p.total),p.status==="success"){this.logger?.log(`Model ${e} installed successfully`);return}}catch{}}this.logger?.log(`Model ${e} installation stream ended`)}catch(r){throw r instanceof Error&&r.name==="AbortError"?(this.logger?.log(`Model ${e} installation cancelled`),r):new Error(`Failed to install model ${e}: ${r instanceof Error?r.message:String(r)}`)}finally{this.installingModels.delete(e)}}async isInstallingModel(e){return this.installingModels.has(e)}async deleteModel(e){try{let n=await fetch(`${this.nativeApiBase}${Sh.delete}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})});if(!n.ok){let o=await n.text();throw new Error(`Failed to delete model ${e}: ${o}`)}this.logger?.log(`Model ${e} deleted successfully`)}catch(n){throw new Error(`Failed to delete model ${e}: ${n instanceof Error?n.message:String(n)}`)}}async fetchNativeApi(e,n,o){let r=`${this.nativeApiBase}${e}`,i=o?.timeout??3e4,s=await fetch(r,{method:n?"POST":"GET",headers:n?{"Content-Type":"application/json"}:void 0,body:n?JSON.stringify(n):void 0,signal:AbortSignal.timeout(i)});if(!s.ok){let a=await s.text();throw new Error(`Ollama API error (${e}): ${a}`)}return s.json()}};function t5(t){return new BS(t)}function kh(t){return`Panda model "${t&&t.length>0?t:"(unknown)"}" missing API key. Please configure apiKeyRef or apiKeyEnv for this model before sending.`}var wZ=["ollama"];function _Z(t){return t.apiKey}function SZ(t){return!wZ.includes(t)}async function n5(t,e){let{provider:n,model:o,apiBase:r,organization:i,project:s,reasoningBudgetTokens:a,enable1mContext:l,contextLength:c,maxOutputTokens:u}=t;if(!n)throw new Error("LLM config must have a provider.");let d=_Z(t);if(n==="panda"&&!d)throw new Error(kh(o));if(SZ(n)&&!d)throw new Error(`LLM config for provider '${n}' must have an API key.`);switch(n){case"panda":return WL({model:o,apiKey:d,apiBase:r,organization:i,project:s,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"openai":return FL({model:o,apiKey:d,apiBase:r,organization:i,project:s,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"deepseek":return KL({model:o,apiKey:d,apiBase:r,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"moonshot":return HL({model:o,apiKey:d,apiBase:r,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"anthropic":return ZL({model:o,apiKey:d,apiBase:r,reasoningBudgetTokens:a,enable1mContext:l,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"ollama":return t5({model:o,apiBase:r||"http://localhost:11434",contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});default:throw new Error(`Unsupported LLM provider: ${n}`)}}var wt={AuthUser:"auth.user",AuthExpiresAt:"auth.expiresAt",DrawerTodo:"chat.drawerTodo",SkillsDisabledPaths:"skills.disabledPaths",ModelsDisabledIds:"models.disabledIds",ModelCatalog:"models.catalog",DefaultModelId:"models.defaultModelId",ModelCatalogVersion:"models.catalogVersion",ImportSetupCompleted:"import.setupCompleted",ImportCompleted:"import.completed"},Bt={AccessToken:"auth.accessToken",RefreshToken:"auth.refreshToken",GatewaySessionId:"auth.gatewaySessionId",GatewaySigningKey:"auth.gatewaySigningKey"};import*as r5 from"fs";import*as o5 from"os";import*as qu from"path";import{DatabaseSync as kZ}from"node:sqlite";import*as Ih from"fs";var jS=class{constructor(e){this.db=e}db;async exec(e){this.db.exec(e)}async run(e,n=[]){this.db.prepare(e).run(...n)}async get(e,n=[]){return this.db.prepare(e).get(...n)}async all(e,n=[]){return this.db.prepare(e).all(...n)??[]}async close(){this.db.close()}async transaction(e){this.db.exec("BEGIN TRANSACTION");try{let n=await e();return this.db.exec("COMMIT"),n}catch(n){try{this.db.exec("ROLLBACK")}catch{}throw n}}};async function Rl(t,e={}){e.fileMustExist&&await Ih.promises.access(t,Ih.constants.F_OK);let n=new kZ(t,{readOnly:e.readonly??!1,timeout:5e3});return new jS(n)}var IZ=["CREATE TABLE IF NOT EXISTS state_kv ("," key TEXT PRIMARY KEY,"," value TEXT NOT NULL,"," updated_at INTEGER NOT NULL",");"].join(`
1969
- `),CZ=["CREATE TABLE IF NOT EXISTS secret_kv ("," key TEXT PRIMARY KEY,"," encrypted_value TEXT NOT NULL,"," updated_at INTEGER NOT NULL",");"].join(`
1970
- `),Ri=class{dbPromise;dbPath;constructor(e){let n=e??process.env.PANDA_HOME??qu.join(o5.homedir(),".panda");this.dbPath=qu.join(n,"data","state.db"),this.dbPromise=this.open()}async open(){await r5.promises.mkdir(qu.dirname(this.dbPath),{recursive:!0});let e=await Rl(this.dbPath);return await e.exec(IZ),await e.exec(CZ),e}async run(e,n=[]){await(await this.dbPromise).run(e,n)}async get(e,n=[]){return await(await this.dbPromise).get(e,n)}async all(e,n=[]){return await(await this.dbPromise).all(e,n)}},Ai=class{constructor(e){this.db=e}db;_serviceBrand;async getString(e){return(await this.db.get("SELECT value FROM state_kv WHERE key = ?",[e]))?.value}async setString(e,n){await this.db.run("INSERT INTO state_kv(key, value, updated_at) VALUES (?, ?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at",[e,n,Date.now()])}async remove(e){await this.db.run("DELETE FROM state_kv WHERE key = ?",[e])}async list(e){return e&&e.length>0?(await this.db.all("SELECT key FROM state_kv WHERE key LIKE ? ORDER BY key ASC",[`${e}%`])).map(r=>r.key):(await this.db.all("SELECT key FROM state_kv ORDER BY key ASC")).map(o=>o.key)}};import*as Di from"crypto";import*as Ch from"fs";import*as Eh from"path";import*as i5 from"os";var Ds={V11:"v11",V12:"v12"};var Mi=class t{static SERVICE_NAME="Panda Safe Storage";static ACCOUNT_NAME="Panda";static SALT="saltysalt";static KEY_LENGTH=16;static IV_LENGTH=16;entry=null;key=null;initialized=!1;mode="none";pandaHome;logService;constructor(e={}){this.pandaHome=e.pandaHome??process.env.PANDA_HOME??i5.homedir()+"/.panda",this.logService=e.logService}async initialize(){if(this.initialized)return this.key!==null;if(process.env.PANDA_ENCRYPTION_KEY)return this.key=this.deriveKey(process.env.PANDA_ENCRYPTION_KEY),this.mode="env",this.initialized=!0,this.log("trace","[SharedEncryption] Using PANDA_ENCRYPTION_KEY env"),!0;try{if(this.entry=await this.loadKeyringEntry(),this.entry){let e=this.entry.getPassword();if(e)return this.key=this.deriveKey(e),this.mode="keyring",this.initialized=!0,this.log("trace","[SharedEncryption] Initialized with keyring key"),!0}}catch{this.entry=null}if(this.log("trace","[SharedEncryption] Keyring unavailable, trying file fallback"),this.key=await this.initializeFallback(),this.key)return this.initialized=!0,!0;try{let e=this.generatePassword();return this.entry?(this.entry.setPassword(e),this.mode="keyring",this.log("trace","[SharedEncryption] Created new keyring key")):(await this.saveFallbackKey(e),this.mode="file",this.log("trace","[SharedEncryption] Created new fallback key file")),this.key=this.deriveKey(e),this.initialized=!0,!0}catch(e){this.log("error","[SharedEncryption] Failed to create key",e)}return this.initialized=!0,this.log("error","[SharedEncryption] Initialization failed"),!1}async encrypt(e){if(!this.key)throw new Error("Encryption not initialized");let n=Buffer.alloc(t.IV_LENGTH," "),o=Di.createCipheriv("aes-128-cbc",this.key,n);o.setAutoPadding(!0);let r=o.update(e,"utf8","base64");return r+=o.final("base64"),Ds.V12+r}async decrypt(e){let n=e.slice(0,3),o=e.slice(3);if(n===Ds.V12){if(!this.key)throw new Error("Encryption not initialized");let r=Buffer.alloc(t.IV_LENGTH," "),i=Di.createDecipheriv("aes-128-cbc",this.key,r);i.setAutoPadding(!0);let s=i.update(o,"base64","utf8");return s+=i.final("utf8"),s}throw new Error(`Unknown encryption version: ${n}`)}static getVersion(e){return e.slice(0,3)}static isV12(e){return e.startsWith(Ds.V12)}isAvailable(){return this.key!==null}getMode(){return this.mode}getKeyFilePath(){return this.mode!=="file"?null:Eh.join(this.pandaHome,".secret")}async loadKeyringEntry(){try{let{Entry:e}=await import("@napi-rs/keyring");return new e(t.SERVICE_NAME,t.ACCOUNT_NAME)}catch{return this.log("trace","[SharedEncryption] @napi-rs/keyring unavailable; will try file/env fallback"),null}}deriveKey(e){return Di.scryptSync(e,t.SALT,t.KEY_LENGTH)}generatePassword(){return Di.randomBytes(16).toString("base64")}async initializeFallback(){let e=Eh.join(this.pandaHome,".secret");try{let n=await Ch.promises.readFile(e,"utf8");return this.mode="file",this.log("trace","[SharedEncryption] Using existing fallback key"),this.deriveKey(n.trim())}catch{return null}}async saveFallbackKey(e){let n=Eh.join(this.pandaHome,".secret");await Ch.promises.mkdir(this.pandaHome,{recursive:!0}),await Ch.promises.writeFile(n,e,{mode:384})}log(e,n,o){this.logService&&(e==="trace"?this.logService.trace(n):this.logService.error(n,o))}};var Al=class{constructor(e,n){this.db=e;this.encryption=new Mi({pandaHome:n})}db;_serviceBrand;encryption;initialized=!1;async ensureInitialized(){this.initialized||(await this.encryption.initialize(),this.initialized=!0)}async getSecret(e){await this.ensureInitialized();let n=await this.db.get("SELECT encrypted_value FROM secret_kv WHERE key = ?",[e]);if(n?.encrypted_value)return this.encryption.decrypt(n.encrypted_value)}async setSecret(e,n){await this.ensureInitialized();let o=await this.encryption.encrypt(n);await this.db.run("INSERT INTO secret_kv(key, encrypted_value, updated_at) VALUES (?, ?, ?) ON CONFLICT(key) DO UPDATE SET encrypted_value = excluded.encrypted_value, updated_at = excluded.updated_at",[e,o,Date.now()])}async deleteSecret(e){await this.db.run("DELETE FROM secret_kv WHERE key = ?",[e])}async listSecretKeys(e){return e&&e.length>0?(await this.db.all("SELECT key FROM secret_kv WHERE key LIKE ? ORDER BY key ASC",[`${e}%`])).map(r=>r.key):(await this.db.all("SELECT key FROM secret_kv ORDER BY key ASC")).map(o=>o.key)}};function Gu(t){let e=t.trim().replace(/\/+$/,"");return e.endsWith("/api")&&(e=e.slice(0,-4)),e}function Ph(t,e){let n=Gu(t),o=e.startsWith("/")?e:`/${e}`;return`${n}/api${o}`}import{Agent as s5,fetch as a5}from"undici";var Xr=15e3,WS="pandacode",zS,l5=new Map;function eo(t,e){let n=e?.trim()||t?.trim()||"";return Gu(n)}function to(t,e){return Ph(t,e)}function EZ(t){return Qr.tlsInsecure===!0&&t.startsWith("https://")}async function no(t,e){if(EZ(t))return zS||(zS=new s5({connect:{rejectUnauthorized:!1}})),await a5(t,{...e,dispatcher:zS});let n=Pl(t);if(n){let o=l5.get(t);return o||(o=new s5({connect:n}),l5.set(t,o)),await a5(t,{...e,dispatcher:o})}return fetch(t,e)}async function ro(t){let e=await t.text();if(!t.ok){let n;try{n=JSON.parse(e)}catch{}let o=n?.error_description||t.statusText||e||"Request failed";throw new Error(o)}if(e)return JSON.parse(e)}async function c5(t,e,n,o){let r=eo(t,o);if(!r)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\uFF08\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\uFF09");let i=new AbortController,s=setTimeout(()=>i.abort(),Xr);try{let a=await no(to(r,"/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim(),password:n,appId:WS}),signal:i.signal});return ro(a)}catch(a){throw a instanceof Error?a.name==="AbortError"?new Error("\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u8BA4\u8BC1\u670D\u52A1\u5730\u5740"):a:new Error(String(a))}finally{clearTimeout(s)}}async function u5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{let s=await no(to(o,"/auth/verify"),{method:"GET",headers:{Authorization:`Bearer ${e}`},signal:r.signal});return ro(s)}finally{clearTimeout(i)}}async function d5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{let s=await no(to(o,"/auth/refresh"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refresh_token:e,appId:WS}),signal:r.signal});return ro(s)}finally{clearTimeout(i)}}async function p5(t,e,n,o){let r=eo(t,o);if(!r)return;let i=new AbortController,s=setTimeout(()=>i.abort(),Xr);try{let a=JSON.stringify({refresh_token:n,appId:WS});await ro(await no(to(r,"/auth/logout"),{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:a,signal:i.signal}))}finally{clearTimeout(s)}}async function f5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{await ro(await no(to(o,"/auth/password/change/verification/send"),{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},signal:r.signal}))}finally{clearTimeout(i)}}async function m5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{await ro(await no(to(o,"/auth/password/reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim()}),signal:r.signal}))}finally{clearTimeout(i)}}async function g5(t,e,n,o,r){let i=eo(t,r);if(!i)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let s=new AbortController,a=setTimeout(()=>s.abort(),Xr);try{await ro(await no(to(i,"/auth/password/reset"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim(),verificationCode:n.trim(),newPassword:o}),signal:s.signal}))}finally{clearTimeout(a)}}async function h5(t,e,n,o){let r=eo(t,o);if(!r)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let i=new AbortController,s=setTimeout(()=>i.abort(),Xr);try{let a={newPassword:n.newPassword};n.verificationCode!==void 0&&(a.verificationCode=n.verificationCode),n.currentPassword!==void 0&&(a.currentPassword=n.currentPassword);let l=await no(to(r,"/auth/password/change"),{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify(a),signal:i.signal});return ro(l)}finally{clearTimeout(s)}}async function y5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{await ro(await no(to(o,"/auth/verification/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim()}),signal:r.signal}))}finally{clearTimeout(i)}}async function v5(t,e,n,o,r,i,s,a){let l=eo(t,a);if(!l)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let c=new AbortController,u=setTimeout(()=>c.abort(),Xr);try{let d=s?s.trim():void 0;await ro(await no(to(l,"/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.trim(),email:n.trim(),password:o,confirmPassword:r,displayName:d,verificationCode:i.trim()}),signal:c.signal}))}finally{clearTimeout(u)}}var Rh=class{login(e,n,o){return c5(e,n,o)}verify(e,n){return u5(e,n)}refresh(e,n){return d5(e,n)}logout(e,n,o){return p5(e,n,o)}sendChangePasswordVerificationCode(e,n){return f5(e,n)}async changePassword(e,n,o){await h5(e,n,o)}sendVerificationCode(e,n){return y5(e,n)}sendResetPasswordVerificationCode(e,n){return m5(e,n)}resetPassword(e,n){return g5(e,n.email,n.verificationCode,n.newPassword)}register(e,n){return v5(e,n.username,n.email,n.password,n.confirmPassword,n.verificationCode,n.displayName)}};var Ah=class{constructor(e,n,o){this.storage=e;this.api=n;this.logger=o}storage;api;logger;async checkSession(e){let n=await this.storage.getAccessToken(),o=await this.storage.getRefreshToken();if(!n||!o)return await this.storage.clearSession(),{ok:!1};try{let r=await this.api.verify(e,n);if(r.valid&&r.user){let i=r.expires_at??Date.now()+36e5;return await this.storage.setUserAndExpiry(r.user,i),{ok:!0,user:r.user}}}catch{}try{let r=await this.api.refresh(e,o),i=await this.storage.getStoredUser();if(!i)return await this.storage.clearSession(),{ok:!1};let s={accessToken:r.access_token,refreshToken:r.refresh_token??o,sessionId:r.sid,signingKey:r.sk,user:i,expiresAt:Date.now()+(r.expires_in??3600)*1e3};return await this.storage.setSession(s),{ok:!0,user:i}}catch{return await this.storage.clearSession(),{ok:!1}}}async login(e,n,o){let r=await this.api.login(e,n,o),i={accessToken:r.access_token,refreshToken:r.refresh_token,sessionId:r.sid,signingKey:r.sk,user:r.user,expiresAt:Date.now()+(r.expires_in??3600)*1e3};return await this.storage.setSession(i),this.logger.info("[PandaAuthCore] login success",r.user.username),r.user}async logout(e){let n=await this.storage.getAccessToken(),o=await this.storage.getRefreshToken();if(n)try{await this.api.logout(e,n,o)}catch(r){this.logger.warn("[PandaAuthCore] logout api failed",r)}await this.storage.clearSession()}async sendVerificationCode(e,n){await this.api.sendVerificationCode(e,n)}async register(e,n){await this.api.register(e,{username:n.email,email:n.email,password:n.password,confirmPassword:n.confirmPassword,verificationCode:n.verificationCode,displayName:n.displayName})}async sendChangePasswordVerificationCode(e){let n=await this.storage.getAccessToken();if(!n)throw new Error("\u672A\u767B\u5F55\uFF0C\u65E0\u6CD5\u4FEE\u6539\u5BC6\u7801");await this.api.sendChangePasswordVerificationCode(e,n)}async sendResetPasswordVerificationCode(e,n){await this.api.sendResetPasswordVerificationCode(e,n)}async changePassword(e,n){let o=await this.storage.getAccessToken();if(!o)throw new Error("\u672A\u767B\u5F55\uFF0C\u65E0\u6CD5\u4FEE\u6539\u5BC6\u7801");await this.api.changePassword(e,o,n),this.logger.info("[PandaAuthCore] password changed, clearing session"),await this.storage.clearSession()}async resetPassword(e,n){await this.api.resetPassword(e,n),this.logger.info("[PandaAuthCore] password reset, clearing session"),await this.storage.clearSession()}};var Ml=class{stateStore;secretStore;authCore;_currentUser;constructor(){let e=new Ri;this.stateStore=new Ai(e),this.secretStore=new Al(e);let n={getAccessToken:()=>this.secretStore.getSecret(Bt.AccessToken),getRefreshToken:()=>this.secretStore.getSecret(Bt.RefreshToken),getStoredUser:async()=>{let o=await this.stateStore.getString(wt.AuthUser);if(o)try{return JSON.parse(o)}catch{return}},setSession:async o=>{await this.secretStore.setSecret(Bt.AccessToken,o.accessToken),await this.secretStore.setSecret(Bt.RefreshToken,o.refreshToken),await this.secretStore.setSecret(Bt.GatewaySessionId,o.sessionId),await this.secretStore.setSecret(Bt.GatewaySigningKey,o.signingKey),await this.stateStore.setString(wt.AuthUser,JSON.stringify(o.user)),await this.stateStore.setString(wt.AuthExpiresAt,String(o.expiresAt)),this._currentUser=o.user},setUserAndExpiry:async(o,r)=>{await this.stateStore.setString(wt.AuthUser,JSON.stringify(o)),await this.stateStore.setString(wt.AuthExpiresAt,String(r)),this._currentUser=o},clearSession:async()=>{await this.secretStore.deleteSecret(Bt.AccessToken),await this.secretStore.deleteSecret(Bt.RefreshToken),await this.secretStore.deleteSecret(Bt.GatewaySessionId),await this.secretStore.deleteSecret(Bt.GatewaySigningKey),await this.stateStore.remove(wt.AuthUser),await this.stateStore.remove(wt.AuthExpiresAt),this._currentUser=void 0}};this.authCore=new Ah(n,new Rh,console)}getAuthBaseUrl(){let n=Qr.authBaseUrl?.trim()||"";return n?Gu(n):""}async checkSession(){let e=this.getAuthBaseUrl();if(!e)return{ok:!0,user:this._currentUser};let n=await this.authCore.checkSession(e);return this._currentUser=n.user,n}async login(e,n){let o=this.getAuthBaseUrl();if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");let r=await this.authCore.login(o,e,n);return this._currentUser=r,r}async logout(){let e=this.getAuthBaseUrl();if(!e){this._currentUser=void 0;return}await this.authCore.logout(e),this._currentUser=void 0}async sendRegisterVerificationCode(e){let n=this.getAuthBaseUrl();if(!n)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.sendVerificationCode(n,e)}async register(e,n,o,r,i){let s=this.getAuthBaseUrl();if(!s)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.register(s,{email:e,password:o,confirmPassword:r,verificationCode:n,displayName:i})}async sendChangePasswordVerificationCode(){let e=this.getAuthBaseUrl();if(!e)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.sendChangePasswordVerificationCode(e)}async sendResetPasswordVerificationCode(e){let n=this.getAuthBaseUrl();if(!n)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.sendResetPasswordVerificationCode(n,e)}async changePassword(e,n){let o=this.getAuthBaseUrl();if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.changePassword(o,{verificationCode:e,newPassword:n})}async resetPassword(e,n,o){let r=this.getAuthBaseUrl();if(!r)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.resetPassword(r,{email:e,verificationCode:n,newPassword:o})}async getAccessToken(){return this.secretStore.getSecret(Bt.AccessToken)}async getRefreshToken(){return this.secretStore.getSecret(Bt.RefreshToken)}async getGatewaySessionId(){return this.secretStore.getSecret(Bt.GatewaySessionId)}async getGatewaySigningKey(){return this.secretStore.getSecret(Bt.GatewaySigningKey)}async getCurrentUser(){if(this._currentUser)return this._currentUser;let e=await this.stateStore.getString(wt.AuthUser);if(e)try{return this._currentUser=JSON.parse(e),this._currentUser}catch{return}}};var Oi;(r=>{r.serviceIds=new Map,r.DI_TARGET="$di$target",r.DI_DEPENDENCIES="$di$dependencies";function o(i){return i[r.DI_DEPENDENCIES]||[]}r.getServiceDependencies=o})(Oi||={});var hIe=Bn("instantiationService");function PZ(t,e,n){e[Oi.DI_TARGET]===e?e[Oi.DI_DEPENDENCIES].push({id:t,index:n}):(e[Oi.DI_DEPENDENCIES]=[{id:t,index:n}],e[Oi.DI_TARGET]=e)}function Bn(t){if(Oi.serviceIds.has(t))return Oi.serviceIds.get(t);let e=function(n,o,r){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");PZ(e,n,r)};return e.toString=()=>t,Oi.serviceIds.set(t,e),e}var Zu=Bn("pandaStateStore");var Dl=class{constructor(e){this.stateStore=e;this.loadFromStorage()}stateStore;models=new Map;defaultModelId;_onDidChange=new Ve;async loadFromStorage(){try{let e=await this.stateStore.getString(wt.ModelCatalog),n=await this.stateStore.getString(wt.DefaultModelId);if(e){let o=JSON.parse(e);this.models.clear();for(let r of o){let i={...r,source:"storage"};this.models.set(r.id,i)}this.defaultModelId=n}}catch(e){console.error("[VSCodeStorageModelProvider] Failed to load from storage:",e),this.models.clear(),this.defaultModelId=void 0}}async save(e,n){try{let o=e.map(i=>({...i,apiKeyConfig:{apiKeyRef:i.apiKeyConfig.apiKeyRef,apiKeyEnv:i.apiKeyConfig.apiKeyEnv}})),r=JSON.stringify(o);await this.stateStore.setString(wt.ModelCatalog,r),n&&await this.stateStore.setString(wt.DefaultModelId,n),this.models.clear();for(let i of e)this.models.set(i.id,i);this.defaultModelId=n,this._onDidChange.fire()}catch(o){throw console.error("[VSCodeStorageModelProvider] Failed to save to storage:",o),o}}async listModels(){return Array.from(this.models.values())}async getModelById(e){return this.models.get(e)}async getDefaultModelId(){if(this.defaultModelId&&this.models.has(this.defaultModelId))return this.defaultModelId;let e=Array.from(this.models.values());if(e.length>0)return e[0].id}async refresh(){await this.loadFromStorage()}async clear(){await this.stateStore.remove(wt.ModelCatalog),await this.stateStore.remove(wt.DefaultModelId),await this.stateStore.remove(wt.ModelCatalogVersion),this.models.clear(),this.defaultModelId=void 0,this._onDidChange.fire()}hasStoredModels(){return this.models.size>0}onDidChange=this._onDidChange.event};Dl=ma([Or(0,Zu)],Dl);ii();ii();var OIe=Bn("configurationService");function b5(t){return t.replace(/^\[/,"").replace(/]$/g,"").replace(/\]\[/g,", ")}function x5(t){let e=!1,n=new Map,o=new Map;if(RZ(t,u=>{if(t===u)return!0;let d=JSON.stringify(u);if(d.length<30)return!0;let p=n.get(d);if(!p){let f={schemas:[u]};return n.set(d,f),o.set(u,f),!0}return p.schemas.push(u),o.set(u,p),e=!0,!1}),n.clear(),!e)return JSON.stringify(t);let i="$defs";for(;t.hasOwnProperty(i);)i+="_";let s=[];function a(u){return JSON.stringify(u,(d,p)=>{if(p!==u){let f=o.get(p);if(f&&f.schemas.length>1)return f.id||(f.id=`_${s.length}`,s.push(f.schemas[0])),{$ref:`#/${i}/${f.id}`}}return p})}let l=a(t),c=[];for(let u=0;u<s.length;u++)c.push(`"_${u}":${a(s[u])}`);return c.length?`${l.substring(0,l.length-1)},"${i}":{${c.join(",")}}}`:l}function Ol(t){return typeof t=="object"&&t!==null}function RZ(t,e){if(!t||typeof t!="object")return;let n=(...l)=>{for(let c of l)Ol(c)&&s.push(c)},o=(...l)=>{for(let c of l)if(Ol(c))for(let u in c){let d=c[u];Ol(d)&&s.push(d)}},r=(...l)=>{for(let c of l)if(Array.isArray(c))for(let u of c)Ol(u)&&s.push(u)},i=l=>{if(Array.isArray(l))for(let c of l)Ol(c)&&s.push(c);else Ol(l)&&s.push(l)},s=[t],a=s.pop();for(;a;)e(a)&&(n(a.additionalItems,a.additionalProperties,a.not,a.contains,a.propertyNames,a.if,a.then,a.else,a.unevaluatedItems,a.unevaluatedProperties),o(a.definitions,a.$defs,a.properties,a.patternProperties,a.dependencies,a.dependentSchemas),r(a.anyOf,a.allOf,a.oneOf,a.prefixItems),i(a.items)),a=s.pop()}var HS=class{constructor(){this.data=new Map}add(e,n){Jp(Yp(e)),Jp(Fr(n)),Jp(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,n)}knows(e){return this.data.has(e)}as(e){return this.data.get(e)||null}dispose(){this.data.forEach(e=>{vR(e.dispose)&&e.dispose()}),this.data.clear()}},Os=new HS;var qS={JSONContribution:"base.contributions.json"};function T5(t){return t.length>0&&t.charAt(t.length-1)==="#"?t.substring(0,t.length-1):t}var VS=class extends Tt{constructor(){super(...arguments);this.schemasById={};this.schemaAssociations={};this._onDidChangeSchema=this._register(new Ve);this.onDidChangeSchema=this._onDidChangeSchema.event;this._onDidChangeSchemaAssociations=this._register(new Ve);this.onDidChangeSchemaAssociations=this._onDidChangeSchemaAssociations.event}registerSchema(n,o,r){let i=T5(n);this.schemasById[i]=o,this._onDidChangeSchema.fire(n),r&&r.add(bs(()=>{delete this.schemasById[i],this._onDidChangeSchema.fire(n)}))}registerSchemaAssociation(n,o){let r=T5(n);return this.schemaAssociations[r]||(this.schemaAssociations[r]=[]),this.schemaAssociations[r].includes(o)||(this.schemaAssociations[r].push(o),this._onDidChangeSchemaAssociations.fire()),bs(()=>{let i=this.schemaAssociations[r];if(i){let s=i.indexOf(o);s!==-1&&(i.splice(s,1),i.length===0&&delete this.schemaAssociations[r],this._onDidChangeSchemaAssociations.fire())}})}notifySchemaChanged(n){this._onDidChangeSchema.fire(n)}getSchemaContributions(){return{schemas:this.schemasById}}getSchemaContent(n){let o=this.schemasById[n];return o?x5(o):void 0}hasSchemaContent(n){return!!this.schemasById[n]}getSchemaAssociations(){return this.schemaAssociations}},MZ=new VS;Os.add(qS.JSONContribution,MZ);sb();var mn,GS=globalThis.vscode;if(typeof GS<"u"&&typeof GS.context<"u"){let t=GS.context.configuration();if(t)mn=t.product;else throw new Error("Sandbox: unable to resolve product configuration from preload script.")}else if(globalThis._VSCODE_PRODUCT_JSON&&globalThis._VSCODE_PACKAGE_JSON){mn=globalThis._VSCODE_PRODUCT_JSON,Np.VSCODE_DEV&&Object.assign(mn,{nameShort:`${mn.nameShort} Dev`,nameLong:`${mn.nameLong} Dev`,dataFolderName:`${mn.dataFolderName}-dev`,serverDataFolderName:mn.serverDataFolderName?`${mn.serverDataFolderName}-dev`:void 0});let t=globalThis._VSCODE_PACKAGE_JSON;mn.version||Object.assign(mn,{version:t.version}),mn.pandaVersion||Object.assign(mn,{pandaVersion:t.version})}else mn={},Object.keys(mn).length===0&&Object.assign(mn,{version:"1.104.0-dev",nameShort:"Code - OSS Dev",nameLong:"Code - OSS Dev",applicationName:"code-oss",dataFolderName:".vscode-oss",urlProtocol:"code-oss",reportIssueUrl:"https://github.com/microsoft/vscode/issues/new",licenseName:"MIT",licenseUrl:"https://github.com/microsoft/vscode/blob/main/LICENSE.txt",serverLicenseUrl:"https://github.com/microsoft/vscode/blob/main/LICENSE.txt"});var Mh=mn;var JS={Configuration:"base.contributions.configuration"};var Dh={properties:{},patternProperties:{}},Oh={properties:{},patternProperties:{}},Lh={properties:{},patternProperties:{}},Nh={properties:{},patternProperties:{}},$h={properties:{},patternProperties:{}},Fh={properties:{},patternProperties:{}},Ju={properties:{},patternProperties:{}},Ls="vscode://schemas/settings/resourceLanguage";var Uh=Os.as(qS.JSONContribution),ZS=class extends Tt{constructor(){super();this.registeredConfigurationDefaults=[];this.overrideIdentifiers=new Set;this._onDidSchemaChange=this._register(new Ve);this.onDidSchemaChange=this._onDidSchemaChange.event;this._onDidUpdateConfiguration=this._register(new Ve);this.onDidUpdateConfiguration=this._onDidUpdateConfiguration.event;this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:_e("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(n,o=!0){return this.registerConfigurations([n],o),n}registerConfigurations(n,o=!0){let r=new Set;this.doRegisterConfigurations(n,o,r),Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:r})}deregisterConfigurations(n){let o=new Set;this.doDeregisterConfigurations(n,o),Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o})}updateConfigurations({add:n,remove:o}){let r=new Set;this.doDeregisterConfigurations(o,r),this.doRegisterConfigurations(n,!1,r),Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:r})}registerDefaultConfigurations(n){let o=new Set;this.doRegisterDefaultConfigurations(n,o),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o,defaultsOverrides:!0})}doRegisterDefaultConfigurations(n,o){this.registeredConfigurationDefaults.push(...n);let r=[];for(let{overrides:i,source:s}of n)for(let a in i){o.add(a);let l=this.configurationDefaultsOverrides.get(a)??this.configurationDefaultsOverrides.set(a,{configurationDefaultOverrides:[]}).get(a),c=i[a];if(l.configurationDefaultOverrides.push({value:c,source:s}),Yu.test(a)){let u=this.mergeDefaultConfigurationsForOverrideIdentifier(a,c,s,l.configurationDefaultOverrideValue);if(!u)continue;l.configurationDefaultOverrideValue=u,this.updateDefaultOverrideProperty(a,u,s),r.push(...DZ(a))}else{let u=this.mergeDefaultConfigurationsForConfigurationProperty(a,c,s,l.configurationDefaultOverrideValue);if(!u)continue;l.configurationDefaultOverrideValue=u;let d=this.configurationProperties[a];d&&(this.updatePropertyDefaultValue(a,d),this.updateSchema(a,d))}}this.doRegisterOverrideIdentifiers(r)}deregisterDefaultConfigurations(n){let o=new Set;this.doDeregisterDefaultConfigurations(n,o),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o,defaultsOverrides:!0})}doDeregisterDefaultConfigurations(n,o){for(let r of n){let i=this.registeredConfigurationDefaults.indexOf(r);i!==-1&&this.registeredConfigurationDefaults.splice(i,1)}for(let{overrides:r,source:i}of n)for(let s in r){let a=this.configurationDefaultsOverrides.get(s);if(!a)continue;let l=a.configurationDefaultOverrides.findIndex(c=>i?c.source?.id===i.id:c.value===r[s]);if(l!==-1){if(a.configurationDefaultOverrides.splice(l,1),a.configurationDefaultOverrides.length===0&&this.configurationDefaultsOverrides.delete(s),Yu.test(s)){let c;for(let u of a.configurationDefaultOverrides)c=this.mergeDefaultConfigurationsForOverrideIdentifier(s,u.value,u.source,c);c&&!yR(c.value)?(a.configurationDefaultOverrideValue=c,this.updateDefaultOverrideProperty(s,c,i)):(this.configurationDefaultsOverrides.delete(s),delete this.configurationProperties[s],delete this.defaultLanguageConfigurationOverridesNode.properties[s])}else{let c;for(let d of a.configurationDefaultOverrides)c=this.mergeDefaultConfigurationsForConfigurationProperty(s,d.value,d.source,c);a.configurationDefaultOverrideValue=c;let u=this.configurationProperties[s];u&&(this.updatePropertyDefaultValue(s,u),this.updateSchema(s,u))}o.add(s)}}this.updateOverridePropertyPatternKey()}updateDefaultOverrideProperty(n,o,r){let i={section:{id:this.defaultLanguageConfigurationOverridesNode.id,title:this.defaultLanguageConfigurationOverridesNode.title,order:this.defaultLanguageConfigurationOverridesNode.order,extensionInfo:this.defaultLanguageConfigurationOverridesNode.extensionInfo},type:"object",default:o.value,description:_e("defaultLanguageConfiguration.description","Configure settings to be overridden for {0}.",b5(n)),$ref:Ls,defaultDefaultValue:o.value,source:r,defaultValueSource:r};this.configurationProperties[n]=i,this.defaultLanguageConfigurationOverridesNode.properties[n]=i}mergeDefaultConfigurationsForOverrideIdentifier(n,o,r,i){let s=i?.value||{},a=i?.source??new Map;if(!(a instanceof Map)){console.error("objectConfigurationSources is not a Map");return}for(let l of Object.keys(o)){let c=o[l];if(Fr(c)&&(Ea(s[l])||Fr(s[l]))){if(s[l]={...s[l]??{},...c},r)for(let d in c)a.set(`${l}.${d}`,r)}else s[l]=c,r?a.set(l,r):a.delete(l)}return{value:s,source:a}}mergeDefaultConfigurationsForConfigurationProperty(n,o,r,i){let s=this.configurationProperties[n],a=i?.value??s?.defaultDefaultValue,l=r;if(Fr(o)&&(s!==void 0&&s.type==="object"||s===void 0&&(Ea(a)||Fr(a)))){if(l=i?.source??new Map,!(l instanceof Map)){console.error("defaultValueSource is not a Map");return}for(let u in o)r&&l.set(`${n}.${u}`,r);o={...Fr(a)?a:{},...o}}return{value:o,source:l}}deltaConfiguration(n){let o=!1,r=new Set;n.removedDefaults&&(this.doDeregisterDefaultConfigurations(n.removedDefaults,r),o=!0),n.addedDefaults&&(this.doRegisterDefaultConfigurations(n.addedDefaults,r),o=!0),n.removedConfigurations&&this.doDeregisterConfigurations(n.removedConfigurations,r),n.addedConfigurations&&this.doRegisterConfigurations(n.addedConfigurations,!1,r),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:r,defaultsOverrides:o})}notifyConfigurationSchemaUpdated(...n){this._onDidSchemaChange.fire()}registerOverrideIdentifiers(n){this.doRegisterOverrideIdentifiers(n),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(n){for(let o of n)this.overrideIdentifiers.add(o);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(n,o,r){n.forEach(i=>{this.validateAndRegisterProperties(i,o,i.extensionInfo,i.restrictedProperties,void 0,r),this.configurationContributors.push(i),this.registerJSONConfiguration(i)})}doDeregisterConfigurations(n,o){let r=i=>{if(i.properties)for(let s in i.properties){o.add(s);let a=this.configurationProperties[s];a?.policy?.name&&this.policyConfigurations.delete(a.policy.name),delete this.configurationProperties[s],this.removeFromSchema(s,i.properties[s])}i.allOf?.forEach(s=>r(s))};for(let i of n){r(i);let s=this.configurationContributors.indexOf(i);s!==-1&&this.configurationContributors.splice(s,1)}}validateAndRegisterProperties(n,o=!0,r,i,s=4,a){s=Qp(n.scope)?s:n.scope;let l=n.properties;if(l)for(let u in l){let d=l[u];if(d.section={id:n.id,title:n.title,order:n.order,extensionInfo:n.extensionInfo},o&&LZ(u,d,r?.id)){delete l[u];continue}d.source=r,d.defaultDefaultValue=l[u].default,this.updatePropertyDefaultValue(u,d),Yu.test(u)?d.scope=void 0:(d.scope=Qp(d.scope)?s:d.scope,d.restricted=Qp(d.restricted)?!!i?.includes(u):d.restricted),d.experiment?d.tags?.some(m=>m.toLowerCase()==="onexp")||(d.tags=d.tags??[],d.tags.push("onExP")):d.tags?.some(m=>m.toLowerCase()==="onexp")&&(console.error(`Invalid tag 'onExP' found for property '${u}'. Please use 'experiment' property instead.`),d.experiment={mode:"startup"});let p=l[u].hasOwnProperty("included")&&!l[u].included,f=l[u].policy?.name;p?(this.excludedConfigurationProperties[u]=l[u],f&&(this.policyConfigurations.set(f,u),a.add(u)),delete l[u]):(a.add(u),f&&this.policyConfigurations.set(f,u),this.configurationProperties[u]=l[u],!l[u].deprecationMessage&&l[u].markdownDeprecationMessage&&(l[u].deprecationMessage=l[u].markdownDeprecationMessage))}let c=n.allOf;if(c)for(let u of c)this.validateAndRegisterProperties(u,o,r,i,s,a)}getConfigurations(){return this.configurationContributors}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}getExcludedConfigurationProperties(){return this.excludedConfigurationProperties}getRegisteredDefaultConfigurations(){return[...this.registeredConfigurationDefaults]}getConfigurationDefaultsOverrides(){let n=new Map;for(let[o,r]of this.configurationDefaultsOverrides)r.configurationDefaultOverrideValue&&n.set(o,r.configurationDefaultOverrideValue);return n}registerJSONConfiguration(n){let o=r=>{let i=r.properties;if(i)for(let a in i)this.updateSchema(a,i[a]);r.allOf?.forEach(o)};o(n)}updateSchema(n,o){switch(Dh.properties[n]=o,o.scope){case 1:Oh.properties[n]=o;break;case 2:Nh.properties[n]=o;break;case 3:Lh.properties[n]=o;break;case 7:$h.properties[n]=o;break;case 4:Fh.properties[n]=o;break;case 5:Ju.properties[n]=o;break;case 6:Ju.properties[n]=o,this.resourceLanguageSettingsSchema.properties[n]=o;break}}removeFromSchema(n,o){switch(delete Dh.properties[n],o.scope){case 1:delete Oh.properties[n];break;case 2:delete Nh.properties[n];break;case 3:delete Lh.properties[n];break;case 7:delete $h.properties[n];break;case 4:delete Fh.properties[n];break;case 5:case 6:delete Ju.properties[n],delete this.resourceLanguageSettingsSchema.properties[n];break}}updateOverridePropertyPatternKey(){for(let n of this.overrideIdentifiers.values()){let o=`[${n}]`,r={type:"object",description:_e("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:_e("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:Ls};this.updatePropertyDefaultValue(o,r),Dh.properties[o]=r,Oh.properties[o]=r,Lh.properties[o]=r,Nh.properties[o]=r,$h.properties[o]=r,Fh.properties[o]=r,Ju.properties[o]=r}}registerOverridePropertyPatternKey(){let n={type:"object",description:_e("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:_e("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:Ls};Dh.patternProperties[Li]=n,Oh.patternProperties[Li]=n,Lh.patternProperties[Li]=n,Nh.patternProperties[Li]=n,$h.patternProperties[Li]=n,Fh.patternProperties[Li]=n,Ju.patternProperties[Li]=n,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(n,o){let r=this.configurationDefaultsOverrides.get(n)?.configurationDefaultOverrideValue,i,s;r&&(!o.disallowConfigurationDefault||!r.source)&&(i=r.value,s=r.source),Ea(i)&&(i=o.defaultDefaultValue,s=void 0),Ea(i)&&(i=OZ(o.type)),o.default=i,o.defaultValueSource=s}},_5="\\[([^\\]]+)\\]",w5=new RegExp(_5,"g"),Li=`^(${_5})+$`,Yu=new RegExp(Li);function DZ(t){let e=[];if(Yu.test(t)){let n=w5.exec(t);for(;n?.length;){let o=n[1].trim();o&&e.push(o),n=w5.exec(t)}}return rR(e)}function OZ(t){switch(Array.isArray(t)?t[0]:t){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}var Bh=new ZS;Os.add(JS.Configuration,Bh);function LZ(t,e,n){return t.trim()?Yu.test(t)?_e("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",t):Bh.getConfigurationProperties()[t]!==void 0&&(!n||!NZ.has(n.toLowerCase()))?_e("config.property.duplicate","Cannot register '{0}'. This property is already registered.",t):e.policy?.name&&Bh.getPolicyConfigurations().get(e.policy?.name)!==void 0?_e("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",t,e.policy?.name,Bh.getPolicyConfigurations().get(e.policy?.name)):null:_e("config.property.empty","Cannot register an empty property")}var NZ=new Set(Mh.defaultChatAgent?[Mh.defaultChatAgent.extensionId,Mh.defaultChatAgent.chatExtensionId].map(t=>t.toLowerCase()):[]);var zh=Bn("requestService"),QS=class{constructor(e){this.original=e}toJSON(){if(!this.headers){let e=Object.create(null);for(let n in this.original)n.toLowerCase()==="authorization"||n.toLowerCase()==="proxy-authorization"?e[n]="*****":e[n]=this.original[n];this.headers=e}return this.headers}},jh=class extends Tt{constructor(n){super();this.logService=n;this.counter=0}async logAndRequest(n,o){let r=`#${++this.counter}: ${n.url}`;this.logService.trace(`${r} - begin`,n.type,new QS(n.headers??{}));try{let i=await o();return this.logService.trace(`${r} - end`,n.type,i.res.statusCode,i.res.headers),i}catch(i){throw this.logService.error(`${r} - error`,n.type,eR(i)),i}}};var YS=[],S5,k5;function $Z(t=!0,e=!0){if(S5===t&&k5===e)return;S5=t,k5=e;let n=Os.as(JS.Configuration),o=YS;YS=[{id:"http",order:15,title:_e("httpConfigurationTitle","HTTP"),type:"object",scope:2,properties:{"http.useLocalProxyConfiguration":{type:"boolean",default:e,markdownDescription:_e("useLocalProxy","Controls whether in the remote extension host the local proxy configuration should be used. This setting only applies as a remote setting during [remote development](https://aka.ms/vscode-remote)."),restricted:!0}}},{id:"http",order:15,title:_e("httpConfigurationTitle","HTTP"),type:"object",scope:1,properties:{"http.electronFetch":{type:"boolean",default:!1,description:_e("electronFetch","Controls whether use of Electron's fetch implementation instead of Node.js' should be enabled. All local extensions will get Electron's fetch implementation for the global fetch API."),restricted:!0}}},{id:"http",order:15,title:_e("httpConfigurationTitle","HTTP"),type:"object",scope:t?1:2,properties:{"http.proxy":{type:"string",pattern:"^(https?|socks|socks4a?|socks5h?)://([^:]*(:[^@]*)?@)?([^:]+|\\[[:0-9a-fA-F]+\\])(:\\d+)?/?$|^$",markdownDescription:_e("proxy","The proxy setting to use. If not set, will be inherited from the `http_proxy` and `https_proxy` environment variables. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxyStrictSSL":{type:"boolean",default:!0,markdownDescription:_e("strictSSL","Controls whether the proxy server certificate should be verified against the list of supplied CAs. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxyKerberosServicePrincipal":{type:"string",markdownDescription:_e("proxyKerberosServicePrincipal","Overrides the principal service name for Kerberos authentication with the HTTP proxy. A default based on the proxy hostname is used when this is not set. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.noProxy":{type:"array",items:{type:"string"},markdownDescription:_e("noProxy","Specifies domain names for which proxy settings should be ignored for HTTP/HTTPS requests. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxyAuthorization":{type:["null","string"],default:null,markdownDescription:_e("proxyAuthorization","The value to send as the `Proxy-Authorization` header for every network request. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxySupport":{type:"string",enum:["off","on","fallback","override"],enumDescriptions:[_e("proxySupportOff","Disable proxy support for extensions."),_e("proxySupportOn","Enable proxy support for extensions."),_e("proxySupportFallback","Enable proxy support for extensions, fall back to request options, when no proxy found."),_e("proxySupportOverride","Enable proxy support for extensions, override request options.")],default:"override",markdownDescription:_e("proxySupport","Use the proxy support for extensions. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.systemCertificates":{type:"boolean",default:!0,markdownDescription:_e("systemCertificates","Controls whether CA certificates should be loaded from the OS. On Windows and macOS, a reload of the window is required after turning this off. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.systemCertificatesNode":{type:"boolean",tags:["experimental"],default:!0,markdownDescription:_e("systemCertificatesNode","Controls whether system certificates should be loaded using Node.js built-in support. Reload the window after changing this setting. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0,experiment:{mode:"auto"}},"http.experimental.systemCertificatesV2":{type:"boolean",tags:["experimental"],default:!1,markdownDescription:_e("systemCertificatesV2","Controls whether experimental loading of CA certificates from the OS should be enabled. This uses a more general approach than the default implementation. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.fetchAdditionalSupport":{type:"boolean",default:!0,markdownDescription:_e("fetchAdditionalSupport","Controls whether Node.js' fetch implementation should be extended with additional support. Currently proxy support ({1}) and system certificates ({2}) are added when the corresponding settings are enabled. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`","`#http.proxySupport#`","`#http.systemCertificates#`"),restricted:!0},"http.experimental.networkInterfaceCheckInterval":{type:"number",default:300,minimum:-1,tags:["experimental"],markdownDescription:_e("networkInterfaceCheckInterval","Controls the interval in seconds for checking network interface changes to invalidate the proxy cache. Set to -1 to disable. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0,experiment:{mode:"auto"}}}}],n.updateConfigurations({add:YS,remove:o})}$Z();ii();ii();or();or();Nt();var qt;(Q=>(Q.inMemory="inmemory",Q.vscode="vscode",Q.internal="private",Q.walkThrough="walkThrough",Q.walkThroughSnippet="walkThroughSnippet",Q.http="http",Q.https="https",Q.file="file",Q.mailto="mailto",Q.untitled="untitled",Q.data="data",Q.command="command",Q.vscodeRemote="vscode-remote",Q.vscodeRemoteResource="vscode-remote-resource",Q.vscodeManagedRemoteResource="vscode-managed-remote-resource",Q.vscodeUserData="vscode-userdata",Q.vscodeCustomEditor="vscode-custom-editor",Q.vscodeNotebookCell="vscode-notebook-cell",Q.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",Q.vscodeNotebookCellMetadataDiff="vscode-notebook-cell-metadata-diff",Q.vscodeNotebookCellOutput="vscode-notebook-cell-output",Q.vscodeNotebookCellOutputDiff="vscode-notebook-cell-output-diff",Q.vscodeNotebookMetadata="vscode-notebook-metadata",Q.vscodeInteractiveInput="vscode-interactive-input",Q.vscodeSettings="vscode-settings",Q.vscodeWorkspaceTrust="vscode-workspace-trust",Q.vscodeTerminal="vscode-terminal",Q.vscodeChatCodeBlock="vscode-chat-code-block",Q.vscodeChatCodeCompareBlock="vscode-chat-code-compare-block",Q.vscodeChatEditor="vscode-chat-editor",Q.vscodeChatInput="chatSessionInput",Q.vscodeLocalChatSession="vscode-chat-session",Q.webviewPanel="webview-panel",Q.vscodeWebview="vscode-webview",Q.extension="extension",Q.vscodeFileResource="vscode-file",Q.tmp="tmp",Q.vsls="vsls",Q.vscodeSourceControl="vscode-scm",Q.commentsInput="comment",Q.codeSetting="code-setting",Q.outputChannel="output",Q.accessibleView="accessible-view",Q.chatEditingSnapshotScheme="chat-editing-snapshot-text-model",Q.chatEditingModel="chat-editing-text-model",Q.copilotPr="copilot-pr"))(qt||={});var FZ="tkn",XS=class{constructor(){this._hosts=Object.create(null);this._ports=Object.create(null);this._connectionTokens=Object.create(null);this._preferredWebSchema="http";this._delegate=null;this._serverRootPath="/"}setPreferredWebSchema(e){this._preferredWebSchema=e}setDelegate(e){this._delegate=e}setServerRootPath(e,n){this._serverRootPath=Ge.join(n??"/",BZ(e))}getServerRootPath(){return this._serverRootPath}get _remoteResourcesPath(){return Ge.join(this._serverRootPath,qt.vscodeRemoteResource)}set(e,n,o){this._hosts[e]=n,this._ports[e]=o}setConnectionToken(e,n){this._connectionTokens[e]=n}getPreferredWebSchema(){return this._preferredWebSchema}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(a){return br(a),e}let n=e.authority,o=this._hosts[n];o&&o.indexOf(":")!==-1&&o.indexOf("[")===-1&&(o=`[${o}]`);let r=this._ports[n],i=this._connectionTokens[n],s=`path=${encodeURIComponent(e.path)}`;return typeof i=="string"&&(s+=`&${FZ}=${encodeURIComponent(i)}`),ot.from({scheme:gs?this._preferredWebSchema:qt.vscodeRemoteResource,authority:`${o}:${r}`,path:this._remoteResourcesPath,query:s})}},UZ=new XS;function BZ(t){return`${t.quality??"oss"}-${t.commit??"dev"}`}var jZ="vscode-app",ek=class t{static{this.FALLBACK_AUTHORITY=jZ}asBrowserUri(e){let n=this.toUri(e);return this.uriToBrowserUri(n)}uriToBrowserUri(e){return e.scheme===qt.vscodeRemote?UZ.rewrite(e):e.scheme===qt.file&&(jP||zP===`${qt.vscodeFileResource}://${t.FALLBACK_AUTHORITY}`)?e.with({scheme:qt.vscodeFileResource,authority:e.authority||t.FALLBACK_AUTHORITY,query:null,fragment:null}):e}asFileUri(e){let n=this.toUri(e);return this.uriToFileUri(n)}uriToFileUri(e){return e.scheme===qt.vscodeFileResource?e.with({scheme:qt.file,authority:e.authority!==t.FALLBACK_AUTHORITY?e.authority:null,query:null,fragment:null}):e}toUri(e){if(ot.isUri(e))return e;if(globalThis._VSCODE_FILE_ROOT){let n=globalThis._VSCODE_FILE_ROOT;if(/^\w[\w\d+.-]*:\/\//.test(n))return ot.joinPath(ot.parse(n,!0),e);let o=lt(n,e);return ot.file(o)}throw new Error("Cannot determine URI for module id!")}},vCe=new ek,bCe=Object.freeze({"Cache-Control":"no-cache, no-store"}),xCe=Object.freeze({"Document-Policy":"include-js-call-stacks-in-crash-reports"}),zZ;(i=>{let t=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);i.CoopAndCoep=Object.freeze(t.get("3"));let n="vscode-coi";function o(s){let a;typeof s=="string"?a=new URL(s).searchParams:s instanceof URL?a=s.searchParams:ot.isUri(s)&&(a=new URL(s.toString(!0)).searchParams);let l=a?.get(n);if(l)return t.get(l)}i.getHeadersFromQuery=o;function r(s,a,l){if(!globalThis.crossOriginIsolated)return;let c=a&&l?"3":l?"2":"1";s instanceof URLSearchParams?s.set(n,c):s[n]=c}i.addSearchParam=r})(zZ||={});Nt();or();function Lo(t){return Uc(t,!0)}var Qu=class{constructor(e){this._ignorePathCasing=e}compare(e,n,o=!1){return e===n?0:$R(this.getComparisonKey(e,o),this.getComparisonKey(n,o))}isEqual(e,n,o=!1){return e===n?!0:!e||!n?!1:this.getComparisonKey(e,o)===this.getComparisonKey(n,o)}getComparisonKey(e,n=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:n?null:void 0}).toString()}ignorePathCasing(e){return this._ignorePathCasing(e)}isEqualOrParent(e,n,o=!1){if(e.scheme===n.scheme){if(e.scheme===qt.file)return xS(Lo(e),Lo(n),this._ignorePathCasing(e))&&e.query===n.query&&(o||e.fragment===n.fragment);if(I5(e.authority,n.authority))return xS(e.path,n.path,this._ignorePathCasing(e),"/")&&e.query===n.query&&(o||e.fragment===n.fragment)}return!1}joinPath(e,...n){return ot.joinPath(e,...n)}basenameOrAuthority(e){return WZ(e)||e.authority}basename(e){return Ge.basename(e.path)}extname(e){return Ge.extname(e.path)}dirname(e){if(e.path.length===0)return e;let n;return e.scheme===qt.file?n=ot.file(ir(Lo(e))).path:(n=Ge.dirname(e.path),e.authority&&n.length&&n.charCodeAt(0)!==47&&(console.error(`dirname("${e.toString})) resulted in a relative path`),n="/")),e.with({path:n})}normalizePath(e){if(!e.path.length)return e;let n;return e.scheme===qt.file?n=ot.file(ai(Lo(e))).path:n=Ge.normalize(e.path),e.with({path:n})}relativePath(e,n){if(e.scheme!==n.scheme||!I5(e.authority,n.authority))return;if(e.scheme===qt.file){let i=Pc(Lo(e),Lo(n));return Lt?$u(i):i}let o=e.path||"/",r=n.path||"/";if(this._ignorePathCasing(e)){let i=0;for(let s=Math.min(o.length,r.length);i<s&&!(o.charCodeAt(i)!==r.charCodeAt(i)&&o.charAt(i).toLowerCase()!==r.charAt(i).toLowerCase());i++);o=r.substr(0,i)+o.substr(i)}return Ge.relative(o,r)}resolvePath(e,n){if(e.scheme===qt.file){let o=ot.file(Ut(Lo(e),n));return e.with({authority:o.authority,path:o.path})}return n=rL(n),e.with({path:Ge.resolve(e.path,n)})}isAbsolutePath(e){return!!e.path&&e.path[0]==="/"}isEqualAuthority(e,n){return e===n||e!==void 0&&n!==void 0&&Aa(e,n)}hasTrailingPathSeparator(e,n=vr){if(e.scheme===qt.file){let o=Lo(e);return o.length>bS(o).length&&o[o.length-1]===n}else{let o=e.path;return o.length>1&&o.charCodeAt(o.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e,n=vr){return C5(e,n)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e,n=vr){let o=!1;if(e.scheme===qt.file){let r=Lo(e);o=r!==void 0&&r.length===bS(r).length&&r[r.length-1]===n}else{n="/";let r=e.path;o=r.length===1&&r.charCodeAt(r.length-1)===47}return!o&&!C5(e,n)?e.with({path:e.path+"/"}):e}},Qe=new Qu(()=>!1),CCe=new Qu(t=>t.scheme===qt.file?!Lp:!0),ECe=new Qu(t=>!0),PCe=Qe.isEqual.bind(Qe),RCe=Qe.isEqualOrParent.bind(Qe),ACe=Qe.getComparisonKey.bind(Qe),MCe=Qe.basenameOrAuthority.bind(Qe),WZ=Qe.basename.bind(Qe),DCe=Qe.extname.bind(Qe),OCe=Qe.dirname.bind(Qe),KZ=Qe.joinPath.bind(Qe),LCe=Qe.normalizePath.bind(Qe),NCe=Qe.relativePath.bind(Qe),$Ce=Qe.resolvePath.bind(Qe),FCe=Qe.isAbsolutePath.bind(Qe),I5=Qe.isEqualAuthority.bind(Qe),C5=Qe.hasTrailingPathSeparator.bind(Qe),UCe=Qe.removeTrailingPathSeparator.bind(Qe),BCe=Qe.addTrailingPathSeparator.bind(Qe);var HZ;(i=>{i.META_DATA_LABEL="label",i.META_DATA_DESCRIPTION="description",i.META_DATA_SIZE="size",i.META_DATA_MIME="mime";function r(s){let a=new Map;s.path.substring(s.path.indexOf(";")+1,s.path.lastIndexOf(";")).split(";").forEach(u=>{let[d,p]=u.split(":");d&&p&&a.set(d,p)});let c=s.path.substring(0,s.path.indexOf(";"));return c&&a.set(i.META_DATA_MIME,c),a}i.parseMetaData=r})(HZ||={});or();ii();function tk(...t){switch(t.length){case 1:return _e("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",t[0]);case 2:return _e("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",t[0],t[1]);case 3:return _e("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",t[0],t[1],t[2]);default:return}}var VZ=_e("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),qZ=_e("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'."),Ni=class t{constructor(){this._input="";this._start=0;this._current=0;this._tokens=[];this._errors=[];this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return e.lexeme;case 18:return e.lexeme;case 19:return e.lexeme;case 20:return"EOF";default:throw XP(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}static{this._regexFlags=new Set(["i","g","s","m","y","u"].map(e=>e.charCodeAt(0)))}static{this._keywords=new Map([["not",14],["in",13],["false",12],["true",11]])}get errors(){return this._errors}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){let n=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:n})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){let n=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:n})}else this._match(126)?this._addToken(9):this._error(tk("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(tk("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(tk("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return this._isAtEnd()||this._input.charCodeAt(this._current)!==e?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){let n=this._start,o=this._input.substring(this._start,this._current),r={type:19,offset:this._start,lexeme:o};this._errors.push({offset:n,lexeme:o,additionalInfo:e}),this._tokens.push(r)}_string(){this.stringRe.lastIndex=this._start;let e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;let n=this._input.substring(this._start,this._current),o=t._keywords.get(n);o?this._addToken(o):this._tokens.push({type:17,lexeme:n,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(VZ);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,n=!1,o=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(qZ);return}let i=this._input.charCodeAt(e);if(n)n=!1;else if(i===47&&!o){e++;break}else i===91?o=!0:i===92?n=!0:i===93&&(o=!1);e++}for(;e<this._input.length&&t._regexFlags.has(this._input.charCodeAt(e));)e++;this._current=e;let r=this._input.substring(this._start,this._current);this._tokens.push({type:10,lexeme:r,offset:this._start})}_isAtEnd(){return this._current>=this._input.length}};ii();var jt=new Map;jt.set("false",!1);jt.set("true",!0);jt.set("isMac",Cc);jt.set("isLinux",Lp);jt.set("isWindows",Lt);jt.set("isWeb",gs);jt.set("isMacNative",Cc&&!gs);jt.set("isEdge",HP);jt.set("isFirefox",WP);jt.set("isChrome",ob);jt.set("isSafari",KP);var GZ=Object.prototype.hasOwnProperty;var ZZ={regexParsingWithErrorRecovery:!0},JZ=_e("contextkey.parser.error.emptyString","Empty context key expression"),YZ=_e("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),QZ=_e("contextkey.parser.error.noInAfterNot","'in' after 'not'."),E5=_e("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),XZ=_e("contextkey.parser.error.unexpectedToken","Unexpected token"),eJ=_e("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),tJ=_e("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),nJ=_e("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?"),nk=class t{constructor(e=ZZ){this._config=e;this._scanner=new Ni;this._tokens=[];this._current=0;this._parsingErrors=[];this._flagsGYRe=/g|y/g}static{this._parseError=new Error}get lexingErrors(){return this._scanner.errors}get parsingErrors(){return this._parsingErrors}parse(e){if(e===""){this._parsingErrors.push({message:JZ,offset:0,lexeme:"",additionalInfo:YZ});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{let n=this._expr();if(!this._isAtEnd()){let o=this._peek(),r=o.type===17?eJ:void 0;throw this._parsingErrors.push({message:XZ,offset:o.offset,lexeme:Ni.getLexeme(o),additionalInfo:r}),t._parseError}return n}catch(n){if(n!==t._parseError)throw n;return}}_expr(){return this._or()}_or(){let e=[this._and()];for(;this._matchOne(16);){let n=this._and();e.push(n)}return e.length===1?e[0]:Gt.or(...e)}_and(){let e=[this._term()];for(;this._matchOne(15);){let n=this._term();e.push(n)}return e.length===1?e[0]:Gt.and(...e)}_term(){if(this._matchOne(2)){let e=this._peek();switch(e.type){case 11:return this._advance(),rn.INSTANCE;case 12:return this._advance(),gn.INSTANCE;case 0:{this._advance();let n=this._expr();return this._consume(1,E5),n?.negate()}case 17:return this._advance(),$s.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){let e=this._peek();switch(e.type){case 11:return this._advance(),Gt.true();case 12:return this._advance(),Gt.false();case 0:{this._advance();let n=this._expr();return this._consume(1,E5),n}case 17:{let n=e.lexeme;if(this._advance(),this._matchOne(9)){let r=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),r.type!==10)throw this._errExpectedButGot("REGEX",r);let i=r.lexeme,s=i.lastIndexOf("/"),a=s===i.length-1?void 0:this._removeFlagsGY(i.substring(s+1)),l;try{l=new RegExp(i.substring(1,s),a)}catch{throw this._errExpectedButGot("REGEX",r)}return id.create(n,l)}switch(r.type){case 10:case 19:{let i=[r.lexeme];this._advance();let s=this._peek(),a=0;for(let p=0;p<r.lexeme.length;p++)r.lexeme.charCodeAt(p)===40?a++:r.lexeme.charCodeAt(p)===41&&a--;for(;!this._isAtEnd()&&s.type!==15&&s.type!==16;){switch(s.type){case 0:a++;break;case 1:a--;break;case 10:case 18:for(let p=0;p<s.lexeme.length;p++)s.lexeme.charCodeAt(p)===40?a++:r.lexeme.charCodeAt(p)===41&&a--}if(a<0)break;i.push(Ni.getLexeme(s)),this._advance(),s=this._peek()}let l=i.join(""),c=l.lastIndexOf("/"),u=c===l.length-1?void 0:this._removeFlagsGY(l.substring(c+1)),d;try{d=new RegExp(l.substring(1,c),u)}catch{throw this._errExpectedButGot("REGEX",r)}return Gt.regex(n,d)}case 18:{let i=r.lexeme;this._advance();let s=null;if(!NR(i)){let a=i.indexOf("/"),l=i.lastIndexOf("/");if(a!==l&&a>=0){let c=i.slice(a+1,l),u=i[l+1]==="i"?"i":"";try{s=new RegExp(c,u)}catch{throw this._errExpectedButGot("REGEX",r)}}}if(s===null)throw this._errExpectedButGot("REGEX",r);return id.create(n,s)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,QZ);let r=this._value();return Gt.notIn(n,r)}switch(this._peek().type){case 3:{this._advance();let r=this._value();if(this._previous().type===18)return Gt.equals(n,r);switch(r){case"true":return Gt.has(n);case"false":return Gt.not(n);default:return Gt.equals(n,r)}}case 4:{this._advance();let r=this._value();if(this._previous().type===18)return Gt.notEquals(n,r);switch(r){case"true":return Gt.not(n);case"false":return Gt.has(n);default:return Gt.notEquals(n,r)}}case 5:return this._advance(),rd.create(n,this._value());case 6:return this._advance(),od.create(n,this._value());case 7:return this._advance(),Ll.create(n,this._value());case 8:return this._advance(),nd.create(n,this._value());case 13:return this._advance(),Gt.in(n,this._value());default:return Gt.has(n)}}case 20:throw this._parsingErrors.push({message:tJ,offset:e.offset,lexeme:"",additionalInfo:nJ}),t._parseError;default:throw this._errExpectedButGot(`true | false | KEY
1966
+ ${n}`,s=UL("sha256",t).update(iZ,"utf8").digest(),a=zL(UL("sha256",s).update(i,"utf8").digest());return{"X-Panda-Sid":e,"X-Panda-Timestamp":o,"X-Panda-Nonce":r,"X-Panda-Sign-Ver":oZ,"X-Panda-Sign":a}}var _h=class extends Yr{static providerName="pandaGateway";_authToken;_authSigningKey;_authGatewaySessionId;_authEmail;insecureTlsAgent;pinnedTlsAgent;setAuthToken(e){this._authToken=e,this._authEmail=nZ(e),this.client=void 0}setAuthSigningToken(e){this._authSigningKey=e}setAuthGatewaySessionId(e){this._authGatewaySessionId=e}getOpenAIClientBearerToken(){return this._authToken??this.apiKey??"dummy-key"}mergeOpenAIClientDefaultHeaders(){let e={...super.mergeOpenAIClientDefaultHeaders()};return this._authToken&&this.apiKey&&!e["X-API-Key"]&&(e["X-API-Key"]=this.apiKey),e["X-Source"]||(e["X-Source"]="pandacode"),this._authEmail&&!e["X-User-Email"]&&(e["X-User-Email"]=this._authEmail),e}getGatewaySourceHeader(){let e=this.defaultHeaders?.["X-Source"];return e&&e.trim().length>0?e:"pandacode"}shouldUseInsecureTlsForGateway(){return Qr.tlsInsecure===!0&&(this.apiBase??"").startsWith("https://")}getOpenAIClientExtraOptions(){if(this.shouldUseInsecureTlsForGateway())return this.insecureTlsAgent||(this.insecureTlsAgent=new BL({connect:{rejectUnauthorized:!1}})),{fetch:(async(r,i)=>await jL(r,{...i??{},dispatcher:this.insecureTlsAgent}))};let e=Pl(this.apiBase??"");return e?(this.pinnedTlsAgent||(this.pinnedTlsAgent=new BL({connect:e})),{fetch:(async(o,r)=>await jL(o,{...r??{},dispatcher:this.pinnedTlsAgent}))}):{}}async getClient(){return this.client,super.getClient()}buildStreamRequestExtra(e){let n=this.getGatewaySourceHeader(),o=this._authSigningKey&&this._authGatewaySessionId?sZ(this._authSigningKey,this._authGatewaySessionId,n):{};return e.gatewayTraceId!==void 0&&e.gatewayTraceId!==""?(Object.assign(o,rZ(e.gatewayTraceId,e.gatewayTraceEnd??!1)),{headers:o}):Object.keys(o).length>0?{headers:o}:{}}requiresApiKey(){return!0}};function WL(t){if(!t.apiKey)throw new Fe("Panda gateway requires API key (X-API-Key)",{providerName:_h.providerName,model:t.model},"MISSING_API_KEY");return new _h({...t})}var aZ={"deepseek-chat":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsFim:!1},"deepseek-coder":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsFim:!0},"deepseek-reasoner":{supportsImages:!1,supportsTools:!1,supportsStreaming:!0,supportsReasoning:!0}},MS=class extends Yr{static providerName="deepseek";constructor(e){if(!e.apiKey)throw new Fe("DeepSeek API key is required",{providerName:"deepseek",model:e.model},"MISSING_API_KEY");let n=e.capabilities||aZ[e.model]||{supportsTools:!0,supportsStreaming:!0};super({...e,apiBase:e.apiBase,capabilities:n})}requiresApiKey(){return!0}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}supportsFim(){return this.model.includes("coder")}buildRequestParams(e,n,o){let r={model:this.model,messages:e,stream:o,temperature:this.normalizeTemperature(n.temperature),top_p:n.topP,frequency_penalty:n.frequencyPenalty,presence_penalty:n.presencePenalty,max_tokens:n.maxOutputTokens??this.completionOptions.maxOutputTokens,stop:n.stop,seed:n.seed},i=this.convertTools(n.tools);return i&&(r.tools=i,r.tool_choice=this.convertToolChoice(n.toolChoice)),o&&this.streamUsage&&(r.stream_options={include_usage:!0}),this.supportsReasoning()&&(r.reasoning_effort="max"),r}extractReasoningAndContent(e){if("reasoning_content"in e&&e.reasoning_content){let n={reasoning:e.reasoning_content};return e.content&&(n.content=e.content),n}return e.content?{content:e.content}:null}};function KL(t){return new MS(t)}var lZ={"kimi-k2.5":{supportsImages:!1,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0}},DS=class extends Yr{static providerName="moonshot";constructor(e){if(!e.apiKey)throw new Fe("Moonshot API key is required",{providerName:"moonshot",model:e.model},"MISSING_API_KEY");let n=e.capabilities||lZ[e.model]||{supportsTools:!0,supportsStreaming:!0};super({...e,apiBase:e.apiBase||"https://api.moonshot.cn/v1",capabilities:n})}requiresApiKey(){return!0}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}normalizeTemperature(e){let n=e??1;return n!==1&&this.logger?.debug("[Moonshot] Overriding temperature to 1 for Kimi K2.5",{model:this.model,requestedTemperature:n}),1}buildRequestParams(e,n,o){let r={model:this.model,messages:e,stream:o,temperature:this.normalizeTemperature(n.temperature),top_p:n.topP,frequency_penalty:n.frequencyPenalty,presence_penalty:n.presencePenalty,max_tokens:n.maxOutputTokens??4096,stop:n.stop,seed:n.seed},i=this.convertTools(n.tools);return i&&(r.tools=i,r.tool_choice=this.convertToolChoice(n.toolChoice)),o&&this.streamUsage&&(r.stream_options={include_usage:!0}),this.logger?.debug("[Moonshot] buildRequestParams",{model:this.model,messageCount:e.length,max_tokens:r.max_tokens,stream:o}),r}extractReasoningAndContent(e){if("reasoning_content"in e&&e.reasoning_content){let n={reasoning:e.reasoning_content};return e.content&&(n.content=e.content),n}return e.content?{content:e.content}:null}};function HL(t){return new DS(t)}import pZ from"@anthropic-ai/sdk";function Ms(t){return typeof t=="string"?t:t.filter(e=>e.type==="text").map(e=>e.text).join("")}var OS="</thinking_mode>";function VL(){return{pendingSuffix:"",pastEndTag:!1}}function cZ(t,e){for(let n=Math.min(t.length,e.length-1);n>=1;n--)if(t.endsWith(e.slice(0,n)))return n;return 0}function qL(t,e){let n=[],o=e.pendingSuffix+t;if(e.pendingSuffix="",e.pastEndTag)return o&&n.push({assistant:o}),n;let r=o.indexOf(OS);if(r!==-1){let s=o.slice(0,r);s&&n.push({thinking:s}),e.pastEndTag=!0;let a=o.slice(r+OS.length);return a&&n.push({assistant:a}),n}let i=cZ(o,OS);if(i>0){let s=o.slice(0,o.length-i);s&&n.push({thinking:s}),e.pendingSuffix=o.slice(o.length-i)}else o&&n.push({thinking:o});return n}function LS(t){if(t.pastEndTag)return;let e=t.pendingSuffix||void 0;return t.pendingSuffix="",e}function uZ(t){t.pendingSuffix="",t.pastEndTag=!1}function GL(t){let e=LS(t);return uZ(t),e}var NS={"claude-3-5-sonnet-20241022":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-5-haiku-20241022":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-opus-20240229":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-sonnet-20240229":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-3-haiku-20240307":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1},"claude-sonnet-4-20250514":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-opus-4-20250514":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-sonnet-4-5-20250929":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-opus-4-1-20250805":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-3-7-sonnet-20250219":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0},"claude-haiku-4-5-20251001":{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!0}};function fZ(t){if(t in NS)return NS[t];for(let[e,n]of Object.entries(NS))if(t.startsWith(e))return n;return{supportsImages:!0,supportsTools:!0,supportsStreaming:!0,supportsReasoning:!1}}function mZ(t){return t.includes("sonnet-4-5")||t.includes("claude-sonnet-4-5")}function gZ(t){let e=t.match(/^data:([^;]+);base64,(.+)$/);return e?e[2]:null}function hZ(t){let e=t.match(/^data:([^;]+);base64/);if(e){let n=e[1].toLowerCase();if(n==="image/png"||n==="image/jpeg"||n==="image/gif"||n==="image/webp")return n}return"image/png"}var $S=class extends ni{static providerName="anthropic";client;_authToken;_authEmail;reasoningBudgetTokens;enable1mContext;constructor(e){if(super(e),!this.apiKey)throw new Fe("Anthropic API key is required",this,"MISSING_API_KEY");this.reasoningBudgetTokens=e.reasoningBudgetTokens??2048,this.enable1mContext=e.enable1mContext??mZ(this.model),e.capabilities||(this.capabilities=fZ(this.model));let n=this.apiBase||"https://api.anthropic.com/v1";this.apiBase=n}async getClient(){return this.client||(this.client=new pZ({apiKey:this.apiKey,baseURL:this.apiBase||"https://api.anthropic.com/v1",timeout:this.requestOptions?.timeout||18e4,maxRetries:0})),this.client}setAuthToken(e){this._authToken=e,this._authEmail=this.extractEmailFromJwt(e)}requiresApiKey(){return!0}supportsReasoning(){return this.capabilities?.supportsReasoning??!1}convertTool(e){return{name:e.function.name,description:e.function.description,input_schema:e.function.parameters??{type:"object",properties:{}}}}convertMessageContentToBlocks(e){let n=[];if(typeof e=="string")e&&n.push({type:"text",text:e});else for(let o of e)if(o.type==="text")o.text&&n.push({type:"text",text:o.text});else if(o.type==="imageUrl"){let r=gZ(o.imageUrl.url);r?n.push({type:"image",source:{type:"base64",media_type:hZ(o.imageUrl.url),data:r}}):console.warn("Anthropic: image URL is not a data URL, skipping")}return n}convertToolCallsToBlocks(e){if(!e.id||!e.function?.name)return;let n={};try{let o=JSON.parse(e.function.arguments||"{}");typeof o=="object"&&o!==null&&!Array.isArray(o)&&(n=o)}catch{n={}}return{type:"tool_use",id:e.id,name:e.function.name,input:n}}getContentBlocksFromChatMessage(e){switch(e.role){case"tool":return[{type:"tool_result",tool_use_id:e.toolCallId,content:typeof e.content=="string"?e.content:Ms(e.content)}];case"user":return this.convertMessageContentToBlocks(e.content);case"thinking":if(e.redactedThinking)return[{type:"redacted_thinking",data:e.redactedThinking}];if(e.signature){let o=typeof e.content=="string"?e.content:Ms(e.content);if(o)return[{type:"thinking",thinking:o,signature:e.signature}]}return[];case"assistant":let n=this.convertMessageContentToBlocks(e.content);if("toolCalls"in e&&e.toolCalls)for(let o of e.toolCalls){let r=this.convertToolCallsToBlocks(o);r&&n.push(r)}return n;default:return[]}}addCacheControlToLastBlock(e){if(typeof e.content=="string")return{...e,content:[{type:"text",text:e.content,cache_control:{type:"ephemeral"}}]};let n=[...e.content],o=n.length-1;if(o<0)return e;let r=n[o];return r.type==="thinking"||r.type==="redacted_thinking"?e:(n[o]={...r,cache_control:{type:"ephemeral"}},{...e,content:n})}convertMessages(e,n=!1){let o=e.filter(l=>l.role!=="system"),r=[],i,s=[],a=()=>{i&&s.length>0&&(r.push({role:i,content:s}),s=[])};for(let l of o){let c=l.role==="user"||l.role==="tool"?"user":"assistant";i!==c&&(a(),i=c),s.push(...this.getContentBlocksFromChatMessage(l))}if(a(),n){let l=[];for(let u=0;u<r.length;u++)r[u].role==="user"&&l.push(u);let c=l.slice(-2);for(let u of c)r[u]=this.addCacheControlToLastBlock(r[u])}return r}getHeaders(e=!1,n){let o={"Content-Type":"application/json","anthropic-version":"2023-06-01","x-api-key":this.apiKey};return e&&(o["anthropic-beta"]="prompt-caching-2024-07-31"),this.enable1mContext&&(o["anthropic-beta"]=o["anthropic-beta"]?`${o["anthropic-beta"]},context-1m-2025-08-07`:"context-1m-2025-08-07"),o["X-Source"]=o["X-Source"]||"pandacode",this._authEmail&&!o["X-User-Email"]&&(o["X-User-Email"]=this._authEmail),n?.gatewayTraceId&&(o["AH-Trace-Id"]=n.gatewayTraceId,o["AH-Trace-End"]=n.gatewayTraceEnd?"true":"false"),this._authToken&&(o.Authorization=`Bearer ${this._authToken}`,this.apiKey&&!o["X-API-Key"]&&(o["X-API-Key"]=this.apiKey)),o}convertArgs(e){let n=this.supportsReasoning()&&(e.reasoningTokens!==void 0||this.reasoningBudgetTokens>0),o={model:this.model,max_tokens:e.maxOutputTokens??UE(this.model)??4096,temperature:n?void 0:e.temperature??0,top_p:e.topP,top_k:e.topK,stop_sequences:e.stop?.filter(r=>r.trim()!==""),stream:!0};return e.tools&&e.tools.length>0&&(o.tools=e.tools.map(r=>this.convertTool(r)),e.toolChoice?typeof e.toolChoice=="string"?e.toolChoice==="none"?o.tool_choice={type:"none"}:e.toolChoice==="auto"?o.tool_choice={type:"auto"}:e.toolChoice==="required"&&(o.tool_choice={type:"any"}):o.tool_choice={type:"tool",name:e.toolChoice.function.name}:n||(o.tool_choice={type:"any"})),n&&(o.thinking={type:"enabled",budget_tokens:e.reasoningTokens??this.reasoningBudgetTokens}),o}async*handleStreamResponse(e,n){let o,r,i="",s={promptTokens:0,completionTokens:0,promptTokensDetails:{cachedTokens:0,cacheWriteTokens:0}},a=VL();for await(let l of e){if(n?.aborted)break;switch(l.type){case"message_start":{let c=l;s.promptTokens=c.message.usage.input_tokens,s.promptTokensDetails.cachedTokens=c.message.usage.cache_read_input_tokens??void 0,s.promptTokensDetails.cacheWriteTokens=c.message.usage.cache_creation_input_tokens??void 0;break}case"message_delta":{let c=l;c.usage&&(s.completionTokens=c.usage.output_tokens);break}case"content_block_start":{let c=l;c.content_block.type==="tool_use"&&(o=c.content_block.id,r=c.content_block.name,i=""),c.content_block.type==="redacted_thinking"&&(yield{role:"thinking",content:"",redactedThinking:c.content_block.data});break}case"content_block_delta":{let c=l;switch(c.delta.type){case"text_delta":{let u=c.delta.text??"";u&&(yield{role:"assistant",content:u});break}case"thinking_delta":{let u=c.delta.thinking??"";if(!u)break;let d=qL(u,a);for(let p of d)p.thinking&&(yield{role:"thinking",content:p.thinking}),p.assistant&&(yield{role:"assistant",content:p.assistant});break}case"signature_delta":yield{role:"thinking",content:"",signature:c.delta.signature};break;case"input_json_delta":if(o&&r){i+=c.delta.partial_json||"";let u;try{let d=JSON.parse(i);typeof d=="object"&&d!==null&&!Array.isArray(d)&&(u=d)}catch{}yield{role:"assistant",content:"",toolCalls:[{id:o,type:"function",function:{name:r,arguments:c.delta.partial_json,...u?{args:u}:{}}}]}}break}break}case"content_block_stop":{let c=GL(a);c&&(yield{role:"thinking",content:c}),o=void 0,r=void 0,i="";break}case"message_stop":{let c=LS(a);c&&(yield{role:"thinking",content:c}),yield{role:"assistant",content:"",usage:s};break}}}}async*_streamChat(e,n,o){let r=e.filter(g=>g.role==="system"),i=r.length>0?typeof r[0].content=="string"?r[0].content:Ms(r[0].content):void 0,s=!!(this.cacheBehavior?.cacheSystemMessage&&i),a=!!(this.cacheBehavior?.cacheConversation||o.cacheBehavior?.cacheConversation),l=this.convertMessages(e,a),c={...this.convertArgs(o),messages:l,system:s&&i?[{type:"text",text:i,cache_control:{type:"ephemeral"}}]:i},u={},d=this.getHeaders(s||a,{gatewayTraceId:o.gatewayTraceId,gatewayTraceEnd:o.gatewayTraceEnd??!1}),p={};for(let[g,h]of Object.entries(d))g==="x-api-key"||g==="anthropic-version"||g==="Content-Type"||(p[g]=h);Object.keys(p).length>0&&(u.headers=p);let f=await this.getClient(),m=await wc(async()=>{try{return await f.messages.create(c,u)}catch(g){let h=g.message||`Anthropic API error: ${g.status||"unknown"}`;throw new Fe(h,this,g.status===401?"UNAUTHORIZED":g.status===429?"RATE_LIMIT":g.status===500?"SERVER_ERROR":"API_ERROR",g.status)}},{maxRetries:3,context:{modelId:this.model,querySource:"chat_main"},decide:xa,onRetry:(g,h,y)=>{this.logger?.debug(`Retry attempt ${h} after ${y}ms`,{error:g})}});if(!("on"in m)&&!(Symbol.asyncIterator in m))throw new Fe("Expected streaming response but got non-streaming response",this,"INVALID_RESPONSE");yield*this.handleStreamResponse(m,n)}extractEmailFromJwt(e){try{let n=e.split(".");if(n.length<2)return;let o=Buffer.from(n[1],"base64url").toString("utf8"),i=JSON.parse(o).email;return typeof i=="string"&&i.length>0?i:void 0}catch{return}}};function ZL(t){return new $S(t)}import{Ollama as wZ}from"ollama";var FS="http://localhost:11434";function JL(t){let e=(t??FS).trim();return e=e.replace(/\/v1\/?$/i,""),e=e.replace(/\/$/,""),e||FS}function yZ(t){let e=t.id;if(typeof e=="string"&&e.trim().length>0)return e}function vZ(){try{if(typeof globalThis<"u"&&"crypto"in globalThis&&typeof globalThis.crypto.randomUUID=="function")return`ollama-${globalThis.crypto.randomUUID()}`}catch{}return`ollama-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function bZ(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return!1;try{let n=JSON.parse(e);return typeof n=="object"&&n!==null&&!Array.isArray(n)}catch{return!1}}function YL(t){if(t?.length)return t.map(e=>({type:"function",function:{name:e.function.name,description:e.function.description,parameters:e.function.parameters}}))}function xZ(t){if(typeof t.content=="string")return{role:"user",content:t.content};let e=[],n=[];for(let r of t.content)if(r.type==="text")e.push(r.text);else if(r.type==="imageUrl"){let i=r.imageUrl.url,s="data:",a=i.indexOf("base64,");if(i.startsWith(s)&&a!==-1){let l=i.slice(a+7);l&&n.push(l)}}let o={role:"user",content:e.join(`
1967
+ `)};return n.length>0&&(o.images=n),o}function TZ(t){let e=Ms(t.content),n=t.toolCalls;return n?.length?{role:"assistant",content:e||" ",tool_calls:n.filter(o=>o.function?.name).map(o=>{let r={},i=o.function?.arguments;if(typeof i=="string"&&i.trim())try{let s=JSON.parse(i);typeof s=="object"&&s!==null&&!Array.isArray(s)&&(r=s)}catch{}return{function:{name:o.function.name,arguments:r}}})}:{role:"assistant",content:e}}function QL(t){let e=[];for(let n of t)switch(n.role){case"thinking":break;case"system":e.push({role:"system",content:typeof n.content=="string"?n.content:Ms(n.content)});break;case"user":e.push(xZ(n));break;case"assistant":e.push(TZ(n));break;case"tool":e.push({role:"user",content:n.content});break;default:break}return e}function XL(t,e){e?.length&&e.forEach((n,o)=>{let r=t.get(o),i=n.function?.name??r?.function?.name??"",s=r?.id??yZ(n)??vZ(),a=n.function?.arguments,l=r?.function?.arguments??"";a==null||(typeof a=="string"?bZ(a)?l=a:l=l+a:typeof a=="object"&&(l=JSON.stringify(a))),t.set(o,{id:s,type:"function",function:{name:i,arguments:l}})})}function e5(t){return[...t.entries()].sort((e,n)=>e[0]-n[0]).map(([,e])=>e)}var _Z=32768;var Sh={tags:"/api/tags",show:"/api/show",pull:"/api/pull",push:"/api/push",delete:"/api/delete"},US={llama3:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.1":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.2":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.2-vision":{supportsImages:!0,supportsStreaming:!0,supportsCompletions:!0},"llama3.3":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"qwen2.5":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"qwen2.5-coder":{supportsFim:!0,supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},qwen2:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},codellama:{supportsFim:!0,supportsStreaming:!0,supportsCompletions:!0},mistral:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},mixtral:{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},gemma:{supportsStreaming:!0,supportsCompletions:!0},gemma2:{supportsStreaming:!0,supportsCompletions:!0},phi3:{supportsStreaming:!0,supportsCompletions:!0},"phi3.5":{supportsStreaming:!0,supportsCompletions:!0},"deepseek-coder":{supportsFim:!0,supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"deepseek-v2":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"deepseek-r1":{supportsReasoning:!0,supportsStreaming:!0,supportsCompletions:!0},codestral:{supportsFim:!0,supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},"command-r":{supportsTools:!0,supportsStreaming:!0,supportsCompletions:!0},llava:{supportsImages:!0,supportsStreaming:!0,supportsCompletions:!0},moondream:{supportsImages:!0,supportsStreaming:!0,supportsCompletions:!0},"nomic-embed-text":{supportsEmbeddings:!0}},BS=class t extends ni{static providerName="ollama";nativeApiBase;installingModels=new Set;constructor(e){let n=JL(e.apiBase),o=e.capabilities??t.inferCapabilities(e.model);super({...e,apiBase:n,apiKey:e.apiKey,capabilities:o}),this.nativeApiBase=n}static inferCapabilities(e){let n=e.toLowerCase().split(":")[0];if(US[n])return US[n];for(let[o,r]of Object.entries(US))if(n.includes(o)||o.includes(n))return r;return{supportsStreaming:!0,supportsCompletions:!0,supportsTools:!1,supportsImages:!1,supportsFim:!1}}requiresApiKey(){return!1}supportsImages(){if(this.capabilities?.supportsImages!==void 0)return this.capabilities.supportsImages;let e=this.model.toLowerCase();return e.includes("vision")||e.includes("llava")||e.includes("moondream")||e.includes("gemma2")&&e.includes("27b")}supportsTools(){let e=this.model.toLowerCase();return e.includes("llama3.1")||e.includes("llama3.2")||e.includes("llama3.3")||e.includes("qwen2.5")||e.includes("qwen2")||e.includes("mistral")||e.includes("mixtral")||e.includes("command-r")?!0:this.capabilities?.supportsTools??!1}supportsFim(){let e=this.model.toLowerCase();return e.includes("coder")||e.includes("codellama")||e.includes("codestral")||(this.capabilities?.supportsFim??!1)}createOllamaClient(){let e={};return this.apiKey&&(e.Authorization=`Bearer ${this.apiKey}`),new wZ({host:this.nativeApiBase,...Object.keys(e).length>0?{headers:e}:{}})}buildOllamaOptions(e){let o={num_ctx:this.contextLength>0?this.contextLength:_Z};return e.temperature!==void 0&&(o.temperature=e.temperature),e.topP!==void 0&&(o.top_p=e.topP),e.maxOutputTokens!==void 0&&(o.num_predict=e.maxOutputTokens),e.frequencyPenalty!==void 0&&(o.frequency_penalty=e.frequencyPenalty),e.presencePenalty!==void 0&&(o.presence_penalty=e.presencePenalty),e.seed!==void 0&&(o.seed=e.seed),e.stop?.length&&(o.stop=e.stop),o}async*_streamChat(e,n,o){let r=this.createOllamaClient(),i=QL(e),s=YL(o.tools),a=()=>{r.abort()};n.addEventListener("abort",a,{once:!0});let l=new Map,c=!1,u=0,d;try{if(n.aborted)return;let p=await r.chat({model:this.model,messages:i,stream:!0,tools:s,options:this.buildOllamaOptions(o)});for await(let f of p){if(u++,n.aborted)break;if(f&&typeof f=="object"&&"error"in f&&f.error)throw new Error(String(f.error));let m=f,g=m.message;g&&(typeof g.thinking=="string"&&g.thinking.length>0&&(c=!0,yield{role:"thinking",content:g.thinking}),typeof g.content=="string"&&g.content.length>0&&(c=!0,yield{role:"assistant",content:g.content}),g.tool_calls?.length&&(XL(l,g.tool_calls),c=!0,console.log("[Panda][OllamaProvider] tool_calls chunk",{chunkIndex:u,done:m.done,raw:g.tool_calls,mergedArgumentsByIndex:Object.fromEntries([...l.entries()].map(([h,y])=>[h,y.function?.arguments??""]))})),(m.prompt_eval_count!==void 0||m.eval_count!==void 0)&&(d={promptTokens:m.prompt_eval_count??0,completionTokens:m.eval_count??0}))}if(l.size>0){let f=e5(l);console.log("[Panda][OllamaProvider] yield final toolCalls (single shot)",{deltas:f.map(m=>({id:m.id,name:m.function?.name,arguments:m.function?.arguments}))}),yield{role:"assistant",content:"",toolCalls:f}}if(d&&(yield{role:"assistant",content:"",usage:d}),!c&&l.size===0)throw new Fe(`Stream completed without any content. Received ${u} chunk(s).`,this,"NO_CONTENT")}catch(p){throw this.wrapOllamaError(p)}finally{n.removeEventListener("abort",a)}}wrapOllamaError(e){if(e instanceof Fe)return e;if(e instanceof Error){if(e.name==="AbortError")throw e;let n=e.status_code,o=this.formatOllamaErrorMessage(e.message,n);return new Fe(o,this,"OLLAMA_ERROR",n)}return new Fe("Unknown Ollama error",this,"UNKNOWN_ERROR")}formatOllamaErrorMessage(e,n){return n===404?`Model not found: ${this.model}. Make sure the model is installed in Ollama (try: ollama pull ${this.model})`:n===503?"Ollama service unavailable. Make sure Ollama is running (try: ollama serve)":e}async listModels(){try{let e=await this.fetchNativeApi(Sh.tags);return!e.models||!Array.isArray(e.models)?(this.logger?.debug("Ollama returned unexpected response format for listModels"),[{id:this.model,displayName:this.model}]):e.models.map(n=>({id:n.name,displayName:n.name}))}catch(e){return this.logger?.error("Failed to list Ollama models",e),[{id:this.model,displayName:this.model}]}}async getOllamaModelInfo(e){try{return await this.fetchNativeApi(Sh.show,{name:e})}catch(n){return this.logger?.error(`Failed to get Ollama model info for ${e}`,n),null}}async checkOllamaStatus(){try{let e=await fetch(`${this.nativeApiBase}/api/version`,{method:"GET",signal:AbortSignal.timeout(5e3)});return e.ok?{running:!0,version:(await e.json()).version}:{running:!1,error:`Ollama returned status ${e.status}`}}catch(e){return{running:!1,error:e instanceof Error?e.message:String(e)}}}async installModel(e,n,o){if(this.installingModels.has(e))throw new Error(`Model ${e} is already being installed`);this.installingModels.add(e);try{let r=await fetch(`${this.nativeApiBase}${Sh.pull}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,stream:!0}),signal:n});if(!r.ok){let l=await r.text();throw new Error(`Failed to install model ${e}: ${l}`)}if(!r.body)throw new Error(`Response body is null for model ${e} installation`);let i=r.body.getReader(),s=new TextDecoder,a="";for(;;){let{done:l,value:c}=await i.read();if(l)break;a+=s.decode(c,{stream:!0});let u=a.split(`
1968
+ `);a=u.pop()||"";for(let d of u)if(d.trim())try{let p=JSON.parse(d);if(o&&p.total&&p.completed&&o(p.status||`Installing ${e}`,p.completed,p.total),p.status==="success"){this.logger?.log(`Model ${e} installed successfully`);return}}catch{}}this.logger?.log(`Model ${e} installation stream ended`)}catch(r){throw r instanceof Error&&r.name==="AbortError"?(this.logger?.log(`Model ${e} installation cancelled`),r):new Error(`Failed to install model ${e}: ${r instanceof Error?r.message:String(r)}`)}finally{this.installingModels.delete(e)}}async isInstallingModel(e){return this.installingModels.has(e)}async deleteModel(e){try{let n=await fetch(`${this.nativeApiBase}${Sh.delete}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})});if(!n.ok){let o=await n.text();throw new Error(`Failed to delete model ${e}: ${o}`)}this.logger?.log(`Model ${e} deleted successfully`)}catch(n){throw new Error(`Failed to delete model ${e}: ${n instanceof Error?n.message:String(n)}`)}}async fetchNativeApi(e,n,o){let r=`${this.nativeApiBase}${e}`,i=o?.timeout??3e4,s=await fetch(r,{method:n?"POST":"GET",headers:n?{"Content-Type":"application/json"}:void 0,body:n?JSON.stringify(n):void 0,signal:AbortSignal.timeout(i)});if(!s.ok){let a=await s.text();throw new Error(`Ollama API error (${e}): ${a}`)}return s.json()}};function t5(t){return new BS(t)}function kh(t){return`Panda model "${t&&t.length>0?t:"(unknown)"}" missing API key. Please configure apiKeyRef or apiKeyEnv for this model before sending.`}var SZ=["ollama"];function kZ(t){return t.apiKey}function IZ(t){return!SZ.includes(t)}async function n5(t,e){let{provider:n,model:o,apiBase:r,organization:i,project:s,reasoningBudgetTokens:a,enable1mContext:l,contextLength:c,maxOutputTokens:u}=t;if(!n)throw new Error("LLM config must have a provider.");let d=kZ(t);if(n==="panda"&&!d)throw new Error(kh(o));if(IZ(n)&&!d)throw new Error(`LLM config for provider '${n}' must have an API key.`);switch(n){case"panda":return WL({model:o,apiKey:d,apiBase:r,organization:i,project:s,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"openai":return FL({model:o,apiKey:d,apiBase:r,organization:i,project:s,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"deepseek":return KL({model:o,apiKey:d,apiBase:r,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"moonshot":return HL({model:o,apiKey:d,apiBase:r,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"anthropic":return ZL({model:o,apiKey:d,apiBase:r,reasoningBudgetTokens:a,enable1mContext:l,contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});case"ollama":return t5({model:o,apiBase:r||"http://localhost:11434",contextLength:c,capabilities:e,...typeof u=="number"&&u>0?{completionOptions:{model:o,maxOutputTokens:u,temperature:.5}}:{}});default:throw new Error(`Unsupported LLM provider: ${n}`)}}var wt={AuthUser:"auth.user",AuthExpiresAt:"auth.expiresAt",DrawerTodo:"chat.drawerTodo",SkillsDisabledPaths:"skills.disabledPaths",ModelsDisabledIds:"models.disabledIds",ModelCatalog:"models.catalog",DefaultModelId:"models.defaultModelId",ModelCatalogVersion:"models.catalogVersion",ImportSetupCompleted:"import.setupCompleted",ImportCompleted:"import.completed"},Bt={AccessToken:"auth.accessToken",RefreshToken:"auth.refreshToken",GatewaySessionId:"auth.gatewaySessionId",GatewaySigningKey:"auth.gatewaySigningKey"};import*as r5 from"fs";import*as o5 from"os";import*as qu from"path";import{DatabaseSync as CZ}from"node:sqlite";import*as Ih from"fs";var jS=class{constructor(e){this.db=e}db;async exec(e){this.db.exec(e)}async run(e,n=[]){this.db.prepare(e).run(...n)}async get(e,n=[]){return this.db.prepare(e).get(...n)}async all(e,n=[]){return this.db.prepare(e).all(...n)??[]}async close(){this.db.close()}async transaction(e){this.db.exec("BEGIN TRANSACTION");try{let n=await e();return this.db.exec("COMMIT"),n}catch(n){try{this.db.exec("ROLLBACK")}catch{}throw n}}};async function Rl(t,e={}){e.fileMustExist&&await Ih.promises.access(t,Ih.constants.F_OK);let n=new CZ(t,{readOnly:e.readonly??!1,timeout:5e3});return new jS(n)}var EZ=["CREATE TABLE IF NOT EXISTS state_kv ("," key TEXT PRIMARY KEY,"," value TEXT NOT NULL,"," updated_at INTEGER NOT NULL",");"].join(`
1969
+ `),PZ=["CREATE TABLE IF NOT EXISTS secret_kv ("," key TEXT PRIMARY KEY,"," encrypted_value TEXT NOT NULL,"," updated_at INTEGER NOT NULL",");"].join(`
1970
+ `),Ri=class{dbPromise;dbPath;constructor(e){let n=e??process.env.PANDA_HOME??qu.join(o5.homedir(),".panda");this.dbPath=qu.join(n,"data","state.db"),this.dbPromise=this.open()}async open(){await r5.promises.mkdir(qu.dirname(this.dbPath),{recursive:!0});let e=await Rl(this.dbPath);return await e.exec(EZ),await e.exec(PZ),e}async run(e,n=[]){await(await this.dbPromise).run(e,n)}async get(e,n=[]){return await(await this.dbPromise).get(e,n)}async all(e,n=[]){return await(await this.dbPromise).all(e,n)}},Ai=class{constructor(e){this.db=e}db;_serviceBrand;async getString(e){return(await this.db.get("SELECT value FROM state_kv WHERE key = ?",[e]))?.value}async setString(e,n){await this.db.run("INSERT INTO state_kv(key, value, updated_at) VALUES (?, ?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at",[e,n,Date.now()])}async remove(e){await this.db.run("DELETE FROM state_kv WHERE key = ?",[e])}async list(e){return e&&e.length>0?(await this.db.all("SELECT key FROM state_kv WHERE key LIKE ? ORDER BY key ASC",[`${e}%`])).map(r=>r.key):(await this.db.all("SELECT key FROM state_kv ORDER BY key ASC")).map(o=>o.key)}};import*as Di from"crypto";import*as Ch from"fs";import*as Eh from"path";import*as i5 from"os";var Ds={V11:"v11",V12:"v12"};var Mi=class t{static SERVICE_NAME="Panda Safe Storage";static ACCOUNT_NAME="Panda";static SALT="saltysalt";static KEY_LENGTH=16;static IV_LENGTH=16;entry=null;key=null;initialized=!1;mode="none";pandaHome;logService;constructor(e={}){this.pandaHome=e.pandaHome??process.env.PANDA_HOME??i5.homedir()+"/.panda",this.logService=e.logService}async initialize(){if(this.initialized)return this.key!==null;if(process.env.PANDA_ENCRYPTION_KEY)return this.key=this.deriveKey(process.env.PANDA_ENCRYPTION_KEY),this.mode="env",this.initialized=!0,this.log("trace","[SharedEncryption] Using PANDA_ENCRYPTION_KEY env"),!0;try{if(this.entry=await this.loadKeyringEntry(),this.entry){let e=this.entry.getPassword();if(e)return this.key=this.deriveKey(e),this.mode="keyring",this.initialized=!0,this.log("trace","[SharedEncryption] Initialized with keyring key"),!0}}catch{this.entry=null}if(this.log("trace","[SharedEncryption] Keyring unavailable, trying file fallback"),this.key=await this.initializeFallback(),this.key)return this.initialized=!0,!0;try{let e=this.generatePassword();return this.entry?(this.entry.setPassword(e),this.mode="keyring",this.log("trace","[SharedEncryption] Created new keyring key")):(await this.saveFallbackKey(e),this.mode="file",this.log("trace","[SharedEncryption] Created new fallback key file")),this.key=this.deriveKey(e),this.initialized=!0,!0}catch(e){this.log("error","[SharedEncryption] Failed to create key",e)}return this.initialized=!0,this.log("error","[SharedEncryption] Initialization failed"),!1}async encrypt(e){if(!this.key)throw new Error("Encryption not initialized");let n=Buffer.alloc(t.IV_LENGTH," "),o=Di.createCipheriv("aes-128-cbc",this.key,n);o.setAutoPadding(!0);let r=o.update(e,"utf8","base64");return r+=o.final("base64"),Ds.V12+r}async decrypt(e){let n=e.slice(0,3),o=e.slice(3);if(n===Ds.V12){if(!this.key)throw new Error("Encryption not initialized");let r=Buffer.alloc(t.IV_LENGTH," "),i=Di.createDecipheriv("aes-128-cbc",this.key,r);i.setAutoPadding(!0);let s=i.update(o,"base64","utf8");return s+=i.final("utf8"),s}throw new Error(`Unknown encryption version: ${n}`)}static getVersion(e){return e.slice(0,3)}static isV12(e){return e.startsWith(Ds.V12)}isAvailable(){return this.key!==null}getMode(){return this.mode}getKeyFilePath(){return this.mode!=="file"?null:Eh.join(this.pandaHome,".secret")}async loadKeyringEntry(){try{let{Entry:e}=await import("@napi-rs/keyring");return new e(t.SERVICE_NAME,t.ACCOUNT_NAME)}catch{return this.log("trace","[SharedEncryption] @napi-rs/keyring unavailable; will try file/env fallback"),null}}deriveKey(e){return Di.scryptSync(e,t.SALT,t.KEY_LENGTH)}generatePassword(){return Di.randomBytes(16).toString("base64")}async initializeFallback(){let e=Eh.join(this.pandaHome,".secret");try{let n=await Ch.promises.readFile(e,"utf8");return this.mode="file",this.log("trace","[SharedEncryption] Using existing fallback key"),this.deriveKey(n.trim())}catch{return null}}async saveFallbackKey(e){let n=Eh.join(this.pandaHome,".secret");await Ch.promises.mkdir(this.pandaHome,{recursive:!0}),await Ch.promises.writeFile(n,e,{mode:384})}log(e,n,o){this.logService&&(e==="trace"?this.logService.trace(n):this.logService.error(n,o))}};var Al=class{constructor(e,n){this.db=e;this.encryption=new Mi({pandaHome:n})}db;_serviceBrand;encryption;initialized=!1;async ensureInitialized(){this.initialized||(await this.encryption.initialize(),this.initialized=!0)}async getSecret(e){await this.ensureInitialized();let n=await this.db.get("SELECT encrypted_value FROM secret_kv WHERE key = ?",[e]);if(n?.encrypted_value)return this.encryption.decrypt(n.encrypted_value)}async setSecret(e,n){await this.ensureInitialized();let o=await this.encryption.encrypt(n);await this.db.run("INSERT INTO secret_kv(key, encrypted_value, updated_at) VALUES (?, ?, ?) ON CONFLICT(key) DO UPDATE SET encrypted_value = excluded.encrypted_value, updated_at = excluded.updated_at",[e,o,Date.now()])}async deleteSecret(e){await this.db.run("DELETE FROM secret_kv WHERE key = ?",[e])}async listSecretKeys(e){return e&&e.length>0?(await this.db.all("SELECT key FROM secret_kv WHERE key LIKE ? ORDER BY key ASC",[`${e}%`])).map(r=>r.key):(await this.db.all("SELECT key FROM secret_kv ORDER BY key ASC")).map(o=>o.key)}};function Gu(t){let e=t.trim().replace(/\/+$/,"");return e.endsWith("/api")&&(e=e.slice(0,-4)),e}function Ph(t,e){let n=Gu(t),o=e.startsWith("/")?e:`/${e}`;return`${n}/api${o}`}import{Agent as s5,fetch as a5}from"undici";var Xr=15e3,WS="pandacode",zS,l5=new Map;function eo(t,e){let n=e?.trim()||t?.trim()||"";return Gu(n)}function to(t,e){return Ph(t,e)}function RZ(t){return Qr.tlsInsecure===!0&&t.startsWith("https://")}async function no(t,e){if(RZ(t))return zS||(zS=new s5({connect:{rejectUnauthorized:!1}})),await a5(t,{...e,dispatcher:zS});let n=Pl(t);if(n){let o=l5.get(t);return o||(o=new s5({connect:n}),l5.set(t,o)),await a5(t,{...e,dispatcher:o})}return fetch(t,e)}async function ro(t){let e=await t.text();if(!t.ok){let n;try{n=JSON.parse(e)}catch{}let o=n?.error_description||t.statusText||e||"Request failed";throw new Error(o)}if(e)return JSON.parse(e)}async function c5(t,e,n,o){let r=eo(t,o);if(!r)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\uFF08\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\uFF09");let i=new AbortController,s=setTimeout(()=>i.abort(),Xr);try{let a=await no(to(r,"/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim(),password:n,appId:WS}),signal:i.signal});return ro(a)}catch(a){throw a instanceof Error?a.name==="AbortError"?new Error("\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u8BA4\u8BC1\u670D\u52A1\u5730\u5740"):a:new Error(String(a))}finally{clearTimeout(s)}}async function u5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{let s=await no(to(o,"/auth/verify"),{method:"GET",headers:{Authorization:`Bearer ${e}`},signal:r.signal});return ro(s)}finally{clearTimeout(i)}}async function d5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{let s=await no(to(o,"/auth/refresh"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refresh_token:e,appId:WS}),signal:r.signal});return ro(s)}finally{clearTimeout(i)}}async function p5(t,e,n,o){let r=eo(t,o);if(!r)return;let i=new AbortController,s=setTimeout(()=>i.abort(),Xr);try{let a=JSON.stringify({refresh_token:n,appId:WS});await ro(await no(to(r,"/auth/logout"),{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:a,signal:i.signal}))}finally{clearTimeout(s)}}async function f5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{await ro(await no(to(o,"/auth/password/change/verification/send"),{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},signal:r.signal}))}finally{clearTimeout(i)}}async function m5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{await ro(await no(to(o,"/auth/password/reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim()}),signal:r.signal}))}finally{clearTimeout(i)}}async function g5(t,e,n,o,r){let i=eo(t,r);if(!i)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let s=new AbortController,a=setTimeout(()=>s.abort(),Xr);try{await ro(await no(to(i,"/auth/password/reset"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim(),verificationCode:n.trim(),newPassword:o}),signal:s.signal}))}finally{clearTimeout(a)}}async function h5(t,e,n,o){let r=eo(t,o);if(!r)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let i=new AbortController,s=setTimeout(()=>i.abort(),Xr);try{let a={newPassword:n.newPassword};n.verificationCode!==void 0&&(a.verificationCode=n.verificationCode),n.currentPassword!==void 0&&(a.currentPassword=n.currentPassword);let l=await no(to(r,"/auth/password/change"),{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify(a),signal:i.signal});return ro(l)}finally{clearTimeout(s)}}async function y5(t,e,n){let o=eo(t,n);if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let r=new AbortController,i=setTimeout(()=>r.abort(),Xr);try{await ro(await no(to(o,"/auth/verification/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim()}),signal:r.signal}))}finally{clearTimeout(i)}}async function v5(t,e,n,o,r,i,s,a){let l=eo(t,a);if(!l)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E");let c=new AbortController,u=setTimeout(()=>c.abort(),Xr);try{let d=s?s.trim():void 0;await ro(await no(to(l,"/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.trim(),email:n.trim(),password:o,confirmPassword:r,displayName:d,verificationCode:i.trim()}),signal:c.signal}))}finally{clearTimeout(u)}}var Rh=class{login(e,n,o){return c5(e,n,o)}verify(e,n){return u5(e,n)}refresh(e,n){return d5(e,n)}logout(e,n,o){return p5(e,n,o)}sendChangePasswordVerificationCode(e,n){return f5(e,n)}async changePassword(e,n,o){await h5(e,n,o)}sendVerificationCode(e,n){return y5(e,n)}sendResetPasswordVerificationCode(e,n){return m5(e,n)}resetPassword(e,n){return g5(e,n.email,n.verificationCode,n.newPassword)}register(e,n){return v5(e,n.username,n.email,n.password,n.confirmPassword,n.verificationCode,n.displayName)}};var Ah=class{constructor(e,n,o){this.storage=e;this.api=n;this.logger=o}storage;api;logger;async checkSession(e){let n=await this.storage.getAccessToken(),o=await this.storage.getRefreshToken();if(!n||!o)return await this.storage.clearSession(),{ok:!1};try{let r=await this.api.verify(e,n);if(r.valid&&r.user){let i=r.expires_at??Date.now()+36e5;return await this.storage.setUserAndExpiry(r.user,i),{ok:!0,user:r.user}}}catch{}try{let r=await this.api.refresh(e,o),i=await this.storage.getStoredUser();if(!i)return await this.storage.clearSession(),{ok:!1};let s={accessToken:r.access_token,refreshToken:r.refresh_token??o,sessionId:r.sid,signingKey:r.sk,user:i,expiresAt:Date.now()+(r.expires_in??3600)*1e3};return await this.storage.setSession(s),{ok:!0,user:i}}catch{return await this.storage.clearSession(),{ok:!1}}}async login(e,n,o){let r=await this.api.login(e,n,o),i={accessToken:r.access_token,refreshToken:r.refresh_token,sessionId:r.sid,signingKey:r.sk,user:r.user,expiresAt:Date.now()+(r.expires_in??3600)*1e3};return await this.storage.setSession(i),this.logger.info("[PandaAuthCore] login success",r.user.username),r.user}async logout(e){let n=await this.storage.getAccessToken(),o=await this.storage.getRefreshToken();if(n)try{await this.api.logout(e,n,o)}catch(r){this.logger.warn("[PandaAuthCore] logout api failed",r)}await this.storage.clearSession()}async sendVerificationCode(e,n){await this.api.sendVerificationCode(e,n)}async register(e,n){await this.api.register(e,{username:n.email,email:n.email,password:n.password,confirmPassword:n.confirmPassword,verificationCode:n.verificationCode,displayName:n.displayName})}async sendChangePasswordVerificationCode(e){let n=await this.storage.getAccessToken();if(!n)throw new Error("\u672A\u767B\u5F55\uFF0C\u65E0\u6CD5\u4FEE\u6539\u5BC6\u7801");await this.api.sendChangePasswordVerificationCode(e,n)}async sendResetPasswordVerificationCode(e,n){await this.api.sendResetPasswordVerificationCode(e,n)}async changePassword(e,n){let o=await this.storage.getAccessToken();if(!o)throw new Error("\u672A\u767B\u5F55\uFF0C\u65E0\u6CD5\u4FEE\u6539\u5BC6\u7801");await this.api.changePassword(e,o,n),this.logger.info("[PandaAuthCore] password changed, clearing session"),await this.storage.clearSession()}async resetPassword(e,n){await this.api.resetPassword(e,n),this.logger.info("[PandaAuthCore] password reset, clearing session"),await this.storage.clearSession()}};var Ml=class{stateStore;secretStore;authCore;_currentUser;constructor(){let e=new Ri;this.stateStore=new Ai(e),this.secretStore=new Al(e);let n={getAccessToken:()=>this.secretStore.getSecret(Bt.AccessToken),getRefreshToken:()=>this.secretStore.getSecret(Bt.RefreshToken),getStoredUser:async()=>{let o=await this.stateStore.getString(wt.AuthUser);if(o)try{return JSON.parse(o)}catch{return}},setSession:async o=>{await this.secretStore.setSecret(Bt.AccessToken,o.accessToken),await this.secretStore.setSecret(Bt.RefreshToken,o.refreshToken),await this.secretStore.setSecret(Bt.GatewaySessionId,o.sessionId),await this.secretStore.setSecret(Bt.GatewaySigningKey,o.signingKey),await this.stateStore.setString(wt.AuthUser,JSON.stringify(o.user)),await this.stateStore.setString(wt.AuthExpiresAt,String(o.expiresAt)),this._currentUser=o.user},setUserAndExpiry:async(o,r)=>{await this.stateStore.setString(wt.AuthUser,JSON.stringify(o)),await this.stateStore.setString(wt.AuthExpiresAt,String(r)),this._currentUser=o},clearSession:async()=>{await this.secretStore.deleteSecret(Bt.AccessToken),await this.secretStore.deleteSecret(Bt.RefreshToken),await this.secretStore.deleteSecret(Bt.GatewaySessionId),await this.secretStore.deleteSecret(Bt.GatewaySigningKey),await this.stateStore.remove(wt.AuthUser),await this.stateStore.remove(wt.AuthExpiresAt),this._currentUser=void 0}};this.authCore=new Ah(n,new Rh,console)}getAuthBaseUrl(){let n=Qr.authBaseUrl?.trim()||"";return n?Gu(n):""}async checkSession(){let e=this.getAuthBaseUrl();if(!e)return{ok:!0,user:this._currentUser};let n=await this.authCore.checkSession(e);return this._currentUser=n.user,n}async login(e,n){let o=this.getAuthBaseUrl();if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");let r=await this.authCore.login(o,e,n);return this._currentUser=r,r}async logout(){let e=this.getAuthBaseUrl();if(!e){this._currentUser=void 0;return}await this.authCore.logout(e),this._currentUser=void 0}async sendRegisterVerificationCode(e){let n=this.getAuthBaseUrl();if(!n)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.sendVerificationCode(n,e)}async register(e,n,o,r,i){let s=this.getAuthBaseUrl();if(!s)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.register(s,{email:e,password:o,confirmPassword:r,verificationCode:n,displayName:i})}async sendChangePasswordVerificationCode(){let e=this.getAuthBaseUrl();if(!e)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.sendChangePasswordVerificationCode(e)}async sendResetPasswordVerificationCode(e){let n=this.getAuthBaseUrl();if(!n)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.sendResetPasswordVerificationCode(n,e)}async changePassword(e,n){let o=this.getAuthBaseUrl();if(!o)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.changePassword(o,{verificationCode:e,newPassword:n})}async resetPassword(e,n,o){let r=this.getAuthBaseUrl();if(!r)throw new Error("\u8BA4\u8BC1\u670D\u52A1\u5730\u5740\u672A\u914D\u7F6E\u3002\u8BF7\u5728 product.json.panda.authBaseUrl \u4E2D\u914D\u7F6E\u3002");await this.authCore.resetPassword(r,{email:e,verificationCode:n,newPassword:o})}async getAccessToken(){return this.secretStore.getSecret(Bt.AccessToken)}async getRefreshToken(){return this.secretStore.getSecret(Bt.RefreshToken)}async getGatewaySessionId(){return this.secretStore.getSecret(Bt.GatewaySessionId)}async getGatewaySigningKey(){return this.secretStore.getSecret(Bt.GatewaySigningKey)}async getCurrentUser(){if(this._currentUser)return this._currentUser;let e=await this.stateStore.getString(wt.AuthUser);if(e)try{return this._currentUser=JSON.parse(e),this._currentUser}catch{return}}};var Oi;(r=>{r.serviceIds=new Map,r.DI_TARGET="$di$target",r.DI_DEPENDENCIES="$di$dependencies";function o(i){return i[r.DI_DEPENDENCIES]||[]}r.getServiceDependencies=o})(Oi||={});var vIe=Bn("instantiationService");function AZ(t,e,n){e[Oi.DI_TARGET]===e?e[Oi.DI_DEPENDENCIES].push({id:t,index:n}):(e[Oi.DI_DEPENDENCIES]=[{id:t,index:n}],e[Oi.DI_TARGET]=e)}function Bn(t){if(Oi.serviceIds.has(t))return Oi.serviceIds.get(t);let e=function(n,o,r){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");AZ(e,n,r)};return e.toString=()=>t,Oi.serviceIds.set(t,e),e}var Zu=Bn("pandaStateStore");var Dl=class{constructor(e){this.stateStore=e;this.loadFromStorage()}stateStore;models=new Map;defaultModelId;_onDidChange=new Ve;async loadFromStorage(){try{let e=await this.stateStore.getString(wt.ModelCatalog),n=await this.stateStore.getString(wt.DefaultModelId);if(e){let o=JSON.parse(e);this.models.clear();for(let r of o){let i={...r,source:"storage"};this.models.set(r.id,i)}this.defaultModelId=n}}catch(e){console.error("[VSCodeStorageModelProvider] Failed to load from storage:",e),this.models.clear(),this.defaultModelId=void 0}}async save(e,n){try{let o=e.map(i=>({...i,apiKeyConfig:{apiKeyRef:i.apiKeyConfig.apiKeyRef,apiKeyEnv:i.apiKeyConfig.apiKeyEnv}})),r=JSON.stringify(o);await this.stateStore.setString(wt.ModelCatalog,r),n&&await this.stateStore.setString(wt.DefaultModelId,n),this.models.clear();for(let i of e)this.models.set(i.id,i);this.defaultModelId=n,this._onDidChange.fire()}catch(o){throw console.error("[VSCodeStorageModelProvider] Failed to save to storage:",o),o}}async listModels(){return Array.from(this.models.values())}async getModelById(e){return this.models.get(e)}async getDefaultModelId(){if(this.defaultModelId&&this.models.has(this.defaultModelId))return this.defaultModelId;let e=Array.from(this.models.values());if(e.length>0)return e[0].id}async refresh(){await this.loadFromStorage()}async clear(){await this.stateStore.remove(wt.ModelCatalog),await this.stateStore.remove(wt.DefaultModelId),await this.stateStore.remove(wt.ModelCatalogVersion),this.models.clear(),this.defaultModelId=void 0,this._onDidChange.fire()}hasStoredModels(){return this.models.size>0}onDidChange=this._onDidChange.event};Dl=ma([Or(0,Zu)],Dl);ii();ii();var NIe=Bn("configurationService");function b5(t){return t.replace(/^\[/,"").replace(/]$/g,"").replace(/\]\[/g,", ")}function x5(t){let e=!1,n=new Map,o=new Map;if(MZ(t,u=>{if(t===u)return!0;let d=JSON.stringify(u);if(d.length<30)return!0;let p=n.get(d);if(!p){let f={schemas:[u]};return n.set(d,f),o.set(u,f),!0}return p.schemas.push(u),o.set(u,p),e=!0,!1}),n.clear(),!e)return JSON.stringify(t);let i="$defs";for(;t.hasOwnProperty(i);)i+="_";let s=[];function a(u){return JSON.stringify(u,(d,p)=>{if(p!==u){let f=o.get(p);if(f&&f.schemas.length>1)return f.id||(f.id=`_${s.length}`,s.push(f.schemas[0])),{$ref:`#/${i}/${f.id}`}}return p})}let l=a(t),c=[];for(let u=0;u<s.length;u++)c.push(`"_${u}":${a(s[u])}`);return c.length?`${l.substring(0,l.length-1)},"${i}":{${c.join(",")}}}`:l}function Ol(t){return typeof t=="object"&&t!==null}function MZ(t,e){if(!t||typeof t!="object")return;let n=(...l)=>{for(let c of l)Ol(c)&&s.push(c)},o=(...l)=>{for(let c of l)if(Ol(c))for(let u in c){let d=c[u];Ol(d)&&s.push(d)}},r=(...l)=>{for(let c of l)if(Array.isArray(c))for(let u of c)Ol(u)&&s.push(u)},i=l=>{if(Array.isArray(l))for(let c of l)Ol(c)&&s.push(c);else Ol(l)&&s.push(l)},s=[t],a=s.pop();for(;a;)e(a)&&(n(a.additionalItems,a.additionalProperties,a.not,a.contains,a.propertyNames,a.if,a.then,a.else,a.unevaluatedItems,a.unevaluatedProperties),o(a.definitions,a.$defs,a.properties,a.patternProperties,a.dependencies,a.dependentSchemas),r(a.anyOf,a.allOf,a.oneOf,a.prefixItems),i(a.items)),a=s.pop()}var HS=class{constructor(){this.data=new Map}add(e,n){Jp(Yp(e)),Jp(Fr(n)),Jp(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,n)}knows(e){return this.data.has(e)}as(e){return this.data.get(e)||null}dispose(){this.data.forEach(e=>{vR(e.dispose)&&e.dispose()}),this.data.clear()}},Os=new HS;var qS={JSONContribution:"base.contributions.json"};function T5(t){return t.length>0&&t.charAt(t.length-1)==="#"?t.substring(0,t.length-1):t}var VS=class extends Tt{constructor(){super(...arguments);this.schemasById={};this.schemaAssociations={};this._onDidChangeSchema=this._register(new Ve);this.onDidChangeSchema=this._onDidChangeSchema.event;this._onDidChangeSchemaAssociations=this._register(new Ve);this.onDidChangeSchemaAssociations=this._onDidChangeSchemaAssociations.event}registerSchema(n,o,r){let i=T5(n);this.schemasById[i]=o,this._onDidChangeSchema.fire(n),r&&r.add(bs(()=>{delete this.schemasById[i],this._onDidChangeSchema.fire(n)}))}registerSchemaAssociation(n,o){let r=T5(n);return this.schemaAssociations[r]||(this.schemaAssociations[r]=[]),this.schemaAssociations[r].includes(o)||(this.schemaAssociations[r].push(o),this._onDidChangeSchemaAssociations.fire()),bs(()=>{let i=this.schemaAssociations[r];if(i){let s=i.indexOf(o);s!==-1&&(i.splice(s,1),i.length===0&&delete this.schemaAssociations[r],this._onDidChangeSchemaAssociations.fire())}})}notifySchemaChanged(n){this._onDidChangeSchema.fire(n)}getSchemaContributions(){return{schemas:this.schemasById}}getSchemaContent(n){let o=this.schemasById[n];return o?x5(o):void 0}hasSchemaContent(n){return!!this.schemasById[n]}getSchemaAssociations(){return this.schemaAssociations}},OZ=new VS;Os.add(qS.JSONContribution,OZ);sb();var mn,GS=globalThis.vscode;if(typeof GS<"u"&&typeof GS.context<"u"){let t=GS.context.configuration();if(t)mn=t.product;else throw new Error("Sandbox: unable to resolve product configuration from preload script.")}else if(globalThis._VSCODE_PRODUCT_JSON&&globalThis._VSCODE_PACKAGE_JSON){mn=globalThis._VSCODE_PRODUCT_JSON,Np.VSCODE_DEV&&Object.assign(mn,{nameShort:`${mn.nameShort} Dev`,nameLong:`${mn.nameLong} Dev`,dataFolderName:`${mn.dataFolderName}-dev`,serverDataFolderName:mn.serverDataFolderName?`${mn.serverDataFolderName}-dev`:void 0});let t=globalThis._VSCODE_PACKAGE_JSON;mn.version||Object.assign(mn,{version:t.version}),mn.pandaVersion||Object.assign(mn,{pandaVersion:t.version})}else mn={},Object.keys(mn).length===0&&Object.assign(mn,{version:"1.104.0-dev",nameShort:"Code - OSS Dev",nameLong:"Code - OSS Dev",applicationName:"code-oss",dataFolderName:".vscode-oss",urlProtocol:"code-oss",reportIssueUrl:"https://github.com/microsoft/vscode/issues/new",licenseName:"MIT",licenseUrl:"https://github.com/microsoft/vscode/blob/main/LICENSE.txt",serverLicenseUrl:"https://github.com/microsoft/vscode/blob/main/LICENSE.txt"});var Mh=mn;var JS={Configuration:"base.contributions.configuration"};var Dh={properties:{},patternProperties:{}},Oh={properties:{},patternProperties:{}},Lh={properties:{},patternProperties:{}},Nh={properties:{},patternProperties:{}},$h={properties:{},patternProperties:{}},Fh={properties:{},patternProperties:{}},Ju={properties:{},patternProperties:{}},Ls="vscode://schemas/settings/resourceLanguage";var Uh=Os.as(qS.JSONContribution),ZS=class extends Tt{constructor(){super();this.registeredConfigurationDefaults=[];this.overrideIdentifiers=new Set;this._onDidSchemaChange=this._register(new Ve);this.onDidSchemaChange=this._onDidSchemaChange.event;this._onDidUpdateConfiguration=this._register(new Ve);this.onDidUpdateConfiguration=this._onDidUpdateConfiguration.event;this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:_e("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(n,o=!0){return this.registerConfigurations([n],o),n}registerConfigurations(n,o=!0){let r=new Set;this.doRegisterConfigurations(n,o,r),Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:r})}deregisterConfigurations(n){let o=new Set;this.doDeregisterConfigurations(n,o),Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o})}updateConfigurations({add:n,remove:o}){let r=new Set;this.doDeregisterConfigurations(o,r),this.doRegisterConfigurations(n,!1,r),Uh.registerSchema(Ls,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:r})}registerDefaultConfigurations(n){let o=new Set;this.doRegisterDefaultConfigurations(n,o),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o,defaultsOverrides:!0})}doRegisterDefaultConfigurations(n,o){this.registeredConfigurationDefaults.push(...n);let r=[];for(let{overrides:i,source:s}of n)for(let a in i){o.add(a);let l=this.configurationDefaultsOverrides.get(a)??this.configurationDefaultsOverrides.set(a,{configurationDefaultOverrides:[]}).get(a),c=i[a];if(l.configurationDefaultOverrides.push({value:c,source:s}),Yu.test(a)){let u=this.mergeDefaultConfigurationsForOverrideIdentifier(a,c,s,l.configurationDefaultOverrideValue);if(!u)continue;l.configurationDefaultOverrideValue=u,this.updateDefaultOverrideProperty(a,u,s),r.push(...LZ(a))}else{let u=this.mergeDefaultConfigurationsForConfigurationProperty(a,c,s,l.configurationDefaultOverrideValue);if(!u)continue;l.configurationDefaultOverrideValue=u;let d=this.configurationProperties[a];d&&(this.updatePropertyDefaultValue(a,d),this.updateSchema(a,d))}}this.doRegisterOverrideIdentifiers(r)}deregisterDefaultConfigurations(n){let o=new Set;this.doDeregisterDefaultConfigurations(n,o),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o,defaultsOverrides:!0})}doDeregisterDefaultConfigurations(n,o){for(let r of n){let i=this.registeredConfigurationDefaults.indexOf(r);i!==-1&&this.registeredConfigurationDefaults.splice(i,1)}for(let{overrides:r,source:i}of n)for(let s in r){let a=this.configurationDefaultsOverrides.get(s);if(!a)continue;let l=a.configurationDefaultOverrides.findIndex(c=>i?c.source?.id===i.id:c.value===r[s]);if(l!==-1){if(a.configurationDefaultOverrides.splice(l,1),a.configurationDefaultOverrides.length===0&&this.configurationDefaultsOverrides.delete(s),Yu.test(s)){let c;for(let u of a.configurationDefaultOverrides)c=this.mergeDefaultConfigurationsForOverrideIdentifier(s,u.value,u.source,c);c&&!yR(c.value)?(a.configurationDefaultOverrideValue=c,this.updateDefaultOverrideProperty(s,c,i)):(this.configurationDefaultsOverrides.delete(s),delete this.configurationProperties[s],delete this.defaultLanguageConfigurationOverridesNode.properties[s])}else{let c;for(let d of a.configurationDefaultOverrides)c=this.mergeDefaultConfigurationsForConfigurationProperty(s,d.value,d.source,c);a.configurationDefaultOverrideValue=c;let u=this.configurationProperties[s];u&&(this.updatePropertyDefaultValue(s,u),this.updateSchema(s,u))}o.add(s)}}this.updateOverridePropertyPatternKey()}updateDefaultOverrideProperty(n,o,r){let i={section:{id:this.defaultLanguageConfigurationOverridesNode.id,title:this.defaultLanguageConfigurationOverridesNode.title,order:this.defaultLanguageConfigurationOverridesNode.order,extensionInfo:this.defaultLanguageConfigurationOverridesNode.extensionInfo},type:"object",default:o.value,description:_e("defaultLanguageConfiguration.description","Configure settings to be overridden for {0}.",b5(n)),$ref:Ls,defaultDefaultValue:o.value,source:r,defaultValueSource:r};this.configurationProperties[n]=i,this.defaultLanguageConfigurationOverridesNode.properties[n]=i}mergeDefaultConfigurationsForOverrideIdentifier(n,o,r,i){let s=i?.value||{},a=i?.source??new Map;if(!(a instanceof Map)){console.error("objectConfigurationSources is not a Map");return}for(let l of Object.keys(o)){let c=o[l];if(Fr(c)&&(Ea(s[l])||Fr(s[l]))){if(s[l]={...s[l]??{},...c},r)for(let d in c)a.set(`${l}.${d}`,r)}else s[l]=c,r?a.set(l,r):a.delete(l)}return{value:s,source:a}}mergeDefaultConfigurationsForConfigurationProperty(n,o,r,i){let s=this.configurationProperties[n],a=i?.value??s?.defaultDefaultValue,l=r;if(Fr(o)&&(s!==void 0&&s.type==="object"||s===void 0&&(Ea(a)||Fr(a)))){if(l=i?.source??new Map,!(l instanceof Map)){console.error("defaultValueSource is not a Map");return}for(let u in o)r&&l.set(`${n}.${u}`,r);o={...Fr(a)?a:{},...o}}return{value:o,source:l}}deltaConfiguration(n){let o=!1,r=new Set;n.removedDefaults&&(this.doDeregisterDefaultConfigurations(n.removedDefaults,r),o=!0),n.addedDefaults&&(this.doRegisterDefaultConfigurations(n.addedDefaults,r),o=!0),n.removedConfigurations&&this.doDeregisterConfigurations(n.removedConfigurations,r),n.addedConfigurations&&this.doRegisterConfigurations(n.addedConfigurations,!1,r),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:r,defaultsOverrides:o})}notifyConfigurationSchemaUpdated(...n){this._onDidSchemaChange.fire()}registerOverrideIdentifiers(n){this.doRegisterOverrideIdentifiers(n),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(n){for(let o of n)this.overrideIdentifiers.add(o);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(n,o,r){n.forEach(i=>{this.validateAndRegisterProperties(i,o,i.extensionInfo,i.restrictedProperties,void 0,r),this.configurationContributors.push(i),this.registerJSONConfiguration(i)})}doDeregisterConfigurations(n,o){let r=i=>{if(i.properties)for(let s in i.properties){o.add(s);let a=this.configurationProperties[s];a?.policy?.name&&this.policyConfigurations.delete(a.policy.name),delete this.configurationProperties[s],this.removeFromSchema(s,i.properties[s])}i.allOf?.forEach(s=>r(s))};for(let i of n){r(i);let s=this.configurationContributors.indexOf(i);s!==-1&&this.configurationContributors.splice(s,1)}}validateAndRegisterProperties(n,o=!0,r,i,s=4,a){s=Qp(n.scope)?s:n.scope;let l=n.properties;if(l)for(let u in l){let d=l[u];if(d.section={id:n.id,title:n.title,order:n.order,extensionInfo:n.extensionInfo},o&&$Z(u,d,r?.id)){delete l[u];continue}d.source=r,d.defaultDefaultValue=l[u].default,this.updatePropertyDefaultValue(u,d),Yu.test(u)?d.scope=void 0:(d.scope=Qp(d.scope)?s:d.scope,d.restricted=Qp(d.restricted)?!!i?.includes(u):d.restricted),d.experiment?d.tags?.some(m=>m.toLowerCase()==="onexp")||(d.tags=d.tags??[],d.tags.push("onExP")):d.tags?.some(m=>m.toLowerCase()==="onexp")&&(console.error(`Invalid tag 'onExP' found for property '${u}'. Please use 'experiment' property instead.`),d.experiment={mode:"startup"});let p=l[u].hasOwnProperty("included")&&!l[u].included,f=l[u].policy?.name;p?(this.excludedConfigurationProperties[u]=l[u],f&&(this.policyConfigurations.set(f,u),a.add(u)),delete l[u]):(a.add(u),f&&this.policyConfigurations.set(f,u),this.configurationProperties[u]=l[u],!l[u].deprecationMessage&&l[u].markdownDeprecationMessage&&(l[u].deprecationMessage=l[u].markdownDeprecationMessage))}let c=n.allOf;if(c)for(let u of c)this.validateAndRegisterProperties(u,o,r,i,s,a)}getConfigurations(){return this.configurationContributors}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}getExcludedConfigurationProperties(){return this.excludedConfigurationProperties}getRegisteredDefaultConfigurations(){return[...this.registeredConfigurationDefaults]}getConfigurationDefaultsOverrides(){let n=new Map;for(let[o,r]of this.configurationDefaultsOverrides)r.configurationDefaultOverrideValue&&n.set(o,r.configurationDefaultOverrideValue);return n}registerJSONConfiguration(n){let o=r=>{let i=r.properties;if(i)for(let a in i)this.updateSchema(a,i[a]);r.allOf?.forEach(o)};o(n)}updateSchema(n,o){switch(Dh.properties[n]=o,o.scope){case 1:Oh.properties[n]=o;break;case 2:Nh.properties[n]=o;break;case 3:Lh.properties[n]=o;break;case 7:$h.properties[n]=o;break;case 4:Fh.properties[n]=o;break;case 5:Ju.properties[n]=o;break;case 6:Ju.properties[n]=o,this.resourceLanguageSettingsSchema.properties[n]=o;break}}removeFromSchema(n,o){switch(delete Dh.properties[n],o.scope){case 1:delete Oh.properties[n];break;case 2:delete Nh.properties[n];break;case 3:delete Lh.properties[n];break;case 7:delete $h.properties[n];break;case 4:delete Fh.properties[n];break;case 5:case 6:delete Ju.properties[n],delete this.resourceLanguageSettingsSchema.properties[n];break}}updateOverridePropertyPatternKey(){for(let n of this.overrideIdentifiers.values()){let o=`[${n}]`,r={type:"object",description:_e("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:_e("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:Ls};this.updatePropertyDefaultValue(o,r),Dh.properties[o]=r,Oh.properties[o]=r,Lh.properties[o]=r,Nh.properties[o]=r,$h.properties[o]=r,Fh.properties[o]=r,Ju.properties[o]=r}}registerOverridePropertyPatternKey(){let n={type:"object",description:_e("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:_e("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:Ls};Dh.patternProperties[Li]=n,Oh.patternProperties[Li]=n,Lh.patternProperties[Li]=n,Nh.patternProperties[Li]=n,$h.patternProperties[Li]=n,Fh.patternProperties[Li]=n,Ju.patternProperties[Li]=n,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(n,o){let r=this.configurationDefaultsOverrides.get(n)?.configurationDefaultOverrideValue,i,s;r&&(!o.disallowConfigurationDefault||!r.source)&&(i=r.value,s=r.source),Ea(i)&&(i=o.defaultDefaultValue,s=void 0),Ea(i)&&(i=NZ(o.type)),o.default=i,o.defaultValueSource=s}},_5="\\[([^\\]]+)\\]",w5=new RegExp(_5,"g"),Li=`^(${_5})+$`,Yu=new RegExp(Li);function LZ(t){let e=[];if(Yu.test(t)){let n=w5.exec(t);for(;n?.length;){let o=n[1].trim();o&&e.push(o),n=w5.exec(t)}}return rR(e)}function NZ(t){switch(Array.isArray(t)?t[0]:t){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}var Bh=new ZS;Os.add(JS.Configuration,Bh);function $Z(t,e,n){return t.trim()?Yu.test(t)?_e("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",t):Bh.getConfigurationProperties()[t]!==void 0&&(!n||!FZ.has(n.toLowerCase()))?_e("config.property.duplicate","Cannot register '{0}'. This property is already registered.",t):e.policy?.name&&Bh.getPolicyConfigurations().get(e.policy?.name)!==void 0?_e("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",t,e.policy?.name,Bh.getPolicyConfigurations().get(e.policy?.name)):null:_e("config.property.empty","Cannot register an empty property")}var FZ=new Set(Mh.defaultChatAgent?[Mh.defaultChatAgent.extensionId,Mh.defaultChatAgent.chatExtensionId].map(t=>t.toLowerCase()):[]);var zh=Bn("requestService"),QS=class{constructor(e){this.original=e}toJSON(){if(!this.headers){let e=Object.create(null);for(let n in this.original)n.toLowerCase()==="authorization"||n.toLowerCase()==="proxy-authorization"?e[n]="*****":e[n]=this.original[n];this.headers=e}return this.headers}},jh=class extends Tt{constructor(n){super();this.logService=n;this.counter=0}async logAndRequest(n,o){let r=`#${++this.counter}: ${n.url}`;this.logService.trace(`${r} - begin`,n.type,new QS(n.headers??{}));try{let i=await o();return this.logService.trace(`${r} - end`,n.type,i.res.statusCode,i.res.headers),i}catch(i){throw this.logService.error(`${r} - error`,n.type,eR(i)),i}}};var YS=[],S5,k5;function UZ(t=!0,e=!0){if(S5===t&&k5===e)return;S5=t,k5=e;let n=Os.as(JS.Configuration),o=YS;YS=[{id:"http",order:15,title:_e("httpConfigurationTitle","HTTP"),type:"object",scope:2,properties:{"http.useLocalProxyConfiguration":{type:"boolean",default:e,markdownDescription:_e("useLocalProxy","Controls whether in the remote extension host the local proxy configuration should be used. This setting only applies as a remote setting during [remote development](https://aka.ms/vscode-remote)."),restricted:!0}}},{id:"http",order:15,title:_e("httpConfigurationTitle","HTTP"),type:"object",scope:1,properties:{"http.electronFetch":{type:"boolean",default:!1,description:_e("electronFetch","Controls whether use of Electron's fetch implementation instead of Node.js' should be enabled. All local extensions will get Electron's fetch implementation for the global fetch API."),restricted:!0}}},{id:"http",order:15,title:_e("httpConfigurationTitle","HTTP"),type:"object",scope:t?1:2,properties:{"http.proxy":{type:"string",pattern:"^(https?|socks|socks4a?|socks5h?)://([^:]*(:[^@]*)?@)?([^:]+|\\[[:0-9a-fA-F]+\\])(:\\d+)?/?$|^$",markdownDescription:_e("proxy","The proxy setting to use. If not set, will be inherited from the `http_proxy` and `https_proxy` environment variables. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxyStrictSSL":{type:"boolean",default:!0,markdownDescription:_e("strictSSL","Controls whether the proxy server certificate should be verified against the list of supplied CAs. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxyKerberosServicePrincipal":{type:"string",markdownDescription:_e("proxyKerberosServicePrincipal","Overrides the principal service name for Kerberos authentication with the HTTP proxy. A default based on the proxy hostname is used when this is not set. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.noProxy":{type:"array",items:{type:"string"},markdownDescription:_e("noProxy","Specifies domain names for which proxy settings should be ignored for HTTP/HTTPS requests. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxyAuthorization":{type:["null","string"],default:null,markdownDescription:_e("proxyAuthorization","The value to send as the `Proxy-Authorization` header for every network request. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.proxySupport":{type:"string",enum:["off","on","fallback","override"],enumDescriptions:[_e("proxySupportOff","Disable proxy support for extensions."),_e("proxySupportOn","Enable proxy support for extensions."),_e("proxySupportFallback","Enable proxy support for extensions, fall back to request options, when no proxy found."),_e("proxySupportOverride","Enable proxy support for extensions, override request options.")],default:"override",markdownDescription:_e("proxySupport","Use the proxy support for extensions. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.systemCertificates":{type:"boolean",default:!0,markdownDescription:_e("systemCertificates","Controls whether CA certificates should be loaded from the OS. On Windows and macOS, a reload of the window is required after turning this off. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.systemCertificatesNode":{type:"boolean",tags:["experimental"],default:!0,markdownDescription:_e("systemCertificatesNode","Controls whether system certificates should be loaded using Node.js built-in support. Reload the window after changing this setting. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0,experiment:{mode:"auto"}},"http.experimental.systemCertificatesV2":{type:"boolean",tags:["experimental"],default:!1,markdownDescription:_e("systemCertificatesV2","Controls whether experimental loading of CA certificates from the OS should be enabled. This uses a more general approach than the default implementation. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0},"http.fetchAdditionalSupport":{type:"boolean",default:!0,markdownDescription:_e("fetchAdditionalSupport","Controls whether Node.js' fetch implementation should be extended with additional support. Currently proxy support ({1}) and system certificates ({2}) are added when the corresponding settings are enabled. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`","`#http.proxySupport#`","`#http.systemCertificates#`"),restricted:!0},"http.experimental.networkInterfaceCheckInterval":{type:"number",default:300,minimum:-1,tags:["experimental"],markdownDescription:_e("networkInterfaceCheckInterval","Controls the interval in seconds for checking network interface changes to invalidate the proxy cache. Set to -1 to disable. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.","`#http.useLocalProxyConfiguration#`"),restricted:!0,experiment:{mode:"auto"}}}}],n.updateConfigurations({add:YS,remove:o})}UZ();ii();ii();or();or();Nt();var qt;(Q=>(Q.inMemory="inmemory",Q.vscode="vscode",Q.internal="private",Q.walkThrough="walkThrough",Q.walkThroughSnippet="walkThroughSnippet",Q.http="http",Q.https="https",Q.file="file",Q.mailto="mailto",Q.untitled="untitled",Q.data="data",Q.command="command",Q.vscodeRemote="vscode-remote",Q.vscodeRemoteResource="vscode-remote-resource",Q.vscodeManagedRemoteResource="vscode-managed-remote-resource",Q.vscodeUserData="vscode-userdata",Q.vscodeCustomEditor="vscode-custom-editor",Q.vscodeNotebookCell="vscode-notebook-cell",Q.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",Q.vscodeNotebookCellMetadataDiff="vscode-notebook-cell-metadata-diff",Q.vscodeNotebookCellOutput="vscode-notebook-cell-output",Q.vscodeNotebookCellOutputDiff="vscode-notebook-cell-output-diff",Q.vscodeNotebookMetadata="vscode-notebook-metadata",Q.vscodeInteractiveInput="vscode-interactive-input",Q.vscodeSettings="vscode-settings",Q.vscodeWorkspaceTrust="vscode-workspace-trust",Q.vscodeTerminal="vscode-terminal",Q.vscodeChatCodeBlock="vscode-chat-code-block",Q.vscodeChatCodeCompareBlock="vscode-chat-code-compare-block",Q.vscodeChatEditor="vscode-chat-editor",Q.vscodeChatInput="chatSessionInput",Q.vscodeLocalChatSession="vscode-chat-session",Q.webviewPanel="webview-panel",Q.vscodeWebview="vscode-webview",Q.extension="extension",Q.vscodeFileResource="vscode-file",Q.tmp="tmp",Q.vsls="vsls",Q.vscodeSourceControl="vscode-scm",Q.commentsInput="comment",Q.codeSetting="code-setting",Q.outputChannel="output",Q.accessibleView="accessible-view",Q.chatEditingSnapshotScheme="chat-editing-snapshot-text-model",Q.chatEditingModel="chat-editing-text-model",Q.copilotPr="copilot-pr"))(qt||={});var BZ="tkn",XS=class{constructor(){this._hosts=Object.create(null);this._ports=Object.create(null);this._connectionTokens=Object.create(null);this._preferredWebSchema="http";this._delegate=null;this._serverRootPath="/"}setPreferredWebSchema(e){this._preferredWebSchema=e}setDelegate(e){this._delegate=e}setServerRootPath(e,n){this._serverRootPath=Ge.join(n??"/",zZ(e))}getServerRootPath(){return this._serverRootPath}get _remoteResourcesPath(){return Ge.join(this._serverRootPath,qt.vscodeRemoteResource)}set(e,n,o){this._hosts[e]=n,this._ports[e]=o}setConnectionToken(e,n){this._connectionTokens[e]=n}getPreferredWebSchema(){return this._preferredWebSchema}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(a){return br(a),e}let n=e.authority,o=this._hosts[n];o&&o.indexOf(":")!==-1&&o.indexOf("[")===-1&&(o=`[${o}]`);let r=this._ports[n],i=this._connectionTokens[n],s=`path=${encodeURIComponent(e.path)}`;return typeof i=="string"&&(s+=`&${BZ}=${encodeURIComponent(i)}`),ot.from({scheme:gs?this._preferredWebSchema:qt.vscodeRemoteResource,authority:`${o}:${r}`,path:this._remoteResourcesPath,query:s})}},jZ=new XS;function zZ(t){return`${t.quality??"oss"}-${t.commit??"dev"}`}var WZ="vscode-app",ek=class t{static{this.FALLBACK_AUTHORITY=WZ}asBrowserUri(e){let n=this.toUri(e);return this.uriToBrowserUri(n)}uriToBrowserUri(e){return e.scheme===qt.vscodeRemote?jZ.rewrite(e):e.scheme===qt.file&&(jP||zP===`${qt.vscodeFileResource}://${t.FALLBACK_AUTHORITY}`)?e.with({scheme:qt.vscodeFileResource,authority:e.authority||t.FALLBACK_AUTHORITY,query:null,fragment:null}):e}asFileUri(e){let n=this.toUri(e);return this.uriToFileUri(n)}uriToFileUri(e){return e.scheme===qt.vscodeFileResource?e.with({scheme:qt.file,authority:e.authority!==t.FALLBACK_AUTHORITY?e.authority:null,query:null,fragment:null}):e}toUri(e){if(ot.isUri(e))return e;if(globalThis._VSCODE_FILE_ROOT){let n=globalThis._VSCODE_FILE_ROOT;if(/^\w[\w\d+.-]*:\/\//.test(n))return ot.joinPath(ot.parse(n,!0),e);let o=lt(n,e);return ot.file(o)}throw new Error("Cannot determine URI for module id!")}},xCe=new ek,TCe=Object.freeze({"Cache-Control":"no-cache, no-store"}),wCe=Object.freeze({"Document-Policy":"include-js-call-stacks-in-crash-reports"}),KZ;(i=>{let t=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);i.CoopAndCoep=Object.freeze(t.get("3"));let n="vscode-coi";function o(s){let a;typeof s=="string"?a=new URL(s).searchParams:s instanceof URL?a=s.searchParams:ot.isUri(s)&&(a=new URL(s.toString(!0)).searchParams);let l=a?.get(n);if(l)return t.get(l)}i.getHeadersFromQuery=o;function r(s,a,l){if(!globalThis.crossOriginIsolated)return;let c=a&&l?"3":l?"2":"1";s instanceof URLSearchParams?s.set(n,c):s[n]=c}i.addSearchParam=r})(KZ||={});Nt();or();function Lo(t){return Uc(t,!0)}var Qu=class{constructor(e){this._ignorePathCasing=e}compare(e,n,o=!1){return e===n?0:$R(this.getComparisonKey(e,o),this.getComparisonKey(n,o))}isEqual(e,n,o=!1){return e===n?!0:!e||!n?!1:this.getComparisonKey(e,o)===this.getComparisonKey(n,o)}getComparisonKey(e,n=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:n?null:void 0}).toString()}ignorePathCasing(e){return this._ignorePathCasing(e)}isEqualOrParent(e,n,o=!1){if(e.scheme===n.scheme){if(e.scheme===qt.file)return xS(Lo(e),Lo(n),this._ignorePathCasing(e))&&e.query===n.query&&(o||e.fragment===n.fragment);if(I5(e.authority,n.authority))return xS(e.path,n.path,this._ignorePathCasing(e),"/")&&e.query===n.query&&(o||e.fragment===n.fragment)}return!1}joinPath(e,...n){return ot.joinPath(e,...n)}basenameOrAuthority(e){return HZ(e)||e.authority}basename(e){return Ge.basename(e.path)}extname(e){return Ge.extname(e.path)}dirname(e){if(e.path.length===0)return e;let n;return e.scheme===qt.file?n=ot.file(ir(Lo(e))).path:(n=Ge.dirname(e.path),e.authority&&n.length&&n.charCodeAt(0)!==47&&(console.error(`dirname("${e.toString})) resulted in a relative path`),n="/")),e.with({path:n})}normalizePath(e){if(!e.path.length)return e;let n;return e.scheme===qt.file?n=ot.file(ai(Lo(e))).path:n=Ge.normalize(e.path),e.with({path:n})}relativePath(e,n){if(e.scheme!==n.scheme||!I5(e.authority,n.authority))return;if(e.scheme===qt.file){let i=Pc(Lo(e),Lo(n));return Lt?$u(i):i}let o=e.path||"/",r=n.path||"/";if(this._ignorePathCasing(e)){let i=0;for(let s=Math.min(o.length,r.length);i<s&&!(o.charCodeAt(i)!==r.charCodeAt(i)&&o.charAt(i).toLowerCase()!==r.charAt(i).toLowerCase());i++);o=r.substr(0,i)+o.substr(i)}return Ge.relative(o,r)}resolvePath(e,n){if(e.scheme===qt.file){let o=ot.file(Ut(Lo(e),n));return e.with({authority:o.authority,path:o.path})}return n=rL(n),e.with({path:Ge.resolve(e.path,n)})}isAbsolutePath(e){return!!e.path&&e.path[0]==="/"}isEqualAuthority(e,n){return e===n||e!==void 0&&n!==void 0&&Aa(e,n)}hasTrailingPathSeparator(e,n=vr){if(e.scheme===qt.file){let o=Lo(e);return o.length>bS(o).length&&o[o.length-1]===n}else{let o=e.path;return o.length>1&&o.charCodeAt(o.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e,n=vr){return C5(e,n)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e,n=vr){let o=!1;if(e.scheme===qt.file){let r=Lo(e);o=r!==void 0&&r.length===bS(r).length&&r[r.length-1]===n}else{n="/";let r=e.path;o=r.length===1&&r.charCodeAt(r.length-1)===47}return!o&&!C5(e,n)?e.with({path:e.path+"/"}):e}},Qe=new Qu(()=>!1),PCe=new Qu(t=>t.scheme===qt.file?!Lp:!0),RCe=new Qu(t=>!0),ACe=Qe.isEqual.bind(Qe),MCe=Qe.isEqualOrParent.bind(Qe),DCe=Qe.getComparisonKey.bind(Qe),OCe=Qe.basenameOrAuthority.bind(Qe),HZ=Qe.basename.bind(Qe),LCe=Qe.extname.bind(Qe),NCe=Qe.dirname.bind(Qe),VZ=Qe.joinPath.bind(Qe),$Ce=Qe.normalizePath.bind(Qe),FCe=Qe.relativePath.bind(Qe),UCe=Qe.resolvePath.bind(Qe),BCe=Qe.isAbsolutePath.bind(Qe),I5=Qe.isEqualAuthority.bind(Qe),C5=Qe.hasTrailingPathSeparator.bind(Qe),jCe=Qe.removeTrailingPathSeparator.bind(Qe),zCe=Qe.addTrailingPathSeparator.bind(Qe);var qZ;(i=>{i.META_DATA_LABEL="label",i.META_DATA_DESCRIPTION="description",i.META_DATA_SIZE="size",i.META_DATA_MIME="mime";function r(s){let a=new Map;s.path.substring(s.path.indexOf(";")+1,s.path.lastIndexOf(";")).split(";").forEach(u=>{let[d,p]=u.split(":");d&&p&&a.set(d,p)});let c=s.path.substring(0,s.path.indexOf(";"));return c&&a.set(i.META_DATA_MIME,c),a}i.parseMetaData=r})(qZ||={});or();ii();function tk(...t){switch(t.length){case 1:return _e("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",t[0]);case 2:return _e("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",t[0],t[1]);case 3:return _e("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",t[0],t[1],t[2]);default:return}}var GZ=_e("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),ZZ=_e("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'."),Ni=class t{constructor(){this._input="";this._start=0;this._current=0;this._tokens=[];this._errors=[];this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return e.lexeme;case 18:return e.lexeme;case 19:return e.lexeme;case 20:return"EOF";default:throw XP(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}static{this._regexFlags=new Set(["i","g","s","m","y","u"].map(e=>e.charCodeAt(0)))}static{this._keywords=new Map([["not",14],["in",13],["false",12],["true",11]])}get errors(){return this._errors}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){let n=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:n})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){let n=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:n})}else this._match(126)?this._addToken(9):this._error(tk("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(tk("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(tk("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return this._isAtEnd()||this._input.charCodeAt(this._current)!==e?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){let n=this._start,o=this._input.substring(this._start,this._current),r={type:19,offset:this._start,lexeme:o};this._errors.push({offset:n,lexeme:o,additionalInfo:e}),this._tokens.push(r)}_string(){this.stringRe.lastIndex=this._start;let e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;let n=this._input.substring(this._start,this._current),o=t._keywords.get(n);o?this._addToken(o):this._tokens.push({type:17,lexeme:n,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(GZ);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,n=!1,o=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(ZZ);return}let i=this._input.charCodeAt(e);if(n)n=!1;else if(i===47&&!o){e++;break}else i===91?o=!0:i===92?n=!0:i===93&&(o=!1);e++}for(;e<this._input.length&&t._regexFlags.has(this._input.charCodeAt(e));)e++;this._current=e;let r=this._input.substring(this._start,this._current);this._tokens.push({type:10,lexeme:r,offset:this._start})}_isAtEnd(){return this._current>=this._input.length}};ii();var jt=new Map;jt.set("false",!1);jt.set("true",!0);jt.set("isMac",Cc);jt.set("isLinux",Lp);jt.set("isWindows",Lt);jt.set("isWeb",gs);jt.set("isMacNative",Cc&&!gs);jt.set("isEdge",HP);jt.set("isFirefox",WP);jt.set("isChrome",ob);jt.set("isSafari",KP);var JZ=Object.prototype.hasOwnProperty;var YZ={regexParsingWithErrorRecovery:!0},QZ=_e("contextkey.parser.error.emptyString","Empty context key expression"),XZ=_e("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),eJ=_e("contextkey.parser.error.noInAfterNot","'in' after 'not'."),E5=_e("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),tJ=_e("contextkey.parser.error.unexpectedToken","Unexpected token"),nJ=_e("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),rJ=_e("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),oJ=_e("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?"),nk=class t{constructor(e=YZ){this._config=e;this._scanner=new Ni;this._tokens=[];this._current=0;this._parsingErrors=[];this._flagsGYRe=/g|y/g}static{this._parseError=new Error}get lexingErrors(){return this._scanner.errors}get parsingErrors(){return this._parsingErrors}parse(e){if(e===""){this._parsingErrors.push({message:QZ,offset:0,lexeme:"",additionalInfo:XZ});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{let n=this._expr();if(!this._isAtEnd()){let o=this._peek(),r=o.type===17?nJ:void 0;throw this._parsingErrors.push({message:tJ,offset:o.offset,lexeme:Ni.getLexeme(o),additionalInfo:r}),t._parseError}return n}catch(n){if(n!==t._parseError)throw n;return}}_expr(){return this._or()}_or(){let e=[this._and()];for(;this._matchOne(16);){let n=this._and();e.push(n)}return e.length===1?e[0]:Gt.or(...e)}_and(){let e=[this._term()];for(;this._matchOne(15);){let n=this._term();e.push(n)}return e.length===1?e[0]:Gt.and(...e)}_term(){if(this._matchOne(2)){let e=this._peek();switch(e.type){case 11:return this._advance(),rn.INSTANCE;case 12:return this._advance(),gn.INSTANCE;case 0:{this._advance();let n=this._expr();return this._consume(1,E5),n?.negate()}case 17:return this._advance(),$s.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){let e=this._peek();switch(e.type){case 11:return this._advance(),Gt.true();case 12:return this._advance(),Gt.false();case 0:{this._advance();let n=this._expr();return this._consume(1,E5),n}case 17:{let n=e.lexeme;if(this._advance(),this._matchOne(9)){let r=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),r.type!==10)throw this._errExpectedButGot("REGEX",r);let i=r.lexeme,s=i.lastIndexOf("/"),a=s===i.length-1?void 0:this._removeFlagsGY(i.substring(s+1)),l;try{l=new RegExp(i.substring(1,s),a)}catch{throw this._errExpectedButGot("REGEX",r)}return id.create(n,l)}switch(r.type){case 10:case 19:{let i=[r.lexeme];this._advance();let s=this._peek(),a=0;for(let p=0;p<r.lexeme.length;p++)r.lexeme.charCodeAt(p)===40?a++:r.lexeme.charCodeAt(p)===41&&a--;for(;!this._isAtEnd()&&s.type!==15&&s.type!==16;){switch(s.type){case 0:a++;break;case 1:a--;break;case 10:case 18:for(let p=0;p<s.lexeme.length;p++)s.lexeme.charCodeAt(p)===40?a++:r.lexeme.charCodeAt(p)===41&&a--}if(a<0)break;i.push(Ni.getLexeme(s)),this._advance(),s=this._peek()}let l=i.join(""),c=l.lastIndexOf("/"),u=c===l.length-1?void 0:this._removeFlagsGY(l.substring(c+1)),d;try{d=new RegExp(l.substring(1,c),u)}catch{throw this._errExpectedButGot("REGEX",r)}return Gt.regex(n,d)}case 18:{let i=r.lexeme;this._advance();let s=null;if(!NR(i)){let a=i.indexOf("/"),l=i.lastIndexOf("/");if(a!==l&&a>=0){let c=i.slice(a+1,l),u=i[l+1]==="i"?"i":"";try{s=new RegExp(c,u)}catch{throw this._errExpectedButGot("REGEX",r)}}}if(s===null)throw this._errExpectedButGot("REGEX",r);return id.create(n,s)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,eJ);let r=this._value();return Gt.notIn(n,r)}switch(this._peek().type){case 3:{this._advance();let r=this._value();if(this._previous().type===18)return Gt.equals(n,r);switch(r){case"true":return Gt.has(n);case"false":return Gt.not(n);default:return Gt.equals(n,r)}}case 4:{this._advance();let r=this._value();if(this._previous().type===18)return Gt.notEquals(n,r);switch(r){case"true":return Gt.not(n);case"false":return Gt.has(n);default:return Gt.notEquals(n,r)}}case 5:return this._advance(),rd.create(n,this._value());case 6:return this._advance(),od.create(n,this._value());case 7:return this._advance(),Ll.create(n,this._value());case 8:return this._advance(),nd.create(n,this._value());case 13:return this._advance(),Gt.in(n,this._value());default:return Gt.has(n)}}case 20:throw this._parsingErrors.push({message:rJ,offset:e.offset,lexeme:"",additionalInfo:oJ}),t._parseError;default:throw this._errExpectedButGot(`true | false | KEY
1971
1971
  | KEY '=~' REGEX
1972
1972
  | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){let e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return this._check(e)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(e,n){if(this._check(e))return this._advance();throw this._errExpectedButGot(n,this._peek())}_errExpectedButGot(e,n,o){let r=_e("contextkey.parser.error.expectedButGot",`Expected: {0}
1973
- Received: '{1}'.`,e,Ni.getLexeme(n)),i=n.offset,s=Ni.getLexeme(n);return this._parsingErrors.push({message:r,offset:i,lexeme:s,additionalInfo:o}),t._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}},Gt=class{static false(){return rn.INSTANCE}static true(){return gn.INSTANCE}static has(e){return Ns.create(e)}static equals(e,n){return ed.create(e,n)}static notEquals(e,n){return td.create(e,n)}static regex(e,n){return id.create(e,n)}static in(e,n){return Wh.create(e,n)}static notIn(e,n){return Kh.create(e,n)}static not(e){return $s.create(e)}static and(...e){return Hh.create(e,null,!0)}static or(...e){return sd.create(e,null,!0)}static greater(e,n){return Ll.create(e,n)}static greaterEquals(e,n){return nd.create(e,n)}static smaller(e,n){return rd.create(e,n)}static smallerEquals(e,n){return od.create(e,n)}static{this._parser=new nk({regexParsingWithErrorRecovery:!1})}static deserialize(e){return e==null?void 0:this._parser.parse(e)}};function Xu(t,e){return t.cmp(e)}var rn=class t{constructor(){this.type=0}static{this.INSTANCE=new t}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}map(e){return this}negate(){return gn.INSTANCE}},gn=class t{constructor(){this.type=1}static{this.INSTANCE=new t}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}map(e){return this}negate(){return rn.INSTANCE}},Ns=class t{constructor(e,n){this.key=e;this.negated=n;this.type=2}static create(e,n=null){let o=jt.get(e);return typeof o=="boolean"?o?gn.INSTANCE:rn.INSTANCE:new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:A5(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){let e=jt.get(this.key);return typeof e=="boolean"?e?gn.INSTANCE:rn.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}map(e){return e.mapDefined(this.key)}negate(){return this.negated||(this.negated=$s.create(this.key,this)),this.negated}},ed=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=4}static create(e,n,o=null){if(typeof n=="boolean")return n?Ns.create(e,o):$s.create(e,o);let r=jt.get(e);return typeof r=="boolean"?n===(r?"true":"false")?gn.INSTANCE:rn.INSTANCE:new t(e,n,o)}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){let e=jt.get(this.key);if(typeof e=="boolean"){let n=e?"true":"false";return this.value===n?gn.INSTANCE:rn.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}map(e){return e.mapEquals(this.key,this.value)}negate(){return this.negated||(this.negated=td.create(this.key,this.value,this)),this.negated}},Wh=class t{constructor(e,n){this.key=e;this.valueKey=n;this.type=10;this.negated=null}static create(e,n){return new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type?this.key===e.key&&this.valueKey===e.valueKey:!1}substituteConstants(){return this}evaluate(e){let n=e.getValue(this.valueKey),o=e.getValue(this.key);return Array.isArray(n)?n.includes(o):typeof o=="string"&&typeof n=="object"&&n!==null?GZ.call(n,o):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}map(e){return e.mapIn(this.key,this.valueKey)}negate(){return this.negated||(this.negated=Kh.create(this.key,this.valueKey)),this.negated}},Kh=class t{constructor(e,n){this.key=e;this.valueKey=n;this.type=11;this._negated=Wh.create(e,n)}static create(e,n){return new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type?this._negated.equals(e._negated):!1}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}map(e){return e.mapNotIn(this.key,this.valueKey)}negate(){return this._negated}},td=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=5}static create(e,n,o=null){if(typeof n=="boolean")return n?$s.create(e,o):Ns.create(e,o);let r=jt.get(e);return typeof r=="boolean"?n===(r?"true":"false")?rn.INSTANCE:gn.INSTANCE:new t(e,n,o)}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){let e=jt.get(this.key);if(typeof e=="boolean"){let n=e?"true":"false";return this.value===n?rn.INSTANCE:gn.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}map(e){return e.mapNotEquals(this.key,this.value)}negate(){return this.negated||(this.negated=ed.create(this.key,this.value,this)),this.negated}},$s=class t{constructor(e,n){this.key=e;this.negated=n;this.type=3}static create(e,n=null){let o=jt.get(e);return typeof o=="boolean"?o?rn.INSTANCE:gn.INSTANCE:new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:A5(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){let e=jt.get(this.key);return typeof e=="boolean"?e?rn.INSTANCE:gn.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}map(e){return e.mapNot(this.key)}negate(){return this.negated||(this.negated=Ns.create(this.key,this)),this.negated}};function qh(t,e){if(typeof t=="string"){let n=parseFloat(t);isNaN(n)||(t=n)}return typeof t=="string"||typeof t=="number"?e(t):rn.INSTANCE}var Ll=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=12}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}map(e){return e.mapGreater(this.key,this.value)}negate(){return this.negated||(this.negated=od.create(this.key,this.value,this)),this.negated}},nd=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=13}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}map(e){return e.mapGreaterEquals(this.key,this.value)}negate(){return this.negated||(this.negated=rd.create(this.key,this.value,this)),this.negated}},rd=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=14}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<this.value}serialize(){return`${this.key} < ${this.value}`}keys(){return[this.key]}map(e){return e.mapSmaller(this.key,this.value)}negate(){return this.negated||(this.negated=nd.create(this.key,this.value,this)),this.negated}},od=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=15}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}map(e){return e.mapSmallerEquals(this.key,this.value)}negate(){return this.negated||(this.negated=Ll.create(this.key,this.value,this)),this.negated}},id=class t{constructor(e,n){this.key=e;this.regexp=n;this.type=7;this.negated=null}static create(e,n){return new t(e,n)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;let n=this.regexp?this.regexp.source:"",o=e.regexp?e.regexp.source:"";return n<o?-1:n>o?1:0}equals(e){if(e.type===this.type){let n=this.regexp?this.regexp.source:"",o=e.regexp?e.regexp.source:"";return this.key===e.key&&n===o}return!1}substituteConstants(){return this}evaluate(e){let n=e.getValue(this.key);return this.regexp?this.regexp.test(n):!1}serialize(){let e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}map(e){return e.mapRegex(this.key,this.regexp)}negate(){return this.negated||(this.negated=rk.create(this)),this.negated}},rk=class t{constructor(e){this._actual=e;this.type=8}static create(e){return new t(e)}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type?this._actual.equals(e._actual):!1}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}map(e){return new t(this._actual.map(e))}negate(){return this._actual}};function R5(t){let e=null;for(let n=0,o=t.length;n<o;n++){let r=t[n].substituteConstants();if(t[n]!==r&&e===null){e=[];for(let i=0;i<n;i++)e[i]=t[i]}e!==null&&(e[n]=r)}return e===null?t:e}var Hh=class t{constructor(e,n){this.expr=e;this.negated=n;this.type=6}static create(e,n,o){return t._normalizeArr(e,n,o)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let n=0,o=this.expr.length;n<o;n++){let r=Xu(this.expr[n],e.expr[n]);if(r!==0)return r}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let n=0,o=this.expr.length;n<o;n++)if(!this.expr[n].equals(e.expr[n]))return!1;return!0}return!1}substituteConstants(){let e=R5(this.expr);return e===this.expr?this:t.create(e,this.negated,!1)}evaluate(e){for(let n=0,o=this.expr.length;n<o;n++)if(!this.expr[n].evaluate(e))return!1;return!0}static _normalizeArr(e,n,o){let r=[],i=!1;for(let s of e)if(s){if(s.type===1){i=!0;continue}if(s.type===0)return rn.INSTANCE;if(s.type===6){r.push(...s.expr);continue}r.push(s)}if(r.length===0&&i)return gn.INSTANCE;if(r.length!==0){if(r.length===1)return r[0];r.sort(Xu);for(let s=1;s<r.length;s++)r[s-1].equals(r[s])&&(r.splice(s,1),s--);if(r.length===1)return r[0];for(;r.length>1;){let s=r[r.length-1];if(s.type!==9)break;r.pop();let a=r.pop(),l=r.length===0,c=sd.create(s.expr.map(u=>t.create([u,a],null,o)),null,l);c&&(r.push(c),r.sort(Xu))}if(r.length===1)return r[0];if(o){for(let s=0;s<r.length;s++)for(let a=s+1;a<r.length;a++)if(r[s].negate().equals(r[a]))return rn.INSTANCE;if(r.length===1)return r[0]}return new t(r,n)}}serialize(){return this.expr.map(e=>e.serialize()).join(" && ")}keys(){let e=[];for(let n of this.expr)e.push(...n.keys());return e}map(e){return new t(this.expr.map(n=>n.map(e)),null)}negate(){if(!this.negated){let e=[];for(let n of this.expr)e.push(n.negate());this.negated=sd.create(e,this,!0)}return this.negated}},sd=class t{constructor(e,n){this.expr=e;this.negated=n;this.type=9}static create(e,n,o){return t._normalizeArr(e,n,o)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let n=0,o=this.expr.length;n<o;n++){let r=Xu(this.expr[n],e.expr[n]);if(r!==0)return r}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let n=0,o=this.expr.length;n<o;n++)if(!this.expr[n].equals(e.expr[n]))return!1;return!0}return!1}substituteConstants(){let e=R5(this.expr);return e===this.expr?this:t.create(e,this.negated,!1)}evaluate(e){for(let n=0,o=this.expr.length;n<o;n++)if(this.expr[n].evaluate(e))return!0;return!1}static _normalizeArr(e,n,o){let r=[],i=!1;if(e){for(let s=0,a=e.length;s<a;s++){let l=e[s];if(l){if(l.type===0){i=!0;continue}if(l.type===1)return gn.INSTANCE;if(l.type===9){r=r.concat(l.expr);continue}r.push(l)}}if(r.length===0&&i)return rn.INSTANCE;r.sort(Xu)}if(r.length!==0){if(r.length===1)return r[0];for(let s=1;s<r.length;s++)r[s-1].equals(r[s])&&(r.splice(s,1),s--);if(r.length===1)return r[0];if(o){for(let s=0;s<r.length;s++)for(let a=s+1;a<r.length;a++)if(r[s].negate().equals(r[a]))return gn.INSTANCE;if(r.length===1)return r[0]}return new t(r,n)}}serialize(){return this.expr.map(e=>e.serialize()).join(" || ")}keys(){let e=[];for(let n of this.expr)e.push(...n.keys());return e}map(e){return new t(this.expr.map(n=>n.map(e)),null)}negate(){if(!this.negated){let e=[];for(let n of this.expr)e.push(n.negate());for(;e.length>1;){let n=e.shift(),o=e.shift(),r=[];for(let i of P5(n))for(let s of P5(o))r.push(Hh.create([i,s],null,!1));e.unshift(t.create(r,null,!1))}this.negated=t.create(e,this,!0)}return this.negated}},Vh=class t extends Ns{static{this._info=[]}static all(){return t._info.values()}constructor(e,n,o){super(e,null),this._defaultValue=n,typeof o=="object"?t._info.push({...o,key:e}):o!==!0&&t._info.push({key:e,description:o,type:n!=null?typeof n:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return ed.create(this.key,e)}notEqualsTo(e){return td.create(this.key,e)}greater(e){return Ll.create(this.key,e)}},rEe=Bn("contextKeyService");function A5(t,e){return t<e?-1:t>e?1:0}function Fs(t,e,n,o){return t<n?-1:t>n?1:e<o?-1:e>o?1:0}function P5(t){return t.type===9?t.expr:[t]}var Gh=Bn("logService"),TEe=Bn("loggerService");var ok=class{constructor(){this.onDidChangeLogLevel=new Ve().event}setLevel(e){}getLevel(){return 3}trace(e,...n){}debug(e,...n){}info(e,...n){}warn(e,...n){}error(e,...n){}critical(e,...n){}dispose(){}flush(){}},ad=class extends ok{};function rJ(t){switch(t){case 1:return"trace";case 2:return"debug";case 3:return"info";case 4:return"warn";case 5:return"error";case 0:return"off"}}var wEe=new Vh("logLevel",rJ(3));var Nl=class{constructor(e,n,o){this.options=e;this.requestService=n;this.logService=o}options;requestService;logService;models=new Map;defaultModelId;currentRevision;_onDidChange=new Ve;setAuthToken(e){this.options.authToken=e}isModelMetadata(e){return typeof e.displayName=="string"&&typeof e.providerType=="string"&&typeof e.model=="string"&&typeof e.baseUrl=="string"&&typeof e.apiKeyConfig=="object"}mapRemoteModel(e){if(this.isModelMetadata(e))return{...e,source:"remote",status:e.status||"active",updatedAt:e.updatedAt||new Date().toISOString()};let n=e,o=n.catalog_model_id||n.id,r=n.catalogStatus?.toLowerCase()==="inactive"||n.isActive===!1?"disabled":"active";return{id:o,displayName:n.displayName||n.name||o,providerType:n.providerType,providerName:n.providerName,model:n.model,baseUrl:n.baseUrl||n.apiBase||"",apiKeyConfig:{apiKey:n.apiKeyConfig?.apiKey??n.apiKey??n.api_key,apiKeyRef:n.apiKeyConfig?.apiKeyRef??n.apiKeyRef??n.api_key_ref,apiKeyEnv:n.apiKeyConfig?.apiKeyEnv??n.apiKeyEnv??n.api_key_env},enabled:n.isActive!==!1,visible:n.visible!==!1,status:r,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,capabilities:n.capabilities,priorities:n.priorities??void 0,tags:n.tags,source:"remote",updatedAt:n.updatedAt||new Date().toISOString()}}async refresh(){try{this.logService.info("[RemoteModelProvider] Fetching models from remote server...");let e={Accept:"application/json","Content-Type":"application/json"};this.options.authToken&&(e.Authorization=`Bearer ${this.options.authToken}`),this.currentRevision&&(e["If-None-Match"]=this.currentRevision);let n=await this.requestService.request({type:"GET",url:this.options.endpoint,headers:e,timeout:this.options.timeout||3e4},nf.None);if(n.res.statusCode===304){this.logService.info("[RemoteModelProvider] Models not modified, using cache");return}if(n.res.statusCode!==200)throw new Error(`Failed to fetch models: ${n.res.statusCode}`);let r=(await ef(n.stream)).toString(),i=JSON.parse(r);this.models.clear();for(let s of i.models){let a=this.mapRemoteModel(s);this.models.set(a.id,a)}this.defaultModelId=i.defaultModelId,this.currentRevision=i.revision,this._onDidChange.fire(),this.logService.info(`[RemoteModelProvider] Loaded ${this.models.size} models from remote`)}catch(e){throw this.logService.error("[RemoteModelProvider] Failed to fetch models:",e),e}}async listModels(){return Array.from(this.models.values())}async getModelById(e){return this.models.get(e)}async getDefaultModelId(){if(this.defaultModelId&&this.models.has(this.defaultModelId))return this.defaultModelId;let e=Array.from(this.models.values());if(e.length>0)return e[0].id}getCurrentRevision(){return this.currentRevision}async fetchConfigVersions(){try{let e={Accept:"application/json","Content-Type":"application/json"};this.options.authToken&&(e.Authorization=`Bearer ${this.options.authToken}`);let n=this.options.endpoint.replace("/llm-models/all","/config-versions"),o=await this.requestService.request({type:"GET",url:n,headers:e,timeout:this.options.timeout||3e4},nf.None);if(o.res.statusCode!==200)throw new Error(`Failed to fetch config versions: ${o.res.statusCode}`);let i=(await ef(o.stream)).toString(),s=JSON.parse(i);return this.logService.info("[RemoteModelProvider] Fetched config versions:",JSON.stringify(s)),s}catch(e){return this.logService.warn("[RemoteModelProvider] Failed to fetch config versions, falling back to full refresh:",e),{}}}onDidChange=this._onDidChange.event};Nl=ma([Or(1,zh),Or(2,Gh)],Nl);import{readFile as aJ}from"node:fs/promises";import{homedir as lJ}from"node:os";import{join as sk}from"node:path";var oJ=/("[^"\\]*(?:\\.[^"\\]*)*")|('[^'\\]*(?:\\.[^'\\]*)*')|(\/\*[^\/\*]*(?:(?:\*|\/)[^\/\*]*)*?\*\/)|(\/{2,}.*?(?:(?:\r?\n)|$))|(,\s*[}\]])/g;function iJ(t){return t.replace(oJ,function(e,n,o,r,i,s){if(r)return"";if(i){let a=i.length;return i[a-1]===`
1973
+ Received: '{1}'.`,e,Ni.getLexeme(n)),i=n.offset,s=Ni.getLexeme(n);return this._parsingErrors.push({message:r,offset:i,lexeme:s,additionalInfo:o}),t._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}},Gt=class{static false(){return rn.INSTANCE}static true(){return gn.INSTANCE}static has(e){return Ns.create(e)}static equals(e,n){return ed.create(e,n)}static notEquals(e,n){return td.create(e,n)}static regex(e,n){return id.create(e,n)}static in(e,n){return Wh.create(e,n)}static notIn(e,n){return Kh.create(e,n)}static not(e){return $s.create(e)}static and(...e){return Hh.create(e,null,!0)}static or(...e){return sd.create(e,null,!0)}static greater(e,n){return Ll.create(e,n)}static greaterEquals(e,n){return nd.create(e,n)}static smaller(e,n){return rd.create(e,n)}static smallerEquals(e,n){return od.create(e,n)}static{this._parser=new nk({regexParsingWithErrorRecovery:!1})}static deserialize(e){return e==null?void 0:this._parser.parse(e)}};function Xu(t,e){return t.cmp(e)}var rn=class t{constructor(){this.type=0}static{this.INSTANCE=new t}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}map(e){return this}negate(){return gn.INSTANCE}},gn=class t{constructor(){this.type=1}static{this.INSTANCE=new t}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}map(e){return this}negate(){return rn.INSTANCE}},Ns=class t{constructor(e,n){this.key=e;this.negated=n;this.type=2}static create(e,n=null){let o=jt.get(e);return typeof o=="boolean"?o?gn.INSTANCE:rn.INSTANCE:new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:A5(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){let e=jt.get(this.key);return typeof e=="boolean"?e?gn.INSTANCE:rn.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}map(e){return e.mapDefined(this.key)}negate(){return this.negated||(this.negated=$s.create(this.key,this)),this.negated}},ed=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=4}static create(e,n,o=null){if(typeof n=="boolean")return n?Ns.create(e,o):$s.create(e,o);let r=jt.get(e);return typeof r=="boolean"?n===(r?"true":"false")?gn.INSTANCE:rn.INSTANCE:new t(e,n,o)}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){let e=jt.get(this.key);if(typeof e=="boolean"){let n=e?"true":"false";return this.value===n?gn.INSTANCE:rn.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}map(e){return e.mapEquals(this.key,this.value)}negate(){return this.negated||(this.negated=td.create(this.key,this.value,this)),this.negated}},Wh=class t{constructor(e,n){this.key=e;this.valueKey=n;this.type=10;this.negated=null}static create(e,n){return new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type?this.key===e.key&&this.valueKey===e.valueKey:!1}substituteConstants(){return this}evaluate(e){let n=e.getValue(this.valueKey),o=e.getValue(this.key);return Array.isArray(n)?n.includes(o):typeof o=="string"&&typeof n=="object"&&n!==null?JZ.call(n,o):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}map(e){return e.mapIn(this.key,this.valueKey)}negate(){return this.negated||(this.negated=Kh.create(this.key,this.valueKey)),this.negated}},Kh=class t{constructor(e,n){this.key=e;this.valueKey=n;this.type=11;this._negated=Wh.create(e,n)}static create(e,n){return new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type?this._negated.equals(e._negated):!1}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}map(e){return e.mapNotIn(this.key,this.valueKey)}negate(){return this._negated}},td=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=5}static create(e,n,o=null){if(typeof n=="boolean")return n?$s.create(e,o):Ns.create(e,o);let r=jt.get(e);return typeof r=="boolean"?n===(r?"true":"false")?rn.INSTANCE:gn.INSTANCE:new t(e,n,o)}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){let e=jt.get(this.key);if(typeof e=="boolean"){let n=e?"true":"false";return this.value===n?rn.INSTANCE:gn.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}map(e){return e.mapNotEquals(this.key,this.value)}negate(){return this.negated||(this.negated=ed.create(this.key,this.value,this)),this.negated}},$s=class t{constructor(e,n){this.key=e;this.negated=n;this.type=3}static create(e,n=null){let o=jt.get(e);return typeof o=="boolean"?o?rn.INSTANCE:gn.INSTANCE:new t(e,n)}cmp(e){return e.type!==this.type?this.type-e.type:A5(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){let e=jt.get(this.key);return typeof e=="boolean"?e?rn.INSTANCE:gn.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}map(e){return e.mapNot(this.key)}negate(){return this.negated||(this.negated=Ns.create(this.key,this)),this.negated}};function qh(t,e){if(typeof t=="string"){let n=parseFloat(t);isNaN(n)||(t=n)}return typeof t=="string"||typeof t=="number"?e(t):rn.INSTANCE}var Ll=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=12}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}map(e){return e.mapGreater(this.key,this.value)}negate(){return this.negated||(this.negated=od.create(this.key,this.value,this)),this.negated}},nd=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=13}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}map(e){return e.mapGreaterEquals(this.key,this.value)}negate(){return this.negated||(this.negated=rd.create(this.key,this.value,this)),this.negated}},rd=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=14}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<this.value}serialize(){return`${this.key} < ${this.value}`}keys(){return[this.key]}map(e){return e.mapSmaller(this.key,this.value)}negate(){return this.negated||(this.negated=nd.create(this.key,this.value,this)),this.negated}},od=class t{constructor(e,n,o){this.key=e;this.value=n;this.negated=o;this.type=15}static create(e,n,o=null){return qh(n,r=>new t(e,r,o))}cmp(e){return e.type!==this.type?this.type-e.type:Fs(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}map(e){return e.mapSmallerEquals(this.key,this.value)}negate(){return this.negated||(this.negated=Ll.create(this.key,this.value,this)),this.negated}},id=class t{constructor(e,n){this.key=e;this.regexp=n;this.type=7;this.negated=null}static create(e,n){return new t(e,n)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;let n=this.regexp?this.regexp.source:"",o=e.regexp?e.regexp.source:"";return n<o?-1:n>o?1:0}equals(e){if(e.type===this.type){let n=this.regexp?this.regexp.source:"",o=e.regexp?e.regexp.source:"";return this.key===e.key&&n===o}return!1}substituteConstants(){return this}evaluate(e){let n=e.getValue(this.key);return this.regexp?this.regexp.test(n):!1}serialize(){let e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}map(e){return e.mapRegex(this.key,this.regexp)}negate(){return this.negated||(this.negated=rk.create(this)),this.negated}},rk=class t{constructor(e){this._actual=e;this.type=8}static create(e){return new t(e)}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type?this._actual.equals(e._actual):!1}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}map(e){return new t(this._actual.map(e))}negate(){return this._actual}};function R5(t){let e=null;for(let n=0,o=t.length;n<o;n++){let r=t[n].substituteConstants();if(t[n]!==r&&e===null){e=[];for(let i=0;i<n;i++)e[i]=t[i]}e!==null&&(e[n]=r)}return e===null?t:e}var Hh=class t{constructor(e,n){this.expr=e;this.negated=n;this.type=6}static create(e,n,o){return t._normalizeArr(e,n,o)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let n=0,o=this.expr.length;n<o;n++){let r=Xu(this.expr[n],e.expr[n]);if(r!==0)return r}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let n=0,o=this.expr.length;n<o;n++)if(!this.expr[n].equals(e.expr[n]))return!1;return!0}return!1}substituteConstants(){let e=R5(this.expr);return e===this.expr?this:t.create(e,this.negated,!1)}evaluate(e){for(let n=0,o=this.expr.length;n<o;n++)if(!this.expr[n].evaluate(e))return!1;return!0}static _normalizeArr(e,n,o){let r=[],i=!1;for(let s of e)if(s){if(s.type===1){i=!0;continue}if(s.type===0)return rn.INSTANCE;if(s.type===6){r.push(...s.expr);continue}r.push(s)}if(r.length===0&&i)return gn.INSTANCE;if(r.length!==0){if(r.length===1)return r[0];r.sort(Xu);for(let s=1;s<r.length;s++)r[s-1].equals(r[s])&&(r.splice(s,1),s--);if(r.length===1)return r[0];for(;r.length>1;){let s=r[r.length-1];if(s.type!==9)break;r.pop();let a=r.pop(),l=r.length===0,c=sd.create(s.expr.map(u=>t.create([u,a],null,o)),null,l);c&&(r.push(c),r.sort(Xu))}if(r.length===1)return r[0];if(o){for(let s=0;s<r.length;s++)for(let a=s+1;a<r.length;a++)if(r[s].negate().equals(r[a]))return rn.INSTANCE;if(r.length===1)return r[0]}return new t(r,n)}}serialize(){return this.expr.map(e=>e.serialize()).join(" && ")}keys(){let e=[];for(let n of this.expr)e.push(...n.keys());return e}map(e){return new t(this.expr.map(n=>n.map(e)),null)}negate(){if(!this.negated){let e=[];for(let n of this.expr)e.push(n.negate());this.negated=sd.create(e,this,!0)}return this.negated}},sd=class t{constructor(e,n){this.expr=e;this.negated=n;this.type=9}static create(e,n,o){return t._normalizeArr(e,n,o)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let n=0,o=this.expr.length;n<o;n++){let r=Xu(this.expr[n],e.expr[n]);if(r!==0)return r}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let n=0,o=this.expr.length;n<o;n++)if(!this.expr[n].equals(e.expr[n]))return!1;return!0}return!1}substituteConstants(){let e=R5(this.expr);return e===this.expr?this:t.create(e,this.negated,!1)}evaluate(e){for(let n=0,o=this.expr.length;n<o;n++)if(this.expr[n].evaluate(e))return!0;return!1}static _normalizeArr(e,n,o){let r=[],i=!1;if(e){for(let s=0,a=e.length;s<a;s++){let l=e[s];if(l){if(l.type===0){i=!0;continue}if(l.type===1)return gn.INSTANCE;if(l.type===9){r=r.concat(l.expr);continue}r.push(l)}}if(r.length===0&&i)return rn.INSTANCE;r.sort(Xu)}if(r.length!==0){if(r.length===1)return r[0];for(let s=1;s<r.length;s++)r[s-1].equals(r[s])&&(r.splice(s,1),s--);if(r.length===1)return r[0];if(o){for(let s=0;s<r.length;s++)for(let a=s+1;a<r.length;a++)if(r[s].negate().equals(r[a]))return gn.INSTANCE;if(r.length===1)return r[0]}return new t(r,n)}}serialize(){return this.expr.map(e=>e.serialize()).join(" || ")}keys(){let e=[];for(let n of this.expr)e.push(...n.keys());return e}map(e){return new t(this.expr.map(n=>n.map(e)),null)}negate(){if(!this.negated){let e=[];for(let n of this.expr)e.push(n.negate());for(;e.length>1;){let n=e.shift(),o=e.shift(),r=[];for(let i of P5(n))for(let s of P5(o))r.push(Hh.create([i,s],null,!1));e.unshift(t.create(r,null,!1))}this.negated=t.create(e,this,!0)}return this.negated}},Vh=class t extends Ns{static{this._info=[]}static all(){return t._info.values()}constructor(e,n,o){super(e,null),this._defaultValue=n,typeof o=="object"?t._info.push({...o,key:e}):o!==!0&&t._info.push({key:e,description:o,type:n!=null?typeof n:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return ed.create(this.key,e)}notEqualsTo(e){return td.create(this.key,e)}greater(e){return Ll.create(this.key,e)}},iEe=Bn("contextKeyService");function A5(t,e){return t<e?-1:t>e?1:0}function Fs(t,e,n,o){return t<n?-1:t>n?1:e<o?-1:e>o?1:0}function P5(t){return t.type===9?t.expr:[t]}var Gh=Bn("logService"),_Ee=Bn("loggerService");var ok=class{constructor(){this.onDidChangeLogLevel=new Ve().event}setLevel(e){}getLevel(){return 3}trace(e,...n){}debug(e,...n){}info(e,...n){}warn(e,...n){}error(e,...n){}critical(e,...n){}dispose(){}flush(){}},ad=class extends ok{};function iJ(t){switch(t){case 1:return"trace";case 2:return"debug";case 3:return"info";case 4:return"warn";case 5:return"error";case 0:return"off"}}var SEe=new Vh("logLevel",iJ(3));var Nl=class{constructor(e,n,o){this.options=e;this.requestService=n;this.logService=o}options;requestService;logService;models=new Map;defaultModelId;currentRevision;_onDidChange=new Ve;setAuthToken(e){this.options.authToken=e}isModelMetadata(e){return typeof e.displayName=="string"&&typeof e.providerType=="string"&&typeof e.model=="string"&&typeof e.baseUrl=="string"&&typeof e.apiKeyConfig=="object"}mapRemoteModel(e){if(this.isModelMetadata(e))return{...e,source:"remote",status:e.status||"active",updatedAt:e.updatedAt||new Date().toISOString()};let n=e,o=n.catalog_model_id||n.id,r=n.catalogStatus?.toLowerCase()==="inactive"||n.isActive===!1?"disabled":"active";return{id:o,displayName:n.displayName||n.name||o,providerType:n.providerType,providerName:n.providerName,model:n.model,baseUrl:n.baseUrl||n.apiBase||"",apiKeyConfig:{apiKey:n.apiKeyConfig?.apiKey??n.apiKey??n.api_key,apiKeyRef:n.apiKeyConfig?.apiKeyRef??n.apiKeyRef??n.api_key_ref,apiKeyEnv:n.apiKeyConfig?.apiKeyEnv??n.apiKeyEnv??n.api_key_env},enabled:n.isActive!==!1,visible:n.visible!==!1,status:r,contextWindow:n.contextWindow,maxOutputTokens:n.maxOutputTokens,capabilities:n.capabilities,priorities:n.priorities??void 0,tags:n.tags,source:"remote",updatedAt:n.updatedAt||new Date().toISOString()}}async refresh(){try{this.logService.info("[RemoteModelProvider] Fetching models from remote server...");let e={Accept:"application/json","Content-Type":"application/json"};this.options.authToken&&(e.Authorization=`Bearer ${this.options.authToken}`),this.currentRevision&&(e["If-None-Match"]=this.currentRevision);let n=await this.requestService.request({type:"GET",url:this.options.endpoint,headers:e,timeout:this.options.timeout||3e4},nf.None);if(n.res.statusCode===304){this.logService.info("[RemoteModelProvider] Models not modified, using cache");return}if(n.res.statusCode!==200)throw new Error(`Failed to fetch models: ${n.res.statusCode}`);let r=(await ef(n.stream)).toString(),i=JSON.parse(r);this.models.clear();for(let s of i.models){let a=this.mapRemoteModel(s);this.models.set(a.id,a)}this.defaultModelId=i.defaultModelId,this.currentRevision=i.revision,this._onDidChange.fire(),this.logService.info(`[RemoteModelProvider] Loaded ${this.models.size} models from remote`)}catch(e){throw this.logService.error("[RemoteModelProvider] Failed to fetch models:",e),e}}async listModels(){return Array.from(this.models.values())}async getModelById(e){return this.models.get(e)}async getDefaultModelId(){if(this.defaultModelId&&this.models.has(this.defaultModelId))return this.defaultModelId;let e=Array.from(this.models.values());if(e.length>0)return e[0].id}getCurrentRevision(){return this.currentRevision}async fetchConfigVersions(){try{let e={Accept:"application/json","Content-Type":"application/json"};this.options.authToken&&(e.Authorization=`Bearer ${this.options.authToken}`);let n=this.options.endpoint.replace("/llm-models/all","/config-versions"),o=await this.requestService.request({type:"GET",url:n,headers:e,timeout:this.options.timeout||3e4},nf.None);if(o.res.statusCode!==200)throw new Error(`Failed to fetch config versions: ${o.res.statusCode}`);let i=(await ef(o.stream)).toString(),s=JSON.parse(i);return this.logService.info("[RemoteModelProvider] Fetched config versions:",JSON.stringify(s)),s}catch(e){return this.logService.warn("[RemoteModelProvider] Failed to fetch config versions, falling back to full refresh:",e),{}}}onDidChange=this._onDidChange.event};Nl=ma([Or(1,zh),Or(2,Gh)],Nl);import{readFile as cJ}from"node:fs/promises";import{homedir as uJ}from"node:os";import{join as sk}from"node:path";var sJ=/("[^"\\]*(?:\\.[^"\\]*)*")|('[^'\\]*(?:\\.[^'\\]*)*')|(\/\*[^\/\*]*(?:(?:\*|\/)[^\/\*]*)*?\*\/)|(\/{2,}.*?(?:(?:\r?\n)|$))|(,\s*[}\]])/g;function aJ(t){return t.replace(sJ,function(e,n,o,r,i,s){if(r)return"";if(i){let a=i.length;return i[a-1]===`
1974
1974
  `?i[a-2]==="\r"?`\r
1975
1975
  `:`
1976
- `:""}else return s?e.substring(1):e})}function M5(t){let e=iJ(t);try{return JSON.parse(e)}catch{let o=e.replace(/,\s*([}\]])/g,"$1");return JSON.parse(o)}}var cJ=32e3,uJ=4096;function dJ(){return(typeof process<"u"?process.env.PANDA_HOME:void 0)||sk(lJ(),".panda")}var Zh=class{constructor(e=dJ()){this.pandaHomePath=e}pandaHomePath;models=new Map;defaultModelId;initialized=!1;resolveCandidates(){return[sk(this.pandaHomePath,"models.jsonc"),sk(this.pandaHomePath,"models.json")]}async readCatalogFile(){for(let e of this.resolveCandidates())try{let n=await aJ(e,"utf8");return M5(n)}catch{continue}}normalizeModelMetadata(e){if(!e?.id||!e.displayName||!e.providerType||!e.model||!e.baseUrl)return;let n=typeof e.contextWindow=="number"&&e.contextWindow>0?e.contextWindow:cJ,o=typeof e.maxOutputTokens=="number"&&e.maxOutputTokens>0?e.maxOutputTokens:uJ;return o>n&&(o=Math.min(o,Math.max(1,Math.floor(n*.5)))),{...e,enabled:e.enabled??!0,visible:e.visible??!0,status:e.status??"active",contextWindow:n,maxOutputTokens:o,capabilities:{supportsChat:e.capabilities?.supportsChat??!0,supportsCompletion:e.capabilities?.supportsCompletion??!0,supportsTools:e.capabilities?.supportsTools??!1,supportsStreaming:e.capabilities?.supportsStreaming??!0,supportsMultimodal:e.capabilities?.supportsMultimodal??!1,supportsReasoning:e.capabilities?.supportsReasoning??!1,supportsEmbeddings:e.capabilities?.supportsEmbeddings??!1,supportsRerank:e.capabilities?.supportsRerank??!1},priorities:e.priorities??{fallback:999},tags:e.tags??[],apiKeyConfig:e.apiKeyConfig??{},source:"local",updatedAt:e.updatedAt??new Date().toISOString()}}async loadFromDisk(){let e=await this.readCatalogFile();if(this.models.clear(),this.defaultModelId=void 0,!e||!Array.isArray(e.models)){this.initialized=!0;return}for(let n of e.models){let o=this.normalizeModelMetadata(n);o&&this.models.set(o.id,o)}e.defaultModelId&&this.models.has(e.defaultModelId)&&(this.defaultModelId=e.defaultModelId),this.initialized=!0}async ensureInitialized(){this.initialized||await this.loadFromDisk()}async listModels(){return await this.ensureInitialized(),Array.from(this.models.values())}async getModelById(e){return await this.ensureInitialized(),this.models.get(e)}async getDefaultModelId(){if(await this.ensureInitialized(),this.defaultModelId&&this.models.has(this.defaultModelId))return this.defaultModelId;let e=this.models.values().next();return e.done?void 0:e.value.id}async refresh(){await this.loadFromDisk()}};var ak=Bn("pandaSecretStore");var $i=class extends Tt{constructor(n,o,r,i,s){super();this.options=n;this.logService=i;this.secretStore=s;this.localProvider=new Zh,this.storageProvider=new Dl(o),n.enableRemoteSync&&n.remoteEndpoint&&(this.remoteProvider=new Nl({endpoint:n.remoteEndpoint,timeout:3e4},r,i),this.remoteProvider.onDidChange(()=>{this.mergeFromRemote()})),this.storageProvider.onDidChange(()=>{this.loadFromStorage()})}options;logService;secretStore;static MODEL_API_KEY_SECRET_PREFIX="panda.model.apiKey.";localProvider;storageProvider;remoteProvider;models=new Map;defaultModelId;initialized=!1;localConfigVersions={};runtimeConfigProbeLoggedModelIds=new Set;noKeyWarnedModelIds=new Set;_onDidChange=new Ve;onDidChange=this._onDidChange.event;syncTimer;async initialize(){if(!this.initialized)try{this.logService.info("[UnifiedModelProvider] Initializing..."),this.logService.info("[UnifiedModelProvider] Init options",{enableRemoteSync:this.options.enableRemoteSync??!1,remoteEndpoint:this.options.remoteEndpoint??"(none)",remoteProviderConfigured:!!this.remoteProvider}),await this.loadFromStorage(),this.logService.info("[UnifiedModelProvider] Storage snapshot after load",{modelCount:this.models.size,defaultModelId:this.defaultModelId}),this.models.size===0?await this.hasRemoteAuthToken()&&this.remoteProvider?(this.logService.info("[UnifiedModelProvider] Storage empty, initializing from remote"),await this.initializeFromRemote()):(this.logService.info("[UnifiedModelProvider] Storage empty, initializing from local models.jsonc|json"),await this.initializeFromLocal()):this.logService.info("[UnifiedModelProvider] Using storage catalog as runtime source (no local bootstrap)"),this.remoteProvider&&(this.refreshAutomatically().catch(n=>{this.logService.error("[UnifiedModelProvider] Failed to refresh from remote:",n)}),this.startPeriodicSync()),this.initialized=!0,this.logService.info(`[UnifiedModelProvider] Initialized with ${this.models.size} models`)}catch(n){throw this.logService.error("[UnifiedModelProvider] Initialization failed:",n),n}}async loadFromStorage(){await this.storageProvider.refresh();let n=await this.storageProvider.listModels();this.models.clear();for(let r of n)this.models.set(r.id,r);this.defaultModelId=await this.storageProvider.getDefaultModelId();let o={local:0,storage:0,remote:0,unknown:0};for(let r of this.models.values())switch(r.source){case"local":o.local++;break;case"storage":o.storage++;break;case"remote":o.remote++;break;default:o.unknown++}this.logService.info("[UnifiedModelProvider] Loaded catalog from storage provider",{modelCount:this.models.size,defaultModelId:this.defaultModelId,sourceStats:o})}async initializeFromRemote(){if(!this.remoteProvider){this.logService.warn("[UnifiedModelProvider] Remote init skipped: remote provider not configured");return}if(!await this.syncRemoteAuthToken()){this.logService.warn("[UnifiedModelProvider] Remote init skipped: no auth token");return}await this.remoteProvider.refresh();let o=await this.remoteProvider.listModels(),r=await this.remoteProvider.getDefaultModelId();this.models.clear();for(let i of o)this.models.set(i.id,i);this.defaultModelId=r,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"reset",modelIds:Array.from(this.models.keys())})}async resetToLocal(){this.logService.info("[UnifiedModelProvider] reset_started"),await this.storageProvider.clear(),await this.initializeFromLocal(),this.logService.info("[UnifiedModelProvider] reset_local_applied",{modelCount:this.models.size,defaultModelId:this.defaultModelId})}needsRefresh(n,o){return Object.keys(this.localConfigVersions).length===0?!0:o.some(r=>(n[r]??0)!==(this.localConfigVersions[r]??0))}async initializeFromLocal(){await this.localProvider.refresh();let n=await this.localProvider.listModels(),o=await this.migrateInlineApiKeysToSecretRefs(n,"local"),r=await this.localProvider.getDefaultModelId();this.models.clear();for(let i of o)this.models.set(i.id,i);this.defaultModelId=r,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"reset",modelIds:Array.from(this.models.keys())}),this.logService.info("[UnifiedModelProvider] Local bootstrap completed",{modelCount:o.length,defaultModelId:r})}async migrateInlineApiKeysToSecretRefs(n,o){let r=[],i=0;for(let s of n){let a=s.apiKeyConfig.apiKey?.trim(),l=s.apiKeyConfig.apiKeyRef?.trim();if(!a){r.push(s);continue}if(o==="local"&&l){r.push(s);continue}let c=l||`${$i.MODEL_API_KEY_SECRET_PREFIX}${s.id}`;try{await this.secretStore.setSecret(c,a),r.push({...s,apiKeyConfig:{...s.apiKeyConfig,apiKey:void 0,apiKeyRef:c}}),i++}catch(u){this.logService.error(`[UnifiedModelProvider] Failed to migrate ${o} model apiKey to secret ref`,{modelId:s.id,error:u instanceof Error?u.message:String(u)}),r.push(s)}}return o==="remote"&&i>0&&this.logService.info("[UnifiedModelProvider] Remote apiKey migration completed",{migratedCount:i,totalModels:n.length}),r}async refreshFromRemote(n){if(this.remoteProvider)try{if(!!!await this.syncRemoteAuthToken())return;if(n?.skipVersionCheck)this.logService.info("[UnifiedModelProvider] Manual refresh: force remote sync without config version check");else{let i=await this.remoteProvider.fetchConfigVersions();if(!this.needsRefresh(i,["llmModels"])){this.logService.info("[UnifiedModelProvider] Config versions unchanged, skipping full refresh");return}this.localConfigVersions=i}await this.remoteProvider.refresh(),await this.mergeFromRemote()}catch(o){this.logService.error("[UnifiedModelProvider] Failed to refresh from remote:",o)}}async refreshAutomatically(){if(await this.hasRemoteAuthToken()&&this.remoteProvider){await this.refreshFromRemote({skipVersionCheck:!1}),await this.loadFromStorage();return}await this.storageProvider.clear(),await this.initializeFromLocal()}async syncRemoteAuthToken(){if(this.remoteProvider)try{let n=await this.secretStore.getSecret(Bt.AccessToken);return this.remoteProvider.setAuthToken(n),n}catch(n){this.logService.warn("[UnifiedModelProvider] Failed to load auth token for remote provider",n);return}}async hasRemoteAuthToken(){try{return!!await this.secretStore.getSecret(Bt.AccessToken)}catch{return!1}}async mergeFromRemote(){if(!this.remoteProvider)return;let n=await this.remoteProvider.listModels(),o=await this.migrateInlineApiKeysToSecretRefs(n,"remote"),r=await this.remoteProvider.getDefaultModelId();this.models.clear();for(let i of o)this.models.set(i.id,{...i,source:"remote"});this.defaultModelId=r,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"reset",modelIds:Array.from(this.models.keys())}),this.logService.info(`[UnifiedModelProvider] Replaced catalog with ${o.length} remote models`),this.logService.info("[UnifiedModelProvider] remote_overwrite_applied",{modelCount:o.length,defaultModelId:r})}startPeriodicSync(){let n=this.options.remoteSyncInterval||6e5;this.syncTimer=setInterval(()=>{this.refreshAutomatically().catch(o=>{this.logService.error("[UnifiedModelProvider] Periodic sync failed:",o)})},n)}async listModels(n){this.initialized||await this.initialize();let o=Array.from(this.models.values());return n&&(n.visibleOnly&&(o=o.filter(r=>r.visible!==!1)),n.enabledOnly&&(o=o.filter(r=>r.enabled!==!1&&r.status==="active")),n.tags&&n.tags.length>0&&(o=o.filter(r=>r.tags&&n.tags.some(i=>r.tags.includes(i)))),n.scene&&(o=o.filter(r=>this.supportsScene(r,n.scene)))),o}supportsScene(n,o){if(!n.capabilities)return!0;switch(o){case"chat":return n.capabilities.supportsChat!==!1;case"completion":return n.capabilities.supportsCompletion!==!1;case"conversation_title":case"user_prompt_refine":case"summarize_conversation":case"commit_message":return n.capabilities.supportsChat!==!1||n.capabilities.supportsCompletion!==!1;case"tool_planning":return n.capabilities.supportsTools!==!1;default:return!0}}async getModelById(n){return this.initialized||await this.initialize(),this.models.get(n)}async getDefaultModelId(n){if(this.initialized||await this.initialize(),n){let r=await this.listModels({scene:n,enabledOnly:!0,visibleOnly:!0}),i=this.sortByPriority(r,n);if(i.length>0)return i[0].id}if(this.defaultModelId&&this.models.has(this.defaultModelId)){let r=this.models.get(this.defaultModelId);if(r&&r.enabled!==!1&&r.status==="active")return this.defaultModelId}let o=await this.listModels({enabledOnly:!0,visibleOnly:!0});if(o.length>0)return o[0].id}async resolveModelForScene(n,o){if(this.initialized||await this.initialize(),o){let s=this.models.get(o);if(s&&s.enabled!==!1&&s.status==="active"&&this.supportsScene(s,n))return s}let r=await this.listModels({scene:n,enabledOnly:!0,visibleOnly:!0}),i=this.sortByPriority(r,n);return i.length>0?i[0]:void 0}sortByPriority(n,o){return n.sort((r,i)=>{let s=r.priorities?.[o]??r.priorities?.fallback??999,a=i.priorities?.[o]??i.priorities?.fallback??999;if(s!==a)return s-a;if(o==="tool_planning"){let u=r.capabilities?.supportsTools===!0?1:0,d=i.capabilities?.supportsTools===!0?1:0;if(u!==d)return d-u}let l=r.contextWindow??0,c=i.contextWindow??0;return l!==c?c-l:r.displayName.localeCompare(i.displayName)})}async getRuntimeConfig(n){let o=await this.getModelById(n);if(!o){this.logService.warn("[UnifiedModelProvider] getRuntimeConfig: model not found",{modelId:n});return}this.runtimeConfigProbeLoggedModelIds.has(o.id)||(this.runtimeConfigProbeLoggedModelIds.add(o.id),this.logService.info("[UnifiedModelProvider] runtime config probe (first seen)",{modelId:o.id,source:o.source,providerType:o.providerType,hasInlineApiKey:!!o.apiKeyConfig?.apiKey,hasApiKeyRef:!!o.apiKeyConfig?.apiKeyRef,hasApiKeyEnv:!!o.apiKeyConfig?.apiKeyEnv}));let r=await this.resolveApiKey(o);return{provider:o.providerType,model:o.model,apiBase:o.baseUrl,apiKey:r}}async resolveApiKey(n){let{apiKeyConfig:o}=n;if(o.apiKey)return o.apiKey;if(o.apiKeyRef)try{let r=await this.secretStore.getSecret(o.apiKeyRef);if(r)return r;this.logService.warn("[UnifiedModelProvider] resolveApiKey: secret ref empty",{modelId:n.id,apiKeyRef:o.apiKeyRef})}catch(r){this.logService.error(`[UnifiedModelProvider] Failed to get API key from secret storage: ${o.apiKeyRef}`,r)}if(o.apiKeyEnv){let r=process.env[o.apiKeyEnv];if(r)return r;this.logService.warn("[UnifiedModelProvider] resolveApiKey: env var empty",{modelId:n.id,apiKeyEnv:o.apiKeyEnv})}this.noKeyWarnedModelIds.has(n.id)?this.logService.debug("[UnifiedModelProvider] resolveApiKey: no key resolved (repeated)",{modelId:n.id,source:n.source}):(this.noKeyWarnedModelIds.add(n.id),this.logService.warn("[UnifiedModelProvider] resolveApiKey: no key resolved (first warning)",{modelId:n.id,source:n.source,hasInlineApiKey:!!o.apiKey,hasApiKeyRef:!!o.apiKeyRef,hasApiKeyEnv:!!o.apiKeyEnv}))}async refresh(){if(await this.hasRemoteAuthToken()&&this.remoteProvider){await this.refreshFromRemote({skipVersionCheck:!0}),await this.loadFromStorage();return}await this.storageProvider.clear(),await this.initializeFromLocal()}async updateModel(n){let o=this.models.get(n.id),r={...n,source:o?.source||"storage",updatedAt:new Date().toISOString()};this.models.set(n.id,r),await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"update",modelIds:[n.id]})}async setDefaultModel(n){if(!this.models.has(n))throw new Error(`Model not found: ${n}`);this.defaultModelId=n,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"update",modelIds:[n]})}dispose(){this.syncTimer&&clearInterval(this.syncTimer),super.dispose()}};$i=ma([Or(1,Zu),Or(2,zh),Or(3,Gh),Or(4,ak)],$i);function lk(t){if(!(!t?.providerType||!t.model||!t.baseUrl)&&!(t.enabled===!1||t.visible===!1)&&!(t.status!==void 0&&t.status!=="active"))return{id:t.id,displayName:t.displayName,config:{provider:t.providerType,model:t.model,apiBase:t.baseUrl,apiKey:t.apiKeyConfig?.apiKey,contextLength:t.contextWindow,maxOutputTokens:t.maxOutputTokens},capabilities:t.capabilities}}import{Agent as D5,fetch as O5}from"undici";var Jh=class extends jh{insecureTlsAgent;pinnedTlsAgents=new Map;constructor(e){super(e)}shouldUseInsecureTls(e,n){return n.strictSSL===!1?!0:Qr.tlsInsecure===!0&&e.startsWith("https://")}async fetchWithTls(e,n){let o={method:n.type||"GET",headers:n.headers,body:n.data};if(this.shouldUseInsecureTls(e,n))return this.insecureTlsAgent||(this.insecureTlsAgent=new D5({connect:{rejectUnauthorized:!1}})),await O5(e,{...o,dispatcher:this.insecureTlsAgent});let r=Pl(e);if(r){let i=this.pinnedTlsAgents.get(e);return i||(i=new D5({connect:r}),this.pinnedTlsAgents.set(e,i)),await O5(e,{...o,dispatcher:i})}return fetch(e,o)}async request(e,n){return this.logAndRequest(e,async()=>{if(!e.url)throw new Error("Request URL is required");let o=await this.fetchWithTls(e.url,e),r=await o.text();return{res:{statusCode:o.status,headers:Object.fromEntries(o.headers.entries())},stream:IR(ci.fromString(r))}})}resolveProxy(e){return Promise.resolve(void 0)}lookupAuthorization(e){return Promise.resolve(void 0)}lookupKerberosAuthorization(e){return Promise.resolve(void 0)}loadCertificates(){return Promise.resolve([])}};var $l=class{db=new Ri;stateStore=new Ai(this.db);secretStore=new Al(this.db);requestService;provider;initialized=!1;_onDidChange=new Ve;onDidChange=this._onDidChange.event;constructor(e){this.requestService=new Jh(e);let n=Qr.authBaseUrl?.replace(/\/$/,""),o=n?Ph(n,"/admin/llm-models/all"):void 0;this.provider=new $i({remoteEndpoint:o,enableRemoteSync:!!o},this.stateStore,this.requestService,e,this.secretStore),this.provider.onDidChange(()=>this._onDidChange.fire())}async initialize(){this.initialized||(await this.provider.initialize(),this.initialized=!0)}async ensureInitialized(){this.initialized||await this.initialize()}async listModelMetadata(e){return await this.ensureInitialized(),this.provider.listModels(e)}async getModelMetadataById(e){return await this.ensureInitialized(),this.provider.getModelById(e)}async getDefaultModelId(e){return await this.ensureInitialized(),this.provider.getDefaultModelId(e)}async resolveModelForScene(e,n){return await this.ensureInitialized(),this.provider.resolveModelForScene(e,n)}async getRuntimeConfig(e){return await this.ensureInitialized(),this.provider.getRuntimeConfig(e)}async refresh(){await this.ensureInitialized(),await this.provider.refresh()}async resetToLocal(){await this.ensureInitialized(),await this.provider.resetToLocal()}async updateModel(e){await this.ensureInitialized(),await this.provider.updateModel(e)}async setDefaultModel(e){await this.ensureInitialized(),await this.provider.setDefaultModel(e)}async getModels(){let e=await this.listModelMetadata({visibleOnly:!0,enabledOnly:!0}),n=[];for(let o of e){let r=lk(o);if(!r)continue;let i=await this.getRuntimeConfig(o.id);i?.apiKey&&(r.config.apiKey=i.apiKey),n.push(r)}return n}async getModelById(e){let n=await this.getModelMetadataById(e);if(!n)return;let o=lk(n);if(!o)return;let r=await this.getRuntimeConfig(e);return r?.apiKey&&(o.config.apiKey=r.apiKey),o}};async function L5(t){if(!(t.runtimeConfig?.provider==="panda"))return{needsGatewayAuth:!1};if(!t.runtimeConfig?.apiKey)throw new Error(kh(t.runtimeConfig?.model));let n=t.sink;if(!n)return{needsGatewayAuth:!0};let o=await t.authService.getAccessToken();if(!o){if(!await t.authService.checkSession())throw new Error("PANDA_NOT_LOGGED_IN");o=await t.authService.getAccessToken()}if(!o)throw new Error("PANDA_NOT_LOGGED_IN");await n.setAuthToken?.(o);let r=await t.authService.getGatewaySigningKey();r&&await n.setAuthSigningToken?.(r);let i=await t.authService.getGatewaySessionId();return i&&await n.setAuthGatewaySessionId?.(i),{needsGatewayAuth:!0}}var Yh=class extends Tt{_serviceBrand;_onChunk=this._register(new Ve);onChunk=this._onChunk.event;_onComplete=this._register(new Ve);onComplete=this._onComplete.event;_onError=this._register(new Ve);onError=this._onError.event;llm;modelProvider;llmCache=new Map;_authToken;_authSigningToken;_authGatewaySessionId;debug;activeRequests=new Map;requestStartTimes=new Map;mainThreadProxy;_whenInitializedPromise;_resolveInitialized;authRuntime=new Ml;modelCatalogRuntime;modelCatalogChangeListener;constructor(e){super(),this._whenInitializedPromise=new Promise(n=>{this._resolveInitialized=n}),this.llm=e.llm,this.modelProvider=e.modelProvider,this.debug=e.debug??!1,this.mainThreadProxy=e.mainThreadProxy,this.mainThreadProxy&&(this._register(this._onChunk.event(n=>{this.mainThreadProxy?.$acceptChunk(n.requestId,n.chunk,n.done)})),this._register(this._onComplete.event(n=>{this.mainThreadProxy?.$acceptComplete(n.requestId,n.message,n.usage)})),this._register(this._onError.event(n=>{this.mainThreadProxy?.$acceptError(n.requestId,n.error,n.code,n.retriable)})))}setLLM(e){this.llm=e}setModelProvider(e){this.llmCache.clear(),this.modelCatalogChangeListener?.dispose(),this.modelCatalogChangeListener=void 0,this.modelProvider=e,e instanceof $l&&(this.modelCatalogRuntime=e,this.modelCatalogChangeListener=e.onDidChange(()=>{this.llmCache.clear()}))}markLLMInitialized(){this._resolveInitialized()}async getOrCreateLLM(e){let n=this.llmCache.get(e);if(n)return n;if(!this.modelProvider)return;let o=await this.modelProvider.getModelById(e);if(!o)return;let r=await n5(o.config,o.capabilities);return this.llmCache.set(e,r),r}_applyAuthTokenToLlm(e){!e||this._authToken===void 0||e.setAuthToken?.(this._authToken)}_applyAuthSigningTokenToLlm(e){!e||this._authSigningToken===void 0||e.setAuthSigningToken?.(this._authSigningToken)}_applyAuthGatewaySessionIdToLlm(e){!e||this._authGatewaySessionId===void 0||e.setAuthGatewaySessionId?.(this._authGatewaySessionId)}async chat(e,n,o){let r=je(),i=new AbortController;this.activeRequests.set(r,i);let s=Date.now();return this.requestStartTimes.set(r,s),this.debug,this.executeChat(r,e,n,o,i.signal).catch(a=>{this.debug&&console.error(`[PandaLLMService] chat error: ${r}`,a)}),r}async cancel(e){let n=this.activeRequests.get(e);if(n){let o=this.requestStartTimes.get(e),r=o?Date.now()-o:void 0;console.warn("[PandaLLMService] request cancelled",{requestId:e,elapsedMs:r}),this.debug,n.abort(),this.activeRequests.delete(e),this.requestStartTimes.delete(e)}}async getConfigurationStatus(){let e=await this.resolveLLMForRequest(void 0);return e?e.getConfigurationStatus():va.INVALID}async listModels(){return this.modelProvider?(await this.modelProvider.getModels()).map(n=>({id:n.id,displayName:n.displayName})):this.llm?[{id:"default",displayName:this.llm.title??this.llm.model}]:[]}async supportsTools(){let e=await this.resolveLLMForRequest(void 0);return e?e.supportsTools():!1}async getModelInfo(e){let n=await this.resolveModelEntryForInfo(e);if(n)return NL(n);let o=this.llm;if(o){let r=typeof o.completionOptions?.maxOutputTokens=="number"&&o.completionOptions.maxOutputTokens>0?o.completionOptions.maxOutputTokens:4096;return{modelId:"default",displayName:o.title??o.model,contextLength:o.contextLength,maxOutputTokens:r}}throw new Error("LLM service not initialized. Set modelProvider or setLLM() with config.")}async resolveModelEntryForInfo(e){if(this.modelProvider&&e)return this.modelProvider.getModelById(e);if(this.modelProvider&&!e){let n=await this.modelProvider.getDefaultModelId();if(n)return this.modelProvider.getModelById(n)}}async resolveLLMForRequest(e){let n=e?.modelId;if(this.modelProvider&&n)return this.getOrCreateLLM(n);if(this.modelProvider&&!n){let o=await this.modelProvider.getDefaultModelId();if(o)return this.getOrCreateLLM(o)}return this.llm}async $chat(e,n,o){return this.chat(e,n,o)}async $cancel(e){return this.cancel(e)}async $getConfigurationStatus(){return this.getConfigurationStatus()}async $listModels(){return this.listModels()}async $supportsTools(){return this.supportsTools()}async $getModelInfo(e){return this.getModelInfo(e)}async $whenLLMInitialized(){return this._whenInitializedPromise}async $setAuthToken(e){this._authToken=e,this._applyAuthTokenToLlm(this.llm);for(let n of this.llmCache.values())this._applyAuthTokenToLlm(n)}async $setAuthSigningToken(e){this._authSigningToken=e,this._applyAuthSigningTokenToLlm(this.llm);for(let n of this.llmCache.values())this._applyAuthSigningTokenToLlm(n)}async $setAuthGatewaySessionId(e){this._authGatewaySessionId=e,this._applyAuthGatewaySessionIdToLlm(this.llm);for(let n of this.llmCache.values())this._applyAuthGatewaySessionIdToLlm(n)}async $prepareGatewayAuth(e){await this._whenInitializedPromise;let n=e?await this.modelCatalogRuntime?.getRuntimeConfig(e):void 0;return L5({runtimeConfig:n,authService:{getAccessToken:()=>this.authRuntime.getAccessToken(),checkSession:async()=>(await this.authRuntime.checkSession()).ok,getGatewaySigningKey:()=>this.authRuntime.getGatewaySigningKey(),getGatewaySessionId:()=>this.authRuntime.getGatewaySessionId()},sink:{setAuthToken:o=>this.$setAuthToken(o),setAuthSigningToken:o=>this.$setAuthSigningToken(o),setAuthGatewaySessionId:o=>this.$setAuthGatewaySessionId(o)}})}async $authCheckSession(){return this.authRuntime.checkSession()}async $authLogin(e,n){return this.authRuntime.login(e,n)}async $authLogout(){return this.authRuntime.logout()}async $authGetAccessToken(){return this.authRuntime.getAccessToken()}async $authGetRefreshToken(){return this.authRuntime.getRefreshToken()}async $authGetGatewaySessionId(){return this.authRuntime.getGatewaySessionId()}async $authGetGatewaySigningKey(){return this.authRuntime.getGatewaySigningKey()}async $authGetCurrentUser(){return this.authRuntime.getCurrentUser()}async $authSendRegisterVerificationCode(e){return this.authRuntime.sendRegisterVerificationCode(e)}async $authRegister(e,n,o,r,i){return this.authRuntime.register(e,n,o,r,i)}async $authSendChangePasswordVerificationCode(){return this.authRuntime.sendChangePasswordVerificationCode()}async $authChangePassword(e,n){return this.authRuntime.changePassword(e,n)}async $authSendResetPasswordVerificationCode(e){return this.authRuntime.sendResetPasswordVerificationCode(e)}async $authResetPassword(e,n,o){return this.authRuntime.resetPassword(e,n,o)}async $modelList(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.listModelMetadata(e)??[]}async $modelGetById(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.getModelMetadataById(e)}async $modelGetDefaultId(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.getDefaultModelId(e)}async $modelResolveForScene(e,n){return await this._whenInitializedPromise,this.modelCatalogRuntime?.resolveModelForScene(e,n)}async $modelGetRuntimeConfig(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.getRuntimeConfig(e)}async $modelRefresh(){await this._whenInitializedPromise,await this.modelCatalogRuntime?.refresh()}async $modelResetToLocal(){await this._whenInitializedPromise,await this.modelCatalogRuntime?.resetToLocal()}async $modelUpdate(e){await this._whenInitializedPromise,await this.modelCatalogRuntime?.updateModel(e)}async $modelSetDefault(e){await this._whenInitializedPromise,await this.modelCatalogRuntime?.setDefaultModel(e)}async executeChat(e,n,o,r,i){let s=this.requestStartTimes.get(e),a=await this.resolveLLMForRequest(r);if(!a){let l="LLM service not initialized. Set modelProvider or setLLM() with config.";console.error(`[PandaLLMService] ${l}`),this._onError.fire({requestId:e,error:l,code:"NOT_INITIALIZED",retriable:!1});return}this._applyAuthTokenToLlm(a),this._applyAuthSigningTokenToLlm(a),this._applyAuthGatewaySessionIdToLlm(a);try{let l={...r,tools:o??r?.tools},c=[],u,d,f=new wa(a).run({messages:n,signal:i,options:l,querySource:l.querySource??"chat_main",fallbackModel:l.fallbackModel}),m=await f.next();for(;!m.done;){let g=m.value;if(i?.aborted)break;if(g.type==="retry"){console.warn("[PandaLLMService] retry scheduled",{requestId:e,attempt:g.attempt,delayMs:g.delayMs,category:g.error.category}),m=await f.next();continue}if(g.type==="fallback_non_stream"||g.type==="fallback_model"){console.warn("[PandaLLMService] fallback triggered",{requestId:e,type:g.type}),m=await f.next();continue}let h=g.chunk;if(this._onChunk.fire({requestId:e,chunk:h,done:!1}),h.role==="assistant"){if(typeof h.content=="string")h.content.length>0&&c.push(h.content);else if(Array.isArray(h.content))for(let y of h.content)y.type==="text"&&typeof y.text=="string"&&y.text.length>0&&c.push(y.text);h.usage&&(u=h.usage)}m=await f.next()}if(d=m.done?m.value:void 0,!i?.aborted){let g=d?.usage??u,y={role:"assistant",content:c.join(""),...g&&{usage:g}};this._onComplete.fire({requestId:e,message:y,usage:g})}}catch(l){let c=s?Date.now()-s:void 0;if(console.error("[PandaLLMService] request failed",{requestId:e,elapsedMs:c,aborted:i?.aborted??!1,errorName:l instanceof Error?l.name:typeof l,errorMessage:l instanceof Error?l.message:String(l),errorCode:l.code}),i?.aborted)return;let u=l instanceof Error?l.message:String(l),d=l.code,p=Tp(l);console.warn("[PandaLLMService] emit onError",{requestId:e,errorCode:d,errorMessage:u,normalizedCategory:p.category,normalizedStatusCode:p.statusCode,retriable:p.category==="network"||p.category==="timeout"||p.category==="rate_limit_429"||p.category==="overload_529"||p.category==="server_5xx"}),this._onError.fire({requestId:e,error:u,code:d,retriable:p.category==="network"||p.category==="timeout"||p.category==="rate_limit_429"||p.category==="overload_529"||p.category==="server_5xx"})}finally{this.activeRequests.delete(e),this.requestStartTimes.delete(e)}}};var ld=class extends Tt{constructor(n,o){super();this.llmService=n;this.model=o?.model??"default",this.title=o?.title??"Panda LLM",this.uniqueId=o?.uniqueId??`panda-illm-${Date.now()}`,this.completionOptions={model:this.model},this._register(this.llmService.onChunk(i=>{let s=this.activeRequests.get(i.requestId);s&&(s.chunks.push(i.chunk),this._onStreamChunk.fire(i.chunk))})),this._register(this.llmService.onComplete(i=>{let s=this.activeRequests.get(i.requestId);s&&(s.done=!0,s.usage=i.usage,s.resolve(i.message))})),this._register(this.llmService.onError(i=>{try{let s=this.activeRequests.get(i.requestId);s&&(s.done=!0,s.reject(new Error(i.error)),this.activeRequests.delete(i.requestId))}catch{}}))}llmService;providerName="panda-ext-host";underlyingProviderName="panda-ext-host";uniqueId;model;title;apiKey;apiBase;contextLength=2e5;completionOptions;requestOptions;capabilities;promptTemplates;autocompleteOptions;cacheBehavior;embeddingId="";maxEmbeddingChunkSize=512;maxEmbeddingBatchSize=128;roles;lastRequestId;_onStreamChunk=this._register(new Ve);onStreamChunk=this._onStreamChunk.event;activeRequests=new Map;async*streamChat(n,o,r,i){let s=r?.tools,a=await this.llmService.chat(n,s,r);this.lastRequestId=a;let l=[],c=null,u=null,d=new Promise((f,m)=>{this.activeRequests.set(a,{chunks:l,resolve:g=>{c=g,f(g)},reject:g=>{u=g,m(g)},done:!1})});d.catch(()=>{});let p=()=>{this.llmService.cancel(a)};o.addEventListener("abort",p);try{for(;!c&&!u;){if(o.aborted)throw new DOMException("The operation was aborted.","AbortError");for(;l.length>0;)yield l.shift();if(this.activeRequests.get(a)?.done)break;await new Promise(y=>setTimeout(y,10))}for(;l.length>0;)yield l.shift();if(u)throw u;let f=await d,g=this.activeRequests.get(a)?.usage;return{modelTitle:this.title??this.model,modelProvider:this.providerName,prompt:JSON.stringify(n),completion:typeof f.content=="string"?f.content:JSON.stringify(f.content??""),usage:g,message:f}}finally{o.removeEventListener("abort",p),this.activeRequests.delete(a)}}async chat(n,o,r){let i=this.streamChat(n,o,r),s=await i.next();for(;!s.done;)s=await i.next();let a=s.value;if(a?.message)return a.message;throw new Error("No response from LLM")}async*streamComplete(n,o,r){let i=[{role:"user",content:n}];for await(let s of this.streamChat(i,o,r))typeof s.content=="string"&&(yield s.content);return{modelTitle:this.title??this.model,modelProvider:this.providerName,prompt:n,completion:""}}async complete(n,o,r){let i=[];for await(let s of this.streamComplete(n,o,r))i.push(s);return i.join("")}async*streamFim(n,o,r,i){let s=`<|fim_prefix|>${n}<|fim_suffix|>${o}<|fim_middle|>`;for await(let a of this.streamComplete(s,r,i))yield a;return{modelTitle:this.title??this.model,modelProvider:this.providerName,prompt:`prefix: ${n.slice(-100)}, suffix: ${o.slice(0,100)}`,completion:""}}async embed(n){throw new Error("Embedding not supported in PandaLlmServiceAsIllM")}async rerank(n,o){throw new Error("Rerank not supported in PandaLlmServiceAsIllM")}countTokens(n){return Math.ceil(n.length/4)}compileChatMessages(n,o){let r=n.reduce((i,s)=>{let a=typeof s.content=="string"?s.content:JSON.stringify(s.content);return i+this.countTokens(a)},0);return{messages:n,tokenCount:r,truncated:!1}}async listModels(){return this.llmService.listModels()}async getModelInfo(n){return this.llmService.getModelInfo(n)}renderPromptTemplate(n,o,r,i){return o}supportsImages(){return!0}supportsCompletions(){return!0}supportsPrefill(){return!1}supportsFim(){return!1}supportsStreaming(){return!0}supportsTools(){return!0}supportsReasoning(){return!1}getConfigurationStatus(){return"valid"}};Nt();function Qh(t){let e=t.schemaVersion??0;return e<1&&(t=pJ(t),e=1),t.schemaVersion=3,t}function pJ(t){return{schemaVersion:1,conversationId:t.conversationId??"",workspaceId:t.workspaceId??"",createdAt:t.createdAt??Date.now(),updatedAt:t.updatedAt??Date.now(),title:t.title??"Untitled",messages:Array.isArray(t.messages)?t.messages:[],lastUsage:t.lastUsage,migrateSource:t.migrateSource,migrateModelId:t.migrateModelId,interactionMode:t.interactionMode??"agent",planMeta:t.planMeta,turnRanges:Array.isArray(t.turnRanges)?t.turnRanges:void 0}}function ck(t){let e=t.schemaVersion??0;return e<1&&(t=fJ(t),e=1),t.schemaVersion=3,t}function fJ(t){return{schemaVersion:1,workspaceId:t.workspaceId??"",conversations:Array.isArray(t.conversations)?t.conversations:[]}}var uk="index.json",cd=class{constructor(e){this.home=e}home;async listSessions(e){return(await this.loadIndex(e)).conversations}async saveConversation(e,n){let o=this.home.getSessionsDir(e);await this.home.ensureDir(o);let r=lt(o,`${n.conversationId}.json`);await this.home.fs.writeFile(r,JSON.stringify(n,null,2));let i=await this.loadIndex(e),s=df(n),a=i.conversations.findIndex(l=>l.conversationId===n.conversationId);a>=0?i.conversations[a]=s:i.conversations.unshift(s),await this.saveIndex(e,i)}async loadConversation(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.json`);try{let i=await this.home.fs.readFile(r),s=JSON.parse(i);return Qh(s)}catch{return null}}async deleteConversation(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.json`);await this.home.fs.removeFile(r);let i=lt(o,`${n}.todo.md`);try{await this.home.fs.removeFile(i)}catch{}let s=await this.loadIndex(e);s.conversations=s.conversations.filter(a=>a.conversationId!==n),await this.saveIndex(e,s)}async updateSummary(e,n){let o=await this.loadIndex(e),r=o.conversations.findIndex(i=>i.conversationId===n.conversationId);r>=0&&(o.conversations[r]=n,await this.saveIndex(e,o))}async getWorkspaceSelectedModel(e){return(await this.loadIndex(e)).selectedModelId}async setWorkspaceSelectedModel(e,n){let o=await this.loadIndex(e);o.selectedModelId=n,await this.saveIndex(e,o)}async loadIndex(e){let n=this.home.getSessionsDir(e),o=lt(n,uk);try{let r=await this.home.fs.readFile(o);return ck(JSON.parse(r))}catch{return this.rebuildIndex(e)}}async saveIndex(e,n){let o=this.home.getSessionsDir(e);await this.home.ensureDir(o);let r=lt(o,uk);await this.home.fs.writeFile(r,JSON.stringify(n,null,2))}async rebuildIndex(e){let n=this.home.getSessionsDir(e),o=await this.home.fs.readdir(n),r=[];for(let s of o)if(!(s.isDirectory||!s.name.endsWith(".json")||s.name===uk))try{let a=lt(n,s.name),l=await this.home.fs.readFile(a),c=Qh(JSON.parse(l));r.push(df(c))}catch{}r.sort((s,a)=>a.updatedAt-s.updatedAt);let i={schemaVersion:3,workspaceId:e,conversations:r};try{await this.saveIndex(e,i)}catch{}return i}async saveTodo(e,n,o){let r=this.home.getSessionsDir(e),i=lt(r,`${n}.todo.md`);if(o.trim()==="")try{await this.home.fs.removeFile(i)}catch{}else await this.home.ensureDir(r),await this.home.fs.writeFile(i,o)}async loadTodo(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.todo.md`);try{return await this.home.fs.readFile(r)}catch{return""}}async deleteTodo(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.todo.md`);try{await this.home.fs.removeFile(r)}catch{}}};function ud(t){let o=(t.split(/[/\\]/).filter(Boolean).pop()||"workspace").toLowerCase().replace(/[^a-z0-9-]/g,"-").slice(0,30),r=mJ(t);return`${o}-${r}`}function mJ(t){let e=5381,n=52711;for(let i=0;i<t.length;i++){let s=t.charCodeAt(i);e=(e<<5)+e+s|0,n=(n<<5)+n+s|0}let o=(e>>>0).toString(16).padStart(8,"0"),r=(n>>>0).toString(16).padStart(8,"0").slice(0,4);return o+r}Nt();Nt();import*as N5 from"fs";import*as $5 from"os";import*as Xh from"path";var gJ=["CREATE TABLE IF NOT EXISTS tch_messages ("," conversation_id TEXT NOT NULL,"," encrypted_data TEXT NOT NULL,"," PRIMARY KEY (conversation_id)",");","CREATE TABLE IF NOT EXISTS tch_meta ("," key TEXT PRIMARY KEY,"," value TEXT NOT NULL",");","INSERT OR IGNORE INTO tch_meta (key, value) VALUES ('schema_version', '2');"].join(`
1977
- `),dd=class{connections=new Map;pandaHome;logService;encryptionLogService;constructor(e={}){this.pandaHome=e.pandaHome??process.env.PANDA_HOME??Xh.join($5.homedir(),".panda"),this.logService=e.logService,this.encryptionLogService=e.encryptionLogService}async saveTchMessages(e,n,o){let r=await this.getConnection(e);if(!r)return;let i=await r.encryption.encrypt(o);await r.db.run("INSERT OR REPLACE INTO tch_messages (conversation_id, encrypted_data) VALUES (?, ?)",[n,i]),this.log("trace",`[TchStorage] Saved TCH for ${n} (v12)`)}async loadTchMessages(e,n){let o=await this.getConnection(e);if(!o)return null;let r=await o.db.get("SELECT encrypted_data FROM tch_messages WHERE conversation_id = ?",[n]);if(!r)return null;let i=r.encrypted_data,s=Mi.getVersion(i);try{return s===Ds.V12?await o.encryption.decrypt(i):(this.log("warn",`[TchStorage] Unsupported ciphertext version for ${n}: ${s||"(none)"}`),null)}catch(a){return this.log("error","[TchStorage] Decrypt failed:",a),null}}async deleteTchMessages(e,n){let o=await this.getConnection(e);o&&await o.db.run("DELETE FROM tch_messages WHERE conversation_id = ?",[n])}async closeDatabase(e){let n=this.connections.get(e);if(n){this.connections.delete(e);try{let o=await n;o&&await o.db.close()}catch{}}}async closeAll(){let e=Array.from(this.connections.keys());for(let n of e)await this.closeDatabase(n)}getConnection(e){let n=this.connections.get(e);return n||(n=this.openDatabase(e).catch(o=>(this.log("error","[TchStorage] Failed to open database:",o),null)),this.connections.set(e,n)),n}async openDatabase(e){let n=Xh.dirname(e);await N5.promises.mkdir(n,{recursive:!0});let o=new Mi({logService:this.encryptionLogService,pandaHome:this.pandaHome});await o.initialize();let r=await Rl(e);return await r.exec(gJ),{db:r,encryption:o}}log(e,n,o){this.logService&&(e==="trace"?this.logService.trace(n):e==="warn"?this.logService.warn(n):this.logService.error(n,o))}};var hJ=1,pd=class{constructor(e){this.home=e;this.tchStorage=new dd({pandaHome:e.homePath})}home;tchStorage;openedDbPaths=new Set;async saveTchMessages(e,n,o){let r={schemaVersion:hJ,messages:o.map(s=>this.serializeMessage(s))},i=this.getDbPath(e);this.openedDbPaths.add(i),await this.tchStorage.saveTchMessages(i,n,JSON.stringify(r))}async loadTchMessages(e,n){try{let o=this.getDbPath(e);this.openedDbPaths.add(o);let r=await this.tchStorage.loadTchMessages(o,n);return r?JSON.parse(r).messages.map(s=>this.deserializeMessage(s)):null}catch{return null}}async deleteTchMessages(e,n){let o=this.getDbPath(e);this.openedDbPaths.add(o),await this.tchStorage.deleteTchMessages(o,n)}async close(){for(let e of this.openedDbPaths)await this.tchStorage.closeDatabase(e);this.openedDbPaths.clear()}getDbPath(e){return lt(this.home.getProjectDir(e),"data","tch.db")}serializeMessage(e){let n={messageId:e.messageId,role:e.role,content:e.content,turnId:e.turnId};return e.toolCalls?.length&&(n.toolCalls=e.toolCalls),e.toolResults?.length&&(n.toolResults=e.toolResults),e.timestamp&&(n.timestamp=e.timestamp),e.workId&&(n.workId=e.workId),n}deserializeMessage(e){return{messageId:e.messageId,role:e.role,content:e.content,toolCalls:e.toolCalls,toolResults:e.toolResults,timestamp:e.timestamp,workId:e.workId,turnId:e.turnId??""}}};async function dk(t){let{workspaceId:e,persistence:n,tchPersistence:o}=t,r={migrated:0,skippedExisting:0,skippedEmpty:0,failed:0},i=await n.listSessions(e);for(let s of i)try{let a=await o.loadTchMessages(e,s.conversationId);if(a&&a.length>0){r.skippedExisting+=1;continue}let l=await n.loadConversation(e,s.conversationId);if(!l){r.failed+=1;continue}let c=Fc(l),u=pf(c);if(u.length===0){r.skippedEmpty+=1;continue}await o.saveTchMessages(e,s.conversationId,u),r.migrated+=1}catch{r.failed+=1}return r}Nt();var pk=null;async function Fi(){return pk||(pk=await import("node:fs/promises")),pk}var ey=class{async readFile(e){return(await Fi()).readFile(e,"utf-8")}async writeFile(e,n){let o=await Fi(),r=ir(e);await o.mkdir(r,{recursive:!0});let i=Math.random().toString(36).slice(2,10),s=lt(r,`.tmp.${process.pid}.${Date.now()}.${i}`);try{await o.writeFile(s,n,"utf-8"),await o.rename(s,e)}catch(a){try{await o.unlink(s)}catch{}throw a}}async appendFile(e,n){let o=await Fi(),r=ir(e);await o.mkdir(r,{recursive:!0}),await o.appendFile(e,n,"utf-8")}async mkdir(e){await(await Fi()).mkdir(e,{recursive:!0})}async exists(e){let n=await Fi();try{return await n.access(e),!0}catch{return!1}}async removeFile(e){let n=await Fi();try{await n.unlink(e)}catch(o){if(o.code!=="ENOENT")throw o}}async readdir(e){let n=await Fi();try{return(await n.readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDirectory:r.isDirectory()}))}catch(o){if(o.code==="ENOENT")return[];throw o}}async removeDir(e){let n=await Fi();try{await n.rm(e,{recursive:!0,force:!0})}catch(o){if(o.code!=="ENOENT")throw o}}};Lr();var fd=class{constructor(e){this.eventBus=e}eventBus;state=new Map;update(e,n){let o=n.trim();o===""?this.state.delete(e):this.state.set(e,o),this.eventBus.emit(P.TODO_UPDATED,{conversationId:e,content:o})}get(e){return this.state.get(e)??""}restore(e,n){let o=n.trim();o===""?this.state.delete(e):this.state.set(e,o)}remove(e){this.state.delete(e)}areAllCompleted(e){let n=this.get(e);if(n==="")return!1;let o=n.split(`
1978
- `),r=!1;for(let i of o){if(i.trim()==="")continue;let a=/^\s*-\s*\[x\]/i.test(i),l=/^\s*-\s*\[\s\]/.test(i);if((a||l)&&(r=!0,l))return!1}return r}clear(e){this.state.delete(e)}};Nt();tn();var ty=class{constructor(e){this.home=e}home;getPlansDir(){return this.home.resolve(Mo.PLANS)}async ensurePlanMeta(e,n,o){return o?.filePath&&o.fileName&&o.randomId?o:this.createPlanMeta(n)}async createNewPlanMeta(e){return this.createPlanMeta(e)}async writePlan(e,n){let o=this.getPlansDir();await this.home.ensureDir(o),await this.home.fs.writeFile(e.filePath,n)}async copyPlanForFork(e,n){let o=await this.createPlanMeta(n??e.title),r="";try{await this.home.fs.exists(e.filePath)&&(r=await this.home.fs.readFile(e.filePath))}catch{}return await this.writePlan(o,r),o}async createPlanMeta(e){let n=this.getPlansDir();await this.home.ensureDir(n);let o=yJ(e??"\u672A\u547D\u540D\u8BA1\u5212");for(let s=0;s<5;s++){let a=F5(),l=`${o}_${a}.plan.md`,c=lt(n,l);if(!await this.home.fs.exists(c))return{title:o,randomId:a,fileName:l,filePath:c}}let r=`${F5()}${Date.now().toString(16).slice(-2)}`.slice(0,8),i=`${o}_${r}.plan.md`;return{title:o,randomId:r,fileName:i,filePath:lt(n,i)}}};function F5(){return je().replace(/-/g,"").slice(0,8)}function yJ(t){return(t.trim().replace(/\s+/g,"_").replace(/[\\/:*?"<>|]/g,"_").replace(/[\u0000-\u001F]/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||"\u672A\u547D\u540D\u8BA1\u5212").slice(0,50)}import{mkdir as mY}from"node:fs/promises";import{join as gY}from"node:path";import{homedir as hY,tmpdir as yY}from"node:os";async function U5(t,e,n){let o=[];for(let r of t){if(r.type!=="pandaSkill"||!r.skillName){o.push(r);continue}let i=r.skillName,s=await e(i);if(s==null){o.push({type:"text",text:`<Panda Skill>
1976
+ `:""}else return s?e.substring(1):e})}function M5(t){let e=aJ(t);try{return JSON.parse(e)}catch{let o=e.replace(/,\s*([}\]])/g,"$1");return JSON.parse(o)}}var dJ=32e3,pJ=4096;function fJ(){return(typeof process<"u"?process.env.PANDA_HOME:void 0)||sk(uJ(),".panda")}var Zh=class{constructor(e=fJ()){this.pandaHomePath=e}pandaHomePath;models=new Map;defaultModelId;initialized=!1;resolveCandidates(){return[sk(this.pandaHomePath,"models.jsonc"),sk(this.pandaHomePath,"models.json")]}async readCatalogFile(){for(let e of this.resolveCandidates())try{let n=await cJ(e,"utf8");return M5(n)}catch{continue}}normalizeModelMetadata(e){if(!e?.id||!e.displayName||!e.providerType||!e.model||!e.baseUrl)return;let n=typeof e.contextWindow=="number"&&e.contextWindow>0?e.contextWindow:dJ,o=typeof e.maxOutputTokens=="number"&&e.maxOutputTokens>0?e.maxOutputTokens:pJ;return o>n&&(o=Math.min(o,Math.max(1,Math.floor(n*.5)))),{...e,enabled:e.enabled??!0,visible:e.visible??!0,status:e.status??"active",contextWindow:n,maxOutputTokens:o,capabilities:{supportsChat:e.capabilities?.supportsChat??!0,supportsCompletion:e.capabilities?.supportsCompletion??!0,supportsTools:e.capabilities?.supportsTools??!1,supportsStreaming:e.capabilities?.supportsStreaming??!0,supportsMultimodal:e.capabilities?.supportsMultimodal??!1,supportsReasoning:e.capabilities?.supportsReasoning??!1,supportsEmbeddings:e.capabilities?.supportsEmbeddings??!1,supportsRerank:e.capabilities?.supportsRerank??!1},priorities:e.priorities??{fallback:999},tags:e.tags??[],apiKeyConfig:e.apiKeyConfig??{},source:"local",updatedAt:e.updatedAt??new Date().toISOString()}}async loadFromDisk(){let e=await this.readCatalogFile();if(this.models.clear(),this.defaultModelId=void 0,!e||!Array.isArray(e.models)){this.initialized=!0;return}for(let n of e.models){let o=this.normalizeModelMetadata(n);o&&this.models.set(o.id,o)}e.defaultModelId&&this.models.has(e.defaultModelId)&&(this.defaultModelId=e.defaultModelId),this.initialized=!0}async ensureInitialized(){this.initialized||await this.loadFromDisk()}async listModels(){return await this.ensureInitialized(),Array.from(this.models.values())}async getModelById(e){return await this.ensureInitialized(),this.models.get(e)}async getDefaultModelId(){if(await this.ensureInitialized(),this.defaultModelId&&this.models.has(this.defaultModelId))return this.defaultModelId;let e=this.models.values().next();return e.done?void 0:e.value.id}async refresh(){await this.loadFromDisk()}};var ak=Bn("pandaSecretStore");var $i=class extends Tt{constructor(n,o,r,i,s){super();this.options=n;this.logService=i;this.secretStore=s;this.localProvider=new Zh,this.storageProvider=new Dl(o),n.enableRemoteSync&&n.remoteEndpoint&&(this.remoteProvider=new Nl({endpoint:n.remoteEndpoint,timeout:3e4},r,i),this.remoteProvider.onDidChange(()=>{this.mergeFromRemote()})),this.storageProvider.onDidChange(()=>{this.loadFromStorage()})}options;logService;secretStore;static MODEL_API_KEY_SECRET_PREFIX="panda.model.apiKey.";localProvider;storageProvider;remoteProvider;models=new Map;defaultModelId;initialized=!1;localConfigVersions={};runtimeConfigProbeLoggedModelIds=new Set;noKeyWarnedModelIds=new Set;_onDidChange=new Ve;onDidChange=this._onDidChange.event;syncTimer;async initialize(){if(!this.initialized)try{this.logService.info("[UnifiedModelProvider] Initializing..."),this.logService.info("[UnifiedModelProvider] Init options",{enableRemoteSync:this.options.enableRemoteSync??!1,remoteEndpoint:this.options.remoteEndpoint??"(none)",remoteProviderConfigured:!!this.remoteProvider}),await this.loadFromStorage(),this.logService.info("[UnifiedModelProvider] Storage snapshot after load",{modelCount:this.models.size,defaultModelId:this.defaultModelId}),this.models.size===0?await this.hasRemoteAuthToken()&&this.remoteProvider?(this.logService.info("[UnifiedModelProvider] Storage empty, initializing from remote"),await this.initializeFromRemote()):(this.logService.info("[UnifiedModelProvider] Storage empty, initializing from local models.jsonc|json"),await this.initializeFromLocal()):this.logService.info("[UnifiedModelProvider] Using storage catalog as runtime source (no local bootstrap)"),this.remoteProvider&&(this.refreshAutomatically().catch(n=>{this.logService.error("[UnifiedModelProvider] Failed to refresh from remote:",n)}),this.startPeriodicSync()),this.initialized=!0,this.logService.info(`[UnifiedModelProvider] Initialized with ${this.models.size} models`)}catch(n){throw this.logService.error("[UnifiedModelProvider] Initialization failed:",n),n}}async loadFromStorage(){await this.storageProvider.refresh();let n=await this.storageProvider.listModels();this.models.clear();for(let r of n)this.models.set(r.id,r);this.defaultModelId=await this.storageProvider.getDefaultModelId();let o={local:0,storage:0,remote:0,unknown:0};for(let r of this.models.values())switch(r.source){case"local":o.local++;break;case"storage":o.storage++;break;case"remote":o.remote++;break;default:o.unknown++}this.logService.info("[UnifiedModelProvider] Loaded catalog from storage provider",{modelCount:this.models.size,defaultModelId:this.defaultModelId,sourceStats:o})}async initializeFromRemote(){if(!this.remoteProvider){this.logService.warn("[UnifiedModelProvider] Remote init skipped: remote provider not configured");return}if(!await this.syncRemoteAuthToken()){this.logService.warn("[UnifiedModelProvider] Remote init skipped: no auth token");return}await this.remoteProvider.refresh();let o=await this.remoteProvider.listModels(),r=await this.remoteProvider.getDefaultModelId();this.models.clear();for(let i of o)this.models.set(i.id,i);this.defaultModelId=r,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"reset",modelIds:Array.from(this.models.keys())})}async resetToLocal(){this.logService.info("[UnifiedModelProvider] reset_started"),await this.storageProvider.clear(),await this.initializeFromLocal(),this.logService.info("[UnifiedModelProvider] reset_local_applied",{modelCount:this.models.size,defaultModelId:this.defaultModelId})}needsRefresh(n,o){return Object.keys(this.localConfigVersions).length===0?!0:o.some(r=>(n[r]??0)!==(this.localConfigVersions[r]??0))}async initializeFromLocal(){await this.localProvider.refresh();let n=await this.localProvider.listModels(),o=await this.migrateInlineApiKeysToSecretRefs(n,"local"),r=await this.localProvider.getDefaultModelId();this.models.clear();for(let i of o)this.models.set(i.id,i);this.defaultModelId=r,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"reset",modelIds:Array.from(this.models.keys())}),this.logService.info("[UnifiedModelProvider] Local bootstrap completed",{modelCount:o.length,defaultModelId:r})}async migrateInlineApiKeysToSecretRefs(n,o){let r=[],i=0;for(let s of n){let a=s.apiKeyConfig.apiKey?.trim(),l=s.apiKeyConfig.apiKeyRef?.trim();if(!a){r.push(s);continue}if(o==="local"&&l){r.push(s);continue}let c=l||`${$i.MODEL_API_KEY_SECRET_PREFIX}${s.id}`;try{await this.secretStore.setSecret(c,a),r.push({...s,apiKeyConfig:{...s.apiKeyConfig,apiKey:void 0,apiKeyRef:c}}),i++}catch(u){this.logService.error(`[UnifiedModelProvider] Failed to migrate ${o} model apiKey to secret ref`,{modelId:s.id,error:u instanceof Error?u.message:String(u)}),r.push(s)}}return o==="remote"&&i>0&&this.logService.info("[UnifiedModelProvider] Remote apiKey migration completed",{migratedCount:i,totalModels:n.length}),r}async refreshFromRemote(n){if(this.remoteProvider)try{if(!!!await this.syncRemoteAuthToken())return;if(n?.skipVersionCheck)this.logService.info("[UnifiedModelProvider] Manual refresh: force remote sync without config version check");else{let i=await this.remoteProvider.fetchConfigVersions();if(!this.needsRefresh(i,["llmModels"])){this.logService.info("[UnifiedModelProvider] Config versions unchanged, skipping full refresh");return}this.localConfigVersions=i}await this.remoteProvider.refresh(),await this.mergeFromRemote()}catch(o){this.logService.error("[UnifiedModelProvider] Failed to refresh from remote:",o)}}async refreshAutomatically(){if(await this.hasRemoteAuthToken()&&this.remoteProvider){await this.refreshFromRemote({skipVersionCheck:!1}),await this.loadFromStorage();return}await this.storageProvider.clear(),await this.initializeFromLocal()}async syncRemoteAuthToken(){if(this.remoteProvider)try{let n=await this.secretStore.getSecret(Bt.AccessToken);return this.remoteProvider.setAuthToken(n),n}catch(n){this.logService.warn("[UnifiedModelProvider] Failed to load auth token for remote provider",n);return}}async hasRemoteAuthToken(){try{return!!await this.secretStore.getSecret(Bt.AccessToken)}catch{return!1}}async mergeFromRemote(){if(!this.remoteProvider)return;let n=await this.remoteProvider.listModels(),o=await this.migrateInlineApiKeysToSecretRefs(n,"remote"),r=await this.remoteProvider.getDefaultModelId();this.models.clear();for(let i of o)this.models.set(i.id,{...i,source:"remote"});this.defaultModelId=r,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"reset",modelIds:Array.from(this.models.keys())}),this.logService.info(`[UnifiedModelProvider] Replaced catalog with ${o.length} remote models`),this.logService.info("[UnifiedModelProvider] remote_overwrite_applied",{modelCount:o.length,defaultModelId:r})}startPeriodicSync(){let n=this.options.remoteSyncInterval||6e5;this.syncTimer=setInterval(()=>{this.refreshAutomatically().catch(o=>{this.logService.error("[UnifiedModelProvider] Periodic sync failed:",o)})},n)}async listModels(n){this.initialized||await this.initialize();let o=Array.from(this.models.values());return n&&(n.visibleOnly&&(o=o.filter(r=>r.visible!==!1)),n.enabledOnly&&(o=o.filter(r=>r.enabled!==!1&&r.status==="active")),n.tags&&n.tags.length>0&&(o=o.filter(r=>r.tags&&n.tags.some(i=>r.tags.includes(i)))),n.scene&&(o=o.filter(r=>this.supportsScene(r,n.scene)))),o}supportsScene(n,o){if(!n.capabilities)return!0;switch(o){case"chat":return n.capabilities.supportsChat!==!1;case"completion":return n.capabilities.supportsCompletion!==!1;case"conversation_title":case"user_prompt_refine":case"summarize_conversation":case"commit_message":return n.capabilities.supportsChat!==!1||n.capabilities.supportsCompletion!==!1;case"tool_planning":return n.capabilities.supportsTools!==!1;default:return!0}}async getModelById(n){return this.initialized||await this.initialize(),this.models.get(n)}async getDefaultModelId(n){if(this.initialized||await this.initialize(),n){let r=await this.listModels({scene:n,enabledOnly:!0,visibleOnly:!0}),i=this.sortByPriority(r,n);if(i.length>0)return i[0].id}if(this.defaultModelId&&this.models.has(this.defaultModelId)){let r=this.models.get(this.defaultModelId);if(r&&r.enabled!==!1&&r.status==="active")return this.defaultModelId}let o=await this.listModels({enabledOnly:!0,visibleOnly:!0});if(o.length>0)return o[0].id}async resolveModelForScene(n,o){if(this.initialized||await this.initialize(),o){let s=this.models.get(o);if(s&&s.enabled!==!1&&s.status==="active"&&this.supportsScene(s,n))return s}let r=await this.listModels({scene:n,enabledOnly:!0,visibleOnly:!0}),i=this.sortByPriority(r,n);return i.length>0?i[0]:void 0}sortByPriority(n,o){return n.sort((r,i)=>{let s=r.priorities?.[o]??r.priorities?.fallback??999,a=i.priorities?.[o]??i.priorities?.fallback??999;if(s!==a)return s-a;if(o==="tool_planning"){let u=r.capabilities?.supportsTools===!0?1:0,d=i.capabilities?.supportsTools===!0?1:0;if(u!==d)return d-u}let l=r.contextWindow??0,c=i.contextWindow??0;return l!==c?c-l:r.displayName.localeCompare(i.displayName)})}async getRuntimeConfig(n){let o=await this.getModelById(n);if(!o){this.logService.warn("[UnifiedModelProvider] getRuntimeConfig: model not found",{modelId:n});return}this.runtimeConfigProbeLoggedModelIds.has(o.id)||(this.runtimeConfigProbeLoggedModelIds.add(o.id),this.logService.info("[UnifiedModelProvider] runtime config probe (first seen)",{modelId:o.id,source:o.source,providerType:o.providerType,hasInlineApiKey:!!o.apiKeyConfig?.apiKey,hasApiKeyRef:!!o.apiKeyConfig?.apiKeyRef,hasApiKeyEnv:!!o.apiKeyConfig?.apiKeyEnv}));let r=await this.resolveApiKey(o);return{provider:o.providerType,model:o.model,apiBase:o.baseUrl,apiKey:r}}async resolveApiKey(n){let{apiKeyConfig:o}=n;if(o.apiKey)return o.apiKey;if(o.apiKeyRef)try{let r=await this.secretStore.getSecret(o.apiKeyRef);if(r)return r;this.logService.warn("[UnifiedModelProvider] resolveApiKey: secret ref empty",{modelId:n.id,apiKeyRef:o.apiKeyRef})}catch(r){this.logService.error(`[UnifiedModelProvider] Failed to get API key from secret storage: ${o.apiKeyRef}`,r)}if(o.apiKeyEnv){let r=process.env[o.apiKeyEnv];if(r)return r;this.logService.warn("[UnifiedModelProvider] resolveApiKey: env var empty",{modelId:n.id,apiKeyEnv:o.apiKeyEnv})}this.noKeyWarnedModelIds.has(n.id)?this.logService.debug("[UnifiedModelProvider] resolveApiKey: no key resolved (repeated)",{modelId:n.id,source:n.source}):(this.noKeyWarnedModelIds.add(n.id),this.logService.warn("[UnifiedModelProvider] resolveApiKey: no key resolved (first warning)",{modelId:n.id,source:n.source,hasInlineApiKey:!!o.apiKey,hasApiKeyRef:!!o.apiKeyRef,hasApiKeyEnv:!!o.apiKeyEnv}))}async refresh(){if(await this.hasRemoteAuthToken()&&this.remoteProvider){await this.refreshFromRemote({skipVersionCheck:!0}),await this.loadFromStorage();return}await this.storageProvider.clear(),await this.initializeFromLocal()}async updateModel(n){let o=this.models.get(n.id),r={...n,source:o?.source||"storage",updatedAt:new Date().toISOString()};this.models.set(n.id,r),await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"update",modelIds:[n.id]})}async setDefaultModel(n){if(!this.models.has(n))throw new Error(`Model not found: ${n}`);this.defaultModelId=n,await this.storageProvider.save(Array.from(this.models.values()),this.defaultModelId),this._onDidChange.fire({type:"update",modelIds:[n]})}dispose(){this.syncTimer&&clearInterval(this.syncTimer),super.dispose()}};$i=ma([Or(1,Zu),Or(2,zh),Or(3,Gh),Or(4,ak)],$i);function lk(t){if(!(!t?.providerType||!t.model||!t.baseUrl)&&!(t.enabled===!1||t.visible===!1)&&!(t.status!==void 0&&t.status!=="active"))return{id:t.id,displayName:t.displayName,config:{provider:t.providerType,model:t.model,apiBase:t.baseUrl,apiKey:t.apiKeyConfig?.apiKey,contextLength:t.contextWindow,maxOutputTokens:t.maxOutputTokens},capabilities:t.capabilities}}import{Agent as D5,fetch as O5}from"undici";var Jh=class extends jh{insecureTlsAgent;pinnedTlsAgents=new Map;constructor(e){super(e)}shouldUseInsecureTls(e,n){return n.strictSSL===!1?!0:Qr.tlsInsecure===!0&&e.startsWith("https://")}async fetchWithTls(e,n){let o={method:n.type||"GET",headers:n.headers,body:n.data};if(this.shouldUseInsecureTls(e,n))return this.insecureTlsAgent||(this.insecureTlsAgent=new D5({connect:{rejectUnauthorized:!1}})),await O5(e,{...o,dispatcher:this.insecureTlsAgent});let r=Pl(e);if(r){let i=this.pinnedTlsAgents.get(e);return i||(i=new D5({connect:r}),this.pinnedTlsAgents.set(e,i)),await O5(e,{...o,dispatcher:i})}return fetch(e,o)}async request(e,n){return this.logAndRequest(e,async()=>{if(!e.url)throw new Error("Request URL is required");let o=await this.fetchWithTls(e.url,e),r=await o.text();return{res:{statusCode:o.status,headers:Object.fromEntries(o.headers.entries())},stream:IR(ci.fromString(r))}})}resolveProxy(e){return Promise.resolve(void 0)}lookupAuthorization(e){return Promise.resolve(void 0)}lookupKerberosAuthorization(e){return Promise.resolve(void 0)}loadCertificates(){return Promise.resolve([])}};var $l=class{db=new Ri;stateStore=new Ai(this.db);secretStore=new Al(this.db);requestService;provider;initialized=!1;_onDidChange=new Ve;onDidChange=this._onDidChange.event;constructor(e){this.requestService=new Jh(e);let n=Qr.authBaseUrl?.replace(/\/$/,""),o=n?Ph(n,"/admin/llm-models/all"):void 0;this.provider=new $i({remoteEndpoint:o,enableRemoteSync:!!o},this.stateStore,this.requestService,e,this.secretStore),this.provider.onDidChange(()=>this._onDidChange.fire())}async initialize(){this.initialized||(await this.provider.initialize(),this.initialized=!0)}async ensureInitialized(){this.initialized||await this.initialize()}async listModelMetadata(e){return await this.ensureInitialized(),this.provider.listModels(e)}async getModelMetadataById(e){return await this.ensureInitialized(),this.provider.getModelById(e)}async getDefaultModelId(e){return await this.ensureInitialized(),this.provider.getDefaultModelId(e)}async resolveModelForScene(e,n){return await this.ensureInitialized(),this.provider.resolveModelForScene(e,n)}async getRuntimeConfig(e){return await this.ensureInitialized(),this.provider.getRuntimeConfig(e)}async refresh(){await this.ensureInitialized(),await this.provider.refresh()}async resetToLocal(){await this.ensureInitialized(),await this.provider.resetToLocal()}async updateModel(e){await this.ensureInitialized(),await this.provider.updateModel(e)}async setDefaultModel(e){await this.ensureInitialized(),await this.provider.setDefaultModel(e)}async getModels(){let e=await this.listModelMetadata({visibleOnly:!0,enabledOnly:!0}),n=[];for(let o of e){let r=lk(o);if(!r)continue;let i=await this.getRuntimeConfig(o.id);i?.apiKey&&(r.config.apiKey=i.apiKey),n.push(r)}return n}async getModelById(e){let n=await this.getModelMetadataById(e);if(!n)return;let o=lk(n);if(!o)return;let r=await this.getRuntimeConfig(e);return r?.apiKey&&(o.config.apiKey=r.apiKey),o}};async function L5(t){if(!(t.runtimeConfig?.provider==="panda"))return{needsGatewayAuth:!1};if(!t.runtimeConfig?.apiKey)throw new Error(kh(t.runtimeConfig?.model));let n=t.sink;if(!n)return{needsGatewayAuth:!0};let o=await t.authService.getAccessToken();if(!o){if(!await t.authService.checkSession())throw new Error("PANDA_NOT_LOGGED_IN");o=await t.authService.getAccessToken()}if(!o)throw new Error("PANDA_NOT_LOGGED_IN");await n.setAuthToken?.(o);let r=await t.authService.getGatewaySigningKey();r&&await n.setAuthSigningToken?.(r);let i=await t.authService.getGatewaySessionId();return i&&await n.setAuthGatewaySessionId?.(i),{needsGatewayAuth:!0}}var Yh=class extends Tt{_serviceBrand;_onChunk=this._register(new Ve);onChunk=this._onChunk.event;_onComplete=this._register(new Ve);onComplete=this._onComplete.event;_onError=this._register(new Ve);onError=this._onError.event;llm;modelProvider;llmCache=new Map;_authToken;_authSigningToken;_authGatewaySessionId;debug;activeRequests=new Map;requestStartTimes=new Map;mainThreadProxy;_whenInitializedPromise;_resolveInitialized;authRuntime=new Ml;modelCatalogRuntime;modelCatalogChangeListener;constructor(e){super(),this._whenInitializedPromise=new Promise(n=>{this._resolveInitialized=n}),this.llm=e.llm,this.modelProvider=e.modelProvider,this.debug=e.debug??!1,this.mainThreadProxy=e.mainThreadProxy,this.mainThreadProxy&&(this._register(this._onChunk.event(n=>{this.mainThreadProxy?.$acceptChunk(n.requestId,n.chunk,n.done)})),this._register(this._onComplete.event(n=>{this.mainThreadProxy?.$acceptComplete(n.requestId,n.message,n.usage)})),this._register(this._onError.event(n=>{this.mainThreadProxy?.$acceptError(n.requestId,n.error,n.code,n.retriable)})))}setLLM(e){this.llm=e}setModelProvider(e){this.llmCache.clear(),this.modelCatalogChangeListener?.dispose(),this.modelCatalogChangeListener=void 0,this.modelProvider=e,e instanceof $l&&(this.modelCatalogRuntime=e,this.modelCatalogChangeListener=e.onDidChange(()=>{this.llmCache.clear()}))}markLLMInitialized(){this._resolveInitialized()}async getOrCreateLLM(e){let n=this.llmCache.get(e);if(n)return n;if(!this.modelProvider)return;let o=await this.modelProvider.getModelById(e);if(!o)return;let r=await n5(o.config,o.capabilities);return this.llmCache.set(e,r),r}_applyAuthTokenToLlm(e){!e||this._authToken===void 0||e.setAuthToken?.(this._authToken)}_applyAuthSigningTokenToLlm(e){!e||this._authSigningToken===void 0||e.setAuthSigningToken?.(this._authSigningToken)}_applyAuthGatewaySessionIdToLlm(e){!e||this._authGatewaySessionId===void 0||e.setAuthGatewaySessionId?.(this._authGatewaySessionId)}async chat(e,n,o){let r=je(),i=new AbortController;this.activeRequests.set(r,i);let s=Date.now();return this.requestStartTimes.set(r,s),this.debug,this.executeChat(r,e,n,o,i.signal).catch(a=>{this.debug&&console.error(`[PandaLLMService] chat error: ${r}`,a)}),r}async cancel(e){let n=this.activeRequests.get(e);if(n){let o=this.requestStartTimes.get(e),r=o?Date.now()-o:void 0;console.warn("[PandaLLMService] request cancelled",{requestId:e,elapsedMs:r}),this.debug,n.abort(),this.activeRequests.delete(e),this.requestStartTimes.delete(e)}}async getConfigurationStatus(){let e=await this.resolveLLMForRequest(void 0);return e?e.getConfigurationStatus():va.INVALID}async listModels(){return this.modelProvider?(await this.modelProvider.getModels()).map(n=>({id:n.id,displayName:n.displayName})):this.llm?[{id:"default",displayName:this.llm.title??this.llm.model}]:[]}async supportsTools(){let e=await this.resolveLLMForRequest(void 0);return e?e.supportsTools():!1}async getModelInfo(e){let n=await this.resolveModelEntryForInfo(e);if(n)return NL(n);let o=this.llm;if(o){let r=typeof o.completionOptions?.maxOutputTokens=="number"&&o.completionOptions.maxOutputTokens>0?o.completionOptions.maxOutputTokens:4096;return{modelId:"default",displayName:o.title??o.model,contextLength:o.contextLength,maxOutputTokens:r}}throw new Error("LLM service not initialized. Set modelProvider or setLLM() with config.")}async resolveModelEntryForInfo(e){if(this.modelProvider&&e)return this.modelProvider.getModelById(e);if(this.modelProvider&&!e){let n=await this.modelProvider.getDefaultModelId();if(n)return this.modelProvider.getModelById(n)}}async resolveLLMForRequest(e){let n=e?.modelId;if(this.modelProvider&&n)return this.getOrCreateLLM(n);if(this.modelProvider&&!n){let o=await this.modelProvider.getDefaultModelId();if(o)return this.getOrCreateLLM(o)}return this.llm}async $chat(e,n,o){return this.chat(e,n,o)}async $cancel(e){return this.cancel(e)}async $getConfigurationStatus(){return this.getConfigurationStatus()}async $listModels(){return this.listModels()}async $supportsTools(){return this.supportsTools()}async $getModelInfo(e){return this.getModelInfo(e)}async $whenLLMInitialized(){return this._whenInitializedPromise}async $setAuthToken(e){this._authToken=e,this._applyAuthTokenToLlm(this.llm);for(let n of this.llmCache.values())this._applyAuthTokenToLlm(n)}async $setAuthSigningToken(e){this._authSigningToken=e,this._applyAuthSigningTokenToLlm(this.llm);for(let n of this.llmCache.values())this._applyAuthSigningTokenToLlm(n)}async $setAuthGatewaySessionId(e){this._authGatewaySessionId=e,this._applyAuthGatewaySessionIdToLlm(this.llm);for(let n of this.llmCache.values())this._applyAuthGatewaySessionIdToLlm(n)}async $prepareGatewayAuth(e){await this._whenInitializedPromise;let n=e?await this.modelCatalogRuntime?.getRuntimeConfig(e):void 0;return L5({runtimeConfig:n,authService:{getAccessToken:()=>this.authRuntime.getAccessToken(),checkSession:async()=>(await this.authRuntime.checkSession()).ok,getGatewaySigningKey:()=>this.authRuntime.getGatewaySigningKey(),getGatewaySessionId:()=>this.authRuntime.getGatewaySessionId()},sink:{setAuthToken:o=>this.$setAuthToken(o),setAuthSigningToken:o=>this.$setAuthSigningToken(o),setAuthGatewaySessionId:o=>this.$setAuthGatewaySessionId(o)}})}async $authCheckSession(){return this.authRuntime.checkSession()}async $authLogin(e,n){return this.authRuntime.login(e,n)}async $authLogout(){return this.authRuntime.logout()}async $authGetAccessToken(){return this.authRuntime.getAccessToken()}async $authGetRefreshToken(){return this.authRuntime.getRefreshToken()}async $authGetGatewaySessionId(){return this.authRuntime.getGatewaySessionId()}async $authGetGatewaySigningKey(){return this.authRuntime.getGatewaySigningKey()}async $authGetCurrentUser(){return this.authRuntime.getCurrentUser()}async $authSendRegisterVerificationCode(e){return this.authRuntime.sendRegisterVerificationCode(e)}async $authRegister(e,n,o,r,i){return this.authRuntime.register(e,n,o,r,i)}async $authSendChangePasswordVerificationCode(){return this.authRuntime.sendChangePasswordVerificationCode()}async $authChangePassword(e,n){return this.authRuntime.changePassword(e,n)}async $authSendResetPasswordVerificationCode(e){return this.authRuntime.sendResetPasswordVerificationCode(e)}async $authResetPassword(e,n,o){return this.authRuntime.resetPassword(e,n,o)}async $modelList(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.listModelMetadata(e)??[]}async $modelGetById(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.getModelMetadataById(e)}async $modelGetDefaultId(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.getDefaultModelId(e)}async $modelResolveForScene(e,n){return await this._whenInitializedPromise,this.modelCatalogRuntime?.resolveModelForScene(e,n)}async $modelGetRuntimeConfig(e){return await this._whenInitializedPromise,this.modelCatalogRuntime?.getRuntimeConfig(e)}async $modelRefresh(){await this._whenInitializedPromise,await this.modelCatalogRuntime?.refresh()}async $modelResetToLocal(){await this._whenInitializedPromise,await this.modelCatalogRuntime?.resetToLocal()}async $modelUpdate(e){await this._whenInitializedPromise,await this.modelCatalogRuntime?.updateModel(e)}async $modelSetDefault(e){await this._whenInitializedPromise,await this.modelCatalogRuntime?.setDefaultModel(e)}async executeChat(e,n,o,r,i){let s=this.requestStartTimes.get(e),a=await this.resolveLLMForRequest(r);if(!a){let l="LLM service not initialized. Set modelProvider or setLLM() with config.";console.error(`[PandaLLMService] ${l}`),this._onError.fire({requestId:e,error:l,code:"NOT_INITIALIZED",retriable:!1});return}this._applyAuthTokenToLlm(a),this._applyAuthSigningTokenToLlm(a),this._applyAuthGatewaySessionIdToLlm(a);try{let l={...r,tools:o??r?.tools},c=[],u,d,f=new wa(a).run({messages:n,signal:i,options:l,querySource:l.querySource??"chat_main",fallbackModel:l.fallbackModel}),m=await f.next();for(;!m.done;){let g=m.value;if(i?.aborted)break;if(g.type==="retry"){console.warn("[PandaLLMService] retry scheduled",{requestId:e,attempt:g.attempt,delayMs:g.delayMs,category:g.error.category}),m=await f.next();continue}if(g.type==="fallback_non_stream"||g.type==="fallback_model"){console.warn("[PandaLLMService] fallback triggered",{requestId:e,type:g.type}),m=await f.next();continue}let h=g.chunk;if(this._onChunk.fire({requestId:e,chunk:h,done:!1}),h.role==="assistant"){if(typeof h.content=="string")h.content.length>0&&c.push(h.content);else if(Array.isArray(h.content))for(let y of h.content)y.type==="text"&&typeof y.text=="string"&&y.text.length>0&&c.push(y.text);h.usage&&(u=h.usage)}m=await f.next()}if(d=m.done?m.value:void 0,!i?.aborted){let g=d?.usage??u,y={role:"assistant",content:c.join(""),...g&&{usage:g}};this._onComplete.fire({requestId:e,message:y,usage:g})}}catch(l){let c=s?Date.now()-s:void 0;if(console.error("[PandaLLMService] request failed",{requestId:e,elapsedMs:c,aborted:i?.aborted??!1,errorName:l instanceof Error?l.name:typeof l,errorMessage:l instanceof Error?l.message:String(l),errorCode:l.code}),i?.aborted)return;let u=l instanceof Error?l.message:String(l),d=l.code,p=Tp(l);console.warn("[PandaLLMService] emit onError",{requestId:e,errorCode:d,errorMessage:u,normalizedCategory:p.category,normalizedStatusCode:p.statusCode,retriable:p.category==="network"||p.category==="timeout"||p.category==="rate_limit_429"||p.category==="overload_529"||p.category==="server_5xx"}),this._onError.fire({requestId:e,error:u,code:d,retriable:p.category==="network"||p.category==="timeout"||p.category==="rate_limit_429"||p.category==="overload_529"||p.category==="server_5xx"})}finally{this.activeRequests.delete(e),this.requestStartTimes.delete(e)}}};var ld=class extends Tt{constructor(n,o){super();this.llmService=n;this.model=o?.model??"default",this.title=o?.title??"Panda LLM",this.uniqueId=o?.uniqueId??`panda-illm-${Date.now()}`,this.completionOptions={model:this.model},this._register(this.llmService.onChunk(i=>{let s=this.activeRequests.get(i.requestId);s&&(s.chunks.push(i.chunk),this._onStreamChunk.fire(i.chunk))})),this._register(this.llmService.onComplete(i=>{let s=this.activeRequests.get(i.requestId);s&&(s.done=!0,s.usage=i.usage,s.resolve(i.message))})),this._register(this.llmService.onError(i=>{try{let s=this.activeRequests.get(i.requestId);s&&(s.done=!0,s.reject(new Error(i.error)),this.activeRequests.delete(i.requestId))}catch{}}))}llmService;providerName="panda-ext-host";underlyingProviderName="panda-ext-host";uniqueId;model;title;apiKey;apiBase;contextLength=2e5;completionOptions;requestOptions;capabilities;promptTemplates;autocompleteOptions;cacheBehavior;embeddingId="";maxEmbeddingChunkSize=512;maxEmbeddingBatchSize=128;roles;lastRequestId;_onStreamChunk=this._register(new Ve);onStreamChunk=this._onStreamChunk.event;activeRequests=new Map;async*streamChat(n,o,r,i){let s=r?.tools,a=await this.llmService.chat(n,s,r);this.lastRequestId=a;let l=[],c=null,u=null,d=new Promise((f,m)=>{this.activeRequests.set(a,{chunks:l,resolve:g=>{c=g,f(g)},reject:g=>{u=g,m(g)},done:!1})});d.catch(()=>{});let p=()=>{this.llmService.cancel(a)};o.addEventListener("abort",p);try{for(;!c&&!u;){if(o.aborted)throw new DOMException("The operation was aborted.","AbortError");for(;l.length>0;)yield l.shift();if(this.activeRequests.get(a)?.done)break;await new Promise(y=>setTimeout(y,10))}for(;l.length>0;)yield l.shift();if(u)throw u;let f=await d,g=this.activeRequests.get(a)?.usage;return{modelTitle:this.title??this.model,modelProvider:this.providerName,prompt:JSON.stringify(n),completion:typeof f.content=="string"?f.content:JSON.stringify(f.content??""),usage:g,message:f}}finally{o.removeEventListener("abort",p),this.activeRequests.delete(a)}}async chat(n,o,r){let i=this.streamChat(n,o,r),s=await i.next();for(;!s.done;)s=await i.next();let a=s.value;if(a?.message)return a.message;throw new Error("No response from LLM")}async*streamComplete(n,o,r){let i=[{role:"user",content:n}];for await(let s of this.streamChat(i,o,r))typeof s.content=="string"&&(yield s.content);return{modelTitle:this.title??this.model,modelProvider:this.providerName,prompt:n,completion:""}}async complete(n,o,r){let i=[];for await(let s of this.streamComplete(n,o,r))i.push(s);return i.join("")}async*streamFim(n,o,r,i){let s=`<|fim_prefix|>${n}<|fim_suffix|>${o}<|fim_middle|>`;for await(let a of this.streamComplete(s,r,i))yield a;return{modelTitle:this.title??this.model,modelProvider:this.providerName,prompt:`prefix: ${n.slice(-100)}, suffix: ${o.slice(0,100)}`,completion:""}}async embed(n){throw new Error("Embedding not supported in PandaLlmServiceAsIllM")}async rerank(n,o){throw new Error("Rerank not supported in PandaLlmServiceAsIllM")}countTokens(n){return Math.ceil(n.length/4)}compileChatMessages(n,o){let r=n.reduce((i,s)=>{let a=typeof s.content=="string"?s.content:JSON.stringify(s.content);return i+this.countTokens(a)},0);return{messages:n,tokenCount:r,truncated:!1}}async listModels(){return this.llmService.listModels()}async getModelInfo(n){return this.llmService.getModelInfo(n)}renderPromptTemplate(n,o,r,i){return o}supportsImages(){return!0}supportsCompletions(){return!0}supportsPrefill(){return!1}supportsFim(){return!1}supportsStreaming(){return!0}supportsTools(){return!0}supportsReasoning(){return!1}getConfigurationStatus(){return"valid"}};Nt();function Qh(t){let e=t.schemaVersion??0;return e<1&&(t=mJ(t),e=1),t.schemaVersion=3,t}function mJ(t){return{schemaVersion:1,conversationId:t.conversationId??"",workspaceId:t.workspaceId??"",createdAt:t.createdAt??Date.now(),updatedAt:t.updatedAt??Date.now(),title:t.title??"Untitled",messages:Array.isArray(t.messages)?t.messages:[],lastUsage:t.lastUsage,migrateSource:t.migrateSource,migrateModelId:t.migrateModelId,interactionMode:t.interactionMode??"agent",planMeta:t.planMeta,turnRanges:Array.isArray(t.turnRanges)?t.turnRanges:void 0}}function ck(t){let e=t.schemaVersion??0;return e<1&&(t=gJ(t),e=1),t.schemaVersion=3,t}function gJ(t){return{schemaVersion:1,workspaceId:t.workspaceId??"",conversations:Array.isArray(t.conversations)?t.conversations:[]}}var uk="index.json",cd=class{constructor(e){this.home=e}home;async listSessions(e){return(await this.loadIndex(e)).conversations}async saveConversation(e,n){let o=this.home.getSessionsDir(e);await this.home.ensureDir(o);let r=lt(o,`${n.conversationId}.json`);await this.home.fs.writeFile(r,JSON.stringify(n,null,2));let i=await this.loadIndex(e),s=df(n),a=i.conversations.findIndex(l=>l.conversationId===n.conversationId);a>=0?i.conversations[a]=s:i.conversations.unshift(s),await this.saveIndex(e,i)}async loadConversation(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.json`);try{let i=await this.home.fs.readFile(r),s=JSON.parse(i);return Qh(s)}catch{return null}}async deleteConversation(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.json`);await this.home.fs.removeFile(r);let i=lt(o,`${n}.todo.md`);try{await this.home.fs.removeFile(i)}catch{}let s=await this.loadIndex(e);s.conversations=s.conversations.filter(a=>a.conversationId!==n),await this.saveIndex(e,s)}async updateSummary(e,n){let o=await this.loadIndex(e),r=o.conversations.findIndex(i=>i.conversationId===n.conversationId);r>=0&&(o.conversations[r]=n,await this.saveIndex(e,o))}async getWorkspaceSelectedModel(e){return(await this.loadIndex(e)).selectedModelId}async setWorkspaceSelectedModel(e,n){let o=await this.loadIndex(e);o.selectedModelId=n,await this.saveIndex(e,o)}async loadIndex(e){let n=this.home.getSessionsDir(e),o=lt(n,uk);try{let r=await this.home.fs.readFile(o);return ck(JSON.parse(r))}catch{return this.rebuildIndex(e)}}async saveIndex(e,n){let o=this.home.getSessionsDir(e);await this.home.ensureDir(o);let r=lt(o,uk);await this.home.fs.writeFile(r,JSON.stringify(n,null,2))}async rebuildIndex(e){let n=this.home.getSessionsDir(e),o=await this.home.fs.readdir(n),r=[];for(let s of o)if(!(s.isDirectory||!s.name.endsWith(".json")||s.name===uk))try{let a=lt(n,s.name),l=await this.home.fs.readFile(a),c=Qh(JSON.parse(l));r.push(df(c))}catch{}r.sort((s,a)=>a.updatedAt-s.updatedAt);let i={schemaVersion:3,workspaceId:e,conversations:r};try{await this.saveIndex(e,i)}catch{}return i}async saveTodo(e,n,o){let r=this.home.getSessionsDir(e),i=lt(r,`${n}.todo.md`);if(o.trim()==="")try{await this.home.fs.removeFile(i)}catch{}else await this.home.ensureDir(r),await this.home.fs.writeFile(i,o)}async loadTodo(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.todo.md`);try{return await this.home.fs.readFile(r)}catch{return""}}async deleteTodo(e,n){let o=this.home.getSessionsDir(e),r=lt(o,`${n}.todo.md`);try{await this.home.fs.removeFile(r)}catch{}}};function ud(t){let o=(t.split(/[/\\]/).filter(Boolean).pop()||"workspace").toLowerCase().replace(/[^a-z0-9-]/g,"-").slice(0,30),r=hJ(t);return`${o}-${r}`}function hJ(t){let e=5381,n=52711;for(let i=0;i<t.length;i++){let s=t.charCodeAt(i);e=(e<<5)+e+s|0,n=(n<<5)+n+s|0}let o=(e>>>0).toString(16).padStart(8,"0"),r=(n>>>0).toString(16).padStart(8,"0").slice(0,4);return o+r}Nt();Nt();import*as N5 from"fs";import*as $5 from"os";import*as Xh from"path";var yJ=["CREATE TABLE IF NOT EXISTS tch_messages ("," conversation_id TEXT NOT NULL,"," encrypted_data TEXT NOT NULL,"," PRIMARY KEY (conversation_id)",");","CREATE TABLE IF NOT EXISTS tch_meta ("," key TEXT PRIMARY KEY,"," value TEXT NOT NULL",");","INSERT OR IGNORE INTO tch_meta (key, value) VALUES ('schema_version', '2');"].join(`
1977
+ `),dd=class{connections=new Map;pandaHome;logService;encryptionLogService;constructor(e={}){this.pandaHome=e.pandaHome??process.env.PANDA_HOME??Xh.join($5.homedir(),".panda"),this.logService=e.logService,this.encryptionLogService=e.encryptionLogService}async saveTchMessages(e,n,o){let r=await this.getConnection(e);if(!r)return;let i=await r.encryption.encrypt(o);await r.db.run("INSERT OR REPLACE INTO tch_messages (conversation_id, encrypted_data) VALUES (?, ?)",[n,i]),this.log("trace",`[TchStorage] Saved TCH for ${n} (v12)`)}async loadTchMessages(e,n){let o=await this.getConnection(e);if(!o)return null;let r=await o.db.get("SELECT encrypted_data FROM tch_messages WHERE conversation_id = ?",[n]);if(!r)return null;let i=r.encrypted_data,s=Mi.getVersion(i);try{return s===Ds.V12?await o.encryption.decrypt(i):(this.log("warn",`[TchStorage] Unsupported ciphertext version for ${n}: ${s||"(none)"}`),null)}catch(a){return this.log("error","[TchStorage] Decrypt failed:",a),null}}async deleteTchMessages(e,n){let o=await this.getConnection(e);o&&await o.db.run("DELETE FROM tch_messages WHERE conversation_id = ?",[n])}async closeDatabase(e){let n=this.connections.get(e);if(n){this.connections.delete(e);try{let o=await n;o&&await o.db.close()}catch{}}}async closeAll(){let e=Array.from(this.connections.keys());for(let n of e)await this.closeDatabase(n)}getConnection(e){let n=this.connections.get(e);return n||(n=this.openDatabase(e).catch(o=>(this.log("error","[TchStorage] Failed to open database:",o),null)),this.connections.set(e,n)),n}async openDatabase(e){let n=Xh.dirname(e);await N5.promises.mkdir(n,{recursive:!0});let o=new Mi({logService:this.encryptionLogService,pandaHome:this.pandaHome});await o.initialize();let r=await Rl(e);return await r.exec(yJ),{db:r,encryption:o}}log(e,n,o){this.logService&&(e==="trace"?this.logService.trace(n):e==="warn"?this.logService.warn(n):this.logService.error(n,o))}};var vJ=1,pd=class{constructor(e){this.home=e;this.tchStorage=new dd({pandaHome:e.homePath})}home;tchStorage;openedDbPaths=new Set;async saveTchMessages(e,n,o){let r={schemaVersion:vJ,messages:o.map(s=>this.serializeMessage(s))},i=this.getDbPath(e);this.openedDbPaths.add(i),await this.tchStorage.saveTchMessages(i,n,JSON.stringify(r))}async loadTchMessages(e,n){try{let o=this.getDbPath(e);this.openedDbPaths.add(o);let r=await this.tchStorage.loadTchMessages(o,n);return r?JSON.parse(r).messages.map(s=>this.deserializeMessage(s)):null}catch{return null}}async deleteTchMessages(e,n){let o=this.getDbPath(e);this.openedDbPaths.add(o),await this.tchStorage.deleteTchMessages(o,n)}async close(){for(let e of this.openedDbPaths)await this.tchStorage.closeDatabase(e);this.openedDbPaths.clear()}getDbPath(e){return lt(this.home.getProjectDir(e),"data","tch.db")}serializeMessage(e){let n={messageId:e.messageId,role:e.role,content:e.content,turnId:e.turnId};return e.toolCalls?.length&&(n.toolCalls=e.toolCalls),e.toolResults?.length&&(n.toolResults=e.toolResults),e.timestamp&&(n.timestamp=e.timestamp),e.workId&&(n.workId=e.workId),n}deserializeMessage(e){return{messageId:e.messageId,role:e.role,content:e.content,toolCalls:e.toolCalls,toolResults:e.toolResults,timestamp:e.timestamp,workId:e.workId,turnId:e.turnId??""}}};async function dk(t){let{workspaceId:e,persistence:n,tchPersistence:o}=t,r={migrated:0,skippedExisting:0,skippedEmpty:0,failed:0},i=await n.listSessions(e);for(let s of i)try{let a=await o.loadTchMessages(e,s.conversationId);if(a&&a.length>0){r.skippedExisting+=1;continue}let l=await n.loadConversation(e,s.conversationId);if(!l){r.failed+=1;continue}let c=Fc(l),u=pf(c);if(u.length===0){r.skippedEmpty+=1;continue}await o.saveTchMessages(e,s.conversationId,u),r.migrated+=1}catch{r.failed+=1}return r}Nt();var pk=null;async function Fi(){return pk||(pk=await import("node:fs/promises")),pk}var ey=class{async readFile(e){return(await Fi()).readFile(e,"utf-8")}async writeFile(e,n){let o=await Fi(),r=ir(e);await o.mkdir(r,{recursive:!0});let i=Math.random().toString(36).slice(2,10),s=lt(r,`.tmp.${process.pid}.${Date.now()}.${i}`);try{await o.writeFile(s,n,"utf-8"),await o.rename(s,e)}catch(a){try{await o.unlink(s)}catch{}throw a}}async appendFile(e,n){let o=await Fi(),r=ir(e);await o.mkdir(r,{recursive:!0}),await o.appendFile(e,n,"utf-8")}async mkdir(e){await(await Fi()).mkdir(e,{recursive:!0})}async exists(e){let n=await Fi();try{return await n.access(e),!0}catch{return!1}}async removeFile(e){let n=await Fi();try{await n.unlink(e)}catch(o){if(o.code!=="ENOENT")throw o}}async readdir(e){let n=await Fi();try{return(await n.readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDirectory:r.isDirectory()}))}catch(o){if(o.code==="ENOENT")return[];throw o}}async removeDir(e){let n=await Fi();try{await n.rm(e,{recursive:!0,force:!0})}catch(o){if(o.code!=="ENOENT")throw o}}};Lr();var fd=class{constructor(e){this.eventBus=e}eventBus;state=new Map;update(e,n){let o=n.trim();o===""?this.state.delete(e):this.state.set(e,o),this.eventBus.emit(P.TODO_UPDATED,{conversationId:e,content:o})}get(e){return this.state.get(e)??""}restore(e,n){let o=n.trim();o===""?this.state.delete(e):this.state.set(e,o)}remove(e){this.state.delete(e)}areAllCompleted(e){let n=this.get(e);if(n==="")return!1;let o=n.split(`
1978
+ `),r=!1;for(let i of o){if(i.trim()==="")continue;let a=/^\s*-\s*\[x\]/i.test(i),l=/^\s*-\s*\[\s\]/.test(i);if((a||l)&&(r=!0,l))return!1}return r}clear(e){this.state.delete(e)}};Nt();tn();var ty=class{constructor(e){this.home=e}home;getPlansDir(){return this.home.resolve(Mo.PLANS)}async ensurePlanMeta(e,n,o){return o?.filePath&&o.fileName&&o.randomId?o:this.createPlanMeta(n)}async createNewPlanMeta(e){return this.createPlanMeta(e)}async writePlan(e,n){let o=this.getPlansDir();await this.home.ensureDir(o),await this.home.fs.writeFile(e.filePath,n)}async copyPlanForFork(e,n){let o=await this.createPlanMeta(n??e.title),r="";try{await this.home.fs.exists(e.filePath)&&(r=await this.home.fs.readFile(e.filePath))}catch{}return await this.writePlan(o,r),o}async createPlanMeta(e){let n=this.getPlansDir();await this.home.ensureDir(n);let o=bJ(e??"\u672A\u547D\u540D\u8BA1\u5212");for(let s=0;s<5;s++){let a=F5(),l=`${o}_${a}.plan.md`,c=lt(n,l);if(!await this.home.fs.exists(c))return{title:o,randomId:a,fileName:l,filePath:c}}let r=`${F5()}${Date.now().toString(16).slice(-2)}`.slice(0,8),i=`${o}_${r}.plan.md`;return{title:o,randomId:r,fileName:i,filePath:lt(n,i)}}};function F5(){return je().replace(/-/g,"").slice(0,8)}function bJ(t){return(t.trim().replace(/\s+/g,"_").replace(/[\\/:*?"<>|]/g,"_").replace(/[\u0000-\u001F]/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||"\u672A\u547D\u540D\u8BA1\u5212").slice(0,50)}import{mkdir as hY}from"node:fs/promises";import{join as yY}from"node:path";import{homedir as vY,tmpdir as bY}from"node:os";async function U5(t,e,n){let o=[];for(let r of t){if(r.type!=="pandaSkill"||!r.skillName){o.push(r);continue}let i=r.skillName,s=await e(i);if(s==null){o.push({type:"text",text:`<Panda Skill>
1979
1979
  # ${i}
1980
1980
  (\u65E0\u6CD5\u52A0\u8F7D\u6280\u80FD\u5185\u5BB9)
1981
1981
  </Panda Skill>`});continue}let l=wl(s.rawMarkdown,i)?.body??s.rawMarkdown,c=sh(l,s.skillMdPath,{sessionId:n?.sessionId});o.push({type:"text",text:`<Panda Skill>
1982
1982
  # ${i}
1983
1983
  ${c}
1984
- </Panda Skill>`})}return o}import{readFile as vJ}from"node:fs/promises";function B5(t){let{workspaceRoot:e,userHome:n,disabledPaths:o}=t;return async r=>{let s=(await Ei(e,n)).find(a=>a.name===r);if(!s||_l(s.path,o))return null;try{return{rawMarkdown:await vJ(s.path,"utf-8"),skillMdPath:s.path}}catch{return null}}}function bJ(t,e,n){let o=n?"main agent":"sub agent";return e.description?`${t.displayName} ${o}: ${e.description}`:`${t.displayName} ${o}: ${e.roleId}`}var ny=class{packs=new Map;roleIdToPack=new Map;warnings=[];listPacks(){return Array.from(this.packs.values())}isPackMode(e){return this.packs.has(e)}findPackByMode(e){return this.packs.get(e)}getPackModeReminder(e){return this.packs.get(e)?.modeReminder}resolveMainRoleId(e){let n=this.packs.get(e);if(n)return $b(n.name,n.mainAgent.roleId)}getPackNameByRoleId(e){return this.roleIdToPack.get(e)}getWarnings(){return[...this.warnings]}clear(){this.packs.clear(),this.roleIdToPack.clear(),this.warnings=[]}setPackDefinitions(e,n=[]){this.clear();for(let o of e){if(this.packs.has(o.name)){this.warnings.push(`Duplicate pack name "${o.name}" in provided pack list, ignored.`);continue}this.packs.set(o.name,o)}this.warnings.push(...n)}registerPackRoles(e){this.roleIdToPack.clear();for(let n of this.packs.values()){let o=[{role:n.mainAgent,isMain:!0},...(n.subAgents??[]).map(r=>({role:r,isMain:!1}))];for(let{role:r,isMain:i}of o){let s=$b(n.name,r.roleId);this.roleIdToPack.set(s,n.name),e.registerCustomRole({role:s,systemPrompt:r.systemPrompt,availableTools:r.tools,inputConfig:r.inputConfig,toolDescription:bJ(n,r,i),createTool:!i})}}}async validateTools(e){let n=new Set,o=await e.getFunctionDeclarationsAsync(),r=new Set(o.map(i=>i.name));for(let i of this.packs.values()){let s=[i.mainAgent,...i.subAgents??[]];for(let a of s)for(let l of a.tools)r.has(l)||n.add(`${i.name}:${a.roleId}:${l}`)}return{unknownTools:Array.from(n.values()),totalUnknown:n.size}}};async function j5(t,e,n=[],o){o?.info?.("[PackBootstrap] PACK_LOAD_START");let r=new ny;r.setPackDefinitions(e,n);let i=t.getRoleManager();r.registerPackRoles(i),t.setPackRegistry(r);let s=t.getToolProvider(),a=[];s&&(a=(await r.validateTools(s)).unknownTools);let l=r.getWarnings();o?.info?.(`[PackBootstrap] PACK_LOAD_SUCCESS loaded=${r.listPacks().length}`);for(let c of l)o?.warn?.(`[PackBootstrap] PACK_LOAD_FAILED ${c}`);for(let c of a)o?.warn?.(`[PackBootstrap] PACK_TOOL_UNKNOWN ${c}`);return{loadedCount:r.listPacks().length,warnings:l,unknownTools:a}}import{promises as H5}from"node:fs";import fk from"node:path";import wJ from"node:os";var z5=1;function ry(t,e,n){if(t==null){if(n)throw new Error(`${e} is required`);return}if(typeof t=="string"){let o=t.trim();if(n&&o.length===0)throw new Error(`${e} must be non-empty`);return!n&&o.length===0?void 0:o}if(Array.isArray(t)){if(n&&t.length===0)throw new Error(`${e} must be non-empty`);let o=[];for(let i=0;i<t.length;i++){let s=t[i];if(typeof s!="string")throw new Error(`${e}[${i}] must be a string`);o.push(s)}let r=o.join(`
1985
- `).trim();if(n&&r.length===0)throw new Error(`${e} must be non-empty`);return!n&&r.length===0?void 0:r}throw new Error(`${e} must be a string or an array of strings`)}function xJ(t){if(!t||typeof t!="object")return;let e=t;if(!(!e.inputs||typeof e.inputs!="object"))return e}function TJ(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.trim().length>0):[]}function W5(t,e){if(!t||typeof t!="object")throw new Error(`${e} must be an object`);let n=t,o=typeof n.roleId=="string"?n.roleId.trim():"";if(!o)throw new Error(`${e}.roleId is required`);let r=ry(n.systemPrompt,`${e}.systemPrompt`,!0);return{roleId:o,description:ry(n.description,`${e}.description`,!1),systemPrompt:r,tools:TJ(n.tools),inputConfig:xJ(n.inputConfig)}}function K5(t,e){let n;try{n=JSON.parse(t)}catch(u){throw new Error(`Invalid JSON in ${e}: ${u instanceof Error?u.message:String(u)}`)}if(!n||typeof n!="object")throw new Error(`${e} must be a JSON object`);let o=n,r=Number(o.schemaVersion??1);if(!Number.isFinite(r)||r<1)throw new Error(`schemaVersion must be >= 1 in ${e}`);if(r>z5)throw new Error(`schemaVersion ${r} is newer than supported ${z5}`);let i=typeof o.name=="string"?o.name.trim():"";if(!i)throw new Error(`name is required in ${e}`);if(uf.includes(i))throw new Error(`pack name "${i}" is reserved`);let s=typeof o.displayName=="string"&&o.displayName.trim().length>0?o.displayName.trim():i,a=W5(o.mainAgent,"mainAgent"),c=(Array.isArray(o.subAgents)?o.subAgents:[]).map((u,d)=>W5(u,`subAgents[${d}]`));return{schemaVersion:r,name:i,displayName:s,description:ry(o.description,"description",!1),mainAgent:a,subAgents:c.length>0?c:void 0,modeReminder:ry(o.modeReminder,"modeReminder",!1)}}var _J="pack.json",V5="agent-packs";async function q5(t){let e=[],n=new Map,o=[fk.join(t,".panda",V5),fk.join(wJ.homedir(),".panda",V5)];for(let r of o){let i=[];try{i=await H5.readdir(r,{withFileTypes:!0})}catch{continue}for(let s of i){if(!s.isDirectory())continue;let a=fk.join(r,s.name,_J);try{let l=await H5.readFile(a,"utf-8"),c=K5(l,a);if(n.has(c.name)){e.push(`Duplicate pack name "${c.name}" from ${a}, ignored.`);continue}n.set(c.name,c)}catch(l){e.push(`Failed to load pack ${a}: ${l instanceof Error?l.message:String(l)}`)}}}return{packs:Array.from(n.values()),warnings:e}}async function G5(t,e,n){let o=await q5(e);return j5(t,o.packs,o.warnings,n)}var Ui=[{id:"agent",label:"\u667A\u80FD\u4F53",title:"\u5E38\u89C4\u667A\u80FD\u4F53\u52A9\u624B\uFF0C\u7B80\u5355\u9AD8\u6548",codicon:"sparkle"},{id:"ask",label:"\u95EE\u7B54",title:"\u53EA\u8BFB\u6A21\u5F0F\uFF0C\u56DE\u7B54\u95EE\u9898\uFF0C\u67E5\u9605\u8D44\u6599\uFF0C\u4E0D\u505A\u6267\u884C\u548C\u6539\u52A8\u6587\u4EF6",codicon:"comment"},{id:"plan",label:"\u8BA1\u5212",title:"\u89C4\u5212\u6A21\u5F0F\uFF0C\u53EA\u4EA7\u51FA\u89C4\u5212\u6587\u6863",codicon:"checklist"},{id:"office",label:"\u529E\u516C\u52A9\u624B",title:"\u804C\u573A\u5199\u4F5C\u3001\u4F1A\u8BAE\u4E0E\u6750\u6599\u6574\u7406\uFF0C\u53EF\u5728\u5DE5\u4F5C\u533A\u8BFB\u5199\u4E0E\u4F7F\u7528\u5DE5\u5177",codicon:"briefcase"},{id:"team",label:"\u56E2\u961F",title:"\u590D\u6742\u573A\u666F\u63A8\u8350\uFF1A\u591A Agent \u534F\u4F5C\u4E0E\u4EFB\u52A1\u59D4\u6D3E",codicon:"organization"}];function Z5(t){let e=(t?.listPacks()??[]).map(n=>({id:n.name,label:n.displayName,title:n.description??`${n.displayName} mode`,codicon:"layers",isPackMode:!0}));return[...Ui,...e]}function J5(t,e){let o=(e.length>0?e:Ui).map(i=>i.id),r=Math.max(0,o.indexOf(t));return o[(r+1)%o.length]??"agent"}function Y5(t,e){let n=t.trim().toLowerCase();return new Set((e.length>0?e:Ui).map(r=>String(r.id).toLowerCase())).has(n)?n:null}function oy(t,e){return e.find(o=>o.id===t)?.label??String(t)}var Q5=t=>({id:t.id,label:t.label,description:t.title}),Bi=[...Ui],mk=Bi.map(t=>t.id),Fl=Bi.map(Q5);function SJ(t){Bi=t.length>0?[...t]:[...Ui],mk=Bi.map(e=>e.id),Fl=Bi.map(Q5)}function X5(t){SJ(Z5(t))}function e7(t){return J5(t,Bi)}function t7(t){return Y5(t,Bi)}function gk(t){return oy(t,Bi)}var En="__panda_new_session__";var iy=class{_checkpoints=new Map;_baselines=new Map;recordBaseline(e,n,o){let r=this._baselines.get(e);r||(r={conversationId:e,files:new Map},this._baselines.set(e,r)),r.files.has(n)||r.files.set(n,o)}getBaseline(e){return this._baselines.get(e)}getFileBaseline(e,n){return this._baselines.get(e)?.files.get(n)}addCheckpoint(e){let{conversationId:n}=e,o=this._checkpoints.get(n);o||(o=[],this._checkpoints.set(n,o)),o.push(e)}setCheckpoints(e,n){this._checkpoints.set(e,n.length>0?[...n]:[])}getCheckpoints(e){return this._checkpoints.get(e)??[]}getCheckpointByTurnId(e,n){return this.getCheckpoints(e).find(o=>o.turnId===n)}getLatestCheckpoint(e){let n=this._checkpoints.get(e);return n&&n.length>0?n[n.length-1]:void 0}truncateAfterExclusive(e,n){let o=this._checkpoints.get(e);if(!o)return 0;let r=o.findIndex(s=>s.turnId===n);return r<0?0:o.splice(r+1).length}removeConversation(e){this._checkpoints.delete(e),this._baselines.delete(e)}clearAll(){this._checkpoints.clear(),this._baselines.clear()}hasCheckpoints(e){let n=this._checkpoints.get(e);return!!n&&n.length>0}getCheckpointCount(e){return this._checkpoints.get(e)?.length??0}getAllConversationIds(){return Array.from(this._checkpoints.keys())}setBaseline(e){this._baselines.set(e.conversationId,e)}};var sy=class extends Tt{constructor(n,o,r,i){super();this._filePort=n;this._env=o;this._resolvePersistence=r;this._revisionSync=i}_filePort;_env;_resolvePersistence;_revisionSync;_checkpointStore=new iy;_onDidCreateCheckpoint=this._register(new Ve);onDidCreateCheckpoint=this._onDidCreateCheckpoint.event;_onDidRewind=this._register(new Ve);onDidRewind=this._onDidRewind.event;getBaseline(n){return this._checkpointStore.getBaseline(n)}recordBaseline(n,o,r){let i=o.toString();this._checkpointStore.recordBaseline(n,i,r);let s=this._env.getDbPath();s&&this._withPersistence(a=>a.saveBaseline(s,n,i,r)).catch(a=>{this._env.warn("[PandaCheckpointCoordinator] Failed to persist baseline",a)})}getFileBaseline(n,o){return this._checkpointStore.getFileBaseline(n,o.toString())}async createCheckpoint(n,o,r){let i=this._checkpointStore.getCheckpointByTurnId(n,o);if(i)return i;let s=new Map,a=this._checkpointStore.getBaseline(n);if(a)for(let c of a.files.keys())await this._readFileSnapshot(c,s);let l={turnId:o,conversationId:n,createdAt:Date.now(),turnFinalState:r?.turnFinalState??"completed",turnEndReason:r?.turnEndReason,files:s};return this._checkpointStore.addCheckpoint(l),this._onDidCreateCheckpoint.fire(l),this._persistCheckpoint(n,l).catch(c=>{this._env.warn("[PandaCheckpointCoordinator] Failed to persist checkpoint",c)}),this._env.trace(`[PandaCheckpointCoordinator] Created checkpoint for turn ${o}, ${s.size} files`),l}getCheckpoints(n){return this._checkpointStore.getCheckpoints(n)}getLatestCheckpoint(n){return this._checkpointStore.getLatestCheckpoint(n)}async copyCheckpointsToNewConversation(n,o,r){let i=new Set(r),s=this._checkpointStore.getCheckpoints(n).filter(c=>i.has(c.turnId)),a=this._env.getDbPath();for(let c of s){let u;if(c.files.size>0){u=new Map;for(let[p,f]of c.files)u.set(p,{fileUri:p,content:f.content})}else if(a){let p=await this._withPersistence(f=>f.getCheckpointSnapshot(a,n,c.turnId));u=new Map(p.map(f=>[f.fileUri,{fileUri:f.fileUri,content:f.content}]))}else u=new Map;let d={turnId:c.turnId,conversationId:o,createdAt:c.createdAt,turnFinalState:c.turnFinalState,turnEndReason:c.turnEndReason,files:u};this._checkpointStore.addCheckpoint(d),u.size>0&&await this._persistCheckpoint(o,d)}let l=this._checkpointStore.getBaseline(n);if(l){let c=new Map;for(let[u,d]of l.files)c.set(u,d);this._checkpointStore.setBaseline({conversationId:o,files:c})}this._env.trace(`[PandaCheckpointCoordinator] Copied ${s.length} checkpoints to ${o}`)}async rewindToCheckpoint(n,o){let r=this._checkpointStore.getCheckpointByTurnId(n,o);if(!r)throw new Error(`Checkpoint not found for turn: ${o}`);if(r.files.size===0){let c=this._env.getDbPath();if(!c)throw new Error("Cannot load checkpoint snapshot: no db path");let u=await this._withPersistence(p=>p.getCheckpointSnapshot(c,n,o)),d=new Map(u.map(p=>[p.fileUri,{fileUri:p.fileUri,content:p.content}]));r={...r,files:d}}let i=[],s=this._checkpointStore.getBaseline(n);for(let[c,u]of r.files)try{await this._filePort.writeText(c,u.content),i.push(ot.parse(c))}catch(d){this._env.warn(`[PandaCheckpointCoordinator] Failed to restore ${c}`,d)}if(s){for(let[c,u]of s.files)if(!r.files.has(c))try{if(u==="")try{await this._filePort.deleteFile(c)}catch{}else await this._filePort.writeText(c,u);i.push(ot.parse(c))}catch(d){this._env.warn(`[PandaCheckpointCoordinator] Failed to restore baseline ${c}`,d)}}this._checkpointStore.truncateAfterExclusive(n,o),this._revisionSync?.clearForConversation(n),this._revisionSync?.rebuildAfterRewind(n,r);let a=this._env.getDbPath();a&&this._withPersistence(c=>c.deleteCheckpointsAfterTurn(a,n,o)).catch(()=>{});let l={restoredFiles:i,targetTurnId:o};return this._onDidRewind.fire(l),this._env.info(`[PandaCheckpointCoordinator] Rewound to turn ${o}, restored ${i.length} files`),l}async rewindToBaseline(n){let o=this._checkpointStore.getBaseline(n);if(!o)throw new Error(`No baseline found for conversation: ${n}`);let r=[];for(let[l,c]of o.files)try{if(c==="")try{await this._filePort.deleteFile(l)}catch{}else await this._filePort.writeText(l,c);r.push(ot.parse(l))}catch(u){this._env.warn(`[PandaCheckpointCoordinator] Failed to restore baseline ${l}`,u)}let i=this._checkpointStore.getBaseline(n);this._checkpointStore.removeConversation(n),i&&this._checkpointStore.setBaseline(i),this._revisionSync?.clearForConversation(n);let s=this._env.getDbPath();s&&this._withPersistence(l=>l.deleteConversation(s,n)).catch(()=>{});let a={restoredFiles:r,targetTurnId:void 0};return this._onDidRewind.fire(a),this._env.info(`[PandaCheckpointCoordinator] Rewound to baseline, restored ${r.length} files`),a}async rewindBeforeTurn(n,o){let r=this._checkpointStore.getCheckpoints(n);r.length===0&&(await this.loadCheckpoints(n),r=this._checkpointStore.getCheckpoints(n));let i=r.findIndex(s=>s.turnId===o);if(i<0)throw new Error(`No checkpoint found for turn: ${o}`);if(i===0&&(await this.loadCheckpoints(n,{mergeWithMemory:!0}),r=this._checkpointStore.getCheckpoints(n),i=r.findIndex(s=>s.turnId===o),i<0))throw new Error(`No checkpoint found for turn: ${o}`);if(i===0){if(!this._checkpointStore.getBaseline(n)){this._checkpointStore.removeConversation(n),this._revisionSync?.clearForConversation(n);let a=this._env.getDbPath();return a&&this._withPersistence(l=>l.deleteConversation(a,n)).catch(()=>{}),this._env.info(`[PandaCheckpointCoordinator] Rewound first turn (no baseline), cleared checkpoints for ${n}`),{restoredFiles:[],targetTurnId:void 0}}return this.rewindToBaseline(n)}return this.rewindToCheckpoint(n,r[i-1].turnId)}hasCheckpointForTurn(n,o){return!!this._checkpointStore.getCheckpointByTurnId(n,o)}async persistCheckpoints(n){let o=this._env.getDbPath();if(!o)return;let r=this._checkpointStore.getBaseline(n);if(r)for(let[i,s]of r.files)await this._withPersistence(a=>a.saveBaseline(o,n,i,s));for(let i of this._checkpointStore.getCheckpoints(n))i.files.size!==0&&await this._withPersistence(s=>s.saveCheckpoint(o,n,i.turnId,i.createdAt,Array.from(i.files.values()).map(a=>({fileUri:a.fileUri,content:a.content})),{turnFinalState:i.turnFinalState,turnEndReason:i.turnEndReason}))}async loadCheckpoints(n,o){let r=this._env.getDbPath();if(!r)return;let i=o?.mergeWithMemory===!0,s=i?this._checkpointStore.getCheckpoints(n):[];try{let a=await this._withPersistence(u=>u.getBaselines(r,n));if(a.length>0){let u={conversationId:n,files:new Map(a.map(d=>[d.fileUri,d.content]))};this._checkpointStore.setBaseline(u)}let c=(await this._withPersistence(u=>u.getCheckpointList(r,n))).map(u=>({turnId:u.turnId,conversationId:n,createdAt:u.createdAt,turnFinalState:u.turnFinalState??"completed",turnEndReason:u.turnEndReason,files:new Map}));if(i){let u=new Set(c.map(f=>f.turnId)),d=s.filter(f=>!u.has(f.turnId)),p=[...c,...d];this._checkpointStore.setCheckpoints(n,p),this._env.trace(`[PandaCheckpointCoordinator] Loaded and merged ${c.length} + ${d.length} checkpoints for ${n}`)}else this._checkpointStore.setCheckpoints(n,c),this._env.trace(`[PandaCheckpointCoordinator] Loaded ${c.length} checkpoints for ${n}`)}catch(a){this._env.warn("[PandaCheckpointCoordinator] Failed to load checkpoints",a)}}removeConversation(n){this._checkpointStore.removeConversation(n);let o=this._env.getDbPath();o&&this._withPersistence(r=>r.deleteConversation(o,n)).catch(()=>{})}clearAll(){this._checkpointStore.clearAll()}getCheckpointStoreForTest(){return this._checkpointStore}async _readFileSnapshot(n,o){try{let r=await this._filePort.readText(n);o.set(n,{fileUri:n,content:r})}catch{o.set(n,{fileUri:n,content:""})}}async _persistCheckpoint(n,o){let r=this._env.getDbPath();r&&await this._withPersistence(i=>i.saveCheckpoint(r,n,o.turnId,o.createdAt,Array.from(o.files.values()).map(s=>({fileUri:s.fileUri,content:s.content})),{turnFinalState:o.turnFinalState,turnEndReason:o.turnEndReason}))}async _withPersistence(n){let o=await this._resolvePersistence();return n(o)}};Nt();import*as n7 from"fs";var kJ=["CREATE TABLE IF NOT EXISTS baselines ("," conversation_id TEXT NOT NULL,"," file_uri TEXT NOT NULL,"," content TEXT NOT NULL,"," PRIMARY KEY (conversation_id, file_uri)",");","CREATE TABLE IF NOT EXISTS checkpoints ("," conversation_id TEXT NOT NULL,"," turn_id TEXT NOT NULL,"," created_at INTEGER NOT NULL,"," turn_final_state TEXT NOT NULL DEFAULT 'completed',"," turn_end_reason TEXT,"," PRIMARY KEY (conversation_id, turn_id)",");","CREATE TABLE IF NOT EXISTS snapshots ("," conversation_id TEXT NOT NULL,"," turn_id TEXT NOT NULL,"," file_uri TEXT NOT NULL,"," content TEXT NOT NULL,"," PRIMARY KEY (conversation_id, turn_id, file_uri)",");","CREATE TABLE IF NOT EXISTS revisions ("," file_uri TEXT PRIMARY KEY,"," original_content TEXT NOT NULL,"," review_state TEXT,"," created_at INTEGER NOT NULL,"," last_modified_at INTEGER NOT NULL",");","CREATE TABLE IF NOT EXISTS checkpoint_meta ("," key TEXT PRIMARY KEY,"," value TEXT NOT NULL",");","INSERT OR IGNORE INTO checkpoint_meta (key, value) VALUES ('schema_version', '3');"].join(`
1984
+ </Panda Skill>`})}return o}import{readFile as xJ}from"node:fs/promises";function B5(t){let{workspaceRoot:e,userHome:n,disabledPaths:o}=t;return async r=>{let s=(await Ei(e,n)).find(a=>a.name===r);if(!s||_l(s.path,o))return null;try{return{rawMarkdown:await xJ(s.path,"utf-8"),skillMdPath:s.path}}catch{return null}}}function TJ(t,e,n){let o=n?"main agent":"sub agent";return e.description?`${t.displayName} ${o}: ${e.description}`:`${t.displayName} ${o}: ${e.roleId}`}var ny=class{packs=new Map;roleIdToPack=new Map;warnings=[];listPacks(){return Array.from(this.packs.values())}isPackMode(e){return this.packs.has(e)}findPackByMode(e){return this.packs.get(e)}getPackModeReminder(e){return this.packs.get(e)?.modeReminder}resolveMainRoleId(e){let n=this.packs.get(e);if(n)return $b(n.name,n.mainAgent.roleId)}getPackNameByRoleId(e){return this.roleIdToPack.get(e)}getWarnings(){return[...this.warnings]}clear(){this.packs.clear(),this.roleIdToPack.clear(),this.warnings=[]}setPackDefinitions(e,n=[]){this.clear();for(let o of e){if(this.packs.has(o.name)){this.warnings.push(`Duplicate pack name "${o.name}" in provided pack list, ignored.`);continue}this.packs.set(o.name,o)}this.warnings.push(...n)}registerPackRoles(e){this.roleIdToPack.clear();for(let n of this.packs.values()){let o=[{role:n.mainAgent,isMain:!0},...(n.subAgents??[]).map(r=>({role:r,isMain:!1}))];for(let{role:r,isMain:i}of o){let s=$b(n.name,r.roleId);this.roleIdToPack.set(s,n.name),e.registerCustomRole({role:s,systemPrompt:r.systemPrompt,availableTools:r.tools,inputConfig:r.inputConfig,toolDescription:TJ(n,r,i),createTool:!i})}}}async validateTools(e){let n=new Set,o=await e.getFunctionDeclarationsAsync(),r=new Set(o.map(i=>i.name));for(let i of this.packs.values()){let s=[i.mainAgent,...i.subAgents??[]];for(let a of s)for(let l of a.tools)r.has(l)||n.add(`${i.name}:${a.roleId}:${l}`)}return{unknownTools:Array.from(n.values()),totalUnknown:n.size}}};async function j5(t,e,n=[],o){o?.info?.("[PackBootstrap] PACK_LOAD_START");let r=new ny;r.setPackDefinitions(e,n);let i=t.getRoleManager();r.registerPackRoles(i),t.setPackRegistry(r);let s=t.getToolProvider(),a=[];s&&(a=(await r.validateTools(s)).unknownTools);let l=r.getWarnings();o?.info?.(`[PackBootstrap] PACK_LOAD_SUCCESS loaded=${r.listPacks().length}`);for(let c of l)o?.warn?.(`[PackBootstrap] PACK_LOAD_FAILED ${c}`);for(let c of a)o?.warn?.(`[PackBootstrap] PACK_TOOL_UNKNOWN ${c}`);return{loadedCount:r.listPacks().length,warnings:l,unknownTools:a}}import{promises as H5}from"node:fs";import fk from"node:path";import SJ from"node:os";var z5=1;function ry(t,e,n){if(t==null){if(n)throw new Error(`${e} is required`);return}if(typeof t=="string"){let o=t.trim();if(n&&o.length===0)throw new Error(`${e} must be non-empty`);return!n&&o.length===0?void 0:o}if(Array.isArray(t)){if(n&&t.length===0)throw new Error(`${e} must be non-empty`);let o=[];for(let i=0;i<t.length;i++){let s=t[i];if(typeof s!="string")throw new Error(`${e}[${i}] must be a string`);o.push(s)}let r=o.join(`
1985
+ `).trim();if(n&&r.length===0)throw new Error(`${e} must be non-empty`);return!n&&r.length===0?void 0:r}throw new Error(`${e} must be a string or an array of strings`)}function wJ(t){if(!t||typeof t!="object")return;let e=t;if(!(!e.inputs||typeof e.inputs!="object"))return e}function _J(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.trim().length>0):[]}function W5(t,e){if(!t||typeof t!="object")throw new Error(`${e} must be an object`);let n=t,o=typeof n.roleId=="string"?n.roleId.trim():"";if(!o)throw new Error(`${e}.roleId is required`);let r=ry(n.systemPrompt,`${e}.systemPrompt`,!0);return{roleId:o,description:ry(n.description,`${e}.description`,!1),systemPrompt:r,tools:_J(n.tools),inputConfig:wJ(n.inputConfig)}}function K5(t,e){let n;try{n=JSON.parse(t)}catch(u){throw new Error(`Invalid JSON in ${e}: ${u instanceof Error?u.message:String(u)}`)}if(!n||typeof n!="object")throw new Error(`${e} must be a JSON object`);let o=n,r=Number(o.schemaVersion??1);if(!Number.isFinite(r)||r<1)throw new Error(`schemaVersion must be >= 1 in ${e}`);if(r>z5)throw new Error(`schemaVersion ${r} is newer than supported ${z5}`);let i=typeof o.name=="string"?o.name.trim():"";if(!i)throw new Error(`name is required in ${e}`);if(uf.includes(i))throw new Error(`pack name "${i}" is reserved`);let s=typeof o.displayName=="string"&&o.displayName.trim().length>0?o.displayName.trim():i,a=W5(o.mainAgent,"mainAgent"),c=(Array.isArray(o.subAgents)?o.subAgents:[]).map((u,d)=>W5(u,`subAgents[${d}]`));return{schemaVersion:r,name:i,displayName:s,description:ry(o.description,"description",!1),mainAgent:a,subAgents:c.length>0?c:void 0,modeReminder:ry(o.modeReminder,"modeReminder",!1)}}var kJ="pack.json",V5="agent-packs";async function q5(t){let e=[],n=new Map,o=[fk.join(t,".panda",V5),fk.join(SJ.homedir(),".panda",V5)];for(let r of o){let i=[];try{i=await H5.readdir(r,{withFileTypes:!0})}catch{continue}for(let s of i){if(!s.isDirectory())continue;let a=fk.join(r,s.name,kJ);try{let l=await H5.readFile(a,"utf-8"),c=K5(l,a);if(n.has(c.name)){e.push(`Duplicate pack name "${c.name}" from ${a}, ignored.`);continue}n.set(c.name,c)}catch(l){e.push(`Failed to load pack ${a}: ${l instanceof Error?l.message:String(l)}`)}}}return{packs:Array.from(n.values()),warnings:e}}async function G5(t,e,n){let o=await q5(e);return j5(t,o.packs,o.warnings,n)}var Ui=[{id:"agent",label:"\u667A\u80FD\u4F53",title:"\u5E38\u89C4\u667A\u80FD\u4F53\u52A9\u624B\uFF0C\u7B80\u5355\u9AD8\u6548",codicon:"sparkle"},{id:"ask",label:"\u95EE\u7B54",title:"\u53EA\u8BFB\u6A21\u5F0F\uFF0C\u56DE\u7B54\u95EE\u9898\uFF0C\u67E5\u9605\u8D44\u6599\uFF0C\u4E0D\u505A\u6267\u884C\u548C\u6539\u52A8\u6587\u4EF6",codicon:"comment"},{id:"plan",label:"\u8BA1\u5212",title:"\u89C4\u5212\u6A21\u5F0F\uFF0C\u53EA\u4EA7\u51FA\u89C4\u5212\u6587\u6863",codicon:"checklist"},{id:"office",label:"\u529E\u516C\u52A9\u624B",title:"\u804C\u573A\u5199\u4F5C\u3001\u4F1A\u8BAE\u4E0E\u6750\u6599\u6574\u7406\uFF0C\u53EF\u5728\u5DE5\u4F5C\u533A\u8BFB\u5199\u4E0E\u4F7F\u7528\u5DE5\u5177",codicon:"briefcase"},{id:"team",label:"\u56E2\u961F",title:"\u590D\u6742\u573A\u666F\u63A8\u8350\uFF1A\u591A Agent \u534F\u4F5C\u4E0E\u4EFB\u52A1\u59D4\u6D3E",codicon:"organization"}];function Z5(t){let e=(t?.listPacks()??[]).map(n=>({id:n.name,label:n.displayName,title:n.description??`${n.displayName} mode`,codicon:"layers",isPackMode:!0}));return[...Ui,...e]}function J5(t,e){let o=(e.length>0?e:Ui).map(i=>i.id),r=Math.max(0,o.indexOf(t));return o[(r+1)%o.length]??"agent"}function Y5(t,e){let n=t.trim().toLowerCase();return new Set((e.length>0?e:Ui).map(r=>String(r.id).toLowerCase())).has(n)?n:null}function oy(t,e){return e.find(o=>o.id===t)?.label??String(t)}var Q5=t=>({id:t.id,label:t.label,description:t.title}),Bi=[...Ui],mk=Bi.map(t=>t.id),Fl=Bi.map(Q5);function IJ(t){Bi=t.length>0?[...t]:[...Ui],mk=Bi.map(e=>e.id),Fl=Bi.map(Q5)}function X5(t){IJ(Z5(t))}function e7(t){return J5(t,Bi)}function t7(t){return Y5(t,Bi)}function gk(t){return oy(t,Bi)}var En="__panda_new_session__";var iy=class{_checkpoints=new Map;_baselines=new Map;recordBaseline(e,n,o){let r=this._baselines.get(e);r||(r={conversationId:e,files:new Map},this._baselines.set(e,r)),r.files.has(n)||r.files.set(n,o)}getBaseline(e){return this._baselines.get(e)}getFileBaseline(e,n){return this._baselines.get(e)?.files.get(n)}addCheckpoint(e){let{conversationId:n}=e,o=this._checkpoints.get(n);o||(o=[],this._checkpoints.set(n,o)),o.push(e)}setCheckpoints(e,n){this._checkpoints.set(e,n.length>0?[...n]:[])}getCheckpoints(e){return this._checkpoints.get(e)??[]}getCheckpointByTurnId(e,n){return this.getCheckpoints(e).find(o=>o.turnId===n)}getLatestCheckpoint(e){let n=this._checkpoints.get(e);return n&&n.length>0?n[n.length-1]:void 0}truncateAfterExclusive(e,n){let o=this._checkpoints.get(e);if(!o)return 0;let r=o.findIndex(s=>s.turnId===n);return r<0?0:o.splice(r+1).length}removeConversation(e){this._checkpoints.delete(e),this._baselines.delete(e)}clearAll(){this._checkpoints.clear(),this._baselines.clear()}hasCheckpoints(e){let n=this._checkpoints.get(e);return!!n&&n.length>0}getCheckpointCount(e){return this._checkpoints.get(e)?.length??0}getAllConversationIds(){return Array.from(this._checkpoints.keys())}setBaseline(e){this._baselines.set(e.conversationId,e)}};var sy=class extends Tt{constructor(n,o,r,i){super();this._filePort=n;this._env=o;this._resolvePersistence=r;this._revisionSync=i}_filePort;_env;_resolvePersistence;_revisionSync;_checkpointStore=new iy;_onDidCreateCheckpoint=this._register(new Ve);onDidCreateCheckpoint=this._onDidCreateCheckpoint.event;_onDidRewind=this._register(new Ve);onDidRewind=this._onDidRewind.event;getBaseline(n){return this._checkpointStore.getBaseline(n)}recordBaseline(n,o,r){let i=o.toString();this._checkpointStore.recordBaseline(n,i,r);let s=this._env.getDbPath();s&&this._withPersistence(a=>a.saveBaseline(s,n,i,r)).catch(a=>{this._env.warn("[PandaCheckpointCoordinator] Failed to persist baseline",a)})}getFileBaseline(n,o){return this._checkpointStore.getFileBaseline(n,o.toString())}async createCheckpoint(n,o,r){let i=this._checkpointStore.getCheckpointByTurnId(n,o);if(i)return i;let s=new Map,a=this._checkpointStore.getBaseline(n);if(a)for(let c of a.files.keys())await this._readFileSnapshot(c,s);let l={turnId:o,conversationId:n,createdAt:Date.now(),turnFinalState:r?.turnFinalState??"completed",turnEndReason:r?.turnEndReason,files:s};return this._checkpointStore.addCheckpoint(l),this._onDidCreateCheckpoint.fire(l),this._persistCheckpoint(n,l).catch(c=>{this._env.warn("[PandaCheckpointCoordinator] Failed to persist checkpoint",c)}),this._env.trace(`[PandaCheckpointCoordinator] Created checkpoint for turn ${o}, ${s.size} files`),l}getCheckpoints(n){return this._checkpointStore.getCheckpoints(n)}getLatestCheckpoint(n){return this._checkpointStore.getLatestCheckpoint(n)}async copyCheckpointsToNewConversation(n,o,r){let i=new Set(r),s=this._checkpointStore.getCheckpoints(n).filter(c=>i.has(c.turnId)),a=this._env.getDbPath();for(let c of s){let u;if(c.files.size>0){u=new Map;for(let[p,f]of c.files)u.set(p,{fileUri:p,content:f.content})}else if(a){let p=await this._withPersistence(f=>f.getCheckpointSnapshot(a,n,c.turnId));u=new Map(p.map(f=>[f.fileUri,{fileUri:f.fileUri,content:f.content}]))}else u=new Map;let d={turnId:c.turnId,conversationId:o,createdAt:c.createdAt,turnFinalState:c.turnFinalState,turnEndReason:c.turnEndReason,files:u};this._checkpointStore.addCheckpoint(d),u.size>0&&await this._persistCheckpoint(o,d)}let l=this._checkpointStore.getBaseline(n);if(l){let c=new Map;for(let[u,d]of l.files)c.set(u,d);this._checkpointStore.setBaseline({conversationId:o,files:c})}this._env.trace(`[PandaCheckpointCoordinator] Copied ${s.length} checkpoints to ${o}`)}async rewindToCheckpoint(n,o){let r=this._checkpointStore.getCheckpointByTurnId(n,o);if(!r)throw new Error(`Checkpoint not found for turn: ${o}`);if(r.files.size===0){let c=this._env.getDbPath();if(!c)throw new Error("Cannot load checkpoint snapshot: no db path");let u=await this._withPersistence(p=>p.getCheckpointSnapshot(c,n,o)),d=new Map(u.map(p=>[p.fileUri,{fileUri:p.fileUri,content:p.content}]));r={...r,files:d}}let i=[],s=this._checkpointStore.getBaseline(n);for(let[c,u]of r.files)try{await this._filePort.writeText(c,u.content),i.push(ot.parse(c))}catch(d){this._env.warn(`[PandaCheckpointCoordinator] Failed to restore ${c}`,d)}if(s){for(let[c,u]of s.files)if(!r.files.has(c))try{if(u==="")try{await this._filePort.deleteFile(c)}catch{}else await this._filePort.writeText(c,u);i.push(ot.parse(c))}catch(d){this._env.warn(`[PandaCheckpointCoordinator] Failed to restore baseline ${c}`,d)}}this._checkpointStore.truncateAfterExclusive(n,o),this._revisionSync?.clearForConversation(n),this._revisionSync?.rebuildAfterRewind(n,r);let a=this._env.getDbPath();a&&this._withPersistence(c=>c.deleteCheckpointsAfterTurn(a,n,o)).catch(()=>{});let l={restoredFiles:i,targetTurnId:o};return this._onDidRewind.fire(l),this._env.info(`[PandaCheckpointCoordinator] Rewound to turn ${o}, restored ${i.length} files`),l}async rewindToBaseline(n){let o=this._checkpointStore.getBaseline(n);if(!o)throw new Error(`No baseline found for conversation: ${n}`);let r=[];for(let[l,c]of o.files)try{if(c==="")try{await this._filePort.deleteFile(l)}catch{}else await this._filePort.writeText(l,c);r.push(ot.parse(l))}catch(u){this._env.warn(`[PandaCheckpointCoordinator] Failed to restore baseline ${l}`,u)}let i=this._checkpointStore.getBaseline(n);this._checkpointStore.removeConversation(n),i&&this._checkpointStore.setBaseline(i),this._revisionSync?.clearForConversation(n);let s=this._env.getDbPath();s&&this._withPersistence(l=>l.deleteConversation(s,n)).catch(()=>{});let a={restoredFiles:r,targetTurnId:void 0};return this._onDidRewind.fire(a),this._env.info(`[PandaCheckpointCoordinator] Rewound to baseline, restored ${r.length} files`),a}async rewindBeforeTurn(n,o){let r=this._checkpointStore.getCheckpoints(n);r.length===0&&(await this.loadCheckpoints(n),r=this._checkpointStore.getCheckpoints(n));let i=r.findIndex(s=>s.turnId===o);if(i<0)throw new Error(`No checkpoint found for turn: ${o}`);if(i===0&&(await this.loadCheckpoints(n,{mergeWithMemory:!0}),r=this._checkpointStore.getCheckpoints(n),i=r.findIndex(s=>s.turnId===o),i<0))throw new Error(`No checkpoint found for turn: ${o}`);if(i===0){if(!this._checkpointStore.getBaseline(n)){this._checkpointStore.removeConversation(n),this._revisionSync?.clearForConversation(n);let a=this._env.getDbPath();return a&&this._withPersistence(l=>l.deleteConversation(a,n)).catch(()=>{}),this._env.info(`[PandaCheckpointCoordinator] Rewound first turn (no baseline), cleared checkpoints for ${n}`),{restoredFiles:[],targetTurnId:void 0}}return this.rewindToBaseline(n)}return this.rewindToCheckpoint(n,r[i-1].turnId)}hasCheckpointForTurn(n,o){return!!this._checkpointStore.getCheckpointByTurnId(n,o)}async persistCheckpoints(n){let o=this._env.getDbPath();if(!o)return;let r=this._checkpointStore.getBaseline(n);if(r)for(let[i,s]of r.files)await this._withPersistence(a=>a.saveBaseline(o,n,i,s));for(let i of this._checkpointStore.getCheckpoints(n))i.files.size!==0&&await this._withPersistence(s=>s.saveCheckpoint(o,n,i.turnId,i.createdAt,Array.from(i.files.values()).map(a=>({fileUri:a.fileUri,content:a.content})),{turnFinalState:i.turnFinalState,turnEndReason:i.turnEndReason}))}async loadCheckpoints(n,o){let r=this._env.getDbPath();if(!r)return;let i=o?.mergeWithMemory===!0,s=i?this._checkpointStore.getCheckpoints(n):[];try{let a=await this._withPersistence(u=>u.getBaselines(r,n));if(a.length>0){let u={conversationId:n,files:new Map(a.map(d=>[d.fileUri,d.content]))};this._checkpointStore.setBaseline(u)}let c=(await this._withPersistence(u=>u.getCheckpointList(r,n))).map(u=>({turnId:u.turnId,conversationId:n,createdAt:u.createdAt,turnFinalState:u.turnFinalState??"completed",turnEndReason:u.turnEndReason,files:new Map}));if(i){let u=new Set(c.map(f=>f.turnId)),d=s.filter(f=>!u.has(f.turnId)),p=[...c,...d];this._checkpointStore.setCheckpoints(n,p),this._env.trace(`[PandaCheckpointCoordinator] Loaded and merged ${c.length} + ${d.length} checkpoints for ${n}`)}else this._checkpointStore.setCheckpoints(n,c),this._env.trace(`[PandaCheckpointCoordinator] Loaded ${c.length} checkpoints for ${n}`)}catch(a){this._env.warn("[PandaCheckpointCoordinator] Failed to load checkpoints",a)}}removeConversation(n){this._checkpointStore.removeConversation(n);let o=this._env.getDbPath();o&&this._withPersistence(r=>r.deleteConversation(o,n)).catch(()=>{})}clearAll(){this._checkpointStore.clearAll()}getCheckpointStoreForTest(){return this._checkpointStore}async _readFileSnapshot(n,o){try{let r=await this._filePort.readText(n);o.set(n,{fileUri:n,content:r})}catch{o.set(n,{fileUri:n,content:""})}}async _persistCheckpoint(n,o){let r=this._env.getDbPath();r&&await this._withPersistence(i=>i.saveCheckpoint(r,n,o.turnId,o.createdAt,Array.from(o.files.values()).map(s=>({fileUri:s.fileUri,content:s.content})),{turnFinalState:o.turnFinalState,turnEndReason:o.turnEndReason}))}async _withPersistence(n){let o=await this._resolvePersistence();return n(o)}};Nt();import*as n7 from"fs";var CJ=["CREATE TABLE IF NOT EXISTS baselines ("," conversation_id TEXT NOT NULL,"," file_uri TEXT NOT NULL,"," content TEXT NOT NULL,"," PRIMARY KEY (conversation_id, file_uri)",");","CREATE TABLE IF NOT EXISTS checkpoints ("," conversation_id TEXT NOT NULL,"," turn_id TEXT NOT NULL,"," created_at INTEGER NOT NULL,"," turn_final_state TEXT NOT NULL DEFAULT 'completed',"," turn_end_reason TEXT,"," PRIMARY KEY (conversation_id, turn_id)",");","CREATE TABLE IF NOT EXISTS snapshots ("," conversation_id TEXT NOT NULL,"," turn_id TEXT NOT NULL,"," file_uri TEXT NOT NULL,"," content TEXT NOT NULL,"," PRIMARY KEY (conversation_id, turn_id, file_uri)",");","CREATE TABLE IF NOT EXISTS revisions ("," file_uri TEXT PRIMARY KEY,"," original_content TEXT NOT NULL,"," review_state TEXT,"," created_at INTEGER NOT NULL,"," last_modified_at INTEGER NOT NULL",");","CREATE TABLE IF NOT EXISTS checkpoint_meta ("," key TEXT PRIMARY KEY,"," value TEXT NOT NULL",");","INSERT OR IGNORE INTO checkpoint_meta (key, value) VALUES ('schema_version', '3');"].join(`
1986
1986
  `),ay=class{_serviceBrand;connections=new Map;async saveBaseline(e,n,o,r){let i=await this.getConnection(e);i&&await i.run("INSERT OR IGNORE INTO baselines (conversation_id, file_uri, content) VALUES (?, ?, ?)",[n,o,r])}async getBaselines(e,n){let o=await this.getConnection(e);return o?(await o.all("SELECT file_uri, content FROM baselines WHERE conversation_id = ?",[n])).map(i=>({fileUri:i.file_uri,content:i.content})):[]}async saveCheckpoint(e,n,o,r,i,s){let a=await this.getConnection(e);a&&await a.transaction(async()=>{await a.run("INSERT OR REPLACE INTO checkpoints (conversation_id, turn_id, created_at, turn_final_state, turn_end_reason) VALUES (?, ?, ?, ?, ?)",[n,o,r,s?.turnFinalState??"completed",s?.turnEndReason??null]);for(let l of i)await a.run("INSERT OR REPLACE INTO snapshots (conversation_id, turn_id, file_uri, content) VALUES (?, ?, ?, ?)",[n,o,l.fileUri,l.content])})}async getCheckpoints(e,n){let o=await this.getConnection(e);if(!o)return[];let r=await o.all("SELECT turn_id, created_at, turn_final_state, turn_end_reason FROM checkpoints WHERE conversation_id = ? ORDER BY created_at ASC",[n]),i=[];for(let s of r){let a=await o.all("SELECT file_uri, content FROM snapshots WHERE conversation_id = ? AND turn_id = ?",[n,s.turn_id]);i.push({turnId:s.turn_id,createdAt:s.created_at,turnFinalState:s.turn_final_state,turnEndReason:s.turn_end_reason??void 0,files:a.map(l=>({fileUri:l.file_uri,content:l.content}))})}return i}async getCheckpointList(e,n){let o=await this.getConnection(e);return o?(await o.all("SELECT turn_id, created_at, turn_final_state, turn_end_reason FROM checkpoints WHERE conversation_id = ? ORDER BY created_at ASC",[n])).map(i=>({turnId:i.turn_id,createdAt:i.created_at,turnFinalState:i.turn_final_state,turnEndReason:i.turn_end_reason??void 0})):[]}async getCheckpointSnapshot(e,n,o){let r=await this.getConnection(e);return r?(await r.all("SELECT file_uri, content FROM snapshots WHERE conversation_id = ? AND turn_id = ?",[n,o])).map(s=>({fileUri:s.file_uri,content:s.content})):[]}async deleteCheckpointsAfterTurn(e,n,o){let r=await this.getConnection(e);if(!r)return;let i=await r.get("SELECT created_at FROM checkpoints WHERE conversation_id = ? AND turn_id = ?",[n,o]);i&&await r.transaction(async()=>{await r.run(`DELETE FROM snapshots WHERE conversation_id = ? AND turn_id IN (
1987
1987
  SELECT turn_id FROM checkpoints WHERE conversation_id = ? AND created_at > ?
1988
- )`,[n,n,i.created_at]),await r.run("DELETE FROM checkpoints WHERE conversation_id = ? AND created_at > ?",[n,i.created_at])})}async deleteConversation(e,n){let o=await this.getConnection(e);o&&await o.transaction(async()=>{await o.run("DELETE FROM snapshots WHERE conversation_id = ?",[n]),await o.run("DELETE FROM checkpoints WHERE conversation_id = ?",[n]),await o.run("DELETE FROM baselines WHERE conversation_id = ?",[n])})}async closeDatabase(e){let n=this.connections.get(e);if(n){this.connections.delete(e);try{await(await n)?.close()}catch{}}}async saveRevision(e,n){let o=await this.getConnection(e);o&&await o.run("INSERT OR REPLACE INTO revisions (file_uri, original_content, review_state, created_at, last_modified_at) VALUES (?, ?, ?, ?, ?)",[n.fileUri,n.originalContent,n.reviewStateByRange,n.createdAt,n.lastModifiedAt])}async deleteRevision(e,n){let o=await this.getConnection(e);o&&await o.run("DELETE FROM revisions WHERE file_uri = ?",[n])}async getAllRevisions(e){let n=await this.getConnection(e);return n?(await n.all("SELECT file_uri, original_content, review_state, created_at, last_modified_at FROM revisions")).map(r=>({fileUri:r.file_uri,originalContent:r.original_content,reviewStateByRange:r.review_state??"[]",createdAt:r.created_at,lastModifiedAt:r.last_modified_at})):[]}async clearAllRevisions(e){let n=await this.getConnection(e);n&&await n.run("DELETE FROM revisions")}getConnection(e){let n=this.connections.get(e);return n||(n=this.openDatabase(e).catch(()=>null),this.connections.set(e,n)),n}async openDatabase(e){await n7.promises.mkdir(ir(e),{recursive:!0});let n=await Rl(e);return await n.exec(kJ),await this.ensureCheckpointColumns(n),n}async ensureCheckpointColumns(e){await this.tryAddColumn(e,"ALTER TABLE checkpoints ADD COLUMN turn_final_state TEXT NOT NULL DEFAULT 'completed'"),await this.tryAddColumn(e,"ALTER TABLE checkpoints ADD COLUMN turn_end_reason TEXT")}async tryAddColumn(e,n){try{await e.run(n)}catch(o){if(!(o instanceof Error?o.message:String(o)).includes("duplicate column name"))throw o}}};import{dirname as IJ}from"node:path";import{mkdir as CJ,readFile as EJ,unlink as PJ,writeFile as RJ}from"node:fs/promises";var ly=class{async readText(e){let n=ot.parse(e).fsPath;return await EJ(n,"utf-8")}async writeText(e,n){let o=ot.parse(e).fsPath;await CJ(IJ(o),{recursive:!0}),await RJ(o,n,"utf-8")}async deleteFile(e){let n=ot.parse(e).fsPath;await PJ(n)}};gr();function AJ(t){return t===P.TURN_CANCELLED?"cancelled":t===P.TURN_FAILED?"failed":"completed"}function r7(t,e){let n=[],o=i=>{let{conversationId:s,toolName:a}=i;if(s&&(a==="edit_file"||a==="write_file")){let l=E1(i);l?.uri!==void 0&&l.originalContent!==void 0&&e.recordBaseline(s,ot.file(l.uri),l.originalContent)}},r=(i,s)=>{let{conversationId:a,turnId:l}=i;if(!a||!l)return;let c=i.error instanceof Error?i.error.message:typeof i.error=="string"?i.error:void 0;e.createCheckpoint(a,l,{turnFinalState:s,turnEndReason:c}).catch(()=>{})};n.push(t.on(P.TOOL_CALL_EXECUTED,o));for(let i of[P.TURN_COMPLETED,P.TURN_CANCELLED,P.TURN_FAILED])n.push(t.on(i,s=>{r(s,AJ(i))}));return()=>{for(let i of n)i()}}import{access as MJ,stat as DJ}from"node:fs/promises";import{constants as OJ}from"node:fs";import{dirname as LJ,resolve as cy}from"node:path";import{homedir as NJ}from"node:os";function o7(t){let e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0");return`${e}-${n}`}async function $J(t){try{return await MJ(t,OJ.F_OK),!0}catch{return!1}}async function FJ(t){let e=cy(t,".git");if(!await $J(e))return!1;try{let n=await DJ(e);return n.isDirectory()||n.isFile()}catch{return!1}}async function UJ(t){try{if(!t||t.includes("\0"))return"unknown";let e=cy(t);for(;;){if(await FJ(e))return"yes";let n=LJ(e);if(n===e)return"no";e=n}}catch{return"unknown"}}var uy=class{async collect(e){let n;try{n=cy(e.cwd)}catch{n=String(e.cwd??"")}let o=e.workspaceRoot??n,r,i="unknown";try{r=cy(o),i=await UJ(r)}catch{r=String(o)}let s=e.now??new Date,a=Fg();return{os:process.platform,shell:a.shell,cwd:n,workspaceRoot:r,isGitRepo:i,today:o7(s)}}getHomeDir(){return NJ()}};import{access as BJ,readFile as jJ,realpath as zJ}from"node:fs/promises";import{homedir as i7}from"node:os";import{dirname as WJ,isAbsolute as KJ,join as Us,parse as HJ,relative as VJ,resolve as Bs}from"node:path";var qJ=["AGENTS.md","CLAUDE.md"],s7=["",".claude",".opencode"],a7="rules.md",GJ=2e5;function l7(t){if(!t)return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function ZJ(t){let e=[],n=process.env.OPENCODE_CONFIG_DIR?.trim();return n&&e.push(Us(n,"AGENTS.md")),e.push(Us(i7(),".config","opencode","AGENTS.md")),t||e.push(Us(i7(),".claude","CLAUDE.md")),e}async function c7(t,e){try{await BJ(t);let n=(await jJ(t,"utf-8")).trim();if(!n)return;let o=Bs(t);try{o=await zJ(t)}catch{}return{path:Bs(t),canonicalPath:Bs(o),type:e,content:n}}catch{return}}function JJ(t,e){let n=VJ(e,t);return!n||n.startsWith("..")||KJ(n)?t:n}function YJ(t,e){let n=[],o=Bs(t),r=e?Bs(e):void 0,i=o,s=HJ(o).root;for(;n.push(i),!(r&&i===r||i===s);){let a=WJ(i);if(a===i)break;i=a}return n}function QJ(t){let e=[];for(let n of qJ)for(let o of t)for(let r of s7){let i=r?Us(o,r,n):Us(o,n);e.push({path:i,type:"project"})}for(let n of t)for(let o of s7){let r=o?Us(n,o,a7):Us(n,a7);e.push({path:r,type:"panda-rules"})}return e}async function XJ(t){let e=QJ(t);return(await Promise.all(e.map(o=>c7(o.path,o.type)))).filter(o=>!!o)}function eY(t){let e=new Set,n=[];for(let o of t)e.has(o.canonicalPath)||(e.add(o.canonicalPath),n.push(o));return n}function tY(t,e){if(t.length===0)return{text:"",sources:[],meta:{fileCount:0,totalChars:0,truncated:!1}};let n=[],o=[],r=0,i=!1;for(let s of t){let l=`Instructions from: ${JJ(s.path,e)}
1989
- ${s.content}`;if(r+l.length>GJ){i=!0;break}r+=l.length,n.push(l),o.push({path:s.path,type:s.type})}return{text:n.join(`
1988
+ )`,[n,n,i.created_at]),await r.run("DELETE FROM checkpoints WHERE conversation_id = ? AND created_at > ?",[n,i.created_at])})}async deleteConversation(e,n){let o=await this.getConnection(e);o&&await o.transaction(async()=>{await o.run("DELETE FROM snapshots WHERE conversation_id = ?",[n]),await o.run("DELETE FROM checkpoints WHERE conversation_id = ?",[n]),await o.run("DELETE FROM baselines WHERE conversation_id = ?",[n])})}async closeDatabase(e){let n=this.connections.get(e);if(n){this.connections.delete(e);try{await(await n)?.close()}catch{}}}async saveRevision(e,n){let o=await this.getConnection(e);o&&await o.run("INSERT OR REPLACE INTO revisions (file_uri, original_content, review_state, created_at, last_modified_at) VALUES (?, ?, ?, ?, ?)",[n.fileUri,n.originalContent,n.reviewStateByRange,n.createdAt,n.lastModifiedAt])}async deleteRevision(e,n){let o=await this.getConnection(e);o&&await o.run("DELETE FROM revisions WHERE file_uri = ?",[n])}async getAllRevisions(e){let n=await this.getConnection(e);return n?(await n.all("SELECT file_uri, original_content, review_state, created_at, last_modified_at FROM revisions")).map(r=>({fileUri:r.file_uri,originalContent:r.original_content,reviewStateByRange:r.review_state??"[]",createdAt:r.created_at,lastModifiedAt:r.last_modified_at})):[]}async clearAllRevisions(e){let n=await this.getConnection(e);n&&await n.run("DELETE FROM revisions")}getConnection(e){let n=this.connections.get(e);return n||(n=this.openDatabase(e).catch(()=>null),this.connections.set(e,n)),n}async openDatabase(e){await n7.promises.mkdir(ir(e),{recursive:!0});let n=await Rl(e);return await n.exec(CJ),await this.ensureCheckpointColumns(n),n}async ensureCheckpointColumns(e){await this.tryAddColumn(e,"ALTER TABLE checkpoints ADD COLUMN turn_final_state TEXT NOT NULL DEFAULT 'completed'"),await this.tryAddColumn(e,"ALTER TABLE checkpoints ADD COLUMN turn_end_reason TEXT")}async tryAddColumn(e,n){try{await e.run(n)}catch(o){if(!(o instanceof Error?o.message:String(o)).includes("duplicate column name"))throw o}}};import{dirname as EJ}from"node:path";import{mkdir as PJ,readFile as RJ,unlink as AJ,writeFile as MJ}from"node:fs/promises";var ly=class{async readText(e){let n=ot.parse(e).fsPath;return await RJ(n,"utf-8")}async writeText(e,n){let o=ot.parse(e).fsPath;await PJ(EJ(o),{recursive:!0}),await MJ(o,n,"utf-8")}async deleteFile(e){let n=ot.parse(e).fsPath;await AJ(n)}};gr();function DJ(t){return t===P.TURN_CANCELLED?"cancelled":t===P.TURN_FAILED?"failed":"completed"}function r7(t,e){let n=[],o=i=>{let{conversationId:s,toolName:a}=i;if(s&&(a==="edit_file"||a==="write_file")){let l=E1(i);l?.uri!==void 0&&l.originalContent!==void 0&&e.recordBaseline(s,ot.file(l.uri),l.originalContent)}},r=(i,s)=>{let{conversationId:a,turnId:l}=i;if(!a||!l)return;let c=i.error instanceof Error?i.error.message:typeof i.error=="string"?i.error:void 0;e.createCheckpoint(a,l,{turnFinalState:s,turnEndReason:c}).catch(()=>{})};n.push(t.on(P.TOOL_CALL_EXECUTED,o));for(let i of[P.TURN_COMPLETED,P.TURN_CANCELLED,P.TURN_FAILED])n.push(t.on(i,s=>{r(s,DJ(i))}));return()=>{for(let i of n)i()}}import{access as OJ,stat as LJ}from"node:fs/promises";import{constants as NJ}from"node:fs";import{dirname as $J,resolve as cy}from"node:path";import{homedir as FJ}from"node:os";function o7(t){let e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0");return`${e}-${n}`}async function UJ(t){try{return await OJ(t,NJ.F_OK),!0}catch{return!1}}async function BJ(t){let e=cy(t,".git");if(!await UJ(e))return!1;try{let n=await LJ(e);return n.isDirectory()||n.isFile()}catch{return!1}}async function jJ(t){try{if(!t||t.includes("\0"))return"unknown";let e=cy(t);for(;;){if(await BJ(e))return"yes";let n=$J(e);if(n===e)return"no";e=n}}catch{return"unknown"}}var uy=class{async collect(e){let n;try{n=cy(e.cwd)}catch{n=String(e.cwd??"")}let o=e.workspaceRoot??n,r,i="unknown";try{r=cy(o),i=await jJ(r)}catch{r=String(o)}let s=e.now??new Date,a=Fg();return{os:process.platform,shell:a.shell,cwd:n,workspaceRoot:r,isGitRepo:i,today:o7(s)}}getHomeDir(){return FJ()}};import{access as zJ,readFile as WJ,realpath as KJ}from"node:fs/promises";import{homedir as i7}from"node:os";import{dirname as HJ,isAbsolute as VJ,join as Us,parse as qJ,relative as GJ,resolve as Bs}from"node:path";var ZJ=["AGENTS.md","CLAUDE.md"],s7=["",".claude",".opencode"],a7="rules.md",JJ=2e5;function l7(t){if(!t)return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function YJ(t){let e=[],n=process.env.OPENCODE_CONFIG_DIR?.trim();return n&&e.push(Us(n,"AGENTS.md")),e.push(Us(i7(),".config","opencode","AGENTS.md")),t||e.push(Us(i7(),".claude","CLAUDE.md")),e}async function c7(t,e){try{await zJ(t);let n=(await WJ(t,"utf-8")).trim();if(!n)return;let o=Bs(t);try{o=await KJ(t)}catch{}return{path:Bs(t),canonicalPath:Bs(o),type:e,content:n}}catch{return}}function QJ(t,e){let n=GJ(e,t);return!n||n.startsWith("..")||VJ(n)?t:n}function XJ(t,e){let n=[],o=Bs(t),r=e?Bs(e):void 0,i=o,s=qJ(o).root;for(;n.push(i),!(r&&i===r||i===s);){let a=HJ(i);if(a===i)break;i=a}return n}function eY(t){let e=[];for(let n of ZJ)for(let o of t)for(let r of s7){let i=r?Us(o,r,n):Us(o,n);e.push({path:i,type:"project"})}for(let n of t)for(let o of s7){let r=o?Us(n,o,a7):Us(n,a7);e.push({path:r,type:"panda-rules"})}return e}async function tY(t){let e=eY(t);return(await Promise.all(e.map(o=>c7(o.path,o.type)))).filter(o=>!!o)}function nY(t){let e=new Set,n=[];for(let o of t)e.has(o.canonicalPath)||(e.add(o.canonicalPath),n.push(o));return n}function rY(t,e){if(t.length===0)return{text:"",sources:[],meta:{fileCount:0,totalChars:0,truncated:!1}};let n=[],o=[],r=0,i=!1;for(let s of t){let l=`Instructions from: ${QJ(s.path,e)}
1989
+ ${s.content}`;if(r+l.length>JJ){i=!0;break}r+=l.length,n.push(l),o.push({path:s.path,type:s.type})}return{text:n.join(`
1990
1990
 
1991
- `),sources:o,meta:{fileCount:o.length,totalChars:r,truncated:i}}}async function u7(t){let e=Bs(t.cwd),n=t.workspaceRoot?Bs(t.workspaceRoot):e,o=t.disableClaudeCompat??l7(process.env.PANDA_DISABLE_CLAUDE_COMPAT),r=t.disableProjectInstructions??l7(process.env.PANDA_DISABLE_PROJECT_INSTRUCTIONS),i=ZJ(o),s;for(let c of i)if(s=await c7(c,"global"),s)break;let a=[];if(!r){let c=YJ(e,n);a=await XJ(c)}let l=eY([...s?[s]:[],...a]);return tY(l,e)}function d7(t){let e,n,o=async r=>!r&&e?e:n||(n=t().then(i=>(e=i,i)).finally(()=>{n=void 0}),n);return{load:()=>o(!1),refresh:()=>o(!0)}}function p7(t){return async(e,n)=>{try{let o=[],r=n?.interactionMode?.trim();r&&(o.push("## Current interaction mode"),o.push(`- ${r}`)),o.push(`
1991
+ `),sources:o,meta:{fileCount:o.length,totalChars:r,truncated:i}}}async function u7(t){let e=Bs(t.cwd),n=t.workspaceRoot?Bs(t.workspaceRoot):e,o=t.disableClaudeCompat??l7(process.env.PANDA_DISABLE_CLAUDE_COMPAT),r=t.disableProjectInstructions??l7(process.env.PANDA_DISABLE_PROJECT_INSTRUCTIONS),i=YJ(o),s;for(let c of i)if(s=await c7(c,"global"),s)break;let a=[];if(!r){let c=XJ(e,n);a=await tY(c)}let l=nY([...s?[s]:[],...a]);return rY(l,e)}function d7(t){let e,n,o=async r=>!r&&e?e:n||(n=t().then(i=>(e=i,i)).finally(()=>{n=void 0}),n);return{load:()=>o(!1),refresh:()=>o(!0)}}function p7(t){return async(e,n)=>{try{let o=[],r=n?.interactionMode?.trim();r&&(o.push("## Current interaction mode"),o.push(`- ${r}`)),o.push(`
1992
1992
  ## Current workspace`),o.push(`- ${t.workspacePath}`);let i=n?.selectedModelId?.trim();i&&(o.push(`
1993
1993
  ## Selected model`),o.push(`- ${i}`));let s=t.getTodoForConversation?.();if(e&&s){let a=s(e).trim();o.push(`
1994
1994
  ## Current todo (this session)`),o.push(a.length>0?a:"(None)")}return o.join(`
1995
- `)}catch{return""}}}import{unlink as nY,readFile as rY}from"node:fs/promises";import{join as oY}from"node:path";var iY="debug";function f7(t){return t.replace(/[^\w.-]+/g,"_").slice(0,200)||"unknown"}function dy(t){let e=Zr(t.userHomeBase),n=f7(ud(t.workspacePath)),o=f7(t.conversationId);return oY(e,iY,n,`${o}.log`)}async function m7(t){let e=dy(t);try{await nY(e)}catch(n){if((n&&typeof n=="object"&&"code"in n?n.code:void 0)!=="ENOENT")throw n}}async function g7(t){let e=dy(t);try{return await rY(e,"utf8")}catch(n){if((n&&typeof n=="object"&&"code"in n?n.code:void 0)==="ENOENT")return"";throw n}}var vY=[P.TURN_COMPLETED,P.TURN_FAILED,P.TURN_CANCEL_RESOLVED],bY="legacy",xY="sqlite",M7=["agent","ask","plan","office","team"],D7=["--conversation \u4E0E --resume-latest \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528","--pack \u4E0E --mode \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528"];function TY(){return String(process.env.PANDA_TCH_PERSISTENCE_MODE??xY).toLowerCase()!==bY}function wY(){try{let t=hY().trim();if(t)return t}catch{}return yY()}function O7(t){let e=p=>{let f=t.indexOf(p);if(!(f<0)){if(f+1>=t.length)throw new Error(`Missing arg value for ${p}`);return t[f+1]}},n=new Set(["--workspace","--prompt","--output-format","--render-mode","--mode","--model","--conversation","--pack"]),o=[];for(let p=0;p<t.length;p++){let f=t[p];if(f){if(!f.startsWith("-")){o.push(f);continue}n.has(f)&&(p+=1)}}let r=e("--output-format"),i=r==="json"||r==="stream-json"?r:"text",s=e("--render-mode")?.trim().toLowerCase(),a=s==="auto"||s==="incremental"||s==="safe"||s==="full"?s:void 0,l=e("--mode")?.trim(),c=e("--model")?.trim(),u=e("--conversation")?.trim(),d=e("--pack")?.trim();if(u&&t.includes("--resume-latest"))throw new Error("[panda-cli] --conversation cannot be used with --resume-latest");if(l&&d)throw new Error("[panda-cli] --pack cannot be used with --mode");return{workspacePath:e("--workspace")??process.cwd(),resumeLatest:t.includes("--resume-latest"),print:t.includes("--print"),renderMode:a,outputFormat:i,positionalPrompt:o.length>0?o.join(" "):void 0,initialPrompt:e("--prompt"),initialMode:l&&l.length>0?l:void 0,initialPackId:d&&d.length>0?d:void 0,initialModelId:c&&c.length>0?c:void 0,initialConversationId:u&&u.length>0?u:void 0}}function _Y(t,e){for(let n of vY)t.on(n,o=>{let r=o?.conversationId;if(!r||typeof r!="string")return;let i=n===P.TURN_COMPLETED?"turn_completed":n===P.TURN_FAILED?"turn_failed":"turn_cancelled";e.requestConversationPersist(r,i,La)})}function SY(t){return{conversationId:t.conversationId,title:t.title,updatedAt:t.updatedAt,preview:t.preview,messageCount:t.messageCount,...t.fromCron?{fromCron:t.fromCron}:{},...t.cronTaskId?{cronTaskId:t.cronTaskId}:{}}}function kY(t){let e=t.uiMessages.find(o=>o.role==="user"),n=typeof e?.content=="string"?e.content.slice(0,100):"";return{conversationId:t.conversationId,title:t.title??"",updatedAt:t.updatedAt,messageCount:t.uiMessages.length,preview:n}}function IY(){return{conversationId:En,title:"",updatedAt:Date.now(),messageCount:0,preview:""}}async function CY(t,e){try{let[{CliMcpRuntime:n},{loadCliMcpConfig:o},{CliMcpToolSource:r}]=await Promise.all([Promise.resolve().then(()=>(x7(),b7)),Promise.resolve().then(()=>(my(),Tk)),Promise.resolve().then(()=>(A7(),R7))]),i=new n,s=await o(e);t.addToolSource(new r(i));let a=(async()=>{await i.start(s),await t.getFunctionDeclarationsAsync();let c=t.getLastExternalMergeStats(),u=await i.status(),d=0,p=0,f=0,m=0,g=0;for(let h of Object.values(u))h.status==="connected"?d++:h.status==="pending"?p++:h.status==="needs_auth"?f++:h.status==="failed"?m++:h.status==="disabled"&&g++;console.log(`[panda-cli MCP] Tools: builtin=${t.getBuiltinToolCount()}, mcpExternal=${c.externalDeclarations}, skippedConflicts=${c.skippedConflicts}, sourceErrors=${c.sourceErrors}`),console.log(`[panda-cli MCP] Servers: configured=${Object.keys(s).length}, connected=${d}, pending=${p}, needs_auth=${f}, failed=${m}, disabled=${g}`)})().catch(c=>{console.warn("[panda-cli MCP] Background start failed:",c)}),l=()=>{i.stop()};return process.once("exit",l),process.once("SIGINT",l),process.once("SIGTERM",l),{whenReady:a,stop:l,runtime:i}}catch{return{whenReady:Promise.resolve(),stop:()=>{}}}}async function yy(t){await mY(t.workspacePath,{recursive:!0}),TA(PL);let e=wY(),n=Zr(e),o=ud(t.workspacePath),r=new zg({workspaceRoot:t.workspacePath,pandaHome:n,getWorkspaceId:()=>o,getWorkspacePath:()=>t.workspacePath}),i=await CY(r,t.workspacePath);i.whenReady;let s,a,l="-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",c=[],u=new $l(new ad);await u.initialize().catch(()=>{});let d=new Ml,p="file",f=u;if(a=new Yh({modelProvider:f}),a.markLLMInitialized(),c=(await u.listModelMetadata({visibleOnly:!0,enabledOnly:!0}).catch(()=>[])).map(O=>({id:O.id,displayName:O.displayName||O.id})),c.length>0){let O=await u.getDefaultModelId(),w=c[0];if(O){let D=c.find(pe=>pe.id===O);D&&(w=D)}let z=await u.getModelMetadataById(w.id);s=new ld(a,{model:z?.model??w.id,title:w.displayName,uniqueId:`cli-catalog-${w.id}`}),l=w.displayName||w.id}else s=new ld(a,{model:"default",title:l,uniqueId:"cli-catalog-empty"});let m=await new uy().collect({cwd:t.workspacePath,workspaceRoot:t.workspacePath}),g=d7(()=>u7({cwd:t.workspacePath,workspaceRoot:t.workspacePath})),h={current:null},y=p7({workspacePath:t.workspacePath,getTodoForConversation:()=>h.current}),v=sf.create({llm:s,toolProvider:r,workspacePath:t.workspacePath,environment:m,getUserContext:g,getSystemReminder:y});await v.initialize(),await v.preloadUserContext(),await G5(v,t.workspacePath),X5(v.getPackRegistry());let b=v.getEventBus(),R=new fd(b);h.current=O=>R.get(O),r.setTodoManager(R);let M=new Au(n,new ey),B=new Ri(n),S=new Ai(B),x=new cd(M),T=TY()?new pd(M):void 0,W=gY(M.getProjectDir(o),"data","checkpoints.db"),A=new ay,U=new ad,j={getDbPath:()=>W,trace:O=>U.trace(O),warn:(O,w)=>U.warn(O,w),info:O=>U.info(O)},_=new sy(new ly,j,async()=>A,void 0);r7(b,_);let $=new ty(M),N=new gf(v,x,o,T,R,$),K=O=>{let w=N.getConversation(O);!w||w.interactionMode};T&&dk({workspaceId:o,persistence:x,tchPersistence:T}),v.setPersistConversation(O=>N.persistConversation(O)),v.setSwitchToAgentCallback(async O=>{N.setConversationInteractionMode(O,"agent")}),_Y(b,N);let E,V=0,ae=process.env.HOME||process.env.USERPROFILE||"",Te=B5({workspaceRoot:t.workspacePath,userHome:ae,disabledPaths:[]}),me="agent",ne=await N.loadPersistedSessions();if(t.initialConversationId){let O=N.getConversation(t.initialConversationId);if(O)E=O;else{let w=await N.restoreConversation(t.initialConversationId);w?E=w:E=N.createConversationWithId(t.initialConversationId)}}else if(t.resumeLatest&&ne.length>0){let O=await N.restoreConversation(ne[0].conversationId);O&&(E=O)}E&&_.loadCheckpoints(E.conversationId),r.setCurrentConversationIdGetter(()=>E?.conversationId??En),r.setCreatePlanMeta((O,w)=>N.createNewConversationPlanMeta(O,w).then(z=>z?{filePath:z.filePath}:void 0));let Pe=async O=>{try{return O&&(await d.checkSession().catch(()=>{}),await u.refresh()),(await u.listModelMetadata({visibleOnly:!0,enabledOnly:!0})).map(z=>({id:z.id,displayName:z.displayName||z.id}))}catch{return[]}},de=async O=>{await a?.$prepareGatewayAuth(O)},H=async(O,w=!1)=>{let z=await Pe(w);return p=O,a?.setModelProvider(f),c=z,c.length===0&&(l="-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B"),!0};(await d.checkSession().catch(()=>({ok:!1}))).ok&&await H("remote",!0).catch(()=>{});let ee=await x.getWorkspaceSelectedModel(o);if(ee&&!c.some(O=>O.id===ee)&&(ee=void 0),ee||(ee=c[0]?.id),t.initialModelId&&!c.some(O=>O.id===t.initialModelId)){let O=c.map(w=>w.id).join(", ");throw new Error(`[panda-cli] Unknown model '${t.initialModelId}'. Available models: ${O}`)}let ue=t.initialModelId,Q=O=>O?c.find(z=>z.id===O)?.displayName??O:l;function We(){if(E)return;let O=N.createConversation();E=O,N.setConversationInteractionMode(O.conversationId,me),_.loadCheckpoints(O.conversationId)}t.eagerMaterializeConversation&&We();let Qt=O=>{if(O){if(!E){me=O;return}N.setConversationInteractionMode(E.conversationId,O),O==="team"&&K(E.conversationId)}};if(t.initialPackId){let O=v.getPackRegistry();if(!O?.isPackMode(t.initialPackId)){let w=(O?.listPacks()??[]).map(z=>z.name).join(", ");throw new Error(`[panda-cli] Unknown pack '${t.initialPackId}'. Available packs: ${w||"(none)"}`)}Qt(t.initialPackId)}else Qt(t.initialMode);let Xt=(O,w,z)=>{We();let D=w??ee??ue;D&&!c.some(Se=>Se.id===D)&&(D=c[0]?.id,ee=D,x.setWorkspaceSelectedModel(o,D));let pe=++V;(async()=>{let Se=O;Array.isArray(Se)&&(Se=await U5(Se,Te,{sessionId:E?.conversationId})),pe===V&&(D&&await de(D),E.submitUserMessage(Se,D,z))})().catch(Se=>{console.error("[panda-cli] submit expand failed",Se)})},ln=O=>{if(O.targetWorkspaceId!==o){process.env.PANDA_CRON_DEBUG==="1"&&console.log(`[panda-cli:cron] submitCronFire skip \u2014 payload.targetWorkspaceId=${O.targetWorkspaceId} session.workspaceId=${o}`);return}process.env.PANDA_CRON_DEBUG==="1"&&console.log(`[panda-cli:cron] submitCronFire ws=${o} taskId=${O.cronTaskId??"(none)"} title=${O.titleHint??"(none)"}`);let w={createdBy:"kairos_cron",...O.cronTaskId?{taskId:O.cronTaskId}:{}},z=N.createConversation({cronOrigin:w}),D=O.titleHint?.trim();D&&(z.title=D.slice(0,120)),E=z,N.setConversationInteractionMode(z.conversationId,me),_.loadCheckpoints(z.conversationId),Xt(O.prompt,void 0,void 0)},en=()=>{let O=E;return O?O.state.status==="running":!1},Ar=()=>{let O=v.getConfig().cron;return{enabled:O?.enabled!==!1,durableEnabled:O?.durableEnabled!==!1}},nr={submit:Xt,submitCronFire:ln,isConversationCoreBusy:en,getCronCompiledFlags:Ar};return t.embedCronScheduler!==!1&&new wh({pandaHome:n,getActiveWorkspaceId:()=>o,getSession:()=>nr,getSessionForWorkspace:w=>w===o?nr:null}).syncFromWorkspaceIds([o]),{eventBus:b,interruptCurrentTurn:async O=>{V++;let w=E;if(!w)return!0;let z=w.currentTurn;return z?(await z.cancel({reason:"user",inputEmptyAtCancel:O?.inputEmptyAtCancel,isViewingSubThread:O?.isViewingSubThread,restorePrompt:O?.restorePrompt}),!0):(w.abortInFlightConversationAction(),!0)},cancelTurn:async(O,w,z)=>{let D=N.getConversation(O);if(!D)throw new Error(`[panda-cli] Conversation not found: ${O}`);let pe=D.currentTurn;if(pe!==null&&pe.turnId===w){await pe.cancel({reason:"user",inputEmptyAtCancel:z?.inputEmptyAtCancel,isViewingSubThread:z?.isViewingSubThread,restorePrompt:z?.restorePrompt});return}D.cancelConversationActionIfTurnId(w)||D.state.status==="running"&&D.currentTurn===null&&D.abortInFlightConversationAction()},getConversationId:()=>E?.conversationId??En,getCurrentConversationMessages:()=>{let O=E;return O?O.uiMessages.map(w=>({...w})):[]},getCurrentConversationSummary:()=>{let O=E;return O?kY(O):IY()},listSessionSummaries:async()=>(await N.loadPersistedSessions(),N.getSessionSummaries().map(SY)),switchConversation:async O=>{if((E?.conversationId??En)===O)return!0;let z=N.getConversation(O);if(z)return E=z,_.loadCheckpoints(O),!0;let D=await N.restoreConversation(O);return D?(E=D,_.loadCheckpoints(O),!0):!1},submit:Xt,submitCronFire:ln,getPendingQueue:()=>E?.getPendingQueue()??[],removePendingUserMessage:O=>{E?.removePendingUserMessage(O)},sendPendingUserMessageImmediately:async O=>{E&&await E.sendPendingUserMessageImmediately(O)},answerAskQuestion:async(O,w)=>{if(!E)throw new Error("[panda-cli] No active conversation");let z=await r.getToolAsync("ask_question");if(!z)throw new Error("ask_question tool not found");let D=await z.build({tool_call_id:O,answers:w.map(Se=>({question_id:Se.questionId,selected_option_ids:Se.selectedOptionIds,freeform_text:Se.freeformText,option_notes:Se.optionNotes&&Object.keys(Se.optionNotes).length>0?Se.optionNotes:void 0}))}),pe=new AbortController;await D.execute(pe.signal)},newConversation:()=>(E=void 0,me="agent",En),forkConversation:async()=>{We();let O=E,w=O.turns;if(w.length===0){let pe=N.createConversation();return E=pe,N.setConversationInteractionMode(pe.conversationId,O.interactionMode),_.loadCheckpoints(pe.conversationId),{conversationId:pe.conversationId,title:pe.title??""}}let z=w[w.length-1],D=N.createConversationFromSlice(O,z.turnId);if(O.planMeta&&$)try{let pe=await $.copyPlanForFork(O.planMeta,D.title??void 0);N.setConversationPlanMeta(D.conversationId,pe)}catch{}return E=D,_.loadCheckpoints(D.conversationId),{conversationId:D.conversationId,title:D.title??""}},modelLabel:l,listModelOptions:()=>c.slice(),getSelectedModelId:()=>ee,getModelSource:()=>p,setSelectedModelId:async O=>{ee=O,await x.setWorkspaceSelectedModel(o,O)},refreshModelOptions:async()=>{let O=JSON.stringify(c);c=await Pe(p==="remote"),ee&&!c.some(D=>D.id===ee)&&(ee=c[0]?.id,await x.setWorkspaceSelectedModel(o,ee));let z=O!==JSON.stringify(c);return{options:c.slice(),selectedModelId:ee,changed:z}},getModelLabelById:Q,checkAuthSession:async()=>d.checkSession(),isLoggedIn:async()=>(await d.checkSession()).ok,sendRegisterVerificationCode:async O=>d.sendRegisterVerificationCode(O),register:async(O,w,z,D,pe)=>d.register(O,w,z,D,pe),login:async(O,w)=>{let z=await d.login(O,w);return await H("remote",!0).catch(()=>{}),ee&&!c.some(D=>D.id===ee)&&(ee=c[0]?.id,await x.setWorkspaceSelectedModel(o,ee)),z},logout:async()=>{await d.logout(),await H("file"),ee&&!c.some(O=>O.id===ee)&&(ee=c[0]?.id,await x.setWorkspaceSelectedModel(o,ee))},getCurrentUser:async()=>d.getCurrentUser(),getInteractionMode:()=>E?.interactionMode??me,setInteractionMode:O=>{if(!E){me=O;return}N.setConversationInteractionMode(E.conversationId,O),O==="team"&&K(E.conversationId)},getCurrentConversationTurnCount:()=>E?.turns.length??0,isCurrentConversationEphemeral:()=>E?.isEphemeral??!1,runRegisteredActionImmediate:async(O,w,z,D)=>{if(!E)throw new Error("[panda-cli] No active conversation");return N.runRegisteredActionImmediate(E.conversationId,O,w,z,D)},enqueueConversationAction:(O,w)=>{We();let z=E;if(!z)throw new Error("[panda-cli] No active conversation");N.enqueueConversationAction(z.conversationId,O,w)},isConversationCoreBusy:en,getCronCompiledFlags:Ar,getMcpStatus:async()=>i.runtime?i.runtime.status():{},setMcpServerEnabled:async(O,w)=>{i.runtime&&await i.runtime.setServerEnabled(O,w)},getTodoStore:()=>({getItems:async()=>{let O=await S.getString(wt.DrawerTodo);if(!O)return[];try{let w=JSON.parse(O);return Array.isArray(w)?w.filter(z=>z&&typeof z.prompt=="string").map(z=>({prompt:z.prompt})):[]}catch{return[]}},addItem:async O=>{let w=await S.getString(wt.DrawerTodo),z=[];try{z=w?JSON.parse(w):[]}catch{z=[]}Array.isArray(z)||(z=[]),z.push({prompt:O}),await S.setString(wt.DrawerTodo,JSON.stringify(z))},removeItem:async O=>{let w=await S.getString(wt.DrawerTodo);if(w)try{let z=JSON.parse(w);if(!Array.isArray(z)||O<0||O>=z.length)return;z.splice(O,1),await S.setString(wt.DrawerTodo,JSON.stringify(z))}catch{}}}),getMcpDetails:async()=>{if(i.runtime){let O=await i.runtime.listTools(),w=await i.runtime.status(),{loadCliMcpConfig:z}=await Promise.resolve().then(()=>(my(),Tk)),D=await z(t.workspacePath),pe=[];for(let[Se,st]of Object.entries(w)){let ye=D[Se]??{type:"stdio",command:"unknown"},Re=Object.values(O).filter(Ae=>Ae.serverName===Se);pe.push({name:Se,config:ye,status:st,tools:Re})}for(let[Se,st]of Object.entries(D))w[Se]||pe.push({name:Se,config:st,status:{status:"pending"},tools:[]});return pe.sort((Se,st)=>Se.name.localeCompare(st.name))}return[]},getCliDebugLogPath:()=>dy({userHomeBase:e,workspacePath:t.workspacePath,conversationId:E?.conversationId??En}),appendCliDebugLog:async()=>{},clearCliDebugLog:async()=>{await m7({userHomeBase:e,workspacePath:t.workspacePath,conversationId:E?.conversationId??En})},readCliDebugLog:async()=>g7({userHomeBase:e,workspacePath:t.workspacePath,conversationId:E?.conversationId??En}),checkpointLoadForConversation:async O=>{await _.loadCheckpoints(O)},checkpointRewindBeforeTurn:async O=>{let w=E;if(!w)throw new Error("[panda-cli] No active conversation for checkpoint rewind");let z=await _.rewindBeforeTurn(w.conversationId,O);return{restoredFiles:z.restoredFiles.map(D=>D.toString()),targetTurnId:z.targetTurnId}},checkpointRewindToBaseline:async()=>{let O=E;if(!O)throw new Error("[panda-cli] No active conversation for checkpoint rewind");let w=await _.rewindToBaseline(O.conversationId);return{restoredFiles:w.restoredFiles.map(z=>z.toString()),targetTurnId:w.targetTurnId}}}}function EY(t){return{response:t.response,stats:{conversationId:t.conversationId,model:t.model,durationMs:t.durationMs,tools:{totalCalls:t.toolCalls,totalSuccess:t.toolSuccess,totalFail:t.toolFail}}}}function PY(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>e?.type==="text"?String(e.text??""):"").join(""):""}function RY(){return new Promise((t,e)=>{let n="";process.stdin.setEncoding?.("utf8"),process.stdin.on("data",o=>{n+=o}),process.stdin.on("end",()=>t(n)),process.stdin.on("error",e)})}async function AY(t){if(t.positionalPrompt&&t.positionalPrompt.trim())return t.positionalPrompt.trim();let e="";return process.stdin?.isTTY||(e=(await RY()).trim()),MY({positionalPrompt:t.positionalPrompt,stdinPrompt:e,flagPrompt:t.initialPrompt})}function MY(t){if(t.positionalPrompt&&t.positionalPrompt.trim())return t.positionalPrompt.trim();if(t.stdinPrompt&&t.stdinPrompt.trim())return t.stdinPrompt.trim();if(t.flagPrompt&&t.flagPrompt.trim())return t.flagPrompt.trim();throw new Error('[panda-cli] Input is required in --print mode. Provide a positional prompt, pipe stdin, or pass --prompt "<text>".')}function DY(t){if(typeof t=="string")return t;if(t&&typeof t=="object"){let e=t.llmContent;if(typeof e=="string")return e}try{return JSON.stringify(t,null,2)}catch{return String(t)}}function oo(t){process.stdout.write(`${JSON.stringify(t)}
1996
- `)}function L7(){let t=new Map;return{recordFirstChunk(e,n){e&&t.set(e,n)},shouldSkipDuplicate(e,n){if(!e)return!1;let o=t.get(e);return o===void 0?!1:(t.delete(e),n===o)}}}function OY(t,e){return new Promise((n,o)=>{let r=Date.now(),i=t.on(P.TURN_COMPLETED,a=>{a.conversationId===e&&(i(),s(),n({durationMs:typeof a.duration=="number"?a.duration:Date.now()-r}))}),s=t.on(P.TURN_FAILED,a=>{a.conversationId===e&&(i(),s(),o(a.error instanceof Error?a.error:new Error(String(a.error))))})})}async function N7(t){t.outputFormat==="stream-json"&&sE();let e=await AY(t),n=await yy({...t,eagerMaterializeConversation:!0}),o=n.getConversationId(),r=t.initialModelId??n.getSelectedModelId(),i=n.getModelLabelById(r),s=Date.now(),a=0,l=0,c=0,u=[];if(t.outputFormat==="stream-json"){let d=L7(),p=L7();oo({type:"init",timestamp:new Date().toISOString(),conversation_id:o,model:i}),oo({type:"message",timestamp:new Date().toISOString(),role:"user",content:e}),u.push(n.eventBus.on(P.TOOL_CALL_REQUESTED,f=>{f.conversationId===o&&oo({type:"tool_use",timestamp:new Date().toISOString(),tool_name:String(f.toolName??"tool"),tool_id:String(f.toolCallId??""),parameters:f.args??{}})}),n.eventBus.on(P.TOOL_CALL_EXECUTED,f=>{f.conversationId===o&&oo({type:"tool_result",timestamp:new Date().toISOString(),tool_id:String(f.toolCallId??""),status:"success",output:DY(f.result??f)})}),n.eventBus.on(P.TOOL_CALL_FAILED,f=>{if(f.conversationId!==o)return;let m=f.error instanceof Error?f.error.message:String(f.error?.message??f.error);oo({type:"tool_result",timestamp:new Date().toISOString(),tool_id:String(f.toolCallId??""),status:"error",error:m})}),n.eventBus.on(P.ASSISTANT_MESSAGE_STARTED,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"";d.recordFirstChunk(g,m),oo({type:"message",timestamp:new Date().toISOString(),role:"assistant",content:m,delta:!0})}),n.eventBus.on(P.THINKING_STARTED,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"",h=typeof f.workId=="string"?f.workId:void 0,y=f.isSubAgentWork===!0;p.recordFirstChunk(g,m),oo({type:"thinking",timestamp:new Date().toISOString(),content:m,delta:!0,message_id:g||void 0,work_id:h,is_sub_agent_work:y})}),n.eventBus.subscribeStreaming(P.MESSAGE_STREAMING,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"";d.shouldSkipDuplicate(g,m)||oo({type:"message",timestamp:new Date().toISOString(),role:"assistant",content:m,delta:!0})}),n.eventBus.subscribeStreaming(P.THINKING_STREAMING,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"",h=typeof f.workId=="string"?f.workId:void 0,y=f.isSubAgentWork===!0;p.shouldSkipDuplicate(g,m)||oo({type:"thinking",timestamp:new Date().toISOString(),content:m,delta:!0,message_id:g||void 0,work_id:h,is_sub_agent_work:y})}))}u.push(n.eventBus.on(P.TOOL_CALL_EXECUTED,d=>{d.conversationId===o&&(a+=1,l+=1)}),n.eventBus.on(P.TOOL_CALL_FAILED,d=>{d.conversationId===o&&(a+=1,c+=1)}));try{n.submit(e,r);let d=await OY(n.eventBus,o),f=[...n.getCurrentConversationMessages()].reverse().find(y=>y.role==="assistant"),m=f?PY(f.content):"",g=d.durationMs||Date.now()-s,h={response:m,conversationId:o,model:i,durationMs:g,toolCalls:a,toolSuccess:l,toolFail:c};if(t.outputFormat==="json"){process.stdout.write(`${JSON.stringify(EY(h))}
1995
+ `)}catch{return""}}}import{unlink as oY,readFile as iY}from"node:fs/promises";import{join as sY}from"node:path";var aY="debug";function f7(t){return t.replace(/[^\w.-]+/g,"_").slice(0,200)||"unknown"}function dy(t){let e=Zr(t.userHomeBase),n=f7(ud(t.workspacePath)),o=f7(t.conversationId);return sY(e,aY,n,`${o}.log`)}async function m7(t){let e=dy(t);try{await oY(e)}catch(n){if((n&&typeof n=="object"&&"code"in n?n.code:void 0)!=="ENOENT")throw n}}async function g7(t){let e=dy(t);try{return await iY(e,"utf8")}catch(n){if((n&&typeof n=="object"&&"code"in n?n.code:void 0)==="ENOENT")return"";throw n}}var xY=[P.TURN_COMPLETED,P.TURN_FAILED,P.TURN_CANCEL_RESOLVED],TY="legacy",wY="sqlite",M7=["agent","ask","plan","office","team"],D7=["--conversation \u4E0E --resume-latest \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528","--pack \u4E0E --mode \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528"];function _Y(){return String(process.env.PANDA_TCH_PERSISTENCE_MODE??wY).toLowerCase()!==TY}function SY(){try{let t=vY().trim();if(t)return t}catch{}return bY()}function O7(t){let e=p=>{let f=t.indexOf(p);if(!(f<0)){if(f+1>=t.length)throw new Error(`Missing arg value for ${p}`);return t[f+1]}},n=new Set(["--workspace","--prompt","--output-format","--render-mode","--mode","--model","--conversation","--pack"]),o=[];for(let p=0;p<t.length;p++){let f=t[p];if(f){if(!f.startsWith("-")){o.push(f);continue}n.has(f)&&(p+=1)}}let r=e("--output-format"),i=r==="json"||r==="stream-json"?r:"text",s=e("--render-mode")?.trim().toLowerCase(),a=s==="auto"||s==="incremental"||s==="safe"||s==="full"?s:void 0,l=e("--mode")?.trim(),c=e("--model")?.trim(),u=e("--conversation")?.trim(),d=e("--pack")?.trim();if(u&&t.includes("--resume-latest"))throw new Error("[panda-cli] --conversation cannot be used with --resume-latest");if(l&&d)throw new Error("[panda-cli] --pack cannot be used with --mode");return{workspacePath:e("--workspace")??process.cwd(),resumeLatest:t.includes("--resume-latest"),print:t.includes("--print"),renderMode:a,outputFormat:i,positionalPrompt:o.length>0?o.join(" "):void 0,initialPrompt:e("--prompt"),initialMode:l&&l.length>0?l:void 0,initialPackId:d&&d.length>0?d:void 0,initialModelId:c&&c.length>0?c:void 0,initialConversationId:u&&u.length>0?u:void 0}}function kY(t,e){for(let n of xY)t.on(n,o=>{let r=o?.conversationId;if(!r||typeof r!="string")return;let i=n===P.TURN_COMPLETED?"turn_completed":n===P.TURN_FAILED?"turn_failed":"turn_cancelled";e.requestConversationPersist(r,i,La)})}function IY(t){return{conversationId:t.conversationId,title:t.title,updatedAt:t.updatedAt,preview:t.preview,messageCount:t.messageCount,...t.fromCron?{fromCron:t.fromCron}:{},...t.cronTaskId?{cronTaskId:t.cronTaskId}:{}}}function CY(t){let e=t.uiMessages.find(o=>o.role==="user"),n=typeof e?.content=="string"?e.content.slice(0,100):"";return{conversationId:t.conversationId,title:t.title??"",updatedAt:t.updatedAt,messageCount:t.uiMessages.length,preview:n}}function EY(){return{conversationId:En,title:"",updatedAt:Date.now(),messageCount:0,preview:""}}async function PY(t,e){try{let[{CliMcpRuntime:n},{loadCliMcpConfig:o},{CliMcpToolSource:r}]=await Promise.all([Promise.resolve().then(()=>(x7(),b7)),Promise.resolve().then(()=>(my(),Tk)),Promise.resolve().then(()=>(A7(),R7))]),i=new n,s=await o(e);t.addToolSource(new r(i));let a=(async()=>{await i.start(s),await t.getFunctionDeclarationsAsync();let c=t.getLastExternalMergeStats(),u=await i.status(),d=0,p=0,f=0,m=0,g=0;for(let h of Object.values(u))h.status==="connected"?d++:h.status==="pending"?p++:h.status==="needs_auth"?f++:h.status==="failed"?m++:h.status==="disabled"&&g++;console.log(`[panda-cli MCP] Tools: builtin=${t.getBuiltinToolCount()}, mcpExternal=${c.externalDeclarations}, skippedConflicts=${c.skippedConflicts}, sourceErrors=${c.sourceErrors}`),console.log(`[panda-cli MCP] Servers: configured=${Object.keys(s).length}, connected=${d}, pending=${p}, needs_auth=${f}, failed=${m}, disabled=${g}`)})().catch(c=>{console.warn("[panda-cli MCP] Background start failed:",c)}),l=()=>{i.stop()};return process.once("exit",l),process.once("SIGINT",l),process.once("SIGTERM",l),{whenReady:a,stop:l,runtime:i}}catch{return{whenReady:Promise.resolve(),stop:()=>{}}}}async function yy(t){await hY(t.workspacePath,{recursive:!0}),TA(PL);let e=SY(),n=Zr(e),o=ud(t.workspacePath),r=new zg({workspaceRoot:t.workspacePath,pandaHome:n,getWorkspaceId:()=>o,getWorkspacePath:()=>t.workspacePath}),i=await PY(r,t.workspacePath);i.whenReady;let s,a,l="-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",c=[],u=new $l(new ad);await u.initialize().catch(()=>{});let d=new Ml,p="file",f=u;if(a=new Yh({modelProvider:f}),a.markLLMInitialized(),c=(await u.listModelMetadata({visibleOnly:!0,enabledOnly:!0}).catch(()=>[])).map(O=>({id:O.id,displayName:O.displayName||O.id})),c.length>0){let O=await u.getDefaultModelId(),w=c[0];if(O){let D=c.find(pe=>pe.id===O);D&&(w=D)}let z=await u.getModelMetadataById(w.id);s=new ld(a,{model:z?.model??w.id,title:w.displayName,uniqueId:`cli-catalog-${w.id}`}),l=w.displayName||w.id}else s=new ld(a,{model:"default",title:l,uniqueId:"cli-catalog-empty"});let m=await new uy().collect({cwd:t.workspacePath,workspaceRoot:t.workspacePath}),g=d7(()=>u7({cwd:t.workspacePath,workspaceRoot:t.workspacePath})),h={current:null},y=p7({workspacePath:t.workspacePath,getTodoForConversation:()=>h.current}),v=sf.create({llm:s,toolProvider:r,workspacePath:t.workspacePath,environment:m,getUserContext:g,getSystemReminder:y});await v.initialize(),await v.preloadUserContext(),await G5(v,t.workspacePath),X5(v.getPackRegistry());let b=v.getEventBus(),R=new fd(b);h.current=O=>R.get(O),r.setTodoManager(R);let M=new Au(n,new ey),B=new Ri(n),S=new Ai(B),x=new cd(M),T=_Y()?new pd(M):void 0,W=yY(M.getProjectDir(o),"data","checkpoints.db"),A=new ay,U=new ad,j={getDbPath:()=>W,trace:O=>U.trace(O),warn:(O,w)=>U.warn(O,w),info:O=>U.info(O)},_=new sy(new ly,j,async()=>A,void 0);r7(b,_);let $=new ty(M),N=new gf(v,x,o,T,R,$),K=O=>{let w=N.getConversation(O);!w||w.interactionMode};T&&dk({workspaceId:o,persistence:x,tchPersistence:T}),v.setPersistConversation(O=>N.persistConversation(O)),v.setSwitchToAgentCallback(async O=>{N.setConversationInteractionMode(O,"agent")}),kY(b,N);let E,V=0,ae=process.env.HOME||process.env.USERPROFILE||"",Te=B5({workspaceRoot:t.workspacePath,userHome:ae,disabledPaths:[]}),me="agent",ne=await N.loadPersistedSessions();if(t.initialConversationId){let O=N.getConversation(t.initialConversationId);if(O)E=O;else{let w=await N.restoreConversation(t.initialConversationId);w?E=w:E=N.createConversationWithId(t.initialConversationId)}}else if(t.resumeLatest&&ne.length>0){let O=await N.restoreConversation(ne[0].conversationId);O&&(E=O)}E&&_.loadCheckpoints(E.conversationId),r.setCurrentConversationIdGetter(()=>E?.conversationId??En),r.setCreatePlanMeta((O,w)=>N.createNewConversationPlanMeta(O,w).then(z=>z?{filePath:z.filePath}:void 0));let Pe=async O=>{try{return O&&(await d.checkSession().catch(()=>{}),await u.refresh()),(await u.listModelMetadata({visibleOnly:!0,enabledOnly:!0})).map(z=>({id:z.id,displayName:z.displayName||z.id}))}catch{return[]}},de=async O=>{await a?.$prepareGatewayAuth(O)},H=async(O,w=!1)=>{let z=await Pe(w);return p=O,a?.setModelProvider(f),c=z,c.length===0&&(l="-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B"),!0};(await d.checkSession().catch(()=>({ok:!1}))).ok&&await H("remote",!0).catch(()=>{});let ee=await x.getWorkspaceSelectedModel(o);if(ee&&!c.some(O=>O.id===ee)&&(ee=void 0),ee||(ee=c[0]?.id),t.initialModelId&&!c.some(O=>O.id===t.initialModelId)){let O=c.map(w=>w.id).join(", ");throw new Error(`[panda-cli] Unknown model '${t.initialModelId}'. Available models: ${O}`)}let ue=t.initialModelId,Q=O=>O?c.find(z=>z.id===O)?.displayName??O:l;function We(){if(E)return;let O=N.createConversation();E=O,N.setConversationInteractionMode(O.conversationId,me),_.loadCheckpoints(O.conversationId)}t.eagerMaterializeConversation&&We();let Qt=O=>{if(O){if(!E){me=O;return}N.setConversationInteractionMode(E.conversationId,O),O==="team"&&K(E.conversationId)}};if(t.initialPackId){let O=v.getPackRegistry();if(!O?.isPackMode(t.initialPackId)){let w=(O?.listPacks()??[]).map(z=>z.name).join(", ");throw new Error(`[panda-cli] Unknown pack '${t.initialPackId}'. Available packs: ${w||"(none)"}`)}Qt(t.initialPackId)}else Qt(t.initialMode);let Xt=(O,w,z)=>{We();let D=w??ee??ue;D&&!c.some(Se=>Se.id===D)&&(D=c[0]?.id,ee=D,x.setWorkspaceSelectedModel(o,D));let pe=++V;(async()=>{let Se=O;Array.isArray(Se)&&(Se=await U5(Se,Te,{sessionId:E?.conversationId})),pe===V&&(D&&await de(D),E.submitUserMessage(Se,D,z))})().catch(Se=>{console.error("[panda-cli] submit expand failed",Se)})},ln=O=>{if(O.targetWorkspaceId!==o){process.env.PANDA_CRON_DEBUG==="1"&&console.log(`[panda-cli:cron] submitCronFire skip \u2014 payload.targetWorkspaceId=${O.targetWorkspaceId} session.workspaceId=${o}`);return}process.env.PANDA_CRON_DEBUG==="1"&&console.log(`[panda-cli:cron] submitCronFire ws=${o} taskId=${O.cronTaskId??"(none)"} title=${O.titleHint??"(none)"}`);let w={createdBy:"kairos_cron",...O.cronTaskId?{taskId:O.cronTaskId}:{}},z=N.createConversation({cronOrigin:w}),D=O.titleHint?.trim();D&&(z.title=D.slice(0,120)),E=z,N.setConversationInteractionMode(z.conversationId,me),_.loadCheckpoints(z.conversationId),Xt(O.prompt,void 0,void 0)},en=()=>{let O=E;return O?O.state.status==="running":!1},Ar=()=>{let O=v.getConfig().cron;return{enabled:O?.enabled!==!1,durableEnabled:O?.durableEnabled!==!1}},nr={submit:Xt,submitCronFire:ln,isConversationCoreBusy:en,getCronCompiledFlags:Ar};return t.embedCronScheduler!==!1&&new wh({pandaHome:n,getActiveWorkspaceId:()=>o,getSession:()=>nr,getSessionForWorkspace:w=>w===o?nr:null}).syncFromWorkspaceIds([o]),{eventBus:b,interruptCurrentTurn:async O=>{V++;let w=E;if(!w)return!0;let z=w.currentTurn;return z?(await z.cancel({reason:"user",inputEmptyAtCancel:O?.inputEmptyAtCancel,isViewingSubThread:O?.isViewingSubThread,restorePrompt:O?.restorePrompt}),!0):(w.abortInFlightConversationAction(),!0)},cancelTurn:async(O,w,z)=>{let D=N.getConversation(O);if(!D)throw new Error(`[panda-cli] Conversation not found: ${O}`);let pe=D.currentTurn;if(pe!==null&&pe.turnId===w){await pe.cancel({reason:"user",inputEmptyAtCancel:z?.inputEmptyAtCancel,isViewingSubThread:z?.isViewingSubThread,restorePrompt:z?.restorePrompt});return}D.cancelConversationActionIfTurnId(w)||D.state.status==="running"&&D.currentTurn===null&&D.abortInFlightConversationAction()},getConversationId:()=>E?.conversationId??En,getCurrentConversationMessages:()=>{let O=E;return O?O.uiMessages.map(w=>({...w})):[]},getCurrentConversationSummary:()=>{let O=E;return O?CY(O):EY()},listSessionSummaries:async()=>(await N.loadPersistedSessions(),N.getSessionSummaries().map(IY)),switchConversation:async O=>{if((E?.conversationId??En)===O)return!0;let z=N.getConversation(O);if(z)return E=z,_.loadCheckpoints(O),!0;let D=await N.restoreConversation(O);return D?(E=D,_.loadCheckpoints(O),!0):!1},submit:Xt,submitCronFire:ln,getPendingQueue:()=>E?.getPendingQueue()??[],removePendingUserMessage:O=>{E?.removePendingUserMessage(O)},sendPendingUserMessageImmediately:async O=>{E&&await E.sendPendingUserMessageImmediately(O)},answerAskQuestion:async(O,w)=>{if(!E)throw new Error("[panda-cli] No active conversation");let z=await r.getToolAsync("ask_question");if(!z)throw new Error("ask_question tool not found");let D=await z.build({tool_call_id:O,answers:w.map(Se=>({question_id:Se.questionId,selected_option_ids:Se.selectedOptionIds,freeform_text:Se.freeformText,option_notes:Se.optionNotes&&Object.keys(Se.optionNotes).length>0?Se.optionNotes:void 0}))}),pe=new AbortController;await D.execute(pe.signal)},newConversation:()=>(E=void 0,me="agent",En),forkConversation:async()=>{We();let O=E,w=O.turns;if(w.length===0){let pe=N.createConversation();return E=pe,N.setConversationInteractionMode(pe.conversationId,O.interactionMode),_.loadCheckpoints(pe.conversationId),{conversationId:pe.conversationId,title:pe.title??""}}let z=w[w.length-1],D=N.createConversationFromSlice(O,z.turnId);if(O.planMeta&&$)try{let pe=await $.copyPlanForFork(O.planMeta,D.title??void 0);N.setConversationPlanMeta(D.conversationId,pe)}catch{}return E=D,_.loadCheckpoints(D.conversationId),{conversationId:D.conversationId,title:D.title??""}},modelLabel:l,listModelOptions:()=>c.slice(),getSelectedModelId:()=>ee,getModelSource:()=>p,setSelectedModelId:async O=>{ee=O,await x.setWorkspaceSelectedModel(o,O)},refreshModelOptions:async()=>{let O=JSON.stringify(c);c=await Pe(p==="remote"),ee&&!c.some(D=>D.id===ee)&&(ee=c[0]?.id,await x.setWorkspaceSelectedModel(o,ee));let z=O!==JSON.stringify(c);return{options:c.slice(),selectedModelId:ee,changed:z}},getModelLabelById:Q,checkAuthSession:async()=>d.checkSession(),isLoggedIn:async()=>(await d.checkSession()).ok,sendRegisterVerificationCode:async O=>d.sendRegisterVerificationCode(O),register:async(O,w,z,D,pe)=>d.register(O,w,z,D,pe),login:async(O,w)=>{let z=await d.login(O,w);return await H("remote",!0).catch(()=>{}),ee&&!c.some(D=>D.id===ee)&&(ee=c[0]?.id,await x.setWorkspaceSelectedModel(o,ee)),z},logout:async()=>{await d.logout(),await H("file"),ee&&!c.some(O=>O.id===ee)&&(ee=c[0]?.id,await x.setWorkspaceSelectedModel(o,ee))},getCurrentUser:async()=>d.getCurrentUser(),getInteractionMode:()=>E?.interactionMode??me,setInteractionMode:O=>{if(!E){me=O;return}N.setConversationInteractionMode(E.conversationId,O),O==="team"&&K(E.conversationId)},getCurrentConversationTurnCount:()=>E?.turns.length??0,isCurrentConversationEphemeral:()=>E?.isEphemeral??!1,runRegisteredActionImmediate:async(O,w,z,D)=>{if(!E)throw new Error("[panda-cli] No active conversation");return N.runRegisteredActionImmediate(E.conversationId,O,w,z,D)},enqueueConversationAction:(O,w)=>{We();let z=E;if(!z)throw new Error("[panda-cli] No active conversation");N.enqueueConversationAction(z.conversationId,O,w)},isConversationCoreBusy:en,getCronCompiledFlags:Ar,getMcpStatus:async()=>i.runtime?i.runtime.status():{},setMcpServerEnabled:async(O,w)=>{i.runtime&&await i.runtime.setServerEnabled(O,w)},getTodoStore:()=>({getItems:async()=>{let O=await S.getString(wt.DrawerTodo);if(!O)return[];try{let w=JSON.parse(O);return Array.isArray(w)?w.filter(z=>z&&typeof z.prompt=="string").map(z=>({prompt:z.prompt})):[]}catch{return[]}},addItem:async O=>{let w=await S.getString(wt.DrawerTodo),z=[];try{z=w?JSON.parse(w):[]}catch{z=[]}Array.isArray(z)||(z=[]),z.push({prompt:O}),await S.setString(wt.DrawerTodo,JSON.stringify(z))},removeItem:async O=>{let w=await S.getString(wt.DrawerTodo);if(w)try{let z=JSON.parse(w);if(!Array.isArray(z)||O<0||O>=z.length)return;z.splice(O,1),await S.setString(wt.DrawerTodo,JSON.stringify(z))}catch{}}}),getMcpDetails:async()=>{if(i.runtime){let O=await i.runtime.listTools(),w=await i.runtime.status(),{loadCliMcpConfig:z}=await Promise.resolve().then(()=>(my(),Tk)),D=await z(t.workspacePath),pe=[];for(let[Se,st]of Object.entries(w)){let ye=D[Se]??{type:"stdio",command:"unknown"},Re=Object.values(O).filter(Ae=>Ae.serverName===Se);pe.push({name:Se,config:ye,status:st,tools:Re})}for(let[Se,st]of Object.entries(D))w[Se]||pe.push({name:Se,config:st,status:{status:"pending"},tools:[]});return pe.sort((Se,st)=>Se.name.localeCompare(st.name))}return[]},getCliDebugLogPath:()=>dy({userHomeBase:e,workspacePath:t.workspacePath,conversationId:E?.conversationId??En}),appendCliDebugLog:async()=>{},clearCliDebugLog:async()=>{await m7({userHomeBase:e,workspacePath:t.workspacePath,conversationId:E?.conversationId??En})},readCliDebugLog:async()=>g7({userHomeBase:e,workspacePath:t.workspacePath,conversationId:E?.conversationId??En}),checkpointLoadForConversation:async O=>{await _.loadCheckpoints(O)},checkpointRewindBeforeTurn:async O=>{let w=E;if(!w)throw new Error("[panda-cli] No active conversation for checkpoint rewind");let z=await _.rewindBeforeTurn(w.conversationId,O);return{restoredFiles:z.restoredFiles.map(D=>D.toString()),targetTurnId:z.targetTurnId}},checkpointRewindToBaseline:async()=>{let O=E;if(!O)throw new Error("[panda-cli] No active conversation for checkpoint rewind");let w=await _.rewindToBaseline(O.conversationId);return{restoredFiles:w.restoredFiles.map(z=>z.toString()),targetTurnId:w.targetTurnId}}}}function RY(t){return{response:t.response,stats:{conversationId:t.conversationId,model:t.model,durationMs:t.durationMs,tools:{totalCalls:t.toolCalls,totalSuccess:t.toolSuccess,totalFail:t.toolFail}}}}function AY(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>e?.type==="text"?String(e.text??""):"").join(""):""}function MY(){return new Promise((t,e)=>{let n="";process.stdin.setEncoding?.("utf8"),process.stdin.on("data",o=>{n+=o}),process.stdin.on("end",()=>t(n)),process.stdin.on("error",e)})}async function DY(t){if(t.positionalPrompt&&t.positionalPrompt.trim())return t.positionalPrompt.trim();let e="";return process.stdin?.isTTY||(e=(await MY()).trim()),OY({positionalPrompt:t.positionalPrompt,stdinPrompt:e,flagPrompt:t.initialPrompt})}function OY(t){if(t.positionalPrompt&&t.positionalPrompt.trim())return t.positionalPrompt.trim();if(t.stdinPrompt&&t.stdinPrompt.trim())return t.stdinPrompt.trim();if(t.flagPrompt&&t.flagPrompt.trim())return t.flagPrompt.trim();throw new Error('[panda-cli] Input is required in --print mode. Provide a positional prompt, pipe stdin, or pass --prompt "<text>".')}function LY(t){if(typeof t=="string")return t;if(t&&typeof t=="object"){let e=t.llmContent;if(typeof e=="string")return e}try{return JSON.stringify(t,null,2)}catch{return String(t)}}function oo(t){process.stdout.write(`${JSON.stringify(t)}
1996
+ `)}function L7(){let t=new Map;return{recordFirstChunk(e,n){e&&t.set(e,n)},shouldSkipDuplicate(e,n){if(!e)return!1;let o=t.get(e);return o===void 0?!1:(t.delete(e),n===o)}}}function NY(t,e){return new Promise((n,o)=>{let r=Date.now(),i=t.on(P.TURN_COMPLETED,a=>{a.conversationId===e&&(i(),s(),n({durationMs:typeof a.duration=="number"?a.duration:Date.now()-r}))}),s=t.on(P.TURN_FAILED,a=>{a.conversationId===e&&(i(),s(),o(a.error instanceof Error?a.error:new Error(String(a.error))))})})}async function N7(t){t.outputFormat==="stream-json"&&sE();let e=await DY(t),n=await yy({...t,eagerMaterializeConversation:!0}),o=n.getConversationId(),r=t.initialModelId??n.getSelectedModelId(),i=n.getModelLabelById(r),s=Date.now(),a=0,l=0,c=0,u=[];if(t.outputFormat==="stream-json"){let d=L7(),p=L7();oo({type:"init",timestamp:new Date().toISOString(),conversation_id:o,model:i}),oo({type:"message",timestamp:new Date().toISOString(),role:"user",content:e}),u.push(n.eventBus.on(P.TOOL_CALL_REQUESTED,f=>{f.conversationId===o&&oo({type:"tool_use",timestamp:new Date().toISOString(),tool_name:String(f.toolName??"tool"),tool_id:String(f.toolCallId??""),parameters:f.args??{}})}),n.eventBus.on(P.TOOL_CALL_EXECUTED,f=>{f.conversationId===o&&oo({type:"tool_result",timestamp:new Date().toISOString(),tool_id:String(f.toolCallId??""),status:"success",output:LY(f.result??f)})}),n.eventBus.on(P.TOOL_CALL_FAILED,f=>{if(f.conversationId!==o)return;let m=f.error instanceof Error?f.error.message:String(f.error?.message??f.error);oo({type:"tool_result",timestamp:new Date().toISOString(),tool_id:String(f.toolCallId??""),status:"error",error:m})}),n.eventBus.on(P.ASSISTANT_MESSAGE_STARTED,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"";d.recordFirstChunk(g,m),oo({type:"message",timestamp:new Date().toISOString(),role:"assistant",content:m,delta:!0})}),n.eventBus.on(P.THINKING_STARTED,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"",h=typeof f.workId=="string"?f.workId:void 0,y=f.isSubAgentWork===!0;p.recordFirstChunk(g,m),oo({type:"thinking",timestamp:new Date().toISOString(),content:m,delta:!0,message_id:g||void 0,work_id:h,is_sub_agent_work:y})}),n.eventBus.subscribeStreaming(P.MESSAGE_STREAMING,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"";d.shouldSkipDuplicate(g,m)||oo({type:"message",timestamp:new Date().toISOString(),role:"assistant",content:m,delta:!0})}),n.eventBus.subscribeStreaming(P.THINKING_STREAMING,f=>{if(f.conversationId!==o)return;let m=typeof f.chunk=="string"?f.chunk:"";if(!m)return;let g=typeof f.messageId=="string"?f.messageId:"",h=typeof f.workId=="string"?f.workId:void 0,y=f.isSubAgentWork===!0;p.shouldSkipDuplicate(g,m)||oo({type:"thinking",timestamp:new Date().toISOString(),content:m,delta:!0,message_id:g||void 0,work_id:h,is_sub_agent_work:y})}))}u.push(n.eventBus.on(P.TOOL_CALL_EXECUTED,d=>{d.conversationId===o&&(a+=1,l+=1)}),n.eventBus.on(P.TOOL_CALL_FAILED,d=>{d.conversationId===o&&(a+=1,c+=1)}));try{n.submit(e,r);let d=await NY(n.eventBus,o),f=[...n.getCurrentConversationMessages()].reverse().find(y=>y.role==="assistant"),m=f?AY(f.content):"",g=d.durationMs||Date.now()-s,h={response:m,conversationId:o,model:i,durationMs:g,toolCalls:a,toolSuccess:l,toolFail:c};if(t.outputFormat==="json"){process.stdout.write(`${JSON.stringify(RY(h))}
1997
1997
  `);return}if(t.outputFormat==="stream-json"){oo({type:"result",timestamp:new Date().toISOString(),status:"success",duration_ms:h.durationMs,tool_calls:h.toolCalls});return}process.stdout.write(h.response.endsWith(`
1998
1998
  `)?h.response:`${h.response}
1999
- `)}finally{for(let d of u)d()}}vy();import{spawn as FY}from"node:child_process";import{createRequire as $Y}from"node:module";function U7(){try{let e=$Y(import.meta.url)("../package.json");return(typeof e?.version=="string"?e.version.trim():"")||"unknown"}catch{return"unknown"}}var js="@panda-agent/panda-cli",xy=process.platform==="win32"?"npm.cmd":"npm",UY=8e3,BY=5*6e4,by=null,Mk=null;function No(t,e){t.onInfo?.(e)}function Dk(t,e){t.onError?.(e)}function B7(t,e,n={}){return new Promise(o=>{let r="",i="",s=!1,a=null,l;try{l=FY(t,e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32",env:process.env})}catch(d){o({exitCode:1,stdout:"",stderr:String(d instanceof Error?d.message:d),timedOut:!1});return}let c=d=>{s||(s=!0,a&&(clearTimeout(a),a=null),o(d))};l.stdout?.on("data",d=>{r+=String(d)}),l.stderr?.on("data",d=>{i+=String(d)}),l.on("error",d=>{c({exitCode:1,stdout:r,stderr:`${i}
1999
+ `)}finally{for(let d of u)d()}}vy();import{spawn as BY}from"node:child_process";import{createRequire as UY}from"node:module";function U7(){try{let e=UY(import.meta.url)("../package.json");return(typeof e?.version=="string"?e.version.trim():"")||"unknown"}catch{return"unknown"}}var js="@panda-agent/panda-cli",xy=process.platform==="win32"?"npm.cmd":"npm",jY=8e3,zY=5*6e4,by=null,Mk=null;function No(t,e){t.onInfo?.(e)}function Dk(t,e){t.onError?.(e)}function B7(t,e,n={}){return new Promise(o=>{let r="",i="",s=!1,a=null,l;try{l=BY(t,e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32",env:process.env})}catch(d){o({exitCode:1,stdout:"",stderr:String(d instanceof Error?d.message:d),timedOut:!1});return}let c=d=>{s||(s=!0,a&&(clearTimeout(a),a=null),o(d))};l.stdout?.on("data",d=>{r+=String(d)}),l.stderr?.on("data",d=>{i+=String(d)}),l.on("error",d=>{c({exitCode:1,stdout:r,stderr:`${i}
2000
2000
  ${String(d)}`.trim(),timedOut:!1})}),l.on("close",d=>{c({exitCode:typeof d=="number"?d:1,stdout:r,stderr:i,timedOut:!1})});let u=n.timeoutMs??0;u>0&&(a=setTimeout(()=>{try{l.kill("SIGTERM")}catch{}c({exitCode:124,stdout:r,stderr:`${i}
2001
- \u547D\u4EE4\u8D85\u65F6\uFF08${u}ms \u5DF2\u7EC8\u6B62\uFF09`.trim(),timedOut:!0})},u),a.unref?.())})}async function jY(){let t=await B7(xy,["view",`${js}@latest`,"version"],{timeoutMs:UY});return t.exitCode!==0?null:t.stdout.trim()||null}function zY(){return!!process.stdin?.isTTY}function WY(t){return new Promise(e=>{process.stdout.write(t),process.stdin.resume(),process.stdin.once("data",n=>{let o=String(n).trim().toLowerCase();e(o==="y"||o==="yes")})})}function KY(t,e){let n=`${t.stderr}
2001
+ \u547D\u4EE4\u8D85\u65F6\uFF08${u}ms \u5DF2\u7EC8\u6B62\uFF09`.trim(),timedOut:!0})},u),a.unref?.())})}async function WY(){let t=await B7(xy,["view",`${js}@latest`,"version"],{timeoutMs:jY});return t.exitCode!==0?null:t.stdout.trim()||null}function KY(){return!!process.stdin?.isTTY}function HY(t){return new Promise(e=>{process.stdout.write(t),process.stdin.resume(),process.stdin.once("data",n=>{let o=String(n).trim().toLowerCase();e(o==="y"||o==="yes")})})}function VY(t,e){let n=`${t.stderr}
2002
2002
  ${t.stdout}`,o=t.stderr.trim()||t.stdout.trim()||"\u672A\u77E5\u9519\u8BEF",r=`${xy} install -g ${js}@${e}`;return t.timedOut?`\u5347\u7EA7\u8D85\u65F6\uFF1A\u7F51\u7EDC\u6216\u5168\u5C40\u5B89\u88C5\u76EE\u5F55\u65E0\u54CD\u5E94\u3002\u5EFA\u8BAE\uFF1A\u68C0\u67E5 npm registry \u914D\u7F6E\u540E\u91CD\u8BD5 \`${r}\`\u3002`:/EACCES|permission denied|operation not permitted/i.test(n)?["\u5347\u7EA7\u5931\u8D25\uFF1A\u5F53\u524D\u7528\u6237\u5BF9 npm \u5168\u5C40\u76EE\u5F55\u65E0\u5199\u6743\u9650\u3002",`\u5EFA\u8BAE\uFF1A\u4F7F\u7528\u5177\u5907\u6743\u9650\u7684\u8D26\u53F7\u6267\u884C \`sudo ${r}\`\uFF0C\u6216\u5C06 \`npm prefix\` \u6539\u5230\u7528\u6237\u76EE\u5F55\u540E\u91CD\u8BD5\u3002`].join(`
2003
2003
  `):/ENOTFOUND|ETIMEDOUT|ECONNREFUSED|getaddrinfo|network|tunneling socket/i.test(n)?["\u5347\u7EA7\u5931\u8D25\uFF1A\u65E0\u6CD5\u8BBF\u95EE npm registry\uFF08\u7F51\u7EDC\u6216\u4EE3\u7406\u5F02\u5E38\uFF09\u3002","\u5EFA\u8BAE\uFF1A\u68C0\u67E5 `npm config get registry` \u4E0E\u4EE3\u7406\u8BBE\u7F6E\u540E\u91CD\u8BD5\u3002"].join(`
2004
2004
  `):/E404|404 Not Found|not found in this registry/i.test(n)?[`\u5347\u7EA7\u5931\u8D25\uFF1Aregistry \u672A\u63D0\u4F9B ${js} \u7684\u6307\u5B9A\u7248\u672C\u3002`,"\u5EFA\u8BAE\uFF1A\u786E\u8BA4\u5F53\u524D `npm config get registry` \u6307\u5411\u6B63\u786E\u7684 registry\u3002"].join(`
2005
2005
  `):/EEXIST|EBUSY|EPERM|lockfile|cb\(\) never called|Cannot find module/i.test(n)?["\u5347\u7EA7\u5931\u8D25\uFF1A\u5168\u5C40\u5B89\u88C5\u76EE\u5F55\u88AB\u5360\u7528\u6216\u6587\u4EF6\u51B2\u7A81\u3002",`\u5EFA\u8BAE\uFF1A\u5C1D\u8BD5 \`npm uninstall -g ${js}\` \u540E\u518D\u6267\u884C \`${r}\`\u3002`].join(`
2006
2006
  `):`\u5347\u7EA7\u5931\u8D25\uFF1A${o}`}function Ty(t=e=>console.log(e)){t(["update \u7528\u6CD5\uFF1A"," panda update [--check|-c] [--yes|-y]","","\u9009\u9879\uFF1A"," --check, -c \u4EC5\u68C0\u67E5\u65B0\u7248\u672C\uFF0C\u4E0D\u6267\u884C\u5347\u7EA7"," --yes, -y \u8DF3\u8FC7\u786E\u8BA4\uFF0C\u76F4\u63A5\u6267\u884C\u5347\u7EA7"].join(`
2007
- `))}async function HY(t){let e=U7();No(t,`
2008
- \u5F53\u524D\u7248\u672C\uFF1A${e}`);let n=await jY();if(!n)return Dk(t,`
2009
- \u68C0\u67E5\u66F4\u65B0\u5931\u8D25\uFF1A\u65E0\u6CD5\u83B7\u53D6 npm \u6700\u65B0\u7248\u672C\u4FE1\u606F\u3002`),1;if(No(t,`\u6700\u65B0\u7248\u672C\uFF1A${n}`),n===e)return No(t,"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF0C\u65E0\u9700\u5347\u7EA7\u3002"),0;if(Mk&&Mk===n)return No(t,`\u5DF2\u5347\u7EA7\u5230 ${n}\uFF0C\u8BF7\u9000\u51FA\u5E76\u91CD\u65B0\u6253\u5F00 panda \u540E\u751F\u6548\u3002`),0;if(No(t,`\u68C0\u6D4B\u5230\u65B0\u7248\u672C\uFF1A${e} -> ${n}`),t.checkOnly)return 0;let o=!!t.skipConfirm;if(!o){if(!zY())return Dk(t,"\u5F53\u524D\u975E\u4EA4\u4E92\u7EC8\u7AEF\uFF0C\u8BF7\u4F7F\u7528 `--yes` \u81EA\u52A8\u786E\u8BA4\u5347\u7EA7\u3002"),1;o=await WY(`\u786E\u8BA4\u5347\u7EA7\u5230 ${n} ? [y/N] `)}if(!o)return No(t,"\u5DF2\u53D6\u6D88\u5347\u7EA7\u3002"),0;No(t,`\u5F00\u59CB\u6267\u884C\uFF1A${xy} install -g ${js}@${n}`);let r=await B7(xy,["install","-g",`${js}@${n}`],{timeoutMs:BY});return r.exitCode!==0?(Dk(t,KY(r,n)),1):(Mk=n,No(t,`\u5347\u7EA7\u5B8C\u6210\uFF1A${js}@${n}\u3002\u8BF7\u9000\u51FA\u5E76\u91CD\u65B0\u6253\u5F00 panda \u540E\u751F\u6548\u3002`),0)}async function wy(t={}){return by?(No(t,"\u5347\u7EA7\u6B63\u5728\u8FDB\u884C\u4E2D\uFF0C\u8BF7\u7B49\u5F85\u5F53\u524D\u5347\u7EA7\u5B8C\u6210\u540E\u518D\u8BD5\u3002"),0):(by=(async()=>{try{return await HY(t)}finally{by=null}})(),by)}function Ok(t,...e){return e.some(n=>t.includes(n))}async function j7(t){return Ok(t,"--help","-h")?(Ty(),0):wy({checkOnly:Ok(t,"--check","-c"),skipConfirm:Ok(t,"--yes","-y"),onInfo:e=>console.log(e),onError:e=>console.error(e)})}import UF from"react";import{clearTerminal as pse,createRoot as fse}from"panda-ink";import nN,{useCallback as Sy,useEffect as dQ,useMemo as pQ,useRef as ky,useState as fQ}from"react";import QY,{createContext as XY,useContext as eQ,useLayoutEffect as tQ,useMemo as nQ}from"react";function z7(t,e){return e.escape?"escape":e.return?"enter":e.tab?"tab":e.backspace?"backspace":e.delete?"delete":e.upArrow?"up":e.downArrow?"down":e.leftArrow?"left":e.rightArrow?"right":e.pageUp?"pageup":e.pageDown?"pagedown":e.wheelUp?"wheelup":e.wheelDown?"wheeldown":e.home?"home":e.end?"end":t.length===1?t.toLowerCase():null}function W7(t){let e=t.split("+"),n={key:"",ctrl:!1,alt:!1,shift:!1,meta:!1,super:!1};for(let o of e){let r=o.toLowerCase();switch(r){case"ctrl":case"control":n.ctrl=!0;break;case"alt":case"opt":case"option":n.alt=!0;break;case"shift":n.shift=!0;break;case"meta":n.meta=!0;break;case"cmd":case"command":case"super":case"win":n.super=!0;break;case"esc":n.key="escape";break;case"return":n.key="enter";break;case"space":n.key=" ";break;case"\u2191":n.key="up";break;case"\u2193":n.key="down";break;case"\u2190":n.key="left";break;case"\u2192":n.key="right";break;default:n.key=r;break}}return n}function VY(t){return t===" "?[W7("space")]:t.trim().split(/\s+/).map(W7)}function K7(t){switch(t){case"escape":return"Esc";case" ":return"Space";case"tab":return"tab";case"enter":return"Enter";case"backspace":return"Backspace";case"delete":return"Delete";case"up":return"\u2191";case"down":return"\u2193";case"left":return"\u2190";case"right":return"\u2192";case"pageup":return"PageUp";case"pagedown":return"PageDown";case"home":return"Home";case"end":return"End";default:return t}}function qY(t){let e=[];return t.ctrl&&e.push("ctrl"),t.alt&&e.push("alt"),t.shift&&e.push("shift"),t.meta&&e.push("meta"),t.super&&e.push("cmd"),e.push(K7(t.key)),e.join("+")}function H7(t){return t.map(qY).join(" ")}function GY(t,e="linux"){let n=[];return t.ctrl&&n.push("ctrl"),(t.alt||t.meta)&&n.push(e==="macos"?"opt":"alt"),t.shift&&n.push("shift"),t.super&&n.push(e==="macos"?"cmd":"super"),n.push(K7(t.key)),n.join("+")}function V7(t,e="linux"){return t.map(n=>GY(n,e)).join(" ")}function Lk(t){let e=[];for(let n of t)for(let[o,r]of Object.entries(n.bindings))e.push({chord:VY(o),action:r,context:n.context});return e}function q7(t,e,n){let o=n.findLast(i=>i.action===t&&i.context===e);if(!o)return;let r=process.platform==="darwin"?"macos":"linux";return V7(o.chord,r)}function ZY(t,e){let n=z7(t,e);if(!n)return null;let o=e.escape?!1:e.meta;return{key:n,ctrl:e.ctrl,alt:o,shift:e.shift,meta:o,super:e.super}}function G7(t,e){return t.key===e.key&&t.ctrl===e.ctrl&&t.shift===e.shift&&(t.alt||t.meta)===(e.alt||e.meta)&&t.super===e.super}function JY(t,e){if(t.length>=e.chord.length)return!1;for(let n=0;n<t.length;n++){let o=t[n],r=e.chord[n];if(!o||!r||!G7(o,r))return!1}return!0}function YY(t,e){if(t.length!==e.chord.length)return!1;for(let n=0;n<t.length;n++){let o=t[n],r=e.chord[n];if(!o||!r||!G7(o,r))return!1}return!0}function _y(t,e,n,o,r){if(e.escape&&r!==null)return{type:"chord_cancelled"};let i=ZY(t,e);if(!i)return r!==null?{type:"chord_cancelled"}:{type:"none"};let s=r?[...r,i]:[i],a=new Set(n),l=o.filter(p=>a.has(p.context)),c=new Map;for(let p of l)p.chord.length>s.length&&JY(s,p)&&c.set(H7(p.chord),p.action);let u=!1;for(let p of c.values())if(p!==null){u=!0;break}if(u)return{type:"chord_started",pending:s};let d;for(let p of l)YY(s,p)&&(d=p);return d?d.action===null?{type:"unbound"}:{type:"match",action:d.action}:r!==null?{type:"chord_cancelled"}:{type:"none"}}var Z7=XY(null);function J7({bindings:t,pendingChordRef:e,pendingChord:n,setPendingChord:o,activeContexts:r,registerActiveContext:i,unregisterActiveContext:s,handlerRegistryRef:a,children:l}){let c=nQ(()=>({resolve:(m,g,h)=>_y(m,g,h,t,e.current),setPendingChord:o,getDisplayText:(m,g)=>q7(m,g,t),bindings:t,pendingChord:n,activeContexts:r,registerActiveContext:i,unregisterActiveContext:s,registerHandler:m=>{let g=a.current;return g?(g.has(m.action)||g.set(m.action,new Set),g.get(m.action).add(m),()=>{let h=g.get(m.action);h&&(h.delete(m),h.size===0&&g.delete(m.action))}):()=>{}},invokeAction:m=>{let g=a.current;if(!g)return!1;let h=g.get(m);if(!h||h.size===0)return!1;for(let y of h)if(r.has(y.context))return y.handler(),!0;return!1}}),[t,e,n,o,r,i,s,a]);return QY.createElement(Z7.Provider,{value:c},l)}function zs(){return eQ(Z7)}function gd(t,e=!0){let n=zs();tQ(()=>{if(!(!n||!e))return n.registerActiveContext(t),()=>{n.unregisterActiveContext(t)}},[t,n,e])}import{useCallback as rQ}from"react";import{useInput as oQ}from"panda-ink";var Y7=1e3;function Q7({bindings:t,pendingChordRef:e,setPendingChord:n,activeContexts:o,handlerRegistryRef:r}){let i=rQ((s,a,l)=>{if((a.wheelUp||a.wheelDown)&&e.current===null)return;let c=r.current,u=new Set;if(c)for(let m of c.values())for(let g of m)u.add(g.context);let d=[...u,...o,"Global"],p=e.current!==null,f=_y(s,a,d,t,e.current);switch(f.type){case"chord_started":n(f.pending),l.stopImmediatePropagation();break;case"match":{if(n(null),p){let m=new Set(d);if(c){let g=c.get(f.action);if(g&&g.size>0){for(let h of g)if(m.has(h.context)){h.handler(),l.stopImmediatePropagation();break}}}}break}case"chord_cancelled":n(null),l.stopImmediatePropagation();break;case"unbound":n(null),l.stopImmediatePropagation();break;case"none":break}},[t,e,n,o,r]);return oQ(i),null}import{existsSync as sQ,readFileSync as aQ}from"node:fs";import{homedir as lQ}from"node:os";import{join as cQ}from"node:path";var X7=[{context:"Global",bindings:{"ctrl+c":"app:interrupt","ctrl+d":"app:exit","ctrl+o":"app:toggleTranscript"}},{context:"Autocomplete",bindings:{tab:"autocomplete:accept",escape:"autocomplete:dismiss",up:"autocomplete:previous",down:"autocomplete:next"}},{context:"Chat",bindings:{"ctrl+shift+m":"chat:toggleOperationMode","shift+tab":"chat:toggleOperationMode","ctrl+g":"chat:openTeamRolesPicker",...process.platform==="win32"?{"alt+v":"chat:imagePaste"}:{"ctrl+v":"chat:imagePaste"},"ctrl+shift+y":"chat:toggleVimMode"}},{context:"Transcript",bindings:{"ctrl+e":"transcript:toggleShowAll","ctrl+c":"transcript:exit",escape:"transcript:exit",q:"transcript:exit"}}];var iQ=new Set(["app:interrupt","app:exit"]);function eN(t){return t?iQ.has(t):!1}function uQ(){let t=cQ(lQ(),".panda","keybindings.json");if(!sQ(t))return{blocks:[]};try{let e=JSON.parse(aQ(t,"utf8"));return Array.isArray(e)?{blocks:e}:{blocks:[],error:`${t}: root must be a JSON array`}}catch(e){let n=e instanceof Error?e.message:String(e);return{blocks:[],error:`${t}: ${n}`}}}function tN(){let t=[],e=Lk(X7),{blocks:n,error:o}=uQ();o&&t.push(o);let r=[];for(let s of Lk(n)){if(s.context==="Global"&&eN(s.action)){t.push(`Ignored user override for reserved action: ${s.action}`);continue}r.push(s)}return{bindings:[...e,...r],warnings:t}}function rN({children:t}){let{bindings:e,warnings:n}=pQ(()=>tN(),[]);dQ(()=>{for(let f of n)console.error("[panda keybindings]",f)},[n]);let o=ky(null),[r,i]=fQ(null),s=ky(null),a=ky(new Map),l=ky(new Set),c=Sy(()=>{s.current&&(clearTimeout(s.current),s.current=null)},[]),u=Sy(f=>{c(),f!==null&&(s.current=setTimeout(()=>{o.current=null,i(null),s.current=null},Y7)),o.current=f,i(f)},[c]),d=Sy(f=>{l.current.add(f)},[]),p=Sy(f=>{l.current.delete(f)},[]);return nN.createElement(J7,{bindings:e,pendingChordRef:o,pendingChord:r,setPendingChord:u,activeContexts:l.current,registerActiveContext:d,unregisterActiveContext:p,handlerRegistryRef:a},nN.createElement(Q7,{bindings:e,pendingChordRef:o,setPendingChord:u,activeContexts:l.current,handlerRegistryRef:a}),t)}import{openSync as mQ}from"node:fs";import{ReadStream as gQ}from"node:tty";function hQ(t){if(!t)return!1;if(typeof t=="boolean")return t;let e=t.toLowerCase().trim();return["1","true","yes","on"].includes(e)}var $o=null;function yQ(){if($o!==null)return $o;if(process.stdin.isTTY){$o=void 0;return}if(hQ(process.env.CI)){$o=void 0;return}if(process.argv.includes("mcp")){$o=void 0;return}if(process.platform==="win32"){$o=void 0;return}try{let t=mQ("/dev/tty","r"),e=new gQ(t);return e.isTTY=!0,$o=e,$o}catch(t){console.error("[panda-cli] /dev/tty open failed",t),$o=void 0;return}}function vQ(t){if(typeof t=="boolean")return t;if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function bQ(t){let e=t.cliMode&&t.cliMode!=="auto"?t.cliMode:void 0;if(e)return{mode:e,source:"cli"};let n=(t.envMode??"").trim().toLowerCase();return n==="incremental"||n==="safe"||n==="full"?{mode:n,source:"env"}:t.platform==="win32"?{mode:t.env.WT_SESSION?"incremental":"safe",source:"auto"}:{mode:"incremental",source:"auto"}}function oN(t,e=!1){let n=yQ(),o=bQ({platform:process.platform,env:process.env,cliMode:t?.renderMode,envMode:process.env.PANDA_RENDER_MODE}),r={exitOnCtrlC:e};return r.renderMode=o.mode,vQ(process.env.PANDA_RENDER_DEBUG)&&process.stderr?.write?.(`[panda-render] mode=${o.mode} source=${o.source} platform=${process.platform} wtSession=${process.env.WT_SESSION?"1":"0"}
2010
- `),n&&(r.stdin=n),{options:r,stdin:n??process.stdin,ownership:n?"dev-tty":"process"}}var iN=new WeakMap;function xQ(t){if(!t||typeof t!="object")return;let e=t.code;return typeof e=="string"?e:void 0}function TQ(t){let e=xQ(t);return e?e==="EIO"||e==="EBADF"||e==="ENOTCONN":!1}function sN(t){if(iN.has(t))return;let e=n=>{if(!TQ(n))try{let o=n instanceof Error?n.stack??n.message:`non-error rejection: ${String(n)}`;process.stderr?.write?.(`[panda-cli] stdin error: ${o}
2011
- `)}catch{}};iN.set(t,e),t.on("error",e)}function aN(t,e){try{t.pause()}catch{}if(e==="dev-tty")try{t.destroy()}catch{}}import{jsx as e1}from"react/jsx-runtime";import{useCallback as Jt,useEffect as ho,useLayoutEffect as Vie,useMemo as Rr,useReducer as qie,useRef as Yt,useState as he}from"react";import DF from"chalk";import{spawnSync as Gie}from"node:child_process";import{KeyboardEvent as Zie,useInput as Jie}from"panda-ink";import{useCallback as wQ,useEffect as _Q}from"react";import{useInput as SQ}from"panda-ink";function hd(t,e={}){let{context:n="Global",isActive:o=!0}=e,r=zs();_Q(()=>{if(!r||!o)return;let s=[];for(let[a,l]of Object.entries(t))s.push(r.registerHandler({action:a,context:n,handler:l}));return()=>{for(let a of s)a()}},[n,t,r,o]);let i=wQ((s,a,l)=>{if(!r)return;let c=[...r.activeContexts,n,"Global"],u=[...new Set(c)],d=r.resolve(s,a,u);switch(d.type){case"match":if(r.setPendingChord(null),d.action in t){let p=t[d.action];p&&p()!==!1&&l.stopImmediatePropagation()}break;case"chord_started":r.setPendingChord(d.pending),l.stopImmediatePropagation();break;case"chord_cancelled":r.setPendingChord(null);break;case"unbound":r.setPendingChord(null),l.stopImmediatePropagation();break;case"none":break}},[n,t,r]);SQ(i,{isActive:o})}import{useCallback as dN,useMemo as pN,useState as IQ}from"react";import{useApp as CQ}from"panda-ink";import{useCallback as lN,useEffect as kQ,useRef as cN}from"react";var uN=800;function yd(t,e,n){let o=cN(0),r=cN(void 0),i=lN(()=>{r.current&&(clearTimeout(r.current),r.current=void 0)},[]);return kQ(()=>()=>{i()},[i]),lN(()=>{let s=Date.now();s-o.current<=uN&&r.current!==void 0?(i(),t(!1),e()):(n?.(),t(!0),i(),r.current=setTimeout(()=>{t(!1),r.current=void 0},uN)),o.current=s},[t,e,n,i])}function fN(t,e,n,o=!0){let{exit:r}=CQ(),[i,s]=IQ({pending:!1,keyName:null}),a=pN(()=>n??r,[n,r]),l=yd(f=>s({pending:f,keyName:"Ctrl-C"}),a),c=yd(f=>s({pending:f,keyName:"Ctrl-D"}),a),u=dN(()=>{e?.()||l()},[l,e]),d=dN(()=>{c()},[c]),p=pN(()=>({"app:interrupt":u,"app:exit":d}),[u,d]);return t(p,{context:"Global",isActive:o}),i}import{useEffect as EQ,useState as PQ}from"react";function Iy(t,e){let n=Number(t);return!Number.isFinite(n)||n<1?e:Math.min(4096,Math.floor(n))}function Fo(){let[t,e]=PQ({columns:Iy(process.stdout?.columns,80),rows:Iy(process.stdout?.rows,24)});return EQ(()=>{function n(){e({columns:Iy(process.stdout?.columns,80),rows:Iy(process.stdout?.rows,24)})}let o=process.stdout;if(o?.on)return o.on("resize",n),process.on?.("SIGWINCH",n),()=>{o.off?.("resize",n),process.off?.("SIGWINCH",n)}},[]),t}function Nk(t){return t.conversationActionInFlight||t.streamingState!=="Idle"||t.running||t.pendingToolCalls.some(e=>e.status==="executing"||e.status==="pending"||e.status==="confirming")}function mN(t,e){return!(t===void 0||t===e||t===En&&e!==En)}import RQ from"node:path";function gN(t){return t.filter(e=>e.type!=="hunk")}function Cy(t){let e=[],n=0,o=0;for(let r of t){e.push({type:"hunk",content:`@@ -${r.oldStart},${r.oldLines} +${r.newStart},${r.newLines} @@`});for(let i of r.lines)i.startsWith("+")?(e.push({type:"added",content:i}),n++):i.startsWith("-")?(e.push({type:"removed",content:i}),o++):i.startsWith(" ")&&e.push({type:"context",content:i})}return{lines:e,added:n,removed:o}}var AQ={read_file:"\u8BFB\u53D6\u6587\u4EF6",write_file:"\u5199\u5165\u6587\u4EF6",edit_file:"\u7F16\u8F91\u6587\u4EF6",grep:"\u6587\u672C\u641C\u7D22",glob_file_search:"\u6587\u4EF6\u5339\u914D",list_files:"\u5217\u51FA\u6587\u4EF6",run_terminal_cmd:"\u6267\u884C\u547D\u4EE4",web_search:"\u7F51\u7EDC\u641C\u7D22",web_fetch:"\u7F51\u9875\u6293\u53D6",ask_question:"\u53D1\u8D77\u63D0\u95EE",delete_file:"\u5220\u9664\u6587\u4EF6",await_shell:"\u7B49\u5F85\u4EFB\u52A1",stop_shell:"\u505C\u6B62\u4EFB\u52A1",list_skills:"\u5217\u51FA\u6280\u80FD",use_skill:"\u4F7F\u7528\u6280\u80FD"};function Ey(t,e){return e?{pending:"w",confirming:"c",executing:"r",success:"o",error:"x"}[t]??t:{pending:"wait",confirming:"confirm",executing:"run",success:"ok",error:"fail"}[t]??t}function Py(t){return t?RQ.basename(t):"(unknown)"}function MQ(t,e){return Number.isFinite(t)&&Number.isFinite(e)?`[L${t}-${e}]`:Number.isFinite(t)?`[L${t}-]`:Number.isFinite(e)?`[-L${e}]`:""}function $k(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="read_file"?null:e}function Fk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="write_file"?null:e}function Uk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="edit_file"?null:e}function hN(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="grep"?null:e}function yN(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="glob_file_search"?null:e}function Bk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="list_files"?null:e}function jk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="web_search"?null:e}function zk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="web_fetch"?null:e}function Wk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="delete_file"?null:e}function Kk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="ask_question"||!Array.isArray(e.questions)?null:e}function Hk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="list_skills"?null:e}function Vk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="use_skill"?null:e}function io(t){return!t||typeof t!="object"?{}:t}function zt(t,e){let n=t[e];return typeof n=="string"&&n.trim()?n:void 0}function DQ(t,e){let n=Kk(t.displayData);if(!n)return null;let o=e?"\u63D0\u95EE":"\u53D1\u8D77\u63D0\u95EE",r=n.title?.trim()?` \xB7 ${n.title.trim()}`:"",i=t.status,s=Array.isArray(n.questions)&&n.questions.length>0;if(i==="confirming"||(i==="pending"||i==="executing")&&s)return`${o}${r} \xB7 ${e?"\u4E0B\u65B9\u5F39\u5C42\u9009\u62E9":"\u8BF7\u5728\u4E0B\u65B9\u5F39\u5C42\u4E2D\u9009\u62E9"}`;if(i==="executing"||i==="pending")return`${o}${r} \xB7 ${e?"\u2026":"\u51C6\u5907\u95EE\u5377\u2026"}`;if(i==="success"){let a=t.resultText?.trim();if(a){let l=a.split(`
2012
- `)[0].replace(/\s+/g," ").trim(),c=e?42:120,u=l.length>c?`${l.slice(0,c-1)}\u2026`:l;return`${o}${r} \xB7 ${u}`}return`${o}${r} \xB7 ${e?"\u5B8C\u6210":"\u5DF2\u5B8C\u6210"}`}if(i==="error"){let a=(t.errorText??"").trim(),l=a?a.length>(e?24:80)?`${a.slice(0,e?21:77)}\u2026`:a:"\u5931\u8D25";return`${o}${r} \xB7 ${l}`}return null}function OQ(t,e){let n=$k(t.displayData);if(!n)return"\u8BFB\u53D6\u6587\u4EF6";let o=Py(n.uri);if(n.notFound)return`\u8BFB\u53D6 [${o}] [\u672A\u53D1\u73B0]`;let r=MQ(n.startLine,n.endLine);return`\u8BFB\u53D6 [${o}]${r?` ${r}`:""}`}function LQ(t,e){let n=Fk(t.displayData),o=Py(n?.uri),r=n?.content??"";if(!r)return`\u5199\u5165 [${o}]`;let s=r.split(/\r?\n/).length;return`\u5199\u5165 [${o}] [+${s} lines] ${s} \u884C`}function NQ(t,e){let n=Uk(t.displayData),o=Py(n?.uri),r=n?.structuredPatch??[];if(r.length===0)return`\u7F16\u8F91 [${o}]`;let i=Cy(r);return`\u7F16\u8F91 [${o}] [ +${i.added} -${i.removed} ]`}function $Q(t,e){let n=io(t.displayData),o=io(t.args),r=zt(n,"pattern")??zt(o,"pattern")??"(empty)",i=zt(n,"searchDir")??zt(o,"searchDir")??zt(o,"path")??".",s=`\u641C\u7D22 [${r}] | \u8303\u56F4: ${i}`,a=n.items,l=Array.isArray(a)?a.length:0;return t.status==="success"||t.status==="error"?`${s} \xB7 \u5339\u914D ${l} \u6761`:s}function FQ(t,e){let n=io(t.displayData),o=io(t.args),r=zt(n,"pattern")??zt(o,"pattern")??zt(o,"glob_pattern")??"(empty)",i=zt(n,"searchDir")??zt(o,"searchDir")??zt(o,"target_directory")??".",s=`\u5339\u914D [${r}] | \u8303\u56F4: ${i}`,a=n.items,l=Array.isArray(a)?a.length:0;return t.status==="success"||t.status==="error"?`${s} \xB7 \u5339\u914D ${l} \u6761`:s}function UQ(t,e){let n=Bk(t.displayData),o=n?.dir_path??zt(io(t.args),"dir_path")??".",r=n?.entries?.length??0,s=t.status==="success"||t.status==="error"?` \xB7 \u5171 ${r} \u9879`:"";return e?`\u5217\u51FA ${o}${s}`:`\u5217\u51FA\u6587\u4EF6 [${o}]${s}`}function BQ(t,e){let n=jk(t.displayData),o=io(t.args),r=n?.query??zt(o,"query")??"(empty)",i=n?.numResults??o.numResults,s=typeof i=="number"?i:void 0,a=typeof s=="number"?` (${s})`:"";return e?`\u641C\u7D22 ${r.length>36?`${r.slice(0,33)}\u2026`:r}${a}`:`\u7F51\u7EDC\u641C\u7D22 [${r}]${a}`}function jQ(t,e){let n=zk(t.displayData),o=io(t.args),r=n?.url??zt(o,"url")??"(empty)",i=typeof n?.httpStatus=="number"?` ${n.httpStatus}`:"",s=n?.format?` ${n.format}`:"";return e?`\u6293\u53D6 ${r.length>44?`${r.slice(0,41)}\u2026`:r}${i}`:`\u7F51\u9875\u6293\u53D6 ${r}${s}${i}`}function zQ(t,e){let n=Wk(t.displayData),o=io(t.args),r=n?.uri??zt(o,"filepath")??"",i=Py(r||void 0);return e?`\u5220\u9664 ${i}`:`\u5220\u9664\u6587\u4EF6 [${i}]`}function WQ(t,e){let n=Hk(t.displayData),o=Array.isArray(n?.items)?n.items.length:void 0,r=typeof o=="number"?e?` ${o}`:` \xB7 ${o} \u9879`:"";return e?`\u6280\u80FD${r}`:`\u5217\u51FA\u6280\u80FD${r||(t.status==="pending"||t.status==="executing"?" \xB7 \u2026":"")}`}function KQ(t,e){let n=Vk(t.displayData),o=io(t.args),r=n?.skillName??zt(o,"skill_name")??"(unknown)",i=Ey(t.status,e);return e?`\u6280\u80FD ${r} [${i}]`:`\u4F7F\u7528\u6280\u80FD [${r}] [${i}]`}function HQ(t,e){let n=io(t.displayData);if(n.tool!=="run_terminal_cmd")return qk(t,e);let o=Ey(t.status,e),r=zt(n,"description"),i=n.exitCode,s=typeof i=="number"||i===null?i===null?"":` code=${i}`:"",a=n.blockTimedOut?" [\u8D85\u65F6]":"",l=zt(n,"commandSummary")??zt(n,"command")??"",c=l?`(${l})`:"(no command)",u=r??"(no description)";if(e){let d=l.length>28?`${l.slice(0,25)}\u2026`:l,p=(r??"").length>18?`${(r??"").slice(0,15)}\u2026`:r??"";return`cmd${d?`(${d})`:"(no command)"} ${p||"(no description)"} [${o}]${s}${a}`}return`cmd${c} ${u} [${o}]${s}${a}`}function VQ(t){if(t.name!=="await_shell"&&t.name!=="stop_shell")return qk(t,!1);let e=t.name==="await_shell"?"\u67E5\u8BE2\u7EC8\u7AEF\u6267\u884C":"\u7EC8\u6B62\u7EC8\u7AEF\u6267\u884C",n=t.status==="success"?"\u6210\u529F":t.status==="error"?"\u5931\u8D25":"\u6267\u884C\u4E2D";return`${e} [${n}]`}function qk(t,e){let n=Ey(t.status,e),o=AQ[t.name]??t.name,r=t.resultText??t.errorText??"";return`${o} [${n}]${r?` | ${r}`:""}`}function qQ(t,e){let{compact:n}=e;if(t.name==="ask_question"){let o=DQ(t,n);if(o)return o}return t.name==="read_file"?OQ(t,n):t.name==="write_file"?LQ(t,n):t.name==="edit_file"?NQ(t,n):t.name==="delete_file"?zQ(t,n):t.name==="grep"?$Q(t,n):t.name==="glob_file_search"?FQ(t,n):t.name==="list_files"?UQ(t,n):t.name==="web_search"?BQ(t,n):t.name==="web_fetch"?jQ(t,n):t.name==="run_terminal_cmd"?HQ(t,n):t.name==="await_shell"||t.name==="stop_shell"?VQ(t):t.name==="list_skills"?WQ(t,n):t.name==="use_skill"?KQ(t,n):qk(t,n)}function Ul(t,e){return qQ(t,e)}function Bl(t,e){let n=Ey(t.status,e),o=e?42:72,r=t.name;return`${r.length>o?`${r.slice(0,o-1)}\u2026`:r} [${n}]`}var vN={historyItems:[],currentTurnId:void 0,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{},streamingState:"Idle",conversationActionInFlight:!1,contextMetrics:null,running:!1,done:!1,exitCode:null};function bN(t,e=Date.now()){return!Number.isFinite(t)||t<=0?0:Math.max(0,Math.floor((e-t)/1e3))}function Ws(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function xN(){let t=typeof process<"u"?process.env.PANDA_CLI_STREAMING_TOKENS:void 0;if(!t)return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"||e==="always"}function TN(t,e){if(e<=t)return e;let n=e-t,o;return n<70?o=3:n<200?o=Math.max(8,Math.ceil(n*.15)):o=50,Math.min(t+o,e)}var wN=420,_N=280,SN=160,kN=120;function Gk(t,e,n){let o=t+e;return o.length<=n?o:o.slice(-n)}function Zk(t,e,n){if(t.length>=n)return t;let o=Math.max(0,n-t.length);return t+e.slice(0,o)}function Jk(t){return t.replace(/\s+/g," ").trim()}function IN(t,e){let n=t.length;if(n===0){let s=e?.tokenCount;return typeof s=="number"&&s>0?`0 \u5DE5\u5177 \xB7 ${Ws(s)} tokens`:"0 \u5DE5\u5177"}let o=t.filter(s=>s.status==="executing"||s.status==="pending"||s.status==="confirming").length,r=[`${n} \u5DE5\u5177`];o>0&&r.push(`${o} \u8FDB\u884C\u4E2D`);let i=e?.tokenCount;return typeof i=="number"&&i>0&&r.push(`${Ws(i)} tokens`),r.join(" \xB7 ")}function Pn(t){return`${t}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function GQ(t){return t&&typeof t=="object"?t:{}}function Ry(t){let e=GQ(t).subWorkId;return typeof e=="string"&&e.trim()?e.trim():void 0}function PN(t,e){for(let n of t.historyItems)if(n.type==="tool_group"){for(let o of n.tools)if(Ry(o.displayData)===e)return!0}for(let n of t.pendingToolCalls)if(Ry(n.displayData)===e)return!0;return!1}function RN(t,e){if(e.name==="ask_question")return!1;let n=e.workId?.trim();if(!n||!PN(t,n))return!1;if(typeof e.name=="string"&&e.name.startsWith("agent_")){let o=Ry(e.displayData);return typeof o=="string"&&o.trim().length>0&&o.trim()!==n}return!0}function ZQ(t,e){let n=Ry(e.displayData);if(n)return n;let o=e.workId?.trim();if(o&&(t.subAgentFeeds[o]||PN(t,o)))return o}function Yk(t){return(t?.eventSeq??0)+1}function AN(t,e){let n=Math.max(0,(t?.approxStreamChars??0)+e);return{approxStreamChars:n,tokenCount:Math.round(n/4)}}function vd(t,e){let n=ZQ(t,e);if(!n)return t;let o=e.name.startsWith("mcp_")?Bl(e,!0):Ul(e,{compact:!0}).split(`
2013
- `).map(l=>l.trim()).find(Boolean)??e.name,r=o.length>200?`${o.slice(0,199)}\u2026`:o,i=t.subAgentFeeds[n]??{activityTail:""},s=Yk(i),a=e.name.startsWith("agent_")?e.name.replace("agent_",""):i.agentType;return{...t,subAgentFeeds:{...t.subAgentFeeds,[n]:{...i,lastToolSummary:r,eventSeq:s,latestEvent:{kind:"tool",text:r,seq:s},agentType:a}}}}function CN(t,e){let n=t.findIndex(r=>r.id===e.id);if(n<0)return[...t,e];let o=t.slice();return o[n]={...o[n],...e},o}function bd(t,e,n){let o=!1,r=t.map(i=>{if(i.type!=="tool_group")return i;let s=!1,a=i.tools.map(l=>l.id!==e?l:(s=!0,o=!0,n(l)));return s?{...i,tools:a}:i});return o?r:t}function MN(t){let e=t.pendingAssistant;if(!e.trim())return{...t,pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null};let n={id:Pn("assistant"),type:"assistant",text:e};return{...t,historyItems:[...t.historyItems,n],pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:{historyItemId:n.id,text:n.text}}}function JQ(t){if(t.pendingToolCalls.length===0)return t;let e=t.pendingToolCalls.filter(o=>!o.renderedInHistory&&!RN(t,o));if(e.length===0)return{...t,pendingToolCalls:[]};let n={id:Pn("tools"),type:"tool_group",tools:e};return{...t,historyItems:[...t.historyItems,n],pendingToolCalls:[]}}function DN(t){let e=t.pendingThinking;return e.trim()?{...t,historyItems:[...t.historyItems,{id:Pn("thinking"),type:"thinking",text:e}],pendingThinking:""}:{...t,pendingThinking:""}}function YQ(t){return t.pendingToolCalls.some(o=>o.status==="confirming")?{streamingState:"WaitingForConfirmation",running:!0}:t.pendingToolCalls.some(o=>o.status==="executing"||o.status==="pending")?{streamingState:"Responding",running:!0}:{streamingState:"Idle",running:!1}}function QQ(t,e){let n=e.prompt?[...t.historyItems,{id:Pn("user"),type:"user",text:e.prompt}]:t.historyItems;return{...t,currentTurnId:e.turnId,running:!0,done:!1,exitCode:null,streamingState:"Responding",conversationActionInFlight:!1,historyItems:n,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{}}}function _r(t,e){return!e||!t.currentTurnId?!1:t.currentTurnId!==e}function XQ(t,e){if(_r(t,e.turnId))return t;if(e.isSubAgentWork&&e.workId){let o=e.workId,r=t.subAgentFeeds[o]??{activityTail:""},i=AN(r,e.chunk.length),s=Gk(r.thinkingTail??"",e.chunk,_N),a=Zk(r.thinkingHead??"",e.chunk,kN),l=Jk(a),c=Yk(r),u={...t.subAgentFeeds,[o]:{...r,...i,thinkingTail:s,thinkingHead:a,eventSeq:c,latestEvent:{kind:"thinking",text:l,seq:c}}};return e.done?{...t,subAgentFeeds:u}:{...t,subAgentFeeds:u}}let n=t.pendingThinking.concat(e.chunk);if(e.done){let o=n;return o.trim()?{...t,historyItems:[...t.historyItems,{id:Pn("thinking"),type:"thinking",text:o}],pendingThinking:""}:{...t,pendingThinking:""}}return{...t,pendingThinking:n}}function eX(t,e){if(_r(t,e.turnId))return t;if(e.isSubAgentWork&&e.workId){let o=e.workId,r=t.subAgentFeeds[o]??{activityTail:""},i=AN(r,e.chunk.length),s=Gk(r.activityTail,e.chunk,wN),a=Zk(r.assistantHead??"",e.chunk,SN),l=Jk(a),c=Yk(r);return{...t,subAgentFeeds:{...t.subAgentFeeds,[o]:{...r,...i,activityTail:s,assistantHead:a,eventSeq:c,latestEvent:{kind:"assistant",text:l,seq:c}}}}}let n=t.pendingAssistant.concat(e.chunk);if(e.done){let o=n;if(!o.trim())return{...t,pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null};let r={id:Pn("assistant"),type:"assistant",text:o};return{...t,historyItems:[...t.historyItems,r],pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:{historyItemId:r.id,text:r.text}}}return{...t,pendingAssistant:n,pendingAssistantChunks:[]}}function tX(t,e){if(_r(t,e.turnId)||e.isSubAgentWork)return t;if(!e.text.trim())return{...t,pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null};let n={id:Pn("assistant"),type:"assistant",text:e.text};return{...t,historyItems:[...t.historyItems,n],pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:{historyItemId:n.id,text:n.text}}}function nX(t,e){if(_r(t,e.turnId))return t;let n={id:e.toolCallId,name:e.toolName,status:"pending",renderedInHistory:!1,args:e.args,displayData:e.displayData,...e.workId?{workId:e.workId}:{}},o=DN(t);o=MN(o);let r=CN(o.pendingToolCalls,n),i=RN({...o,pendingToolCalls:r},n),s={...n,renderedInHistory:!i},a=CN(o.pendingToolCalls,s),l={...o,pendingToolCalls:a,streamingState:"Responding"},c=i?l:{...l,historyItems:[...l.historyItems,{id:Pn("tools"),type:"tool_group",tools:[s]}]};return vd(c,s)}function rX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,status:"executing",...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,status:"executing",...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,streamingState:"Responding",pendingToolCalls:o};return r?vd(i,r):i}function oX(t,e){let n=s=>e.confirming?"confirming":s.status==="confirming"?"pending":s.status,o=bd(t.historyItems,e.toolCallId,s=>({...s,status:n(s)})),r=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,status:n(s)}:s),i=r.some(s=>s.status==="confirming");return{...t,historyItems:o,pendingToolCalls:r,streamingState:i?"WaitingForConfirmation":"Responding"}}function iX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,name:e.toolName,status:"success",resultText:e.resultText,durationMs:e.durationMs,displayData:e.displayData??s.displayData,structuredData:e.structuredData!==void 0?e.structuredData:s.structuredData,...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,name:e.toolName,status:"success",resultText:e.resultText,durationMs:e.durationMs,displayData:e.displayData??s.displayData,structuredData:e.structuredData!==void 0?e.structuredData:s.structuredData,...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,pendingToolCalls:o};return r?vd(i,r):i}function EN(t,e){return e===void 0?t:e===null||typeof e!="object"||t===null||typeof t!="object"?e:{...t,...e}}function sX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,name:e.toolName||s.name,status:s.status,displayData:EN(s.displayData,e.displayData),...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,name:e.toolName||s.name,status:s.status,displayData:EN(s.displayData,e.displayData),...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,pendingToolCalls:o};return r?vd(i,r):i}function aX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,name:e.toolName,status:"error",errorText:e.errorText,durationMs:e.durationMs,displayData:e.displayData!==void 0?e.displayData:s.displayData,...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,name:e.toolName,status:"error",errorText:e.errorText,durationMs:e.durationMs,displayData:e.displayData!==void 0?e.displayData:s.displayData,...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,pendingToolCalls:o};return r?vd(i,r):i}function Qk(t){let e=DN(t);return e=MN(e),JQ(e)}function lX(t){if(!Number.isFinite(t)||t<0)return"\u2014";if(t<1e3)return`${(t/1e3).toFixed(2).replace(/\.?0+$/,"")}s`;if(t<6e4)return`${(t/1e3).toFixed(1).replace(/\.?0+$/,"")}s`;let e=Math.floor(t/6e4),n=Math.floor(t%6e4/1e3);return n>0?`${e}m ${n}s`:`${e}m`}function cX(t){return t?oy(t,Ui):"Unknown"}function uX(t,e){if(_r(t,e.turnId))return t;let n=Qk(t);n={...n,currentTurnId:void 0,running:!1,done:!1,exitCode:null,streamingState:"Idle",conversationActionInFlight:!1,subAgentFeeds:{}};let r=(typeof e.metrics?.duration=="number"?e.metrics.duration:void 0)??e.durationMs;if(typeof r=="number"){let i=e.metrics?.modelName?.trim()||"Unknown model",s=cX(e.metrics?.interactionMode);n={...n,historyItems:[...n.historyItems,{id:Pn("info"),type:"info",text:`\u4F1A\u8BDD\u5B8C\u6210 \xB7 \u6A21\u578B\uFF1A${i} \xB7 \u6A21\u5F0F\uFF1A${s} \xB7 \u8017\u65F6\uFF1A${lX(r)}`}]}}return n}function dX(t,e){return{...t,contextMetrics:{usagePercentage:e.usagePercentage,contextWindow:e.contextWindow,contextTokensTotal:e.contextTokensTotal,tokenSource:e.tokenSource,fullEstimateTokens:e.fullEstimateTokens,usageTokensTotal:e.usageTokensTotal,estimatedDeltaTokens:e.estimatedDeltaTokens,lastRequestPromptTokens:e.lastRequestPromptTokens,lastRequestCompletionTokens:e.lastRequestCompletionTokens,lastRequestCachedTokens:e.lastRequestCachedTokens,lastRequestCacheWriteTokens:e.lastRequestCacheWriteTokens,elapsedMs:e.elapsedMs,effortLevel:e.effortLevel,isOverflow:e.isOverflow}}}function pX(t,e){if(_r(t,e.turnId))return t;let n=Qk(t),o=e.turnId?`\u4F1A\u8BDD ${e.turnId} \u5931\u8D25\uFF1A${e.errorText}\uFF08\u53EF\u56DE\u64A4\u81F3\u8BE5\u8F6E\u4E4B\u524D\uFF09`:`\u4F1A\u8BDD\u5931\u8D25\uFF1A${e.errorText}\uFF08\u53EF\u56DE\u64A4\u81F3\u8BE5\u8F6E\u4E4B\u524D\uFF09`;return{...n,currentTurnId:void 0,running:!1,done:!1,exitCode:null,streamingState:"Idle",conversationActionInFlight:!1,subAgentFeeds:{},historyItems:[...n.historyItems,{id:Pn("error"),type:"error",text:o}]}}function fX(t,e){if(_r(t,e.turnId))return t;let n=Qk(t);return{...n,currentTurnId:void 0,running:!1,done:!1,exitCode:null,streamingState:"Idle",conversationActionInFlight:!1,subAgentFeeds:{},historyItems:[...n.historyItems,{id:Pn("info"),type:"info",text:"\u4F1A\u8BDD\u5DF2\u53D6\u6D88"}]}}var mX={HYDRATE_HISTORY:(t,e)=>({...t,historyItems:e.historyItems,currentTurnId:void 0,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{},running:!1,streamingState:"Idle",conversationActionInFlight:!1}),RESET_STREAMING_STATE:t=>({...t,currentTurnId:void 0,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{},running:!1,streamingState:"Idle",conversationActionInFlight:!1}),CLEAR_ASSISTANT_STREAM_OVERLAP:t=>t.assistantStreamOverlap?{...t,assistantStreamOverlap:null}:t,APPEND_INFO:(t,e)=>({...t,historyItems:[...t.historyItems,{id:Pn("info"),type:"info",text:e.text}]}),APPEND_TOOL_DEMO:(t,e)=>{let n=e,o={id:Pn("demo"),name:n.toolName,status:"success",displayData:n.displayData};return{...t,historyItems:[...t.historyItems,{id:Pn("tools"),type:"tool_group",tools:[o]}]}},APPEND_ERROR:(t,e)=>({...t,historyItems:[...t.historyItems,{id:Pn("error"),type:"error",text:e.text}]}),TURN_STARTED:(t,e)=>QQ(t,e),THINKING_CHUNK:(t,e)=>XQ(t,e),ASSISTANT_CHUNK:(t,e)=>eX(t,e),ASSISTANT_FINAL:(t,e)=>tX(t,e),TOOL_REQUESTED:(t,e)=>nX(t,e),TOOL_EXECUTING:(t,e)=>rX(t,e),SET_CONFIRMING:(t,e)=>oX(t,e),TOOL_EXECUTED:(t,e)=>iX(t,e),TOOL_PROGRESS:(t,e)=>sX(t,e),TOOL_FAILED:(t,e)=>aX(t,e),CONTEXT_METRICS_UPDATED:(t,e)=>dX(t,e),TURN_COMPLETED:(t,e)=>uX(t,e),TURN_FAILED:(t,e)=>pX(t,e),TURN_CANCELLED:(t,e)=>fX(t,e),CONVERSATION_ACTION_STARTED:t=>({...t,conversationActionInFlight:!0,running:!0,streamingState:"Responding"}),CONVERSATION_ACTION_ENDED:t=>{let e={...t,conversationActionInFlight:!1};return{...e,...YQ(e)}}};function ON(t,e){let n=mX[e.type];return n?n(t,e):t}function LN(){return{...vN}}gr();var Ay=class{chunks=[];pendingTailChunks=[];append(e){if(!e)return"";this.chunks.push(e);let n=e.lastIndexOf(`
2014
- `);if(n<0)return this.pendingTailChunks.push(e),"";let o=[...this.pendingTailChunks,e.slice(0,n+1)].join("");this.pendingTailChunks=[];let r=e.slice(n+1);return r&&this.pendingTailChunks.push(r),o}flushAll(){let e=this.chunks.join("");return this.reset(),e}reset(){this.chunks=[],this.pendingTailChunks=[]}hasContent(){return this.chunks.length>0}};function gX(t){if(typeof t=="string")return t;if(t&&typeof t=="object"&&typeof t.llmContent=="string")return t.llmContent;try{return JSON.stringify(t,null,2)}catch{return String(t)}}function NN(t){if(t?.displayData!==void 0)return t.displayData;let e=t?.result;if(e&&typeof e=="object"&&"displayData"in e)return e.displayData}function hX(t){let e=t?.result;if(e&&typeof e=="object"&&"structuredData"in e)return e.structuredData}function Rn(t,e){return t.conversationId===e()}function It(t){return typeof t.turnId=="string"?t.turnId:void 0}function jl(t,e){let n=It(t);return!!(n&&e.activeTurnId&&n!==e.activeTurnId)}function yX(t){let e=t.streamingApproxRef;e&&(e.current.targetChars=0,e.current.turnStartedAt=Date.now(),e.current.thinkingCharCount=0,e.current.thinkingEnded=!1)}function Xk(t){let e=t.streamingApproxRef;e&&(e.current.targetChars=0)}function $N(t,e){!t.streamingApproxRef||e<=0||(t.streamingApproxRef.current.targetChars+=e)}function FN(t,e){!t.streamingApproxRef||e<=0||(t.streamingApproxRef.current.thinkingCharCount+=e,t.streamingApproxRef.current.targetChars+=e)}function xd(t,e){if(!t.assistantLineBuffer.hasContent())return;let n=t.assistantLineBuffer.flushAll();t.dispatch({type:"ASSISTANT_FINAL",text:n,turnId:e??t.activeTurnId})}function vX(t,e){e.freezeUiUntilTurnEnd||Rn(t,e.getConversationId)&&e.dispatch({type:"CONVERSATION_ACTION_STARTED"})}function bX(t,e){e.freezeUiUntilTurnEnd||Rn(t,e.getConversationId)&&e.dispatch({type:"CONVERSATION_ACTION_ENDED"})}function xX(t,e,n){Rn(t,e.getConversationId)&&(e.assistantLineBuffer.reset(),yX(e),e.activeTurnId=It(t),e.dispatch({type:"TURN_STARTED",turnId:It(t),prompt:typeof t.displayPrompt=="string"&&t.displayPrompt.length>0?t.displayPrompt:t.prompt}),n&&t.turnId&&t.prompt&&n(t.turnId,t.prompt))}function TX(t,e){if(e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId))return;let n=e.streamingApproxRef;if(n&&(n.current.thinkingEnded=!1),!t.chunk)return;let o=t;FN(e,String(t.chunk).length),e.dispatch({type:"THINKING_CHUNK",chunk:String(t.chunk),done:!1,turnId:typeof t.turnId=="string"?t.turnId:void 0,workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:o.isSubAgentWork===!0})}function wX(t,e,n){if(n.freezeUiUntilTurnEnd||!Rn(t,n.getConversationId))return;let o=t,r=e||!!o.done;if(r){let i=n.streamingApproxRef;i&&(i.current.thinkingEnded=!0)}FN(n,String(o.chunk??"").length),n.dispatch({type:"THINKING_CHUNK",chunk:String(o.chunk??""),done:r,turnId:typeof t.turnId=="string"?t.turnId:void 0,workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:o.isSubAgentWork===!0})}function _X(t,e){if(!Rn(t,e.getConversationId)||e.freezeUiUntilTurnEnd)return;let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),t.chunk&&UN(t,!1,e)}function UN(t,e,n){let o=t;if(jl(t,n))return;$N(n,String(o.chunk??"").length);let r=e||!!o.done;if(o.isSubAgentWork===!0){n.dispatch({type:"ASSISTANT_CHUNK",chunk:String(o.chunk??""),done:r,turnId:It(t),workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:!0});return}let i=n.assistantLineBuffer.append(String(o.chunk??""));i&&n.dispatch({type:"ASSISTANT_CHUNK",chunk:i,done:!1,turnId:It(t),workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:!1}),r&&xd(n,It(t))}function SX(t,e,n){n.freezeUiUntilTurnEnd||Rn(t,n.getConversationId)&&UN(t,e,n)}function Td(t,e){return e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId)||jl(t,e)?!1:(xd(e,It(t)),!0)}function wd(t){let e=t.workId;return typeof e=="string"&&e.trim()?e.trim():void 0}function kX(t,e){if(e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId)||jl(t,e)||!e.streamingApproxRef)return;let n=t,o=typeof n.argsDelta=="string"?n.argsDelta:"";$N(e,o.length)}function IX(t,e){if(!Td(t,e))return;let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),e.dispatch({type:"TOOL_REQUESTED",turnId:It(t),toolCallId:t.toolCallId,toolName:t.toolName,args:t.args,displayData:NN(t),workId:wd(t)})}function CX(t,e){e.freezeUiUntilTurnEnd||Rn(t,e.getConversationId)&&e.dispatch({type:"SET_CONFIRMING",toolCallId:t.toolCallId,confirming:!0})}function EX(t,e){Td(t,e)&&e.dispatch({type:"TOOL_EXECUTING",turnId:It(t),toolCallId:t.toolCallId,workId:wd(t)})}function PX(t,e){if(!Td(t,e))return;let n=t;n.displayData!==void 0&&e.dispatch({type:"TOOL_PROGRESS",turnId:It(t),toolCallId:String(n.toolCallId??""),toolName:String(n.toolName??""),displayData:n.displayData,workId:wd(n)})}function RX(t,e){Td(t,e)&&e.dispatch({type:"TOOL_EXECUTED",turnId:It(t),toolCallId:t.toolCallId,toolName:t.toolName,resultText:gX(t.result),durationMs:t.duration,displayData:NN(t),structuredData:hX(t),workId:wd(t)})}function AX(t){let e=t;if(e.displayData!==void 0)return e.displayData}function MX(t,e){Td(t,e)&&e.dispatch({type:"TOOL_FAILED",turnId:It(t),toolCallId:t.toolCallId,toolName:t.toolName,errorText:t.error instanceof Error?t.error.message:String(t.error),durationMs:t.duration,displayData:AX(t),workId:wd(t)})}async function DX(t,e){if(!Rn(t,e.getConversationId))return;!e.freezeUiUntilTurnEnd&&!jl(t,e)&&xd(e,It(t)),e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate());let n=typeof t.duration=="number"?t.duration:void 0,o=t.metrics&&typeof t.metrics=="object"?t.metrics:void 0;e.dispatch({type:"TURN_COMPLETED",turnId:It(t),durationMs:n,metrics:o}),(!It(t)||It(t)===e.activeTurnId)&&(e.activeTurnId=void 0);let r=e.streamingApproxRef;r&&(r.current.thinkingEnded=!0),Xk(e)}async function OX(t,e){if(!Rn(t,e.getConversationId))return;!e.freezeUiUntilTurnEnd&&!jl(t,e)&&xd(e,It(t)),e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate()),e.dispatch({type:"TURN_FAILED",turnId:String(t.turnId??""),errorText:typeof t.normalizedError=="string"&&t.normalizedError.trim().length>0?t.normalizedError:t.error instanceof Error?t.error.message:String(t.error)}),e.onTurnFailed&&e.onTurnFailed(typeof t.normalizedError=="string"&&t.normalizedError.trim().length>0?t.normalizedError:t.error instanceof Error?t.error.message:String(t.error)),(!It(t)||It(t)===e.activeTurnId)&&(e.activeTurnId=void 0);let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),Xk(e)}async function LX(t,e){if(!Rn(t,e.getConversationId))return;!e.freezeUiUntilTurnEnd&&!jl(t,e)&&xd(e,It(t)),e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate()),e.dispatch({type:"TURN_CANCELLED",turnId:It(t)}),(!It(t)||It(t)===e.activeTurnId)&&(e.activeTurnId=void 0);let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),Xk(e)}async function NX(t,e){if(Rn(t,e.getConversationId)&&(e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate()),e.onTurnCancelled)){let n=t;e.onTurnCancelled({revertApplied:n.revertApplied===!0,restorePrompt:n.restorePrompt})}}function $X(t,e){if(e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId))return;let n=t,o=typeof n.contextTokensTotal=="number"&&Number.isFinite(n.contextTokensTotal)?n.contextTokensTotal:void 0;if(o===void 0)return;let r=typeof n.contextWindow=="number"&&Number.isFinite(n.contextWindow)&&n.contextWindow>0?n.contextWindow:2e5,i=n.tokenSource==="usage_plus_delta"||n.tokenSource==="full_estimate"?n.tokenSource:"full_estimate",s=typeof n.fullEstimateTokens=="number"&&Number.isFinite(n.fullEstimateTokens)?n.fullEstimateTokens:o,a=typeof n.usagePercentage=="number"&&Number.isFinite(n.usagePercentage)?n.usagePercentage:NaN;Number.isFinite(a)||(a=r>0?Math.min(100,Math.round(o/r*100)):0),e.dispatch({type:"CONTEXT_METRICS_UPDATED",usagePercentage:a,contextWindow:r,contextTokensTotal:o,tokenSource:i,fullEstimateTokens:s,usageTokensTotal:typeof n.usageTokensTotal=="number"?n.usageTokensTotal:void 0,estimatedDeltaTokens:typeof n.estimatedDeltaTokens=="number"?n.estimatedDeltaTokens:void 0,lastRequestPromptTokens:typeof n.lastRequestPromptTokens=="number"?n.lastRequestPromptTokens:void 0,lastRequestCompletionTokens:typeof n.lastRequestCompletionTokens=="number"?n.lastRequestCompletionTokens:void 0,lastRequestCachedTokens:typeof n.lastRequestCachedTokens=="number"?n.lastRequestCachedTokens:void 0,lastRequestCacheWriteTokens:typeof n.lastRequestCacheWriteTokens=="number"?n.lastRequestCacheWriteTokens:void 0,elapsedMs:typeof n.elapsedMs=="number"?n.elapsedMs:void 0,effortLevel:typeof n.effortLevel=="string"?n.effortLevel:void 0,isOverflow:n.isOverflow===!0})}function BN(t){let{eventBus:e,getConversationId:n,dispatch:o,onTurnStarted:r,onTurnFailed:i,onTurnCancelled:s,onConversationUiMessagesUpdated:a,freezeUiUntilTurnEnd:l,onFreezeTurnEndHydrate:c,streamingApproxRef:u}=t,d={getConversationId:n,dispatch:o,assistantLineBuffer:new Ay,onTurnFailed:i,onTurnCancelled:s,freezeUiUntilTurnEnd:l,onFreezeTurnEndHydrate:c,streamingApproxRef:u},p=[];if(p.push(e.on(P.TURN_STARTED,f=>xX(f,d,r))),p.push(e.on(P.TOOL_CALL_ARGS_STREAMING,f=>kX(f,d))),p.push(e.on(P.THINKING_STARTED,f=>TX(f,d))),p.push(e.subscribeStreaming(P.THINKING_STREAMING,(f,m)=>wX(f,m,d))),p.push(e.on(P.ASSISTANT_MESSAGE_STARTED,f=>_X(f,d))),p.push(e.subscribeStreaming(P.MESSAGE_STREAMING,(f,m)=>SX(f,m,d))),p.push(e.on(P.TOOL_CALL_REQUESTED,f=>IX(f,d))),p.push(e.on(P.TOOL_CONFIRMATION_REQUEST,f=>CX(f,d))),p.push(e.on(P.TOOL_CALL_EXECUTING,f=>EX(f,d))),p.push(e.on(P.TOOL_CALL_PROGRESS,f=>PX(f,d))),p.push(e.on(P.TOOL_CALL_EXECUTED,f=>RX(f,d))),p.push(e.on(P.TOOL_CALL_FAILED,f=>MX(f,d))),p.push(e.on(P.TURN_COMPLETED,f=>{DX(f,d)})),p.push(e.on(P.TURN_FAILED,f=>{OX(f,d)})),p.push(e.on(P.TURN_CANCELLED,f=>{LX(f,d)})),p.push(e.on(P.TURN_CANCEL_RESOLVED,f=>{NX(f,d)})),p.push(e.on(P.CONVERSATION_ACTION_STARTED,f=>vX(f,d))),p.push(e.on(P.CONVERSATION_ACTION_ENDED,f=>bX(f,d))),p.push(e.on(P.CONTEXT_METRICS_UPDATED,f=>$X(f,d))),a){let f=a;p.push(e.on(P.CONVERSATION_UI_MESSAGES_UPDATED,m=>{m?.conversationId===n()&&(l||f())}))}return()=>{for(let f of p)f()}}function Sr(t,e){if(typeof t=="string"&&t.length===1&&/[a-zA-Z]/.test(t)){let o=t.toLowerCase();return e.ctrl||e.super||e.meta?o:null}let n=e?.name;if(typeof n=="string"&&n.length===1&&/[a-zA-Z]/.test(n)){let o=n.toLowerCase();if(e.ctrl||e.super||e.meta)return o}return null}import p6,{useCallback as mI,useEffect as see,useState as aee}from"react";import{stringWidth as so,wrapAnsi as FX}from"panda-ink";var eI=null,tI=null;function Uo(){return eI||(eI=new Intl.Segmenter(void 0,{granularity:"grapheme"})),eI}function _d(t){return t?Uo().segment(t)[Symbol.iterator]().next().value?.segment??"":""}function Ks(t){if(!t)return"";let e="";for(let{segment:n}of Uo().segment(t))e=n;return e}function jN(){return tI||(tI=new Intl.Segmenter(void 0,{granularity:"word"})),tI}var UX=10,cr=[],My=0,nI=!1,zN=0,oI=0,Dy=!1;function Oy(t,e="append"){t.length>0&&(nI&&cr.length>0?e==="prepend"?cr[0]=t+cr[0]:cr[0]=cr[0]+t:(cr.unshift(t),cr.length>UX&&cr.pop()),nI=!0,Dy=!1)}function WN(){return cr[0]??""}function iI(){nI=!1}function KN(t,e){zN=t,oI=e,Dy=!0,My=0}function HN(){return!Dy||cr.length<=1?null:(My=(My+1)%cr.length,{text:cr[My]??"",start:zN,length:oI})}function VN(t){oI=t}function sI(){Dy=!1}var BX=/^[\p{L}\p{N}\p{M}_]$/u,Sd=/\s/,Bo=t=>BX.test(t),Ly=t=>Sd.test(t),ji=t=>t.length>0&&!Ly(t)&&!Bo(t),ao=class t{constructor(e,n=0,o=0){this.measuredText=e;this.selection=o;this.offset=Math.max(0,Math.min(this.text.length,n))}measuredText;selection;offset;static fromText(e,n,o=0,r=0){return new t(new rI(e,n-1),o,r)}getViewportStartLine(e){if(e===void 0||e<=0)return 0;let{line:n}=this.getPosition(),o=this.measuredText.getWrappedText();if(o.length<=e)return 0;let r=Math.floor(e/2),i=Math.max(0,n-r),s=Math.min(o.length,i+e);return s-i<e&&(i=Math.max(0,s-e)),i}getViewportCharOffset(e){let n=this.getViewportStartLine(e);return n===0?0:this.measuredText.getWrappedLines()[n]?.startOffset??0}getViewportCharEnd(e){let n=this.getViewportStartLine(e),o=this.measuredText.getWrappedLines();if(e===void 0||e<=0)return this.text.length;let r=Math.min(o.length,n+e);return r>=o.length?this.text.length:o[r]?.startOffset??this.text.length}render(e,n,o,r,i){let{line:s,column:a}=this.getPosition(),l=this.measuredText.getWrappedText(),c=this.getViewportStartLine(i),u=i!==void 0&&i>0?Math.min(l.length,c+i):l.length;return l.slice(c,u).map((d,p)=>{let f=p+c,m=d;if(n){let B=Array.from(Uo().segment(d));if(f===l.length-1){let S=Math.min(6,B.length),x=B.length-S,T=B.length>S?B[x].index:0;m=n.repeat(x)+d.slice(T)}else m=n.repeat(B.length)}if(s!==f)return m.trimEnd();let g="",h=e,y="",v=0,b=!1;for(let{segment:B}of Uo().segment(m)){if(b){y+=B;continue}let S=v+so(B);S>a?(h=B,b=!0):(v=S,g+=B)}let R,M="";if(r&&f===l.length-1&&this.isAtEnd()&&r.text.length>0){let B=_d(r.text)||r.text[0];R=e?o(B):B;let S=r.text.slice(B.length);S.length>0&&(M=r.dim(S))}else R=e?o(h):h;return g+R+M+y.trimEnd()}).join(`
2007
+ `))}async function qY(t){let e=U7();No(t,`
2008
+ \u5F53\u524D\u7248\u672C\uFF1A${e}`);let n=await WY();if(!n)return Dk(t,`
2009
+ \u68C0\u67E5\u66F4\u65B0\u5931\u8D25\uFF1A\u65E0\u6CD5\u83B7\u53D6 npm \u6700\u65B0\u7248\u672C\u4FE1\u606F\u3002`),1;if(No(t,`\u6700\u65B0\u7248\u672C\uFF1A${n}`),n===e)return No(t,"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF0C\u65E0\u9700\u5347\u7EA7\u3002"),0;if(Mk&&Mk===n)return No(t,`\u5DF2\u5347\u7EA7\u5230 ${n}\uFF0C\u8BF7\u9000\u51FA\u5E76\u91CD\u65B0\u6253\u5F00 panda \u540E\u751F\u6548\u3002`),0;if(No(t,`\u68C0\u6D4B\u5230\u65B0\u7248\u672C\uFF1A${e} -> ${n}`),t.checkOnly)return 0;let o=!!t.skipConfirm;if(!o){if(!KY())return Dk(t,"\u5F53\u524D\u975E\u4EA4\u4E92\u7EC8\u7AEF\uFF0C\u8BF7\u4F7F\u7528 `--yes` \u81EA\u52A8\u786E\u8BA4\u5347\u7EA7\u3002"),1;o=await HY(`\u786E\u8BA4\u5347\u7EA7\u5230 ${n} ? [y/N] `)}if(!o)return No(t,"\u5DF2\u53D6\u6D88\u5347\u7EA7\u3002"),0;No(t,`\u5F00\u59CB\u6267\u884C\uFF1A${xy} install -g ${js}@${n}`);let r=await B7(xy,["install","-g",`${js}@${n}`],{timeoutMs:zY});return r.exitCode!==0?(Dk(t,VY(r,n)),1):(Mk=n,No(t,`\u5347\u7EA7\u5B8C\u6210\uFF1A${js}@${n}\u3002\u8BF7\u9000\u51FA\u5E76\u91CD\u65B0\u6253\u5F00 panda \u540E\u751F\u6548\u3002`),0)}async function wy(t={}){return by?(No(t,"\u5347\u7EA7\u6B63\u5728\u8FDB\u884C\u4E2D\uFF0C\u8BF7\u7B49\u5F85\u5F53\u524D\u5347\u7EA7\u5B8C\u6210\u540E\u518D\u8BD5\u3002"),0):(by=(async()=>{try{return await qY(t)}finally{by=null}})(),by)}function Ok(t,...e){return e.some(n=>t.includes(n))}async function j7(t){return Ok(t,"--help","-h")?(Ty(),0):wy({checkOnly:Ok(t,"--check","-c"),skipConfirm:Ok(t,"--yes","-y"),onInfo:e=>console.log(e),onError:e=>console.error(e)})}import UF from"react";import{clearTerminal as mse,createRoot as gse}from"panda-ink";import nN,{useCallback as Sy,useEffect as fQ,useMemo as mQ,useRef as ky,useState as gQ}from"react";import eQ,{createContext as tQ,useContext as nQ,useLayoutEffect as rQ,useMemo as oQ}from"react";function z7(t,e){return e.escape?"escape":e.return?"enter":e.tab?"tab":e.backspace?"backspace":e.delete?"delete":e.upArrow?"up":e.downArrow?"down":e.leftArrow?"left":e.rightArrow?"right":e.pageUp?"pageup":e.pageDown?"pagedown":e.wheelUp?"wheelup":e.wheelDown?"wheeldown":e.home?"home":e.end?"end":t.length===1?t.toLowerCase():null}function W7(t){let e=t.split("+"),n={key:"",ctrl:!1,alt:!1,shift:!1,meta:!1,super:!1};for(let o of e){let r=o.toLowerCase();switch(r){case"ctrl":case"control":n.ctrl=!0;break;case"alt":case"opt":case"option":n.alt=!0;break;case"shift":n.shift=!0;break;case"meta":n.meta=!0;break;case"cmd":case"command":case"super":case"win":n.super=!0;break;case"esc":n.key="escape";break;case"return":n.key="enter";break;case"space":n.key=" ";break;case"\u2191":n.key="up";break;case"\u2193":n.key="down";break;case"\u2190":n.key="left";break;case"\u2192":n.key="right";break;default:n.key=r;break}}return n}function GY(t){return t===" "?[W7("space")]:t.trim().split(/\s+/).map(W7)}function K7(t){switch(t){case"escape":return"Esc";case" ":return"Space";case"tab":return"tab";case"enter":return"Enter";case"backspace":return"Backspace";case"delete":return"Delete";case"up":return"\u2191";case"down":return"\u2193";case"left":return"\u2190";case"right":return"\u2192";case"pageup":return"PageUp";case"pagedown":return"PageDown";case"home":return"Home";case"end":return"End";default:return t}}function ZY(t){let e=[];return t.ctrl&&e.push("ctrl"),t.alt&&e.push("alt"),t.shift&&e.push("shift"),t.meta&&e.push("meta"),t.super&&e.push("cmd"),e.push(K7(t.key)),e.join("+")}function H7(t){return t.map(ZY).join(" ")}function JY(t,e="linux"){let n=[];return t.ctrl&&n.push("ctrl"),(t.alt||t.meta)&&n.push(e==="macos"?"opt":"alt"),t.shift&&n.push("shift"),t.super&&n.push(e==="macos"?"cmd":"super"),n.push(K7(t.key)),n.join("+")}function V7(t,e="linux"){return t.map(n=>JY(n,e)).join(" ")}function Lk(t){let e=[];for(let n of t)for(let[o,r]of Object.entries(n.bindings))e.push({chord:GY(o),action:r,context:n.context});return e}function q7(t,e,n){let o=n.findLast(i=>i.action===t&&i.context===e);if(!o)return;let r=process.platform==="darwin"?"macos":"linux";return V7(o.chord,r)}function YY(t,e){let n=z7(t,e);if(!n)return null;let o=e.escape?!1:e.meta;return{key:n,ctrl:e.ctrl,alt:o,shift:e.shift,meta:o,super:e.super}}function G7(t,e){return t.key===e.key&&t.ctrl===e.ctrl&&t.shift===e.shift&&(t.alt||t.meta)===(e.alt||e.meta)&&t.super===e.super}function QY(t,e){if(t.length>=e.chord.length)return!1;for(let n=0;n<t.length;n++){let o=t[n],r=e.chord[n];if(!o||!r||!G7(o,r))return!1}return!0}function XY(t,e){if(t.length!==e.chord.length)return!1;for(let n=0;n<t.length;n++){let o=t[n],r=e.chord[n];if(!o||!r||!G7(o,r))return!1}return!0}function _y(t,e,n,o,r){if(e.escape&&r!==null)return{type:"chord_cancelled"};let i=YY(t,e);if(!i)return r!==null?{type:"chord_cancelled"}:{type:"none"};let s=r?[...r,i]:[i],a=new Set(n),l=o.filter(p=>a.has(p.context)),c=new Map;for(let p of l)p.chord.length>s.length&&QY(s,p)&&c.set(H7(p.chord),p.action);let u=!1;for(let p of c.values())if(p!==null){u=!0;break}if(u)return{type:"chord_started",pending:s};let d;for(let p of l)XY(s,p)&&(d=p);return d?d.action===null?{type:"unbound"}:{type:"match",action:d.action}:r!==null?{type:"chord_cancelled"}:{type:"none"}}var Z7=tQ(null);function J7({bindings:t,pendingChordRef:e,pendingChord:n,setPendingChord:o,activeContexts:r,registerActiveContext:i,unregisterActiveContext:s,handlerRegistryRef:a,children:l}){let c=oQ(()=>({resolve:(m,g,h)=>_y(m,g,h,t,e.current),setPendingChord:o,getDisplayText:(m,g)=>q7(m,g,t),bindings:t,pendingChord:n,activeContexts:r,registerActiveContext:i,unregisterActiveContext:s,registerHandler:m=>{let g=a.current;return g?(g.has(m.action)||g.set(m.action,new Set),g.get(m.action).add(m),()=>{let h=g.get(m.action);h&&(h.delete(m),h.size===0&&g.delete(m.action))}):()=>{}},invokeAction:m=>{let g=a.current;if(!g)return!1;let h=g.get(m);if(!h||h.size===0)return!1;for(let y of h)if(r.has(y.context))return y.handler(),!0;return!1}}),[t,e,n,o,r,i,s,a]);return eQ.createElement(Z7.Provider,{value:c},l)}function zs(){return nQ(Z7)}function gd(t,e=!0){let n=zs();rQ(()=>{if(!(!n||!e))return n.registerActiveContext(t),()=>{n.unregisterActiveContext(t)}},[t,n,e])}import{useCallback as iQ}from"react";import{useInput as sQ}from"panda-ink";var Y7=1e3;function Q7({bindings:t,pendingChordRef:e,setPendingChord:n,activeContexts:o,handlerRegistryRef:r}){let i=iQ((s,a,l)=>{if((a.wheelUp||a.wheelDown)&&e.current===null)return;let c=r.current,u=new Set;if(c)for(let m of c.values())for(let g of m)u.add(g.context);let d=[...u,...o,"Global"],p=e.current!==null,f=_y(s,a,d,t,e.current);switch(f.type){case"chord_started":n(f.pending),l.stopImmediatePropagation();break;case"match":{if(n(null),p){let m=new Set(d);if(c){let g=c.get(f.action);if(g&&g.size>0){for(let h of g)if(m.has(h.context)){h.handler(),l.stopImmediatePropagation();break}}}}break}case"chord_cancelled":n(null),l.stopImmediatePropagation();break;case"unbound":n(null),l.stopImmediatePropagation();break;case"none":break}},[t,e,n,o,r]);return sQ(i),null}import{existsSync as lQ,readFileSync as cQ}from"node:fs";import{homedir as uQ}from"node:os";import{join as dQ}from"node:path";var X7=[{context:"Global",bindings:{"ctrl+c":"app:interrupt","ctrl+d":"app:exit","ctrl+o":"app:toggleTranscript"}},{context:"Autocomplete",bindings:{tab:"autocomplete:accept",escape:"autocomplete:dismiss",up:"autocomplete:previous",down:"autocomplete:next"}},{context:"Chat",bindings:{"ctrl+shift+m":"chat:toggleOperationMode","shift+tab":"chat:toggleOperationMode","ctrl+g":"chat:openTeamRolesPicker",...process.platform==="win32"?{"alt+v":"chat:imagePaste"}:{"ctrl+v":"chat:imagePaste"},"ctrl+shift+y":"chat:toggleVimMode"}},{context:"Transcript",bindings:{"ctrl+e":"transcript:toggleShowAll","ctrl+c":"transcript:exit",escape:"transcript:exit",q:"transcript:exit"}}];var aQ=new Set(["app:interrupt","app:exit"]);function eN(t){return t?aQ.has(t):!1}function pQ(){let t=dQ(uQ(),".panda","keybindings.json");if(!lQ(t))return{blocks:[]};try{let e=JSON.parse(cQ(t,"utf8"));return Array.isArray(e)?{blocks:e}:{blocks:[],error:`${t}: root must be a JSON array`}}catch(e){let n=e instanceof Error?e.message:String(e);return{blocks:[],error:`${t}: ${n}`}}}function tN(){let t=[],e=Lk(X7),{blocks:n,error:o}=pQ();o&&t.push(o);let r=[];for(let s of Lk(n)){if(s.context==="Global"&&eN(s.action)){t.push(`Ignored user override for reserved action: ${s.action}`);continue}r.push(s)}return{bindings:[...e,...r],warnings:t}}function rN({children:t}){let{bindings:e,warnings:n}=mQ(()=>tN(),[]);fQ(()=>{for(let f of n)console.error("[panda keybindings]",f)},[n]);let o=ky(null),[r,i]=gQ(null),s=ky(null),a=ky(new Map),l=ky(new Set),c=Sy(()=>{s.current&&(clearTimeout(s.current),s.current=null)},[]),u=Sy(f=>{c(),f!==null&&(s.current=setTimeout(()=>{o.current=null,i(null),s.current=null},Y7)),o.current=f,i(f)},[c]),d=Sy(f=>{l.current.add(f)},[]),p=Sy(f=>{l.current.delete(f)},[]);return nN.createElement(J7,{bindings:e,pendingChordRef:o,pendingChord:r,setPendingChord:u,activeContexts:l.current,registerActiveContext:d,unregisterActiveContext:p,handlerRegistryRef:a},nN.createElement(Q7,{bindings:e,pendingChordRef:o,setPendingChord:u,activeContexts:l.current,handlerRegistryRef:a}),t)}import{openSync as hQ}from"node:fs";import{ReadStream as yQ}from"node:tty";function vQ(t){if(!t)return!1;if(typeof t=="boolean")return t;let e=t.toLowerCase().trim();return["1","true","yes","on"].includes(e)}var $o=null;function bQ(){if($o!==null)return $o;if(process.stdin.isTTY){$o=void 0;return}if(vQ(process.env.CI)){$o=void 0;return}if(process.argv.includes("mcp")){$o=void 0;return}if(process.platform==="win32"){$o=void 0;return}try{let t=hQ("/dev/tty","r"),e=new yQ(t);return e.isTTY=!0,$o=e,$o}catch(t){console.error("[panda-cli] /dev/tty open failed",t),$o=void 0;return}}function xQ(t){if(typeof t=="boolean")return t;if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function TQ(t){let e=t.cliMode&&t.cliMode!=="auto"?t.cliMode:void 0;if(e)return{mode:e,source:"cli"};let n=(t.envMode??"").trim().toLowerCase();return n==="incremental"||n==="safe"||n==="full"?{mode:n,source:"env"}:t.platform==="win32"?{mode:t.env.WT_SESSION?"incremental":"safe",source:"auto"}:{mode:"incremental",source:"auto"}}function oN(t,e=!1){let n=bQ(),o=TQ({platform:process.platform,env:process.env,cliMode:t?.renderMode,envMode:process.env.PANDA_RENDER_MODE}),r={exitOnCtrlC:e};return r.renderMode=o.mode,xQ(process.env.PANDA_RENDER_DEBUG)&&process.stderr?.write?.(`[panda-render] mode=${o.mode} source=${o.source} platform=${process.platform} wtSession=${process.env.WT_SESSION?"1":"0"}
2010
+ `),n&&(r.stdin=n),{options:r,stdin:n??process.stdin,ownership:n?"dev-tty":"process"}}var iN=new WeakMap;function wQ(t){if(!t||typeof t!="object")return;let e=t.code;return typeof e=="string"?e:void 0}function _Q(t){let e=wQ(t);return e?e==="EIO"||e==="EBADF"||e==="ENOTCONN":!1}function sN(t){if(iN.has(t))return;let e=n=>{if(!_Q(n))try{let o=n instanceof Error?n.stack??n.message:`non-error rejection: ${String(n)}`;process.stderr?.write?.(`[panda-cli] stdin error: ${o}
2011
+ `)}catch{}};iN.set(t,e),t.on("error",e)}function aN(t,e){try{t.pause()}catch{}if(e==="dev-tty")try{t.destroy()}catch{}}import{jsx as e1}from"react/jsx-runtime";import{useCallback as Jt,useEffect as ho,useLayoutEffect as Gie,useMemo as Rr,useReducer as Zie,useRef as Yt,useState as he}from"react";import DF from"chalk";import{spawnSync as Jie}from"node:child_process";import{KeyboardEvent as Yie,useInput as Qie}from"panda-ink";import{useCallback as SQ,useEffect as kQ}from"react";import{useInput as IQ}from"panda-ink";function hd(t,e={}){let{context:n="Global",isActive:o=!0}=e,r=zs();kQ(()=>{if(!r||!o)return;let s=[];for(let[a,l]of Object.entries(t))s.push(r.registerHandler({action:a,context:n,handler:l}));return()=>{for(let a of s)a()}},[n,t,r,o]);let i=SQ((s,a,l)=>{if(!r)return;let c=[...r.activeContexts,n,"Global"],u=[...new Set(c)],d=r.resolve(s,a,u);switch(d.type){case"match":if(r.setPendingChord(null),d.action in t){let p=t[d.action];p&&p()!==!1&&l.stopImmediatePropagation()}break;case"chord_started":r.setPendingChord(d.pending),l.stopImmediatePropagation();break;case"chord_cancelled":r.setPendingChord(null);break;case"unbound":r.setPendingChord(null),l.stopImmediatePropagation();break;case"none":break}},[n,t,r]);IQ(i,{isActive:o})}import{useCallback as dN,useMemo as pN,useState as EQ}from"react";import{useApp as PQ}from"panda-ink";import{useCallback as lN,useEffect as CQ,useRef as cN}from"react";var uN=800;function yd(t,e,n){let o=cN(0),r=cN(void 0),i=lN(()=>{r.current&&(clearTimeout(r.current),r.current=void 0)},[]);return CQ(()=>()=>{i()},[i]),lN(()=>{let s=Date.now();s-o.current<=uN&&r.current!==void 0?(i(),t(!1),e()):(n?.(),t(!0),i(),r.current=setTimeout(()=>{t(!1),r.current=void 0},uN)),o.current=s},[t,e,n,i])}function fN(t,e,n,o=!0){let{exit:r}=PQ(),[i,s]=EQ({pending:!1,keyName:null}),a=pN(()=>n??r,[n,r]),l=yd(f=>s({pending:f,keyName:"Ctrl-C"}),a),c=yd(f=>s({pending:f,keyName:"Ctrl-D"}),a),u=dN(()=>{e?.()||l()},[l,e]),d=dN(()=>{c()},[c]),p=pN(()=>({"app:interrupt":u,"app:exit":d}),[u,d]);return t(p,{context:"Global",isActive:o}),i}import{useEffect as RQ,useState as AQ}from"react";function Iy(t,e){let n=Number(t);return!Number.isFinite(n)||n<1?e:Math.min(4096,Math.floor(n))}function Fo(){let[t,e]=AQ({columns:Iy(process.stdout?.columns,80),rows:Iy(process.stdout?.rows,24)});return RQ(()=>{function n(){e({columns:Iy(process.stdout?.columns,80),rows:Iy(process.stdout?.rows,24)})}let o=process.stdout;if(o?.on)return o.on("resize",n),process.on?.("SIGWINCH",n),()=>{o.off?.("resize",n),process.off?.("SIGWINCH",n)}},[]),t}function Nk(t){return t.conversationActionInFlight||t.streamingState!=="Idle"||t.running||t.pendingToolCalls.some(e=>e.status==="executing"||e.status==="pending"||e.status==="confirming")}function mN(t,e){return!(t===void 0||t===e||t===En&&e!==En)}import MQ from"node:path";function gN(t){return t.filter(e=>e.type!=="hunk")}function Cy(t){let e=[],n=0,o=0;for(let r of t){e.push({type:"hunk",content:`@@ -${r.oldStart},${r.oldLines} +${r.newStart},${r.newLines} @@`});for(let i of r.lines)i.startsWith("+")?(e.push({type:"added",content:i}),n++):i.startsWith("-")?(e.push({type:"removed",content:i}),o++):i.startsWith(" ")&&e.push({type:"context",content:i})}return{lines:e,added:n,removed:o}}var DQ={read_file:"\u8BFB\u53D6\u6587\u4EF6",write_file:"\u5199\u5165\u6587\u4EF6",edit_file:"\u7F16\u8F91\u6587\u4EF6",grep:"\u6587\u672C\u641C\u7D22",glob_file_search:"\u6587\u4EF6\u5339\u914D",list_files:"\u5217\u51FA\u6587\u4EF6",run_terminal_cmd:"\u6267\u884C\u547D\u4EE4",web_search:"\u7F51\u7EDC\u641C\u7D22",web_fetch:"\u7F51\u9875\u6293\u53D6",ask_question:"\u53D1\u8D77\u63D0\u95EE",delete_file:"\u5220\u9664\u6587\u4EF6",await_shell:"\u7B49\u5F85\u4EFB\u52A1",stop_shell:"\u505C\u6B62\u4EFB\u52A1",list_skills:"\u5217\u51FA\u6280\u80FD",use_skill:"\u4F7F\u7528\u6280\u80FD"};function Ey(t,e){return e?{pending:"w",confirming:"c",executing:"r",success:"o",error:"x"}[t]??t:{pending:"wait",confirming:"confirm",executing:"run",success:"ok",error:"fail"}[t]??t}function Py(t){return t?MQ.basename(t):"(unknown)"}function OQ(t,e){return Number.isFinite(t)&&Number.isFinite(e)?`[L${t}-${e}]`:Number.isFinite(t)?`[L${t}-]`:Number.isFinite(e)?`[-L${e}]`:""}function $k(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="read_file"?null:e}function Fk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="write_file"?null:e}function Uk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="edit_file"?null:e}function hN(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="grep"?null:e}function yN(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="glob_file_search"?null:e}function Bk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="list_files"?null:e}function jk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="web_search"?null:e}function zk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="web_fetch"?null:e}function Wk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="delete_file"?null:e}function Kk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="ask_question"||!Array.isArray(e.questions)?null:e}function Hk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="list_skills"?null:e}function Vk(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="use_skill"?null:e}function io(t){return!t||typeof t!="object"?{}:t}function zt(t,e){let n=t[e];return typeof n=="string"&&n.trim()?n:void 0}function LQ(t,e){let n=Kk(t.displayData);if(!n)return null;let o=e?"\u63D0\u95EE":"\u53D1\u8D77\u63D0\u95EE",r=n.title?.trim()?` \xB7 ${n.title.trim()}`:"",i=t.status,s=Array.isArray(n.questions)&&n.questions.length>0;if(i==="confirming"||(i==="pending"||i==="executing")&&s)return`${o}${r} \xB7 ${e?"\u4E0B\u65B9\u5F39\u5C42\u9009\u62E9":"\u8BF7\u5728\u4E0B\u65B9\u5F39\u5C42\u4E2D\u9009\u62E9"}`;if(i==="executing"||i==="pending")return`${o}${r} \xB7 ${e?"\u2026":"\u51C6\u5907\u95EE\u5377\u2026"}`;if(i==="success"){let a=t.resultText?.trim();if(a){let l=a.split(`
2012
+ `)[0].replace(/\s+/g," ").trim(),c=e?42:120,u=l.length>c?`${l.slice(0,c-1)}\u2026`:l;return`${o}${r} \xB7 ${u}`}return`${o}${r} \xB7 ${e?"\u5B8C\u6210":"\u5DF2\u5B8C\u6210"}`}if(i==="error"){let a=(t.errorText??"").trim(),l=a?a.length>(e?24:80)?`${a.slice(0,e?21:77)}\u2026`:a:"\u5931\u8D25";return`${o}${r} \xB7 ${l}`}return null}function NQ(t,e){let n=$k(t.displayData);if(!n)return"\u8BFB\u53D6\u6587\u4EF6";let o=Py(n.uri);if(n.notFound)return`\u8BFB\u53D6 [${o}] [\u672A\u53D1\u73B0]`;let r=OQ(n.startLine,n.endLine);return`\u8BFB\u53D6 [${o}]${r?` ${r}`:""}`}function $Q(t,e){let n=Fk(t.displayData),o=Py(n?.uri),r=n?.content??"";if(!r)return`\u5199\u5165 [${o}]`;let s=r.split(/\r?\n/).length;return`\u5199\u5165 [${o}] [+${s} lines] ${s} \u884C`}function FQ(t,e){let n=Uk(t.displayData),o=Py(n?.uri),r=n?.structuredPatch??[];if(r.length===0)return`\u7F16\u8F91 [${o}]`;let i=Cy(r);return`\u7F16\u8F91 [${o}] [ +${i.added} -${i.removed} ]`}function UQ(t,e){let n=io(t.displayData),o=io(t.args),r=zt(n,"pattern")??zt(o,"pattern")??"(empty)",i=zt(n,"searchDir")??zt(o,"searchDir")??zt(o,"path")??".",s=`\u641C\u7D22 [${r}] | \u8303\u56F4: ${i}`,a=n.items,l=Array.isArray(a)?a.length:0;return t.status==="success"||t.status==="error"?`${s} \xB7 \u5339\u914D ${l} \u6761`:s}function BQ(t,e){let n=io(t.displayData),o=io(t.args),r=zt(n,"pattern")??zt(o,"pattern")??zt(o,"glob_pattern")??"(empty)",i=zt(n,"searchDir")??zt(o,"searchDir")??zt(o,"target_directory")??".",s=`\u5339\u914D [${r}] | \u8303\u56F4: ${i}`,a=n.items,l=Array.isArray(a)?a.length:0;return t.status==="success"||t.status==="error"?`${s} \xB7 \u5339\u914D ${l} \u6761`:s}function jQ(t,e){let n=Bk(t.displayData),o=n?.dir_path??zt(io(t.args),"dir_path")??".",r=n?.entries?.length??0,s=t.status==="success"||t.status==="error"?` \xB7 \u5171 ${r} \u9879`:"";return e?`\u5217\u51FA ${o}${s}`:`\u5217\u51FA\u6587\u4EF6 [${o}]${s}`}function zQ(t,e){let n=jk(t.displayData),o=io(t.args),r=n?.query??zt(o,"query")??"(empty)",i=n?.numResults??o.numResults,s=typeof i=="number"?i:void 0,a=typeof s=="number"?` (${s})`:"";return e?`\u641C\u7D22 ${r.length>36?`${r.slice(0,33)}\u2026`:r}${a}`:`\u7F51\u7EDC\u641C\u7D22 [${r}]${a}`}function WQ(t,e){let n=zk(t.displayData),o=io(t.args),r=n?.url??zt(o,"url")??"(empty)",i=typeof n?.httpStatus=="number"?` ${n.httpStatus}`:"",s=n?.format?` ${n.format}`:"";return e?`\u6293\u53D6 ${r.length>44?`${r.slice(0,41)}\u2026`:r}${i}`:`\u7F51\u9875\u6293\u53D6 ${r}${s}${i}`}function KQ(t,e){let n=Wk(t.displayData),o=io(t.args),r=n?.uri??zt(o,"filepath")??"",i=Py(r||void 0);return e?`\u5220\u9664 ${i}`:`\u5220\u9664\u6587\u4EF6 [${i}]`}function HQ(t,e){let n=Hk(t.displayData),o=Array.isArray(n?.items)?n.items.length:void 0,r=typeof o=="number"?e?` ${o}`:` \xB7 ${o} \u9879`:"";return e?`\u6280\u80FD${r}`:`\u5217\u51FA\u6280\u80FD${r||(t.status==="pending"||t.status==="executing"?" \xB7 \u2026":"")}`}function VQ(t,e){let n=Vk(t.displayData),o=io(t.args),r=n?.skillName??zt(o,"skill_name")??"(unknown)",i=Ey(t.status,e);return e?`\u6280\u80FD ${r} [${i}]`:`\u4F7F\u7528\u6280\u80FD [${r}] [${i}]`}function qQ(t,e){let n=io(t.displayData);if(n.tool!=="run_terminal_cmd")return qk(t,e);let o=Ey(t.status,e),r=zt(n,"description"),i=n.exitCode,s=typeof i=="number"||i===null?i===null?"":` code=${i}`:"",a=n.blockTimedOut?" [\u8D85\u65F6]":"",l=zt(n,"commandSummary")??zt(n,"command")??"",c=l?`(${l})`:"(no command)",u=r??"(no description)";if(e){let d=l.length>28?`${l.slice(0,25)}\u2026`:l,p=(r??"").length>18?`${(r??"").slice(0,15)}\u2026`:r??"";return`cmd${d?`(${d})`:"(no command)"} ${p||"(no description)"} [${o}]${s}${a}`}return`cmd${c} ${u} [${o}]${s}${a}`}function GQ(t){if(t.name!=="await_shell"&&t.name!=="stop_shell")return qk(t,!1);let e=t.name==="await_shell"?"\u67E5\u8BE2\u7EC8\u7AEF\u6267\u884C":"\u7EC8\u6B62\u7EC8\u7AEF\u6267\u884C",n=t.status==="success"?"\u6210\u529F":t.status==="error"?"\u5931\u8D25":"\u6267\u884C\u4E2D";return`${e} [${n}]`}function qk(t,e){let n=Ey(t.status,e),o=DQ[t.name]??t.name,r=t.resultText??t.errorText??"";return`${o} [${n}]${r?` | ${r}`:""}`}function ZQ(t,e){let{compact:n}=e;if(t.name==="ask_question"){let o=LQ(t,n);if(o)return o}return t.name==="read_file"?NQ(t,n):t.name==="write_file"?$Q(t,n):t.name==="edit_file"?FQ(t,n):t.name==="delete_file"?KQ(t,n):t.name==="grep"?UQ(t,n):t.name==="glob_file_search"?BQ(t,n):t.name==="list_files"?jQ(t,n):t.name==="web_search"?zQ(t,n):t.name==="web_fetch"?WQ(t,n):t.name==="run_terminal_cmd"?qQ(t,n):t.name==="await_shell"||t.name==="stop_shell"?GQ(t):t.name==="list_skills"?HQ(t,n):t.name==="use_skill"?VQ(t,n):qk(t,n)}function Ul(t,e){return ZQ(t,e)}function Bl(t,e){let n=Ey(t.status,e),o=e?42:72,r=t.name;return`${r.length>o?`${r.slice(0,o-1)}\u2026`:r} [${n}]`}var vN={historyItems:[],currentTurnId:void 0,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{},streamingState:"Idle",conversationActionInFlight:!1,contextMetrics:null,running:!1,done:!1,exitCode:null};function bN(t,e=Date.now()){return!Number.isFinite(t)||t<=0?0:Math.max(0,Math.floor((e-t)/1e3))}function Ws(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function xN(){let t=typeof process<"u"?process.env.PANDA_CLI_STREAMING_TOKENS:void 0;if(!t)return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"||e==="always"}function TN(t,e){if(e<=t)return e;let n=e-t,o;return n<70?o=3:n<200?o=Math.max(8,Math.ceil(n*.15)):o=50,Math.min(t+o,e)}var wN=420,_N=280,SN=160,kN=120;function Gk(t,e,n){let o=t+e;return o.length<=n?o:o.slice(-n)}function Zk(t,e,n){if(t.length>=n)return t;let o=Math.max(0,n-t.length);return t+e.slice(0,o)}function Jk(t){return t.replace(/\s+/g," ").trim()}function IN(t,e){let n=t.length;if(n===0){let s=e?.tokenCount;return typeof s=="number"&&s>0?`0 \u5DE5\u5177 \xB7 ${Ws(s)} tokens`:"0 \u5DE5\u5177"}let o=t.filter(s=>s.status==="executing"||s.status==="pending"||s.status==="confirming").length,r=[`${n} \u5DE5\u5177`];o>0&&r.push(`${o} \u8FDB\u884C\u4E2D`);let i=e?.tokenCount;return typeof i=="number"&&i>0&&r.push(`${Ws(i)} tokens`),r.join(" \xB7 ")}function Pn(t){return`${t}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function JQ(t){return t&&typeof t=="object"?t:{}}function Ry(t){let e=JQ(t).subWorkId;return typeof e=="string"&&e.trim()?e.trim():void 0}function PN(t,e){for(let n of t.historyItems)if(n.type==="tool_group"){for(let o of n.tools)if(Ry(o.displayData)===e)return!0}for(let n of t.pendingToolCalls)if(Ry(n.displayData)===e)return!0;return!1}function RN(t,e){if(e.name==="ask_question")return!1;let n=e.workId?.trim();if(!n||!PN(t,n))return!1;if(typeof e.name=="string"&&e.name.startsWith("agent_")){let o=Ry(e.displayData);return typeof o=="string"&&o.trim().length>0&&o.trim()!==n}return!0}function YQ(t,e){let n=Ry(e.displayData);if(n)return n;let o=e.workId?.trim();if(o&&(t.subAgentFeeds[o]||PN(t,o)))return o}function Yk(t){return(t?.eventSeq??0)+1}function AN(t,e){let n=Math.max(0,(t?.approxStreamChars??0)+e);return{approxStreamChars:n,tokenCount:Math.round(n/4)}}function vd(t,e){let n=YQ(t,e);if(!n)return t;let o=e.name.startsWith("mcp_")?Bl(e,!0):Ul(e,{compact:!0}).split(`
2013
+ `).map(l=>l.trim()).find(Boolean)??e.name,r=o.length>200?`${o.slice(0,199)}\u2026`:o,i=t.subAgentFeeds[n]??{activityTail:""},s=Yk(i),a=e.name.startsWith("agent_")?e.name.replace("agent_",""):i.agentType;return{...t,subAgentFeeds:{...t.subAgentFeeds,[n]:{...i,lastToolSummary:r,eventSeq:s,latestEvent:{kind:"tool",text:r,seq:s},agentType:a}}}}function CN(t,e){let n=t.findIndex(r=>r.id===e.id);if(n<0)return[...t,e];let o=t.slice();return o[n]={...o[n],...e},o}function bd(t,e,n){let o=!1,r=t.map(i=>{if(i.type!=="tool_group")return i;let s=!1,a=i.tools.map(l=>l.id!==e?l:(s=!0,o=!0,n(l)));return s?{...i,tools:a}:i});return o?r:t}function MN(t){let e=t.pendingAssistant;if(!e.trim())return{...t,pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null};let n={id:Pn("assistant"),type:"assistant",text:e};return{...t,historyItems:[...t.historyItems,n],pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:{historyItemId:n.id,text:n.text}}}function QQ(t){if(t.pendingToolCalls.length===0)return t;let e=t.pendingToolCalls.filter(o=>!o.renderedInHistory&&!RN(t,o));if(e.length===0)return{...t,pendingToolCalls:[]};let n={id:Pn("tools"),type:"tool_group",tools:e};return{...t,historyItems:[...t.historyItems,n],pendingToolCalls:[]}}function DN(t){let e=t.pendingThinking;return e.trim()?{...t,historyItems:[...t.historyItems,{id:Pn("thinking"),type:"thinking",text:e}],pendingThinking:""}:{...t,pendingThinking:""}}function XQ(t){return t.pendingToolCalls.some(o=>o.status==="confirming")?{streamingState:"WaitingForConfirmation",running:!0}:t.pendingToolCalls.some(o=>o.status==="executing"||o.status==="pending")?{streamingState:"Responding",running:!0}:{streamingState:"Idle",running:!1}}function eX(t,e){let n=e.prompt?[...t.historyItems,{id:Pn("user"),type:"user",text:e.prompt}]:t.historyItems;return{...t,currentTurnId:e.turnId,running:!0,done:!1,exitCode:null,streamingState:"Responding",conversationActionInFlight:!1,historyItems:n,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{}}}function _r(t,e){return!e||!t.currentTurnId?!1:t.currentTurnId!==e}function tX(t,e){if(_r(t,e.turnId))return t;if(e.isSubAgentWork&&e.workId){let o=e.workId,r=t.subAgentFeeds[o]??{activityTail:""},i=AN(r,e.chunk.length),s=Gk(r.thinkingTail??"",e.chunk,_N),a=Zk(r.thinkingHead??"",e.chunk,kN),l=Jk(a),c=Yk(r),u={...t.subAgentFeeds,[o]:{...r,...i,thinkingTail:s,thinkingHead:a,eventSeq:c,latestEvent:{kind:"thinking",text:l,seq:c}}};return e.done?{...t,subAgentFeeds:u}:{...t,subAgentFeeds:u}}let n=t.pendingThinking.concat(e.chunk);if(e.done){let o=n;return o.trim()?{...t,historyItems:[...t.historyItems,{id:Pn("thinking"),type:"thinking",text:o}],pendingThinking:""}:{...t,pendingThinking:""}}return{...t,pendingThinking:n}}function nX(t,e){if(_r(t,e.turnId))return t;if(e.isSubAgentWork&&e.workId){let o=e.workId,r=t.subAgentFeeds[o]??{activityTail:""},i=AN(r,e.chunk.length),s=Gk(r.activityTail,e.chunk,wN),a=Zk(r.assistantHead??"",e.chunk,SN),l=Jk(a),c=Yk(r);return{...t,subAgentFeeds:{...t.subAgentFeeds,[o]:{...r,...i,activityTail:s,assistantHead:a,eventSeq:c,latestEvent:{kind:"assistant",text:l,seq:c}}}}}let n=t.pendingAssistant.concat(e.chunk);if(e.done){let o=n;if(!o.trim())return{...t,pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null};let r={id:Pn("assistant"),type:"assistant",text:o};return{...t,historyItems:[...t.historyItems,r],pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:{historyItemId:r.id,text:r.text}}}return{...t,pendingAssistant:n,pendingAssistantChunks:[]}}function rX(t,e){if(_r(t,e.turnId)||e.isSubAgentWork)return t;if(!e.text.trim())return{...t,pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null};let n={id:Pn("assistant"),type:"assistant",text:e.text};return{...t,historyItems:[...t.historyItems,n],pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:{historyItemId:n.id,text:n.text}}}function oX(t,e){if(_r(t,e.turnId))return t;let n={id:e.toolCallId,name:e.toolName,status:"pending",renderedInHistory:!1,args:e.args,displayData:e.displayData,...e.workId?{workId:e.workId}:{}},o=DN(t);o=MN(o);let r=CN(o.pendingToolCalls,n),i=RN({...o,pendingToolCalls:r},n),s={...n,renderedInHistory:!i},a=CN(o.pendingToolCalls,s),l={...o,pendingToolCalls:a,streamingState:"Responding"},c=i?l:{...l,historyItems:[...l.historyItems,{id:Pn("tools"),type:"tool_group",tools:[s]}]};return vd(c,s)}function iX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,status:"executing",...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,status:"executing",...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,streamingState:"Responding",pendingToolCalls:o};return r?vd(i,r):i}function sX(t,e){let n=s=>e.confirming?"confirming":s.status==="confirming"?"pending":s.status,o=bd(t.historyItems,e.toolCallId,s=>({...s,status:n(s)})),r=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,status:n(s)}:s),i=r.some(s=>s.status==="confirming");return{...t,historyItems:o,pendingToolCalls:r,streamingState:i?"WaitingForConfirmation":"Responding"}}function aX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,name:e.toolName,status:"success",resultText:e.resultText,durationMs:e.durationMs,displayData:e.displayData??s.displayData,structuredData:e.structuredData!==void 0?e.structuredData:s.structuredData,...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,name:e.toolName,status:"success",resultText:e.resultText,durationMs:e.durationMs,displayData:e.displayData??s.displayData,structuredData:e.structuredData!==void 0?e.structuredData:s.structuredData,...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,pendingToolCalls:o};return r?vd(i,r):i}function EN(t,e){return e===void 0?t:e===null||typeof e!="object"||t===null||typeof t!="object"?e:{...t,...e}}function lX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,name:e.toolName||s.name,status:s.status,displayData:EN(s.displayData,e.displayData),...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,name:e.toolName||s.name,status:s.status,displayData:EN(s.displayData,e.displayData),...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,pendingToolCalls:o};return r?vd(i,r):i}function cX(t,e){if(_r(t,e.turnId))return t;let n=bd(t.historyItems,e.toolCallId,s=>({...s,name:e.toolName,status:"error",errorText:e.errorText,durationMs:e.durationMs,displayData:e.displayData!==void 0?e.displayData:s.displayData,...e.workId&&!s.workId?{workId:e.workId}:{}})),o=t.pendingToolCalls.map(s=>s.id===e.toolCallId?{...s,name:e.toolName,status:"error",errorText:e.errorText,durationMs:e.durationMs,displayData:e.displayData!==void 0?e.displayData:s.displayData,...e.workId&&!s.workId?{workId:e.workId}:{}}:s),r=o.find(s=>s.id===e.toolCallId),i={...t,historyItems:n,pendingToolCalls:o};return r?vd(i,r):i}function Qk(t){let e=DN(t);return e=MN(e),QQ(e)}function uX(t){if(!Number.isFinite(t)||t<0)return"\u2014";if(t<1e3)return`${(t/1e3).toFixed(2).replace(/\.?0+$/,"")}s`;if(t<6e4)return`${(t/1e3).toFixed(1).replace(/\.?0+$/,"")}s`;let e=Math.floor(t/6e4),n=Math.floor(t%6e4/1e3);return n>0?`${e}m ${n}s`:`${e}m`}function dX(t){return t?oy(t,Ui):"Unknown"}function pX(t,e){if(_r(t,e.turnId))return t;let n=Qk(t);n={...n,currentTurnId:void 0,running:!1,done:!1,exitCode:null,streamingState:"Idle",conversationActionInFlight:!1,subAgentFeeds:{}};let r=(typeof e.metrics?.duration=="number"?e.metrics.duration:void 0)??e.durationMs;if(typeof r=="number"){let i=e.metrics?.modelName?.trim()||"Unknown model",s=dX(e.metrics?.interactionMode);n={...n,historyItems:[...n.historyItems,{id:Pn("info"),type:"info",text:`\u4F1A\u8BDD\u5B8C\u6210 \xB7 \u6A21\u578B\uFF1A${i} \xB7 \u6A21\u5F0F\uFF1A${s} \xB7 \u8017\u65F6\uFF1A${uX(r)}`}]}}return n}function fX(t,e){return{...t,contextMetrics:{usagePercentage:e.usagePercentage,contextWindow:e.contextWindow,contextTokensTotal:e.contextTokensTotal,tokenSource:e.tokenSource,fullEstimateTokens:e.fullEstimateTokens,usageTokensTotal:e.usageTokensTotal,estimatedDeltaTokens:e.estimatedDeltaTokens,lastRequestPromptTokens:e.lastRequestPromptTokens,lastRequestCompletionTokens:e.lastRequestCompletionTokens,lastRequestCachedTokens:e.lastRequestCachedTokens,lastRequestCacheWriteTokens:e.lastRequestCacheWriteTokens,elapsedMs:e.elapsedMs,effortLevel:e.effortLevel,isOverflow:e.isOverflow}}}function mX(t,e){if(_r(t,e.turnId))return t;let n=Qk(t),o=e.turnId?`\u4F1A\u8BDD ${e.turnId} \u5931\u8D25\uFF1A${e.errorText}\uFF08\u53EF\u56DE\u64A4\u81F3\u8BE5\u8F6E\u4E4B\u524D\uFF09`:`\u4F1A\u8BDD\u5931\u8D25\uFF1A${e.errorText}\uFF08\u53EF\u56DE\u64A4\u81F3\u8BE5\u8F6E\u4E4B\u524D\uFF09`;return{...n,currentTurnId:void 0,running:!1,done:!1,exitCode:null,streamingState:"Idle",conversationActionInFlight:!1,subAgentFeeds:{},historyItems:[...n.historyItems,{id:Pn("error"),type:"error",text:o}]}}function gX(t,e){if(_r(t,e.turnId))return t;let n=Qk(t);return{...n,currentTurnId:void 0,running:!1,done:!1,exitCode:null,streamingState:"Idle",conversationActionInFlight:!1,subAgentFeeds:{},historyItems:[...n.historyItems,{id:Pn("info"),type:"info",text:"\u4F1A\u8BDD\u5DF2\u53D6\u6D88"}]}}var hX={HYDRATE_HISTORY:(t,e)=>({...t,historyItems:e.historyItems,currentTurnId:void 0,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{},running:!1,streamingState:"Idle",conversationActionInFlight:!1}),RESET_STREAMING_STATE:t=>({...t,currentTurnId:void 0,pendingThinking:"",pendingAssistant:"",pendingAssistantChunks:[],assistantStreamOverlap:null,pendingToolCalls:[],subAgentFeeds:{},running:!1,streamingState:"Idle",conversationActionInFlight:!1}),CLEAR_ASSISTANT_STREAM_OVERLAP:t=>t.assistantStreamOverlap?{...t,assistantStreamOverlap:null}:t,APPEND_INFO:(t,e)=>({...t,historyItems:[...t.historyItems,{id:Pn("info"),type:"info",text:e.text}]}),APPEND_TOOL_DEMO:(t,e)=>{let n=e,o={id:Pn("demo"),name:n.toolName,status:"success",displayData:n.displayData};return{...t,historyItems:[...t.historyItems,{id:Pn("tools"),type:"tool_group",tools:[o]}]}},APPEND_ERROR:(t,e)=>({...t,historyItems:[...t.historyItems,{id:Pn("error"),type:"error",text:e.text}]}),TURN_STARTED:(t,e)=>eX(t,e),THINKING_CHUNK:(t,e)=>tX(t,e),ASSISTANT_CHUNK:(t,e)=>nX(t,e),ASSISTANT_FINAL:(t,e)=>rX(t,e),TOOL_REQUESTED:(t,e)=>oX(t,e),TOOL_EXECUTING:(t,e)=>iX(t,e),SET_CONFIRMING:(t,e)=>sX(t,e),TOOL_EXECUTED:(t,e)=>aX(t,e),TOOL_PROGRESS:(t,e)=>lX(t,e),TOOL_FAILED:(t,e)=>cX(t,e),CONTEXT_METRICS_UPDATED:(t,e)=>fX(t,e),TURN_COMPLETED:(t,e)=>pX(t,e),TURN_FAILED:(t,e)=>mX(t,e),TURN_CANCELLED:(t,e)=>gX(t,e),CONVERSATION_ACTION_STARTED:t=>({...t,conversationActionInFlight:!0,running:!0,streamingState:"Responding"}),CONVERSATION_ACTION_ENDED:t=>{let e={...t,conversationActionInFlight:!1};return{...e,...XQ(e)}}};function ON(t,e){let n=hX[e.type];return n?n(t,e):t}function LN(){return{...vN}}gr();var Ay=class{chunks=[];pendingTailChunks=[];append(e){if(!e)return"";this.chunks.push(e);let n=e.lastIndexOf(`
2014
+ `);if(n<0)return this.pendingTailChunks.push(e),"";let o=[...this.pendingTailChunks,e.slice(0,n+1)].join("");this.pendingTailChunks=[];let r=e.slice(n+1);return r&&this.pendingTailChunks.push(r),o}flushAll(){let e=this.chunks.join("");return this.reset(),e}reset(){this.chunks=[],this.pendingTailChunks=[]}hasContent(){return this.chunks.length>0}};function yX(t){if(typeof t=="string")return t;if(t&&typeof t=="object"&&typeof t.llmContent=="string")return t.llmContent;try{return JSON.stringify(t,null,2)}catch{return String(t)}}function NN(t){if(t?.displayData!==void 0)return t.displayData;let e=t?.result;if(e&&typeof e=="object"&&"displayData"in e)return e.displayData}function vX(t){let e=t?.result;if(e&&typeof e=="object"&&"structuredData"in e)return e.structuredData}function Rn(t,e){return t.conversationId===e()}function It(t){return typeof t.turnId=="string"?t.turnId:void 0}function jl(t,e){let n=It(t);return!!(n&&e.activeTurnId&&n!==e.activeTurnId)}function bX(t){let e=t.streamingApproxRef;e&&(e.current.targetChars=0,e.current.turnStartedAt=Date.now(),e.current.thinkingCharCount=0,e.current.thinkingEnded=!1)}function Xk(t){let e=t.streamingApproxRef;e&&(e.current.targetChars=0)}function $N(t,e){!t.streamingApproxRef||e<=0||(t.streamingApproxRef.current.targetChars+=e)}function FN(t,e){!t.streamingApproxRef||e<=0||(t.streamingApproxRef.current.thinkingCharCount+=e,t.streamingApproxRef.current.targetChars+=e)}function xd(t,e){if(!t.assistantLineBuffer.hasContent())return;let n=t.assistantLineBuffer.flushAll();t.dispatch({type:"ASSISTANT_FINAL",text:n,turnId:e??t.activeTurnId})}function xX(t,e){e.freezeUiUntilTurnEnd||Rn(t,e.getConversationId)&&e.dispatch({type:"CONVERSATION_ACTION_STARTED"})}function TX(t,e){e.freezeUiUntilTurnEnd||Rn(t,e.getConversationId)&&e.dispatch({type:"CONVERSATION_ACTION_ENDED"})}function wX(t,e,n){Rn(t,e.getConversationId)&&(e.assistantLineBuffer.reset(),bX(e),e.activeTurnId=It(t),e.dispatch({type:"TURN_STARTED",turnId:It(t),prompt:typeof t.displayPrompt=="string"&&t.displayPrompt.length>0?t.displayPrompt:t.prompt}),n&&t.turnId&&t.prompt&&n(t.turnId,t.prompt))}function _X(t,e){if(e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId))return;let n=e.streamingApproxRef;if(n&&(n.current.thinkingEnded=!1),!t.chunk)return;let o=t;FN(e,String(t.chunk).length),e.dispatch({type:"THINKING_CHUNK",chunk:String(t.chunk),done:!1,turnId:typeof t.turnId=="string"?t.turnId:void 0,workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:o.isSubAgentWork===!0})}function SX(t,e,n){if(n.freezeUiUntilTurnEnd||!Rn(t,n.getConversationId))return;let o=t,r=e||!!o.done;if(r){let i=n.streamingApproxRef;i&&(i.current.thinkingEnded=!0)}FN(n,String(o.chunk??"").length),n.dispatch({type:"THINKING_CHUNK",chunk:String(o.chunk??""),done:r,turnId:typeof t.turnId=="string"?t.turnId:void 0,workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:o.isSubAgentWork===!0})}function kX(t,e){if(!Rn(t,e.getConversationId)||e.freezeUiUntilTurnEnd)return;let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),t.chunk&&UN(t,!1,e)}function UN(t,e,n){let o=t;if(jl(t,n))return;$N(n,String(o.chunk??"").length);let r=e||!!o.done;if(o.isSubAgentWork===!0){n.dispatch({type:"ASSISTANT_CHUNK",chunk:String(o.chunk??""),done:r,turnId:It(t),workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:!0});return}let i=n.assistantLineBuffer.append(String(o.chunk??""));i&&n.dispatch({type:"ASSISTANT_CHUNK",chunk:i,done:!1,turnId:It(t),workId:typeof o.workId=="string"?o.workId:void 0,isSubAgentWork:!1}),r&&xd(n,It(t))}function IX(t,e,n){n.freezeUiUntilTurnEnd||Rn(t,n.getConversationId)&&UN(t,e,n)}function Td(t,e){return e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId)||jl(t,e)?!1:(xd(e,It(t)),!0)}function wd(t){let e=t.workId;return typeof e=="string"&&e.trim()?e.trim():void 0}function CX(t,e){if(e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId)||jl(t,e)||!e.streamingApproxRef)return;let n=t,o=typeof n.argsDelta=="string"?n.argsDelta:"";$N(e,o.length)}function EX(t,e){if(!Td(t,e))return;let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),e.dispatch({type:"TOOL_REQUESTED",turnId:It(t),toolCallId:t.toolCallId,toolName:t.toolName,args:t.args,displayData:NN(t),workId:wd(t)})}function PX(t,e){e.freezeUiUntilTurnEnd||Rn(t,e.getConversationId)&&e.dispatch({type:"SET_CONFIRMING",toolCallId:t.toolCallId,confirming:!0})}function RX(t,e){Td(t,e)&&e.dispatch({type:"TOOL_EXECUTING",turnId:It(t),toolCallId:t.toolCallId,workId:wd(t)})}function AX(t,e){if(!Td(t,e))return;let n=t;n.displayData!==void 0&&e.dispatch({type:"TOOL_PROGRESS",turnId:It(t),toolCallId:String(n.toolCallId??""),toolName:String(n.toolName??""),displayData:n.displayData,workId:wd(n)})}function MX(t,e){Td(t,e)&&e.dispatch({type:"TOOL_EXECUTED",turnId:It(t),toolCallId:t.toolCallId,toolName:t.toolName,resultText:yX(t.result),durationMs:t.duration,displayData:NN(t),structuredData:vX(t),workId:wd(t)})}function DX(t){let e=t;if(e.displayData!==void 0)return e.displayData}function OX(t,e){Td(t,e)&&e.dispatch({type:"TOOL_FAILED",turnId:It(t),toolCallId:t.toolCallId,toolName:t.toolName,errorText:t.error instanceof Error?t.error.message:String(t.error),durationMs:t.duration,displayData:DX(t),workId:wd(t)})}async function LX(t,e){if(!Rn(t,e.getConversationId))return;!e.freezeUiUntilTurnEnd&&!jl(t,e)&&xd(e,It(t)),e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate());let n=typeof t.duration=="number"?t.duration:void 0,o=t.metrics&&typeof t.metrics=="object"?t.metrics:void 0;e.dispatch({type:"TURN_COMPLETED",turnId:It(t),durationMs:n,metrics:o}),(!It(t)||It(t)===e.activeTurnId)&&(e.activeTurnId=void 0);let r=e.streamingApproxRef;r&&(r.current.thinkingEnded=!0),Xk(e)}async function NX(t,e){if(!Rn(t,e.getConversationId))return;!e.freezeUiUntilTurnEnd&&!jl(t,e)&&xd(e,It(t)),e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate()),e.dispatch({type:"TURN_FAILED",turnId:String(t.turnId??""),errorText:typeof t.normalizedError=="string"&&t.normalizedError.trim().length>0?t.normalizedError:t.error instanceof Error?t.error.message:String(t.error)}),e.onTurnFailed&&e.onTurnFailed(typeof t.normalizedError=="string"&&t.normalizedError.trim().length>0?t.normalizedError:t.error instanceof Error?t.error.message:String(t.error)),(!It(t)||It(t)===e.activeTurnId)&&(e.activeTurnId=void 0);let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),Xk(e)}async function $X(t,e){if(!Rn(t,e.getConversationId))return;!e.freezeUiUntilTurnEnd&&!jl(t,e)&&xd(e,It(t)),e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate()),e.dispatch({type:"TURN_CANCELLED",turnId:It(t)}),(!It(t)||It(t)===e.activeTurnId)&&(e.activeTurnId=void 0);let n=e.streamingApproxRef;n&&(n.current.thinkingEnded=!0),Xk(e)}async function FX(t,e){if(Rn(t,e.getConversationId)&&(e.freezeUiUntilTurnEnd&&e.onFreezeTurnEndHydrate&&await Promise.resolve(e.onFreezeTurnEndHydrate()),e.onTurnCancelled)){let n=t;e.onTurnCancelled({revertApplied:n.revertApplied===!0,restorePrompt:n.restorePrompt})}}function UX(t,e){if(e.freezeUiUntilTurnEnd||!Rn(t,e.getConversationId))return;let n=t,o=typeof n.contextTokensTotal=="number"&&Number.isFinite(n.contextTokensTotal)?n.contextTokensTotal:void 0;if(o===void 0)return;let r=typeof n.contextWindow=="number"&&Number.isFinite(n.contextWindow)&&n.contextWindow>0?n.contextWindow:2e5,i=n.tokenSource==="usage_plus_delta"||n.tokenSource==="full_estimate"?n.tokenSource:"full_estimate",s=typeof n.fullEstimateTokens=="number"&&Number.isFinite(n.fullEstimateTokens)?n.fullEstimateTokens:o,a=typeof n.usagePercentage=="number"&&Number.isFinite(n.usagePercentage)?n.usagePercentage:NaN;Number.isFinite(a)||(a=r>0?Math.min(100,Math.round(o/r*100)):0),e.dispatch({type:"CONTEXT_METRICS_UPDATED",usagePercentage:a,contextWindow:r,contextTokensTotal:o,tokenSource:i,fullEstimateTokens:s,usageTokensTotal:typeof n.usageTokensTotal=="number"?n.usageTokensTotal:void 0,estimatedDeltaTokens:typeof n.estimatedDeltaTokens=="number"?n.estimatedDeltaTokens:void 0,lastRequestPromptTokens:typeof n.lastRequestPromptTokens=="number"?n.lastRequestPromptTokens:void 0,lastRequestCompletionTokens:typeof n.lastRequestCompletionTokens=="number"?n.lastRequestCompletionTokens:void 0,lastRequestCachedTokens:typeof n.lastRequestCachedTokens=="number"?n.lastRequestCachedTokens:void 0,lastRequestCacheWriteTokens:typeof n.lastRequestCacheWriteTokens=="number"?n.lastRequestCacheWriteTokens:void 0,elapsedMs:typeof n.elapsedMs=="number"?n.elapsedMs:void 0,effortLevel:typeof n.effortLevel=="string"?n.effortLevel:void 0,isOverflow:n.isOverflow===!0})}function BN(t){let{eventBus:e,getConversationId:n,dispatch:o,onTurnStarted:r,onTurnFailed:i,onTurnCancelled:s,onConversationUiMessagesUpdated:a,freezeUiUntilTurnEnd:l,onFreezeTurnEndHydrate:c,streamingApproxRef:u}=t,d={getConversationId:n,dispatch:o,assistantLineBuffer:new Ay,onTurnFailed:i,onTurnCancelled:s,freezeUiUntilTurnEnd:l,onFreezeTurnEndHydrate:c,streamingApproxRef:u},p=[];if(p.push(e.on(P.TURN_STARTED,f=>wX(f,d,r))),p.push(e.on(P.TOOL_CALL_ARGS_STREAMING,f=>CX(f,d))),p.push(e.on(P.THINKING_STARTED,f=>_X(f,d))),p.push(e.subscribeStreaming(P.THINKING_STREAMING,(f,m)=>SX(f,m,d))),p.push(e.on(P.ASSISTANT_MESSAGE_STARTED,f=>kX(f,d))),p.push(e.subscribeStreaming(P.MESSAGE_STREAMING,(f,m)=>IX(f,m,d))),p.push(e.on(P.TOOL_CALL_REQUESTED,f=>EX(f,d))),p.push(e.on(P.TOOL_CONFIRMATION_REQUEST,f=>PX(f,d))),p.push(e.on(P.TOOL_CALL_EXECUTING,f=>RX(f,d))),p.push(e.on(P.TOOL_CALL_PROGRESS,f=>AX(f,d))),p.push(e.on(P.TOOL_CALL_EXECUTED,f=>MX(f,d))),p.push(e.on(P.TOOL_CALL_FAILED,f=>OX(f,d))),p.push(e.on(P.TURN_COMPLETED,f=>{LX(f,d)})),p.push(e.on(P.TURN_FAILED,f=>{NX(f,d)})),p.push(e.on(P.TURN_CANCELLED,f=>{$X(f,d)})),p.push(e.on(P.TURN_CANCEL_RESOLVED,f=>{FX(f,d)})),p.push(e.on(P.CONVERSATION_ACTION_STARTED,f=>xX(f,d))),p.push(e.on(P.CONVERSATION_ACTION_ENDED,f=>TX(f,d))),p.push(e.on(P.CONTEXT_METRICS_UPDATED,f=>UX(f,d))),a){let f=a;p.push(e.on(P.CONVERSATION_UI_MESSAGES_UPDATED,m=>{m?.conversationId===n()&&(l||f())}))}return()=>{for(let f of p)f()}}function Sr(t,e){if(typeof t=="string"&&t.length===1&&/[a-zA-Z]/.test(t)){let o=t.toLowerCase();return e.ctrl||e.super||e.meta?o:null}let n=e?.name;if(typeof n=="string"&&n.length===1&&/[a-zA-Z]/.test(n)){let o=n.toLowerCase();if(e.ctrl||e.super||e.meta)return o}return null}import p6,{useCallback as mI,useEffect as lee,useState as cee}from"react";import{stringWidth as so,wrapAnsi as BX}from"panda-ink";var eI=null,tI=null;function Uo(){return eI||(eI=new Intl.Segmenter(void 0,{granularity:"grapheme"})),eI}function _d(t){return t?Uo().segment(t)[Symbol.iterator]().next().value?.segment??"":""}function Ks(t){if(!t)return"";let e="";for(let{segment:n}of Uo().segment(t))e=n;return e}function jN(){return tI||(tI=new Intl.Segmenter(void 0,{granularity:"word"})),tI}var jX=10,cr=[],My=0,nI=!1,zN=0,oI=0,Dy=!1;function Oy(t,e="append"){t.length>0&&(nI&&cr.length>0?e==="prepend"?cr[0]=t+cr[0]:cr[0]=cr[0]+t:(cr.unshift(t),cr.length>jX&&cr.pop()),nI=!0,Dy=!1)}function WN(){return cr[0]??""}function iI(){nI=!1}function KN(t,e){zN=t,oI=e,Dy=!0,My=0}function HN(){return!Dy||cr.length<=1?null:(My=(My+1)%cr.length,{text:cr[My]??"",start:zN,length:oI})}function VN(t){oI=t}function sI(){Dy=!1}var zX=/^[\p{L}\p{N}\p{M}_]$/u,Sd=/\s/,Bo=t=>zX.test(t),Ly=t=>Sd.test(t),ji=t=>t.length>0&&!Ly(t)&&!Bo(t),ao=class t{constructor(e,n=0,o=0){this.measuredText=e;this.selection=o;this.offset=Math.max(0,Math.min(this.text.length,n))}measuredText;selection;offset;static fromText(e,n,o=0,r=0){return new t(new rI(e,n-1),o,r)}getViewportStartLine(e){if(e===void 0||e<=0)return 0;let{line:n}=this.getPosition(),o=this.measuredText.getWrappedText();if(o.length<=e)return 0;let r=Math.floor(e/2),i=Math.max(0,n-r),s=Math.min(o.length,i+e);return s-i<e&&(i=Math.max(0,s-e)),i}getViewportCharOffset(e){let n=this.getViewportStartLine(e);return n===0?0:this.measuredText.getWrappedLines()[n]?.startOffset??0}getViewportCharEnd(e){let n=this.getViewportStartLine(e),o=this.measuredText.getWrappedLines();if(e===void 0||e<=0)return this.text.length;let r=Math.min(o.length,n+e);return r>=o.length?this.text.length:o[r]?.startOffset??this.text.length}render(e,n,o,r,i){let{line:s,column:a}=this.getPosition(),l=this.measuredText.getWrappedText(),c=this.getViewportStartLine(i),u=i!==void 0&&i>0?Math.min(l.length,c+i):l.length;return l.slice(c,u).map((d,p)=>{let f=p+c,m=d;if(n){let B=Array.from(Uo().segment(d));if(f===l.length-1){let S=Math.min(6,B.length),x=B.length-S,T=B.length>S?B[x].index:0;m=n.repeat(x)+d.slice(T)}else m=n.repeat(B.length)}if(s!==f)return m.trimEnd();let g="",h=e,y="",v=0,b=!1;for(let{segment:B}of Uo().segment(m)){if(b){y+=B;continue}let S=v+so(B);S>a?(h=B,b=!0):(v=S,g+=B)}let R,M="";if(r&&f===l.length-1&&this.isAtEnd()&&r.text.length>0){let B=_d(r.text)||r.text[0];R=e?o(B):B;let S=r.text.slice(B.length);S.length>0&&(M=r.dim(S))}else R=e?o(h):h;return g+R+M+y.trimEnd()}).join(`
2015
2015
  `)}left(){if(this.offset===0)return this;let e=this.imageRefEndingAt(this.offset)??this.fileRefEndingAt(this.offset);if(e)return new t(this.measuredText,e.start);let n=this.measuredText.prevOffset(this.offset);return new t(this.measuredText,n)}right(){if(this.offset>=this.text.length)return this;let e=this.imageRefStartingAt(this.offset)??this.fileRefStartingAt(this.offset);if(e)return new t(this.measuredText,e.end);let n=this.measuredText.nextOffset(this.offset);return new t(this.measuredText,Math.min(n,this.text.length))}imageRefEndingAt(e){let n=this.text.slice(0,e).match(/\[Image #\d+\]$/);return n?{start:e-n[0].length,end:e}:null}imageRefStartingAt(e){let n=this.text.slice(e).match(/^\[Image #\d+\]/);return n?{start:e,end:e+n[0].length}:null}fileRefEndingAt(e){let n=this.text.slice(0,e).match(/\[file:[^\]]+\]$/);return n?{start:e-n[0].length,end:e}:null}fileRefStartingAt(e){let n=this.text.slice(e).match(/^\[file:[^\]]+\]/);return n?{start:e,end:e+n[0].length}:null}snapOutOfImageRef(e,n){for(let o of[/\[Image #\d+\]/g,/\[file:[^\]]+\]/g]){let r;for(;(r=o.exec(this.text))!==null;){let i=r.index,s=i+r[0].length;if(e>i&&e<s)return n==="start"?i:s}}return e}up(){let{line:e,column:n}=this.getPosition();if(e===0)return this;let o=this.measuredText.getWrappedText()[e-1];if(o===void 0)return this;let r=so(o);if(n>r){let s=this.getOffset({line:e-1,column:r});return new t(this.measuredText,s,0)}let i=this.getOffset({line:e-1,column:n});return new t(this.measuredText,i,0)}down(){let{line:e,column:n}=this.getPosition();if(e>=this.measuredText.lineCount-1)return this;let o=this.measuredText.getWrappedText()[e+1];if(o===void 0)return this;let r=so(o);if(n>r){let s=this.getOffset({line:e+1,column:r});return new t(this.measuredText,s,0)}let i=this.getOffset({line:e+1,column:n});return new t(this.measuredText,i,0)}startOfCurrentLine(){let{line:e}=this.getPosition();return new t(this.measuredText,this.getOffset({line:e,column:0}),0)}startOfLine(){let{line:e,column:n}=this.getPosition();return n===0&&e>0?new t(this.measuredText,this.getOffset({line:e-1,column:0}),0):this.startOfCurrentLine()}firstNonBlankInLine(){let{line:e}=this.getPosition(),o=(this.measuredText.getWrappedText()[e]||"").match(/^\s*\S/),r=o?.index?o.index+o[0].length-1:0,i=this.getOffset({line:e,column:r});return new t(this.measuredText,i,0)}endOfLine(){let{line:e}=this.getPosition(),n=this.measuredText.getLineLength(e),o=this.getOffset({line:e,column:n});return new t(this.measuredText,o,0)}findLogicalLineStart(e=this.offset){let n=this.text.lastIndexOf(`
2016
2016
  `,e-1);return n===-1?0:n+1}findLogicalLineEnd(e=this.offset){let n=this.text.indexOf(`
2017
2017
  `,e);return n===-1?this.text.length:n}getLogicalLineBounds(){return{start:this.findLogicalLineStart(),end:this.findLogicalLineEnd()}}createCursorWithColumn(e,n,o){let r=n-e,i=Math.min(o,r),s=e+i,a=this.measuredText.snapToGraphemeBoundary(s);return new t(this.measuredText,a,0)}endOfLogicalLine(){return new t(this.measuredText,this.findLogicalLineEnd(),0)}startOfLogicalLine(){return new t(this.measuredText,this.findLogicalLineStart(),0)}firstNonBlankInLogicalLine(){let{start:e,end:n}=this.getLogicalLineBounds(),r=this.text.slice(e,n).match(/\S/),i=e+(r?.index??0);return new t(this.measuredText,i,0)}upLogicalLine(){let{start:e}=this.getLogicalLineBounds();if(e===0)return new t(this.measuredText,0,0);let n=this.offset-e,o=e-1,r=this.findLogicalLineStart(o);return this.createCursorWithColumn(r,o,n)}downLogicalLine(){let{start:e,end:n}=this.getLogicalLineBounds();if(n>=this.text.length)return new t(this.measuredText,this.text.length,0);let o=this.offset-e,r=n+1,i=this.findLogicalLineEnd(r);return this.createCursorWithColumn(r,i,o)}nextWord(){if(this.isAtEnd())return this;let e=this.measuredText.getWordBoundaries();for(let n of e)if(n.isWordLike&&n.start>this.offset)return new t(this.measuredText,n.start);return new t(this.measuredText,this.text.length)}endOfWord(){if(this.isAtEnd())return this;let e=this.measuredText.getWordBoundaries();for(let n of e)if(n.isWordLike){if(this.offset>=n.start&&this.offset<n.end-1)return new t(this.measuredText,n.end-1);if(this.offset===n.end-1){for(let o of e)if(o.isWordLike&&o.start>this.offset)return new t(this.measuredText,o.end-1);return this}}for(let n of e)if(n.isWordLike&&n.start>this.offset)return new t(this.measuredText,n.end-1);return this}prevWord(){if(this.isAtStart())return this;let e=this.measuredText.getWordBoundaries(),n=null;for(let o of e)if(o.isWordLike&&o.start<this.offset){if(this.offset>o.start&&this.offset<=o.end)return new t(this.measuredText,o.start);n=o.start}return n!==null?new t(this.measuredText,n):new t(this.measuredText,0)}nextVimWord(){if(this.isAtEnd())return this;let e=this.offset,n=r=>this.measuredText.nextOffset(r),o=this.graphemeAt(e);if(!o)return this;if(Bo(o))for(;e<this.text.length&&Bo(this.graphemeAt(e));)e=n(e);else if(ji(o))for(;e<this.text.length&&ji(this.graphemeAt(e));)e=n(e);for(;e<this.text.length&&Sd.test(this.graphemeAt(e));)e=n(e);return new t(this.measuredText,e)}endOfVimWord(){if(this.isAtEnd())return this;let e=this.text,n=this.offset,o=i=>this.measuredText.nextOffset(i);if(this.graphemeAt(n)==="")return this;for(n=o(n);n<e.length&&Sd.test(this.graphemeAt(n));)n=o(n);if(n>=e.length)return new t(this.measuredText,e.length);let r=this.graphemeAt(n);if(Bo(r))for(;n<e.length;){let i=o(n);if(i>=e.length||!Bo(this.graphemeAt(i)))break;n=i}else if(ji(r))for(;n<e.length;){let i=o(n);if(i>=e.length||!ji(this.graphemeAt(i)))break;n=i}return new t(this.measuredText,n)}prevVimWord(){if(this.isAtStart())return this;let e=this.offset,n=r=>this.measuredText.prevOffset(r);for(e=n(e);e>0&&Sd.test(this.graphemeAt(e));)e=n(e);if(e===0&&Sd.test(this.graphemeAt(0)))return new t(this.measuredText,0);let o=this.graphemeAt(e);if(Bo(o))for(;e>0;){let r=n(e);if(!Bo(this.graphemeAt(r)))break;e=r}else if(ji(o))for(;e>0;){let r=n(e);if(!ji(this.graphemeAt(r)))break;e=r}return new t(this.measuredText,e)}nextWORD(){let e=this;for(;!e.isOverWhitespace()&&!e.isAtEnd();)e=e.right();for(;e.isOverWhitespace()&&!e.isAtEnd();)e=e.right();return e}endOfWORD(){if(this.isAtEnd())return this;let e=this;if(!e.isOverWhitespace()&&(e.right().isOverWhitespace()||e.right().isAtEnd()))return e=e.right(),e.endOfWORD();for(e.isOverWhitespace()&&(e=e.nextWORD());!e.right().isOverWhitespace()&&!e.isAtEnd();)e=e.right();return e}prevWORD(){let e=this;for(e.left().isOverWhitespace()&&(e=e.left());e.isOverWhitespace()&&!e.isAtStart();)e=e.left();if(!e.isOverWhitespace())for(;!e.left().isOverWhitespace()&&!e.isAtStart();)e=e.left();return e}modifyText(e,n=""){let o=this.offset,r=e.offset,i=this.text.slice(0,o)+n+this.text.slice(r);return t.fromText(i,this.columns,o+n.normalize("NFC").length)}insert(e){return this.modifyText(this,e)}del(){return this.isAtEnd()?this:this.modifyText(this.right())}backspace(){return this.isAtStart()?this:this.left().modifyText(this)}deleteToLineStart(){if(this.offset>0&&this.text[this.offset-1]===`
@@ -2021,13 +2021,13 @@ ${t.stdout}`,o=t.stderr.trim()||t.stdout.trim()||"\u672A\u77E5\u9519\u8BEF",r=`$
2021
2021
  `};let e=this.endOfLine(),n=this.text.slice(this.offset,e.offset);return{cursor:this.modifyText(e),killed:n}}deleteToLogicalLineEnd(){return this.text[this.offset]===`
2022
2022
  `?this.modifyText(this.right()):this.modifyText(this.endOfLogicalLine())}deleteWordBefore(){if(this.isAtStart())return{cursor:this,killed:""};let e=this.snapOutOfImageRef(this.prevWord().offset,"start"),n=new t(this.measuredText,e),o=this.text.slice(n.offset,this.offset);return{cursor:n.modifyText(this),killed:o}}deleteTokenBefore(){let e=this.imageRefStartingAt(this.offset)??this.fileRefStartingAt(this.offset);if(e){let i=this.text[e.end]===" "?e.end+1:e.end;return this.modifyText(new t(this.measuredText,i))}if(this.isAtStart())return null;let n=this.text[this.offset];if(n!==void 0&&!/\s/.test(n))return null;let r=this.text.slice(0,this.offset).match(/(^|\s)\[(Pasted text #\d+(?: \+\d+ lines)?|Image #\d+|file:[^\]]+|\.\.\.Truncated text #\d+ \+\d+ lines\.\.\.)\]$/);if(r){let i=r.index+r[1].length;return new t(this.measuredText,i).modifyText(this)}return null}deleteWordAfter(){if(this.isAtEnd())return this;let e=this.snapOutOfImageRef(this.nextWord().offset,"end");return this.modifyText(new t(this.measuredText,e))}graphemeAt(e){if(e>=this.text.length)return"";let n=this.measuredText.nextOffset(e);return this.text.slice(e,n)}isOverWhitespace(){let e=this.text[this.offset]??"";return/\s/.test(e)}equals(e){return this.offset===e.offset&&this.measuredText===e.measuredText}isAtStart(){return this.offset===0}isAtEnd(){return this.offset>=this.text.length}startOfFirstLine(){return new t(this.measuredText,0,0)}startOfLastLine(){let e=this.text.lastIndexOf(`
2023
2023
  `);return e===-1?this.startOfLine():new t(this.measuredText,e+1,0)}goToLine(e){let n=this.text.split(`
2024
- `),o=Math.min(Math.max(0,e-1),n.length-1),r=0;for(let i=0;i<o;i++)r+=(n[i]?.length??0)+1;return new t(this.measuredText,r,0)}endOfFile(){return new t(this.measuredText,this.text.length,0)}get text(){return this.measuredText.text}get columns(){return this.measuredText.columns+1}getPosition(){return this.measuredText.getPositionFromOffset(this.offset)}getOffset(e){return this.measuredText.getOffsetFromPosition(e)}findCharacter(e,n,o=1){let r=this.text,i=n==="f"||n==="t",s=n==="t"||n==="T",a=0;if(i){let l=this.measuredText.nextOffset(this.offset);for(;l<r.length;){if(this.graphemeAt(l)===e&&(a++,a===o))return s?Math.max(this.offset,this.measuredText.prevOffset(l)):l;l=this.measuredText.nextOffset(l)}}else{if(this.offset===0)return null;let l=this.measuredText.prevOffset(this.offset);for(;l>=0;){if(this.graphemeAt(l)===e&&(a++,a===o))return s?Math.min(this.offset,this.measuredText.nextOffset(l)):l;if(l===0)break;l=this.measuredText.prevOffset(l)}}return null}},kd=class{constructor(e,n,o,r=!1){this.text=e;this.startOffset=n;this.isPrecededByNewline=o;this.endsWithNewline=r}text;startOffset;isPrecededByNewline;endsWithNewline;equals(e){return this.text===e.text&&this.startOffset===e.startOffset}get length(){return this.text.length+(this.endsWithNewline?1:0)}},rI=class{constructor(e,n){this.columns=n;this.text=e.normalize("NFC"),this.navigationCache=new Map}columns;_wrappedLines;text;navigationCache;graphemeBoundaries;get wrappedLines(){return this._wrappedLines||(this._wrappedLines=this.measureWrappedText()),this._wrappedLines}getGraphemeBoundaries(){if(!this.graphemeBoundaries){this.graphemeBoundaries=[];for(let{index:e}of Uo().segment(this.text))this.graphemeBoundaries.push(e);this.graphemeBoundaries.push(this.text.length)}return this.graphemeBoundaries}wordBoundariesCache;getWordBoundaries(){if(!this.wordBoundariesCache){this.wordBoundariesCache=[];for(let e of jN().segment(this.text))this.wordBoundariesCache.push({start:e.index,end:e.index+e.segment.length,isWordLike:e.isWordLike??!1})}return this.wordBoundariesCache}binarySearchBoundary(e,n,o){let r=0,i=e.length-1,s=o?this.text.length:0;for(;r<=i;){let a=Math.floor((r+i)/2),l=e[a];if(l===void 0)break;o?l>n?(s=l,i=a-1):r=a+1:l<n?(s=l,r=a+1):i=a-1}return s}stringIndexToDisplayWidth(e,n){return n<=0?0:n>=e.length?so(e):so(e.substring(0,n))}displayWidthToStringIndex(e,n){if(n<=0||!e)return 0;if(e===this.text)return this.offsetAtDisplayWidth(n);let o=0,r=0;for(let{segment:i,index:s}of Uo().segment(e)){let a=so(i);if(o+a>n)break;o+=a,r=s+i.length}return r}offsetAtDisplayWidth(e){if(e<=0)return 0;let n=0,o=this.getGraphemeBoundaries();for(let r=0;r<o.length-1;r++){let i=o[r],s=o[r+1];if(i===void 0||s===void 0)continue;let a=this.text.substring(i,s),l=so(a);if(n+l>e)return i;n+=l}return this.text.length}measureWrappedText(){let e=FX(this.text,this.columns,{hard:!0,trim:!1}),n=[],o=0,r=-1,i=e.split(`
2024
+ `),o=Math.min(Math.max(0,e-1),n.length-1),r=0;for(let i=0;i<o;i++)r+=(n[i]?.length??0)+1;return new t(this.measuredText,r,0)}endOfFile(){return new t(this.measuredText,this.text.length,0)}get text(){return this.measuredText.text}get columns(){return this.measuredText.columns+1}getPosition(){return this.measuredText.getPositionFromOffset(this.offset)}getOffset(e){return this.measuredText.getOffsetFromPosition(e)}findCharacter(e,n,o=1){let r=this.text,i=n==="f"||n==="t",s=n==="t"||n==="T",a=0;if(i){let l=this.measuredText.nextOffset(this.offset);for(;l<r.length;){if(this.graphemeAt(l)===e&&(a++,a===o))return s?Math.max(this.offset,this.measuredText.prevOffset(l)):l;l=this.measuredText.nextOffset(l)}}else{if(this.offset===0)return null;let l=this.measuredText.prevOffset(this.offset);for(;l>=0;){if(this.graphemeAt(l)===e&&(a++,a===o))return s?Math.min(this.offset,this.measuredText.nextOffset(l)):l;if(l===0)break;l=this.measuredText.prevOffset(l)}}return null}},kd=class{constructor(e,n,o,r=!1){this.text=e;this.startOffset=n;this.isPrecededByNewline=o;this.endsWithNewline=r}text;startOffset;isPrecededByNewline;endsWithNewline;equals(e){return this.text===e.text&&this.startOffset===e.startOffset}get length(){return this.text.length+(this.endsWithNewline?1:0)}},rI=class{constructor(e,n){this.columns=n;this.text=e.normalize("NFC"),this.navigationCache=new Map}columns;_wrappedLines;text;navigationCache;graphemeBoundaries;get wrappedLines(){return this._wrappedLines||(this._wrappedLines=this.measureWrappedText()),this._wrappedLines}getGraphemeBoundaries(){if(!this.graphemeBoundaries){this.graphemeBoundaries=[];for(let{index:e}of Uo().segment(this.text))this.graphemeBoundaries.push(e);this.graphemeBoundaries.push(this.text.length)}return this.graphemeBoundaries}wordBoundariesCache;getWordBoundaries(){if(!this.wordBoundariesCache){this.wordBoundariesCache=[];for(let e of jN().segment(this.text))this.wordBoundariesCache.push({start:e.index,end:e.index+e.segment.length,isWordLike:e.isWordLike??!1})}return this.wordBoundariesCache}binarySearchBoundary(e,n,o){let r=0,i=e.length-1,s=o?this.text.length:0;for(;r<=i;){let a=Math.floor((r+i)/2),l=e[a];if(l===void 0)break;o?l>n?(s=l,i=a-1):r=a+1:l<n?(s=l,r=a+1):i=a-1}return s}stringIndexToDisplayWidth(e,n){return n<=0?0:n>=e.length?so(e):so(e.substring(0,n))}displayWidthToStringIndex(e,n){if(n<=0||!e)return 0;if(e===this.text)return this.offsetAtDisplayWidth(n);let o=0,r=0;for(let{segment:i,index:s}of Uo().segment(e)){let a=so(i);if(o+a>n)break;o+=a,r=s+i.length}return r}offsetAtDisplayWidth(e){if(e<=0)return 0;let n=0,o=this.getGraphemeBoundaries();for(let r=0;r<o.length-1;r++){let i=o[r],s=o[r+1];if(i===void 0||s===void 0)continue;let a=this.text.substring(i,s),l=so(a);if(n+l>e)return i;n+=l}return this.text.length}measureWrappedText(){let e=BX(this.text,this.columns,{hard:!0,trim:!1}),n=[],o=0,r=-1,i=e.split(`
2025
2025
  `);for(let s=0;s<i.length;s++){let a=i[s],l=c=>s===0||c>0&&this.text[c-1]===`
2026
2026
  `;if(a.length===0)if(r=this.text.indexOf(`
2027
2027
  `,r+1),r!==-1){let c=r,u=!0;n.push(new kd(a,c,l(c),u))}else{let c=this.text.length;n.push(new kd(a,c,l(c),!1))}else{let c=this.text.indexOf(a,o);if(c===-1)throw new Error("Failed to find wrapped line in text");o=c+a.length;let u=c+a.length,d=u<this.text.length&&this.text[u]===`
2028
- `;d&&(r=u),n.push(new kd(a,c,l(c),d))}}return n}getWrappedText(){return this.wrappedLines.map(e=>e.isPrecededByNewline?e.text:e.text.trimStart())}getWrappedLines(){return this.wrappedLines}getLine(e){let n=this.wrappedLines;return n[Math.max(0,Math.min(e,n.length-1))]}getOffsetFromPosition(e){let n=this.getLine(e.line);if(n.text.length===0&&n.endsWithNewline)return n.startOffset;let o=n.isPrecededByNewline?0:n.text.length-n.text.trimStart().length,r=e.column+o,i=this.displayWidthToStringIndex(n.text,r),s=n.startOffset+i,a=n.startOffset+n.text.length,l=a,c=so(n.text);return n.endsWithNewline&&e.column>c&&(l=a+1),Math.min(s,l)}getLineLength(e){let n=this.getLine(e);return so(n.text)}getPositionFromOffset(e){let n=this.wrappedLines;for(let i=0;i<n.length;i++){let s=n[i],a=n[i+1];if(e>=s.startOffset&&(!a||e<a.startOffset)){let l=e-s.startOffset,c;if(s.isPrecededByNewline)c=this.stringIndexToDisplayWidth(s.text,l);else{let u=s.text.length-s.text.trimStart().length;if(l<u)c=0;else{let d=s.text.trimStart(),p=l-u;c=this.stringIndexToDisplayWidth(d,p)}}return{line:i,column:Math.max(0,c)}}}let o=n.length-1,r=this.wrappedLines[o];return{line:o,column:so(r.text)}}get lineCount(){return this.wrappedLines.length}withCache(e,n){let o=this.navigationCache.get(e);if(o!==void 0)return o;let r=n();return this.navigationCache.set(e,r),r}nextOffset(e){return this.withCache(`next:${e}`,()=>{let n=this.getGraphemeBoundaries();return this.binarySearchBoundary(n,e,!0)})}prevOffset(e){return e<=0?0:this.withCache(`prev:${e}`,()=>{let n=this.getGraphemeBoundaries();return this.binarySearchBoundary(n,e,!1)})}snapToGraphemeBoundary(e){if(e<=0)return 0;if(e>=this.text.length)return this.text.length;let n=this.getGraphemeBoundaries(),o=0,r=n.length-1;for(;o<r;){let i=o+r+1>>1;n[i]<=e?o=i:r=i-1}return n[o]}};function qN(t,e,n=0){let o=0,r=t.indexOf(e,n);for(;r!==-1;)o++,r=t.indexOf(e,r+1);return o}function Id(t,e,n){let o=e;for(let r=0;r<n;r++){let i=jX(t,o);if(i.equals(o))break;o=i}return o}function jX(t,e){switch(t){case"h":return e.left();case"l":return e.right();case"j":return e.downLogicalLine();case"k":return e.upLogicalLine();case"gj":return e.down();case"gk":return e.up();case"w":return e.nextVimWord();case"b":return e.prevVimWord();case"e":return e.endOfVimWord();case"W":return e.nextWORD();case"B":return e.prevWORD();case"E":return e.endOfWORD();case"0":return e.startOfLogicalLine();case"^":return e.firstNonBlankInLogicalLine();case"$":return e.endOfLogicalLine();case"G":return e.startOfLastLine();default:return e}}function GN(t){return"eE$".includes(t)}function ZN(t){return"jkG".includes(t)||t==="gg"}var zX={"(":["(",")"],")":["(",")"],b:["(",")"],"[":["[","]"],"]":["[","]"],"{":["{","}"],"}":["{","}"],B:["{","}"],"<":["<",">"],">":["<",">"],'"':['"','"'],"'":["'","'"],"`":["`","`"]};function YN(t,e,n,o){if(n==="w")return JN(t,e,o,Bo);if(n==="W")return JN(t,e,o,i=>!Ly(i));let r=zX[n];if(r){let[i,s]=r;return i===s?WX(t,e,i,o):KX(t,e,i,s,o)}return null}function JN(t,e,n,o){let r=[];for(let{segment:f,index:m}of Uo().segment(t))r.push({segment:f,index:m});let i=r.length-1;for(let f=0;f<r.length;f++){let m=r[f],g=f+1<r.length?r[f+1].index:t.length;if(e>=m.index&&e<g){i=f;break}}let s=f=>r[f]?.segment??"",a=f=>f<r.length?r[f].index:t.length,l=f=>Ly(s(f)),c=f=>o(s(f)),u=f=>ji(s(f)),d=i,p=i;if(c(i)){for(;d>0&&c(d-1);)d--;for(;p<r.length&&c(p);)p++}else if(l(i)){for(;d>0&&l(d-1);)d--;for(;p<r.length&&l(p);)p++;return{start:a(d),end:a(p)}}else if(u(i)){for(;d>0&&u(d-1);)d--;for(;p<r.length&&u(p);)p++}if(!n){if(p<r.length&&l(p))for(;p<r.length&&l(p);)p++;else if(d>0&&l(d-1))for(;d>0&&l(d-1);)d--}return{start:a(d),end:a(p)}}function WX(t,e,n,o){let r=t.lastIndexOf(`
2028
+ `;d&&(r=u),n.push(new kd(a,c,l(c),d))}}return n}getWrappedText(){return this.wrappedLines.map(e=>e.isPrecededByNewline?e.text:e.text.trimStart())}getWrappedLines(){return this.wrappedLines}getLine(e){let n=this.wrappedLines;return n[Math.max(0,Math.min(e,n.length-1))]}getOffsetFromPosition(e){let n=this.getLine(e.line);if(n.text.length===0&&n.endsWithNewline)return n.startOffset;let o=n.isPrecededByNewline?0:n.text.length-n.text.trimStart().length,r=e.column+o,i=this.displayWidthToStringIndex(n.text,r),s=n.startOffset+i,a=n.startOffset+n.text.length,l=a,c=so(n.text);return n.endsWithNewline&&e.column>c&&(l=a+1),Math.min(s,l)}getLineLength(e){let n=this.getLine(e);return so(n.text)}getPositionFromOffset(e){let n=this.wrappedLines;for(let i=0;i<n.length;i++){let s=n[i],a=n[i+1];if(e>=s.startOffset&&(!a||e<a.startOffset)){let l=e-s.startOffset,c;if(s.isPrecededByNewline)c=this.stringIndexToDisplayWidth(s.text,l);else{let u=s.text.length-s.text.trimStart().length;if(l<u)c=0;else{let d=s.text.trimStart(),p=l-u;c=this.stringIndexToDisplayWidth(d,p)}}return{line:i,column:Math.max(0,c)}}}let o=n.length-1,r=this.wrappedLines[o];return{line:o,column:so(r.text)}}get lineCount(){return this.wrappedLines.length}withCache(e,n){let o=this.navigationCache.get(e);if(o!==void 0)return o;let r=n();return this.navigationCache.set(e,r),r}nextOffset(e){return this.withCache(`next:${e}`,()=>{let n=this.getGraphemeBoundaries();return this.binarySearchBoundary(n,e,!0)})}prevOffset(e){return e<=0?0:this.withCache(`prev:${e}`,()=>{let n=this.getGraphemeBoundaries();return this.binarySearchBoundary(n,e,!1)})}snapToGraphemeBoundary(e){if(e<=0)return 0;if(e>=this.text.length)return this.text.length;let n=this.getGraphemeBoundaries(),o=0,r=n.length-1;for(;o<r;){let i=o+r+1>>1;n[i]<=e?o=i:r=i-1}return n[o]}};function qN(t,e,n=0){let o=0,r=t.indexOf(e,n);for(;r!==-1;)o++,r=t.indexOf(e,r+1);return o}function Id(t,e,n){let o=e;for(let r=0;r<n;r++){let i=WX(t,o);if(i.equals(o))break;o=i}return o}function WX(t,e){switch(t){case"h":return e.left();case"l":return e.right();case"j":return e.downLogicalLine();case"k":return e.upLogicalLine();case"gj":return e.down();case"gk":return e.up();case"w":return e.nextVimWord();case"b":return e.prevVimWord();case"e":return e.endOfVimWord();case"W":return e.nextWORD();case"B":return e.prevWORD();case"E":return e.endOfWORD();case"0":return e.startOfLogicalLine();case"^":return e.firstNonBlankInLogicalLine();case"$":return e.endOfLogicalLine();case"G":return e.startOfLastLine();default:return e}}function GN(t){return"eE$".includes(t)}function ZN(t){return"jkG".includes(t)||t==="gg"}var KX={"(":["(",")"],")":["(",")"],b:["(",")"],"[":["[","]"],"]":["[","]"],"{":["{","}"],"}":["{","}"],B:["{","}"],"<":["<",">"],">":["<",">"],'"':['"','"'],"'":["'","'"],"`":["`","`"]};function YN(t,e,n,o){if(n==="w")return JN(t,e,o,Bo);if(n==="W")return JN(t,e,o,i=>!Ly(i));let r=KX[n];if(r){let[i,s]=r;return i===s?HX(t,e,i,o):VX(t,e,i,s,o)}return null}function JN(t,e,n,o){let r=[];for(let{segment:f,index:m}of Uo().segment(t))r.push({segment:f,index:m});let i=r.length-1;for(let f=0;f<r.length;f++){let m=r[f],g=f+1<r.length?r[f+1].index:t.length;if(e>=m.index&&e<g){i=f;break}}let s=f=>r[f]?.segment??"",a=f=>f<r.length?r[f].index:t.length,l=f=>Ly(s(f)),c=f=>o(s(f)),u=f=>ji(s(f)),d=i,p=i;if(c(i)){for(;d>0&&c(d-1);)d--;for(;p<r.length&&c(p);)p++}else if(l(i)){for(;d>0&&l(d-1);)d--;for(;p<r.length&&l(p);)p++;return{start:a(d),end:a(p)}}else if(u(i)){for(;d>0&&u(d-1);)d--;for(;p<r.length&&u(p);)p++}if(!n){if(p<r.length&&l(p))for(;p<r.length&&l(p);)p++;else if(d>0&&l(d-1))for(;d>0&&l(d-1);)d--}return{start:a(d),end:a(p)}}function HX(t,e,n,o){let r=t.lastIndexOf(`
2029
2029
  `,e-1)+1,i=t.indexOf(`
2030
- `,e),s=i===-1?t.length:i,a=t.slice(r,s),l=e-r,c=[];for(let u=0;u<a.length;u++)a[u]===n&&c.push(u);for(let u=0;u<c.length-1;u+=2){let d=c[u],p=c[u+1];if(d<=l&&l<=p)return o?{start:r+d+1,end:r+p}:{start:r+d,end:r+p+1}}return null}function KX(t,e,n,o,r){let i=0,s=-1;for(let l=e;l>=0;l--)if(t[l]===o&&l!==e)i++;else if(t[l]===n){if(i===0){s=l;break}i--}if(s===-1)return null;i=0;let a=-1;for(let l=s+1;l<t.length;l++)if(t[l]===n)i++;else if(t[l]===o){if(i===0){a=l;break}i--}return a===-1?null:r?{start:s+1,end:a}:{start:s,end:a+1}}function Hs(t,e,n,o){let r=Id(e,o.cursor,n);if(r.equals(o.cursor))return;let i=lI(o.cursor,r,e,t,n);Ed(t,i.from,i.to,o,i.linewise),o.recordChange({type:"operator",op:t,motion:e,count:n})}function Ny(t,e,n,o,r){let i=r.cursor.findCharacter(n,e,o);if(i===null)return;let s=new ao(r.cursor.measuredText,i),a=HX(r.cursor,s,e);Ed(t,a.from,a.to,r),r.setLastFind(e,n),r.recordChange({type:"operatorFind",op:t,find:e,char:n,count:o})}function $y(t,e,n,o,r){let i=YN(r.text,r.cursor.offset,n,e==="inner");i&&(Ed(t,i.start,i.end,r),r.recordChange({type:"operatorTextObj",op:t,objType:n,scope:e,count:o}))}function aI(t,e,n){let o=n.text,r=o.split(`
2030
+ `,e),s=i===-1?t.length:i,a=t.slice(r,s),l=e-r,c=[];for(let u=0;u<a.length;u++)a[u]===n&&c.push(u);for(let u=0;u<c.length-1;u+=2){let d=c[u],p=c[u+1];if(d<=l&&l<=p)return o?{start:r+d+1,end:r+p}:{start:r+d,end:r+p+1}}return null}function VX(t,e,n,o,r){let i=0,s=-1;for(let l=e;l>=0;l--)if(t[l]===o&&l!==e)i++;else if(t[l]===n){if(i===0){s=l;break}i--}if(s===-1)return null;i=0;let a=-1;for(let l=s+1;l<t.length;l++)if(t[l]===n)i++;else if(t[l]===o){if(i===0){a=l;break}i--}return a===-1?null:r?{start:s+1,end:a}:{start:s,end:a+1}}function Hs(t,e,n,o){let r=Id(e,o.cursor,n);if(r.equals(o.cursor))return;let i=lI(o.cursor,r,e,t,n);Ed(t,i.from,i.to,o,i.linewise),o.recordChange({type:"operator",op:t,motion:e,count:n})}function Ny(t,e,n,o,r){let i=r.cursor.findCharacter(n,e,o);if(i===null)return;let s=new ao(r.cursor.measuredText,i),a=qX(r.cursor,s,e);Ed(t,a.from,a.to,r),r.setLastFind(e,n),r.recordChange({type:"operatorFind",op:t,find:e,char:n,count:o})}function $y(t,e,n,o,r){let i=YN(r.text,r.cursor.offset,n,e==="inner");i&&(Ed(t,i.start,i.end,r),r.recordChange({type:"operatorTextObj",op:t,objType:n,scope:e,count:o}))}function aI(t,e,n){let o=n.text,r=o.split(`
2031
2031
  `),i=qN(o.slice(0,n.cursor.offset),`
2032
2032
  `),s=Math.min(e,r.length-i),a=n.cursor.startOfLogicalLine().offset,l=a;for(let u=0;u<s;u++){let d=o.indexOf(`
2033
2033
  `,l);l=d===-1?o.length:d+1}let c=o.slice(a,l);if(c.endsWith(`
@@ -2047,17 +2047,17 @@ ${t.stdout}`,o=t.stderr.trim()||t.stdout.trim()||"\u672A\u77E5\u9519\u8BEF",r=`$
2047
2047
  `);e.setText(a),e.enterInsert(Wy(s,i)),e.recordChange({type:"openLine",direction:t})}function Wy(t,e){return t.slice(0,e).join(`
2048
2048
  `).length+(e>0?1:0)}function lI(t,e,n,o,r){let i=Math.min(t.offset,e.offset),s=Math.max(t.offset,e.offset),a=!1;if(o==="change"&&(n==="w"||n==="W")){let l=t;for(let u=0;u<r-1;u++)l=n==="w"?l.nextVimWord():l.nextWORD();let c=n==="w"?l.endOfVimWord():l.endOfWORD();s=t.measuredText.nextOffset(c.offset)}else if(ZN(n)){a=!0;let l=t.text,c=l.indexOf(`
2049
2049
  `,s);c===-1?(s=l.length,i>0&&l[i-1]===`
2050
- `&&(i-=1)):s=c+1}else GN(n)&&t.offset<=e.offset&&(s=t.measuredText.nextOffset(s));return i=t.snapOutOfImageRef(i,"start"),s=t.snapOutOfImageRef(s,"end"),{from:i,to:s,linewise:a}}function HX(t,e,n){let o=Math.min(t.offset,e.offset),r=Math.max(t.offset,e.offset),i=t.measuredText.nextOffset(r);return{from:o,to:i}}function Ed(t,e,n,o,r=!1){let i=o.text.slice(e,n);if(r&&!i.endsWith(`
2050
+ `&&(i-=1)):s=c+1}else GN(n)&&t.offset<=e.offset&&(s=t.measuredText.nextOffset(s));return i=t.snapOutOfImageRef(i,"start"),s=t.snapOutOfImageRef(s,"end"),{from:i,to:s,linewise:a}}function qX(t,e,n){let o=Math.min(t.offset,e.offset),r=Math.max(t.offset,e.offset),i=t.measuredText.nextOffset(r);return{from:o,to:i}}function Ed(t,e,n,o,r=!1){let i=o.text.slice(e,n);if(r&&!i.endsWith(`
2051
2051
  `)&&(i=i+`
2052
- `),o.setRegister(i,r),t==="yank")o.setOffset(e);else if(t==="delete"){let s=o.text.slice(0,e)+o.text.slice(n);o.setText(s);let a=Math.max(0,s.length-(Ks(s).length||1));o.setOffset(Math.min(e,a))}else if(t==="change"){let s=o.text.slice(0,e)+o.text.slice(n);o.setText(s),o.enterInsert(e)}}function XN(t,e,n){let o=e===1?n.cursor.startOfLastLine():n.cursor.goToLine(e);if(o.equals(n.cursor))return;let r=lI(n.cursor,o,"G",t,e);Ed(t,r.from,r.to,n,r.linewise),n.recordChange({type:"operator",op:t,motion:"G",count:e})}function e6(t,e,n){let o=e===1?n.cursor.startOfFirstLine():n.cursor.goToLine(e);if(o.equals(n.cursor))return;let r=lI(n.cursor,o,"gg",t,e);Ed(t,r.from,r.to,n,r.linewise),n.recordChange({type:"operator",op:t,motion:"gg",count:e})}var cI={d:"delete",c:"change",y:"yank"};function t6(t){return t in cI}var uI=new Set(["h","l","j","k","w","b","e","W","B","E","0","^","$"]),dI=new Set(["f","F","t","T"]),pI={i:"inner",a:"around"};function n6(t){return t in pI}var r6=new Set(["w","W",'"',"'","`","(",")","b","[","]","{","}","B","<",">"]),fI=1e4;function o6(){return{mode:"INSERT",insertedText:""}}function i6(){return{lastChange:null,lastFind:null,register:"",registerIsLinewise:!1}}function s6(t,e,n){switch(t.type){case"idle":return VX(e,n);case"count":return qX(t,e,n);case"operator":return GX(t,e,n);case"operatorCount":return ZX(t,e,n);case"operatorFind":return JX(t,e,n);case"operatorTextObj":return YX(t,e,n);case"find":return QX(t,e,n);case"g":return XX(t,e,n);case"operatorG":return eee(t,e,n);case"replace":return tee(t,e,n);case"indent":return nee(t,e,n)}}function a6(t,e,n){return t6(t)?{next:{type:"operator",op:cI[t],count:e}}:uI.has(t)?{execute:()=>{let o=Id(t,n.cursor,e);n.setOffset(o.offset)}}:dI.has(t)?{next:{type:"find",find:t,count:e}}:t==="g"?{next:{type:"g",count:e}}:t==="r"?{next:{type:"replace",count:e}}:t===">"||t==="<"?{next:{type:"indent",dir:t,count:e}}:t==="~"?{execute:()=>By(e,n)}:t==="x"?{execute:()=>Fy(e,n)}:t==="J"?{execute:()=>jy(e,n)}:t==="p"||t==="P"?{execute:()=>QN(t==="p",e,n)}:t==="D"?{execute:()=>Hs("delete","$",1,n)}:t==="C"?{execute:()=>Hs("change","$",1,n)}:t==="Y"?{execute:()=>aI("yank",e,n)}:t==="G"?{execute:()=>{e===1?n.setOffset(n.cursor.startOfLastLine().offset):n.setOffset(n.cursor.goToLine(e).offset)}}:t==="."?{execute:()=>n.onDotRepeat?.()}:t===";"||t===","?{execute:()=>ree(t===",",e,n)}:t==="u"?{execute:()=>n.onUndo?.()}:t==="i"?{execute:()=>n.enterInsert(n.cursor.offset)}:t==="I"?{execute:()=>n.enterInsert(n.cursor.firstNonBlankInLogicalLine().offset)}:t==="a"?{execute:()=>{let o=n.cursor.isAtEnd()?n.cursor.offset:n.cursor.right().offset;n.enterInsert(o)}}:t==="A"?{execute:()=>n.enterInsert(n.cursor.endOfLogicalLine().offset)}:t==="o"?{execute:()=>Cd("below",n)}:t==="O"?{execute:()=>Cd("above",n)}:null}function l6(t,e,n,o){return n6(n)?{next:{type:"operatorTextObj",op:t,count:e,scope:pI[n]}}:dI.has(n)?{next:{type:"operatorFind",op:t,count:e,find:n}}:uI.has(n)?{execute:()=>Hs(t,n,e,o)}:n==="G"?{execute:()=>XN(t,e,o)}:n==="g"?{next:{type:"operatorG",op:t,count:e}}:null}function VX(t,e){if(/[1-9]/.test(t))return{next:{type:"count",digits:t}};if(t==="0")return{execute:()=>e.setOffset(e.cursor.startOfLogicalLine().offset)};let n=a6(t,1,e);return n||{}}function qX(t,e,n){if(/[0-9]/.test(e)){let i=t.digits+e,s=Math.min(parseInt(i,10),fI);return{next:{type:"count",digits:String(s)}}}let o=parseInt(t.digits,10),r=a6(e,o,n);return r||{next:{type:"idle"}}}function GX(t,e,n){if(e===t.op[0])return{execute:()=>aI(t.op,t.count,n)};if(/[0-9]/.test(e))return{next:{type:"operatorCount",op:t.op,count:t.count,digits:e}};let o=l6(t.op,t.count,e,n);return o||{next:{type:"idle"}}}function ZX(t,e,n){if(/[0-9]/.test(e)){let s=t.digits+e,a=Math.min(parseInt(s,10),fI);return{next:{...t,digits:String(a)}}}let o=parseInt(t.digits,10),r=t.count*o,i=l6(t.op,r,e,n);return i||{next:{type:"idle"}}}function JX(t,e,n){return{execute:()=>Ny(t.op,t.find,e,t.count,n)}}function YX(t,e,n){return r6.has(e)?{execute:()=>$y(t.op,t.scope,e,t.count,n)}:{next:{type:"idle"}}}function QX(t,e,n){return{execute:()=>{let o=n.cursor.findCharacter(e,t.find,t.count);o!==null&&(n.setOffset(o),n.setLastFind(t.find,e))}}}function XX(t,e,n){return e==="j"||e==="k"?{execute:()=>{let o=Id(`g${e}`,n.cursor,t.count);n.setOffset(o.offset)}}:e==="g"?t.count>1?{execute:()=>{let o=n.text.split(`
2053
- `),r=Math.min(t.count-1,o.length-1),i=0;for(let s=0;s<r;s++)i+=(o[s]?.length??0)+1;n.setOffset(i)}}:{execute:()=>n.setOffset(n.cursor.startOfFirstLine().offset)}:{next:{type:"idle"}}}function eee(t,e,n){return e==="j"||e==="k"?{execute:()=>Hs(t.op,`g${e}`,t.count,n)}:e==="g"?{execute:()=>e6(t.op,t.count,n)}:{next:{type:"idle"}}}function tee(t,e,n){return e===""?{next:{type:"idle"}}:{execute:()=>Uy(e,t.count,n)}}function nee(t,e,n){return e===t.dir?{execute:()=>zy(t.dir,t.count,n)}:{next:{type:"idle"}}}function ree(t,e,n){let o=n.getLastFind();if(!o)return;let r=o.type;t&&(r={f:"F",F:"f",t:"T",T:"t"}[r]);let i=n.cursor.findCharacter(o.char,r,e);i!==null&&n.setOffset(i)}import oee from"strip-ansi";function iee(t){return t==="!"}var u6=()=>{};function c6(t){let e=new Map(t);return function(n){return(e.get(n)??u6)(n)}}function d6({value:t,onChange:e,onSubmit:n,onHistoryUp:o,onHistoryDown:r,onHistoryReset:i,onClearInput:s,onEscapeClearHint:a,onDoubleEscapeCommit:l,mask:c="",multiline:u=!1,cursorChar:d,invert:p,columns:f,onImagePaste:m,disableCursorMovementForUpDownKeys:g=!1,disableEscapeDoublePress:h=!1,maxVisibleLines:y,externalOffset:v,onOffsetChange:b,inputFilter:R,inlineGhostText:M,dim:B}){let S=v,x=b,T=ao.fromText(t,f,S),W=yd(H=>{if(!t){a?.(!1);return}a?.(H)},()=>{a?.(!1),s?.(),t.trim()!==""&&l?.(t),e(""),x(0),i?.()});function A(){return T.text===""?T:T.del()}function U(){let{cursor:H,killed:te}=T.deleteToLineEnd();return Oy(te,"append"),H}function j(){let{cursor:H,killed:te}=T.deleteToLineStart();return Oy(te,"prepend"),H}function _(){let{cursor:H,killed:te}=T.deleteWordBefore();return Oy(te,"prepend"),H}function $(){let H=WN();if(H.length>0){let te=T.offset,ee=T.insert(H);return KN(te,H.length),ee}return T}function N(){let H=HN();if(!H)return T;let{text:te,start:ee,length:ue}=H,Q=T.text.slice(0,ee),We=T.text.slice(ee+ue),Qt=Q+te+We,Xt=ee+te.length;return VN(te.length),ao.fromText(Qt,f,Xt)}function K(H){if(u&&T.offset>0&&T.text[T.offset-1]==="\\")return T.backspace().insert(`
2052
+ `),o.setRegister(i,r),t==="yank")o.setOffset(e);else if(t==="delete"){let s=o.text.slice(0,e)+o.text.slice(n);o.setText(s);let a=Math.max(0,s.length-(Ks(s).length||1));o.setOffset(Math.min(e,a))}else if(t==="change"){let s=o.text.slice(0,e)+o.text.slice(n);o.setText(s),o.enterInsert(e)}}function XN(t,e,n){let o=e===1?n.cursor.startOfLastLine():n.cursor.goToLine(e);if(o.equals(n.cursor))return;let r=lI(n.cursor,o,"G",t,e);Ed(t,r.from,r.to,n,r.linewise),n.recordChange({type:"operator",op:t,motion:"G",count:e})}function e6(t,e,n){let o=e===1?n.cursor.startOfFirstLine():n.cursor.goToLine(e);if(o.equals(n.cursor))return;let r=lI(n.cursor,o,"gg",t,e);Ed(t,r.from,r.to,n,r.linewise),n.recordChange({type:"operator",op:t,motion:"gg",count:e})}var cI={d:"delete",c:"change",y:"yank"};function t6(t){return t in cI}var uI=new Set(["h","l","j","k","w","b","e","W","B","E","0","^","$"]),dI=new Set(["f","F","t","T"]),pI={i:"inner",a:"around"};function n6(t){return t in pI}var r6=new Set(["w","W",'"',"'","`","(",")","b","[","]","{","}","B","<",">"]),fI=1e4;function o6(){return{mode:"INSERT",insertedText:""}}function i6(){return{lastChange:null,lastFind:null,register:"",registerIsLinewise:!1}}function s6(t,e,n){switch(t.type){case"idle":return GX(e,n);case"count":return ZX(t,e,n);case"operator":return JX(t,e,n);case"operatorCount":return YX(t,e,n);case"operatorFind":return QX(t,e,n);case"operatorTextObj":return XX(t,e,n);case"find":return eee(t,e,n);case"g":return tee(t,e,n);case"operatorG":return nee(t,e,n);case"replace":return ree(t,e,n);case"indent":return oee(t,e,n)}}function a6(t,e,n){return t6(t)?{next:{type:"operator",op:cI[t],count:e}}:uI.has(t)?{execute:()=>{let o=Id(t,n.cursor,e);n.setOffset(o.offset)}}:dI.has(t)?{next:{type:"find",find:t,count:e}}:t==="g"?{next:{type:"g",count:e}}:t==="r"?{next:{type:"replace",count:e}}:t===">"||t==="<"?{next:{type:"indent",dir:t,count:e}}:t==="~"?{execute:()=>By(e,n)}:t==="x"?{execute:()=>Fy(e,n)}:t==="J"?{execute:()=>jy(e,n)}:t==="p"||t==="P"?{execute:()=>QN(t==="p",e,n)}:t==="D"?{execute:()=>Hs("delete","$",1,n)}:t==="C"?{execute:()=>Hs("change","$",1,n)}:t==="Y"?{execute:()=>aI("yank",e,n)}:t==="G"?{execute:()=>{e===1?n.setOffset(n.cursor.startOfLastLine().offset):n.setOffset(n.cursor.goToLine(e).offset)}}:t==="."?{execute:()=>n.onDotRepeat?.()}:t===";"||t===","?{execute:()=>iee(t===",",e,n)}:t==="u"?{execute:()=>n.onUndo?.()}:t==="i"?{execute:()=>n.enterInsert(n.cursor.offset)}:t==="I"?{execute:()=>n.enterInsert(n.cursor.firstNonBlankInLogicalLine().offset)}:t==="a"?{execute:()=>{let o=n.cursor.isAtEnd()?n.cursor.offset:n.cursor.right().offset;n.enterInsert(o)}}:t==="A"?{execute:()=>n.enterInsert(n.cursor.endOfLogicalLine().offset)}:t==="o"?{execute:()=>Cd("below",n)}:t==="O"?{execute:()=>Cd("above",n)}:null}function l6(t,e,n,o){return n6(n)?{next:{type:"operatorTextObj",op:t,count:e,scope:pI[n]}}:dI.has(n)?{next:{type:"operatorFind",op:t,count:e,find:n}}:uI.has(n)?{execute:()=>Hs(t,n,e,o)}:n==="G"?{execute:()=>XN(t,e,o)}:n==="g"?{next:{type:"operatorG",op:t,count:e}}:null}function GX(t,e){if(/[1-9]/.test(t))return{next:{type:"count",digits:t}};if(t==="0")return{execute:()=>e.setOffset(e.cursor.startOfLogicalLine().offset)};let n=a6(t,1,e);return n||{}}function ZX(t,e,n){if(/[0-9]/.test(e)){let i=t.digits+e,s=Math.min(parseInt(i,10),fI);return{next:{type:"count",digits:String(s)}}}let o=parseInt(t.digits,10),r=a6(e,o,n);return r||{next:{type:"idle"}}}function JX(t,e,n){if(e===t.op[0])return{execute:()=>aI(t.op,t.count,n)};if(/[0-9]/.test(e))return{next:{type:"operatorCount",op:t.op,count:t.count,digits:e}};let o=l6(t.op,t.count,e,n);return o||{next:{type:"idle"}}}function YX(t,e,n){if(/[0-9]/.test(e)){let s=t.digits+e,a=Math.min(parseInt(s,10),fI);return{next:{...t,digits:String(a)}}}let o=parseInt(t.digits,10),r=t.count*o,i=l6(t.op,r,e,n);return i||{next:{type:"idle"}}}function QX(t,e,n){return{execute:()=>Ny(t.op,t.find,e,t.count,n)}}function XX(t,e,n){return r6.has(e)?{execute:()=>$y(t.op,t.scope,e,t.count,n)}:{next:{type:"idle"}}}function eee(t,e,n){return{execute:()=>{let o=n.cursor.findCharacter(e,t.find,t.count);o!==null&&(n.setOffset(o),n.setLastFind(t.find,e))}}}function tee(t,e,n){return e==="j"||e==="k"?{execute:()=>{let o=Id(`g${e}`,n.cursor,t.count);n.setOffset(o.offset)}}:e==="g"?t.count>1?{execute:()=>{let o=n.text.split(`
2053
+ `),r=Math.min(t.count-1,o.length-1),i=0;for(let s=0;s<r;s++)i+=(o[s]?.length??0)+1;n.setOffset(i)}}:{execute:()=>n.setOffset(n.cursor.startOfFirstLine().offset)}:{next:{type:"idle"}}}function nee(t,e,n){return e==="j"||e==="k"?{execute:()=>Hs(t.op,`g${e}`,t.count,n)}:e==="g"?{execute:()=>e6(t.op,t.count,n)}:{next:{type:"idle"}}}function ree(t,e,n){return e===""?{next:{type:"idle"}}:{execute:()=>Uy(e,t.count,n)}}function oee(t,e,n){return e===t.dir?{execute:()=>zy(t.dir,t.count,n)}:{next:{type:"idle"}}}function iee(t,e,n){let o=n.getLastFind();if(!o)return;let r=o.type;t&&(r={f:"F",F:"f",t:"T",T:"t"}[r]);let i=n.cursor.findCharacter(o.char,r,e);i!==null&&n.setOffset(i)}import see from"strip-ansi";function aee(t){return t==="!"}var u6=()=>{};function c6(t){let e=new Map(t);return function(n){return(e.get(n)??u6)(n)}}function d6({value:t,onChange:e,onSubmit:n,onHistoryUp:o,onHistoryDown:r,onHistoryReset:i,onClearInput:s,onEscapeClearHint:a,onDoubleEscapeCommit:l,mask:c="",multiline:u=!1,cursorChar:d,invert:p,columns:f,onImagePaste:m,disableCursorMovementForUpDownKeys:g=!1,disableEscapeDoublePress:h=!1,maxVisibleLines:y,externalOffset:v,onOffsetChange:b,inputFilter:R,inlineGhostText:M,dim:B}){let S=v,x=b,T=ao.fromText(t,f,S),W=yd(H=>{if(!t){a?.(!1);return}a?.(H)},()=>{a?.(!1),s?.(),t.trim()!==""&&l?.(t),e(""),x(0),i?.()});function A(){return T.text===""?T:T.del()}function U(){let{cursor:H,killed:te}=T.deleteToLineEnd();return Oy(te,"append"),H}function j(){let{cursor:H,killed:te}=T.deleteToLineStart();return Oy(te,"prepend"),H}function _(){let{cursor:H,killed:te}=T.deleteWordBefore();return Oy(te,"prepend"),H}function $(){let H=WN();if(H.length>0){let te=T.offset,ee=T.insert(H);return KN(te,H.length),ee}return T}function N(){let H=HN();if(!H)return T;let{text:te,start:ee,length:ue}=H,Q=T.text.slice(0,ee),We=T.text.slice(ee+ue),Qt=Q+te+We,Xt=ee+te.length;return VN(te.length),ao.fromText(Qt,f,Xt)}function K(H){if(u&&T.offset>0&&T.text[T.offset-1]==="\\")return T.backspace().insert(`
2054
2054
  `);if(H.meta||H.shift)return T.insert(`
2055
- `);n?.(t)}function E(){if(g)return o?.(),T;let H=T.up();if(!H.equals(T))return H;if(u){let te=T.upLogicalLine();if(!te.equals(T))return te}return o?.(),T}function V(){if(g)return r?.(),T;let H=T.down();if(!H.equals(T))return H;if(u){let te=T.downLogicalLine();if(!te.equals(T))return te}return r?.(),T}function ae(H){let te=ue=>{let Q=Sr(ue,H);return Q?c6([["a",()=>T.startOfLine()],["b",()=>T.left()],["d",A],["e",()=>T.endOfLine()],["f",()=>T.right()],["h",()=>T.deleteTokenBefore()??T.backspace()],["k",U],["n",()=>V()],["p",()=>E()],["u",j],["w",_],["y",$]])(Q):T},ee=ue=>{let Q=Sr(ue,H);return Q?c6([["b",()=>T.prevWord()],["f",()=>T.nextWord()],["d",()=>T.deleteWordAfter()],["y",N]])(Q):T};switch(!0){case H.escape:return()=>(h||W(),T);case(H.leftArrow&&(H.ctrl||H.meta||H.fn)):return()=>T.prevWord();case(H.rightArrow&&(H.ctrl||H.meta||H.fn)):return()=>T.nextWord();case H.backspace:return H.meta||H.ctrl?_:()=>T.deleteTokenBefore()??T.backspace();case H.delete:return H.meta?U:()=>T.del();case H.ctrl:return te;case H.home:return()=>T.startOfLine();case H.end:return()=>T.endOfLine();case H.pageDown:return()=>T.endOfLine();case H.pageUp:return()=>T.startOfLine();case H.wheelUp:case H.wheelDown:return u6;case H.return:return()=>K(H);case H.meta:return ee;case H.tab:return()=>T;case(H.upArrow&&!H.shift):return E;case(H.downArrow&&!H.shift):return V;case H.leftArrow:return()=>T.left();case H.rightArrow:return()=>T.right();default:return function(ue){switch(!0){case(ue==="\x1B[H"||ue==="\x1B[1~"):return T.startOfLine();case(ue==="\x1B[F"||ue==="\x1B[4~"):return T.endOfLine();default:{let Q=oee(ue).replace(/(?<=[^\\\r\n])\r$/,"").replace(/\r/g,`
2056
- `);return T.isAtStart()&&iee(ue)?T.insert(Q).left():T.insert(Q)}}}}}function Te(H,te){let ee=Sr(te,H);return!!(H.ctrl&&ee&&(ee==="k"||ee==="u"||ee==="w")||H.meta&&(H.backspace||H.delete))}function me(H,te){let ee=Sr(te,H);return(H.ctrl||H.meta)&&ee==="y"}function ne(H,te){let ee=R?R(H,te):H;if(ee===""&&H!=="")return;if(!te.backspace&&!te.delete&&H.includes("\x7F")){let Q=(H.match(/\x7f/g)||[]).length,We=T;for(let Qt=0;Qt<Q;Qt++)We=We.deleteTokenBefore()??We.backspace();T.equals(We)||(T.text!==We.text&&e(We.text),x(We.offset)),iI(),sI();return}Te(te,ee)||iI(),me(te,ee)||sI();let ue=ae(te)(ee);ue&&(T.equals(ue)||(T.text!==ue.text&&e(ue.text),x(ue.offset)),ee.length>1&&ee.endsWith("\r")&&!ee.slice(0,-1).includes("\r")&&ee[ee.length-2]!=="\\"&&n?.(ue.text))}let Pe=M&&B&&M.insertPosition===S?{text:M.text,dim:B}:void 0,de=T.getPosition();return{onInput:ne,renderedValue:T.render(d,c,p,Pe,y),offset:S,setOffset:x,cursorLine:de.line-T.getViewportStartLine(y),cursorColumn:de.column,viewportCharOffset:T.getViewportCharOffset(y),viewportCharEnd:T.getViewportCharEnd(y)}}function f6(t){let e=t.vimBindingsEnabled!==!1,n=p6.useRef(o6()),[o,r]=aee("INSERT"),i=p6.useRef(i6()),s=d6({...t,inputFilter:void 0}),{onModeChange:a,inputFilter:l}=t;see(()=>{e||(n.current={mode:"INSERT",insertedText:""},r("INSERT"),a?.("INSERT"))},[e,a]);let c=mI(g=>{g!==void 0&&s.setOffset(g),n.current={mode:"INSERT",insertedText:""},r("INSERT"),a?.("INSERT")},[s,a]),u=mI(()=>{let g=n.current;g.mode==="INSERT"&&g.insertedText&&(i.current.lastChange={type:"insert",text:g.insertedText});let h=s.offset;h>0&&t.value[h-1]!==`
2055
+ `);n?.(t)}function E(){if(g)return o?.(),T;let H=T.up();if(!H.equals(T))return H;if(u){let te=T.upLogicalLine();if(!te.equals(T))return te}return o?.(),T}function V(){if(g)return r?.(),T;let H=T.down();if(!H.equals(T))return H;if(u){let te=T.downLogicalLine();if(!te.equals(T))return te}return r?.(),T}function ae(H){let te=ue=>{let Q=Sr(ue,H);return Q?c6([["a",()=>T.startOfLine()],["b",()=>T.left()],["d",A],["e",()=>T.endOfLine()],["f",()=>T.right()],["h",()=>T.deleteTokenBefore()??T.backspace()],["k",U],["n",()=>V()],["p",()=>E()],["u",j],["w",_],["y",$]])(Q):T},ee=ue=>{let Q=Sr(ue,H);return Q?c6([["b",()=>T.prevWord()],["f",()=>T.nextWord()],["d",()=>T.deleteWordAfter()],["y",N]])(Q):T};switch(!0){case H.escape:return()=>(h||W(),T);case(H.leftArrow&&(H.ctrl||H.meta||H.fn)):return()=>T.prevWord();case(H.rightArrow&&(H.ctrl||H.meta||H.fn)):return()=>T.nextWord();case H.backspace:return H.meta||H.ctrl?_:()=>T.deleteTokenBefore()??T.backspace();case H.delete:return H.meta?U:()=>T.del();case H.ctrl:return te;case H.home:return()=>T.startOfLine();case H.end:return()=>T.endOfLine();case H.pageDown:return()=>T.endOfLine();case H.pageUp:return()=>T.startOfLine();case H.wheelUp:case H.wheelDown:return u6;case H.return:return()=>K(H);case H.meta:return ee;case H.tab:return()=>T;case(H.upArrow&&!H.shift):return E;case(H.downArrow&&!H.shift):return V;case H.leftArrow:return()=>T.left();case H.rightArrow:return()=>T.right();default:return function(ue){switch(!0){case(ue==="\x1B[H"||ue==="\x1B[1~"):return T.startOfLine();case(ue==="\x1B[F"||ue==="\x1B[4~"):return T.endOfLine();default:{let Q=see(ue).replace(/(?<=[^\\\r\n])\r$/,"").replace(/\r/g,`
2056
+ `);return T.isAtStart()&&aee(ue)?T.insert(Q).left():T.insert(Q)}}}}}function Te(H,te){let ee=Sr(te,H);return!!(H.ctrl&&ee&&(ee==="k"||ee==="u"||ee==="w")||H.meta&&(H.backspace||H.delete))}function me(H,te){let ee=Sr(te,H);return(H.ctrl||H.meta)&&ee==="y"}function ne(H,te){let ee=R?R(H,te):H;if(ee===""&&H!=="")return;if(!te.backspace&&!te.delete&&H.includes("\x7F")){let Q=(H.match(/\x7f/g)||[]).length,We=T;for(let Qt=0;Qt<Q;Qt++)We=We.deleteTokenBefore()??We.backspace();T.equals(We)||(T.text!==We.text&&e(We.text),x(We.offset)),iI(),sI();return}Te(te,ee)||iI(),me(te,ee)||sI();let ue=ae(te)(ee);ue&&(T.equals(ue)||(T.text!==ue.text&&e(ue.text),x(ue.offset)),ee.length>1&&ee.endsWith("\r")&&!ee.slice(0,-1).includes("\r")&&ee[ee.length-2]!=="\\"&&n?.(ue.text))}let Pe=M&&B&&M.insertPosition===S?{text:M.text,dim:B}:void 0,de=T.getPosition();return{onInput:ne,renderedValue:T.render(d,c,p,Pe,y),offset:S,setOffset:x,cursorLine:de.line-T.getViewportStartLine(y),cursorColumn:de.column,viewportCharOffset:T.getViewportCharOffset(y),viewportCharEnd:T.getViewportCharEnd(y)}}function f6(t){let e=t.vimBindingsEnabled!==!1,n=p6.useRef(o6()),[o,r]=cee("INSERT"),i=p6.useRef(i6()),s=d6({...t,inputFilter:void 0}),{onModeChange:a,inputFilter:l}=t;lee(()=>{e||(n.current={mode:"INSERT",insertedText:""},r("INSERT"),a?.("INSERT"))},[e,a]);let c=mI(g=>{g!==void 0&&s.setOffset(g),n.current={mode:"INSERT",insertedText:""},r("INSERT"),a?.("INSERT")},[s,a]),u=mI(()=>{let g=n.current;g.mode==="INSERT"&&g.insertedText&&(i.current.lastChange={type:"insert",text:g.insertedText});let h=s.offset;h>0&&t.value[h-1]!==`
2057
2057
  `&&s.setOffset(h-1),n.current={mode:"NORMAL",command:{type:"idle"}},r("NORMAL"),a?.("NORMAL")},[a,s,t.value]);function d(g,h=!1){return{cursor:g,text:t.value,setText:y=>t.onChange(y),setOffset:y=>s.setOffset(y),enterInsert:y=>c(y),getRegister:()=>i.current.register,setRegister:(y,v)=>{i.current.register=y,i.current.registerIsLinewise=v},getLastFind:()=>i.current.lastFind,setLastFind:(y,v)=>{i.current.lastFind={type:y,char:v}},recordChange:h?()=>{}:y=>{i.current.lastChange=y}}}function p(){let g=i.current.lastChange;if(!g)return;let h=ao.fromText(t.value,t.columns,s.offset),y=d(h,!0);switch(g.type){case"insert":if(g.text){let v=h.insert(g.text);t.onChange(v.text),s.setOffset(v.offset)}break;case"x":Fy(g.count,y);break;case"replace":Uy(g.char,g.count,y);break;case"toggleCase":By(g.count,y);break;case"indent":zy(g.dir,g.count,y);break;case"join":jy(g.count,y);break;case"openLine":Cd(g.direction,y);break;case"operator":Hs(g.op,g.motion,g.count,y);break;case"operatorFind":Ny(g.op,g.find,g.char,g.count,y);break;case"operatorTextObj":$y(g.op,g.scope,g.objType,g.count,y);break}}function f(g,h){if(!e){let T=l?l(g,h):g;s.onInput(T,h);return}let y=n.current,v=l?l(g,h):g,b=y.mode==="INSERT"?v:g,R=ao.fromText(t.value,t.columns,s.offset);if(h.ctrl||h.super){s.onInput(b,h);return}if(h.escape&&y.mode==="INSERT"){u();return}if(h.escape&&y.mode==="NORMAL"){n.current={mode:"NORMAL",command:{type:"idle"}};return}if(h.return){s.onInput(b,h);return}if(y.mode==="INSERT"){h.backspace||h.delete?y.insertedText.length>0&&(n.current={mode:"INSERT",insertedText:y.insertedText.slice(0,-(Ks(y.insertedText).length||1))}):n.current={mode:"INSERT",insertedText:y.insertedText+b},s.onInput(b,h);return}if(y.mode!=="NORMAL")return;if(y.command.type==="idle"&&(h.upArrow||h.downArrow||h.leftArrow||h.rightArrow)){s.onInput(b,h);return}let M={...d(R,!1),onUndo:t.onUndo,onDotRepeat:p},B=y.command.type==="idle"||y.command.type==="count"||y.command.type==="operator"||y.command.type==="operatorCount",S=b;h.leftArrow?S="h":h.rightArrow?S="l":h.upArrow?S="k":h.downArrow?S="j":B&&h.backspace?S="h":B&&y.command.type!=="count"&&h.delete&&(S="x");let x=s6(y.command,S,M);x.execute&&x.execute(),n.current.mode==="NORMAL"&&(x.next?n.current={mode:"NORMAL",command:x.next}:x.execute&&(n.current={mode:"NORMAL",command:{type:"idle"}})),b==="?"&&y.mode==="NORMAL"&&y.command.type==="idle"&&t.onChange("?")}let m=mI(g=>{g==="INSERT"?n.current={mode:"INSERT",insertedText:""}:n.current={mode:"NORMAL",command:{type:"idle"}},r(g),a?.(g)},[a]);return{...s,onInput:f,mode:o,setMode:m}}function Pd(t){let e=t.replace(/\\/g,"/").replace(/^\/+/,"").trim();if(!e||e.includes("\0"))return null;let n=e.split("/");for(let o of n)if(o==="..")return null;return e}function m6(t,e,n){if(e===void 0||n===void 0)return t;let o=t.split(/\r?\n/),r=Math.max(1,Math.floor(e)),i=Math.max(r,Math.floor(n));return o.slice(r-1,i).join(`
2058
2058
  `)}function zl(t){let e=t.toLowerCase();return e.endsWith(".ts")||e.endsWith(".tsx")?"text/typescript":e.endsWith(".js")||e.endsWith(".mjs")||e.endsWith(".cjs")?"text/javascript":e.endsWith(".json")?"application/json":e.endsWith(".md")?"text/markdown":e.endsWith(".pdf")?"application/pdf":e.endsWith(".png")?"image/png":e.endsWith(".jpg")||e.endsWith(".jpeg")?"image/jpeg":"text/plain"}function g6(t){let e=Math.min(t.length,8192);for(let n=0;n<e;n++)if(t[n]===0)return{kind:"binary"};try{return{kind:"text",text:new TextDecoder("utf-8",{fatal:!0}).decode(t)}}catch{return{kind:"binary"}}}function h6(t,e){return t.length<=e?t:`${t.slice(0,e)}
2059
- ... [truncated, ${t.length-e} chars omitted]`}var lee=512*1024,cee=8e4,uee=8;function dee(t,e,n){return e!==void 0&&n!==void 0?`@${t}:${e}-${n}`:`@${t}`}function pee(t){return`@${t}`}function fee(t,e,n){return`@terminal:${t}:${e}-${n}`}async function Ky(t,e,n){let o=n?.mode??"inline-context",r=n?.maxFileBytes??lee,i=n?.maxBodyChars??cee,s=n?.maxFilesPerTurn??uee,a=n?.getTerminalSelection,l=[],c=0;for(let u of t){if(u.type==="text"){u.value.length>0&&l.push({type:"text",text:u.value});continue}if(u.type==="skill"){let m=u.skillName.trim();m.length>0&&l.push({type:"pandaSkill",skillName:m});continue}if(u.type==="command")continue;let d=u.mention;if(d.kind==="file"){let m=d.path,g=dee(m,d.startLine,d.endLine);if(l.push({type:"text",text:g}),o==="path-only")continue;if(c>=s){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:`[Skipped: max ${s} file contexts per message reached]`,source:"mention"});continue}let h=Pd(m);if(!h){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:"[Invalid path]",source:"mention"});continue}if(await e.isDirectory(h)===!0){l.push({type:"fileContext",displayPath:m,mime:"inode/directory",body:"[Directory: contents not inlined; use tools to list or read files.]",source:"mention"});continue}let v=await e.readFileBytes(h);if(!v){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:"[File could not be read or is not in workspace]",source:"mention"});continue}if(v.length>r){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:`[File too large to inline: ${v.length} bytes, limit ${r}]`,source:"mention"});continue}let b=g6(v),R=zl(m);if(b.kind==="binary"||R==="application/pdf"){l.push({type:"fileContext",displayPath:m,mime:R,startLine:d.startLine,endLine:d.endLine,body:R==="application/pdf"?"[PDF: not inlined in v1; use read_file or open the path above.]":"[Binary file: contents not inlined.]",source:"mention"}),c++;continue}let M=m6(b.text,d.startLine,d.endLine),B=d.startLine??1;M=WD(M,B),M=h6(M,i),l.push({type:"fileContext",displayPath:m,mime:R,startLine:d.startLine,endLine:d.endLine,body:M,source:"mention"}),c++;continue}if(d.kind==="folder"){l.push({type:"text",text:pee(d.path)}),o==="inline-context"&&l.push({type:"fileContext",displayPath:d.path,mime:"inode/directory",body:"[Folder: contents not inlined; use tools to explore.]",source:"mention"});continue}let p=fee(d.terminalName,d.startLine,d.endLine),f="";if(a)try{f=await a(d.terminalId)}catch{f="(terminal selection unavailable)"}else f="(terminal selection unavailable)";l.push({type:"text",text:`${p}
2060
- ${f}`})}return mee(l)}function mee(t){let e=[];for(let n of t){if(n.type==="text"&&n.text!==void 0){let o=e[e.length-1];if(o&&o.type==="text"&&o.text!==void 0){o.text=o.text+n.text;continue}e.push({type:"text",text:n.text});continue}e.push({...n})}return e}function gee(t){return t.replace(/[`'".,;:!?)]+$/,"")}function gI(t){let e=gee(t);if(!e||e.includes("..")||e.startsWith("/"))return null;let n=/^(.+):(\d+)-(\d+)$/.exec(e);if(n){let o=n[1]??"",r=Number(n[2]),i=Number(n[3]);return!o||!Number.isFinite(r)||!Number.isFinite(i)?null:{path:o,startLine:r,endLine:i}}return/^terminal:/i.test(e)?null:{path:e}}function y6(t){let e=/@(\S+)/g,n=[],o=0,r;for(;(r=e.exec(t))!==null;){r.index>o&&n.push({type:"text",value:t.slice(o,r.index)});let i=r[1]??"",s=gI(i);s?n.push({type:"mention",mention:{kind:"file",...s}}):n.push({type:"text",value:r[0]}),o=r.index+r[0].length}return o<t.length&&n.push({type:"text",value:t.slice(o)}),n}import{promises as hI}from"fs";import*as Hy from"path";function v6(t){let e=Hy.resolve(t);return{async isDirectory(n){let o=Pd(n);if(!o)return null;let r=Hy.resolve(e,o);if(!r.startsWith(e))return null;try{return(await hI.stat(r)).isDirectory()}catch{return null}},async readFileBytes(n){let o=Pd(n);if(!o)return null;let r=Hy.resolve(e,o);if(!r.startsWith(e))return null;try{return(await hI.stat(r)).isDirectory()?null:await hI.readFile(r)}catch{return null}}}}var b6=/\[file:([^\]]+)\]/g;function hee(t){return t.replace(/\\/g,"/")}function yee(t){return hee(t)}function Rd(t){return`[file:${yee(t)}]`}function vee(t){try{return decodeURIComponent(t)}catch{return t}}function yI(t){let e=vee(t);return gI(e)}var bee=/\[Image #(\d+)\]/g,w6=/(\[Image #\d+\]|\[file:[^\]]+\])/g;function xee(t){let e=t.filter(n=>n.type==="text"&&(n.text?.length??0)>0||n.type==="image"||n.type==="fileContext"||n.type==="pandaCommand"||n.type==="pandaSkill"||n.type==="code");return e.length===0?"":e.length===1&&e[0].type==="text"?e[0].text??"":e}async function x6(t,e){return await Ky(y6(t),e)}async function T6(t,e,n){let o=[],r=0,i,s=new RegExp(w6.source,"g");for(;(i=s.exec(t))!==null;){i.index>r&&o.push(...await x6(t.slice(r,i.index),n));let a=i[0]??"",l=/^\[Image #(\d+)\]$/.exec(a);if(l){let c=Number(l[1]),u=e.get(c);u&&o.push({type:"image",imageUrl:u})}else if(a.startsWith("[file:")&&a.endsWith("]")){let c=a.slice(6,-1),u=yI(c);if(u){let d=await Ky([{type:"mention",mention:{kind:"file",...u}}],n);o.push(...d)}else o.push({type:"text",text:a})}r=i.index+a.length}return r<t.length&&o.push(...await x6(t.slice(r),n)),o}async function _6(t,e,n,o){let r={type:"pandaSkill",skillName:t},i=e.trim();if(!i)return[r];let s=await vI(i,n,o);return typeof s=="string"?s.trim()?[r,{type:"text",text:s}]:[r]:[r,...s]}async function vI(t,e,n){let o=v6(n),r=[],i=0,s,a=new RegExp(w6.source,"g");for(;(s=a.exec(t))!==null;){if(s.index>i){let u=t.slice(i,s.index);r.push(...await T6(u,e,o))}let l=s[0]??"",c=/^\[Image #(\d+)\]$/.exec(l);if(c){let u=Number(c[1]),d=e.get(u);d&&r.push({type:"image",imageUrl:d})}else if(l.startsWith("[file:")&&l.endsWith("]")){let u=l.slice(6,-1),d=yI(u);d?r.push(...await Ky([{type:"mention",mention:{kind:"file",...d}}],o)):r.push({type:"text",text:l})}i=s.index+l.length}return i<t.length&&r.push(...await T6(t.slice(i),e,o)),xee(r)}function S6(t){return af(t)}function Vy(t){return t.replace(bee,"[img]").replace(new RegExp(b6.source,"g"),"[file]").trim()}import{existsSync as Tee,readFileSync as wee,unlinkSync as bI}from"node:fs";import{spawnSync as _ee}from"node:child_process";import{join as See}from"node:path";import{tmpdir as kee}from"node:os";function Iee(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function k6(){if(process.platform!=="darwin")return null;let t=See(kee(),`panda-clip-${process.pid}-${Date.now()}.png`),e=Iee(t),n=`
2059
+ ... [truncated, ${t.length-e} chars omitted]`}var uee=512*1024,dee=8e4,pee=8;function fee(t,e,n){return e!==void 0&&n!==void 0?`@${t}:${e}-${n}`:`@${t}`}function mee(t){return`@${t}`}function gee(t,e,n){return`@terminal:${t}:${e}-${n}`}async function Ky(t,e,n){let o=n?.mode??"inline-context",r=n?.maxFileBytes??uee,i=n?.maxBodyChars??dee,s=n?.maxFilesPerTurn??pee,a=n?.getTerminalSelection,l=[],c=0;for(let u of t){if(u.type==="text"){u.value.length>0&&l.push({type:"text",text:u.value});continue}if(u.type==="skill"){let m=u.skillName.trim();m.length>0&&l.push({type:"pandaSkill",skillName:m});continue}if(u.type==="command")continue;let d=u.mention;if(d.kind==="file"){let m=d.path,g=fee(m,d.startLine,d.endLine);if(l.push({type:"text",text:g}),o==="path-only")continue;if(c>=s){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:`[Skipped: max ${s} file contexts per message reached]`,source:"mention"});continue}let h=Pd(m);if(!h){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:"[Invalid path]",source:"mention"});continue}if(await e.isDirectory(h)===!0){l.push({type:"fileContext",displayPath:m,mime:"inode/directory",body:"[Directory: contents not inlined; use tools to list or read files.]",source:"mention"});continue}let v=await e.readFileBytes(h);if(!v){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:"[File could not be read or is not in workspace]",source:"mention"});continue}if(v.length>r){l.push({type:"fileContext",displayPath:m,mime:zl(m),startLine:d.startLine,endLine:d.endLine,body:`[File too large to inline: ${v.length} bytes, limit ${r}]`,source:"mention"});continue}let b=g6(v),R=zl(m);if(b.kind==="binary"||R==="application/pdf"){l.push({type:"fileContext",displayPath:m,mime:R,startLine:d.startLine,endLine:d.endLine,body:R==="application/pdf"?"[PDF: not inlined in v1; use read_file or open the path above.]":"[Binary file: contents not inlined.]",source:"mention"}),c++;continue}let M=m6(b.text,d.startLine,d.endLine),B=d.startLine??1;M=WD(M,B),M=h6(M,i),l.push({type:"fileContext",displayPath:m,mime:R,startLine:d.startLine,endLine:d.endLine,body:M,source:"mention"}),c++;continue}if(d.kind==="folder"){l.push({type:"text",text:mee(d.path)}),o==="inline-context"&&l.push({type:"fileContext",displayPath:d.path,mime:"inode/directory",body:"[Folder: contents not inlined; use tools to explore.]",source:"mention"});continue}let p=gee(d.terminalName,d.startLine,d.endLine),f="";if(a)try{f=await a(d.terminalId)}catch{f="(terminal selection unavailable)"}else f="(terminal selection unavailable)";l.push({type:"text",text:`${p}
2060
+ ${f}`})}return hee(l)}function hee(t){let e=[];for(let n of t){if(n.type==="text"&&n.text!==void 0){let o=e[e.length-1];if(o&&o.type==="text"&&o.text!==void 0){o.text=o.text+n.text;continue}e.push({type:"text",text:n.text});continue}e.push({...n})}return e}function yee(t){return t.replace(/[`'".,;:!?)]+$/,"")}function gI(t){let e=yee(t);if(!e||e.includes("..")||e.startsWith("/"))return null;let n=/^(.+):(\d+)-(\d+)$/.exec(e);if(n){let o=n[1]??"",r=Number(n[2]),i=Number(n[3]);return!o||!Number.isFinite(r)||!Number.isFinite(i)?null:{path:o,startLine:r,endLine:i}}return/^terminal:/i.test(e)?null:{path:e}}function y6(t){let e=/@(\S+)/g,n=[],o=0,r;for(;(r=e.exec(t))!==null;){r.index>o&&n.push({type:"text",value:t.slice(o,r.index)});let i=r[1]??"",s=gI(i);s?n.push({type:"mention",mention:{kind:"file",...s}}):n.push({type:"text",value:r[0]}),o=r.index+r[0].length}return o<t.length&&n.push({type:"text",value:t.slice(o)}),n}import{promises as hI}from"fs";import*as Hy from"path";function v6(t){let e=Hy.resolve(t);return{async isDirectory(n){let o=Pd(n);if(!o)return null;let r=Hy.resolve(e,o);if(!r.startsWith(e))return null;try{return(await hI.stat(r)).isDirectory()}catch{return null}},async readFileBytes(n){let o=Pd(n);if(!o)return null;let r=Hy.resolve(e,o);if(!r.startsWith(e))return null;try{return(await hI.stat(r)).isDirectory()?null:await hI.readFile(r)}catch{return null}}}}var b6=/\[file:([^\]]+)\]/g;function vee(t){return t.replace(/\\/g,"/")}function bee(t){return vee(t)}function Rd(t){return`[file:${bee(t)}]`}function xee(t){try{return decodeURIComponent(t)}catch{return t}}function yI(t){let e=xee(t);return gI(e)}var Tee=/\[Image #(\d+)\]/g,w6=/(\[Image #\d+\]|\[file:[^\]]+\])/g;function wee(t){let e=t.filter(n=>n.type==="text"&&(n.text?.length??0)>0||n.type==="image"||n.type==="fileContext"||n.type==="pandaCommand"||n.type==="pandaSkill"||n.type==="code");return e.length===0?"":e.length===1&&e[0].type==="text"?e[0].text??"":e}async function x6(t,e){return await Ky(y6(t),e)}async function T6(t,e,n){let o=[],r=0,i,s=new RegExp(w6.source,"g");for(;(i=s.exec(t))!==null;){i.index>r&&o.push(...await x6(t.slice(r,i.index),n));let a=i[0]??"",l=/^\[Image #(\d+)\]$/.exec(a);if(l){let c=Number(l[1]),u=e.get(c);u&&o.push({type:"image",imageUrl:u})}else if(a.startsWith("[file:")&&a.endsWith("]")){let c=a.slice(6,-1),u=yI(c);if(u){let d=await Ky([{type:"mention",mention:{kind:"file",...u}}],n);o.push(...d)}else o.push({type:"text",text:a})}r=i.index+a.length}return r<t.length&&o.push(...await x6(t.slice(r),n)),o}async function _6(t,e,n,o){let r={type:"pandaSkill",skillName:t},i=e.trim();if(!i)return[r];let s=await vI(i,n,o);return typeof s=="string"?s.trim()?[r,{type:"text",text:s}]:[r]:[r,...s]}async function vI(t,e,n){let o=v6(n),r=[],i=0,s,a=new RegExp(w6.source,"g");for(;(s=a.exec(t))!==null;){if(s.index>i){let u=t.slice(i,s.index);r.push(...await T6(u,e,o))}let l=s[0]??"",c=/^\[Image #(\d+)\]$/.exec(l);if(c){let u=Number(c[1]),d=e.get(u);d&&r.push({type:"image",imageUrl:d})}else if(l.startsWith("[file:")&&l.endsWith("]")){let u=l.slice(6,-1),d=yI(u);d?r.push(...await Ky([{type:"mention",mention:{kind:"file",...d}}],o)):r.push({type:"text",text:l})}i=s.index+l.length}return i<t.length&&r.push(...await T6(t.slice(i),e,o)),wee(r)}function S6(t){return af(t)}function Vy(t){return t.replace(Tee,"[img]").replace(new RegExp(b6.source,"g"),"[file]").trim()}import{existsSync as _ee,readFileSync as See,unlinkSync as bI}from"node:fs";import{spawnSync as kee}from"node:child_process";import{join as Iee}from"node:path";import{tmpdir as Cee}from"node:os";function Eee(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function k6(){if(process.platform!=="darwin")return null;let t=Iee(Cee(),`panda-clip-${process.pid}-${Date.now()}.png`),e=Eee(t),n=`
2061
2061
  try
2062
2062
  set pngData to the clipboard as \xABclass PNGf\xBB
2063
2063
  set f to open for access (POSIX file "${e}") with write permission
@@ -2068,39 +2068,39 @@ on error
2068
2068
  close access (POSIX file "${e}")
2069
2069
  end try
2070
2070
  end try
2071
- `;if(_ee("osascript",["-e",n],{encoding:"utf8"}).status!==0||!Tee(t)){try{bI(t)}catch{}return null}try{let r=wee(t);return bI(t),r.length?`data:image/png;base64,${r.toString("base64")}`:null}catch{try{bI(t)}catch{}return null}}import{jsx as bt,jsxs as sn}from"react/jsx-runtime";import{Box as qo,Text as an}from"panda-ink";import{c as Hre}from"react/compiler-runtime";import{jsx as Vre}from"react/jsx-runtime";import{memo as qre}from"react";import Hte from"string-width";function qy(t){switch(t){case"success":return"success";case"error":return"error";case"executing":return"info";default:return"muted"}}import{c as jee}from"react/compiler-runtime";import{jsx as kr,jsxs as Ir}from"react/jsx-runtime";import{Box as A6,Text as er,usePandaTheme as zee}from"panda-ink";import{c as Cee}from"react/compiler-runtime";import{jsx as lo,jsxs as Eee}from"react/jsx-runtime";import{Box as Md,Text as Gy,ThemedText as I6,usePandaTheme as Pee}from"panda-ink";function jn(t,e){return t==="dark"?{primaryText:"white",secondaryText:"gray",secondaryDim:!0,userMessageBg:"#2b2b2b",assistantCodeBg:"#1f1f1f"}:{primaryText:e.textPrimary,secondaryText:e.textSecondary,secondaryDim:!1,userMessageBg:e.surfaceMuted,assistantCodeBg:e.surfaceMuted}}var Xn=process.platform==="darwin"?"\u23FA":"\u25CF",Ad="\u25B8";function Ree(t){switch(t){case"info":return"cyan";case"success":return"green";case"error":return"red";default:return"gray"}}function mt(t){let e=Cee(6),{level:n,tone:o,text:r}=t,{currentTheme:i,palette:s}=Pee(),a;if(e[0]!==i||e[1]!==n||e[2]!==s||e[3]!==r||e[4]!==o){let l=jn(i,s),c=i==="dark",u=" ".repeat(Math.max(0,n));a=Eee(Md,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[lo(Md,{flexShrink:0,minWidth:Math.max(0,u.length),children:c?lo(Gy,{color:l.secondaryText,dimColor:l.secondaryDim,children:u}):lo(I6,{colorKey:"textSecondary",dimColor:!0,children:u})}),lo(Md,{flexShrink:0,minWidth:2,children:lo(Gy,{color:Ree(o),children:n>0?"\u23BF":Xn})}),lo(Md,{flexShrink:0,minWidth:1,children:lo(Gy,{color:l.primaryText,children:" "})}),lo(Md,{flexGrow:1,flexShrink:1,minWidth:0,children:c?lo(Gy,{color:l.primaryText,wrap:"truncate-end",children:r}):lo(I6,{colorKey:"textPrimary",wrap:"truncate-end",children:r})})]}),e[0]=i,e[1]=n,e[2]=s,e[3]=r,e[4]=o,e[5]=a}else a=e[5];return a}var Aee=72;function Mee(t,e){let n=t.replace(/\s+/g," ").trim();return n.length<=e?n:`${n.slice(0,Math.max(0,e-1))}\u2026`}function Dee(t,e,n){let r=t.find(i=>i.id===e)?.options??[];return pg(n,r)}function Oee(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e={};for(let[n,o]of Object.entries(t))typeof o=="string"&&o.trim()&&(e[n]=o.trim());return Object.keys(e).length>0?e:void 0}function C6(t){if(!t||typeof t!="object")return null;let e=t,n=typeof e.questionId=="string"?e.questionId:typeof e.question_id=="string"?e.question_id:"";if(!n)return null;let r=(Array.isArray(e.selectedOptionIds)?e.selectedOptionIds:Array.isArray(e.selected_option_ids)?e.selected_option_ids:[]).filter(a=>typeof a=="string"),i=typeof e.freeformText=="string"?e.freeformText:typeof e.freeform_text=="string"?e.freeform_text:void 0,s=Oee(e.optionNotes??e.option_notes);return{questionId:n,selectedOptionIds:r,freeformText:i,optionNotes:s}}function E6(t){let e=[];for(let n of t){let o=C6(n);o&&e.push(o)}return e}function Lee(t){if(!Array.isArray(t))return[];let e=[];for(let n of t){let o=C6(n);o&&e.push(o)}return e}function Nee(t){let e=t.trim();if(!e)return null;try{let n=JSON.parse(e);if(!n||typeof n!="object")return null;let o=n,r=o.type;if(typeof r=="string"&&r!=="ask_question")return null;let i=o.skipped===!0,s=Lee(o.answers);return{skipped:i,answers:s}}catch{return null}}function $ee(t){let e=t?.completionResult;return e&&typeof e.skipped=="boolean"&&Array.isArray(e.answers)?{skipped:e.skipped,answers:E6(e.answers)}:null}function Fee(t){let e=t;return e?.kind==="ask_question"&&typeof e.skipped=="boolean"&&Array.isArray(e.answers)?{skipped:e.skipped,answers:E6(e.answers)}:null}function P6(t,e,n){return $ee(t)??Fee(e)??Nee(n)}function R6(t,e,n,o){let r=o?.promptMax??Aee;if(!e)return{kind:"raw",text:n};if(e.skipped)return{kind:"skipped"};let i=Array.isArray(t)?t:[],s=new Map;for(let u of e.answers)s.set(u.questionId,u);let a=[],l=0;for(let u=0;u<i.length;u++){let d=i[u],p=s.get(d.id),f=Array.isArray(p?.selectedOptionIds)?p.selectedOptionIds:[],m=typeof p?.freeformText=="string"?p.freeformText.trim():"",g=p?.optionNotes??{},h=[];for(let y of f){let v=Dee(i,d.id,y),b=g[y]?.trim();h.push(b?`${v}\uFF08${b}\uFF09`:v)}d.freeform&&m&&h.push(`\u5176\u4ED6\uFF1A${m}`),h.length!==0&&(l++,a.push({depth:0,text:`Q${u+1}: ${Mee(d.prompt,r)}`}),a.push({depth:1,text:`\u7B54\uFF1A${h.join("\u3001")}`}))}return a.length===0?e.answers.length>0?{kind:"raw",text:n}:{kind:"lines",lines:[{depth:0,text:"\u5DF2\u5B8C\u6210"}]}:{kind:"lines",lines:[...[{depth:0,text:`\u5DF2\u56DE\u7B54 ${l} \u9898`}],...a]}}import{jsx as Vs,jsxs as Uee}from"react/jsx-runtime";import{Box as Dd,Text as xI}from"panda-ink";function Bee(t){switch(t){case"info":return"cyan";case"success":return"green";case"error":return"red";default:return"gray"}}function rt(t){let{level:e,tone:n,children:o}=t,r=" ".repeat(Math.max(0,e));return Uee(Dd,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[Vs(Dd,{flexShrink:0,minWidth:Math.max(0,r.length),children:Vs(xI,{color:"gray",dimColor:!0,children:r})}),Vs(Dd,{flexShrink:0,minWidth:2,children:Vs(xI,{color:Bee(n),children:e>0?"\u23BF":Xn})}),Vs(Dd,{flexShrink:0,minWidth:1,children:Vs(xI,{color:"white",children:" "})}),Vs(Dd,{flexGrow:1,flexShrink:1,minWidth:0,flexDirection:"column",children:o})]})}function Wee(t){let{lines:e}=t;return kr(A6,{flexDirection:"column",width:"100%",children:e.map((n,o)=>Ir(er,{dimColor:!0,wrap:"truncate-end",children:[n.depth===0?"\u23BF ":" \u23BF ",n.text]},`ask-q-tree-${o}`))})}function M6(t){let e=jee(25),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=zee(),a,l,c;if(e[0]!==n||e[1]!==i.displayData||e[2]!==i.resultText||e[3]!==i.status||e[4]!==i.structuredData||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let d=Kk(i.displayData);if(!d||!Array.isArray(d.questions)||d.questions.length===0){let v;e[10]!==n||e[11]!==r||e[12]!==o?(v=kr(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=v):v=e[13],l=v;break e}c=d.title?.trim();let p=d.allowSkipAll===!0;a=i.status==="error";let f=i.status==="success",m=d.questions.length>0,g=i.status,h=g==="confirming"||m&&(g==="pending"||g==="executing");if(!m&&(g==="executing"||g==="pending")){l=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(er,{dimColor:!0,children:"\u51C6\u5907\u95EE\u5377\u2026"})]});break e}if(h){l=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(er,{dimColor:!0,children:"\u8BF7\u5728\u5E95\u90E8\u300C? \u95EE\u7B54\u300D\u5F39\u5C42\u4E2D\u9009\u62E9\u9009\u9879\u3002"}),p?kr(er,{dimColor:!0,children:"\u5141\u8BB8\u8DF3\u8FC7\u5168\u90E8\uFF08Esc\uFF09\u3002"}):null]});break e}if(f){let v=i.resultText?.trim()??"",b=P6(d,i.structuredData,v),R=R6(d.questions,b,v);l=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),R.kind==="skipped"?kr(er,{dimColor:!0,wrap:"truncate-end",children:"\u23BF \u5DF2\u8DF3\u8FC7"}):R.kind==="lines"?kr(Wee,{lines:R.lines}):kr(er,{color:"gray",wrap:"truncate-end",children:R.text})]});break e}}e[0]=n,e[1]=i.displayData,e[2]=i.resultText,e[3]=i.status,e[4]=i.structuredData,e[5]=r,e[6]=o,e[7]=a,e[8]=l,e[9]=c}else a=e[7],l=e[8],c=e[9];if(l!==Symbol.for("react.early_return_sentinel"))return l;if(a&&i.errorText){let d;return e[14]!==n||e[15]!==s.textError||e[16]!==i.errorText||e[17]!==c||e[18]!==o?(d=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(er,{color:s.textError,wrap:"truncate-end",children:i.errorText})]}),e[14]=n,e[15]=s.textError,e[16]=i.errorText,e[17]=c,e[18]=o,e[19]=d):d=e[19],d}let u;return e[20]!==n||e[21]!==r||e[22]!==c||e[23]!==o?(u=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(A6,{children:kr(er,{dimColor:!0,wrap:"truncate-end",children:r})})]}),e[20]=n,e[21]=r,e[22]=c,e[23]=o,e[24]=u):u=e[24],u}import{c as Kee}from"react/compiler-runtime";import{jsx as Zy,jsxs as D6}from"react/jsx-runtime";import Hee from"node:path";import{Text as Jy,usePandaTheme as Vee}from"panda-ink";var O6=200;function qee(t){return t.length<=O6?t:`${t.slice(0,O6-1)}\u2026`}function L6(t){let e=Kee(13),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=Vee(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=Wk(i.displayData);if(!c){let f;e[9]!==n||e[10]!==r||e[11]!==o?(f=Zy(mt,{level:n,tone:o,text:r}),e[9]=n,e[10]=r,e[11]=o,e[12]=f):f=e[12],l=f;break e}let u=(c.uri??"").trim(),d=u?Hee.basename(u):"(unknown)",p=i.status==="error";a=D6(rt,{level:n,tone:o,children:[D6(Jy,{wrap:"truncate-end",bold:!0,children:["\u5220\u9664\u6587\u4EF6 \u2192 ",d]}),u?Zy(Jy,{dimColor:!0,wrap:"truncate-end",children:qee(u)}):Zy(Jy,{dimColor:!0,children:"\uFF08\u672A\u89E3\u6790\u8DEF\u5F84\uFF09"}),p&&i.errorText?Zy(Jy,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as Xee}from"react/compiler-runtime";import{jsx as zn,jsxs as Wi}from"react/jsx-runtime";import $6 from"node:path";import{fileURLToPath as ete}from"node:url";import{Box as Yy,Text as ur,usePandaTheme as tte}from"panda-ink";import{jsx as TI}from"react/jsx-runtime";import wI from"node:path";import{fileURLToPath as Gee,pathToFileURL as Zee}from"node:url";import{Link as Jee,Text as N6}from"panda-ink";function Yee(t){let e=t.trim();if(!e)return null;try{return e.startsWith("file:")?new URL(e).href:Zee(e).href}catch{return null}}function Qee(t){try{return t.trim().startsWith("file:")?wI.basename(Gee(t)):wI.basename(t)}catch{return wI.basename(t)}}function zi(t){let{filePath:e,children:n}=t,o=Yee(e),r=n??Qee(e);return o?TI(Jee,{url:o,fallback:TI(N6,{wrap:"truncate-end",children:r}),children:r}):TI(N6,{wrap:"truncate-end",children:r})}var nte=24,F6=480;function U6(t,e){return t.length<=e?t:`${t.slice(0,e-1)}\u2026`}function B6(t){let e=Xee(11),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=tte(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=Uk(i.displayData);if(!c){l=zn(mt,{level:n,tone:o,text:r});break e}let u=c.uri?.trim()??"",d=u?(()=>{try{if(u.startsWith("file:"))return $6.basename(ete(u))}catch{}return $6.basename(u)})():"(unknown)",p=c.structuredPatch??[],f=i.status==="error",m=c.oldString??"",g=c.newString??"";if(p.length===0){if(!m&&!g){l=zn(mt,{level:n,tone:o,text:r});break e}l=Wi(rt,{level:n,tone:o,children:[Wi(Yy,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[zn(ur,{bold:!0,children:"\u7F16\u8F91 "}),u?zn(zi,{filePath:u,children:d}):zn(ur,{bold:!0,children:d}),zn(ur,{bold:!0,children:"\uFF08\u7247\u6BB5\u66FF\u6362\uFF09"})]}),Wi(Yy,{width:"100%",flexDirection:"column",children:[m?Wi(ur,{color:s.accentError,wrap:"truncate-end",children:["- ",U6(m,F6)]}):null,g?Wi(ur,{color:s.accentSuccess,wrap:"truncate-end",children:["+ ",U6(g,F6)]}):null]}),f&&i.errorText?zn(ur,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]});break e}let h=Cy(p),y=` [ +${h.added} -${h.removed} ]`,v=gN(h.lines),b=v.slice(0,nte),R=v.length-b.length,M;e[9]!==s?(M=(B,S)=>{let x=B.type==="added"?s.accentSuccess:B.type==="removed"?s.accentError:B.type==="hunk"?s.accentWarning:s.textSecondary;return zn(ur,{color:x,wrap:"truncate-end",children:B.content},`d-${S}`)},e[9]=s,e[10]=M):M=e[10],a=Wi(rt,{level:n,tone:o,children:[Wi(Yy,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[zn(ur,{bold:!0,children:"\u7F16\u8F91 "}),u?zn(zi,{filePath:u,children:d}):zn(ur,{bold:!0,children:d}),zn(ur,{bold:!0,children:y})]}),zn(Yy,{width:"100%",flexDirection:"column",children:b.map(M)}),R>0?Wi(ur,{dimColor:!0,children:["\u2026\uFF08\u53E6\u6709 ",R," \u884C\u672A\u663E\u793A\uFF09"]}):null,f&&i.errorText?zn(ur,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as rte}from"react/compiler-runtime";import{jsx as Cr,jsxs as Od}from"react/jsx-runtime";import j6 from"node:path";import{fileURLToPath as ote}from"node:url";import{Box as z6,Text as jo,usePandaTheme as ite}from"panda-ink";function ste(t,e){return Number.isFinite(t)&&Number.isFinite(e)?`[L${t}-${e}]`:Number.isFinite(t)?`[L${t}-]`:Number.isFinite(e)?`[-L${e}]`:""}function W6(t){let e=rte(9),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=ite(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=$k(i.displayData);if(!c){l=Cr(mt,{level:n,tone:o,text:r});break e}let u=c.uri?.trim()??"",d=u?(()=>{try{if(u.startsWith("file:"))return j6.basename(ote(u))}catch{}return j6.basename(u)})():"(unknown)",p=ste(c.startLine,c.endLine),f=i.status==="error";if(c.notFound){l=Od(rt,{level:n,tone:o,children:[Od(z6,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[Cr(jo,{bold:!0,children:"\u8BFB\u53D6 "}),u?Cr(zi,{filePath:u,children:d}):Cr(jo,{bold:!0,children:d}),Od(jo,{bold:!0,children:[" ","[\u672A\u53D1\u73B0]",p?` ${p}`:""]})]}),Cr(jo,{dimColor:!0,children:"\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u8BFB"}),f&&i.errorText?Cr(jo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]});break e}a=Od(rt,{level:n,tone:o,children:[Od(z6,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[Cr(jo,{bold:!0,children:"\u8BFB\u53D6 "}),u?Cr(zi,{filePath:u,children:d}):Cr(jo,{bold:!0,children:d}),Cr(jo,{bold:!0,children:p?` ${p}`:""})]}),f&&i.errorText?Cr(jo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as pte}from"react/compiler-runtime";import{jsx as zo,jsxs as _I}from"react/jsx-runtime";import{Box as G6,Text as qs,usePandaTheme as fte}from"panda-ink";import{jsx as Qy}from"react/jsx-runtime";import{Box as H6,Text as V6}from"panda-ink";var ate={30:"black",31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",37:"white",90:"gray",91:"red",92:"green",93:"yellow",94:"blue",95:"magenta",96:"cyan",97:"white"};function lte(){return{bold:!1,dim:!1,color:void 0}}function cte(t,e){if(e===0){t.bold=!1,t.dim=!1,t.color=void 0;return}if(e===1){t.bold=!0;return}if(e===2){t.dim=!0;return}if(e===22){t.bold=!1;return}if(e===39){t.color=void 0;return}let n=ate[e];n&&(t.color=n)}function ute(t,e,n){t&&n.push({text:t,bold:e.bold||void 0,dim:e.dim||void 0,color:e.color})}function dte(t){let e=[];for(let n of t){let o=e[e.length-1];o&&o.bold===n.bold&&o.dim===n.dim&&o.color===n.color?o.text+=n.text:e.push({...n})}return e}function K6(t){let e=[],n=lte(),o=0;for(;o<t.length;){if(t.charCodeAt(o)===27&&o+1<t.length&&t[o+1]==="["){let s=o+2;for(;s<t.length&&t[s]!=="m";)s++;if(s<t.length&&t[s]==="m"){let a=t.slice(o+2,s),l=a===""?[0]:a.split(";").map(c=>parseInt(c,10)).filter(c=>!Number.isNaN(c));for(let c of l)cte(n,c);o=s+1;continue}}let r=t.indexOf("\x1B",o+1),i=r<0?t.length:r;ute(t.slice(o,i),n,e),o=i}return dte(e)}function q6(t){let e=t.text.split(`
2072
- `);return Qy(H6,{flexDirection:"column",children:e.map((n,o)=>{let r=K6(n);return Qy(H6,{flexDirection:"row",flexWrap:"wrap",children:r.length===0?Qy(V6,{dimColor:!0,children:" "}):r.map((i,s)=>Qy(V6,{color:i.color??"gray",bold:!!i.bold,dimColor:!!i.dim,wrap:"truncate-end",children:i.text},s))},o)})})}var SI=14,Z6=6e3;function mte(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="run_terminal_cmd"?null:{tool:"run_terminal_cmd",description:typeof e.description=="string"?e.description:void 0,command:typeof e.command=="string"?e.command:void 0,commandSummary:typeof e.commandSummary=="string"?e.commandSummary:void 0,outputPreview:typeof e.outputPreview=="string"?e.outputPreview:void 0,exitCode:typeof e.exitCode=="number"||e.exitCode===null?e.exitCode:void 0,blockTimedOut:e.blockTimedOut===!0,terminalInstanceId:typeof e.terminalInstanceId=="number"?e.terminalInstanceId:void 0}}function gte(t){let e=t.replace(/\r\n/g,`
2071
+ `;if(kee("osascript",["-e",n],{encoding:"utf8"}).status!==0||!_ee(t)){try{bI(t)}catch{}return null}try{let r=See(t);return bI(t),r.length?`data:image/png;base64,${r.toString("base64")}`:null}catch{try{bI(t)}catch{}return null}}import{jsx as bt,jsxs as sn}from"react/jsx-runtime";import{Box as qo,Text as an}from"panda-ink";import{c as qre}from"react/compiler-runtime";import{jsx as Gre}from"react/jsx-runtime";import{memo as Zre}from"react";import qte from"string-width";function qy(t){switch(t){case"success":return"success";case"error":return"error";case"executing":return"info";default:return"muted"}}import{c as Wee}from"react/compiler-runtime";import{jsx as kr,jsxs as Ir}from"react/jsx-runtime";import{Box as A6,Text as er,usePandaTheme as Kee}from"panda-ink";import{c as Pee}from"react/compiler-runtime";import{jsx as lo,jsxs as Ree}from"react/jsx-runtime";import{Box as Md,Text as Gy,ThemedText as I6,usePandaTheme as Aee}from"panda-ink";function jn(t,e){return t==="dark"?{primaryText:"white",secondaryText:"gray",secondaryDim:!0,userMessageBg:"#2b2b2b",assistantCodeBg:"#1f1f1f"}:{primaryText:e.textPrimary,secondaryText:e.textSecondary,secondaryDim:!1,userMessageBg:e.surfaceMuted,assistantCodeBg:e.surfaceMuted}}var Xn=process.platform==="darwin"?"\u23FA":"\u25CF",Ad="\u25B8";function Mee(t){switch(t){case"info":return"cyan";case"success":return"green";case"error":return"red";default:return"gray"}}function mt(t){let e=Pee(6),{level:n,tone:o,text:r}=t,{currentTheme:i,palette:s}=Aee(),a;if(e[0]!==i||e[1]!==n||e[2]!==s||e[3]!==r||e[4]!==o){let l=jn(i,s),c=i==="dark",u=" ".repeat(Math.max(0,n));a=Ree(Md,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[lo(Md,{flexShrink:0,minWidth:Math.max(0,u.length),children:c?lo(Gy,{color:l.secondaryText,dimColor:l.secondaryDim,children:u}):lo(I6,{colorKey:"textSecondary",dimColor:!0,children:u})}),lo(Md,{flexShrink:0,minWidth:2,children:lo(Gy,{color:Mee(o),children:n>0?"\u23BF":Xn})}),lo(Md,{flexShrink:0,minWidth:1,children:lo(Gy,{color:l.primaryText,children:" "})}),lo(Md,{flexGrow:1,flexShrink:1,minWidth:0,children:c?lo(Gy,{color:l.primaryText,wrap:"truncate-end",children:r}):lo(I6,{colorKey:"textPrimary",wrap:"truncate-end",children:r})})]}),e[0]=i,e[1]=n,e[2]=s,e[3]=r,e[4]=o,e[5]=a}else a=e[5];return a}var Dee=72;function Oee(t,e){let n=t.replace(/\s+/g," ").trim();return n.length<=e?n:`${n.slice(0,Math.max(0,e-1))}\u2026`}function Lee(t,e,n){let r=t.find(i=>i.id===e)?.options??[];return pg(n,r)}function Nee(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e={};for(let[n,o]of Object.entries(t))typeof o=="string"&&o.trim()&&(e[n]=o.trim());return Object.keys(e).length>0?e:void 0}function C6(t){if(!t||typeof t!="object")return null;let e=t,n=typeof e.questionId=="string"?e.questionId:typeof e.question_id=="string"?e.question_id:"";if(!n)return null;let r=(Array.isArray(e.selectedOptionIds)?e.selectedOptionIds:Array.isArray(e.selected_option_ids)?e.selected_option_ids:[]).filter(a=>typeof a=="string"),i=typeof e.freeformText=="string"?e.freeformText:typeof e.freeform_text=="string"?e.freeform_text:void 0,s=Nee(e.optionNotes??e.option_notes);return{questionId:n,selectedOptionIds:r,freeformText:i,optionNotes:s}}function E6(t){let e=[];for(let n of t){let o=C6(n);o&&e.push(o)}return e}function $ee(t){if(!Array.isArray(t))return[];let e=[];for(let n of t){let o=C6(n);o&&e.push(o)}return e}function Fee(t){let e=t.trim();if(!e)return null;try{let n=JSON.parse(e);if(!n||typeof n!="object")return null;let o=n,r=o.type;if(typeof r=="string"&&r!=="ask_question")return null;let i=o.skipped===!0,s=$ee(o.answers);return{skipped:i,answers:s}}catch{return null}}function Uee(t){let e=t?.completionResult;return e&&typeof e.skipped=="boolean"&&Array.isArray(e.answers)?{skipped:e.skipped,answers:E6(e.answers)}:null}function Bee(t){let e=t;return e?.kind==="ask_question"&&typeof e.skipped=="boolean"&&Array.isArray(e.answers)?{skipped:e.skipped,answers:E6(e.answers)}:null}function P6(t,e,n){return Uee(t)??Bee(e)??Fee(n)}function R6(t,e,n,o){let r=o?.promptMax??Dee;if(!e)return{kind:"raw",text:n};if(e.skipped)return{kind:"skipped"};let i=Array.isArray(t)?t:[],s=new Map;for(let u of e.answers)s.set(u.questionId,u);let a=[],l=0;for(let u=0;u<i.length;u++){let d=i[u],p=s.get(d.id),f=Array.isArray(p?.selectedOptionIds)?p.selectedOptionIds:[],m=typeof p?.freeformText=="string"?p.freeformText.trim():"",g=p?.optionNotes??{},h=[];for(let y of f){let v=Lee(i,d.id,y),b=g[y]?.trim();h.push(b?`${v}\uFF08${b}\uFF09`:v)}d.freeform&&m&&h.push(`\u5176\u4ED6\uFF1A${m}`),h.length!==0&&(l++,a.push({depth:0,text:`Q${u+1}: ${Oee(d.prompt,r)}`}),a.push({depth:1,text:`\u7B54\uFF1A${h.join("\u3001")}`}))}return a.length===0?e.answers.length>0?{kind:"raw",text:n}:{kind:"lines",lines:[{depth:0,text:"\u5DF2\u5B8C\u6210"}]}:{kind:"lines",lines:[...[{depth:0,text:`\u5DF2\u56DE\u7B54 ${l} \u9898`}],...a]}}import{jsx as Vs,jsxs as jee}from"react/jsx-runtime";import{Box as Dd,Text as xI}from"panda-ink";function zee(t){switch(t){case"info":return"cyan";case"success":return"green";case"error":return"red";default:return"gray"}}function rt(t){let{level:e,tone:n,children:o}=t,r=" ".repeat(Math.max(0,e));return jee(Dd,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[Vs(Dd,{flexShrink:0,minWidth:Math.max(0,r.length),children:Vs(xI,{color:"gray",dimColor:!0,children:r})}),Vs(Dd,{flexShrink:0,minWidth:2,children:Vs(xI,{color:zee(n),children:e>0?"\u23BF":Xn})}),Vs(Dd,{flexShrink:0,minWidth:1,children:Vs(xI,{color:"white",children:" "})}),Vs(Dd,{flexGrow:1,flexShrink:1,minWidth:0,flexDirection:"column",children:o})]})}function Hee(t){let{lines:e}=t;return kr(A6,{flexDirection:"column",width:"100%",children:e.map((n,o)=>Ir(er,{dimColor:!0,wrap:"truncate-end",children:[n.depth===0?"\u23BF ":" \u23BF ",n.text]},`ask-q-tree-${o}`))})}function M6(t){let e=Wee(25),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=Kee(),a,l,c;if(e[0]!==n||e[1]!==i.displayData||e[2]!==i.resultText||e[3]!==i.status||e[4]!==i.structuredData||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let d=Kk(i.displayData);if(!d||!Array.isArray(d.questions)||d.questions.length===0){let v;e[10]!==n||e[11]!==r||e[12]!==o?(v=kr(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=v):v=e[13],l=v;break e}c=d.title?.trim();let p=d.allowSkipAll===!0;a=i.status==="error";let f=i.status==="success",m=d.questions.length>0,g=i.status,h=g==="confirming"||m&&(g==="pending"||g==="executing");if(!m&&(g==="executing"||g==="pending")){l=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(er,{dimColor:!0,children:"\u51C6\u5907\u95EE\u5377\u2026"})]});break e}if(h){l=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(er,{dimColor:!0,children:"\u8BF7\u5728\u5E95\u90E8\u300C? \u95EE\u7B54\u300D\u5F39\u5C42\u4E2D\u9009\u62E9\u9009\u9879\u3002"}),p?kr(er,{dimColor:!0,children:"\u5141\u8BB8\u8DF3\u8FC7\u5168\u90E8\uFF08Esc\uFF09\u3002"}):null]});break e}if(f){let v=i.resultText?.trim()??"",b=P6(d,i.structuredData,v),R=R6(d.questions,b,v);l=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),R.kind==="skipped"?kr(er,{dimColor:!0,wrap:"truncate-end",children:"\u23BF \u5DF2\u8DF3\u8FC7"}):R.kind==="lines"?kr(Hee,{lines:R.lines}):kr(er,{color:"gray",wrap:"truncate-end",children:R.text})]});break e}}e[0]=n,e[1]=i.displayData,e[2]=i.resultText,e[3]=i.status,e[4]=i.structuredData,e[5]=r,e[6]=o,e[7]=a,e[8]=l,e[9]=c}else a=e[7],l=e[8],c=e[9];if(l!==Symbol.for("react.early_return_sentinel"))return l;if(a&&i.errorText){let d;return e[14]!==n||e[15]!==s.textError||e[16]!==i.errorText||e[17]!==c||e[18]!==o?(d=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(er,{color:s.textError,wrap:"truncate-end",children:i.errorText})]}),e[14]=n,e[15]=s.textError,e[16]=i.errorText,e[17]=c,e[18]=o,e[19]=d):d=e[19],d}let u;return e[20]!==n||e[21]!==r||e[22]!==c||e[23]!==o?(u=Ir(rt,{level:n,tone:o,children:[Ir(er,{wrap:"truncate-end",bold:!0,children:["\u53D1\u8D77\u63D0\u95EE",c?` \xB7 ${c}`:""]}),kr(A6,{children:kr(er,{dimColor:!0,wrap:"truncate-end",children:r})})]}),e[20]=n,e[21]=r,e[22]=c,e[23]=o,e[24]=u):u=e[24],u}import{c as Vee}from"react/compiler-runtime";import{jsx as Zy,jsxs as D6}from"react/jsx-runtime";import qee from"node:path";import{Text as Jy,usePandaTheme as Gee}from"panda-ink";var O6=200;function Zee(t){return t.length<=O6?t:`${t.slice(0,O6-1)}\u2026`}function L6(t){let e=Vee(13),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=Gee(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=Wk(i.displayData);if(!c){let f;e[9]!==n||e[10]!==r||e[11]!==o?(f=Zy(mt,{level:n,tone:o,text:r}),e[9]=n,e[10]=r,e[11]=o,e[12]=f):f=e[12],l=f;break e}let u=(c.uri??"").trim(),d=u?qee.basename(u):"(unknown)",p=i.status==="error";a=D6(rt,{level:n,tone:o,children:[D6(Jy,{wrap:"truncate-end",bold:!0,children:["\u5220\u9664\u6587\u4EF6 \u2192 ",d]}),u?Zy(Jy,{dimColor:!0,wrap:"truncate-end",children:Zee(u)}):Zy(Jy,{dimColor:!0,children:"\uFF08\u672A\u89E3\u6790\u8DEF\u5F84\uFF09"}),p&&i.errorText?Zy(Jy,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as tte}from"react/compiler-runtime";import{jsx as zn,jsxs as Wi}from"react/jsx-runtime";import $6 from"node:path";import{fileURLToPath as nte}from"node:url";import{Box as Yy,Text as ur,usePandaTheme as rte}from"panda-ink";import{jsx as TI}from"react/jsx-runtime";import wI from"node:path";import{fileURLToPath as Jee,pathToFileURL as Yee}from"node:url";import{Link as Qee,Text as N6}from"panda-ink";function Xee(t){let e=t.trim();if(!e)return null;try{return e.startsWith("file:")?new URL(e).href:Yee(e).href}catch{return null}}function ete(t){try{return t.trim().startsWith("file:")?wI.basename(Jee(t)):wI.basename(t)}catch{return wI.basename(t)}}function zi(t){let{filePath:e,children:n}=t,o=Xee(e),r=n??ete(e);return o?TI(Qee,{url:o,fallback:TI(N6,{wrap:"truncate-end",children:r}),children:r}):TI(N6,{wrap:"truncate-end",children:r})}var ote=24,F6=480;function U6(t,e){return t.length<=e?t:`${t.slice(0,e-1)}\u2026`}function B6(t){let e=tte(11),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=rte(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=Uk(i.displayData);if(!c){l=zn(mt,{level:n,tone:o,text:r});break e}let u=c.uri?.trim()??"",d=u?(()=>{try{if(u.startsWith("file:"))return $6.basename(nte(u))}catch{}return $6.basename(u)})():"(unknown)",p=c.structuredPatch??[],f=i.status==="error",m=c.oldString??"",g=c.newString??"";if(p.length===0){if(!m&&!g){l=zn(mt,{level:n,tone:o,text:r});break e}l=Wi(rt,{level:n,tone:o,children:[Wi(Yy,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[zn(ur,{bold:!0,children:"\u7F16\u8F91 "}),u?zn(zi,{filePath:u,children:d}):zn(ur,{bold:!0,children:d}),zn(ur,{bold:!0,children:"\uFF08\u7247\u6BB5\u66FF\u6362\uFF09"})]}),Wi(Yy,{width:"100%",flexDirection:"column",children:[m?Wi(ur,{color:s.accentError,wrap:"truncate-end",children:["- ",U6(m,F6)]}):null,g?Wi(ur,{color:s.accentSuccess,wrap:"truncate-end",children:["+ ",U6(g,F6)]}):null]}),f&&i.errorText?zn(ur,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]});break e}let h=Cy(p),y=` [ +${h.added} -${h.removed} ]`,v=gN(h.lines),b=v.slice(0,ote),R=v.length-b.length,M;e[9]!==s?(M=(B,S)=>{let x=B.type==="added"?s.accentSuccess:B.type==="removed"?s.accentError:B.type==="hunk"?s.accentWarning:s.textSecondary;return zn(ur,{color:x,wrap:"truncate-end",children:B.content},`d-${S}`)},e[9]=s,e[10]=M):M=e[10],a=Wi(rt,{level:n,tone:o,children:[Wi(Yy,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[zn(ur,{bold:!0,children:"\u7F16\u8F91 "}),u?zn(zi,{filePath:u,children:d}):zn(ur,{bold:!0,children:d}),zn(ur,{bold:!0,children:y})]}),zn(Yy,{width:"100%",flexDirection:"column",children:b.map(M)}),R>0?Wi(ur,{dimColor:!0,children:["\u2026\uFF08\u53E6\u6709 ",R," \u884C\u672A\u663E\u793A\uFF09"]}):null,f&&i.errorText?zn(ur,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as ite}from"react/compiler-runtime";import{jsx as Cr,jsxs as Od}from"react/jsx-runtime";import j6 from"node:path";import{fileURLToPath as ste}from"node:url";import{Box as z6,Text as jo,usePandaTheme as ate}from"panda-ink";function lte(t,e){return Number.isFinite(t)&&Number.isFinite(e)?`[L${t}-${e}]`:Number.isFinite(t)?`[L${t}-]`:Number.isFinite(e)?`[-L${e}]`:""}function W6(t){let e=ite(9),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=ate(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=$k(i.displayData);if(!c){l=Cr(mt,{level:n,tone:o,text:r});break e}let u=c.uri?.trim()??"",d=u?(()=>{try{if(u.startsWith("file:"))return j6.basename(ste(u))}catch{}return j6.basename(u)})():"(unknown)",p=lte(c.startLine,c.endLine),f=i.status==="error";if(c.notFound){l=Od(rt,{level:n,tone:o,children:[Od(z6,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[Cr(jo,{bold:!0,children:"\u8BFB\u53D6 "}),u?Cr(zi,{filePath:u,children:d}):Cr(jo,{bold:!0,children:d}),Od(jo,{bold:!0,children:[" ","[\u672A\u53D1\u73B0]",p?` ${p}`:""]})]}),Cr(jo,{dimColor:!0,children:"\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u8BFB"}),f&&i.errorText?Cr(jo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]});break e}a=Od(rt,{level:n,tone:o,children:[Od(z6,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[Cr(jo,{bold:!0,children:"\u8BFB\u53D6 "}),u?Cr(zi,{filePath:u,children:d}):Cr(jo,{bold:!0,children:d}),Cr(jo,{bold:!0,children:p?` ${p}`:""})]}),f&&i.errorText?Cr(jo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as mte}from"react/compiler-runtime";import{jsx as zo,jsxs as _I}from"react/jsx-runtime";import{Box as G6,Text as qs,usePandaTheme as gte}from"panda-ink";import{jsx as Qy}from"react/jsx-runtime";import{Box as H6,Text as V6}from"panda-ink";var cte={30:"black",31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",37:"white",90:"gray",91:"red",92:"green",93:"yellow",94:"blue",95:"magenta",96:"cyan",97:"white"};function ute(){return{bold:!1,dim:!1,color:void 0}}function dte(t,e){if(e===0){t.bold=!1,t.dim=!1,t.color=void 0;return}if(e===1){t.bold=!0;return}if(e===2){t.dim=!0;return}if(e===22){t.bold=!1;return}if(e===39){t.color=void 0;return}let n=cte[e];n&&(t.color=n)}function pte(t,e,n){t&&n.push({text:t,bold:e.bold||void 0,dim:e.dim||void 0,color:e.color})}function fte(t){let e=[];for(let n of t){let o=e[e.length-1];o&&o.bold===n.bold&&o.dim===n.dim&&o.color===n.color?o.text+=n.text:e.push({...n})}return e}function K6(t){let e=[],n=ute(),o=0;for(;o<t.length;){if(t.charCodeAt(o)===27&&o+1<t.length&&t[o+1]==="["){let s=o+2;for(;s<t.length&&t[s]!=="m";)s++;if(s<t.length&&t[s]==="m"){let a=t.slice(o+2,s),l=a===""?[0]:a.split(";").map(c=>parseInt(c,10)).filter(c=>!Number.isNaN(c));for(let c of l)dte(n,c);o=s+1;continue}}let r=t.indexOf("\x1B",o+1),i=r<0?t.length:r;pte(t.slice(o,i),n,e),o=i}return fte(e)}function q6(t){let e=t.text.split(`
2072
+ `);return Qy(H6,{flexDirection:"column",children:e.map((n,o)=>{let r=K6(n);return Qy(H6,{flexDirection:"row",flexWrap:"wrap",children:r.length===0?Qy(V6,{dimColor:!0,children:" "}):r.map((i,s)=>Qy(V6,{color:i.color??"gray",bold:!!i.bold,dimColor:!!i.dim,wrap:"truncate-end",children:i.text},s))},o)})})}var SI=14,Z6=6e3;function hte(t){if(!t||typeof t!="object")return null;let e=t;return e.tool!=="run_terminal_cmd"?null:{tool:"run_terminal_cmd",description:typeof e.description=="string"?e.description:void 0,command:typeof e.command=="string"?e.command:void 0,commandSummary:typeof e.commandSummary=="string"?e.commandSummary:void 0,outputPreview:typeof e.outputPreview=="string"?e.outputPreview:void 0,exitCode:typeof e.exitCode=="number"||e.exitCode===null?e.exitCode:void 0,blockTimedOut:e.blockTimedOut===!0,terminalInstanceId:typeof e.terminalInstanceId=="number"?e.terminalInstanceId:void 0}}function yte(t){let e=t.replace(/\r\n/g,`
2073
2073
  `).trimEnd();if(e.length<=Z6){let n=e.split(`
2074
2074
  `);return n.length<=SI?e:`${n.slice(0,SI).join(`
2075
2075
  `)}
2076
- \u2026 (${n.length-SI} more lines)`}return`${e.slice(0,Z6)}\u2026`}function J6(t){let e=pte(14),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=fte(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.resultText||e[5]!==i.status||e[6]!==r||e[7]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=mte(i.displayData);if(!c){let v;e[10]!==n||e[11]!==r||e[12]!==o?(v=zo(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=v):v=e[13],l=v;break e}let u=(c.commandSummary||c.command||"").trim()||"(no command)",d=(c.command||c.commandSummary||"").trim()||"(no command)",p=(c.outputPreview||i.resultText||"").trim(),f=(c.description||"").trim()||"(no description)",m=c.exitCode,g=i.status==="error",h=typeof m=="number"&&m!==0,y=g||h?s.textError:"gray";a=_I(rt,{level:n,tone:o,children:[zo(qs,{wrap:"truncate-end",bold:!0,children:`cmd(${u}) ${f}`}),zo(qs,{dimColor:!0,wrap:"truncate-end",children:`$ ${d}`}),p?zo(G6,{backgroundColor:s.surfaceMuted,paddingX:1,children:zo(q6,{text:gte(p)})}):zo(qs,{dimColor:!0,children:g?"\uFF08\u547D\u4EE4\u5931\u8D25\uFF0C\u65E0\u7EC8\u7AEF\u6355\u83B7\u8F93\u51FA\uFF09":"\u6B63\u5728\u6267\u884C"}),typeof m=="number"||m===null?zo(G6,{backgroundColor:s.surfaceMuted,paddingX:1,children:_I(qs,{color:y,dimColor:!g&&!h,children:["exit ",m===null?"\u2014":String(m)]})}):null,c.blockTimedOut?zo(qs,{color:"yellow",children:"\u90E8\u5206\u8F93\u51FA\uFF08\u7B49\u5F85\u8D85\u65F6\uFF09"}):null,typeof c.terminalInstanceId=="number"?_I(qs,{dimColor:!0,children:["\u540E\u53F0\u7EC8\u7AEF #",c.terminalInstanceId]}):null,g&&i.errorText?zo(qs,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.resultText,e[5]=i.status,e[6]=r,e[7]=o,e[8]=a,e[9]=l}else a=e[8],l=e[9];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as hte}from"react/compiler-runtime";import{jsx as co,jsxs as Wo}from"react/jsx-runtime";import{Text as dr,usePandaTheme as yte}from"panda-ink";var Y6=200;function kI(t){return t.length<=Y6?t:`${t.slice(0,Y6-1)}\u2026`}function vte(t){return t==="pending"||t==="executing"||t==="confirming"}function Xy(t){let e=hte(48),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=yte(),a=i.status==="error",l;e[0]!==i.status?(l=vte(i.status),e[0]=i.status,e[1]=l):l=e[1];let c=l,u=i.name;if(u==="grep"){let p,f;if(e[2]!==a||e[3]!==n||e[4]!==s||e[5]!==i.displayData||e[6]!==i.errorText||e[7]!==r||e[8]!==o||e[9]!==c){f=Symbol.for("react.early_return_sentinel");e:{let m=hN(i.displayData);if(!m){let v;e[12]!==n||e[13]!==r||e[14]!==o?(v=co(mt,{level:n,tone:o,text:r}),e[12]=n,e[13]=r,e[14]=o,e[15]=v):v=e[15],f=v;break e}let g=m.pattern??"(empty)",h=m.searchDir??".",y=m.items??[];p=Wo(rt,{level:n,tone:o,children:[Wo(dr,{wrap:"truncate-end",bold:!0,children:["\u641C\u7D22 [",g,"] | \u8303\u56F4: ",kI(h)]}),c&&y.length===0?co(dr,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):Wo(dr,{dimColor:!0,wrap:"truncate-end",children:["\u5339\u914D ",y.length," \u6761"]}),a&&i.errorText?co(dr,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[2]=a,e[3]=n,e[4]=s,e[5]=i.displayData,e[6]=i.errorText,e[7]=r,e[8]=o,e[9]=c,e[10]=p,e[11]=f}else p=e[10],f=e[11];return f!==Symbol.for("react.early_return_sentinel")?f:p}if(u==="glob_file_search"){let p,f;if(e[16]!==a||e[17]!==n||e[18]!==s||e[19]!==i.displayData||e[20]!==i.errorText||e[21]!==r||e[22]!==o||e[23]!==c){f=Symbol.for("react.early_return_sentinel");e:{let m=yN(i.displayData);if(!m){let v;e[26]!==n||e[27]!==r||e[28]!==o?(v=co(mt,{level:n,tone:o,text:r}),e[26]=n,e[27]=r,e[28]=o,e[29]=v):v=e[29],f=v;break e}let g=m.pattern??"(empty)",h=m.searchDir??".",y=m.items??[];p=Wo(rt,{level:n,tone:o,children:[Wo(dr,{wrap:"truncate-end",bold:!0,children:["\u5339\u914D [",g,"] | \u8303\u56F4: ",kI(h)]}),c&&y.length===0?co(dr,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):Wo(dr,{dimColor:!0,wrap:"truncate-end",children:["\u5339\u914D ",y.length," \u6761"]}),a&&i.errorText?co(dr,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[16]=a,e[17]=n,e[18]=s,e[19]=i.displayData,e[20]=i.errorText,e[21]=r,e[22]=o,e[23]=c,e[24]=p,e[25]=f}else p=e[24],f=e[25];return f!==Symbol.for("react.early_return_sentinel")?f:p}if(u==="list_files"){let p,f;if(e[30]!==a||e[31]!==n||e[32]!==s||e[33]!==i.displayData||e[34]!==i.errorText||e[35]!==r||e[36]!==o||e[37]!==c){f=Symbol.for("react.early_return_sentinel");e:{let m=Bk(i.displayData);if(!m){let y;e[40]!==n||e[41]!==r||e[42]!==o?(y=co(mt,{level:n,tone:o,text:r}),e[40]=n,e[41]=r,e[42]=o,e[43]=y):y=e[43],f=y;break e}let g=m.dir_path??".",h=m.entries??[];p=Wo(rt,{level:n,tone:o,children:[Wo(dr,{wrap:"truncate-end",bold:!0,children:["\u5217\u51FA [",kI(g),"]"]}),c&&h.length===0?co(dr,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):Wo(dr,{dimColor:!0,wrap:"truncate-end",children:["\u5171 ",h.length," \u9879"]}),a&&i.errorText?co(dr,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[30]=a,e[31]=n,e[32]=s,e[33]=i.displayData,e[34]=i.errorText,e[35]=r,e[36]=o,e[37]=c,e[38]=p,e[39]=f}else p=e[38],f=e[39];return f!==Symbol.for("react.early_return_sentinel")?f:p}let d;return e[44]!==n||e[45]!==r||e[46]!==o?(d=co(mt,{level:n,tone:o,text:r}),e[44]=n,e[45]=r,e[46]=o,e[47]=d):d=e[47],d}import{c as bte}from"react/compiler-runtime";import{jsx as Ld,jsxs as ev}from"react/jsx-runtime";import{Text as Wl,usePandaTheme as xte}from"panda-ink";function Tte(t){return t==="pending"||t==="executing"||t==="confirming"}function wte(t){if(!t||typeof t!="object")return;let n=t.skill_name;return typeof n=="string"&&n.trim()?n:void 0}function II(t){let e=bte(26),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=xte(),a=i.status==="error",l;e[0]!==i.status?(l=Tte(i.status),e[0]=i.status,e[1]=l):l=e[1];let c=l,u=i.name;if(u==="list_skills"){let p;e[2]!==i.displayData?(p=Hk(i.displayData),e[2]=i.displayData,e[3]=p):p=e[3];let m=p?.items,g=Array.isArray(m)?m.length:void 0,h=typeof g=="number"?`${g} \u9879`:c?"\u2026":"\u2014",y;return e[4]!==h||e[5]!==a||e[6]!==n||e[7]!==g||e[8]!==s||e[9]!==i.errorText||e[10]!==o||e[11]!==c?(y=ev(rt,{level:n,tone:o,children:[ev(Wl,{wrap:"truncate-end",bold:!0,children:["\u5217\u51FA\u6280\u80FD \xB7 ",h]}),c&&typeof g!="number"?Ld(Wl,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):null,a&&i.errorText?Ld(Wl,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]}),e[4]=h,e[5]=a,e[6]=n,e[7]=g,e[8]=s,e[9]=i.errorText,e[10]=o,e[11]=c,e[12]=y):y=e[12],y}if(u==="use_skill"){let p;if(e[13]!==a||e[14]!==n||e[15]!==s||e[16]!==i.args||e[17]!==i.displayData||e[18]!==i.errorText||e[19]!==o||e[20]!==c){let m=Vk(i.displayData)?.skillName??wte(i.args)??"(unknown)";p=ev(rt,{level:n,tone:o,children:[ev(Wl,{wrap:"truncate-end",bold:!0,children:["\u4F7F\u7528\u6280\u80FD \xB7 ",m]}),c?Ld(Wl,{dimColor:!0,children:"\uFF08\u52A0\u8F7D SKILL.md\u2026\uFF09"}):null,a&&i.errorText?Ld(Wl,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]}),e[13]=a,e[14]=n,e[15]=s,e[16]=i.args,e[17]=i.displayData,e[18]=i.errorText,e[19]=o,e[20]=c,e[21]=p}else p=e[21];return p}let d;return e[22]!==n||e[23]!==r||e[24]!==o?(d=Ld(mt,{level:n,tone:o,text:r}),e[22]=n,e[23]=r,e[24]=o,e[25]=d):d=e[25],d}import{c as X6}from"react/compiler-runtime";import{jsx as Wn,jsxs as EI}from"react/jsx-runtime";import{Box as _te,Text as uo,usePandaTheme as e9}from"panda-ink";var CI=5,Q6=1200,tv=200;function t9(t){return t==="pending"||t==="executing"||t==="confirming"}function n9(t){let e=t.replace(/\r\n/g,`
2076
+ \u2026 (${n.length-SI} more lines)`}return`${e.slice(0,Z6)}\u2026`}function J6(t){let e=mte(14),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=gte(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.resultText||e[5]!==i.status||e[6]!==r||e[7]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=hte(i.displayData);if(!c){let v;e[10]!==n||e[11]!==r||e[12]!==o?(v=zo(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=v):v=e[13],l=v;break e}let u=(c.commandSummary||c.command||"").trim()||"(no command)",d=(c.command||c.commandSummary||"").trim()||"(no command)",p=(c.outputPreview||i.resultText||"").trim(),f=(c.description||"").trim()||"(no description)",m=c.exitCode,g=i.status==="error",h=typeof m=="number"&&m!==0,y=g||h?s.textError:"gray";a=_I(rt,{level:n,tone:o,children:[zo(qs,{wrap:"truncate-end",bold:!0,children:`cmd(${u}) ${f}`}),zo(qs,{dimColor:!0,wrap:"truncate-end",children:`$ ${d}`}),p?zo(G6,{backgroundColor:s.surfaceMuted,paddingX:1,children:zo(q6,{text:yte(p)})}):zo(qs,{dimColor:!0,children:g?"\uFF08\u547D\u4EE4\u5931\u8D25\uFF0C\u65E0\u7EC8\u7AEF\u6355\u83B7\u8F93\u51FA\uFF09":"\u6B63\u5728\u6267\u884C"}),typeof m=="number"||m===null?zo(G6,{backgroundColor:s.surfaceMuted,paddingX:1,children:_I(qs,{color:y,dimColor:!g&&!h,children:["exit ",m===null?"\u2014":String(m)]})}):null,c.blockTimedOut?zo(qs,{color:"yellow",children:"\u90E8\u5206\u8F93\u51FA\uFF08\u7B49\u5F85\u8D85\u65F6\uFF09"}):null,typeof c.terminalInstanceId=="number"?_I(qs,{dimColor:!0,children:["\u540E\u53F0\u7EC8\u7AEF #",c.terminalInstanceId]}):null,g&&i.errorText?zo(qs,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.resultText,e[5]=i.status,e[6]=r,e[7]=o,e[8]=a,e[9]=l}else a=e[8],l=e[9];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as vte}from"react/compiler-runtime";import{jsx as co,jsxs as Wo}from"react/jsx-runtime";import{Text as dr,usePandaTheme as bte}from"panda-ink";var Y6=200;function kI(t){return t.length<=Y6?t:`${t.slice(0,Y6-1)}\u2026`}function xte(t){return t==="pending"||t==="executing"||t==="confirming"}function Xy(t){let e=vte(48),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=bte(),a=i.status==="error",l;e[0]!==i.status?(l=xte(i.status),e[0]=i.status,e[1]=l):l=e[1];let c=l,u=i.name;if(u==="grep"){let p,f;if(e[2]!==a||e[3]!==n||e[4]!==s||e[5]!==i.displayData||e[6]!==i.errorText||e[7]!==r||e[8]!==o||e[9]!==c){f=Symbol.for("react.early_return_sentinel");e:{let m=hN(i.displayData);if(!m){let v;e[12]!==n||e[13]!==r||e[14]!==o?(v=co(mt,{level:n,tone:o,text:r}),e[12]=n,e[13]=r,e[14]=o,e[15]=v):v=e[15],f=v;break e}let g=m.pattern??"(empty)",h=m.searchDir??".",y=m.items??[];p=Wo(rt,{level:n,tone:o,children:[Wo(dr,{wrap:"truncate-end",bold:!0,children:["\u641C\u7D22 [",g,"] | \u8303\u56F4: ",kI(h)]}),c&&y.length===0?co(dr,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):Wo(dr,{dimColor:!0,wrap:"truncate-end",children:["\u5339\u914D ",y.length," \u6761"]}),a&&i.errorText?co(dr,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[2]=a,e[3]=n,e[4]=s,e[5]=i.displayData,e[6]=i.errorText,e[7]=r,e[8]=o,e[9]=c,e[10]=p,e[11]=f}else p=e[10],f=e[11];return f!==Symbol.for("react.early_return_sentinel")?f:p}if(u==="glob_file_search"){let p,f;if(e[16]!==a||e[17]!==n||e[18]!==s||e[19]!==i.displayData||e[20]!==i.errorText||e[21]!==r||e[22]!==o||e[23]!==c){f=Symbol.for("react.early_return_sentinel");e:{let m=yN(i.displayData);if(!m){let v;e[26]!==n||e[27]!==r||e[28]!==o?(v=co(mt,{level:n,tone:o,text:r}),e[26]=n,e[27]=r,e[28]=o,e[29]=v):v=e[29],f=v;break e}let g=m.pattern??"(empty)",h=m.searchDir??".",y=m.items??[];p=Wo(rt,{level:n,tone:o,children:[Wo(dr,{wrap:"truncate-end",bold:!0,children:["\u5339\u914D [",g,"] | \u8303\u56F4: ",kI(h)]}),c&&y.length===0?co(dr,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):Wo(dr,{dimColor:!0,wrap:"truncate-end",children:["\u5339\u914D ",y.length," \u6761"]}),a&&i.errorText?co(dr,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[16]=a,e[17]=n,e[18]=s,e[19]=i.displayData,e[20]=i.errorText,e[21]=r,e[22]=o,e[23]=c,e[24]=p,e[25]=f}else p=e[24],f=e[25];return f!==Symbol.for("react.early_return_sentinel")?f:p}if(u==="list_files"){let p,f;if(e[30]!==a||e[31]!==n||e[32]!==s||e[33]!==i.displayData||e[34]!==i.errorText||e[35]!==r||e[36]!==o||e[37]!==c){f=Symbol.for("react.early_return_sentinel");e:{let m=Bk(i.displayData);if(!m){let y;e[40]!==n||e[41]!==r||e[42]!==o?(y=co(mt,{level:n,tone:o,text:r}),e[40]=n,e[41]=r,e[42]=o,e[43]=y):y=e[43],f=y;break e}let g=m.dir_path??".",h=m.entries??[];p=Wo(rt,{level:n,tone:o,children:[Wo(dr,{wrap:"truncate-end",bold:!0,children:["\u5217\u51FA [",kI(g),"]"]}),c&&h.length===0?co(dr,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):Wo(dr,{dimColor:!0,wrap:"truncate-end",children:["\u5171 ",h.length," \u9879"]}),a&&i.errorText?co(dr,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[30]=a,e[31]=n,e[32]=s,e[33]=i.displayData,e[34]=i.errorText,e[35]=r,e[36]=o,e[37]=c,e[38]=p,e[39]=f}else p=e[38],f=e[39];return f!==Symbol.for("react.early_return_sentinel")?f:p}let d;return e[44]!==n||e[45]!==r||e[46]!==o?(d=co(mt,{level:n,tone:o,text:r}),e[44]=n,e[45]=r,e[46]=o,e[47]=d):d=e[47],d}import{c as Tte}from"react/compiler-runtime";import{jsx as Ld,jsxs as ev}from"react/jsx-runtime";import{Text as Wl,usePandaTheme as wte}from"panda-ink";function _te(t){return t==="pending"||t==="executing"||t==="confirming"}function Ste(t){if(!t||typeof t!="object")return;let n=t.skill_name;return typeof n=="string"&&n.trim()?n:void 0}function II(t){let e=Tte(26),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=wte(),a=i.status==="error",l;e[0]!==i.status?(l=_te(i.status),e[0]=i.status,e[1]=l):l=e[1];let c=l,u=i.name;if(u==="list_skills"){let p;e[2]!==i.displayData?(p=Hk(i.displayData),e[2]=i.displayData,e[3]=p):p=e[3];let m=p?.items,g=Array.isArray(m)?m.length:void 0,h=typeof g=="number"?`${g} \u9879`:c?"\u2026":"\u2014",y;return e[4]!==h||e[5]!==a||e[6]!==n||e[7]!==g||e[8]!==s||e[9]!==i.errorText||e[10]!==o||e[11]!==c?(y=ev(rt,{level:n,tone:o,children:[ev(Wl,{wrap:"truncate-end",bold:!0,children:["\u5217\u51FA\u6280\u80FD \xB7 ",h]}),c&&typeof g!="number"?Ld(Wl,{dimColor:!0,children:"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09"}):null,a&&i.errorText?Ld(Wl,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]}),e[4]=h,e[5]=a,e[6]=n,e[7]=g,e[8]=s,e[9]=i.errorText,e[10]=o,e[11]=c,e[12]=y):y=e[12],y}if(u==="use_skill"){let p;if(e[13]!==a||e[14]!==n||e[15]!==s||e[16]!==i.args||e[17]!==i.displayData||e[18]!==i.errorText||e[19]!==o||e[20]!==c){let m=Vk(i.displayData)?.skillName??Ste(i.args)??"(unknown)";p=ev(rt,{level:n,tone:o,children:[ev(Wl,{wrap:"truncate-end",bold:!0,children:["\u4F7F\u7528\u6280\u80FD \xB7 ",m]}),c?Ld(Wl,{dimColor:!0,children:"\uFF08\u52A0\u8F7D SKILL.md\u2026\uFF09"}):null,a&&i.errorText?Ld(Wl,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]}),e[13]=a,e[14]=n,e[15]=s,e[16]=i.args,e[17]=i.displayData,e[18]=i.errorText,e[19]=o,e[20]=c,e[21]=p}else p=e[21];return p}let d;return e[22]!==n||e[23]!==r||e[24]!==o?(d=Ld(mt,{level:n,tone:o,text:r}),e[22]=n,e[23]=r,e[24]=o,e[25]=d):d=e[25],d}import{c as X6}from"react/compiler-runtime";import{jsx as Wn,jsxs as EI}from"react/jsx-runtime";import{Box as kte,Text as uo,usePandaTheme as e9}from"panda-ink";var CI=5,Q6=1200,tv=200;function t9(t){return t==="pending"||t==="executing"||t==="confirming"}function n9(t){let e=t.replace(/\r\n/g,`
2077
2077
  `).trim();if(!e)return[];let o=(e.length>Q6?`${e.slice(0,Q6)}\u2026`:e).split(`
2078
- `),r=o.length,s=o.slice(0,CI).map(a=>a.length>tv?`${a.slice(0,tv-1)}\u2026`:a);return r>CI&&s.push(`\u2026 (${r-CI} more lines)`),s}function r9(t){let{lines:e}=t;return e.length===0?null:Wn(_te,{flexDirection:"column",width:"100%",children:e.map((n,o)=>Wn(uo,{color:"gray",wrap:"truncate-end",children:n},o))})}function o9(t){let e=X6(14),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=e9(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.resultText||e[5]!==i.status||e[6]!==r||e[7]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=jk(i.displayData);if(!c){let h;e[10]!==n||e[11]!==r||e[12]!==o?(h=Wn(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=h):h=e[13],l=h;break e}let u=(c.query??"").trim()||"(empty)",d=c.numResults,p=[];typeof d=="number"&&p.push(`\u671F\u671B ${d} \u6761`);let f=i.status==="error",m=t9(i.status),g=n9((i.resultText??"").trim());a=EI(rt,{level:n,tone:o,children:[EI(uo,{wrap:"truncate-end",bold:!0,children:["\u7F51\u7EDC\u641C\u7D22 \xB7 ",u]}),p.length?Wn(uo,{dimColor:!0,wrap:"truncate-end",children:p.join(" \xB7 ")}):null,g.length>0?Wn(r9,{lines:g}):Wn(uo,{dimColor:!0,children:m?"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09":"\uFF08\u65E0\u6458\u8981\u9884\u89C8\uFF09"}),f&&i.errorText?Wn(uo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.resultText,e[5]=i.status,e[6]=r,e[7]=o,e[8]=a,e[9]=l}else a=e[8],l=e[9];return l!==Symbol.for("react.early_return_sentinel")?l:a}function i9(t){let e=X6(14),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=e9(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.resultText||e[5]!==i.status||e[6]!==r||e[7]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=zk(i.displayData);if(!c){let b;e[10]!==n||e[11]!==r||e[12]!==o?(b=Wn(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=b):b=e[13],l=b;break e}let u=(c.url??"").trim()||"(empty)",d=c.format,p=c.httpStatus,f=c.bytes,m=c.truncated===!0,g=i.status==="error",h=t9(i.status),y=n9((i.resultText??"").trim()),v=[];d&&v.push(String(d)),typeof p=="number"&&v.push(`HTTP ${p}`),typeof f=="number"&&v.push(`${f} B`),m&&v.push("\u5DF2\u622A\u65AD"),a=EI(rt,{level:n,tone:o,children:[Wn(uo,{wrap:"truncate-end",bold:!0,children:"\u7F51\u9875\u6293\u53D6"}),Wn(uo,{color:"cyan",wrap:"truncate-end",children:u.length>tv?`${u.slice(0,tv-1)}\u2026`:u}),v.length?Wn(uo,{dimColor:!0,wrap:"truncate-end",children:v.join(" \xB7 ")}):null,y.length>0?Wn(r9,{lines:y}):Wn(uo,{dimColor:!0,children:h?"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09":"\uFF08\u65E0\u6B63\u6587\u9884\u89C8\uFF09"}),g&&i.errorText?Wn(uo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.resultText,e[5]=i.status,e[6]=r,e[7]=o,e[8]=a,e[9]=l}else a=e[8],l=e[9];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as Ute}from"react/compiler-runtime";import{jsx as Ki,jsxs as T9}from"react/jsx-runtime";import w9 from"node:path";import{fileURLToPath as Bte}from"node:url";import{Box as jte,Text as Nd,usePandaTheme as zte}from"panda-ink";import{c as Nte}from"react/compiler-runtime";import{jsx as b9}from"react/jsx-runtime";import{Box as $te,usePandaTheme as Fte}from"panda-ink";import{c as Mte}from"react/compiler-runtime";import{jsx as y9}from"react/jsx-runtime";import{Box as Dte,Text as Ote,usePandaTheme as Lte}from"panda-ink";import Ste from"node:path";import{fileURLToPath as kte}from"node:url";import hn from"highlight.js/lib/core";import s9 from"highlight.js/lib/languages/bash";import a9 from"highlight.js/lib/languages/javascript";import Ite from"highlight.js/lib/languages/json";import l9 from"highlight.js/lib/languages/python";import c9 from"highlight.js/lib/languages/rust";import u9 from"highlight.js/lib/languages/typescript";import d9 from"highlight.js/lib/languages/xml";var Cte=new Set(["const","let","var","function","class","type","interface","enum","namespace","module","def","fn","func","struct","trait","impl"]),p9=!1,Ete=!0;function Pte(){p9||(hn.registerLanguage("typescript",u9),hn.registerLanguage("ts",u9),hn.registerLanguage("javascript",a9),hn.registerLanguage("js",a9),hn.registerLanguage("json",Ite),hn.registerLanguage("python",l9),hn.registerLanguage("py",l9),hn.registerLanguage("bash",s9),hn.registerLanguage("sh",s9),hn.registerLanguage("rust",c9),hn.registerLanguage("rs",c9),hn.registerLanguage("xml",d9),hn.registerLanguage("html",d9),p9=!0)}function Rte(t,e){if(/^(true|false|null|undefined)$/.test(e))return"codeBoolean";let n=t??"";return n.includes("comment")||n.includes("meta")?"codeComment":n.includes("string")||n.includes("regexp")?"codeString":n.includes("number")||n.includes("literal")||n.includes("symbol")?"codeNumber":n.includes("operator")?"codeOperator":n.includes("punctuation")?"codePunctuation":n.includes("built_in")?"codeBuiltin":n.includes("type")?"codeType":n.includes("params")?"codeParams":n.includes("title.function")||n.includes("title.class")||n.includes("title")?"codeTitle":n.includes("keyword")?Cte.has(e)?"codeStorage":"codeKeyword":"codeIdentifier"}function f9(t,e,n){let o=t.scope??e;for(let r of t.children??[]){if(typeof r=="string"){n.push({text:r,role:Rte(o,r),bold:!!(o&&(o.includes("keyword")||o.includes("title"))),dim:!!(o&&(o.includes("comment")||o.includes("meta")))});continue}f9(r,o,n)}}function Ate(t){if(t.role!=="codeIdentifier")return[t];let n=t.text.split(/(===|!==|==|!=|<=|>=|=>|&&|\|\||\+\+|--|[-+*/%<>=!&|^~?:]|[{}()[\].,;:])/g).filter(Boolean);return n.length<=1?[t]:n.map(o=>/^(===|!==|==|!=|<=|>=|=>|&&|\|\||\+\+|--|[-+*/%<>=!&|^~?:])$/.test(o)?{text:o,role:"codeOperator",bold:!0}:/^[{}()[\].,;:]$/.test(o)?{text:o,role:"codePunctuation"}:/^(true|false|null|undefined)$/.test(o)?{text:o,role:"codeBoolean",bold:!0}:{text:o,role:"codeIdentifier"})}function m9(t,e){if(!t)return[{text:"",role:"codeIdentifier"}];if(Ete)return[{text:t,role:"codeIdentifier"}];Pte();let n=(e??"").toLowerCase();try{let r=n&&hn.getLanguage(n)?hn.highlight(t,{language:n,ignoreIllegals:!0}):hn.highlightAuto(t),i=r.emitter??r._emitter;if(!i?.rootNode)return[{text:t,role:"codeIdentifier"}];let s=[];f9(i.rootNode,void 0,s);let a=s.flatMap(Ate);return a.length>0?a:[{text:t,role:"codeIdentifier"}]}catch{return[{text:t,role:"codeIdentifier"}]}}function g9(t){let e=t?.trim();if(e)try{let n=e.startsWith("file:")?kte(e):e;switch(Ste.extname(n).toLowerCase()){case".ts":case".tsx":return"typescript";case".mts":case".cts":return"typescript";case".js":case".jsx":case".mjs":case".cjs":return"javascript";case".json":return"json";case".py":return"python";case".sh":case".bash":case".zsh":return"bash";case".rs":return"rust";case".html":case".htm":case".xml":return"xml";default:return}}catch{return}}function h9(t){switch(t){case"muted":return"textMuted";case"emphasis":return"textPrimary";case"inlineCode":case"linkText":case"linkUrl":case"path":return"accentInfo";case"codeKeyword":return"syntaxKeyword";case"codeStorage":return"syntaxStorage";case"codeTitle":return"syntaxTitle";case"codeParams":return"syntaxParams";case"codeBuiltin":return"syntaxBuiltin";case"codeType":return"syntaxType";case"codeString":return"syntaxString";case"codeComment":return"syntaxComment";case"codeNumber":return"syntaxNumber";case"codeBoolean":return"syntaxNumber";case"codeIdentifier":return"textPrimary";case"codeOperator":return"syntaxOperator";case"codePunctuation":return"syntaxPunctuation";case"diffAdd":return"accentSuccess";case"diffDel":return"accentError";case"diffHunk":return"accentInfo";default:return"textPrimary"}}function v9(t){let e=Mte(6),{palette:n}=Lte(),o;if(e[0]!==n||e[1]!==t.lang||e[2]!==t.line){let r=m9(t.line,t.lang),i;e[4]!==n?(i=(s,a)=>y9(Ote,{color:n[h9(s.role)],bold:!!s.bold||s.role==="codeKeyword",dimColor:!!s.dim,children:s.text},a),e[4]=n,e[5]=i):i=e[5],o=y9(Dte,{width:"100%",flexDirection:"row",flexWrap:"wrap",children:r.map(i)}),e[0]=n,e[1]=t.lang,e[2]=t.line,e[3]=o}else o=e[3];return o}function x9(t){let e=Nte(4),{lines:n,uri:o}=t,{palette:r}=Fte(),i;if(e[0]!==n||e[1]!==r.surfaceMuted||e[2]!==o){let s=g9(o);i=b9($te,{width:"100%",flexDirection:"column",backgroundColor:r.surfaceMuted,paddingX:1,children:n.map((a,l)=>b9(v9,{line:a,lang:s},l))}),e[0]=n,e[1]=r.surfaceMuted,e[2]=o,e[3]=i}else i=e[3];return i}var PI=10,_9=6e3;function Wte(t){return t?t.split(/\r?\n/).length:0}function Kte(t){let e=t.replace(/\r\n/g,`
2078
+ `),r=o.length,s=o.slice(0,CI).map(a=>a.length>tv?`${a.slice(0,tv-1)}\u2026`:a);return r>CI&&s.push(`\u2026 (${r-CI} more lines)`),s}function r9(t){let{lines:e}=t;return e.length===0?null:Wn(kte,{flexDirection:"column",width:"100%",children:e.map((n,o)=>Wn(uo,{color:"gray",wrap:"truncate-end",children:n},o))})}function o9(t){let e=X6(14),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=e9(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.resultText||e[5]!==i.status||e[6]!==r||e[7]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=jk(i.displayData);if(!c){let h;e[10]!==n||e[11]!==r||e[12]!==o?(h=Wn(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=h):h=e[13],l=h;break e}let u=(c.query??"").trim()||"(empty)",d=c.numResults,p=[];typeof d=="number"&&p.push(`\u671F\u671B ${d} \u6761`);let f=i.status==="error",m=t9(i.status),g=n9((i.resultText??"").trim());a=EI(rt,{level:n,tone:o,children:[EI(uo,{wrap:"truncate-end",bold:!0,children:["\u7F51\u7EDC\u641C\u7D22 \xB7 ",u]}),p.length?Wn(uo,{dimColor:!0,wrap:"truncate-end",children:p.join(" \xB7 ")}):null,g.length>0?Wn(r9,{lines:g}):Wn(uo,{dimColor:!0,children:m?"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09":"\uFF08\u65E0\u6458\u8981\u9884\u89C8\uFF09"}),f&&i.errorText?Wn(uo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.resultText,e[5]=i.status,e[6]=r,e[7]=o,e[8]=a,e[9]=l}else a=e[8],l=e[9];return l!==Symbol.for("react.early_return_sentinel")?l:a}function i9(t){let e=X6(14),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=e9(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.resultText||e[5]!==i.status||e[6]!==r||e[7]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=zk(i.displayData);if(!c){let b;e[10]!==n||e[11]!==r||e[12]!==o?(b=Wn(mt,{level:n,tone:o,text:r}),e[10]=n,e[11]=r,e[12]=o,e[13]=b):b=e[13],l=b;break e}let u=(c.url??"").trim()||"(empty)",d=c.format,p=c.httpStatus,f=c.bytes,m=c.truncated===!0,g=i.status==="error",h=t9(i.status),y=n9((i.resultText??"").trim()),v=[];d&&v.push(String(d)),typeof p=="number"&&v.push(`HTTP ${p}`),typeof f=="number"&&v.push(`${f} B`),m&&v.push("\u5DF2\u622A\u65AD"),a=EI(rt,{level:n,tone:o,children:[Wn(uo,{wrap:"truncate-end",bold:!0,children:"\u7F51\u9875\u6293\u53D6"}),Wn(uo,{color:"cyan",wrap:"truncate-end",children:u.length>tv?`${u.slice(0,tv-1)}\u2026`:u}),v.length?Wn(uo,{dimColor:!0,wrap:"truncate-end",children:v.join(" \xB7 ")}):null,y.length>0?Wn(r9,{lines:y}):Wn(uo,{dimColor:!0,children:h?"\uFF08\u7B49\u5F85\u7ED3\u679C\u2026\uFF09":"\uFF08\u65E0\u6B63\u6587\u9884\u89C8\uFF09"}),g&&i.errorText?Wn(uo,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.resultText,e[5]=i.status,e[6]=r,e[7]=o,e[8]=a,e[9]=l}else a=e[8],l=e[9];return l!==Symbol.for("react.early_return_sentinel")?l:a}import{c as jte}from"react/compiler-runtime";import{jsx as Ki,jsxs as T9}from"react/jsx-runtime";import w9 from"node:path";import{fileURLToPath as zte}from"node:url";import{Box as Wte,Text as Nd,usePandaTheme as Kte}from"panda-ink";import{c as Fte}from"react/compiler-runtime";import{jsx as b9}from"react/jsx-runtime";import{Box as Ute,usePandaTheme as Bte}from"panda-ink";import{c as Ote}from"react/compiler-runtime";import{jsx as y9}from"react/jsx-runtime";import{Box as Lte,Text as Nte,usePandaTheme as $te}from"panda-ink";import Ite from"node:path";import{fileURLToPath as Cte}from"node:url";import hn from"highlight.js/lib/core";import s9 from"highlight.js/lib/languages/bash";import a9 from"highlight.js/lib/languages/javascript";import Ete from"highlight.js/lib/languages/json";import l9 from"highlight.js/lib/languages/python";import c9 from"highlight.js/lib/languages/rust";import u9 from"highlight.js/lib/languages/typescript";import d9 from"highlight.js/lib/languages/xml";var Pte=new Set(["const","let","var","function","class","type","interface","enum","namespace","module","def","fn","func","struct","trait","impl"]),p9=!1,Rte=!0;function Ate(){p9||(hn.registerLanguage("typescript",u9),hn.registerLanguage("ts",u9),hn.registerLanguage("javascript",a9),hn.registerLanguage("js",a9),hn.registerLanguage("json",Ete),hn.registerLanguage("python",l9),hn.registerLanguage("py",l9),hn.registerLanguage("bash",s9),hn.registerLanguage("sh",s9),hn.registerLanguage("rust",c9),hn.registerLanguage("rs",c9),hn.registerLanguage("xml",d9),hn.registerLanguage("html",d9),p9=!0)}function Mte(t,e){if(/^(true|false|null|undefined)$/.test(e))return"codeBoolean";let n=t??"";return n.includes("comment")||n.includes("meta")?"codeComment":n.includes("string")||n.includes("regexp")?"codeString":n.includes("number")||n.includes("literal")||n.includes("symbol")?"codeNumber":n.includes("operator")?"codeOperator":n.includes("punctuation")?"codePunctuation":n.includes("built_in")?"codeBuiltin":n.includes("type")?"codeType":n.includes("params")?"codeParams":n.includes("title.function")||n.includes("title.class")||n.includes("title")?"codeTitle":n.includes("keyword")?Pte.has(e)?"codeStorage":"codeKeyword":"codeIdentifier"}function f9(t,e,n){let o=t.scope??e;for(let r of t.children??[]){if(typeof r=="string"){n.push({text:r,role:Mte(o,r),bold:!!(o&&(o.includes("keyword")||o.includes("title"))),dim:!!(o&&(o.includes("comment")||o.includes("meta")))});continue}f9(r,o,n)}}function Dte(t){if(t.role!=="codeIdentifier")return[t];let n=t.text.split(/(===|!==|==|!=|<=|>=|=>|&&|\|\||\+\+|--|[-+*/%<>=!&|^~?:]|[{}()[\].,;:])/g).filter(Boolean);return n.length<=1?[t]:n.map(o=>/^(===|!==|==|!=|<=|>=|=>|&&|\|\||\+\+|--|[-+*/%<>=!&|^~?:])$/.test(o)?{text:o,role:"codeOperator",bold:!0}:/^[{}()[\].,;:]$/.test(o)?{text:o,role:"codePunctuation"}:/^(true|false|null|undefined)$/.test(o)?{text:o,role:"codeBoolean",bold:!0}:{text:o,role:"codeIdentifier"})}function m9(t,e){if(!t)return[{text:"",role:"codeIdentifier"}];if(Rte)return[{text:t,role:"codeIdentifier"}];Ate();let n=(e??"").toLowerCase();try{let r=n&&hn.getLanguage(n)?hn.highlight(t,{language:n,ignoreIllegals:!0}):hn.highlightAuto(t),i=r.emitter??r._emitter;if(!i?.rootNode)return[{text:t,role:"codeIdentifier"}];let s=[];f9(i.rootNode,void 0,s);let a=s.flatMap(Dte);return a.length>0?a:[{text:t,role:"codeIdentifier"}]}catch{return[{text:t,role:"codeIdentifier"}]}}function g9(t){let e=t?.trim();if(e)try{let n=e.startsWith("file:")?Cte(e):e;switch(Ite.extname(n).toLowerCase()){case".ts":case".tsx":return"typescript";case".mts":case".cts":return"typescript";case".js":case".jsx":case".mjs":case".cjs":return"javascript";case".json":return"json";case".py":return"python";case".sh":case".bash":case".zsh":return"bash";case".rs":return"rust";case".html":case".htm":case".xml":return"xml";default:return}}catch{return}}function h9(t){switch(t){case"muted":return"textMuted";case"emphasis":return"textPrimary";case"inlineCode":case"linkText":case"linkUrl":case"path":return"accentInfo";case"codeKeyword":return"syntaxKeyword";case"codeStorage":return"syntaxStorage";case"codeTitle":return"syntaxTitle";case"codeParams":return"syntaxParams";case"codeBuiltin":return"syntaxBuiltin";case"codeType":return"syntaxType";case"codeString":return"syntaxString";case"codeComment":return"syntaxComment";case"codeNumber":return"syntaxNumber";case"codeBoolean":return"syntaxNumber";case"codeIdentifier":return"textPrimary";case"codeOperator":return"syntaxOperator";case"codePunctuation":return"syntaxPunctuation";case"diffAdd":return"accentSuccess";case"diffDel":return"accentError";case"diffHunk":return"accentInfo";default:return"textPrimary"}}function v9(t){let e=Ote(6),{palette:n}=$te(),o;if(e[0]!==n||e[1]!==t.lang||e[2]!==t.line){let r=m9(t.line,t.lang),i;e[4]!==n?(i=(s,a)=>y9(Nte,{color:n[h9(s.role)],bold:!!s.bold||s.role==="codeKeyword",dimColor:!!s.dim,children:s.text},a),e[4]=n,e[5]=i):i=e[5],o=y9(Lte,{width:"100%",flexDirection:"row",flexWrap:"wrap",children:r.map(i)}),e[0]=n,e[1]=t.lang,e[2]=t.line,e[3]=o}else o=e[3];return o}function x9(t){let e=Fte(4),{lines:n,uri:o}=t,{palette:r}=Bte(),i;if(e[0]!==n||e[1]!==r.surfaceMuted||e[2]!==o){let s=g9(o);i=b9(Ute,{width:"100%",flexDirection:"column",backgroundColor:r.surfaceMuted,paddingX:1,children:n.map((a,l)=>b9(v9,{line:a,lang:s},l))}),e[0]=n,e[1]=r.surfaceMuted,e[2]=o,e[3]=i}else i=e[3];return i}var PI=10,_9=6e3;function Hte(t){return t?t.split(/\r?\n/).length:0}function Vte(t){let e=t.replace(/\r\n/g,`
2079
2079
  `);if(e.length>_9)return`${e.slice(0,_9)}\u2026`;let n=e.split(`
2080
2080
  `);return n.length<=PI?e:`${n.slice(0,PI).join(`
2081
2081
  `)}
2082
- \u2026 (${n.length-PI} more lines)`}function S9(t){let e=Ute(13),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=zte(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=Fk(i.displayData);if(!c){let g;e[9]!==n||e[10]!==r||e[11]!==o?(g=Ki(mt,{level:n,tone:o,text:r}),e[9]=n,e[10]=r,e[11]=o,e[12]=g):g=e[12],l=g;break e}let u=c.uri?.trim()??"",d=u?(()=>{try{if(u.startsWith("file:"))return w9.basename(Bte(u))}catch{}return w9.basename(u)})():"(unknown)",p=c.content??"",f=Wte(p),m=i.status==="error";a=T9(rt,{level:n,tone:o,children:[T9(jte,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[Ki(Nd,{bold:!0,children:"\u5199\u5165 "}),u?Ki(zi,{filePath:u,children:d}):Ki(Nd,{bold:!0,children:d}),Ki(Nd,{bold:!0,children:` ${f} \u884C`})]}),p?Ki(x9,{lines:Kte(p).split(`
2083
- `),uri:u||c.uri}):Ki(Nd,{dimColor:!0,children:"\uFF08\u7A7A\u6587\u4EF6\uFF09"}),m&&i.errorText?Ki(Nd,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}var RI={run_terminal_cmd:J6,write_file:S9,edit_file:B6,read_file:W6,grep:Xy,glob_file_search:Xy,list_files:Xy,web_search:o9,web_fetch:i9,ask_question:M6,delete_file:L6,list_skills:II,use_skill:II},AI=new Set(Object.keys(RI));function Gs(t){switch(t){case"executing":return 0;case"confirming":return 1;case"pending":return 2;case"error":return 3;case"success":return 4;default:return 5}}var Vte=2,qte=1;function Gte(t){return t.rows.some(e=>e.kind==="user_line")}function Fd(t){return Gte(t)?Vte:qte}function nv(t){for(let e=t.length-1;e>=0;e--){let n=t[e];if(!n.id.startsWith("gap:"))return n}}function MI(t){return!AI.has(t.name)&&t.name.startsWith("mcp_")}var C9=3;function Zte(t){let e=Math.floor(Number(t));return!Number.isFinite(e)||e<20?56:Math.min(4096,e)}function DI(t,e){if(!Number.isFinite(e)||e<1)return"";let n="";for(let o of Array.from(t)){let r=n+o;if(Hte(r)<=e)n=r;else break}return n}function Jte(t,e,n){let o=[],r=t,i=e;for(;r.length>0;){let s=DI(r,i);if(s.length===0){let a=Array.from(r)[0]??"";o.push(a),r=r.slice(a.length),i=n;continue}o.push(s),r=r.slice(s.length),i=n}return o.length?o:[""]}function Yte(t,e,n){let o=Math.max(4,n-C9),r=t.split(`
2084
- `),i=[];for(let s=0;s<r.length;s++){let a=r[s]??"",l=Jte(a,o,o);for(let c of l)i.push(c)}return i.length?i:[""]}function E9(t,e){let n=Math.floor(Number(t)),o=Math.max(20,Math.min(4096,Number.isFinite(n)&&n>0?n:56));if(!e)return"\u2500".repeat(o);let r=` ${e} `;if(r.length>=o)return r.slice(0,o);let i=o-r.length,s=Math.floor(i/2),a=i-s;return`${"\u2500".repeat(s)}${r}${"\u2500".repeat(a)}`}function k9(t,e=!1){switch(t.type){case"user":return{prefix:">",text:t.text};case"thinking":return{prefix:"",text:t.text};case"assistant":return{prefix:"\u2726",text:t.text};case"tool_group":return{prefix:"",text:""};case"info":return{prefix:"\u2139",text:t.text};case"error":return{prefix:"Error",text:t.text};default:return{prefix:" ",text:""}}}function P9(t){let e=t.trimStart();if(t.startsWith("> "))return"cyan";if(t.startsWith("Tool ")||t.startsWith("T>")||e.startsWith("\u8BFB\u53D6 ")||e.startsWith("\u5199\u5165 ")||e.startsWith("\u7F16\u8F91 "))return"yellow";if(e.startsWith("+"))return"green";if(e.startsWith("-"))return"red";if(e.startsWith("@@")||t.startsWith("\u2139 ")||t.startsWith("view:")||t.startsWith("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"))return"gray";if(t.startsWith("Error ")||e.startsWith("\u4F1A\u8BDD ")&&t.includes("\u5931\u8D25"))return"red"}function $d(t){return t&&typeof t=="object"?t:{}}function Ko(t,e){let n=t[e];return typeof n=="string"&&n.trim()?n:void 0}function R9(t){let e=new Set;for(let n of t){let o=Ko($d(n.displayData),"subWorkId");o&&e.add(o)}return e}function Qte(t,e){let n=new Set,o=[];for(let r of t)n.has(r.id)||(n.add(r.id),o.push(r));for(let r of e)n.has(r.id)||(n.add(r.id),o.push(r));return o}function Xte(t,e,n){let o=typeof t.workId=="string"?t.workId.trim():"";if(!o||!n.has(o))return!1;if(R9(e).has(o))return!0;for(let r of e)if((r.workId?.trim()??"")===o)return!0;return!1}function OI(t,e){return(t.name??"").startsWith("agent_")?Ko($d(t.displayData),"subWorkId")===e:!1}function ene(t,e){return e.slice().sort((n,o)=>{let r=OI(n,t)?0:1,i=OI(o,t)?0:1;return r!==i?r-i:Gs(n.status)-Gs(o.status)})}function tne(t,e){for(let r of t){if(!OI(r,e))continue;let i=$d(r.displayData),s=Ko(i,"investigationTitle")??Ko(i,"planTitle")??Ko(i,"description");if(s)return s}let n=t[0],o=$d(n?.displayData);return Ko(o,"investigationTitle")??Ko(o,"planTitle")??Ko(o,"description")??e}function nne(t,e,n,o){let r=l=>l.name==="ask_question"&&o?.toolCallId===l.id?o:void 0;if(e?.latestEvent?.text?.trim())return e.latestEvent.text.trim();let i=t.find(l=>l.status==="executing");if(i)return(MI(i)?Bl(i,n):Ul(i,{compact:n,askUiState:r(i)}).split(`
2082
+ \u2026 (${n.length-PI} more lines)`}function S9(t){let e=jte(13),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=Kte(),a,l;if(e[0]!==n||e[1]!==s||e[2]!==i.displayData||e[3]!==i.errorText||e[4]!==i.status||e[5]!==r||e[6]!==o){l=Symbol.for("react.early_return_sentinel");e:{let c=Fk(i.displayData);if(!c){let g;e[9]!==n||e[10]!==r||e[11]!==o?(g=Ki(mt,{level:n,tone:o,text:r}),e[9]=n,e[10]=r,e[11]=o,e[12]=g):g=e[12],l=g;break e}let u=c.uri?.trim()??"",d=u?(()=>{try{if(u.startsWith("file:"))return w9.basename(zte(u))}catch{}return w9.basename(u)})():"(unknown)",p=c.content??"",f=Hte(p),m=i.status==="error";a=T9(rt,{level:n,tone:o,children:[T9(Wte,{flexDirection:"row",flexWrap:"wrap",width:"100%",children:[Ki(Nd,{bold:!0,children:"\u5199\u5165 "}),u?Ki(zi,{filePath:u,children:d}):Ki(Nd,{bold:!0,children:d}),Ki(Nd,{bold:!0,children:` ${f} \u884C`})]}),p?Ki(x9,{lines:Vte(p).split(`
2083
+ `),uri:u||c.uri}):Ki(Nd,{dimColor:!0,children:"\uFF08\u7A7A\u6587\u4EF6\uFF09"}),m&&i.errorText?Ki(Nd,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=n,e[1]=s,e[2]=i.displayData,e[3]=i.errorText,e[4]=i.status,e[5]=r,e[6]=o,e[7]=a,e[8]=l}else a=e[7],l=e[8];return l!==Symbol.for("react.early_return_sentinel")?l:a}var RI={run_terminal_cmd:J6,write_file:S9,edit_file:B6,read_file:W6,grep:Xy,glob_file_search:Xy,list_files:Xy,web_search:o9,web_fetch:i9,ask_question:M6,delete_file:L6,list_skills:II,use_skill:II},AI=new Set(Object.keys(RI));function Gs(t){switch(t){case"executing":return 0;case"confirming":return 1;case"pending":return 2;case"error":return 3;case"success":return 4;default:return 5}}var Gte=2,Zte=1;function Jte(t){return t.rows.some(e=>e.kind==="user_line")}function Fd(t){return Jte(t)?Gte:Zte}function nv(t){for(let e=t.length-1;e>=0;e--){let n=t[e];if(!n.id.startsWith("gap:"))return n}}function MI(t){return!AI.has(t.name)&&t.name.startsWith("mcp_")}var C9=3;function Yte(t){let e=Math.floor(Number(t));return!Number.isFinite(e)||e<20?56:Math.min(4096,e)}function DI(t,e){if(!Number.isFinite(e)||e<1)return"";let n="";for(let o of Array.from(t)){let r=n+o;if(qte(r)<=e)n=r;else break}return n}function Qte(t,e,n){let o=[],r=t,i=e;for(;r.length>0;){let s=DI(r,i);if(s.length===0){let a=Array.from(r)[0]??"";o.push(a),r=r.slice(a.length),i=n;continue}o.push(s),r=r.slice(s.length),i=n}return o.length?o:[""]}function Xte(t,e,n){let o=Math.max(4,n-C9),r=t.split(`
2084
+ `),i=[];for(let s=0;s<r.length;s++){let a=r[s]??"",l=Qte(a,o,o);for(let c of l)i.push(c)}return i.length?i:[""]}function E9(t,e){let n=Math.floor(Number(t)),o=Math.max(20,Math.min(4096,Number.isFinite(n)&&n>0?n:56));if(!e)return"\u2500".repeat(o);let r=` ${e} `;if(r.length>=o)return r.slice(0,o);let i=o-r.length,s=Math.floor(i/2),a=i-s;return`${"\u2500".repeat(s)}${r}${"\u2500".repeat(a)}`}function k9(t,e=!1){switch(t.type){case"user":return{prefix:">",text:t.text};case"thinking":return{prefix:"",text:t.text};case"assistant":return{prefix:"\u2726",text:t.text};case"tool_group":return{prefix:"",text:""};case"info":return{prefix:"\u2139",text:t.text};case"error":return{prefix:"Error",text:t.text};default:return{prefix:" ",text:""}}}function P9(t){let e=t.trimStart();if(t.startsWith("> "))return"cyan";if(t.startsWith("Tool ")||t.startsWith("T>")||e.startsWith("\u8BFB\u53D6 ")||e.startsWith("\u5199\u5165 ")||e.startsWith("\u7F16\u8F91 "))return"yellow";if(e.startsWith("+"))return"green";if(e.startsWith("-"))return"red";if(e.startsWith("@@")||t.startsWith("\u2139 ")||t.startsWith("view:")||t.startsWith("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"))return"gray";if(t.startsWith("Error ")||e.startsWith("\u4F1A\u8BDD ")&&t.includes("\u5931\u8D25"))return"red"}function $d(t){return t&&typeof t=="object"?t:{}}function Ko(t,e){let n=t[e];return typeof n=="string"&&n.trim()?n:void 0}function R9(t){let e=new Set;for(let n of t){let o=Ko($d(n.displayData),"subWorkId");o&&e.add(o)}return e}function ene(t,e){let n=new Set,o=[];for(let r of t)n.has(r.id)||(n.add(r.id),o.push(r));for(let r of e)n.has(r.id)||(n.add(r.id),o.push(r));return o}function tne(t,e,n){let o=typeof t.workId=="string"?t.workId.trim():"";if(!o||!n.has(o))return!1;if(R9(e).has(o))return!0;for(let r of e)if((r.workId?.trim()??"")===o)return!0;return!1}function OI(t,e){return(t.name??"").startsWith("agent_")?Ko($d(t.displayData),"subWorkId")===e:!1}function nne(t,e){return e.slice().sort((n,o)=>{let r=OI(n,t)?0:1,i=OI(o,t)?0:1;return r!==i?r-i:Gs(n.status)-Gs(o.status)})}function rne(t,e){for(let r of t){if(!OI(r,e))continue;let i=$d(r.displayData),s=Ko(i,"investigationTitle")??Ko(i,"planTitle")??Ko(i,"description");if(s)return s}let n=t[0],o=$d(n?.displayData);return Ko(o,"investigationTitle")??Ko(o,"planTitle")??Ko(o,"description")??e}function one(t,e,n,o){let r=l=>l.name==="ask_question"&&o?.toolCallId===l.id?o:void 0;if(e?.latestEvent?.text?.trim())return e.latestEvent.text.trim();let i=t.find(l=>l.status==="executing");if(i)return(MI(i)?Bl(i,n):Ul(i,{compact:n,askUiState:r(i)}).split(`
2085
2085
  `)[0]?.trim())||i.name;let s=t.find(l=>l.status==="confirming");if(s)return(MI(s)?Bl(s,n):Ul(s,{compact:n,askUiState:r(s)}).split(`
2086
- `)[0]?.trim())||"\u7B49\u5F85\u786E\u8BA4";let a=t.find(l=>l.status==="pending");return a?`\u6392\u961F \xB7 ${a.name}`:e?.lastToolSummary?.trim()?e.lastToolSummary.trim():t.length>0&&t.every(l=>l.status==="success")?"\u5DF2\u5B8C\u6210":t.some(l=>l.status==="error")?"\u542B\u5931\u8D25\u9879":"\u5C31\u7EEA"}function I9(t,e,n,o,r,i){let s=new Map,a=[];for(let u of t){let d=$d(u.displayData),p=Ko(d,"subWorkId"),f=typeof u.workId=="string"&&u.workId.trim()?u.workId.trim():void 0,m;p?m=`sub:${p}`:f&&i.has(f)?m=`sub:${f}`:m=`tool:${u.id}`,s.has(m)||(s.set(m,[]),a.push(m)),s.get(m).push(u)}let l=[],c=[];for(let u of a){let d=s.get(u)??[];if(u.startsWith("sub:")){let p=u.slice(4),f=ene(p,d),m=tne(f,p),g=o[p],h=[...d].sort((R,M)=>Gs(R.status)-Gs(M.status))[0].status,y=Math.max(8,r-C9-4),v=nne(f,g,e,n),b=IN(f,g);c.push({kind:"sub_agent_panel",workId:p,title:m,status:h,tone:qy(h),tools:f,...g?{feed:g,agentType:g.agentType}:{},detailLine:DI(v.replace(/\s+/g," ").trim()||"\u2026",y),summaryLine:DI(b,y),compact:e,...n?{askQuestionUiState:n}:{}});continue}for(let p of d){let m=MI(p),g=m?Bl(p,e):Ul(p,{compact:e,askUiState:n}),h=m?[g]:g.split(`
2087
- `).map(R=>R.trim()).filter(Boolean),y=h[0]??`${p.name}`,v=AI.has(p.name)?{id:p.id,name:p.name,args:p.args,displayData:p.displayData,structuredData:p.structuredData,resultText:p.resultText,errorText:p.errorText,status:p.status}:m?{id:p.id,name:p.name,args:p.args,displayData:p.displayData,structuredData:p.structuredData,resultText:p.resultText,errorText:p.errorText,status:p.status,richKind:"mcp_default"}:void 0,b=p.name==="ask_question"&&n?.toolCallId===p.id?n:void 0;l.push({kind:"tool_tree_row",text:y,level:0,status:p.status,tone:qy(p.status),richMeta:v,...b?{askUiState:b}:{}});for(let R=1;R<h.length;R++)l.push({kind:"tool_tree_row",text:h[R],level:1,status:p.status,tone:"muted"})}}if(c.length>=2){let u=c.some(d=>d.status==="error")?"error":c.some(d=>d.status==="executing"||d.status==="pending")?"executing":"success";l.push({kind:"sub_agent_forest",panels:c,count:c.length,status:u,tone:qy(u)})}else l.push(...c);return l}function rv(t){let{historyItems:e,pendingAssistant:n,pendingToolCalls:o,streamingState:r,askQuestionUiState:i,subAgentFeeds:s={},transcriptMode:a=!1}=t,l=Zte(t.contentWidth),c=t.showEmptyPlaceholder!==!1,u=o.filter(S=>!S.renderedInHistory),d=[...e.flatMap(S=>S.type==="tool_group"?S.tools:[]),...o],p=R9(d),f=l<52,m=r!=="Idle"||!!n||o.length>0,g=[],h=new Set,y=[],v=[],b=()=>{if(y.length===0)return;let S=v.length===1?v[0]:v.join("+"),x=u.filter(A=>!h.has(A.id)&&Xte(A,y,p));for(let A of x)h.add(A.id);let T=x.length>0?Qte(y,x):y,W=I9(T,f,i,s,l,p);W.length>0&&g.push({id:S,rows:W}),y=[],v=[]};if(!(c&&e.length===0&&!m)){for(let S of e){if(S.type==="tool_group"){y.push(...S.tools),v.push(S.id);continue}if(b(),S.type==="thinking"){if(!a)continue;let A=k9(S,f).text||"",j=Yte(A,f,l).map((_,$)=>({kind:"thinking",text:_,collapsed:!1,showLeadingDot:$===0}));j.length===0&&j.push({kind:"thinking",text:"",collapsed:!1,showLeadingDot:!0}),g.push({id:S.id,rows:j});continue}let x=k9(S,f);if(S.type==="assistant"){x.text.trim().length>0&&g.push({id:S.id,rows:[{kind:"assistant_markdown",text:x.text,showLeadingDot:!0}]});continue}let T=x.text.split(`
2088
- `);if(S.type==="user"){let W=[{kind:"user_pad",text:""}];W.push({kind:"user_line",text:x.prefix?`${x.prefix} ${T[0]??""}`:T[0]??""});for(let A=1;A<T.length;A++)W.push({kind:"user_line",text:` ${T[A]??""}`});W.push({kind:"user_pad",text:""}),g.push({id:S.id,rows:W})}else{let W=[{kind:"plain",text:x.prefix?`${x.prefix} ${T[0]??""}`:T[0]??""}];for(let A=1;A<T.length;A++)W.push({kind:"plain",text:` ${T[A]??""}`});g.push({id:S.id,rows:W})}}if(b(),m){let S=u.length>0||!!n.trim(),x=u.filter(T=>!h.has(T.id));if(x.length>0&&S){let T=x.slice().sort((W,A)=>Gs(W.status)-Gs(A.status));g.push({id:"pending-tools",rows:I9(T,f,i,s,l,p)})}}}let R=S=>S==="pending"||S.startsWith("pending-"),M=[];for(let S=0;S<g.length;S++){let x=g[S];if(M.push(x),S<g.length-1){let T=g[S+1];if(!(R(x.id)&&R(T.id))){let W=[],A=Fd(x);for(let U=0;U<A;U++)W.push({kind:"plain",text:""});M.push({id:`gap:${x.id}>${T.id}`,rows:W})}}}r==="Idle"&&M.length>0&&M.push({id:"gap:turn-trailer",rows:[{kind:"plain",text:""}]});let B=h.size>0?[...h].sort().join("|"):"";return{blocks:M,mergedPendingToolCallIds:h,mergedPendingToolCallIdsKey:B}}import{c as Lre}from"react/compiler-runtime";import{jsx as Zt,jsxs as Vd}from"react/jsx-runtime";import{memo as Nre,useMemo as $re,useRef as qd}from"react";import{Box as Vn,Text as wv,usePandaTheme as k8}from"panda-ink";import{Fragment as A9,jsx as iv,jsxs as Kl}from"react/jsx-runtime";import{useRef as sne}from"react";import{Box as LI,Text as Ud,useAnimationFrame as M9,usePandaTheme as ane}from"panda-ink";var rne={autoAccept:"rgb(135,0,255)",bashBorder:"rgb(255,0,135)",claude:"rgb(215,119,87)",claudeShimmer:"rgb(245,149,117)",claudeBlue_FOR_SYSTEM_SPINNER:"rgb(87,105,247)",claudeBlueShimmer_FOR_SYSTEM_SPINNER:"rgb(117,135,255)",permission:"rgb(87,105,247)",permissionShimmer:"rgb(137,155,255)",planMode:"rgb(0,102,102)",ide:"rgb(71,130,200)",promptBorder:"rgb(153,153,153)",promptBorderShimmer:"rgb(183,183,183)",text:"rgb(0,0,0)",inverseText:"rgb(255,255,255)",inactive:"rgb(102,102,102)",inactiveShimmer:"rgb(142,142,142)",subtle:"rgb(175,175,175)",suggestion:"rgb(87,105,247)",remember:"rgb(0,0,255)",background:"rgb(0,153,153)",success:"rgb(44,122,57)",error:"rgb(171,43,63)",warning:"rgb(150,108,30)",merged:"rgb(135,0,255)",warningShimmer:"rgb(200,158,80)",diffAdded:"rgb(105,219,124)",diffRemoved:"rgb(255,168,180)",diffAddedDimmed:"rgb(199,225,203)",diffRemovedDimmed:"rgb(253,210,216)",diffAddedWord:"rgb(47,157,68)",diffRemovedWord:"rgb(209,69,75)",red_FOR_SUBAGENTS_ONLY:"rgb(220,38,38)",blue_FOR_SUBAGENTS_ONLY:"rgb(37,99,235)",green_FOR_SUBAGENTS_ONLY:"rgb(22,163,74)",yellow_FOR_SUBAGENTS_ONLY:"rgb(202,138,4)",purple_FOR_SUBAGENTS_ONLY:"rgb(147,51,234)",orange_FOR_SUBAGENTS_ONLY:"rgb(234,88,12)",pink_FOR_SUBAGENTS_ONLY:"rgb(219,39,119)",cyan_FOR_SUBAGENTS_ONLY:"rgb(8,145,178)",professionalBlue:"rgb(106,155,204)",chromeYellow:"rgb(251,188,4)",clawd_body:"rgb(215,119,87)",clawd_background:"rgb(0,0,0)",userMessageBackground:"rgb(240, 240, 240)",userMessageBackgroundHover:"rgb(252, 252, 252)",messageActionsBackground:"rgb(232, 236, 244)",selectionBg:"rgb(180, 213, 255)",bashMessageBackgroundColor:"rgb(250, 245, 250)",memoryBackgroundColor:"rgb(230, 245, 250)",rate_limit_fill:"rgb(87,105,247)",rate_limit_empty:"rgb(39,47,111)",fastMode:"rgb(255,106,0)",fastModeShimmer:"rgb(255,150,50)",briefLabelYou:"rgb(37,99,235)",briefLabelClaude:"rgb(215,119,87)",rainbow_red:"rgb(235,95,87)",rainbow_orange:"rgb(245,139,87)",rainbow_yellow:"rgb(250,195,95)",rainbow_green:"rgb(145,200,130)",rainbow_blue:"rgb(130,170,220)",rainbow_indigo:"rgb(155,130,200)",rainbow_violet:"rgb(200,130,180)",rainbow_red_shimmer:"rgb(250,155,147)",rainbow_orange_shimmer:"rgb(255,185,137)",rainbow_yellow_shimmer:"rgb(255,225,155)",rainbow_green_shimmer:"rgb(185,230,180)",rainbow_blue_shimmer:"rgb(180,205,240)",rainbow_indigo_shimmer:"rgb(195,180,230)",rainbow_violet_shimmer:"rgb(230,180,210)"},one={autoAccept:"rgb(175,135,255)",bashBorder:"rgb(253,93,177)",claude:"rgb(215,119,87)",claudeShimmer:"rgb(235,159,127)",claudeBlue_FOR_SYSTEM_SPINNER:"rgb(147,165,255)",claudeBlueShimmer_FOR_SYSTEM_SPINNER:"rgb(177,195,255)",permission:"rgb(177,185,249)",permissionShimmer:"rgb(207,215,255)",planMode:"rgb(72,150,140)",ide:"rgb(71,130,200)",promptBorder:"rgb(136,136,136)",promptBorderShimmer:"rgb(166,166,166)",text:"rgb(255,255,255)",inverseText:"rgb(0,0,0)",inactive:"rgb(153,153,153)",inactiveShimmer:"rgb(193,193,193)",subtle:"rgb(80,80,80)",suggestion:"rgb(177,185,249)",remember:"rgb(177,185,249)",background:"rgb(0,204,204)",success:"rgb(78,186,101)",error:"rgb(255,107,128)",warning:"rgb(255,193,7)",merged:"rgb(175,135,255)",warningShimmer:"rgb(255,223,57)",diffAdded:"rgb(34,92,43)",diffRemoved:"rgb(122,41,54)",diffAddedDimmed:"rgb(71,88,74)",diffRemovedDimmed:"rgb(105,72,77)",diffAddedWord:"rgb(56,166,96)",diffRemovedWord:"rgb(179,89,107)",red_FOR_SUBAGENTS_ONLY:"rgb(220,38,38)",blue_FOR_SUBAGENTS_ONLY:"rgb(37,99,235)",green_FOR_SUBAGENTS_ONLY:"rgb(22,163,74)",yellow_FOR_SUBAGENTS_ONLY:"rgb(202,138,4)",purple_FOR_SUBAGENTS_ONLY:"rgb(147,51,234)",orange_FOR_SUBAGENTS_ONLY:"rgb(234,88,12)",pink_FOR_SUBAGENTS_ONLY:"rgb(219,39,119)",cyan_FOR_SUBAGENTS_ONLY:"rgb(8,145,178)",professionalBlue:"rgb(106,155,204)",chromeYellow:"rgb(251,188,4)",clawd_body:"rgb(215,119,87)",clawd_background:"rgb(0,0,0)",userMessageBackground:"rgb(55, 55, 55)",userMessageBackgroundHover:"rgb(70, 70, 70)",messageActionsBackground:"rgb(44, 50, 62)",selectionBg:"rgb(38, 79, 120)",bashMessageBackgroundColor:"rgb(65, 60, 65)",memoryBackgroundColor:"rgb(55, 65, 70)",rate_limit_fill:"rgb(177,185,249)",rate_limit_empty:"rgb(80,83,112)",fastMode:"rgb(255,120,20)",fastModeShimmer:"rgb(255,165,70)",briefLabelYou:"rgb(122,180,232)",briefLabelClaude:"rgb(215,119,87)",rainbow_red:"rgb(235,95,87)",rainbow_orange:"rgb(245,139,87)",rainbow_yellow:"rgb(250,195,95)",rainbow_green:"rgb(145,200,130)",rainbow_blue:"rgb(130,170,220)",rainbow_indigo:"rgb(155,130,200)",rainbow_violet:"rgb(200,130,180)",rainbow_red_shimmer:"rgb(250,155,147)",rainbow_orange_shimmer:"rgb(255,185,137)",rainbow_yellow_shimmer:"rgb(255,225,155)",rainbow_green_shimmer:"rgb(185,230,180)",rainbow_blue_shimmer:"rgb(180,205,240)",rainbow_indigo_shimmer:"rgb(195,180,230)",rainbow_violet_shimmer:"rgb(230,180,210)"};function ov(t){return t==="light"?rne:one}var D9=420,lne=50;function O9(t){let e=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/.exec(t);return e?{r:Number(e[1]),g:Number(e[2]),b:Number(e[3])}:null}function cne(t,e,n){return{r:Math.round(t.r+(e.r-t.r)*n),g:Math.round(t.g+(e.g-t.g)*n),b:Math.round(t.b+(e.b-t.b)*n)}}function une(t){return`rgb(${t.r},${t.g},${t.b})`}function L9(t){let{streamingState:e,animate:n,streamingApproxRef:o}=t,{currentTheme:r}=ane(),i=e==="Responding"||e==="WaitingForConfirmation",s=sne(0),[a,l]=M9(n&&i?D9:null),c=!!o,[,u]=M9(i&&c?lne:null),d=o?.current.thinkingCharCount??0,p=o?.current.thinkingEnded??!1;if(!i)return s.current=0,null;let f=e==="WaitingForConfirmation",m=f?"\u7B49\u5F85\u786E\u8BA4":"\u751F\u6210\u4E2D",g=ov(r),h=f?g.warning:g.claudeBlue_FOR_SYSTEM_SPINNER,y=f?g.warningShimmer:g.claudeBlueShimmer_FOR_SYSTEM_SPINNER,v=n?Math.floor(l/D9)%3:0,b=n?(Math.sin(l/1e3*Math.PI)+1)/2:0,R=O9(h),M=O9(y),B=R&&M?une(cne(R,M,b)):b>.5?y:h,S=B,x=null;if(o){let T=o.current.turnStartedAt,W=T>0?Date.now()-T:0,A=o.current.targetChars,U=xN()||f||W>3e4;s.current=TN(s.current,A);let j=Math.round(s.current/4),_=bN(T);if(U){let N=[Kl(Ud,{dimColor:!0,children:[" \xB7 ",_,"s"]},"elapsed")];j>0&&N.push(Kl(Ud,{dimColor:!0,children:[" \xB7 ",Ws(j)," tokens"]},"tok")),x=iv(A9,{children:N})}if(d>0&&!p){let N=[Kl(Ud,{color:g.claudeBlue_FOR_SYSTEM_SPINNER,dimColor:!0,children:[" \xB7 ","\u6B63\u5728\u601D\u8003"]},"think-active")];x=Kl(A9,{children:[x,N]})}}return Kl(LI,{width:"100%",flexShrink:0,marginTop:1,flexDirection:"row",gap:1,alignItems:"center",children:[iv(LI,{ref:a,flexDirection:"row",flexShrink:0,gap:1,children:[0,1,2].map(T=>iv(Ud,{color:S,dim:T!==v,children:Xn},T))}),Kl(LI,{flexDirection:"row",flexShrink:0,children:[iv(Ud,{color:B,children:m}),x]})]})}import{c as Dne}from"react/compiler-runtime";import{jsx as Ho,jsxs as One}from"react/jsx-runtime";import{Suspense as Lne,memo as Nne,use as $ne,useRef as Fne}from"react";import{marked as Y9}from"marked";import{Ansi as Une,Box as Q9,usePandaTheme as Bne}from"panda-ink";var N9,dne;async function pne(){try{let t=await import("cli-highlight"),e=await import("highlight.js");return dne=(typeof e.getLanguage=="function"?e:e.default).getLanguage,{highlight:t.highlight,supportsLanguage:t.supportsLanguage}}catch{return null}}function $9(){return N9??=pne(),N9}import{createHash as fne}from"node:crypto";function F9(t){return fne("sha256").update(t).digest("hex")}import Zs from"chalk";import{marked as wne}from"marked";import K9 from"strip-ansi";import Le from"chalk";function mne(){return process.env.TERM_PROGRAM==="vscode"&&Le.level===2?(Le.level=3,!0):!1}function gne(){return process.env.CLAUDE_CODE_TMUX_TRUECOLOR?!1:process.env.TMUX&&Le.level>2?(Le.level=2,!0):!1}var h5e=mne(),y5e=gne(),hne=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,yne=/^ansi256\(\s?(\d+)\s?\)$/,NI=(t,e,n)=>{if(!e)return t;if(e.startsWith("ansi:"))switch(e.substring(5)){case"black":return n==="foreground"?Le.black(t):Le.bgBlack(t);case"red":return n==="foreground"?Le.red(t):Le.bgRed(t);case"green":return n==="foreground"?Le.green(t):Le.bgGreen(t);case"yellow":return n==="foreground"?Le.yellow(t):Le.bgYellow(t);case"blue":return n==="foreground"?Le.blue(t):Le.bgBlue(t);case"magenta":return n==="foreground"?Le.magenta(t):Le.bgMagenta(t);case"cyan":return n==="foreground"?Le.cyan(t):Le.bgCyan(t);case"white":return n==="foreground"?Le.white(t):Le.bgWhite(t);case"blackBright":return n==="foreground"?Le.blackBright(t):Le.bgBlackBright(t);case"redBright":return n==="foreground"?Le.redBright(t):Le.bgRedBright(t);case"greenBright":return n==="foreground"?Le.greenBright(t):Le.bgGreenBright(t);case"yellowBright":return n==="foreground"?Le.yellowBright(t):Le.bgYellowBright(t);case"blueBright":return n==="foreground"?Le.blueBright(t):Le.bgBlueBright(t);case"magentaBright":return n==="foreground"?Le.magentaBright(t):Le.bgMagentaBright(t);case"cyanBright":return n==="foreground"?Le.cyanBright(t):Le.bgCyanBright(t);case"whiteBright":return n==="foreground"?Le.whiteBright(t):Le.bgWhiteBright(t)}if(e.startsWith("#"))return n==="foreground"?Le.hex(e)(t):Le.bgHex(e)(t);if(e.startsWith("ansi256")){let o=yne.exec(e);if(!o)return t;let r=Number(o[1]);return n==="foreground"?Le.ansi256(r)(t):Le.bgAnsi256(r)(t)}if(e.startsWith("rgb")){let o=hne.exec(e);if(!o)return t;let r=Number(o[1]),i=Number(o[2]),s=Number(o[3]);return n==="foreground"?Le.rgb(r,i,s)(t):Le.bgRgb(r,i,s)(t)}return t};function U9(t,e,n="foreground"){return o=>t?t.startsWith("rgb(")||t.startsWith("#")||t.startsWith("ansi256(")||t.startsWith("ansi:")?NI(o,t,n):NI(o,ov(e)[t],n):o}var w5e=process.platform==="darwin"?"\u23FA":"\u25CF";var B9="\u258E";import vne from"supports-hyperlinks";var j9=["ghostty","Hyper","kitty","alacritty","iTerm.app","iTerm2"];function sv(t){if(t?.stdoutSupported??vne.stdout)return!0;let n=t?.env??process.env,o=n.TERM_PROGRAM;if(o&&j9.includes(o))return!0;let r=n.LC_TERMINAL;return!!(r&&j9.includes(r)||n.TERM?.includes("kitty"))}import bne from"chalk";var z9="\x1B]8;;",W9="\x07";function av(t,e,n){if(!(n?.supportsHyperlinks??sv()))return t;let r=e??t,i=bne.blue(r);return`${z9}${t}${W9}${i}${z9}${W9}`}var xne=/<(commit_analysis|context|function_analysis|pr_analysis)>.*?<\/\1>\n?/gs,Tne=/<system-reminder>[\s\S]*?<\/system-reminder>/g;function Bd(t){return t.replace(xne,"").replace(Tne,"").trim()}var Kn=`
2089
- `,H9=!1;function $I(){H9||(H9=!0,wne.use({tokenizer:{del(){}}}))}function An(t,e,n=0,o=null,r=null,i=null){switch(t.type){case"blockquote":{let s=(t.tokens??[]).map(l=>An(l,e,0,null,null,i)).join(""),a=Zs.dim(B9);return s.split(Kn).map(l=>K9(l).trim()?`${a} ${Zs.italic(l)}`:l).join(Kn)}case"code":{if(!i)return t.text+Kn;let s="plaintext";return t.lang&&i.supportsLanguage(t.lang)&&(s=t.lang),i.highlight(t.text,{language:s})+Kn}case"codespan":return U9("permission",e)(t.text);case"em":return Zs.italic((t.tokens??[]).map(s=>An(s,e,0,null,r,i)).join(""));case"strong":return Zs.bold((t.tokens??[]).map(s=>An(s,e,0,null,r,i)).join(""));case"heading":switch(t.depth){case 1:return Zs.bold.italic.underline((t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join(""))+Kn+Kn;case 2:return Zs.bold((t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join(""))+Kn+Kn;default:return Zs.bold((t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join(""))+Kn+Kn}case"hr":return"---";case"image":return t.href;case"link":{if(t.href.startsWith("mailto:"))return t.href.replace(/^mailto:/,"");let s=(t.tokens??[]).map(l=>An(l,e,0,null,t,i)).join(""),a=K9(s);return a&&a!==t.href?av(t.href,s):av(t.href)}case"list":return t.items.map((s,a)=>An(s,e,n,t.ordered?t.start+a:null,t,i)).join("");case"list_item":return(t.tokens??[]).map(s=>`${" ".repeat(n)}${An(s,e,n+1,o,t,i)}`).join("");case"paragraph":return(t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join("")+Kn;case"space":return Kn;case"br":return Kn;case"text":return r?.type==="link"?t.text:r?.type==="list_item"?`${o===null?"-":Cne(n,o)+"."} ${t.tokens?t.tokens.map(s=>An(s,e,n,o,t,i)).join(""):V9(t.text)}${Kn}`:V9(t.text);case"table":return"";case"escape":return t.text;case"def":case"del":case"html":return""}return""}var _ne=/(^|[^\w./-])([A-Za-z0-9][\w-]*\/[A-Za-z0-9][\w.-]*)#(\d+)\b/g;function V9(t){return sv()?t.replace(_ne,(e,n,o,r)=>n+av(`https://github.com/${o}/issues/${r}`,`${o}#${r}`)):t}function Sne(t){let e="";for(;t>0;)t--,e=String.fromCharCode(97+t%26)+e,t=Math.floor(t/26);return e}var kne=[[1e3,"m"],[900,"cm"],[500,"d"],[400,"cd"],[100,"c"],[90,"xc"],[50,"l"],[40,"xl"],[10,"x"],[9,"ix"],[5,"v"],[4,"iv"],[1,"i"]];function Ine(t){let e="";for(let[n,o]of kne)for(;t>=n;)e+=o,t-=n;return e}function Cne(t,e){switch(t){case 0:case 1:return e.toString();case 2:return Sne(e);case 3:return Ine(e);default:return e.toString()}}function q9(t,e,n,o){let r=Math.max(0,n-e);if(o==="center"){let i=Math.floor(r/2);return" ".repeat(i)+t+" ".repeat(r-i)}return o==="right"?" ".repeat(r)+t:t+" ".repeat(r)}import{jsx as FI}from"react/jsx-runtime";import G9 from"strip-ansi";import{Ansi as UI,stringWidth as jd,usePandaTheme as Ene,wrapAnsi as Pne}from"panda-ink";var Z9=4,zd=3,Rne=4,Ane="\x1B[1m",Mne="\x1B[22m";function Wd(t,e,n){if(e<=0)return[t];let o=t.trimEnd(),i=Pne(o,e,{hard:n?.hard??!1,trim:!1,wordWrap:!0}).split(`
2090
- `).filter(s=>s.length>0);return i.length>0?i:[""]}function J9({token:t,highlight:e,forceWidth:n}){let{currentTheme:o}=Ene(),{columns:r}=Fo(),i=n??r;function s(A){return A?.map(U=>An(U,o,0,null,null,e)).join("")??""}function a(A){return G9(s(A))}function l(A){let j=a(A).split(/\s+/).filter(_=>_.length>0);return j.length===0?zd:Math.max(...j.map(_=>jd(_)),zd)}function c(A){return Math.max(jd(a(A)),zd)}let u=t.header.map((A,U)=>{let j=l(A.tokens);for(let _ of t.rows)j=Math.max(j,l(_[U]?.tokens));return j}),d=t.header.map((A,U)=>{let j=c(A.tokens);for(let _ of t.rows)j=Math.max(j,c(_[U]?.tokens));return j}),p=t.header.length,f=1+p*3,m=Math.max(i-f-Z9,p*zd),g=u.reduce((A,U)=>A+U,0),h=d.reduce((A,U)=>A+U,0),y=!1,v;if(h<=m)v=d;else if(g<=m){let A=m-g,U=d.map((_,$)=>_-u[$]),j=U.reduce((_,$)=>_+$,0);v=u.map((_,$)=>{if(j===0)return _;let N=Math.floor(U[$]/j*A);return _+N})}else{y=!0;let A=m/g;v=u.map(U=>Math.max(Math.floor(U*A),zd))}function b(){let A=1;for(let U=0;U<t.header.length;U++){let j=s(t.header[U].tokens),_=Wd(j,v[U],{hard:y});A=Math.max(A,_.length)}for(let U of t.rows)for(let j=0;j<U.length;j++){let _=s(U[j]?.tokens),$=Wd(_,v[j],{hard:y});A=Math.max(A,$.length)}return A}let M=b()>Rne;function B(A,U){let j=A.map((K,E)=>{let V=s(K.tokens),ae=v[E];return Wd(V,ae,{hard:y})}),_=Math.max(...j.map(K=>K.length),1),$=j.map(K=>Math.floor((_-K.length)/2)),N=[];for(let K=0;K<_;K++){let E="\u2502";for(let V=0;V<A.length;V++){let ae=j[V],Te=$[V],me=K-Te,ne=me>=0&&me<ae.length?ae[me]:"",Pe=v[V],de=U?"center":t.align?.[V]??"left";E+=" "+q9(ne,jd(ne),Pe,de)+" \u2502"}N.push(E)}return N}function S(A){let[U,j,_,$]={top:["\u250C","\u2500","\u252C","\u2510"],middle:["\u251C","\u2500","\u253C","\u2524"],bottom:["\u2514","\u2500","\u2534","\u2518"]}[A],N=U;return v.forEach((K,E)=>{N+=j.repeat(K+2),N+=E<v.length-1?_:$}),N}function x(){let A=[],U=t.header.map(N=>a(N.tokens)),j=Math.min(i-1,40),_="\u2500".repeat(j),$=" ";return t.rows.forEach((N,K)=>{K>0&&A.push(_),N.forEach((E,V)=>{let ae=U[V]||`Column ${V+1}`,me=s(E.tokens).trimEnd().replace(/\n+/g," ").replace(/\s+/g," ").trim(),ne=i-jd(ae)-3,Pe=i-$.length-1,de=Wd(me,Math.max(ne,10)),H=de[0]||"",te;if(de.length<=1||Pe<=ne)te=de;else{let ee=de.slice(1).map(Q=>Q.trim()).join(" "),ue=Wd(ee,Pe);te=[H,...ue]}A.push(`${Ane}${ae}:${Mne} ${te[0]||""}`);for(let ee=1;ee<te.length;ee++){let ue=te[ee];ue.trim()&&A.push(`${$}${ue}`)}})}),A.join(`
2086
+ `)[0]?.trim())||"\u7B49\u5F85\u786E\u8BA4";let a=t.find(l=>l.status==="pending");return a?`\u6392\u961F \xB7 ${a.name}`:e?.lastToolSummary?.trim()?e.lastToolSummary.trim():t.length>0&&t.every(l=>l.status==="success")?"\u5DF2\u5B8C\u6210":t.some(l=>l.status==="error")?"\u542B\u5931\u8D25\u9879":"\u5C31\u7EEA"}function I9(t,e,n,o,r,i){let s=new Map,a=[];for(let u of t){let d=$d(u.displayData),p=Ko(d,"subWorkId"),f=typeof u.workId=="string"&&u.workId.trim()?u.workId.trim():void 0,m;p?m=`sub:${p}`:f&&i.has(f)?m=`sub:${f}`:m=`tool:${u.id}`,s.has(m)||(s.set(m,[]),a.push(m)),s.get(m).push(u)}let l=[],c=[];for(let u of a){let d=s.get(u)??[];if(u.startsWith("sub:")){let p=u.slice(4),f=nne(p,d),m=rne(f,p),g=o[p],h=[...d].sort((R,M)=>Gs(R.status)-Gs(M.status))[0].status,y=Math.max(8,r-C9-4),v=one(f,g,e,n),b=IN(f,g);c.push({kind:"sub_agent_panel",workId:p,title:m,status:h,tone:qy(h),tools:f,...g?{feed:g,agentType:g.agentType}:{},detailLine:DI(v.replace(/\s+/g," ").trim()||"\u2026",y),summaryLine:DI(b,y),compact:e,...n?{askQuestionUiState:n}:{}});continue}for(let p of d){let m=MI(p),g=m?Bl(p,e):Ul(p,{compact:e,askUiState:n}),h=m?[g]:g.split(`
2087
+ `).map(R=>R.trim()).filter(Boolean),y=h[0]??`${p.name}`,v=AI.has(p.name)?{id:p.id,name:p.name,args:p.args,displayData:p.displayData,structuredData:p.structuredData,resultText:p.resultText,errorText:p.errorText,status:p.status}:m?{id:p.id,name:p.name,args:p.args,displayData:p.displayData,structuredData:p.structuredData,resultText:p.resultText,errorText:p.errorText,status:p.status,richKind:"mcp_default"}:void 0,b=p.name==="ask_question"&&n?.toolCallId===p.id?n:void 0;l.push({kind:"tool_tree_row",text:y,level:0,status:p.status,tone:qy(p.status),richMeta:v,...b?{askUiState:b}:{}});for(let R=1;R<h.length;R++)l.push({kind:"tool_tree_row",text:h[R],level:1,status:p.status,tone:"muted"})}}if(c.length>=2){let u=c.some(d=>d.status==="error")?"error":c.some(d=>d.status==="executing"||d.status==="pending")?"executing":"success";l.push({kind:"sub_agent_forest",panels:c,count:c.length,status:u,tone:qy(u)})}else l.push(...c);return l}function rv(t){let{historyItems:e,pendingAssistant:n,pendingToolCalls:o,streamingState:r,askQuestionUiState:i,subAgentFeeds:s={},transcriptMode:a=!1}=t,l=Yte(t.contentWidth),c=t.showEmptyPlaceholder!==!1,u=o.filter(S=>!S.renderedInHistory),d=[...e.flatMap(S=>S.type==="tool_group"?S.tools:[]),...o],p=R9(d),f=l<52,m=r!=="Idle"||!!n||o.length>0,g=[],h=new Set,y=[],v=[],b=()=>{if(y.length===0)return;let S=v.length===1?v[0]:v.join("+"),x=u.filter(A=>!h.has(A.id)&&tne(A,y,p));for(let A of x)h.add(A.id);let T=x.length>0?ene(y,x):y,W=I9(T,f,i,s,l,p);W.length>0&&g.push({id:S,rows:W}),y=[],v=[]};if(!(c&&e.length===0&&!m)){for(let S of e){if(S.type==="tool_group"){y.push(...S.tools),v.push(S.id);continue}if(b(),S.type==="thinking"){if(!a)continue;let A=k9(S,f).text||"",j=Xte(A,f,l).map((_,$)=>({kind:"thinking",text:_,collapsed:!1,showLeadingDot:$===0}));j.length===0&&j.push({kind:"thinking",text:"",collapsed:!1,showLeadingDot:!0}),g.push({id:S.id,rows:j});continue}let x=k9(S,f);if(S.type==="assistant"){x.text.trim().length>0&&g.push({id:S.id,rows:[{kind:"assistant_markdown",text:x.text,showLeadingDot:!0}]});continue}let T=x.text.split(`
2088
+ `);if(S.type==="user"){let W=[{kind:"user_pad",text:""}];W.push({kind:"user_line",text:x.prefix?`${x.prefix} ${T[0]??""}`:T[0]??""});for(let A=1;A<T.length;A++)W.push({kind:"user_line",text:` ${T[A]??""}`});W.push({kind:"user_pad",text:""}),g.push({id:S.id,rows:W})}else{let W=[{kind:"plain",text:x.prefix?`${x.prefix} ${T[0]??""}`:T[0]??""}];for(let A=1;A<T.length;A++)W.push({kind:"plain",text:` ${T[A]??""}`});g.push({id:S.id,rows:W})}}if(b(),m){let S=u.length>0||!!n.trim(),x=u.filter(T=>!h.has(T.id));if(x.length>0&&S){let T=x.slice().sort((W,A)=>Gs(W.status)-Gs(A.status));g.push({id:"pending-tools",rows:I9(T,f,i,s,l,p)})}}}let R=S=>S==="pending"||S.startsWith("pending-"),M=[];for(let S=0;S<g.length;S++){let x=g[S];if(M.push(x),S<g.length-1){let T=g[S+1];if(!(R(x.id)&&R(T.id))){let W=[],A=Fd(x);for(let U=0;U<A;U++)W.push({kind:"plain",text:""});M.push({id:`gap:${x.id}>${T.id}`,rows:W})}}}r==="Idle"&&M.length>0&&M.push({id:"gap:turn-trailer",rows:[{kind:"plain",text:""}]});let B=h.size>0?[...h].sort().join("|"):"";return{blocks:M,mergedPendingToolCallIds:h,mergedPendingToolCallIdsKey:B}}import{c as $re}from"react/compiler-runtime";import{jsx as Zt,jsxs as Vd}from"react/jsx-runtime";import{memo as Fre,useMemo as Ure,useRef as qd}from"react";import{Box as Vn,Text as wv,usePandaTheme as k8}from"panda-ink";import{Fragment as A9,jsx as iv,jsxs as Kl}from"react/jsx-runtime";import{useRef as lne}from"react";import{Box as LI,Text as Ud,useAnimationFrame as M9,usePandaTheme as cne}from"panda-ink";var ine={autoAccept:"rgb(135,0,255)",bashBorder:"rgb(255,0,135)",claude:"rgb(215,119,87)",claudeShimmer:"rgb(245,149,117)",claudeBlue_FOR_SYSTEM_SPINNER:"rgb(87,105,247)",claudeBlueShimmer_FOR_SYSTEM_SPINNER:"rgb(117,135,255)",permission:"rgb(87,105,247)",permissionShimmer:"rgb(137,155,255)",planMode:"rgb(0,102,102)",ide:"rgb(71,130,200)",promptBorder:"rgb(153,153,153)",promptBorderShimmer:"rgb(183,183,183)",text:"rgb(0,0,0)",inverseText:"rgb(255,255,255)",inactive:"rgb(102,102,102)",inactiveShimmer:"rgb(142,142,142)",subtle:"rgb(175,175,175)",suggestion:"rgb(87,105,247)",remember:"rgb(0,0,255)",background:"rgb(0,153,153)",success:"rgb(44,122,57)",error:"rgb(171,43,63)",warning:"rgb(150,108,30)",merged:"rgb(135,0,255)",warningShimmer:"rgb(200,158,80)",diffAdded:"rgb(105,219,124)",diffRemoved:"rgb(255,168,180)",diffAddedDimmed:"rgb(199,225,203)",diffRemovedDimmed:"rgb(253,210,216)",diffAddedWord:"rgb(47,157,68)",diffRemovedWord:"rgb(209,69,75)",red_FOR_SUBAGENTS_ONLY:"rgb(220,38,38)",blue_FOR_SUBAGENTS_ONLY:"rgb(37,99,235)",green_FOR_SUBAGENTS_ONLY:"rgb(22,163,74)",yellow_FOR_SUBAGENTS_ONLY:"rgb(202,138,4)",purple_FOR_SUBAGENTS_ONLY:"rgb(147,51,234)",orange_FOR_SUBAGENTS_ONLY:"rgb(234,88,12)",pink_FOR_SUBAGENTS_ONLY:"rgb(219,39,119)",cyan_FOR_SUBAGENTS_ONLY:"rgb(8,145,178)",professionalBlue:"rgb(106,155,204)",chromeYellow:"rgb(251,188,4)",clawd_body:"rgb(215,119,87)",clawd_background:"rgb(0,0,0)",userMessageBackground:"rgb(240, 240, 240)",userMessageBackgroundHover:"rgb(252, 252, 252)",messageActionsBackground:"rgb(232, 236, 244)",selectionBg:"rgb(180, 213, 255)",bashMessageBackgroundColor:"rgb(250, 245, 250)",memoryBackgroundColor:"rgb(230, 245, 250)",rate_limit_fill:"rgb(87,105,247)",rate_limit_empty:"rgb(39,47,111)",fastMode:"rgb(255,106,0)",fastModeShimmer:"rgb(255,150,50)",briefLabelYou:"rgb(37,99,235)",briefLabelClaude:"rgb(215,119,87)",rainbow_red:"rgb(235,95,87)",rainbow_orange:"rgb(245,139,87)",rainbow_yellow:"rgb(250,195,95)",rainbow_green:"rgb(145,200,130)",rainbow_blue:"rgb(130,170,220)",rainbow_indigo:"rgb(155,130,200)",rainbow_violet:"rgb(200,130,180)",rainbow_red_shimmer:"rgb(250,155,147)",rainbow_orange_shimmer:"rgb(255,185,137)",rainbow_yellow_shimmer:"rgb(255,225,155)",rainbow_green_shimmer:"rgb(185,230,180)",rainbow_blue_shimmer:"rgb(180,205,240)",rainbow_indigo_shimmer:"rgb(195,180,230)",rainbow_violet_shimmer:"rgb(230,180,210)"},sne={autoAccept:"rgb(175,135,255)",bashBorder:"rgb(253,93,177)",claude:"rgb(215,119,87)",claudeShimmer:"rgb(235,159,127)",claudeBlue_FOR_SYSTEM_SPINNER:"rgb(147,165,255)",claudeBlueShimmer_FOR_SYSTEM_SPINNER:"rgb(177,195,255)",permission:"rgb(177,185,249)",permissionShimmer:"rgb(207,215,255)",planMode:"rgb(72,150,140)",ide:"rgb(71,130,200)",promptBorder:"rgb(136,136,136)",promptBorderShimmer:"rgb(166,166,166)",text:"rgb(255,255,255)",inverseText:"rgb(0,0,0)",inactive:"rgb(153,153,153)",inactiveShimmer:"rgb(193,193,193)",subtle:"rgb(80,80,80)",suggestion:"rgb(177,185,249)",remember:"rgb(177,185,249)",background:"rgb(0,204,204)",success:"rgb(78,186,101)",error:"rgb(255,107,128)",warning:"rgb(255,193,7)",merged:"rgb(175,135,255)",warningShimmer:"rgb(255,223,57)",diffAdded:"rgb(34,92,43)",diffRemoved:"rgb(122,41,54)",diffAddedDimmed:"rgb(71,88,74)",diffRemovedDimmed:"rgb(105,72,77)",diffAddedWord:"rgb(56,166,96)",diffRemovedWord:"rgb(179,89,107)",red_FOR_SUBAGENTS_ONLY:"rgb(220,38,38)",blue_FOR_SUBAGENTS_ONLY:"rgb(37,99,235)",green_FOR_SUBAGENTS_ONLY:"rgb(22,163,74)",yellow_FOR_SUBAGENTS_ONLY:"rgb(202,138,4)",purple_FOR_SUBAGENTS_ONLY:"rgb(147,51,234)",orange_FOR_SUBAGENTS_ONLY:"rgb(234,88,12)",pink_FOR_SUBAGENTS_ONLY:"rgb(219,39,119)",cyan_FOR_SUBAGENTS_ONLY:"rgb(8,145,178)",professionalBlue:"rgb(106,155,204)",chromeYellow:"rgb(251,188,4)",clawd_body:"rgb(215,119,87)",clawd_background:"rgb(0,0,0)",userMessageBackground:"rgb(55, 55, 55)",userMessageBackgroundHover:"rgb(70, 70, 70)",messageActionsBackground:"rgb(44, 50, 62)",selectionBg:"rgb(38, 79, 120)",bashMessageBackgroundColor:"rgb(65, 60, 65)",memoryBackgroundColor:"rgb(55, 65, 70)",rate_limit_fill:"rgb(177,185,249)",rate_limit_empty:"rgb(80,83,112)",fastMode:"rgb(255,120,20)",fastModeShimmer:"rgb(255,165,70)",briefLabelYou:"rgb(122,180,232)",briefLabelClaude:"rgb(215,119,87)",rainbow_red:"rgb(235,95,87)",rainbow_orange:"rgb(245,139,87)",rainbow_yellow:"rgb(250,195,95)",rainbow_green:"rgb(145,200,130)",rainbow_blue:"rgb(130,170,220)",rainbow_indigo:"rgb(155,130,200)",rainbow_violet:"rgb(200,130,180)",rainbow_red_shimmer:"rgb(250,155,147)",rainbow_orange_shimmer:"rgb(255,185,137)",rainbow_yellow_shimmer:"rgb(255,225,155)",rainbow_green_shimmer:"rgb(185,230,180)",rainbow_blue_shimmer:"rgb(180,205,240)",rainbow_indigo_shimmer:"rgb(195,180,230)",rainbow_violet_shimmer:"rgb(230,180,210)"};function ov(t){return t==="light"?ine:sne}var D9=420,une=50;function O9(t){let e=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/.exec(t);return e?{r:Number(e[1]),g:Number(e[2]),b:Number(e[3])}:null}function dne(t,e,n){return{r:Math.round(t.r+(e.r-t.r)*n),g:Math.round(t.g+(e.g-t.g)*n),b:Math.round(t.b+(e.b-t.b)*n)}}function pne(t){return`rgb(${t.r},${t.g},${t.b})`}function L9(t){let{streamingState:e,animate:n,streamingApproxRef:o}=t,{currentTheme:r}=cne(),i=e==="Responding"||e==="WaitingForConfirmation",s=lne(0),[a,l]=M9(n&&i?D9:null),c=!!o,[,u]=M9(i&&c?une:null),d=o?.current.thinkingCharCount??0,p=o?.current.thinkingEnded??!1;if(!i)return s.current=0,null;let f=e==="WaitingForConfirmation",m=f?"\u7B49\u5F85\u786E\u8BA4":"\u751F\u6210\u4E2D",g=ov(r),h=f?g.warning:g.claudeBlue_FOR_SYSTEM_SPINNER,y=f?g.warningShimmer:g.claudeBlueShimmer_FOR_SYSTEM_SPINNER,v=n?Math.floor(l/D9)%3:0,b=n?(Math.sin(l/1e3*Math.PI)+1)/2:0,R=O9(h),M=O9(y),B=R&&M?pne(dne(R,M,b)):b>.5?y:h,S=B,x=null;if(o){let T=o.current.turnStartedAt,W=T>0?Date.now()-T:0,A=o.current.targetChars,U=xN()||f||W>3e4;s.current=TN(s.current,A);let j=Math.round(s.current/4),_=bN(T);if(U){let N=[Kl(Ud,{dimColor:!0,children:[" \xB7 ",_,"s"]},"elapsed")];j>0&&N.push(Kl(Ud,{dimColor:!0,children:[" \xB7 ",Ws(j)," tokens"]},"tok")),x=iv(A9,{children:N})}if(d>0&&!p){let N=[Kl(Ud,{color:g.claudeBlue_FOR_SYSTEM_SPINNER,dimColor:!0,children:[" \xB7 ","\u6B63\u5728\u601D\u8003"]},"think-active")];x=Kl(A9,{children:[x,N]})}}return Kl(LI,{width:"100%",flexShrink:0,marginTop:1,flexDirection:"row",gap:1,alignItems:"center",children:[iv(LI,{ref:a,flexDirection:"row",flexShrink:0,gap:1,children:[0,1,2].map(T=>iv(Ud,{color:S,dim:T!==v,children:Xn},T))}),Kl(LI,{flexDirection:"row",flexShrink:0,children:[iv(Ud,{color:B,children:m}),x]})]})}import{c as Lne}from"react/compiler-runtime";import{jsx as Ho,jsxs as Nne}from"react/jsx-runtime";import{Suspense as $ne,memo as Fne,use as Une,useRef as Bne}from"react";import{marked as Y9}from"marked";import{Ansi as jne,Box as Q9,usePandaTheme as zne}from"panda-ink";var N9,fne;async function mne(){try{let t=await import("cli-highlight"),e=await import("highlight.js");return fne=(typeof e.getLanguage=="function"?e:e.default).getLanguage,{highlight:t.highlight,supportsLanguage:t.supportsLanguage}}catch{return null}}function $9(){return N9??=mne(),N9}import{createHash as gne}from"node:crypto";function F9(t){return gne("sha256").update(t).digest("hex")}import Zs from"chalk";import{marked as Sne}from"marked";import K9 from"strip-ansi";import Le from"chalk";function hne(){return process.env.TERM_PROGRAM==="vscode"&&Le.level===2?(Le.level=3,!0):!1}function yne(){return process.env.CLAUDE_CODE_TMUX_TRUECOLOR?!1:process.env.TMUX&&Le.level>2?(Le.level=2,!0):!1}var v5e=hne(),b5e=yne(),vne=/^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,bne=/^ansi256\(\s?(\d+)\s?\)$/,NI=(t,e,n)=>{if(!e)return t;if(e.startsWith("ansi:"))switch(e.substring(5)){case"black":return n==="foreground"?Le.black(t):Le.bgBlack(t);case"red":return n==="foreground"?Le.red(t):Le.bgRed(t);case"green":return n==="foreground"?Le.green(t):Le.bgGreen(t);case"yellow":return n==="foreground"?Le.yellow(t):Le.bgYellow(t);case"blue":return n==="foreground"?Le.blue(t):Le.bgBlue(t);case"magenta":return n==="foreground"?Le.magenta(t):Le.bgMagenta(t);case"cyan":return n==="foreground"?Le.cyan(t):Le.bgCyan(t);case"white":return n==="foreground"?Le.white(t):Le.bgWhite(t);case"blackBright":return n==="foreground"?Le.blackBright(t):Le.bgBlackBright(t);case"redBright":return n==="foreground"?Le.redBright(t):Le.bgRedBright(t);case"greenBright":return n==="foreground"?Le.greenBright(t):Le.bgGreenBright(t);case"yellowBright":return n==="foreground"?Le.yellowBright(t):Le.bgYellowBright(t);case"blueBright":return n==="foreground"?Le.blueBright(t):Le.bgBlueBright(t);case"magentaBright":return n==="foreground"?Le.magentaBright(t):Le.bgMagentaBright(t);case"cyanBright":return n==="foreground"?Le.cyanBright(t):Le.bgCyanBright(t);case"whiteBright":return n==="foreground"?Le.whiteBright(t):Le.bgWhiteBright(t)}if(e.startsWith("#"))return n==="foreground"?Le.hex(e)(t):Le.bgHex(e)(t);if(e.startsWith("ansi256")){let o=bne.exec(e);if(!o)return t;let r=Number(o[1]);return n==="foreground"?Le.ansi256(r)(t):Le.bgAnsi256(r)(t)}if(e.startsWith("rgb")){let o=vne.exec(e);if(!o)return t;let r=Number(o[1]),i=Number(o[2]),s=Number(o[3]);return n==="foreground"?Le.rgb(r,i,s)(t):Le.bgRgb(r,i,s)(t)}return t};function U9(t,e,n="foreground"){return o=>t?t.startsWith("rgb(")||t.startsWith("#")||t.startsWith("ansi256(")||t.startsWith("ansi:")?NI(o,t,n):NI(o,ov(e)[t],n):o}var S5e=process.platform==="darwin"?"\u23FA":"\u25CF";var B9="\u258E";import xne from"supports-hyperlinks";var j9=["ghostty","Hyper","kitty","alacritty","iTerm.app","iTerm2"];function sv(t){if(t?.stdoutSupported??xne.stdout)return!0;let n=t?.env??process.env,o=n.TERM_PROGRAM;if(o&&j9.includes(o))return!0;let r=n.LC_TERMINAL;return!!(r&&j9.includes(r)||n.TERM?.includes("kitty"))}import Tne from"chalk";var z9="\x1B]8;;",W9="\x07";function av(t,e,n){if(!(n?.supportsHyperlinks??sv()))return t;let r=e??t,i=Tne.blue(r);return`${z9}${t}${W9}${i}${z9}${W9}`}var wne=/<(commit_analysis|context|function_analysis|pr_analysis)>.*?<\/\1>\n?/gs,_ne=/<system-reminder>[\s\S]*?<\/system-reminder>/g;function Bd(t){return t.replace(wne,"").replace(_ne,"").trim()}var Kn=`
2089
+ `,H9=!1;function $I(){H9||(H9=!0,Sne.use({tokenizer:{del(){}}}))}function An(t,e,n=0,o=null,r=null,i=null){switch(t.type){case"blockquote":{let s=(t.tokens??[]).map(l=>An(l,e,0,null,null,i)).join(""),a=Zs.dim(B9);return s.split(Kn).map(l=>K9(l).trim()?`${a} ${Zs.italic(l)}`:l).join(Kn)}case"code":{if(!i)return t.text+Kn;let s="plaintext";return t.lang&&i.supportsLanguage(t.lang)&&(s=t.lang),i.highlight(t.text,{language:s})+Kn}case"codespan":return U9("permission",e)(t.text);case"em":return Zs.italic((t.tokens??[]).map(s=>An(s,e,0,null,r,i)).join(""));case"strong":return Zs.bold((t.tokens??[]).map(s=>An(s,e,0,null,r,i)).join(""));case"heading":switch(t.depth){case 1:return Zs.bold.italic.underline((t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join(""))+Kn+Kn;case 2:return Zs.bold((t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join(""))+Kn+Kn;default:return Zs.bold((t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join(""))+Kn+Kn}case"hr":return"---";case"image":return t.href;case"link":{if(t.href.startsWith("mailto:"))return t.href.replace(/^mailto:/,"");let s=(t.tokens??[]).map(l=>An(l,e,0,null,t,i)).join(""),a=K9(s);return a&&a!==t.href?av(t.href,s):av(t.href)}case"list":return t.items.map((s,a)=>An(s,e,n,t.ordered?t.start+a:null,t,i)).join("");case"list_item":return(t.tokens??[]).map(s=>`${" ".repeat(n)}${An(s,e,n+1,o,t,i)}`).join("");case"paragraph":return(t.tokens??[]).map(s=>An(s,e,0,null,null,i)).join("")+Kn;case"space":return Kn;case"br":return Kn;case"text":return r?.type==="link"?t.text:r?.type==="list_item"?`${o===null?"-":Pne(n,o)+"."} ${t.tokens?t.tokens.map(s=>An(s,e,n,o,t,i)).join(""):V9(t.text)}${Kn}`:V9(t.text);case"table":return"";case"escape":return t.text;case"def":case"del":case"html":return""}return""}var kne=/(^|[^\w./-])([A-Za-z0-9][\w-]*\/[A-Za-z0-9][\w.-]*)#(\d+)\b/g;function V9(t){return sv()?t.replace(kne,(e,n,o,r)=>n+av(`https://github.com/${o}/issues/${r}`,`${o}#${r}`)):t}function Ine(t){let e="";for(;t>0;)t--,e=String.fromCharCode(97+t%26)+e,t=Math.floor(t/26);return e}var Cne=[[1e3,"m"],[900,"cm"],[500,"d"],[400,"cd"],[100,"c"],[90,"xc"],[50,"l"],[40,"xl"],[10,"x"],[9,"ix"],[5,"v"],[4,"iv"],[1,"i"]];function Ene(t){let e="";for(let[n,o]of Cne)for(;t>=n;)e+=o,t-=n;return e}function Pne(t,e){switch(t){case 0:case 1:return e.toString();case 2:return Ine(e);case 3:return Ene(e);default:return e.toString()}}function q9(t,e,n,o){let r=Math.max(0,n-e);if(o==="center"){let i=Math.floor(r/2);return" ".repeat(i)+t+" ".repeat(r-i)}return o==="right"?" ".repeat(r)+t:t+" ".repeat(r)}import{jsx as FI}from"react/jsx-runtime";import G9 from"strip-ansi";import{Ansi as UI,stringWidth as jd,usePandaTheme as Rne,wrapAnsi as Ane}from"panda-ink";var Z9=4,zd=3,Mne=4,Dne="\x1B[1m",One="\x1B[22m";function Wd(t,e,n){if(e<=0)return[t];let o=t.trimEnd(),i=Ane(o,e,{hard:n?.hard??!1,trim:!1,wordWrap:!0}).split(`
2090
+ `).filter(s=>s.length>0);return i.length>0?i:[""]}function J9({token:t,highlight:e,forceWidth:n}){let{currentTheme:o}=Rne(),{columns:r}=Fo(),i=n??r;function s(A){return A?.map(U=>An(U,o,0,null,null,e)).join("")??""}function a(A){return G9(s(A))}function l(A){let j=a(A).split(/\s+/).filter(_=>_.length>0);return j.length===0?zd:Math.max(...j.map(_=>jd(_)),zd)}function c(A){return Math.max(jd(a(A)),zd)}let u=t.header.map((A,U)=>{let j=l(A.tokens);for(let _ of t.rows)j=Math.max(j,l(_[U]?.tokens));return j}),d=t.header.map((A,U)=>{let j=c(A.tokens);for(let _ of t.rows)j=Math.max(j,c(_[U]?.tokens));return j}),p=t.header.length,f=1+p*3,m=Math.max(i-f-Z9,p*zd),g=u.reduce((A,U)=>A+U,0),h=d.reduce((A,U)=>A+U,0),y=!1,v;if(h<=m)v=d;else if(g<=m){let A=m-g,U=d.map((_,$)=>_-u[$]),j=U.reduce((_,$)=>_+$,0);v=u.map((_,$)=>{if(j===0)return _;let N=Math.floor(U[$]/j*A);return _+N})}else{y=!0;let A=m/g;v=u.map(U=>Math.max(Math.floor(U*A),zd))}function b(){let A=1;for(let U=0;U<t.header.length;U++){let j=s(t.header[U].tokens),_=Wd(j,v[U],{hard:y});A=Math.max(A,_.length)}for(let U of t.rows)for(let j=0;j<U.length;j++){let _=s(U[j]?.tokens),$=Wd(_,v[j],{hard:y});A=Math.max(A,$.length)}return A}let M=b()>Mne;function B(A,U){let j=A.map((K,E)=>{let V=s(K.tokens),ae=v[E];return Wd(V,ae,{hard:y})}),_=Math.max(...j.map(K=>K.length),1),$=j.map(K=>Math.floor((_-K.length)/2)),N=[];for(let K=0;K<_;K++){let E="\u2502";for(let V=0;V<A.length;V++){let ae=j[V],Te=$[V],me=K-Te,ne=me>=0&&me<ae.length?ae[me]:"",Pe=v[V],de=U?"center":t.align?.[V]??"left";E+=" "+q9(ne,jd(ne),Pe,de)+" \u2502"}N.push(E)}return N}function S(A){let[U,j,_,$]={top:["\u250C","\u2500","\u252C","\u2510"],middle:["\u251C","\u2500","\u253C","\u2524"],bottom:["\u2514","\u2500","\u2534","\u2518"]}[A],N=U;return v.forEach((K,E)=>{N+=j.repeat(K+2),N+=E<v.length-1?_:$}),N}function x(){let A=[],U=t.header.map(N=>a(N.tokens)),j=Math.min(i-1,40),_="\u2500".repeat(j),$=" ";return t.rows.forEach((N,K)=>{K>0&&A.push(_),N.forEach((E,V)=>{let ae=U[V]||`Column ${V+1}`,me=s(E.tokens).trimEnd().replace(/\n+/g," ").replace(/\s+/g," ").trim(),ne=i-jd(ae)-3,Pe=i-$.length-1,de=Wd(me,Math.max(ne,10)),H=de[0]||"",te;if(de.length<=1||Pe<=ne)te=de;else{let ee=de.slice(1).map(Q=>Q.trim()).join(" "),ue=Wd(ee,Pe);te=[H,...ue]}A.push(`${Dne}${ae}:${One} ${te[0]||""}`);for(let ee=1;ee<te.length;ee++){let ue=te[ee];ue.trim()&&A.push(`${$}${ue}`)}})}),A.join(`
2091
2091
  `)}if(M)return FI(UI,{children:x()});let T=[];return T.push(S("top")),T.push(...B(t.header,!0)),T.push(S("middle")),t.rows.forEach((A,U)=>{T.push(...B(A,!1)),U<t.rows.length-1&&T.push(S("middle"))}),T.push(S("bottom")),Math.max(...T.map(A=>jd(G9(A))))>i-Z9?FI(UI,{children:x()}):FI(UI,{children:T.join(`
2092
- `)})}var jne=500,Js=new Map,zne=/[#*`|[>\-_~]|\n\n|^\d+\. |\n\d+\. /;function Wne(t){return zne.test(t.length>500?t.slice(0,500):t)}function Kne(t){if(!Wne(t))return[{type:"paragraph",raw:t,text:t,tokens:[{type:"text",raw:t,text:t}]}];let e=F9(t),n=Js.get(e);if(n)return Js.delete(e),Js.set(e,n),n;let o=Y9.lexer(t);if(Js.size>=jne){let r=Js.keys().next().value;r!==void 0&&Js.delete(r)}return Js.set(e,o),o}function lv(t){return t.children??t.content??""}function Hne(t){return lv(t)?Ho(Lne,{fallback:Ho(X9,{...t,highlight:null}),children:Ho(Vne,{...t})}):null}var cv=Nne(Hne,(t,e)=>lv(t)===lv(e)&&t.dimColor===e.dimColor);function Vne(t){let e=$ne($9());return Ho(X9,{...t,highlight:e})}function X9(t){let e=Dne(9),{dimColor:n,highlight:o}=t,r;e[0]!==t?(r=lv(t),e[0]=t,e[1]=r):r=e[1];let i=r,{currentTheme:s}=Bne();$I();let a;if(e[2]!==i||e[3]!==n||e[4]!==o||e[5]!==s){let u=Kne(Bd(i));a=[];let d="",p=function(){d&&(a.push(Ho(Une,{dimColor:n,children:d.trim()},a.length)),d="")};for(let f of u)f.type==="table"?(p(),a.push(Ho(J9,{token:f,highlight:o},a.length))):d=d+An(f,s,0,null,null,o);p(),e[2]=i,e[3]=n,e[4]=o,e[5]=s,e[6]=a}else a=e[6];let l=a,c;return e[7]!==l?(c=Ho(Q9,{flexDirection:"column",gap:1,children:l}),e[7]=l,e[8]=c):c=e[8],c}function qne(t){return t.children??t.content??""}function e8(t){"use no memo";$I();let e=Bd(qne(t)),n=Fne("");e.startsWith(n.current)||(n.current="");let o=n.current.length,r=Y9.lexer(e.substring(o)),i=r.length-1;for(;i>=0&&r[i].type==="space";)i--;let s=0;for(let c=0;c<i;c++)s+=r[c].raw.length;s>0&&(n.current=e.substring(0,o+s));let a=n.current,l=e.substring(a.length);return One(Q9,{flexDirection:"column",gap:1,children:[a?Ho(cv,{children:a}):null,l?Ho(cv,{children:l}):null]})}import{jsx as mre}from"react/jsx-runtime";import{memo as gre}from"react";import{jsx as c8}from"react/jsx-runtime";import{Box as fre}from"panda-ink";import{c as mv}from"react/compiler-runtime";import{jsx as xe,jsxs as Hd}from"react/jsx-runtime";import{memo as are}from"react";import{Box as Xe,Text as Hn,ThemedText as BI,usePandaTheme as gv}from"panda-ink";import{c as Gne}from"react/compiler-runtime";import{jsx as Kd,jsxs as Zne}from"react/jsx-runtime";import{Text as uv,usePandaTheme as Jne}from"panda-ink";var t8=120;function Yne(t){switch(t){case"pending":return"\u7B49\u5F85";case"confirming":return"\u5F85\u786E\u8BA4";case"executing":return"\u6267\u884C\u4E2D";case"success":return"\u6210\u529F";case"error":return"\u5931\u8D25";default:return String(t)}}function Qne(t){if(!t?.trim())return null;let e=t.trim().split(/\r?\n/)[0].replace(/\s+/g," ").trim();return e?e.length>t8?`${e.slice(0,t8-1)}\u2026`:e:null}function n8(t){let e=Gne(16),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=Jne(),a=i.status==="error",l,c;if(e[0]!==a||e[1]!==n||e[2]!==s||e[3]!==i.errorText||e[4]!==i.name||e[5]!==i.resultText||e[6]!==i.richKind||e[7]!==i.status||e[8]!==r||e[9]!==o){c=Symbol.for("react.early_return_sentinel");e:{let u=a?null:Qne(i.resultText);if(i.richKind!=="mcp_default"){let d;e[12]!==n||e[13]!==r||e[14]!==o?(d=Kd(mt,{level:n,tone:o,text:r}),e[12]=n,e[13]=r,e[14]=o,e[15]=d):d=e[15],c=d;break e}l=Zne(rt,{level:n,tone:o,children:[Kd(uv,{wrap:"truncate-end",bold:!0,children:i.name}),Kd(uv,{dimColor:!0,wrap:"truncate-end",children:Yne(i.status)}),u?Kd(uv,{dimColor:!0,wrap:"truncate-end",children:u}):null,a&&i.errorText?Kd(uv,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=a,e[1]=n,e[2]=s,e[3]=i.errorText,e[4]=i.name,e[5]=i.resultText,e[6]=i.richKind,e[7]=i.status,e[8]=r,e[9]=o,e[10]=l,e[11]=c}else l=e[10],c=e[11];return c!==Symbol.for("react.early_return_sentinel")?c:l}import{c as tre}from"react/compiler-runtime";import{jsx as ht,jsxs as Hi}from"react/jsx-runtime";import{Box as on,Text as tr,ThemedText as pv,usePandaTheme as nre}from"panda-ink";var r8=["blue","green","yellow","magenta","cyan","white","gray"],Xne={code_searcher:"Searcher",doc_researcher:"Researcher",arch_advisor:"Advisor",req_analyzer:"Analyzer",code_reviewer:"Reviewer",task_planner:"Planner"};function ere(t){let e=0;for(let n=0;n<t.length;n++)e=e*31+t.charCodeAt(n)>>>0;return e%r8.length}function dv(t,e){let n=r8[ere(e)];return t?{label:Xne[t]??t,color:n}:{label:"Agent",color:n}}function rre(t){return t==="pending"||t==="executing"||t==="confirming"}function ore(t,e){return rre(e)?`${t} \u2026`:t}function o8(t){let e=tre(9),{row:n}=t,{title:o,detailLine:r,summaryLine:i,feed:s}=n,{currentTheme:a,palette:l}=nre(),c;if(e[0]!==a||e[1]!==r||e[2]!==s?.agentType||e[3]!==l||e[4]!==n.status||e[5]!==n.workId||e[6]!==i||e[7]!==o){let u=jn(a,l),d=a==="dark",p=dv(s?.agentType,n.workId),f=ore(o,n.status);c=Hi(on,{width:"100%",flexDirection:"column",flexShrink:0,children:[Hi(on,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[ht(on,{flexShrink:0,minWidth:2,children:ht(tr,{color:l.accentSuccess,children:Xn})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,children:ht(tr,{color:p.color,children:p.label})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.secondaryText,children:" "})}),ht(on,{flexGrow:1,flexShrink:1,minWidth:0,children:ht(tr,{color:u.primaryText,wrap:"truncate-end",children:f})})]}),Hi(on,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[ht(on,{flexShrink:0,minWidth:2,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,children:d?Hi(tr,{color:u.secondaryText,dimColor:u.secondaryDim,children:["\u2514"," "]}):Hi(pv,{colorKey:"textSecondary",dimColor:!0,children:["\u2514"," "]})}),ht(on,{flexGrow:1,flexShrink:1,minWidth:0,children:d?ht(tr,{color:u.secondaryText,dimColor:u.secondaryDim,wrap:"truncate-end",children:r}):ht(pv,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:r})})]}),Hi(on,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[ht(on,{flexShrink:0,minWidth:2,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,children:d?Hi(tr,{color:u.secondaryText,dimColor:u.secondaryDim,children:["\u2502"," "]}):Hi(pv,{colorKey:"textSecondary",dimColor:!0,children:["\u2502"," "]})}),ht(on,{flexGrow:1,flexShrink:1,minWidth:0,children:d?ht(tr,{color:u.secondaryText,dimColor:u.secondaryDim,wrap:"truncate-end",children:i}):ht(pv,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:i})})]})]}),e[0]=a,e[1]=r,e[2]=s?.agentType,e[3]=l,e[4]=n.status,e[5]=n.workId,e[6]=i,e[7]=o,e[8]=c}else c=e[8];return c}import{c as i8}from"react/compiler-runtime";import{jsx as yt,jsxs as Hl}from"react/jsx-runtime";import{Box as yn,Text as Er,ThemedText as fv,usePandaTheme as s8}from"panda-ink";function a8(t){let e=i8(5),{row:n}=t,{count:o,panels:r}=n,{currentTheme:i,palette:s}=s8(),a;if(e[0]!==o||e[1]!==i||e[2]!==s||e[3]!==r){let l=jn(i,s);a=Hl(yn,{width:"100%",flexDirection:"column",flexShrink:0,children:[Hl(yn,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[yt(yn,{flexShrink:0,minWidth:2,children:i==="dark"?yt(Er,{color:l.secondaryText,dimColor:l.secondaryDim,children:Ad}):yt(fv,{colorKey:"textSecondary",dimColor:!0,children:Ad})}),yt(yn,{flexShrink:0,minWidth:1,children:yt(Er,{color:l.primaryText,children:" "})}),yt(yn,{flexGrow:1,flexShrink:1,minWidth:0,children:Hl(Er,{color:l.primaryText,children:["Running ",o," agents\u2026"]})})]}),r.map(ire)]}),e[0]=o,e[1]=i,e[2]=s,e[3]=r,e[4]=a}else a=e[4];return a}function ire(t){return yt(sre,{panel:t},t.workId)}function sre(t){let e=i8(10),{panel:n}=t,{title:o,detailLine:r,feed:i}=n,{currentTheme:s,palette:a}=s8(),l;if(e[0]!==s||e[1]!==r||e[2]!==i?.agentType||e[3]!==i?.tokenCount||e[4]!==a||e[5]!==n.workId||e[6]!==o){let c=jn(s,a),u=s==="dark",d=dv(i?.agentType,n.workId),p=i?.tokenCount,f;e[8]!==p?(f=typeof p=="number"&&p>0?` \xB7 ${Ws(p)} tokens`:"",e[8]=p,e[9]=f):f=e[9];let m=f,g=" ".repeat(3);l=Hl(yn,{width:"100%",flexDirection:"column",flexShrink:0,paddingLeft:2,children:[Hl(yn,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[yt(yn,{flexShrink:0,minWidth:2,children:u?yt(Er,{color:c.secondaryText,dimColor:c.secondaryDim,children:Ad}):yt(fv,{colorKey:"textSecondary",dimColor:!0,children:Ad})}),yt(yn,{flexShrink:0,minWidth:1,children:yt(Er,{color:c.secondaryText,children:" "})}),yt(yn,{flexShrink:0,children:yt(Er,{color:d.color,children:d.label})}),yt(yn,{flexShrink:0,minWidth:1,children:yt(Er,{color:c.secondaryText,children:" "})}),yt(yn,{flexGrow:1,flexShrink:1,minWidth:0,children:yt(Er,{color:c.primaryText,bold:!0,wrap:"truncate-end",children:o})}),yt(yn,{flexShrink:0,children:yt(Er,{color:c.secondaryText,wrap:"truncate-end",children:m})})]}),r?Hl(yn,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[yt(yn,{flexShrink:0,minWidth:g.length,children:u?yt(Er,{color:c.secondaryText,dimColor:c.secondaryDim,children:g}):yt(fv,{colorKey:"textSecondary",dimColor:!0,children:g})}),yt(yn,{flexGrow:1,flexShrink:1,minWidth:0,children:u?yt(Er,{color:c.secondaryText,dimColor:c.secondaryDim,wrap:"truncate-end",children:r}):yt(fv,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:r})})]}):null]}),e[0]=s,e[1]=r,e[2]=i?.agentType,e[3]=i?.tokenCount,e[4]=a,e[5]=n.workId,e[6]=o,e[7]=l}else l=e[7];return l}function lre(){return xe(Xe,{width:"100%",height:0,flexShrink:0})}function cre(t){let e=mv(5),{line:n}=t,{currentTheme:o,palette:r}=gv(),i,s;if(e[0]!==o||e[1]!==n||e[2]!==r){s=Symbol.for("react.early_return_sentinel");e:{let a=jn(o,r);if(n.startsWith("> ")){let l=n.slice(2);s=Hd(Xe,{width:"100%",flexDirection:"row",flexShrink:0,backgroundColor:a.userMessageBg,paddingX:1,children:[xe(Xe,{flexShrink:0,children:xe(Hn,{color:"cyan",children:"\u203A"})}),xe(Xe,{flexShrink:0,children:xe(Hn,{color:a.primaryText,children:" "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(Hn,{color:a.primaryText,wrap:"truncate-end",children:l})})]});break e}i=xe(Xe,{width:"100%",flexDirection:"row",flexShrink:0,backgroundColor:a.userMessageBg,paddingX:1,children:xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(Hn,{color:a.primaryText,wrap:"truncate-end",children:n})})})}e[0]=o,e[1]=n,e[2]=r,e[3]=i,e[4]=s}else i=e[3],s=e[4];return s!==Symbol.for("react.early_return_sentinel")?s:i}function ure(t){let e=mv(6),{showDot:n,children:o,rowKey:r}=t,{currentTheme:i,palette:s}=gv(),a;if(e[0]!==o||e[1]!==i||e[2]!==s||e[3]!==r||e[4]!==n){let l=jn(i,s);a=Hd(Xe,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[xe(Xe,{flexShrink:0,minWidth:2,children:xe(Hn,{color:s.accentSuccess,children:n?Xn:" "})}),xe(Xe,{flexShrink:0,minWidth:1,children:xe(Hn,{color:l.primaryText,children:" "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:o})]},r),e[0]=o,e[1]=i,e[2]=s,e[3]=r,e[4]=n,e[5]=a}else a=e[5];return a}function dre(t){let e=mv(6),{showDot:n,rowKey:o,children:r}=t,{currentTheme:i,palette:s}=gv(),a;if(e[0]!==r||e[1]!==i||e[2]!==s||e[3]!==o||e[4]!==n){let l=jn(i,s);a=Hd(Xe,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[xe(Xe,{flexShrink:0,minWidth:2,children:xe(Hn,{dimColor:!0,color:s.accentSuccess,children:n?Xn:" "})}),xe(Xe,{flexShrink:0,minWidth:1,children:xe(Hn,{dimColor:!0,color:l.primaryText,children:" "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(BI,{colorKey:"textSecondary",dimColor:!0,children:r})})]},o),e[0]=r,e[1]=i,e[2]=s,e[3]=o,e[4]=n,e[5]=a}else a=e[5];return a}function pre(t){let e=mv(46),{row:n,rowKey:o}=t,{currentTheme:r,palette:i}=gv(),s;if(e[0]!==r||e[1]!==i||e[2]!==n.kind||e[3]!==n.selected||e[4]!==n.text||e[5]!==o){s=Symbol.for("react.early_return_sentinel");e:{let l=jn(r,i),c=r==="dark";if(n.kind==="user_pad"){s=xe(Xe,{width:"100%",height:0,flexShrink:0,children:xe(lre,{})},o);break e}if(n.kind==="user_line"){s=xe(Xe,{width:"100%",flexShrink:0,children:xe(cre,{line:n.text||" "})},o);break e}if(n.kind==="queued_user"){if(n.selected){s=Hd(Xe,{width:"100%",flexShrink:0,flexDirection:"row",paddingX:1,backgroundColor:l.userMessageBg,children:[xe(Xe,{flexShrink:0,children:xe(Hn,{color:"cyan",children:"\u203A "})}),xe(Xe,{flexShrink:0,children:xe(Hn,{color:"cyan",children:"\u23F3 "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(Hn,{color:l.primaryText,wrap:"truncate-end",children:n.text||" "})})]},o);break e}s=Hd(Xe,{width:"100%",flexShrink:0,flexDirection:"row",paddingX:1,children:[xe(Xe,{flexShrink:0,children:c?xe(Hn,{color:l.secondaryText,dimColor:l.secondaryDim,children:"\u23F3 "}):xe(BI,{colorKey:"textSecondary",dimColor:!0,children:"\u23F3 "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:c?xe(Hn,{color:l.secondaryText,dimColor:l.secondaryDim,wrap:"truncate-end",children:n.text||" "}):xe(BI,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:n.text||" "})})]},o);break e}}e[0]=r,e[1]=i,e[2]=n.kind,e[3]=n.selected,e[4]=n.text,e[5]=o,e[6]=s}else s=e[6];if(s!==Symbol.for("react.early_return_sentinel"))return s;if(n.kind==="sub_agent_panel"){let l;return e[7]!==n||e[8]!==o?(l=xe(Xe,{width:"100%",flexShrink:0,children:xe(o8,{row:n})},o),e[7]=n,e[8]=o,e[9]=l):l=e[9],l}if(n.kind==="sub_agent_forest"){let l;return e[10]!==n||e[11]!==o?(l=xe(Xe,{width:"100%",flexShrink:0,children:xe(a8,{row:n})},o),e[10]=n,e[11]=o,e[12]=l):l=e[12],l}if(n.kind==="thinking"){let l=n.showLeadingDot!==!1,c;return e[13]!==n.collapsed||e[14]!==n.text||e[15]!==n.thinkingDotAnimate||e[16]!==o||e[17]!==l?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(dre,{rowKey:o,showDot:l,collapsed:n.collapsed,thinkingDotAnimate:n.thinkingDotAnimate,children:n.text||" "})},o),e[13]=n.collapsed,e[14]=n.text,e[15]=n.thinkingDotAnimate,e[16]=o,e[17]=l,e[18]=c):c=e[18],c}if(n.kind==="assistant_markdown"){let l=n.showLeadingDot!==!1,c;return e[19]!==n.text||e[20]!==o||e[21]!==l?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(ure,{rowKey:o,showDot:l,children:xe(cv,{children:n.text||" "})})},o),e[19]=n.text,e[20]=o,e[21]=l,e[22]=c):c=e[22],c}if(n.kind==="tool_tree_row"&&n.richMeta){if(n.richMeta.richKind==="mcp_default"){let c;return e[23]!==n.askUiState||e[24]!==n.level||e[25]!==n.richMeta||e[26]!==n.text||e[27]!==n.tone||e[28]!==o?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(n8,{level:n.level,tone:n.tone,summaryFallback:n.text||" ",richMeta:n.richMeta,askUiState:n.askUiState})},o),e[23]=n.askUiState,e[24]=n.level,e[25]=n.richMeta,e[26]=n.text,e[27]=n.tone,e[28]=o,e[29]=c):c=e[29],c}let l=RI[n.richMeta.name];if(l){let c;return e[30]!==l||e[31]!==n.askUiState||e[32]!==n.level||e[33]!==n.richMeta||e[34]!==n.text||e[35]!==n.tone||e[36]!==o?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(l,{level:n.level,tone:n.tone,summaryFallback:n.text||" ",richMeta:n.richMeta,askUiState:n.askUiState})},o),e[30]=l,e[31]=n.askUiState,e[32]=n.level,e[33]=n.richMeta,e[34]=n.text,e[35]=n.tone,e[36]=o,e[37]=c):c=e[37],c}}if(n.kind==="tool_tree_row"){let l;return e[38]!==n.level||e[39]!==n.text||e[40]!==n.tone||e[41]!==o?(l=xe(Xe,{width:"100%",flexShrink:0,children:xe(mt,{level:n.level,tone:n.tone,text:n.text||" "})},o),e[38]=n.level,e[39]=n.text,e[40]=n.tone,e[41]=o,e[42]=l):l=e[42],l}let a;return e[43]!==n.text||e[44]!==o?(a=xe(Xe,{width:"100%",flexShrink:0,children:xe(Hn,{color:P9(n.text),wrap:"truncate-end",children:n.text||" "})},o),e[43]=n.text,e[44]=o,e[45]=a):a=e[45],a}var l8=are(pre,(t,e)=>t.rowKey===e.rowKey&&t.row===e.row);function u8(t){let{message:e,messageKey:n}=t;return c8(fre,{width:"100%",flexShrink:0,flexDirection:"column",children:e.rows.map((o,r)=>c8(l8,{row:o,rowKey:`${n}:L${r}`},`${n}:L${r}`))})}function hre(t){let{item:e}=t;return mre(u8,{message:e.message,messageKey:e.id})}var d8=gre(hre,(t,e)=>t.item===e.item);import{jsx as Vl,jsxs as vv}from"react/jsx-runtime";import xv from"figures";import{Box as bv,Text as ql}from"panda-ink";import yre from"emoji-regex";import{eastAsianWidth as p8}from"get-east-asian-width";import vre from"strip-ansi";var jI=null;function hv(){return jI||(jI=new Intl.Segmenter(void 0,{granularity:"grapheme"})),jI}var f8=yre();function bre(t){if(typeof t!="string"||t.length===0)return 0;let e=!0;for(let o=0;o<t.length;o++){let r=t.charCodeAt(o);if(r>=127||r===27){e=!1;break}}if(e){let o=0;for(let r=0;r<t.length;r++)t.charCodeAt(r)>31&&o++;return o}if(t.includes("\x1B")&&(t=vre(t),t.length===0))return 0;if(!xre(t)){let o=0;for(let r of t){let i=r.codePointAt(0);m8(i)||(o+=p8(i,{ambiguousAsWide:!1}))}return o}let n=0;for(let{segment:o}of hv().segment(t)){if(f8.lastIndex=0,f8.test(o)){n+=Tre(o);continue}for(let r of o){let i=r.codePointAt(0);if(!m8(i)){n+=p8(i,{ambiguousAsWide:!1});break}}}return n}function xre(t){for(let e of t){let n=e.codePointAt(0);if(n>=127744&&n<=129791||n>=9728&&n<=10175||n>=127462&&n<=127487||n>=65024&&n<=65039||n===8205)return!0}return!1}function Tre(t){let e=t.codePointAt(0);if(e>=127462&&e<=127487){let n=0;for(let o of t)n++;return n===1?1:2}return t.length===2&&t.codePointAt(1)===65039&&(e>=48&&e<=57||e===35||e===42)?1:2}function m8(t){if(t>=32&&t<127)return!1;if(t>=160&&t<768)return t===173;if(t<=31||t>=127&&t<=159||t>=8203&&t<=8205||t===65279||t>=8288&&t<=8292||t>=65024&&t<=65039||t>=917760&&t<=917999||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65056&&t<=65071)return!0;if(t>=2304&&t<=3407){let e=t&127;if(e<=3||e>=58&&e<=79||e>=81&&e<=87||e>=98&&e<=99)return!0}return t===3633||t>=3636&&t<=3642||t>=3655&&t<=3662||t===3761||t>=3764&&t<=3772||t>=3784&&t<=3789||t>=1536&&t<=1541||t===1757||t===1807||t===2274||t>=55296&&t<=57343||t>=917504&&t<=917631}var g8=typeof Bun<"u"&&typeof Bun.stringWidth=="function"?Bun.stringWidth:null,wre={ambiguousIsNarrow:!0},yv=g8?t=>g8(t,wre):bre;function _re(t,e){let n=parseInt(t.id,10),o=parseInt(e.id,10);return!Number.isNaN(n)&&!Number.isNaN(o)?n-o:t.id.localeCompare(e.id)}function Sre(t){switch(t){case"completed":return{icon:xv.tick,color:"green"};case"in_progress":return{icon:xv.squareSmallFilled,color:"cyan"};case"pending":return{icon:xv.squareSmall}}}function kre(t,e){if(e<=0)return"";if(yv(t)<=e)return t;let n="",o=0;for(let{segment:r}of hv().segment(t)){let i=yv(r);if(o+i>e-1)return`${n}\u2026`;n+=r,o+=i}return n}function Ire(t){if(t.length===0)return"";let e=[],n=t.filter(i=>i.status==="in_progress").length,o=t.filter(i=>i.status==="pending").length,r=t.filter(i=>i.status==="completed").length;return n>0&&e.push(`${n} in progress`),o>0&&e.push(`${o} pending`),r>0&&e.push(`${r} completed`),e.length>0?`... +${e.join(", ")}`:""}function Cre(t){return t<=10?0:Math.min(10,Math.max(3,t-14))}function h8(t){let{tasks:e,columns:n}=t;if(!e.length)return null;let{rows:o}=Fo(),r=new Set(e.filter(u=>u.status!=="completed").map(u=>u.id)),i=Cre(o),s=[],a=[],l=[...e].sort(_re);i>0&&l.length>i?(s=l.slice(0,i),a=l.slice(i)):s=l;let c=Ire(a);return vv(bv,{flexDirection:"column",children:[s.map((u,d)=>{let{icon:p,color:f}=Sre(u.status),m=u.blockedBy.filter(x=>r.has(x)),g=u.subject&&u.subject.trim().length>0?u.subject:"(untitled task)",h=u.status==="completed",y=u.status==="in_progress",v=m.length>0,b=n>=60&&!!u.owner,R=b&&u.owner?yv(` (@${u.owner})`):0,M=Math.max(15,n-15-R),B=kre(g,M),S=v&&m.length>0?` ${xv.pointerSmall} blocked by ${[...m].sort((x,T)=>parseInt(x,10)-parseInt(T,10)).map(x=>`#${x}`).join(", ")}`:"";return vv(bv,{width:"100%",flexDirection:"row",children:[Vl(ql,{color:f,children:p}),Vl(ql,{children:" "}),vv(bv,{flexDirection:"row",minWidth:0,flexGrow:1,children:[Vl(ql,{bold:y,strikethrough:h,dimColor:h||v,children:B}),b&&u.owner?vv(ql,{dimColor:!0,children:[" (@",u.owner,")"]}):null,S?Vl(ql,{dimColor:!0,children:S}):null]})]},`task-row-${u.id}-${d}`)}),c?Vl(bv,{width:"100%",children:Vl(ql,{dimColor:!0,wrap:"truncate-end",children:c})}):null]})}import{useEffect as Are,useState as x8}from"react";import{watch as Mre}from"fs";import{mkdir as Ere,readdir as y8,readFile as v8,writeFile as zI}from"fs/promises";import{join as WI}from"path";var Pre=".highwatermark";function b8(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-")}function Rre(t){let e=new Set(t.filter(n=>n.status==="completed").map(n=>n.id));return t.map(n=>({id:n.id,subject:n.subject,status:n.status,owner:n.owner,blockedBy:n.blockedBy.filter(o=>!e.has(o))}))}var Tv=class{constructor(e=Zr(process.env.HOME||process.cwd())){this.baseDir=e}baseDir;getTasksDir(e){return WI(this.baseDir,"tasks",b8(e))}getTaskPath(e,n){return WI(this.getTasksDir(e),`${b8(n)}.json`)}getHighWaterMarkPath(e){return WI(this.getTasksDir(e),Pre)}async ensureTasksDir(e){await Ere(this.getTasksDir(e),{recursive:!0})}async readHighWaterMark(e){try{let n=(await v8(this.getHighWaterMarkPath(e),"utf-8")).trim(),o=parseInt(n,10);return Number.isNaN(o)?0:o}catch{return 0}}async writeHighWaterMark(e,n){await zI(this.getHighWaterMarkPath(e),String(n))}async findHighestTaskId(e){let n=[];try{n=await y8(this.getTasksDir(e))}catch{return 0}let o=0;for(let r of n){if(!r.endsWith(".json"))continue;let i=parseInt(r.replace(".json",""),10);!Number.isNaN(i)&&i>o&&(o=i)}return Math.max(o,await this.readHighWaterMark(e))}async createTask(e,n){await this.ensureTasksDir(e);let o=await this.findHighestTaskId(e),r=String(o+1),i={id:r,subject:n.subject,description:n.description,activeForm:n.activeForm,owner:n.owner,status:n.status??"pending",blocks:[],blockedBy:[],metadata:n.metadata};return await zI(this.getTaskPath(e,r),JSON.stringify(i,null,2)),await this.writeHighWaterMark(e,parseInt(r,10)),i}async getTask(e,n){try{let o=await v8(this.getTaskPath(e,n),"utf-8");return JSON.parse(o)}catch{return null}}async listTasks(e){let n=[];try{n=await y8(this.getTasksDir(e))}catch{return[]}let o=n.filter(i=>i.endsWith(".json")).map(i=>i.replace(".json","")).sort((i,s)=>parseInt(i,10)-parseInt(s,10));return(await Promise.all(o.map(i=>this.getTask(e,i)))).filter(i=>!!i)}async updateTask(e,n,o){let r=await this.getTask(e,n);if(!r)return null;let i={...r,...o,id:r.id};return await zI(this.getTaskPath(e,n),JSON.stringify(i,null,2)),i}async snapshot(e){return Rre(await this.listTasks(e))}};function T8(t){let e=t.displayData??{};if((e.tool==="task_create"||e.tool==="task_update")&&Array.isArray(e.taskListSnapshot))return e.taskListSnapshot}function w8(t,e){for(let n=e.length-1;n>=0;n--){let o=T8(e[n]);if(o)return o}for(let n=t.length-1;n>=0;n--){let o=t[n];if(o.type==="tool_group")for(let r=o.tools.length-1;r>=0;r--){let i=T8(o.tools[r]);if(i)return i}}}function Dre(t){let e=t?.trim();return e?[e]:[]}function Ore(t){return t[0]?.tasks??[]}function _8(t,e){let[n,o]=x8(null),[r,i]=x8(!1);return Are(()=>{let s=Dre(t);if(i(!1),s.length===0){o(null),i(!0);return}let a=new Tv,l=!1,c=null,u=[],d=async()=>{try{let f=await Promise.all(s.map(async m=>({id:m,tasks:await a.snapshot(m)})));l||(o(Ore(f)),i(!0))}catch{l||(o([]),i(!0))}},p=()=>{c&&clearTimeout(c),c=setTimeout(()=>{d()},80)};d();for(let f of s)try{let m=Mre(a.getTasksDir(f),{persistent:!1},()=>{p()});u.push(()=>m.close())}catch{}return()=>{l=!0,c&&clearTimeout(c);for(let f of u)f()}},[t]),n!==null?n:!r&&e?e:[]}function S8(t,e,n=200,o=50){let r=e.current,i=r?t.findIndex(l=>l.id===r.id):-1,s=i>=0?i:r?Math.min(r.idx,Math.max(0,t.length-n)):0;t.length-s>n+o&&(s=t.length-n);let a=t[s];return a&&(!r||r.id!==a.id||r.idx!==s)?e.current={id:a.id,idx:s}:!a&&r&&(e.current=null),s}function Fre(t){let e=Lre(4),{contentWidth:n}=t,{palette:o}=k8(),r=n>=72,i=!r&&n>=58,s;if(e[0]!==o||e[1]!==r||e[2]!==i){let u=r?[" _____ _ _____ _ "," | __ \\ | | / ____| | | "," | |__) |_ _ _ __ __| | __ _ | | ___ __| | ___ "," | ___/ _` | '_ \\ / _` |/ _` | | | / _ \\ / _` |/ _ \\"," | | | (_| | | | | (_| | (_| | | |___| (_) | (_| | __/"," |_| \\__,_|_| |_|\\__,_|\\__,_| \\_____\\___/ \\__,_|\\___|"]:i?[" _____ _ _____ _"," | __ \\ | | / ____| | |"," | |__) |_ _ _ __ | | __ _| | ___ | | ___"," | ___/ _` | '_ \\| |/ _` | | / _ \\ | |/ _ \\"," | | | (_| | | | | | (_| | |___| (_) | | | __/"," |_| \\__,_|_| |_|_|\\__,_|\\_____\\___/ |_|\\___|"]:["Panda"],d=!r&&!i;s=Zt(Vn,{width:"100%",flexDirection:"column",flexShrink:0,marginTop:1,children:u.map((p,f)=>Zt(wv,{color:o.accentInfo,bold:d,children:p},`banner-${f}`))}),e[0]=o,e[1]=r,e[2]=i,e[3]=s}else s=e[3];return s}function Ure(t){let{messages:e,contentWidth:n,streamingState:o,streamingAssistantText:r="",conversationId:i=null,taskFallbackSnapshot:s,streamingApproxRef:a,transcriptMode:l=!1}=t,{currentTheme:c,palette:u}=k8(),d=jn(c,u),p=o==="Responding",f=_8(i,s),m=(o==="Responding"||o==="WaitingForConfirmation")&&f.length>0,g=qd(null),h=qd(null),y=qd(!1),v=qd(0),b=qd(i);b.current!==i&&(b.current=i,g.current=null,h.current=null,y.current=!1,v.current=0);let R=o!=="Idle",M=S8(e,g),B=M;R?(v.current=0,h.current===null&&(h.current=M),B=h.current):(y.current&&(v.current=2),v.current>0?(h.current!==null?B=h.current:B=M,v.current-=1,v.current===0&&(h.current=null)):h.current!==null&&(h.current=null)),y.current=R;let S=$re(()=>l?e:e.slice(B),[e,B,l]),x=nv(S),T=r&&x?Fd(x):0;return Vd(Vn,{flexDirection:"column",width:"100%",flexGrow:1,minHeight:0,children:[l?null:Zt(Vn,{width:"100%",flexShrink:0,flexDirection:"column",marginBottom:1,children:Zt(Fre,{contentWidth:n})}),Vd(Vn,{width:"100%",flexDirection:"column",children:[S.length>0?S.map(A=>{let U={id:A.id,message:A};return Zt(d8,{item:U},U.id)}):null,r?Zt(Vn,{alignItems:"flex-start",flexDirection:"row",marginTop:T,width:"100%",children:Vd(Vn,{flexDirection:"row",alignItems:"flex-start",children:[Zt(Vn,{flexShrink:0,minWidth:2,children:Zt(wv,{color:u.accentSuccess,children:Xn})}),Zt(Vn,{flexShrink:0,minWidth:1,children:Zt(wv,{color:d.primaryText,children:" "})}),Zt(Vn,{flexDirection:"column",flexGrow:1,flexShrink:1,minWidth:0,children:Zt(e8,{children:r})})]})}):null]}),l?null:Vd(Vn,{flexShrink:0,width:"100%",flexDirection:"column",children:[Zt(L9,{streamingState:o,animate:p,streamingApproxRef:a}),m?Zt(Vn,{width:"100%",flexDirection:"column",marginTop:1,children:Vd(Vn,{width:"100%",flexDirection:"row",alignItems:"flex-start",children:[Zt(Vn,{flexShrink:0,minWidth:5,children:Zt(wv,{dimColor:!0,children:" \u23BF "})}),Zt(Vn,{flexGrow:1,minWidth:0,children:Zt(h8,{tasks:f,columns:Math.max(20,n)})})]})}):null]})]})}var _v=Nre(Ure,(t,e)=>t.messages===e.messages&&t.contentWidth===e.contentWidth&&t.streamingState===e.streamingState&&t.streamingAssistantText===e.streamingAssistantText&&t.conversationId===e.conversationId&&t.taskFallbackSnapshot===e.taskFallbackSnapshot&&t.transcriptMode===e.transcriptMode);function Bre(t,e){if(t===e)return!0;if(!t||!e||t.toolCallId!==e.toolCallId||t.questionIndex!==e.questionIndex||t.optionIndex!==e.optionIndex)return!1;let n=Object.keys(t.selectedByQuestion),o=Object.keys(e.selectedByQuestion);if(n.length!==o.length)return!1;for(let r of n){let i=t.selectedByQuestion[r],s=e.selectedByQuestion[r];if(i!==s){if(!i||!s||i.length!==s.length)return!1;for(let a=0;a<i.length;a++)if(i[a]!==s[a])return!1}}return!0}function jre(t,e){if(t===e)return!0;let n=t??[],o=e??[];if(n.length!==o.length)return!1;for(let r=0;r<n.length;r++)if(n[r]!==o[r])return!1;return!0}function zre(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++){let o=t[n],r=e[n];if(o.id!==r.id||o.name!==r.name||o.status!==r.status||(o.workId??"")!==(r.workId??"")||(o.renderedInHistory??!1)!==(r.renderedInHistory??!1))return!1}return!0}function Wre(t,e){if(t===e)return!0;let n=t??{},o=e??{},r=Object.keys(n),i=Object.keys(o);if(r.length!==i.length)return!1;for(let s of r){let a=n[s],l=o[s];if(!a||!l||(a.latestEvent?.text??"")!==(l.latestEvent?.text??"")||(a.lastToolSummary??"")!==(l.lastToolSummary??"")||(a.tokenCount??0)!==(l.tokenCount??0)||(a.approxStreamChars??0)!==(l.approxStreamChars??0))return!1}return!0}function Kre(t,e){let n=t??null,o=e??null;return n===o?!0:!n||!o?!1:n.historyItemId===o.historyItemId&&n.text===o.text}function I8(t,e){return t.conversationId===e.conversationId&&t.historyItems===e.historyItems&&t.pendingAssistant===e.pendingAssistant&&Kre(t.assistantStreamOverlap,e.assistantStreamOverlap)&&zre(t.pendingToolCalls,e.pendingToolCalls)&&t.streamingState===e.streamingState&&t.contentWidth===e.contentWidth&&Bre(t.askQuestionUiState,e.askQuestionUiState)&&Wre(t.subAgentFeeds,e.subAgentFeeds)&&jre(t.queuedUserLines,e.queuedUserLines)&&!!t.queueSelectionActive==!!e.queueSelectionActive&&(t.queueSelectionIndex??-1)===(e.queueSelectionIndex??-1)}function C8(t){let e=Hre(54),{conversationId:n,historyItems:o,pendingAssistant:r,assistantStreamOverlap:i,pendingToolCalls:s,streamingState:a,streamingApproxRef:l,contentWidth:c,askQuestionUiState:u,subAgentFeeds:d,queuedUserLines:p,queueSelectionActive:f,queueSelectionIndex:m}=t,g=i===void 0?null:i,h=c===void 0?56:c,y;e[0]!==d?(y=d===void 0?{}:d,e[0]=d,e[1]=y):y=e[1];let v=y,b;e[2]!==p?(b=p===void 0?[]:p,e[2]=p,e[3]=b):b=e[3];let R=b,M=f===void 0?!1:f,B=m===void 0?-1:m,S;e:{if(!g){S=o;break e}let V;if(e[4]!==g||e[5]!==o){let ae;e[7]!==g?(ae=Te=>!(Te.type==="assistant"&&Te.id===g.historyItemId),e[7]=g,e[8]=ae):ae=e[8],V=o.filter(ae),e[4]=g,e[5]=o,e[6]=V}else V=e[6];S=V}let x=S,T=r||g?.text||"",W;e:{if(!R.length){W=null;break e}let V=Math.max(20,Math.floor(h)),ae;e[9]===Symbol.for("react.memo_cache_sentinel")?(ae={kind:"plain",text:""},e[9]=ae):ae=e[9];let Te;e[10]!==V?(Te=E9(V,"\u5DF2\u6392\u961F"),e[10]=V,e[11]=Te):Te=e[11];let me;e[12]!==Te?(me={kind:"plain",text:Te},e[12]=Te,e[13]=me):me=e[13];let ne;if(e[14]!==M||e[15]!==B||e[16]!==R||e[17]!==me){let Pe;e[19]!==M||e[20]!==B?(Pe=(de,H)=>({kind:"queued_user",text:de,selected:M&&H===B}),e[19]=M,e[20]=B,e[21]=Pe):Pe=e[21],ne={id:"queued-bundle",rows:[ae,me,...R.map(Pe)]},e[14]=M,e[15]=B,e[16]=R,e[17]=me,e[18]=ne}else ne=e[18];W=ne}let A=W,U;e[22]!==u||e[23]!==h||e[24]!==x||e[25]!==s||e[26]!==a||e[27]!==v?(U=rv({historyItems:x,pendingAssistant:"",pendingToolCalls:s,streamingState:a,contentWidth:h,askQuestionUiState:u,showEmptyPlaceholder:!1,subAgentFeeds:v}),e[22]=u,e[23]=h,e[24]=x,e[25]=s,e[26]=a,e[27]=v,e[28]=U):U=e[28];let j=U,_;if(e[29]!==j.blocks||e[30]!==A){e:{let V=j.blocks;if(!A){_=V;break e}if(V.length===0){let te;e[32]!==A?(te=[A],e[32]=A,e[33]=te):te=e[33],_=te;break e}let ae=nv(V);if(!ae){let te;e[34]!==A?(te=[A],e[34]=A,e[35]=te):te=e[35],_=te;break e}let Te=Fd(ae),me=Array.from({length:Te},Gre),ne=`gap:${ae.id}>queued-bundle`,Pe;e[36]!==me||e[37]!==ne?(Pe={id:ne,rows:me},e[36]=me,e[37]=ne,e[38]=Pe):Pe=e[38];let de=Pe,H;e[39]!==V||e[40]!==de||e[41]!==A?(H=[...V,de,A],e[39]=V,e[40]=de,e[41]=A,e[42]=H):H=e[42],_=H}e[29]=j.blocks,e[30]=A,e[31]=_}else _=e[31];let $=_,N;e[43]!==o||e[44]!==s?(N=w8(o,s),e[43]=o,e[44]=s,e[45]=N):N=e[45];let K=N,E;return e[46]!==h||e[47]!==n||e[48]!==$||e[49]!==l||e[50]!==T||e[51]!==a||e[52]!==K?(E=Vre(_v,{messages:$,streamingState:a,contentWidth:h,streamingAssistantText:T,conversationId:n,taskFallbackSnapshot:K,streamingApproxRef:l}),e[46]=h,e[47]=n,e[48]=$,e[49]=l,e[50]=T,e[51]=a,e[52]=K,e[53]=E):E=e[53],E}function Gre(){return{kind:"plain",text:""}}C8.displayName="MainContent";var E8=qre(C8,I8);import{Fragment as soe,jsx as qi,jsxs as aoe}from"react/jsx-runtime";import{Box as B8,Text as loe}from"panda-ink";function P8(t){switch(t){case"agent":return"#5a8dbb";case"ask":return"#a3be8c";case"plan":return"#e8c37e";case"office":return"#8fbcbb";case"team":return"#d65d62";default:return"#b48ead"}}function Sv(t){switch(t){case"agent":return"#4f7eb5";case"ask":return"#91b07a";case"plan":return"#ddb86a";case"office":return"#7aa89a";case"team":return"#ca5a5f";default:return"#a07a9e"}}function R8(t){let{value:e,cursorOffset:n=0,interactionMode:o="agent",running:r,modelPickerActive:i,modelPickerHint:s,modePickerActive:a,modePickerHint:l,conversationPickerActive:c,conversationPickerHint:u,teamRolesPickerActive:d,teamRolesPickerHint:p,askQuestionActive:f,askQuestionHint:m,helpPopupActive:g,debugPickerActive:h=!1,debugPickerHint:y="",pendingUserMessageCount:v}=t,b=e.length>0,R=c?"# ":d?"* ":i?"@ ":a?"+ ":h?"% ":f||g?"? ":"> ",M=c?"cyan":d?"green":i?"magenta":a?"blue":h||f?"yellow":g?"green":Sv(o),B=d?p||"\u56E2\u961F\u89D2\u8272\uFF1A\u2191/\u2193 \u9009\u62E9\uFF0CSpace \u52FE\u9009\uFF0CEnter \u4FDD\u5B58":i?s||"\u6A21\u578B\u9009\u62E9\uFF1A\u2191/\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4":c?u||"\u4F1A\u8BDD\u9009\u62E9\uFF1A\u2191/\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4":a?l||"\u4EA4\u4E92\u6A21\u5F0F\uFF1A\u2191/\u2193 \u6216 j/k \u9009\u62E9\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88":h?y||"\u8C03\u8BD5\u65E5\u5FD7\uFF1A\u2191/\u2193 \u6EDA\u52A8 \xB7 r \u91CD\u8F7D \xB7 Enter/Esc \u5173\u95ED":f?m||"\u95EE\u7B54\uFF1A\u2191/\u2193 \u9009\u9879 \xB7 Enter \u786E\u8BA4 \xB7 [ ] \u6362\u9898":g?"\u5E2E\u52A9 & \u4F7F\u7528\u6280\u5DE7 \u2014 \u2191/\u2193 \u5BFC\u822A \xB7 PgUp/PgDn \u7FFB\u9875 \xB7 Esc \u5173\u95ED":r?"\u7EE7\u7EED\u8F93\u5165\uFF0CEnter \u5C06\u4E0B\u4E00\u6761\u6D88\u606F\u52A0\u5165\u961F\u5217\u2026":"\u5F00\u59CB\u5BF9\u8BDD\uFF0C@ \u63D0\u53CA\u5185\u5BB9\uFF0C/ \u589E\u52A0\u547D\u4EE4\u3002? \u6216 /help \u67E5\u770B\u5E2E\u52A9",S=d||i||c||a||h||f||g?B:b?e:B,x=d||i||c||a||h||f||g||!b,T=!d&&!i&&!c&&!a&&!h&&!f&&!g&&!b,W=!d&&!i&&!c&&!a&&!h&&!f&&!g&&b,A=W?Math.max(0,Math.min(n,e.length)):0;return{hasValue:b,prefix:R,prefixColor:M,displayValue:S,contentIsDim:x,showLeadingCursorPlaceholder:T,inlineCaret:W,effectiveCursor:A,cursor:W||f||g||d||i||c||a||h?"":"\u2588"}}import{Fragment as Zre,jsx as Vo,jsxs as Gl}from"react/jsx-runtime";import{Box as kv,Text as po}from"panda-ink";var Gd="#6b7280";function Jre(t){let e=t.split(`
2092
+ `)})}var Wne=500,Js=new Map,Kne=/[#*`|[>\-_~]|\n\n|^\d+\. |\n\d+\. /;function Hne(t){return Kne.test(t.length>500?t.slice(0,500):t)}function Vne(t){if(!Hne(t))return[{type:"paragraph",raw:t,text:t,tokens:[{type:"text",raw:t,text:t}]}];let e=F9(t),n=Js.get(e);if(n)return Js.delete(e),Js.set(e,n),n;let o=Y9.lexer(t);if(Js.size>=Wne){let r=Js.keys().next().value;r!==void 0&&Js.delete(r)}return Js.set(e,o),o}function lv(t){return t.children??t.content??""}function qne(t){return lv(t)?Ho($ne,{fallback:Ho(X9,{...t,highlight:null}),children:Ho(Gne,{...t})}):null}var cv=Fne(qne,(t,e)=>lv(t)===lv(e)&&t.dimColor===e.dimColor);function Gne(t){let e=Une($9());return Ho(X9,{...t,highlight:e})}function X9(t){let e=Lne(9),{dimColor:n,highlight:o}=t,r;e[0]!==t?(r=lv(t),e[0]=t,e[1]=r):r=e[1];let i=r,{currentTheme:s}=zne();$I();let a;if(e[2]!==i||e[3]!==n||e[4]!==o||e[5]!==s){let u=Vne(Bd(i));a=[];let d="",p=function(){d&&(a.push(Ho(jne,{dimColor:n,children:d.trim()},a.length)),d="")};for(let f of u)f.type==="table"?(p(),a.push(Ho(J9,{token:f,highlight:o},a.length))):d=d+An(f,s,0,null,null,o);p(),e[2]=i,e[3]=n,e[4]=o,e[5]=s,e[6]=a}else a=e[6];let l=a,c;return e[7]!==l?(c=Ho(Q9,{flexDirection:"column",gap:1,children:l}),e[7]=l,e[8]=c):c=e[8],c}function Zne(t){return t.children??t.content??""}function e8(t){"use no memo";$I();let e=Bd(Zne(t)),n=Bne("");e.startsWith(n.current)||(n.current="");let o=n.current.length,r=Y9.lexer(e.substring(o)),i=r.length-1;for(;i>=0&&r[i].type==="space";)i--;let s=0;for(let c=0;c<i;c++)s+=r[c].raw.length;s>0&&(n.current=e.substring(0,o+s));let a=n.current,l=e.substring(a.length);return Nne(Q9,{flexDirection:"column",gap:1,children:[a?Ho(cv,{children:a}):null,l?Ho(cv,{children:l}):null]})}import{jsx as hre}from"react/jsx-runtime";import{memo as yre}from"react";import{jsx as c8}from"react/jsx-runtime";import{Box as gre}from"panda-ink";import{c as mv}from"react/compiler-runtime";import{jsx as xe,jsxs as Hd}from"react/jsx-runtime";import{memo as cre}from"react";import{Box as Xe,Text as Hn,ThemedText as BI,usePandaTheme as gv}from"panda-ink";import{c as Jne}from"react/compiler-runtime";import{jsx as Kd,jsxs as Yne}from"react/jsx-runtime";import{Text as uv,usePandaTheme as Qne}from"panda-ink";var t8=120;function Xne(t){switch(t){case"pending":return"\u7B49\u5F85";case"confirming":return"\u5F85\u786E\u8BA4";case"executing":return"\u6267\u884C\u4E2D";case"success":return"\u6210\u529F";case"error":return"\u5931\u8D25";default:return String(t)}}function ere(t){if(!t?.trim())return null;let e=t.trim().split(/\r?\n/)[0].replace(/\s+/g," ").trim();return e?e.length>t8?`${e.slice(0,t8-1)}\u2026`:e:null}function n8(t){let e=Jne(16),{level:n,tone:o,summaryFallback:r,richMeta:i}=t,{palette:s}=Qne(),a=i.status==="error",l,c;if(e[0]!==a||e[1]!==n||e[2]!==s||e[3]!==i.errorText||e[4]!==i.name||e[5]!==i.resultText||e[6]!==i.richKind||e[7]!==i.status||e[8]!==r||e[9]!==o){c=Symbol.for("react.early_return_sentinel");e:{let u=a?null:ere(i.resultText);if(i.richKind!=="mcp_default"){let d;e[12]!==n||e[13]!==r||e[14]!==o?(d=Kd(mt,{level:n,tone:o,text:r}),e[12]=n,e[13]=r,e[14]=o,e[15]=d):d=e[15],c=d;break e}l=Yne(rt,{level:n,tone:o,children:[Kd(uv,{wrap:"truncate-end",bold:!0,children:i.name}),Kd(uv,{dimColor:!0,wrap:"truncate-end",children:Xne(i.status)}),u?Kd(uv,{dimColor:!0,wrap:"truncate-end",children:u}):null,a&&i.errorText?Kd(uv,{color:s.textError,wrap:"truncate-end",children:i.errorText}):null]})}e[0]=a,e[1]=n,e[2]=s,e[3]=i.errorText,e[4]=i.name,e[5]=i.resultText,e[6]=i.richKind,e[7]=i.status,e[8]=r,e[9]=o,e[10]=l,e[11]=c}else l=e[10],c=e[11];return c!==Symbol.for("react.early_return_sentinel")?c:l}import{c as rre}from"react/compiler-runtime";import{jsx as ht,jsxs as Hi}from"react/jsx-runtime";import{Box as on,Text as tr,ThemedText as pv,usePandaTheme as ore}from"panda-ink";var r8=["blue","green","yellow","magenta","cyan","white","gray"],tre={code_searcher:"Searcher",doc_researcher:"Researcher",arch_advisor:"Advisor",req_analyzer:"Analyzer",code_reviewer:"Reviewer",task_planner:"Planner"};function nre(t){let e=0;for(let n=0;n<t.length;n++)e=e*31+t.charCodeAt(n)>>>0;return e%r8.length}function dv(t,e){let n=r8[nre(e)];return t?{label:tre[t]??t,color:n}:{label:"Agent",color:n}}function ire(t){return t==="pending"||t==="executing"||t==="confirming"}function sre(t,e){return ire(e)?`${t} \u2026`:t}function o8(t){let e=rre(9),{row:n}=t,{title:o,detailLine:r,summaryLine:i,feed:s}=n,{currentTheme:a,palette:l}=ore(),c;if(e[0]!==a||e[1]!==r||e[2]!==s?.agentType||e[3]!==l||e[4]!==n.status||e[5]!==n.workId||e[6]!==i||e[7]!==o){let u=jn(a,l),d=a==="dark",p=dv(s?.agentType,n.workId),f=sre(o,n.status);c=Hi(on,{width:"100%",flexDirection:"column",flexShrink:0,children:[Hi(on,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[ht(on,{flexShrink:0,minWidth:2,children:ht(tr,{color:l.accentSuccess,children:Xn})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,children:ht(tr,{color:p.color,children:p.label})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.secondaryText,children:" "})}),ht(on,{flexGrow:1,flexShrink:1,minWidth:0,children:ht(tr,{color:u.primaryText,wrap:"truncate-end",children:f})})]}),Hi(on,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[ht(on,{flexShrink:0,minWidth:2,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,children:d?Hi(tr,{color:u.secondaryText,dimColor:u.secondaryDim,children:["\u2514"," "]}):Hi(pv,{colorKey:"textSecondary",dimColor:!0,children:["\u2514"," "]})}),ht(on,{flexGrow:1,flexShrink:1,minWidth:0,children:d?ht(tr,{color:u.secondaryText,dimColor:u.secondaryDim,wrap:"truncate-end",children:r}):ht(pv,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:r})})]}),Hi(on,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[ht(on,{flexShrink:0,minWidth:2,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,minWidth:1,children:ht(tr,{color:u.primaryText,children:" "})}),ht(on,{flexShrink:0,children:d?Hi(tr,{color:u.secondaryText,dimColor:u.secondaryDim,children:["\u2502"," "]}):Hi(pv,{colorKey:"textSecondary",dimColor:!0,children:["\u2502"," "]})}),ht(on,{flexGrow:1,flexShrink:1,minWidth:0,children:d?ht(tr,{color:u.secondaryText,dimColor:u.secondaryDim,wrap:"truncate-end",children:i}):ht(pv,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:i})})]})]}),e[0]=a,e[1]=r,e[2]=s?.agentType,e[3]=l,e[4]=n.status,e[5]=n.workId,e[6]=i,e[7]=o,e[8]=c}else c=e[8];return c}import{c as i8}from"react/compiler-runtime";import{jsx as yt,jsxs as Hl}from"react/jsx-runtime";import{Box as yn,Text as Er,ThemedText as fv,usePandaTheme as s8}from"panda-ink";function a8(t){let e=i8(5),{row:n}=t,{count:o,panels:r}=n,{currentTheme:i,palette:s}=s8(),a;if(e[0]!==o||e[1]!==i||e[2]!==s||e[3]!==r){let l=jn(i,s);a=Hl(yn,{width:"100%",flexDirection:"column",flexShrink:0,children:[Hl(yn,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[yt(yn,{flexShrink:0,minWidth:2,children:i==="dark"?yt(Er,{color:l.secondaryText,dimColor:l.secondaryDim,children:Ad}):yt(fv,{colorKey:"textSecondary",dimColor:!0,children:Ad})}),yt(yn,{flexShrink:0,minWidth:1,children:yt(Er,{color:l.primaryText,children:" "})}),yt(yn,{flexGrow:1,flexShrink:1,minWidth:0,children:Hl(Er,{color:l.primaryText,children:["Running ",o," agents\u2026"]})})]}),r.map(are)]}),e[0]=o,e[1]=i,e[2]=s,e[3]=r,e[4]=a}else a=e[4];return a}function are(t){return yt(lre,{panel:t},t.workId)}function lre(t){let e=i8(10),{panel:n}=t,{title:o,detailLine:r,feed:i}=n,{currentTheme:s,palette:a}=s8(),l;if(e[0]!==s||e[1]!==r||e[2]!==i?.agentType||e[3]!==i?.tokenCount||e[4]!==a||e[5]!==n.workId||e[6]!==o){let c=jn(s,a),u=s==="dark",d=dv(i?.agentType,n.workId),p=i?.tokenCount,f;e[8]!==p?(f=typeof p=="number"&&p>0?` \xB7 ${Ws(p)} tokens`:"",e[8]=p,e[9]=f):f=e[9];let m=f,g=" ".repeat(3);l=Hl(yn,{width:"100%",flexDirection:"column",flexShrink:0,paddingLeft:2,children:[Hl(yn,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[yt(yn,{flexShrink:0,minWidth:2,children:u?yt(Er,{color:c.secondaryText,dimColor:c.secondaryDim,children:Ad}):yt(fv,{colorKey:"textSecondary",dimColor:!0,children:Ad})}),yt(yn,{flexShrink:0,minWidth:1,children:yt(Er,{color:c.secondaryText,children:" "})}),yt(yn,{flexShrink:0,children:yt(Er,{color:d.color,children:d.label})}),yt(yn,{flexShrink:0,minWidth:1,children:yt(Er,{color:c.secondaryText,children:" "})}),yt(yn,{flexGrow:1,flexShrink:1,minWidth:0,children:yt(Er,{color:c.primaryText,bold:!0,wrap:"truncate-end",children:o})}),yt(yn,{flexShrink:0,children:yt(Er,{color:c.secondaryText,wrap:"truncate-end",children:m})})]}),r?Hl(yn,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[yt(yn,{flexShrink:0,minWidth:g.length,children:u?yt(Er,{color:c.secondaryText,dimColor:c.secondaryDim,children:g}):yt(fv,{colorKey:"textSecondary",dimColor:!0,children:g})}),yt(yn,{flexGrow:1,flexShrink:1,minWidth:0,children:u?yt(Er,{color:c.secondaryText,dimColor:c.secondaryDim,wrap:"truncate-end",children:r}):yt(fv,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:r})})]}):null]}),e[0]=s,e[1]=r,e[2]=i?.agentType,e[3]=i?.tokenCount,e[4]=a,e[5]=n.workId,e[6]=o,e[7]=l}else l=e[7];return l}function ure(){return xe(Xe,{width:"100%",height:0,flexShrink:0})}function dre(t){let e=mv(5),{line:n}=t,{currentTheme:o,palette:r}=gv(),i,s;if(e[0]!==o||e[1]!==n||e[2]!==r){s=Symbol.for("react.early_return_sentinel");e:{let a=jn(o,r);if(n.startsWith("> ")){let l=n.slice(2);s=Hd(Xe,{width:"100%",flexDirection:"row",flexShrink:0,backgroundColor:a.userMessageBg,paddingX:1,children:[xe(Xe,{flexShrink:0,children:xe(Hn,{color:"cyan",children:"\u203A"})}),xe(Xe,{flexShrink:0,children:xe(Hn,{color:a.primaryText,children:" "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(Hn,{color:a.primaryText,wrap:"truncate-end",children:l})})]});break e}i=xe(Xe,{width:"100%",flexDirection:"row",flexShrink:0,backgroundColor:a.userMessageBg,paddingX:1,children:xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(Hn,{color:a.primaryText,wrap:"truncate-end",children:n})})})}e[0]=o,e[1]=n,e[2]=r,e[3]=i,e[4]=s}else i=e[3],s=e[4];return s!==Symbol.for("react.early_return_sentinel")?s:i}function pre(t){let e=mv(6),{showDot:n,children:o,rowKey:r}=t,{currentTheme:i,palette:s}=gv(),a;if(e[0]!==o||e[1]!==i||e[2]!==s||e[3]!==r||e[4]!==n){let l=jn(i,s);a=Hd(Xe,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[xe(Xe,{flexShrink:0,minWidth:2,children:xe(Hn,{color:s.accentSuccess,children:n?Xn:" "})}),xe(Xe,{flexShrink:0,minWidth:1,children:xe(Hn,{color:l.primaryText,children:" "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:o})]},r),e[0]=o,e[1]=i,e[2]=s,e[3]=r,e[4]=n,e[5]=a}else a=e[5];return a}function fre(t){let e=mv(6),{showDot:n,rowKey:o,children:r}=t,{currentTheme:i,palette:s}=gv(),a;if(e[0]!==r||e[1]!==i||e[2]!==s||e[3]!==o||e[4]!==n){let l=jn(i,s);a=Hd(Xe,{width:"100%",flexDirection:"row",flexShrink:0,alignItems:"flex-start",children:[xe(Xe,{flexShrink:0,minWidth:2,children:xe(Hn,{dimColor:!0,color:s.accentSuccess,children:n?Xn:" "})}),xe(Xe,{flexShrink:0,minWidth:1,children:xe(Hn,{dimColor:!0,color:l.primaryText,children:" "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(BI,{colorKey:"textSecondary",dimColor:!0,children:r})})]},o),e[0]=r,e[1]=i,e[2]=s,e[3]=o,e[4]=n,e[5]=a}else a=e[5];return a}function mre(t){let e=mv(46),{row:n,rowKey:o}=t,{currentTheme:r,palette:i}=gv(),s;if(e[0]!==r||e[1]!==i||e[2]!==n.kind||e[3]!==n.selected||e[4]!==n.text||e[5]!==o){s=Symbol.for("react.early_return_sentinel");e:{let l=jn(r,i),c=r==="dark";if(n.kind==="user_pad"){s=xe(Xe,{width:"100%",height:0,flexShrink:0,children:xe(ure,{})},o);break e}if(n.kind==="user_line"){s=xe(Xe,{width:"100%",flexShrink:0,children:xe(dre,{line:n.text||" "})},o);break e}if(n.kind==="queued_user"){if(n.selected){s=Hd(Xe,{width:"100%",flexShrink:0,flexDirection:"row",paddingX:1,backgroundColor:l.userMessageBg,children:[xe(Xe,{flexShrink:0,children:xe(Hn,{color:"cyan",children:"\u203A "})}),xe(Xe,{flexShrink:0,children:xe(Hn,{color:"cyan",children:"\u23F3 "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:xe(Hn,{color:l.primaryText,wrap:"truncate-end",children:n.text||" "})})]},o);break e}s=Hd(Xe,{width:"100%",flexShrink:0,flexDirection:"row",paddingX:1,children:[xe(Xe,{flexShrink:0,children:c?xe(Hn,{color:l.secondaryText,dimColor:l.secondaryDim,children:"\u23F3 "}):xe(BI,{colorKey:"textSecondary",dimColor:!0,children:"\u23F3 "})}),xe(Xe,{flexGrow:1,flexShrink:1,minWidth:0,children:c?xe(Hn,{color:l.secondaryText,dimColor:l.secondaryDim,wrap:"truncate-end",children:n.text||" "}):xe(BI,{colorKey:"textSecondary",dimColor:!0,wrap:"truncate-end",children:n.text||" "})})]},o);break e}}e[0]=r,e[1]=i,e[2]=n.kind,e[3]=n.selected,e[4]=n.text,e[5]=o,e[6]=s}else s=e[6];if(s!==Symbol.for("react.early_return_sentinel"))return s;if(n.kind==="sub_agent_panel"){let l;return e[7]!==n||e[8]!==o?(l=xe(Xe,{width:"100%",flexShrink:0,children:xe(o8,{row:n})},o),e[7]=n,e[8]=o,e[9]=l):l=e[9],l}if(n.kind==="sub_agent_forest"){let l;return e[10]!==n||e[11]!==o?(l=xe(Xe,{width:"100%",flexShrink:0,children:xe(a8,{row:n})},o),e[10]=n,e[11]=o,e[12]=l):l=e[12],l}if(n.kind==="thinking"){let l=n.showLeadingDot!==!1,c;return e[13]!==n.collapsed||e[14]!==n.text||e[15]!==n.thinkingDotAnimate||e[16]!==o||e[17]!==l?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(fre,{rowKey:o,showDot:l,collapsed:n.collapsed,thinkingDotAnimate:n.thinkingDotAnimate,children:n.text||" "})},o),e[13]=n.collapsed,e[14]=n.text,e[15]=n.thinkingDotAnimate,e[16]=o,e[17]=l,e[18]=c):c=e[18],c}if(n.kind==="assistant_markdown"){let l=n.showLeadingDot!==!1,c;return e[19]!==n.text||e[20]!==o||e[21]!==l?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(pre,{rowKey:o,showDot:l,children:xe(cv,{children:n.text||" "})})},o),e[19]=n.text,e[20]=o,e[21]=l,e[22]=c):c=e[22],c}if(n.kind==="tool_tree_row"&&n.richMeta){if(n.richMeta.richKind==="mcp_default"){let c;return e[23]!==n.askUiState||e[24]!==n.level||e[25]!==n.richMeta||e[26]!==n.text||e[27]!==n.tone||e[28]!==o?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(n8,{level:n.level,tone:n.tone,summaryFallback:n.text||" ",richMeta:n.richMeta,askUiState:n.askUiState})},o),e[23]=n.askUiState,e[24]=n.level,e[25]=n.richMeta,e[26]=n.text,e[27]=n.tone,e[28]=o,e[29]=c):c=e[29],c}let l=RI[n.richMeta.name];if(l){let c;return e[30]!==l||e[31]!==n.askUiState||e[32]!==n.level||e[33]!==n.richMeta||e[34]!==n.text||e[35]!==n.tone||e[36]!==o?(c=xe(Xe,{width:"100%",flexShrink:0,children:xe(l,{level:n.level,tone:n.tone,summaryFallback:n.text||" ",richMeta:n.richMeta,askUiState:n.askUiState})},o),e[30]=l,e[31]=n.askUiState,e[32]=n.level,e[33]=n.richMeta,e[34]=n.text,e[35]=n.tone,e[36]=o,e[37]=c):c=e[37],c}}if(n.kind==="tool_tree_row"){let l;return e[38]!==n.level||e[39]!==n.text||e[40]!==n.tone||e[41]!==o?(l=xe(Xe,{width:"100%",flexShrink:0,children:xe(mt,{level:n.level,tone:n.tone,text:n.text||" "})},o),e[38]=n.level,e[39]=n.text,e[40]=n.tone,e[41]=o,e[42]=l):l=e[42],l}let a;return e[43]!==n.text||e[44]!==o?(a=xe(Xe,{width:"100%",flexShrink:0,children:xe(Hn,{color:P9(n.text),wrap:"truncate-end",children:n.text||" "})},o),e[43]=n.text,e[44]=o,e[45]=a):a=e[45],a}var l8=cre(mre,(t,e)=>t.rowKey===e.rowKey&&t.row===e.row);function u8(t){let{message:e,messageKey:n}=t;return c8(gre,{width:"100%",flexShrink:0,flexDirection:"column",children:e.rows.map((o,r)=>c8(l8,{row:o,rowKey:`${n}:L${r}`},`${n}:L${r}`))})}function vre(t){let{item:e}=t;return hre(u8,{message:e.message,messageKey:e.id})}var d8=yre(vre,(t,e)=>t.item===e.item);import{jsx as Vl,jsxs as vv}from"react/jsx-runtime";import xv from"figures";import{Box as bv,Text as ql}from"panda-ink";import bre from"emoji-regex";import{eastAsianWidth as p8}from"get-east-asian-width";import xre from"strip-ansi";var jI=null;function hv(){return jI||(jI=new Intl.Segmenter(void 0,{granularity:"grapheme"})),jI}var f8=bre();function Tre(t){if(typeof t!="string"||t.length===0)return 0;let e=!0;for(let o=0;o<t.length;o++){let r=t.charCodeAt(o);if(r>=127||r===27){e=!1;break}}if(e){let o=0;for(let r=0;r<t.length;r++)t.charCodeAt(r)>31&&o++;return o}if(t.includes("\x1B")&&(t=xre(t),t.length===0))return 0;if(!wre(t)){let o=0;for(let r of t){let i=r.codePointAt(0);m8(i)||(o+=p8(i,{ambiguousAsWide:!1}))}return o}let n=0;for(let{segment:o}of hv().segment(t)){if(f8.lastIndex=0,f8.test(o)){n+=_re(o);continue}for(let r of o){let i=r.codePointAt(0);if(!m8(i)){n+=p8(i,{ambiguousAsWide:!1});break}}}return n}function wre(t){for(let e of t){let n=e.codePointAt(0);if(n>=127744&&n<=129791||n>=9728&&n<=10175||n>=127462&&n<=127487||n>=65024&&n<=65039||n===8205)return!0}return!1}function _re(t){let e=t.codePointAt(0);if(e>=127462&&e<=127487){let n=0;for(let o of t)n++;return n===1?1:2}return t.length===2&&t.codePointAt(1)===65039&&(e>=48&&e<=57||e===35||e===42)?1:2}function m8(t){if(t>=32&&t<127)return!1;if(t>=160&&t<768)return t===173;if(t<=31||t>=127&&t<=159||t>=8203&&t<=8205||t===65279||t>=8288&&t<=8292||t>=65024&&t<=65039||t>=917760&&t<=917999||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65056&&t<=65071)return!0;if(t>=2304&&t<=3407){let e=t&127;if(e<=3||e>=58&&e<=79||e>=81&&e<=87||e>=98&&e<=99)return!0}return t===3633||t>=3636&&t<=3642||t>=3655&&t<=3662||t===3761||t>=3764&&t<=3772||t>=3784&&t<=3789||t>=1536&&t<=1541||t===1757||t===1807||t===2274||t>=55296&&t<=57343||t>=917504&&t<=917631}var g8=typeof Bun<"u"&&typeof Bun.stringWidth=="function"?Bun.stringWidth:null,Sre={ambiguousIsNarrow:!0},yv=g8?t=>g8(t,Sre):Tre;function kre(t,e){let n=parseInt(t.id,10),o=parseInt(e.id,10);return!Number.isNaN(n)&&!Number.isNaN(o)?n-o:t.id.localeCompare(e.id)}function Ire(t){switch(t){case"completed":return{icon:xv.tick,color:"green"};case"in_progress":return{icon:xv.squareSmallFilled,color:"cyan"};case"pending":return{icon:xv.squareSmall}}}function Cre(t,e){if(e<=0)return"";if(yv(t)<=e)return t;let n="",o=0;for(let{segment:r}of hv().segment(t)){let i=yv(r);if(o+i>e-1)return`${n}\u2026`;n+=r,o+=i}return n}function Ere(t){if(t.length===0)return"";let e=[],n=t.filter(i=>i.status==="in_progress").length,o=t.filter(i=>i.status==="pending").length,r=t.filter(i=>i.status==="completed").length;return n>0&&e.push(`${n} in progress`),o>0&&e.push(`${o} pending`),r>0&&e.push(`${r} completed`),e.length>0?`... +${e.join(", ")}`:""}function Pre(t){return t<=10?0:Math.min(10,Math.max(3,t-14))}function h8(t){let{tasks:e,columns:n}=t;if(!e.length)return null;let{rows:o}=Fo(),r=new Set(e.filter(u=>u.status!=="completed").map(u=>u.id)),i=Pre(o),s=[],a=[],l=[...e].sort(kre);i>0&&l.length>i?(s=l.slice(0,i),a=l.slice(i)):s=l;let c=Ere(a);return vv(bv,{flexDirection:"column",children:[s.map((u,d)=>{let{icon:p,color:f}=Ire(u.status),m=u.blockedBy.filter(x=>r.has(x)),g=u.subject&&u.subject.trim().length>0?u.subject:"(untitled task)",h=u.status==="completed",y=u.status==="in_progress",v=m.length>0,b=n>=60&&!!u.owner,R=b&&u.owner?yv(` (@${u.owner})`):0,M=Math.max(15,n-15-R),B=Cre(g,M),S=v&&m.length>0?` ${xv.pointerSmall} blocked by ${[...m].sort((x,T)=>parseInt(x,10)-parseInt(T,10)).map(x=>`#${x}`).join(", ")}`:"";return vv(bv,{width:"100%",flexDirection:"row",children:[Vl(ql,{color:f,children:p}),Vl(ql,{children:" "}),vv(bv,{flexDirection:"row",minWidth:0,flexGrow:1,children:[Vl(ql,{bold:y,strikethrough:h,dimColor:h||v,children:B}),b&&u.owner?vv(ql,{dimColor:!0,children:[" (@",u.owner,")"]}):null,S?Vl(ql,{dimColor:!0,children:S}):null]})]},`task-row-${u.id}-${d}`)}),c?Vl(bv,{width:"100%",children:Vl(ql,{dimColor:!0,wrap:"truncate-end",children:c})}):null]})}import{useEffect as Dre,useState as x8}from"react";import{watch as Ore}from"fs";import{mkdir as Rre,readdir as y8,readFile as v8,writeFile as zI}from"fs/promises";import{join as WI}from"path";var Are=".highwatermark";function b8(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-")}function Mre(t){let e=new Set(t.filter(n=>n.status==="completed").map(n=>n.id));return t.map(n=>({id:n.id,subject:n.subject,status:n.status,owner:n.owner,blockedBy:n.blockedBy.filter(o=>!e.has(o))}))}var Tv=class{constructor(e=Zr(process.env.HOME||process.cwd())){this.baseDir=e}baseDir;getTasksDir(e){return WI(this.baseDir,"tasks",b8(e))}getTaskPath(e,n){return WI(this.getTasksDir(e),`${b8(n)}.json`)}getHighWaterMarkPath(e){return WI(this.getTasksDir(e),Are)}async ensureTasksDir(e){await Rre(this.getTasksDir(e),{recursive:!0})}async readHighWaterMark(e){try{let n=(await v8(this.getHighWaterMarkPath(e),"utf-8")).trim(),o=parseInt(n,10);return Number.isNaN(o)?0:o}catch{return 0}}async writeHighWaterMark(e,n){await zI(this.getHighWaterMarkPath(e),String(n))}async findHighestTaskId(e){let n=[];try{n=await y8(this.getTasksDir(e))}catch{return 0}let o=0;for(let r of n){if(!r.endsWith(".json"))continue;let i=parseInt(r.replace(".json",""),10);!Number.isNaN(i)&&i>o&&(o=i)}return Math.max(o,await this.readHighWaterMark(e))}async createTask(e,n){await this.ensureTasksDir(e);let o=await this.findHighestTaskId(e),r=String(o+1),i={id:r,subject:n.subject,description:n.description,activeForm:n.activeForm,owner:n.owner,status:n.status??"pending",blocks:[],blockedBy:[],metadata:n.metadata};return await zI(this.getTaskPath(e,r),JSON.stringify(i,null,2)),await this.writeHighWaterMark(e,parseInt(r,10)),i}async getTask(e,n){try{let o=await v8(this.getTaskPath(e,n),"utf-8");return JSON.parse(o)}catch{return null}}async listTasks(e){let n=[];try{n=await y8(this.getTasksDir(e))}catch{return[]}let o=n.filter(i=>i.endsWith(".json")).map(i=>i.replace(".json","")).sort((i,s)=>parseInt(i,10)-parseInt(s,10));return(await Promise.all(o.map(i=>this.getTask(e,i)))).filter(i=>!!i)}async updateTask(e,n,o){let r=await this.getTask(e,n);if(!r)return null;let i={...r,...o,id:r.id};return await zI(this.getTaskPath(e,n),JSON.stringify(i,null,2)),i}async snapshot(e){return Mre(await this.listTasks(e))}};function T8(t){let e=t.displayData??{};if((e.tool==="task_create"||e.tool==="task_update")&&Array.isArray(e.taskListSnapshot))return e.taskListSnapshot}function w8(t,e){for(let n=e.length-1;n>=0;n--){let o=T8(e[n]);if(o)return o}for(let n=t.length-1;n>=0;n--){let o=t[n];if(o.type==="tool_group")for(let r=o.tools.length-1;r>=0;r--){let i=T8(o.tools[r]);if(i)return i}}}function Lre(t){let e=t?.trim();return e?[e]:[]}function Nre(t){return t[0]?.tasks??[]}function _8(t,e){let[n,o]=x8(null),[r,i]=x8(!1);return Dre(()=>{let s=Lre(t);if(i(!1),s.length===0){o(null),i(!0);return}let a=new Tv,l=!1,c=null,u=[],d=async()=>{try{let f=await Promise.all(s.map(async m=>({id:m,tasks:await a.snapshot(m)})));l||(o(Nre(f)),i(!0))}catch{l||(o([]),i(!0))}},p=()=>{c&&clearTimeout(c),c=setTimeout(()=>{d()},80)};d();for(let f of s)try{let m=Ore(a.getTasksDir(f),{persistent:!1},()=>{p()});u.push(()=>m.close())}catch{}return()=>{l=!0,c&&clearTimeout(c);for(let f of u)f()}},[t]),n!==null?n:!r&&e?e:[]}function S8(t,e,n=200,o=50){let r=e.current,i=r?t.findIndex(l=>l.id===r.id):-1,s=i>=0?i:r?Math.min(r.idx,Math.max(0,t.length-n)):0;t.length-s>n+o&&(s=t.length-n);let a=t[s];return a&&(!r||r.id!==a.id||r.idx!==s)?e.current={id:a.id,idx:s}:!a&&r&&(e.current=null),s}function Bre(t){let e=$re(4),{contentWidth:n}=t,{palette:o}=k8(),r=n>=72,i=!r&&n>=58,s;if(e[0]!==o||e[1]!==r||e[2]!==i){let u=r?[" _____ _ _____ _ "," | __ \\ | | / ____| | | "," | |__) |_ _ _ __ __| | __ _ | | ___ __| | ___ "," | ___/ _` | '_ \\ / _` |/ _` | | | / _ \\ / _` |/ _ \\"," | | | (_| | | | | (_| | (_| | | |___| (_) | (_| | __/"," |_| \\__,_|_| |_|\\__,_|\\__,_| \\_____\\___/ \\__,_|\\___|"]:i?[" _____ _ _____ _"," | __ \\ | | / ____| | |"," | |__) |_ _ _ __ | | __ _| | ___ | | ___"," | ___/ _` | '_ \\| |/ _` | | / _ \\ | |/ _ \\"," | | | (_| | | | | | (_| | |___| (_) | | | __/"," |_| \\__,_|_| |_|_|\\__,_|\\_____\\___/ |_|\\___|"]:["Panda"],d=!r&&!i;s=Zt(Vn,{width:"100%",flexDirection:"column",flexShrink:0,marginTop:1,children:u.map((p,f)=>Zt(wv,{color:o.accentInfo,bold:d,children:p},`banner-${f}`))}),e[0]=o,e[1]=r,e[2]=i,e[3]=s}else s=e[3];return s}function jre(t){let{messages:e,contentWidth:n,streamingState:o,streamingAssistantText:r="",conversationId:i=null,taskFallbackSnapshot:s,streamingApproxRef:a,transcriptMode:l=!1}=t,{currentTheme:c,palette:u}=k8(),d=jn(c,u),p=o==="Responding",f=_8(i,s),m=(o==="Responding"||o==="WaitingForConfirmation")&&f.length>0,g=qd(null),h=qd(null),y=qd(!1),v=qd(0),b=qd(i);b.current!==i&&(b.current=i,g.current=null,h.current=null,y.current=!1,v.current=0);let R=o!=="Idle",M=S8(e,g),B=M;R?(v.current=0,h.current===null&&(h.current=M),B=h.current):(y.current&&(v.current=2),v.current>0?(h.current!==null?B=h.current:B=M,v.current-=1,v.current===0&&(h.current=null)):h.current!==null&&(h.current=null)),y.current=R;let S=Ure(()=>l?e:e.slice(B),[e,B,l]),x=nv(S),T=r&&x?Fd(x):0;return Vd(Vn,{flexDirection:"column",width:"100%",flexGrow:1,minHeight:0,children:[l?null:Zt(Vn,{width:"100%",flexShrink:0,flexDirection:"column",marginBottom:1,children:Zt(Bre,{contentWidth:n})}),Vd(Vn,{width:"100%",flexDirection:"column",children:[S.length>0?S.map(A=>{let U={id:A.id,message:A};return Zt(d8,{item:U},U.id)}):null,r?Zt(Vn,{alignItems:"flex-start",flexDirection:"row",marginTop:T,width:"100%",children:Vd(Vn,{flexDirection:"row",alignItems:"flex-start",children:[Zt(Vn,{flexShrink:0,minWidth:2,children:Zt(wv,{color:u.accentSuccess,children:Xn})}),Zt(Vn,{flexShrink:0,minWidth:1,children:Zt(wv,{color:d.primaryText,children:" "})}),Zt(Vn,{flexDirection:"column",flexGrow:1,flexShrink:1,minWidth:0,children:Zt(e8,{children:r})})]})}):null]}),l?null:Vd(Vn,{flexShrink:0,width:"100%",flexDirection:"column",children:[Zt(L9,{streamingState:o,animate:p,streamingApproxRef:a}),m?Zt(Vn,{width:"100%",flexDirection:"column",marginTop:1,children:Vd(Vn,{width:"100%",flexDirection:"row",alignItems:"flex-start",children:[Zt(Vn,{flexShrink:0,minWidth:5,children:Zt(wv,{dimColor:!0,children:" \u23BF "})}),Zt(Vn,{flexGrow:1,minWidth:0,children:Zt(h8,{tasks:f,columns:Math.max(20,n)})})]})}):null]})]})}var _v=Fre(jre,(t,e)=>t.messages===e.messages&&t.contentWidth===e.contentWidth&&t.streamingState===e.streamingState&&t.streamingAssistantText===e.streamingAssistantText&&t.conversationId===e.conversationId&&t.taskFallbackSnapshot===e.taskFallbackSnapshot&&t.transcriptMode===e.transcriptMode);function zre(t,e){if(t===e)return!0;if(!t||!e||t.toolCallId!==e.toolCallId||t.questionIndex!==e.questionIndex||t.optionIndex!==e.optionIndex)return!1;let n=Object.keys(t.selectedByQuestion),o=Object.keys(e.selectedByQuestion);if(n.length!==o.length)return!1;for(let r of n){let i=t.selectedByQuestion[r],s=e.selectedByQuestion[r];if(i!==s){if(!i||!s||i.length!==s.length)return!1;for(let a=0;a<i.length;a++)if(i[a]!==s[a])return!1}}return!0}function Wre(t,e){if(t===e)return!0;let n=t??[],o=e??[];if(n.length!==o.length)return!1;for(let r=0;r<n.length;r++)if(n[r]!==o[r])return!1;return!0}function Kre(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++){let o=t[n],r=e[n];if(o.id!==r.id||o.name!==r.name||o.status!==r.status||(o.workId??"")!==(r.workId??"")||(o.renderedInHistory??!1)!==(r.renderedInHistory??!1))return!1}return!0}function Hre(t,e){if(t===e)return!0;let n=t??{},o=e??{},r=Object.keys(n),i=Object.keys(o);if(r.length!==i.length)return!1;for(let s of r){let a=n[s],l=o[s];if(!a||!l||(a.latestEvent?.text??"")!==(l.latestEvent?.text??"")||(a.lastToolSummary??"")!==(l.lastToolSummary??"")||(a.tokenCount??0)!==(l.tokenCount??0)||(a.approxStreamChars??0)!==(l.approxStreamChars??0))return!1}return!0}function Vre(t,e){let n=t??null,o=e??null;return n===o?!0:!n||!o?!1:n.historyItemId===o.historyItemId&&n.text===o.text}function I8(t,e){return t.conversationId===e.conversationId&&t.historyItems===e.historyItems&&t.pendingAssistant===e.pendingAssistant&&Vre(t.assistantStreamOverlap,e.assistantStreamOverlap)&&Kre(t.pendingToolCalls,e.pendingToolCalls)&&t.streamingState===e.streamingState&&t.contentWidth===e.contentWidth&&zre(t.askQuestionUiState,e.askQuestionUiState)&&Hre(t.subAgentFeeds,e.subAgentFeeds)&&Wre(t.queuedUserLines,e.queuedUserLines)&&!!t.queueSelectionActive==!!e.queueSelectionActive&&(t.queueSelectionIndex??-1)===(e.queueSelectionIndex??-1)}function C8(t){let e=qre(54),{conversationId:n,historyItems:o,pendingAssistant:r,assistantStreamOverlap:i,pendingToolCalls:s,streamingState:a,streamingApproxRef:l,contentWidth:c,askQuestionUiState:u,subAgentFeeds:d,queuedUserLines:p,queueSelectionActive:f,queueSelectionIndex:m}=t,g=i===void 0?null:i,h=c===void 0?56:c,y;e[0]!==d?(y=d===void 0?{}:d,e[0]=d,e[1]=y):y=e[1];let v=y,b;e[2]!==p?(b=p===void 0?[]:p,e[2]=p,e[3]=b):b=e[3];let R=b,M=f===void 0?!1:f,B=m===void 0?-1:m,S;e:{if(!g){S=o;break e}let V;if(e[4]!==g||e[5]!==o){let ae;e[7]!==g?(ae=Te=>!(Te.type==="assistant"&&Te.id===g.historyItemId),e[7]=g,e[8]=ae):ae=e[8],V=o.filter(ae),e[4]=g,e[5]=o,e[6]=V}else V=e[6];S=V}let x=S,T=r||g?.text||"",W;e:{if(!R.length){W=null;break e}let V=Math.max(20,Math.floor(h)),ae;e[9]===Symbol.for("react.memo_cache_sentinel")?(ae={kind:"plain",text:""},e[9]=ae):ae=e[9];let Te;e[10]!==V?(Te=E9(V,"\u5DF2\u6392\u961F"),e[10]=V,e[11]=Te):Te=e[11];let me;e[12]!==Te?(me={kind:"plain",text:Te},e[12]=Te,e[13]=me):me=e[13];let ne;if(e[14]!==M||e[15]!==B||e[16]!==R||e[17]!==me){let Pe;e[19]!==M||e[20]!==B?(Pe=(de,H)=>({kind:"queued_user",text:de,selected:M&&H===B}),e[19]=M,e[20]=B,e[21]=Pe):Pe=e[21],ne={id:"queued-bundle",rows:[ae,me,...R.map(Pe)]},e[14]=M,e[15]=B,e[16]=R,e[17]=me,e[18]=ne}else ne=e[18];W=ne}let A=W,U;e[22]!==u||e[23]!==h||e[24]!==x||e[25]!==s||e[26]!==a||e[27]!==v?(U=rv({historyItems:x,pendingAssistant:"",pendingToolCalls:s,streamingState:a,contentWidth:h,askQuestionUiState:u,showEmptyPlaceholder:!1,subAgentFeeds:v}),e[22]=u,e[23]=h,e[24]=x,e[25]=s,e[26]=a,e[27]=v,e[28]=U):U=e[28];let j=U,_;if(e[29]!==j.blocks||e[30]!==A){e:{let V=j.blocks;if(!A){_=V;break e}if(V.length===0){let te;e[32]!==A?(te=[A],e[32]=A,e[33]=te):te=e[33],_=te;break e}let ae=nv(V);if(!ae){let te;e[34]!==A?(te=[A],e[34]=A,e[35]=te):te=e[35],_=te;break e}let Te=Fd(ae),me=Array.from({length:Te},Jre),ne=`gap:${ae.id}>queued-bundle`,Pe;e[36]!==me||e[37]!==ne?(Pe={id:ne,rows:me},e[36]=me,e[37]=ne,e[38]=Pe):Pe=e[38];let de=Pe,H;e[39]!==V||e[40]!==de||e[41]!==A?(H=[...V,de,A],e[39]=V,e[40]=de,e[41]=A,e[42]=H):H=e[42],_=H}e[29]=j.blocks,e[30]=A,e[31]=_}else _=e[31];let $=_,N;e[43]!==o||e[44]!==s?(N=w8(o,s),e[43]=o,e[44]=s,e[45]=N):N=e[45];let K=N,E;return e[46]!==h||e[47]!==n||e[48]!==$||e[49]!==l||e[50]!==T||e[51]!==a||e[52]!==K?(E=Gre(_v,{messages:$,streamingState:a,contentWidth:h,streamingAssistantText:T,conversationId:n,taskFallbackSnapshot:K,streamingApproxRef:l}),e[46]=h,e[47]=n,e[48]=$,e[49]=l,e[50]=T,e[51]=a,e[52]=K,e[53]=E):E=e[53],E}function Jre(){return{kind:"plain",text:""}}C8.displayName="MainContent";var E8=Zre(C8,I8);import{Fragment as loe,jsx as qi,jsxs as coe}from"react/jsx-runtime";import{Box as B8,Text as uoe}from"panda-ink";function P8(t){switch(t){case"agent":return"#5a8dbb";case"ask":return"#a3be8c";case"plan":return"#e8c37e";case"office":return"#8fbcbb";case"team":return"#d65d62";default:return"#b48ead"}}function Sv(t){switch(t){case"agent":return"#4f7eb5";case"ask":return"#91b07a";case"plan":return"#ddb86a";case"office":return"#7aa89a";case"team":return"#ca5a5f";default:return"#a07a9e"}}function R8(t){let{value:e,cursorOffset:n=0,interactionMode:o="agent",running:r,modelPickerActive:i,modelPickerHint:s,modePickerActive:a,modePickerHint:l,conversationPickerActive:c,conversationPickerHint:u,teamRolesPickerActive:d,teamRolesPickerHint:p,askQuestionActive:f,askQuestionHint:m,helpPopupActive:g,debugPickerActive:h=!1,debugPickerHint:y="",pendingUserMessageCount:v}=t,b=e.length>0,R=c?"# ":d?"* ":i?"@ ":a?"+ ":h?"% ":f||g?"? ":"> ",M=c?"cyan":d?"green":i?"magenta":a?"blue":h||f?"yellow":g?"green":Sv(o),B=d?p||"\u56E2\u961F\u89D2\u8272\uFF1A\u2191/\u2193 \u9009\u62E9\uFF0CSpace \u52FE\u9009\uFF0CEnter \u4FDD\u5B58":i?s||"\u6A21\u578B\u9009\u62E9\uFF1A\u2191/\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4":c?u||"\u4F1A\u8BDD\u9009\u62E9\uFF1A\u2191/\u2193 \u9009\u62E9\uFF0CEnter \u786E\u8BA4":a?l||"\u4EA4\u4E92\u6A21\u5F0F\uFF1A\u2191/\u2193 \u6216 j/k \u9009\u62E9\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88":h?y||"\u8C03\u8BD5\u65E5\u5FD7\uFF1A\u2191/\u2193 \u6EDA\u52A8 \xB7 r \u91CD\u8F7D \xB7 Enter/Esc \u5173\u95ED":f?m||"\u95EE\u7B54\uFF1A\u2191/\u2193 \u9009\u9879 \xB7 Enter \u786E\u8BA4 \xB7 [ ] \u6362\u9898":g?"\u5E2E\u52A9 & \u4F7F\u7528\u6280\u5DE7 \u2014 \u2191/\u2193 \u5BFC\u822A \xB7 PgUp/PgDn \u7FFB\u9875 \xB7 Esc \u5173\u95ED":r?"\u7EE7\u7EED\u8F93\u5165\uFF0CEnter \u5C06\u4E0B\u4E00\u6761\u6D88\u606F\u52A0\u5165\u961F\u5217\u2026":"\u5F00\u59CB\u5BF9\u8BDD\uFF0C@ \u63D0\u53CA\u5185\u5BB9\uFF0C/ \u589E\u52A0\u547D\u4EE4\u3002? \u6216 /help \u67E5\u770B\u5E2E\u52A9",S=d||i||c||a||h||f||g?B:b?e:B,x=d||i||c||a||h||f||g||!b,T=!d&&!i&&!c&&!a&&!h&&!f&&!g&&!b,W=!d&&!i&&!c&&!a&&!h&&!f&&!g&&b,A=W?Math.max(0,Math.min(n,e.length)):0;return{hasValue:b,prefix:R,prefixColor:M,displayValue:S,contentIsDim:x,showLeadingCursorPlaceholder:T,inlineCaret:W,effectiveCursor:A,cursor:W||f||g||d||i||c||a||h?"":"\u2588"}}import{Fragment as Yre,jsx as Vo,jsxs as Gl}from"react/jsx-runtime";import{Box as kv,Text as po}from"panda-ink";var Gd="#6b7280";function Qre(t){let e=t.split(`
2093
2093
  `),n=[],o=0;for(let r=0;r<e.length;r++)n.push(o),o+=e[r].length+(r<e.length-1?1:0);return n}function A8(t){let{prefix:e,prefixColor:n,displayValue:o,contentIsDim:r,showLeadingCursorPlaceholder:i,inlineCaret:s,effectiveCursor:a,cursor:l,bodyLines:c,useMeasuredWrap:u}=t,d=o.split(`
2094
- `),p=s&&!u?Jre(o):[];return Vo(kv,{flexDirection:"column",paddingX:1,children:c.map((f,m)=>{let g=m===0?e:" ";if(u)return Gl(kv,{flexDirection:"row",children:[Vo(po,{color:n,children:g}),Vo(po,{color:r?Gd:void 0,wrap:r?"wrap":"truncate-end",children:f})]},`editor-line-${m}`);if(s){let h=p[m]??0,y=h+f.length,v=a>=h&&a<=y,b=v?a-h:-1;return Gl(kv,{flexDirection:"row",children:[Vo(po,{color:n,children:g}),v&&b>=0?Gl(po,{color:r?Gd:void 0,children:[f.slice(0,b),Vo(po,{inverse:!0,children:b<f.length?f.charAt(b):" "}),f.slice(b+1)]}):Vo(po,{color:r?Gd:void 0,children:f})]},`editor-line-${m}`)}return Gl(kv,{flexDirection:"row",children:[Vo(po,{color:n,children:g}),m===d.length-1&&i?Gl(Zre,{children:[Vo(po,{children:l}),Vo(po,{color:Gd,children:f})]}):Gl(po,{color:r?Gd:void 0,wrap:r?"wrap":void 0,children:[f,m===d.length-1&&!i?l:""]})]},`editor-line-${m}`)})})}import{jsx as KI,jsxs as Zd}from"react/jsx-runtime";import{Box as M8,Text as Yre,ThemedText as Jd}from"panda-ink";function D8(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function Qre(){let t=process.env.PANDA_DEBUG;if(!t)return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function O8(t){let{modeLabel:e,modelLabel:n,workspacePath:o="",interactionMode:r,contextMetrics:i,kMode:s}=t,a=(s??"Shift+Tab").toLowerCase(),l=Qre(),c=i?`Ctx ${Math.max(0,Math.round(i.usagePercentage))}% ${D8(i.contextTokensTotal)}/${D8(i.contextWindow)}${i.tokenSource==="usage_plus_delta"?"":"~"}`:null;return KI(M8,{marginTop:0,paddingX:1,flexDirection:"row",width:"100%",children:Zd(M8,{flexDirection:"row",flexWrap:"wrap",children:[KI(Yre,{color:P8(r),children:e}),Zd(Jd,{colorKey:"textSecondary",children:[" (",a," \u5207\u6362) \uFF5C "]}),Zd(Jd,{colorKey:"textSecondary",children:["\u6A21\u578B [",n,"]"]}),l?KI(Jd,{colorKey:"textSecondary",children:" \uFF5C [DEBUG]"}):null,o?Zd(Jd,{colorKey:"textSecondary",children:[" \uFF5C cwd ",o]}):null,c?Zd(Jd,{colorKey:"textSecondary",children:[" \uFF5C ",c]}):null]})})}import{jsx as Xre}from"react/jsx-runtime";import{Text as eoe}from"panda-ink";function L8(t){let e=Math.max(1,Math.floor(t));return"\u2500".repeat(e)}function HI(t){let{width:e,color:n,dimColor:o}=t;return Xre(eoe,{color:n,dimColor:o,children:L8(e)})}import Vi,{memo as noe}from"react";import{Box as VI,Text as Iv,stringWidth as Qs}from"panda-ink";import Yd from"string-width";function Ys(t,e){if(e<=0)return"";if(Yd(t)<=e)return t;let n="",o=0;for(let r of t){let i=Yd(r);if(o+i>e-1)return`${n}\u2026`;n+=r,o+=i}return n}function N8(t,e){if(e<=1||Yd(t)<=e)return t;let n=Math.max(1,Math.floor(e/2)-1),o=Math.max(1,e-n-1),r="",i="",s=0;for(let a of t){if(s>=n)break;r+=a,s+=Yd(a)}s=0;for(let a=t.length-1;a>=0;a--){let l=t[a];if(s>=o)break;i=l+i,s+=Yd(l)}return`${r}\u2026${i}`}function $8(t){let e=[];return t.modified&&e.push(t.modified.toISOString().slice(0,10)),t.gitBranch&&e.push(String(t.gitBranch)),t.fileSize!==void 0?e.push(`${t.fileSize} bytes`):t.messageCount!==void 0&&e.push(`${t.messageCount} messages`),e.join(" \xB7 ")||"session"}function F8(t,e,n){if(t<=0||n<=0)return{startIndex:0,endIndex:0};let o=Math.max(0,Math.min(e-Math.floor(n/2),t-n)),r=Math.min(o+n,t);return{startIndex:o,endIndex:r}}function roe(t){return t.startsWith("file-")?"+":t.startsWith("mcp-resource-")?"\u25C7":t.startsWith("agent-")?"*":"+"}function ooe(t){return t.startsWith("file-")||t.startsWith("mcp-resource-")||t.startsWith("agent-")}var ioe=noe(function(e){let{item:n,maxColumnWidth:o,isSelected:r}=e,{columns:i}=Fo();if(ooe(n.id)){let h=roe(n.id),y=r?"cyan":void 0,v=!r,b=n.id.startsWith("file-"),R=n.id.startsWith("mcp-resource-"),M=n.description?3:0,B=n.displayText;if(b){let T=n.description?Math.min(20,Qs(n.description)):0,W=i-2-4-M-T;B=N8(n.displayText,Math.max(8,W))}else R&&(B=Ys(n.displayText,30));let S=i-2-Qs(B)-M-4,x;if(n.description){let T=Math.max(0,S),W=Ys(n.description.replace(/\s+/g," "),T);x=`${h} ${B} \u2013 ${W}`}else x=`${h} ${B}`;return Vi.createElement(VI,null,Vi.createElement(Iv,{color:y,dimColor:v,wrap:"truncate"},x))}let a=Math.floor(i*.4),l=Math.min(o??Qs(n.displayText)+5,a),c=n.displayText;Qs(c)>l-2&&(c=Ys(c,l-2));let u=c+" ".repeat(Math.max(0,l-Qs(c))),d=n.tag?`[${n.tag}] `:"",p=Qs(d),f=Math.max(0,i-l-p-4),m=n.description?Ys(n.description.replace(/\s+/g," "),f):"",g=n.color||(r?"cyan":void 0);return Vi.createElement(VI,{key:n.id,flexDirection:"row"},Vi.createElement(Iv,{color:g,dimColor:!r},u),d?Vi.createElement(Iv,{dimColor:!0},d):null,Vi.createElement(Iv,{color:r?"cyan":void 0,dimColor:!r},m))});function U8(t){let{suggestions:e,selectedSuggestion:n,maxColumnWidth:o,overlay:r}=t,{rows:i}=Fo(),s=r?5:Math.min(6,Math.max(1,i-3));if(e.length===0)return null;let a=o??Math.max(...e.map(p=>Qs(p.displayText)))+5,{startIndex:l,endIndex:c}=F8(e.length,n,s),u=e.slice(l,c),d=e[n]?.id;return Vi.createElement(VI,{flexDirection:"column",justifyContent:r?void 0:"flex-end",paddingX:1},u.map(p=>Vi.createElement(ioe,{key:p.id,item:p,maxColumnWidth:a,isSelected:p.id===d})))}function j8(t){let{value:e,cursorOffset:n=0,done:o,running:r,modelLabel:i="-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",modeLabel:s="agent",interactionMode:a="agent",contextMetrics:l=null,askQuestionActive:c=!1,askQuestionHint:u="",askQuestionAllowSkipAll:d=!1,pendingUserMessageCount:p=0,queueSelectionActive:f=!1,modelPickerActive:m=!1,modelPickerHint:g="",modePickerActive:h=!1,modePickerHint:y="",teamRolesPickerActive:v=!1,teamRolesPickerHint:b="",conversationPickerActive:R=!1,conversationPickerForResume:M=!1,conversationPickerHint:B="",helpPopupActive:S=!1,debugPickerActive:x=!1,debugPickerHint:T="",workspacePath:W="",conversationTitle:A="",wrappedRenderedLines:U,vimBindingsEnabled:j=!1,vimInputMode:_="INSERT",contentWidth:$=80,typeaheadSuggestions:N=[],typeaheadSelectedSuggestion:K=-1,typeaheadMaxColumnWidth:E,typeaheadCommandArgumentHint:V}=t;if(o)return null;let ae=Math.max(1,Math.floor($)),Te=R8({value:e,cursorOffset:n,interactionMode:a,running:r,modelPickerActive:m,modelPickerHint:g,modePickerActive:h,modePickerHint:y,conversationPickerActive:R,conversationPickerHint:B,teamRolesPickerActive:v,teamRolesPickerHint:b,askQuestionActive:c,askQuestionHint:u,helpPopupActive:S,debugPickerActive:x,debugPickerHint:T,pendingUserMessageCount:p}),{prefix:me,prefixColor:ne,displayValue:Pe,contentIsDim:de,showLeadingCursorPlaceholder:H,inlineCaret:te,effectiveCursor:ee,cursor:ue}=Te,Q=Pe.split(`
2095
- `),We=!!U?.length&&!te&&!m&&!h&&!R&&!v&&!c&&!S&&!x,Qt=We?U:Q,ln=zs()?.getDisplayText("chat:toggleOperationMode","Chat"),en=m?"magenta":h?"blue":x?"yellow":v?"green":R?"cyan":c?"yellow":Sv(a);return qi(soe,{children:aoe(B8,{flexDirection:"column",marginTop:1,children:[qi(HI,{width:ae,color:en}),qi(A8,{prefix:me,prefixColor:ne,displayValue:Pe,contentIsDim:de,showLeadingCursorPlaceholder:H,inlineCaret:te,effectiveCursor:ee,cursor:ue,bodyLines:Qt,useMeasuredWrap:We}),qi(HI,{width:ae,color:en}),N.length>0?qi(U8,{suggestions:N,selectedSuggestion:K,maxColumnWidth:E}):null,V?qi(B8,{paddingX:1,children:qi(loe,{dimColor:!0,children:V})}):null,qi(O8,{modeLabel:s,modelLabel:i,workspacePath:W,interactionMode:a,contextMetrics:l,kMode:ln})]})})}import{jsx as Cv,jsxs as coe}from"react/jsx-runtime";import{Box as qI,ThemedText as z8}from"panda-ink";function W8(t){let{exitPendingHint:e="",inputTransientHint:n=""}=t;return coe(qI,{marginTop:0,flexDirection:"column",children:[e?Cv(qI,{marginTop:0,children:Cv(z8,{colorKey:"textWarning",children:e})}):null,n?Cv(qI,{marginTop:0,children:Cv(z8,{colorKey:"textWarning",children:n})}):null]})}import{jsx as Xs,jsxs as GI}from"react/jsx-runtime";import{Box as Ev,Text as Zl}from"panda-ink";function uoe(t){return t?t.replace(/\x1b\[[0-9;]*[A-Za-z]/g,"").replace(/[\u0000-\u001F\u007F]/g," ").replace(/\s+/g," ").trim():""}function K8(t){let{heading:e,hint:n,options:o,highlightedIndex:r,offset:i,viewportSize:s,selectedConversationId:a,groupTitleForTimestamp:l}=t,c=o.slice(i,i+s);return GI(Ev,{borderStyle:"round",borderColor:"cyan",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Xs(Zl,{color:"cyan",children:e??"@ \u4F1A\u8BDD\u5217\u8868"}),n?Xs(Zl,{color:"gray",children:n}):null,c.map((u,d)=>{let p=i+d,f=p===r,m=u.conversationId===a,g=o[p-1],h=l(u.updatedAt),y=g?l(g.updatedAt):null,v=p===0||y!==h,R=uoe(u.title)||"\uFF08\u65E0\u6807\u9898\uFF09",B=`${new Date(u.updatedAt).toLocaleString()} \xB7 ${u.messageCount} \u6761\u6D88\u606F`,S=`${f?">":" "} ${m?"[*]":"[ ]"} ${R}`;return GI(Ev,{flexDirection:"column",width:"100%",backgroundColor:"black",children:[v?GI(Zl,{color:"magenta",children:["[",h,"]"]}):null,Xs(Ev,{width:"100%",backgroundColor:"black",children:Xs(Zl,{color:f?"cyan":m?"green":"white",wrap:"truncate-end",children:S})}),Xs(Ev,{width:"100%",marginLeft:2,backgroundColor:"black",children:Xs(Zl,{color:"gray",wrap:"truncate-end",children:B})})]},`conversation-popup-${u.conversationId}`)}),o.length>s?Xs(Zl,{color:"gray",children:`\u663E\u793A\u7B2C ${i+1}\u2013${Math.min(i+s,o.length)} \u6761\uFF0C\u5171 ${o.length} \u6761\uFF08\u2191/\u2193 \xB7 j/k \xB7 Ctrl+N/P \xB7 PgUp/PgDn\uFF09`}):null]})}import{jsx as Qd,jsxs as Pv}from"react/jsx-runtime";import{Box as ZI,Text as Jl}from"panda-ink";var H8=t=>{let{items:e,highlightedIndex:n}=t;return e.length===0?Pv(ZI,{borderStyle:"round",borderColor:"yellow",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Qd(Jl,{color:"yellow",children:"/ TODO"}),Qd(Jl,{color:"gray",children:"\u6682\u65E0\u5F85\u529E\u4E8B\u9879\u3002\u4F7F\u7528 /todo \u4E8B\u9879\u5185\u5BB9 \u6DFB\u52A0"})]}):Pv(ZI,{borderStyle:"round",borderColor:"yellow",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Qd(Jl,{color:"yellow",children:"/ TODO - \u5F85\u53D1\u9001\u6D88\u606F\uFF08Enter \u52A0\u8F7D\u5230\u8F93\u5165\u6846\uFF09"}),Qd(Jl,{color:"gray",children:"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u9009\u62E9 \xB7 Esc \u5173\u95ED"}),e.map((o,r)=>{let i=r===n;return Pv(ZI,{flexDirection:"row",children:[Pv(Jl,{color:i?"yellow":"gray",children:[i?">":" "," "]}),Qd(Jl,{bold:i,wrap:"truncate-end",children:o.prompt})]},`todo-${r}`)})]})};import{jsx as Rv,jsxs as Av}from"react/jsx-runtime";import{Box as V8,Text as Yl}from"panda-ink";function q8(t){let{email:e,password:n,focusedField:o,submitting:r=!1,error:i}=t,s=n.length>0?"*".repeat(n.length):"";return Av(V8,{borderStyle:"round",borderColor:"cyan",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Rv(Yl,{color:"cyan",children:"# Panda \u767B\u5F55"}),Rv(Yl,{dimColor:!0,children:"\u2191/\u2193 \u5207\u6362\u5B57\u6BB5 \xB7 Enter \u63D0\u4EA4 \xB7 Esc \u53D6\u6D88 \xB7 \u652F\u6301\u7C98\u8D34"}),Av(V8,{flexDirection:"column",marginTop:1,children:[Av(Yl,{color:o==="email"?"cyan":"gray",children:[o==="email"?">":" "," \u90AE\u7BB1: ",e||"(\u8BF7\u8F93\u5165)"]}),Av(Yl,{color:o==="password"?"cyan":"gray",children:[o==="password"?">":" "," \u5BC6\u7801: ",s||"(\u8BF7\u8F93\u5165)"]})]}),r?Rv(Yl,{color:"yellow",children:"\u6B63\u5728\u767B\u5F55..."}):null,i?Rv(Yl,{color:"red",children:i}):null]})}import{jsx as Xd,jsxs as ea}from"react/jsx-runtime";import{Box as G8,Text as fo}from"panda-ink";function Z8(t){return t.length>0?"*".repeat(t.length):""}function J8(t){let{email:e,code:n,password:o,confirmPassword:r,displayName:i,focusedField:s,submitting:a=!1,error:l,success:c}=t;return ea(G8,{borderStyle:"round",borderColor:"green",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Xd(fo,{color:"green",children:"# Panda \u6CE8\u518C"}),Xd(fo,{dimColor:!0,children:"\u2191/\u2193 \u5207\u6362\u5B57\u6BB5 \xB7 Ctrl+G \u53D1\u9A8C\u8BC1\u7801 \xB7 Enter \u63D0\u4EA4\u6CE8\u518C \xB7 Esc \u53D6\u6D88"}),ea(G8,{flexDirection:"column",marginTop:1,children:[ea(fo,{color:s==="email"?"green":"gray",children:[s==="email"?">":" "," \u90AE\u7BB1: ",e||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="code"?"green":"gray",children:[s==="code"?">":" "," \u9A8C\u8BC1\u7801: ",n||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="password"?"green":"gray",children:[s==="password"?">":" "," \u5BC6\u7801: ",Z8(o)||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="confirmPassword"?"green":"gray",children:[s==="confirmPassword"?">":" "," \u786E\u8BA4\u5BC6\u7801: ",Z8(r)||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="displayName"?"green":"gray",children:[s==="displayName"?">":" "," \u6635\u79F0(\u53EF\u9009): ",i||"(\u53EF\u7559\u7A7A)"]})]}),a?Xd(fo,{color:"yellow",children:"\u6B63\u5728\u63D0\u4EA4\u6CE8\u518C..."}):null,c?Xd(fo,{color:"green",children:c}):null,l?Xd(fo,{color:"red",children:l}):null]})}import{jsx as ta,jsxs as Ql}from"react/jsx-runtime";import{Box as Xl,Text as na}from"panda-ink";function Y8(t){let{tips:e,highlightedIndex:n,offset:o,viewportSize:r}=t,i=Math.max(1,r),s=e.slice(o,o+i),a={\u4EA4\u4E92\u6A21\u5F0F:"green",\u659C\u6760\u547D\u4EE4:"blue",\u5FEB\u6377\u952E:"magenta",\u8F93\u5165\u6280\u5DE7:"cyan"},l="yellow";return Ql(Xl,{borderStyle:"round",borderColor:"green",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[ta(na,{color:"green",bold:!0,children:"? \u5E2E\u52A9 & \u4F7F\u7528\u6280\u5DE7"}),ta(na,{dimColor:!0,children:"\u2191/\u2193 \u6216 j/k \u5BFC\u822A \xB7 PgUp/PgDn \u7FFB\u9875 \xB7 Esc \u5173\u95ED"}),s.map((c,u)=>{let d=o+u,p=d===n,f=e[d-1],m=d===0||f&&f.category!==c.category,g=a[c.category]??l,h=p?"green":"white";return Ql(Xl,{flexDirection:"column",width:"100%",backgroundColor:"black",marginTop:m?1:0,children:[m?Ql(na,{color:g,bold:!0,children:["[",c.category,"]"]}):null,ta(Xl,{width:"100%",backgroundColor:"black",children:Ql(na,{color:h,wrap:"truncate-end",children:[p?"> ":" ",c.title]})}),ta(Xl,{width:"100%",marginLeft:2,backgroundColor:"black",children:ta(na,{color:"gray",wrap:"truncate-end",children:c.detail})})]},`help-tip-${c.id}`)}),e.length>i?ta(Xl,{marginTop:1,children:Ql(na,{color:"gray",children:["\u663E\u793A\u7B2C ",o+1,"\u2013",Math.min(o+i,e.length)," \u6761\uFF0C\u5171"," ",e.length," \u6761\uFF08\u2191/\u2193 \xB7 j/k \xB7 PgUp/PgDn\uFF09"]})}):ta(Xl,{marginTop:1,children:Ql(na,{color:"gray",children:["\u5171 ",e.length," \u6761"]})})]})}import{jsx as mo,jsxs as Q8}from"react/jsx-runtime";import{Box as ec,Text as tc}from"panda-ink";function X8(t){let{lines:e,offset:n,viewportSize:o,logPath:r,contentWidth:i}=t,s=Math.max(1,o),a=Math.max(0,e.length-s),l=Math.min(Math.max(0,n),a),c=e.slice(l,l+s),u=Math.min(l+c.length,e.length),d=Math.max(20,Math.floor(i));return Q8(ec,{borderStyle:"round",borderColor:"yellow",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",width:d,minWidth:0,children:[mo(tc,{color:"yellow",bold:!0,children:"% \u8C03\u8BD5\u65E5\u5FD7"}),mo(ec,{width:"100%",minWidth:0,children:mo(tc,{dimColor:!0,wrap:"wrap",children:r})}),mo(ec,{width:"100%",minWidth:0,children:mo(tc,{dimColor:!0,wrap:"wrap",children:"\u2191/\u2193 / j/k \u6EDA\u52A8 \xB7 PgUp/PgDn \u7FFB\u9875 \xB7 \u9F20\u6807\u6EDA\u8F6E \xB7 r \u91CD\u8F7D \xB7 Enter/Esc \u5173\u95ED"})}),c.map((p,f)=>{let m=l+f+1;return Q8(ec,{flexDirection:"row",width:"100%",minWidth:0,alignItems:"flex-start",backgroundColor:"black",children:[mo(tc,{color:"gray",children:`${String(m).padStart(4," ")}\u2502`}),mo(ec,{flexGrow:1,flexShrink:1,minWidth:0,children:mo(tc,{wrap:"wrap",children:p.length>0?p:" "})})]},`debug-log-${l+f}`)}),mo(ec,{marginTop:1,children:mo(tc,{color:"gray",children:e.length===0?"0 \u884C":`\u7B2C ${l+1}\u2013${u} \u884C\uFF0C\u5171 ${e.length} \u884C`})})]})}import{jsx as doe}from"react/jsx-runtime";import{useRef as poe}from"react";import{Box as foe,useTerminalViewport as moe}from"panda-ink";function nc({children:t}){let[e,{isVisible:n}]=moe(),o=poe(t);return n&&(o.current=t),doe(foe,{ref:e,children:o.current})}import{jsx as ep,jsxs as Pr}from"react/jsx-runtime";import{Box as Mv,Text as pr}from"panda-ink";function goe(t,e){if(!e?.length)return"\uFF08\u672A\u9009\uFF09";let n=t.options;return e.map(o=>pg(o,n)).join("\u3001")}function e$(t){let{title:e,allowSkipAll:n,questions:o,questionIndex:r,optionIndex:i,selectedByQuestion:s,optionNotesByQuestion:a={},noteCapture:l}=t;if(o.length===0)return null;let c=o[r]??o[0],u=o.length,d=a[c.id]??{},p=dg(c.options);return Pr(Mv,{borderStyle:"round",borderColor:"yellow",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[ep(pr,{color:"yellow",children:"? \u53D1\u8D77\u63D0\u95EE"}),e.trim()?ep(pr,{bold:!0,wrap:"truncate-end",children:e.trim()}):null,Pr(pr,{dimColor:!0,children:["\u7B2C ",r+1,"/",u," \u9898",c.required?" \xB7 \u5FC5\u9009":"",c.allowMultiple?" \xB7 \u591A\u9009\uFF08Space \u52FE\u9009\uFF0CEnter \u786E\u8BA4\u672C\u9898\uFF09":" \xB7 \u5355\u9009\uFF08Enter \u9009\u4E2D\u5E76\u7EE7\u7EED\uFF09",n?" \xB7 Esc \u53EF\u8DF3\u8FC7\u5168\u90E8":""]}),Pr(pr,{dimColor:!0,children:["\u2191/\u2193 \u9009\u9879 \xB7 \u6570\u5B57\u5B9A\u4F4D \xB7 \u805A\u7126\u300C\u5176\u4ED6\u300D\u540E\u6309 n \u5199\u8865\u5145\u8BF4\u660E \xB7 Enter \u4FDD\u5B58",c.allowMultiple?" \xB7 Space \u52FE\u9009":""," \xB7 Enter ",c.allowMultiple?r>=u-1?"\u63D0\u4EA4\u5168\u90E8":"\u4E0B\u4E00\u9898":r>=u-1?"\u63D0\u4EA4":"\u4E0B\u4E00\u9898"," \xB7 [ \u4E0A\u4E00\u9898 \xB7 ] \u4E0B\u4E00\u9898"]}),l?Pr(pr,{color:"cyan",wrap:"truncate-end",children:["\u300C\u5176\u4ED6\u300D\u8865\u5145\u8BF4\u660E: ",l.text.length?l.text:"\uFF08\u7A7A\uFF09"]}):null,o.slice(0,r).map((f,m)=>{let g=goe(f,s[f.id]);return Pr(pr,{color:"gray",dimColor:!0,wrap:"truncate-end",children:["\u2713 Q",m+1," ",f.prompt.slice(0,60),f.prompt.length>60?"\u2026":""," \u2014 ",g]},`ask-done-${f.id}`)}),Pr(Mv,{flexDirection:"column",marginTop:1,children:[ep(pr,{bold:!0,wrap:"wrap",children:c.prompt}),ep(pr,{dimColor:!0,children:"\u672B\u9879\u4E3A\u300C\u5176\u4ED6\u300D\uFF0C\u9009\u4E2D\u540E\u53EF\u586B\u8865\u5145\u8BF4\u660E"}),p.map((f,m)=>{let g=!!s[c.id]?.includes(f.id),h=i===m,y=c.allowMultiple?g?"[x]":"[ ]":g?"(*)":"( )",v=h?">":" ",b=h?"yellow":g?"cyan":"gray",R=Ti(f.id)&&d[Eo]?.trim()?d[Eo].trim():"";return Pr(Mv,{flexDirection:"column",marginBottom:0,children:[Pr(pr,{color:b,dimColor:!h&&!g,wrap:"truncate-end",children:[v," ",y," ",m+1,". ",f.label]}),f.description?.trim()?Pr(pr,{dimColor:!0,wrap:"truncate-end",children:[" ",f.description.trim()]}):null,R&&Ti(f.id)?Pr(pr,{dimColor:!0,wrap:"truncate-end",children:[" ","\u21B3 ",R]}):null]},f.id)})]}),r<u-1?ep(Mv,{marginTop:1,children:Pr(pr,{dimColor:!0,children:["\u2026 \u5C1A\u6709 ",u-r-1," \u9898"]})}):null]})}function t$(t){return{historyItems:t.historyItems}}function n$(t){return{currentTurnId:t.currentTurnId,pendingThinking:t.pendingThinking,pendingAssistant:t.pendingAssistant,pendingAssistantChunks:t.pendingAssistantChunks,assistantStreamOverlap:t.assistantStreamOverlap,pendingToolCalls:t.pendingToolCalls,subAgentFeeds:t.subAgentFeeds}}function r$(t){return{streamingState:t.streamingState,running:t.running,done:t.done,exitCode:t.exitCode,conversationActionInFlight:t.conversationActionInFlight,contextMetrics:t.contextMetrics}}import{Fragment as hoe,jsx as ke,jsxs as ze}from"react/jsx-runtime";import{Box as et,Text as Ee}from"panda-ink";var JI=["project","local","user"];function Dv(t){switch(t){case"project":return"Project MCPs";case"local":return"Local MCPs";case"user":return"User MCPs";default:return t}}function o$(t,e){return e.type==="stdio","user"}function i$(t){switch(t){case"connected":return{icon:"\u2713",color:"green",label:"connected"};case"pending":return{icon:"\u23F3",color:"yellow",label:"connecting\u2026"};case"disabled":return{icon:"\u2717",color:"gray",label:"disabled"};case"needs_auth":return{icon:"\u{1F512}",color:"yellow",label:"needs auth"};case"failed":return{icon:"\u2717",color:"red",label:"failed"};default:return{icon:"?",color:"gray",label:t}}}function yoe({scope:t}){return ke(et,{paddingLeft:2,marginTop:1,children:ke(Ee,{bold:!0,children:t})})}function voe({servers:t,highlightedIndex:e}){if(t.length===0)return ke(Ee,{dimColor:!0,children:" \uFF08\u672A\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF09"});let n=new Map;for(let s of t){let a=o$(s.name,s.config),l=Dv(a);n.has(l)||n.set(l,[]),n.get(l).push(s)}let o=[],r=0,i=[...n.entries()].sort(([s],[a])=>{let l=JI.findIndex(u=>Dv(u)===s),c=JI.findIndex(u=>Dv(u)===a);return(l>=0?l:99)-(c>=0?c:99)});for(let[s,a]of i){o.push(ke(yoe,{scope:s},`h-${s}`));for(let l of a){let c=r===e,u=i$(l.status.status==="disabled"?"disabled":l.status.status);o.push(ze(et,{children:[ke(Ee,{color:c?"cyan":void 0,children:c?"> ":" "}),ke(Ee,{color:c?"cyan":void 0,children:l.name}),ke(Ee,{dimColor:!c,children:" \xB7 "}),ke(Ee,{color:u.color,dimColor:!c,children:u.icon}),ze(Ee,{dimColor:!c,children:[" ",u.label]})]},`s-${l.name}`)),r++}}return ke(hoe,{children:o})}function boe({server:t}){let e=i$(t.status.status==="disabled"?"disabled":t.status.status),n=(()=>{let r=t.config;return r.type==="stdio"?ze(et,{flexDirection:"column",children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Type: "}),ke(Ee,{dimColor:!0,children:"stdio"})]}),ze(et,{children:[ke(Ee,{bold:!0,children:"Command: "}),ke(Ee,{dimColor:!0,children:r.command})]}),r.args&&r.args.length>0&&ze(et,{children:[ke(Ee,{bold:!0,children:"Args: "}),ke(Ee,{dimColor:!0,children:r.args.join(" ")})]})]}):r.type==="http"||r.type==="sse"?ze(et,{flexDirection:"column",children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Type: "}),ke(Ee,{dimColor:!0,children:r.type})]}),ze(et,{children:[ke(Ee,{bold:!0,children:"URL: "}),ke(Ee,{dimColor:!0,children:r.url})]})]}):ke(Ee,{dimColor:!0,children:"Unknown config type"})})(),o=t.status.status==="connected"?t.tools.length:0;return ze(et,{flexDirection:"column",paddingX:1,children:[ke(et,{marginBottom:1,children:ze(Ee,{bold:!0,children:[t.name," MCP Server"]})}),ze(et,{flexDirection:"column",marginLeft:1,children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Status: "}),ze(Ee,{color:e.color,children:[e.icon," ",e.label]}),t.status.status==="failed"&&"error"in t.status&&ze(Ee,{color:"red",children:[" (",t.status.error,")"]})]}),n,ze(et,{marginTop:1,children:[ke(Ee,{bold:!0,children:"Tools: "}),ke(Ee,{dimColor:!0,children:t.status.status==="connected"?`${o} tool(s)`:"N/A (server not connected)"})]})]}),ke(et,{marginTop:1,marginLeft:1,children:ke(Ee,{dimColor:!0,children:"\u6309 Enter \u67E5\u770B\u5DE5\u5177\u5217\u8868 \xB7 Esc \u8FD4\u56DE"})})]})}function xoe({server:t,highlightedIndex:e}){let n=t.tools;return n.length===0?ze(et,{flexDirection:"column",paddingX:1,children:[ke(et,{marginBottom:1,children:ze(Ee,{bold:!0,children:[t.name," \u2014 Tools"]})}),ke(Ee,{dimColor:!0,children:"\u8BE5\u670D\u52A1\u5668\u6CA1\u6709\u63D0\u4F9B\u4EFB\u4F55\u5DE5\u5177"})]}):ze(et,{flexDirection:"column",paddingX:1,children:[ke(et,{marginBottom:1,children:ze(Ee,{bold:!0,children:[t.name," \u2014 Tools (",n.length,")"]})}),n.map((o,r)=>{let i=r===e;return ze(et,{children:[ke(Ee,{color:i?"cyan":void 0,children:i?"> ":" "}),ke(Ee,{color:i?"cyan":void 0,children:o.displayName||o.toolName})]},o.id)}),ke(et,{marginTop:1,children:ke(Ee,{dimColor:!0,children:"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u67E5\u770B\u8BE6\u60C5 \xB7 Esc \u8FD4\u56DE"})})]})}function Toe({server:t,tool:e}){let n=(()=>{let o=e.inputSchema;if(!o||!o.properties)return null;let r=o.properties,i=o.required??[],s=Object.entries(r);return s.length===0?null:ze(et,{flexDirection:"column",marginLeft:2,marginTop:1,children:[ke(Ee,{bold:!0,children:"Parameters:"}),s.map(([a,l])=>{let c=i.includes(a),u=typeof l=="object"&&l&&"type"in l?String(l.type):"unknown",d=typeof l=="object"&&l&&"description"in l?String(l.description):null;return ze(et,{children:[ze(Ee,{children:["\xB7 ",a]}),c&&ke(Ee,{dimColor:!0,children:" (required)"}),ze(Ee,{dimColor:!0,children:[": ",u]}),d&&ze(Ee,{dimColor:!0,children:[" \u2014 ",d]})]},a)})]})})();return ze(et,{flexDirection:"column",paddingX:1,children:[ze(et,{marginBottom:1,children:[ze(Ee,{bold:!0,children:["Tool: ",e.displayName||e.toolName]}),ze(Ee,{dimColor:!0,children:[" (",t.name,")"]})]}),ze(et,{flexDirection:"column",marginLeft:1,children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Full name: "}),ke(Ee,{dimColor:!0,children:e.toolName})]}),e.description&&ze(et,{marginTop:1,flexDirection:"column",children:[ke(Ee,{bold:!0,children:"Description:"}),ke(Ee,{wrap:"wrap",children:e.description})]}),n]}),ke(et,{marginTop:1,children:ke(Ee,{dimColor:!0,children:"Esc \u8FD4\u56DE\u5DE5\u5177\u5217\u8868"})})]})}function s$(t){let{servers:e,viewState:n,highlightedIndex:o}=t,r=e.length,i=e.filter(s=>s.status.status==="connected").length;return ze(et,{borderStyle:"round",borderColor:"cyan",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[ke(Ee,{color:"cyan",bold:!0,children:"MCP \u670D\u52A1\u5668\u7BA1\u7406"}),ze(Ee,{color:"gray",children:[r," \u670D\u52A1\u5668 \xB7 ",i," \u5DF2\u8FDE\u63A5"]}),ze(et,{marginTop:1,flexDirection:"column",children:[n.mode==="server-list"&&ke(voe,{servers:e,highlightedIndex:o}),n.mode==="server-detail"&&e[n.serverIndex]&&ke(boe,{server:e[n.serverIndex]}),n.mode==="tool-list"&&e[n.serverIndex]&&ke(xoe,{server:e[n.serverIndex],highlightedIndex:o}),n.mode==="tool-detail"&&e[n.serverIndex]&&e[n.serverIndex].tools[n.toolIndex]&&ke(Toe,{server:e[n.serverIndex],tool:e[n.serverIndex].tools[n.toolIndex]})]}),ke(et,{marginTop:1,children:ze(Ee,{dimColor:!0,italic:!0,children:[n.mode==="server-list"&&"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u67E5\u770B\u8BE6\u60C5 \xB7 Esc \u9000\u51FA \xB7 \u6309 /mcp e <name> \u542F\u7528/\u7981\u7528",n.mode==="server-detail"&&"Enter \u67E5\u770B\u5DE5\u5177 \xB7 Esc \u8FD4\u56DE\u5217\u8868",n.mode==="tool-list"&&"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u67E5\u770B\u8BE6\u60C5 \xB7 Esc \u8FD4\u56DE",n.mode==="tool-detail"&&"Esc \u8FD4\u56DE\u5DE5\u5177\u5217\u8868"]})})]})}function a$(t){let{uiState:e,inputValue:n,inputCursorOffset:o=0,wrappedRenderedLines:r,inputTransientHint:i="",vimBindingsEnabled:s=!1,vimInputMode:a="INSERT",workspacePath:l,conversationId:c,contentWidth:u,conversationTitle:d,modelLabel:p,modeLabel:f,interactionMode:m,contextMetrics:g=null,streamingApproxRef:h,askQuestionActive:y,askQuestionHint:v,askQuestionAllowSkipAll:b=!1,askQuestionUiState:R,askQuestionPopup:M,modelPickerActive:B,modelPickerHint:S,modelPickerState:x,modePickerActive:T,modePickerHint:W,modePickerState:A,teamRolesPickerActive:U,teamRolesPickerHint:j,teamRolesPickerState:_,conversationPickerActive:$,conversationPickerHeading:N,conversationPickerHint:K,conversationPickerForResume:E=!1,conversationPickerState:V,exitPendingHint:ae="",typeaheadSuggestions:Te=[],typeaheadSelectedSuggestion:me=-1,typeaheadMaxColumnWidth:ne,typeaheadCommandArgumentHint:Pe,pendingUserMessageCount:de=0,queueSelectionActive:H=!1,queueSelectionIndex:te=-1,queuedUserLines:ee=[],loginPopup:ue,registerPopup:Q,helpPopupActive:We=!1,helpTipsData:Qt,helpTipsIndex:Xt=0,helpTipsOffset:ln=0,helpTipsViewportSize:en=8,mcpPanelActive:Ar=!1,mcpServers:nr=[],mcpViewState:O,mcpHighlightedIndex:w=0,todoPickerActive:z=!1,todoPickerState:D,debugPickerActive:pe=!1,debugPickerHint:Se="",debugPickerState:st}=t,ye=t$(e),Re=n$(e),Ae=r$(e);return sn(qo,{flexDirection:"column",flexShrink:0,children:[bt(qo,{flexGrow:1,flexDirection:"column",minHeight:0,paddingX:1,children:bt(E8,{conversationId:c,historyItems:ye.historyItems,pendingAssistant:Re.pendingAssistant,assistantStreamOverlap:Re.assistantStreamOverlap,pendingToolCalls:Re.pendingToolCalls,streamingState:Ae.streamingState,streamingApproxRef:h,contentWidth:u,askQuestionUiState:R,subAgentFeeds:Re.subAgentFeeds,queuedUserLines:ee,queueSelectionActive:H,queueSelectionIndex:te})}),sn(qo,{flexShrink:0,flexDirection:"column",paddingX:1,children:[y&&M&&M.questions.length>0?bt(nc,{children:bt(e$,{title:M.title,allowSkipAll:M.allowSkipAll,questions:M.questions,questionIndex:M.questionIndex,optionIndex:M.optionIndex,selectedByQuestion:M.selectedByQuestion,optionNotesByQuestion:M.optionNotesByQuestion,noteCapture:M.noteCapture})}):null,U&&_&&_.entries.length>0?bt(nc,{children:sn(qo,{borderStyle:"round",borderColor:"green",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[bt(an,{color:"green",children:"* Team roles"}),j?bt(an,{color:"gray",children:j}):null,_.entries.map((Ke,He)=>{let _t=He===_.highlightedIndex,xt=_.selectedRoleIds.includes(Ke.id);return sn(qo,{flexDirection:"row",children:[sn(an,{color:_t?"green":"gray",children:[_t?">":" "," "]}),bt(an,{color:xt?"cyan":"gray",children:xt?"[x]":"[ ]"}),sn(an,{children:[" ",Ke.label,sn(an,{color:"gray",children:[" \u2014 ",Ke.description]})]})]},`team-role-${Ke.id}`)})]})}):null,T&&A&&A.entries.length>0?sn(qo,{borderStyle:"round",borderColor:"blue",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[bt(an,{color:"blue",children:"+ \u4EA4\u4E92\u6A21\u5F0F"}),W?bt(an,{color:"gray",children:W}):null,A.entries.map((Ke,He)=>{let _t=He===A.highlightedIndex,xt=Ke.id===A.selectedMode;return sn(qo,{flexDirection:"row",children:[sn(an,{color:_t?"blue":"gray",children:[_t?">":" "," "]}),bt(an,{color:xt?"cyan":"gray",children:xt?"[*]":"[ ]"}),sn(an,{children:[" ",Ke.label,sn(an,{color:"gray",children:[" \u2014 ",Ke.description]})]})]},`mode-popup-${Ke.id}`)})]}):null,B&&x&&x.options.length>0?sn(qo,{borderStyle:"round",borderColor:"magenta",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[bt(an,{color:"magenta",children:"@ \u6A21\u578B\u9009\u62E9"}),x.options.map((Ke,He)=>{let _t=He===x.highlightedIndex,xt=Ke.id===x.selectedModelId;return sn(qo,{children:[sn(an,{color:_t?"magenta":"gray",children:[_t?">":" "," "]}),bt(an,{color:xt?"cyan":void 0,children:xt?"[*]":"[ ]"}),sn(an,{children:[" ",Ke.displayName]}),sn(an,{color:"gray",children:[" (",Ke.id,")"]})]},`model-popup-${Ke.id}`)})]}):null,$&&V&&V.options.length>0?bt(K8,{heading:N,hint:K,options:V.options,highlightedIndex:V.highlightedIndex,offset:V.offset,viewportSize:V.viewportSize,selectedConversationId:V.selectedConversationId,groupTitleForTimestamp:V.groupTitleForTimestamp}):null,z&&D?bt(H8,{items:D.items,highlightedIndex:D.highlightedIndex}):null,pe&&st?bt(X8,{lines:st.lines,offset:st.offset,viewportSize:st.viewportSize,logPath:st.logPath,contentWidth:Math.max(20,Math.floor(u??80))}):null,ue?bt(q8,{email:ue.email,password:ue.password,focusedField:ue.focusedField,submitting:ue.submitting,error:ue.error}):null,Q?bt(J8,{email:Q.email,code:Q.code,password:Q.password,confirmPassword:Q.confirmPassword,displayName:Q.displayName,focusedField:Q.focusedField,submitting:Q.submitting,error:Q.error,success:Q.success}):null,We&&Qt&&Qt.length>0?bt(Y8,{tips:Qt,highlightedIndex:Xt,offset:ln,viewportSize:en}):null,Ar&&nr&&O?bt(nc,{children:bt(s$,{servers:nr,viewState:O,highlightedIndex:w})}):null,bt(nc,{children:bt(j8,{value:n,cursorOffset:o,wrappedRenderedLines:r,vimBindingsEnabled:s,vimInputMode:a,done:Ae.done,running:Ae.running,modelLabel:p,modeLabel:f,interactionMode:m,contextMetrics:g,askQuestionActive:y,askQuestionHint:v,askQuestionAllowSkipAll:b,modelPickerActive:B,modelPickerHint:S,modePickerActive:T,modePickerHint:W,debugPickerActive:pe,debugPickerHint:Se,teamRolesPickerActive:U,teamRolesPickerHint:j,conversationPickerActive:$,conversationPickerForResume:E,conversationPickerHint:K,helpPopupActive:We,workspacePath:l,conversationTitle:d,contentWidth:Math.max(1,Math.floor(u??80)),typeaheadSuggestions:Te,typeaheadSelectedSuggestion:me,typeaheadMaxColumnWidth:ne,typeaheadCommandArgumentHint:Pe,pendingUserMessageCount:de,queueSelectionActive:H})}),bt(nc,{children:bt(W8,{workspacePath:l,conversationId:c,exitPendingHint:ae,inputTransientHint:i})})]})]})}import{AlternateScreen as Yie}from"panda-ink";import{jsx as Ov,jsxs as woe}from"react/jsx-runtime";import{useMemo as _oe,useRef as Soe}from"react";import{Box as l$,Text as koe,ScrollBox as Ioe}from"panda-ink";function c$(t){let{messages:e,contentWidth:n,streamingState:o,conversationId:r,taskFallbackSnapshot:i,streamingApproxRef:s,showAll:a=!1}=t,l=Soe(null),c=_oe(()=>e,[e,a]);return woe(l$,{flexDirection:"column",width:"100%",children:[Ov(Ioe,{ref:l,flexGrow:1,flexDirection:"column",stickyScroll:!0,children:Ov(_v,{messages:c,contentWidth:n,streamingState:o,conversationId:r,taskFallbackSnapshot:i,streamingApproxRef:s,transcriptMode:!0})}),Ov(l$,{flexShrink:0,paddingX:2,paddingY:1,children:Ov(koe,{dimColor:!0,children:"\u8BE6\u7EC6\u5BF9\u8BDD \xB7 ctrl+o \u5207\u6362 \xB7 ctrl+e \u5C55\u5F00\u5168\u90E8 \xB7 Esc/q \u9000\u51FA"})})]})}var Gi=[];function Go(t,e){return e.downArrow||e.wheelDown||e.ctrl&&Sr(t,e)==="n"?!0:t==="j"&&!e.ctrl&&!e.shift&&!e.meta&&!e.super}function Zo(t,e){return e.upArrow||e.wheelUp||e.ctrl&&Sr(t,e)==="p"?!0:t==="k"&&!e.ctrl&&!e.shift&&!e.meta&&!e.super}import{useCallback as go,useEffect as gF,useMemo as hF,useRef as Ji,useState as dC}from"react";import{useDebounceCallback as yF}from"usehooks-ts";function Wt(t){return t.userFacingName?.()??t.name}function Coe(t,e){return e.find(n=>n.name===t||Wt(n)===t||n.aliases?.includes(t))}function u$(t,e){let n=Coe(t,e);if(!n)throw new ReferenceError(`Command ${t} not found. Available commands: ${e.map(o=>{let r=Wt(o);return o.aliases?`${r} (aliases: ${o.aliases.join(", ")})`:r}).sort((o,r)=>o.localeCompare(r)).join(", ")}`);return n}function d$(t){if(t.type!=="prompt")return t.description;if(t.kind==="workflow")return`${t.description} (workflow)`;if(t.source==="plugin"){let e=t.pluginInfo?.pluginManifest.name;return e?`(${e}) ${t.description}`:`${t.description} (plugin)`}return t.source==="builtin"||t.source==="mcp"?t.description:t.source==="bundled"?`${t.description} (bundled)`:`${t.description} (${String(t.source)})`}function tp(t){return t.startsWith("!")?"bash":"prompt"}function p$(t){return tp(t)==="prompt"?t:t.slice(1)}import{useEffect as Eoe}from"react";import{createStore as Poe,useStore as Roe}from"zustand";var Aoe=new Set(["autocomplete"]),YI=Poe(()=>({activeOverlays:new Set}));function f$(t,e=!0){Eoe(()=>{if(e)return YI.setState(n=>{if(n.activeOverlays.has(t))return n;let o=new Set(n.activeOverlays);return o.add(t),{activeOverlays:o}}),()=>{YI.setState(n=>{if(!n.activeOverlays.has(t))return n;let o=new Set(n.activeOverlays);return o.delete(t),{activeOverlays:o}})}},[t,e])}function m$(){return Roe(YI,t=>{for(let e of t.activeOverlays)if(!Aoe.has(e))return!0;return!1})}function g$(t,e,n){return n}import{create as Moe}from"zustand";var ra=Moe()(()=>({mcp:{resources:{},clients:[]},promptSuggestion:null,viewingAgentTaskId:null,teamContext:null,agentNameRegistry:new Map,tasks:{},agents:[]}));function h$(){return!1}import{parse as y$,quote as v$}from"shell-quote";function fr(t){t instanceof Error?console.error(t):console.error(String(t))}function Lv(t,e){try{return{success:!0,tokens:typeof e=="function"?y$(t,e):y$(t,e)}}catch(n){return n instanceof Error&&fr(n),{success:!1,error:n instanceof Error?n.message:"Unknown parse error"}}}function Doe(t){try{let e=t.map((o,r)=>{if(o==null)return String(o);let i=typeof o;if(i==="string")return o;if(i==="number"||i==="boolean")return String(o);throw i==="object"?new Error(`Cannot quote argument at index ${r}: object values are not supported`):i==="symbol"?new Error(`Cannot quote argument at index ${r}: symbol values are not supported`):i==="function"?new Error(`Cannot quote argument at index ${r}: function values are not supported`):new Error(`Cannot quote argument at index ${r}: unsupported type ${i}`)});return{success:!0,quoted:v$(e)}}catch(e){return e instanceof Error&&fr(e),{success:!1,error:e instanceof Error?e.message:"Unknown quote error"}}}function oa(t){let e=Doe([...t]);if(e.success)return e.quoted;try{let n=t.map(o=>{if(o==null)return String(o);let r=typeof o;return r==="string"||r==="number"||r==="boolean"?String(o):JSON.stringify(o)});return v$(n)}catch(n){throw n instanceof Error&&fr(n),new Error("Failed to quote shell arguments safely")}}function b$(t){if(!t||!t.trim())return[];let e=Lv(t,n=>`$${n}`);return e.success?e.tokens.filter(n=>typeof n=="string"):t.split(/\s+/).filter(Boolean)}function x$(t,e){let n=t.slice(e.length);if(n.length!==0)return n.map(o=>`[${o}]`).join(" ")}import{spawn as Ooe}from"node:child_process";function T$(){let t=process.env.SHELL||"";return t.includes("zsh")?"zsh":t.includes("bash")?"bash":t.includes("fish")?"fish":"unknown"}async function w$(t,e,n,o){let i=Ooe(n==="zsh"?"zsh":"bash",["-lc",t],{cwd:process.cwd(),env:process.env,stdio:["ignore","pipe","pipe"]}),s="",a="";i.stdout?.setEncoding("utf8"),i.stderr?.setEncoding("utf8"),i.stdout?.on("data",p=>{s+=p}),i.stderr?.on("data",p=>{a+=p});let l=o?.timeout??3e4,c=setTimeout(()=>{i.kill("SIGKILL")},l),u=()=>{i.kill("SIGTERM")};return e.addEventListener("abort",u),{result:new Promise(p=>{i.on("close",f=>{clearTimeout(c),e.removeEventListener("abort",u),p({stdout:s,stderr:a,code:f??0})})}),kill:()=>{i.kill("SIGKILL")}}}var QI=15,Loe=1e3,Noe=["|","||","&&",";"];function S$(t){return typeof t=="object"&&t!==null&&"op"in t&&Noe.includes(t.op)}function _$(t){return t.startsWith("$")?"variable":t.includes("/")||t.startsWith("~")||t.startsWith(".")?"file":"command"}function $oe(t){let e=t.findLastIndex(n=>typeof n=="string");return e!==-1?{token:t[e],index:e}:null}function Foe(t,e){if(e===0)return!0;let n=t[e-1];return n!==void 0&&S$(n)}function Uoe(t,e){let n=t.slice(0,e),o=n.match(/\$[a-zA-Z_][a-zA-Z0-9_]*$/);if(o)return{prefix:o[0],completionType:"variable"};let r=Lv(n);if(!r.success){let l=n.split(/\s+/),c=l[l.length-1]||"",d=l.length===1&&!n.includes(" ")?"command":_$(c);return{prefix:c,completionType:d}}let i=$oe(r.tokens);if(!i){let l=r.tokens[r.tokens.length-1];return{prefix:"",completionType:(l&&S$(l),"command")}}if(n.endsWith(" "))return{prefix:"",completionType:"file"};let s=_$(i.token);if(s==="variable"||s==="file")return{prefix:i.token,completionType:s};let a=Foe(r.tokens,i.index)?"command":"file";return{prefix:i.token,completionType:a}}function Boe(t,e){if(e==="variable"){let n=t.slice(1);return`compgen -v ${oa([n])} 2>/dev/null`}else return e==="file"?`compgen -f ${oa([t])} 2>/dev/null | head -${QI} | while IFS= read -r f; do [ -d "$f" ] && echo "$f/" || echo "$f "; done`:`compgen -c ${oa([t])} 2>/dev/null`}function joe(t,e){if(e==="variable"){let n=t.slice(1);return`print -rl -- \${(k)parameters[(I)${oa([n])}*]} 2>/dev/null`}else return e==="file"?`for f in ${oa([t])}*(N[1,${QI}]); do [[ -d "$f" ]] && echo "$f/" || echo "$f "; done`:`print -rl -- \${(k)commands[(I)${oa([t])}*]} 2>/dev/null`}async function zoe(t,e,n,o){let r;if(t==="bash")r=Boe(e,n);else if(t==="zsh")r=joe(e,n);else return[];return(await(await w$(r,o,t,{timeout:Loe})).result).stdout.split(`
2096
- `).filter(a=>a.trim()).slice(0,QI).map(a=>({id:a,displayText:a,description:void 0,metadata:{completionType:n}}))}async function k$(t,e,n){let o=T$();if(o!=="bash"&&o!=="zsh")return[];try{let{prefix:r,completionType:i}=Uoe(t,e);return r?(await zoe(o,r,i,n)).map(a=>({...a,metadata:{...a.metadata,inputSnapshot:t}})):[]}catch(r){return[]}}function I$(t){return t.sessionId??""}async function C$(t,e){return[]}import Woe from"fuse.js";function XI(t){return 0}var Koe=/[:_-]/g,eC=null;function Hoe(t){if(eC?.commands===t)return eC.fuse;let e=t.filter(o=>!o.isHidden).map(o=>{let r=Wt(o),i=r.split(Koe).filter(Boolean);return{descriptionKey:(o.description??"").split(" ").map(s=>Zoe(s)).filter(Boolean),partKey:i.length>1?i:void 0,commandName:r,command:o,aliasKey:o.aliases}}),n=new Woe(e,{includeScore:!0,threshold:.3,location:0,distance:100,keys:[{name:"commandName",weight:3},{name:"partKey",weight:2},{name:"aliasKey",weight:2},{name:"descriptionKey",weight:.5}]});return eC={commands:t,fuse:n},n}function E$(t){return typeof t=="object"&&t!==null&&"name"in t&&typeof t.name=="string"&&"type"in t}function $v(t,e){if(t.startsWith("/"))return null;let o=t.slice(0,e).match(/\s\/([a-zA-Z0-9_:-]*)$/);if(!o||o.index===void 0)return null;let r=o.index+1,s=t.slice(r+1).match(/^[a-zA-Z0-9_:-]*/),a=s?s[0]:"";return e>r+1+a.length?null:{token:"/"+a,startPos:r,partialCommand:a}}function nC(t,e){if(!t)return null;let n=rC("/"+t,e);if(n.length===0)return null;let o=t.toLowerCase();for(let r of n){if(!E$(r.metadata))continue;let i=Wt(r.metadata);if(i.toLowerCase().startsWith(o)){let s=i.slice(t.length);if(s)return{suffix:s,fullCommand:i}}}return null}function Jo(t){return t.startsWith("/")}function Voe(t){return!(!Jo(t)||!t.includes(" ")||t.endsWith(" "))}function qoe(t){return`/${t} `}function Nv(t){let e=Wt(t);return t.type==="prompt"?t.source==="plugin"&&t.pluginInfo?.repository?`${e}:${t.source}:${t.pluginInfo.repository}`:`${e}:${t.source}`:`${e}:${t.type}`}function Goe(t,e){if(!(!e||e.length===0||t===""))return e.find(n=>n.toLowerCase().startsWith(t))}function tC(t,e){let n=Wt(t),o=e?` (${e})`:"",r=t.type==="prompt"&&t.kind==="workflow",i=(r?t.description:d$(t))+(t.type==="prompt"&&t.argNames?.length?` (arguments: ${t.argNames.join(", ")})`:"");return{id:Nv(t),displayText:`/${n}${o}`,tag:r?"workflow":void 0,description:i,metadata:t}}function rC(t,e){if(!Jo(t))return[];if(Voe(t))return[];let n=t.slice(1).toLowerCase().trim();if(n===""){let c=e.filter(b=>!b.isHidden),u=[],d=c.filter(b=>b.type==="prompt").map(b=>({cmd:b,score:XI(Wt(b))})).filter(b=>b.score>0).sort((b,R)=>R.score-b.score);for(let b of d.slice(0,5))u.push(b.cmd);let p=new Set(u.map(b=>Nv(b))),f=[],m=[],g=[],h=[],y=[];c.forEach(b=>{p.has(Nv(b))||(b.type==="local"||b.type==="local-jsx"?f.push(b):b.type==="prompt"&&(b.source==="userSettings"||b.source==="localSettings")?m.push(b):b.type==="prompt"&&b.source==="projectSettings"?g.push(b):b.type==="prompt"&&b.source==="policySettings"?h.push(b):y.push(b))});let v=(b,R)=>Wt(b).localeCompare(Wt(R));return f.sort(v),m.sort(v),g.sort(v),h.sort(v),y.sort(v),[...u,...f,...m,...g,...h,...y].map(b=>tC(b))}let o=e.find(c=>c.isHidden&&Wt(c).toLowerCase()===n);o&&e.some(c=>!c.isHidden&&Wt(c).toLowerCase()===n)&&(o=void 0);let l=Hoe(e).search(n).map(c=>{let u=c.item.commandName.toLowerCase(),d=c.item.aliasKey?.map(f=>f.toLowerCase())??[],p=c.item.command.type==="prompt"?XI(Wt(c.item.command)):0;return{r:c,name:u,aliases:d,usage:p}}).sort((c,u)=>{let d=c.name,p=u.name,f=c.aliases,m=u.aliases,g=d===n,h=p===n;if(g&&!h)return-1;if(h&&!g)return 1;let y=f.some(x=>x===n),v=m.some(x=>x===n);if(y&&!v)return-1;if(v&&!y)return 1;let b=d.startsWith(n),R=p.startsWith(n);if(b&&!R)return-1;if(R&&!b)return 1;if(b&&R&&d.length!==p.length)return d.length-p.length;let M=f.find(x=>x.startsWith(n)),B=m.find(x=>x.startsWith(n));if(M&&!B)return-1;if(B&&!M)return 1;if(M&&B&&M.length!==B.length)return M.length-B.length;let S=(c.r.score??0)-(u.r.score??0);return Math.abs(S)>.1?S:u.usage-c.usage}).map(c=>{let u=c.r.item.command,d=Goe(n,u.aliases);return tC(u,d)});if(o){let c=Nv(o);if(!l.some(u=>u.id===c))return[tC(o),...l]}return l}function oC(t,e,n,o,r,i){let s,a;if(typeof t=="string")s=t,a=e?u$(s,n):void 0;else{if(!E$(t.metadata))return;s=Wt(t.metadata),a=t.metadata}let l=qoe(s);o(l),r(l.length),e&&a&&(a.type!=="prompt"||(a.argNames??[]).length===0)&&i(l,!0)}function Zoe(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"")}import{readdir as L$}from"node:fs/promises";import{LRUCache as N$}from"lru-cache";import{basename as Qoe,dirname as Xoe,join as $$,sep as Uv}from"node:path";import{homedir as P$}from"node:os";import{isAbsolute as Joe,join as Yoe,normalize as rc,resolve as R$}from"node:path";var iC=null;function A$(t){iC=rc(R$(t))}function M$(){iC=null}function Zi(){return iC??process.cwd()}function Fv(t,e=Zi()){let n=t.trim();return n?n==="~"?rc(P$()):n.startsWith("~/")||n.startsWith("~\\")?rc(Yoe(P$(),n.slice(2))):Joe(n)?rc(n):rc(R$(e,n)):rc(e)}var F$=500,U$=300*1e3,D$=new N$({max:F$,ttl:U$}),O$=new N$({max:F$,ttl:U$});function B$(t,e){if(!t)return{directory:e||Zi(),prefix:""};let n=Fv(t,e);if(t.endsWith("/")||t.endsWith(Uv))return{directory:n,prefix:""};let o=Xoe(n),r=Qoe(t);return{directory:o,prefix:r}}async function eie(t){let e=D$.get(t);if(e)return e;try{let o=(await L$(t,{withFileTypes:!0})).filter(r=>r.isDirectory()&&!r.name.startsWith(".")).map(r=>({name:r.name,path:$$(t,r.name),type:"directory"})).slice(0,100);return D$.set(t,o),o}catch(n){return fr(n),[]}}async function j$(t,e={}){let{basePath:n=Zi(),maxResults:o=10}=e,{directory:r,prefix:i}=B$(t,n),s=await eie(r),a=i.toLowerCase();return s.filter(c=>c.name.toLowerCase().startsWith(a)).slice(0,o).map(c=>({id:c.path,displayText:c.name+"/",description:"directory",metadata:{type:"directory"}}))}function z$(t){return t.startsWith("~/")||t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t==="~"||t==="."||t===".."}async function tie(t,e=!1){let n=`${t}:${e}`,o=O$.get(n);if(o)return o;try{let i=(await L$(t,{withFileTypes:!0})).filter(s=>e||!s.name.startsWith(".")).map(s=>({name:s.name,path:$$(t,s.name),type:s.isDirectory()?"directory":"file"})).sort((s,a)=>s.type==="directory"&&a.type!=="directory"?-1:s.type!=="directory"&&a.type==="directory"?1:s.name.localeCompare(a.name)).slice(0,100);return O$.set(n,i),i}catch(r){return fr(r),[]}}async function W$(t,e={}){let{basePath:n=Zi(),maxResults:o=10,includeFiles:r=!0,includeHidden:i=!1}=e,{directory:s,prefix:a}=B$(t,n),l=await tie(s,i),c=a.toLowerCase(),u=l.filter(f=>!r&&f.type==="file"?!1:f.name.toLowerCase().startsWith(c)).slice(0,o),d=t.includes("/")||t.includes(Uv),p="";if(d){let f=t.lastIndexOf("/"),m=t.lastIndexOf(Uv),g=Math.max(f,m);p=t.substring(0,g+1)}return(p.startsWith("./")||p.startsWith("."+Uv))&&(p=p.slice(2)),u.map(f=>{let m=p+f.name;return{id:m,displayText:f.type==="directory"?m+"/":m,metadata:{type:f.type}}})}async function*nie(){}var sC=null,K$=0,rie=6e4;async function oie(){let t=Date.now();if(sC&&t-K$<rie)return sC;let e=[],n=new Set;try{for await(let o of nie()){if(o.display&&o.display.startsWith("!")){let r=o.display.slice(1).trim();r&&!n.has(r)&&(n.add(r),e.push(r))}if(e.length>=50)break}}catch(o){}return sC=e,K$=t,e}async function H$(t){if(!t||t.length<2||!t.trim())return null;let n=await oie();for(let o of n)if(o.startsWith(t)&&o!==t)return{fullCommand:o,suffix:o.slice(t.length)};return null}import{z as V$}from"zod";function Bv(){let t=new Set;return{subscribe(e){return t.add(e),()=>{t.delete(e)}},emit(...e){for(let n of t)n(...e)},clear(){t.clear()}}}var iie="slack_search_channels",oc=new Map,aC=new Set,sie=0,q$=Bv(),p8e=q$.subscribe,jv=null,np=null;function G$(t){return t.find(e=>e.type==="connected"&&e.name.includes("slack"))}async function aie(t,e){let n=G$(t);if(!n||n.type!=="connected")return[];try{let r=(await n.client.callTool({name:iie,arguments:{query:e,limit:20,channel_types:"public_channel,private_channel"}},void 0,{timeout:5e3})).content;if(!Array.isArray(r))return[];let i=r.filter(s=>s.type==="text").map(s=>s.text).join(`
2097
- `);return uie(cie(i))}catch{return[]}}var lie=V$.object({results:V$.string()});function cie(t){let e=t.trim();if(!e.startsWith("{"))return t;try{let n=lie.safeParse(JSON.parse(e));if(n.success)return n.data.results}catch{}return t}function uie(t){let e=[],n=new Set;for(let o of t.split(`
2098
- `)){let r=o.match(/^Name:\s*#?([a-z0-9][a-z0-9_-]{0,79})\s*$/);r&&!n.has(r[1])&&(n.add(r[1]),e.push(r[1]))}return e}function Z$(t){return G$(t)!==void 0}function die(t){let e=Math.max(t.lastIndexOf("-"),t.lastIndexOf("_"));return e>0?t.slice(0,e):t}function pie(t,e){let n,o=0;for(let[r,i]of oc)t.startsWith(r)&&r.length>o&&i.some(s=>s.startsWith(e))&&(n=i,o=r.length);return n}async function J$(t,e){if(!e)return[];let n=die(e),o=e.toLowerCase(),r=oc.get(n)??pie(n,o);if(!r)if(jv===n&&np)r=await np;else{jv=n,np=aie(t,n),r=await np,oc.set(n,r);let i=aC.size;for(let s of r)aC.add(s);aC.size!==i&&(sie++,q$.emit()),oc.size>50&&oc.delete(oc.keys().next().value),jv===n&&(jv=null,np=null)}return r.filter(i=>i.startsWith(o)).sort().slice(0,10).map(i=>({id:`slack-channel-${i}`,displayText:`#${i}`}))}var Y$="team-lead";import{execFileSync as eF}from"node:child_process";import{readdir as rF}from"node:fs/promises";import{join as vie,sep as rp}from"node:path";var zv=new Int32Array(64),Wv=class{paths=[];lowerPaths=[];charBits=new Int32Array(0);pathLens=new Uint16Array(0);topLevelCache=null;readyCount=0;loadFromFileList(e){let n=new Set,o=[];for(let r of e)r.length>0&&!n.has(r)&&(n.add(r),o.push(r));this.buildIndex(o)}loadFromFileListAsync(e){let n=()=>{},o=new Promise(i=>{n=i}),r=this.buildAsync(e,n);return{queryable:o,done:r}}async buildAsync(e,n){let o=new Set,r=[],i=performance.now();for(let a=0;a<e.length;a++){let l=e[a];l.length>0&&!o.has(l)&&(o.add(l),r.push(l)),(a&255)===255&&performance.now()-i>4&&(await X$(),i=performance.now())}this.resetArrays(r),i=performance.now();let s=!0;for(let a=0;a<r.length;a++)this.indexPath(a),(a&255)===255&&performance.now()-i>4&&(this.readyCount=a+1,s&&(n(),s=!1),await X$(),i=performance.now());this.readyCount=r.length,n()}buildIndex(e){this.resetArrays(e);for(let n=0;n<e.length;n++)this.indexPath(n);this.readyCount=e.length}resetArrays(e){let n=e.length;this.paths=e,this.lowerPaths=new Array(n),this.charBits=new Int32Array(n),this.pathLens=new Uint16Array(n),this.readyCount=0,this.topLevelCache=hie(e,100)}indexPath(e){let n=this.paths[e].toLowerCase();this.lowerPaths[e]=n;let o=n.length;this.pathLens[e]=o;let r=0;for(let i=0;i<o;i++){let s=n.charCodeAt(i);s>=97&&s<=122&&(r|=1<<s-97)}this.charBits[e]=r}search(e,n){if(n<=0)return[];if(e.length===0)return this.topLevelCache?this.topLevelCache.slice(0,n):[];let o=e!==e.toLowerCase(),r=o?e:e.toLowerCase(),i=Math.min(r.length,64),s=new Array(i),a=0;for(let b=0;b<i;b++){let R=r.charAt(b);s[b]=R;let M=R.charCodeAt(0);M>=97&&M<=122&&(a|=1<<M-97)}let l=i*24+8+32,c=[],u=-1/0,{paths:d,lowerPaths:p,charBits:f,pathLens:m,readyCount:g}=this;e:for(let b=0;b<g;b++){if((f[b]&a)!==a)continue;let R=o?d[b]:p[b],M=R.indexOf(s[0]);if(M===-1)continue;zv[0]=M;let B=0,S=0,x=M;for(let U=1;U<i;U++){if(M=R.indexOf(s[U],x+1),M===-1)continue e;zv[U]=M;let j=M-x-1;j===0?S+=4:B+=3+j*1,x=M}if(c.length===n&&l+S-B<=u)continue;let T=d[b],W=m[b],A=i*16+S-B;A+=Q$(T,zv[0],!0);for(let U=1;U<i;U++)A+=Q$(T,zv[U],!1);if(A+=Math.max(0,32-(W>>2)),c.length<n)c.push({path:T,fuzzScore:A}),c.length===n&&(c.sort((U,j)=>U.fuzzScore-j.fuzzScore),u=c[0].fuzzScore);else if(A>u){let U=0,j=c.length;for(;U<j;){let _=U+j>>1;c[_].fuzzScore<A?U=_+1:j=_}c.splice(U,0,{path:T,fuzzScore:A}),c.shift(),u=c[0].fuzzScore}}c.sort((b,R)=>R.fuzzScore-b.fuzzScore);let h=c.length,y=Math.max(h,1),v=new Array(h);for(let b=0;b<h;b++){let R=c[b].path,M=b/y,B=R.includes("test")?Math.min(M*1.05,1):M;v[b]={path:R,score:B}}return v}};function Q$(t,e,n){if(e===0)return n?8:0;let o=t.charCodeAt(e-1);return fie(o)?8:mie(o)&&gie(t.charCodeAt(e))?6:0}function fie(t){return t===47||t===92||t===45||t===95||t===46||t===32}function mie(t){return t>=97&&t<=122}function gie(t){return t>=65&&t<=90}function X$(){return new Promise(t=>setImmediate(t))}function hie(t,e){let n=new Set;for(let r of t){let i=r.length;for(let a=0;a<r.length;a++){let l=r.charCodeAt(a);if(l===47||l===92){i=a;break}}let s=r.slice(0,i);if(s.length>0&&(n.add(s),n.size>=e))break}let o=Array.from(n);return o.sort((r,i)=>{let s=r.length-i.length;return s!==0?s:r<i?-1:r>i?1:0}),o.slice(0,e).map(r=>({path:r,score:0}))}var oF=15,tF=12e3,bie=new Set(["node_modules",".git","__pycache__"]),Hv=null,Kv=null,iF=Bv(),sF=iF.subscribe;function lC(t){return t.endsWith("/")||t.endsWith(rp)}function xie(){return Hv||(Hv=new Wv),Hv}function aF(){return process.env.PANDA_TYPEAHEAD_DISABLE_FILE_INDEX==="1"}function Tie(t){try{let e=eF("git",["ls-files","--cached","-z"],{cwd:t,encoding:"utf8",maxBuffer:67108864}),n=eF("git",["ls-files","--others","--exclude-standard","-z"],{cwd:t,encoding:"utf8",maxBuffer:64*1024*1024}),o=new Set,r=[];for(let i of[e,n])if(i)for(let s of i.split("\0"))s&&!o.has(s)&&(o.add(s),r.push(s));return r}catch{return[]}}async function wie(t){let e=[],n=[""];for(;n.length>0&&e.length<tF;){let o=n.shift(),r=o?vie(t,o):t,i;try{i=await rF(r,{withFileTypes:!0})}catch{continue}for(let s of i){if(e.length>=tF)break;let a=s.name,l=o?`${o}${rp}${a}`:a;if(s.isDirectory()){if(bie.has(a))continue;n.push(l)}else s.isFile()&&e.push(l)}}return e}function nF(t){return(t.endsWith(rp)?t.slice(0,-1):t).startsWith(".")}async function _ie(){let t=Zi();try{let n=(await rF(t,{withFileTypes:!0})).map(o=>{let r=o.name;return o.isDirectory()?r+rp:r});return n.sort((o,r)=>{let i=nF(o),s=nF(r);return i!==s?i?1:-1:o.localeCompare(r,void 0,{sensitivity:"base"})}),n}catch(e){return fr(e),[]}}function Sie(t,e){return t.search(e,oF).map(o=>({id:`file-${o.path}`,displayText:o.path,metadata:{score:o.score,type:lC(o.path)?"directory":"file"}}))}function kie(t,e){return{id:`file-${t}`,displayText:t,metadata:e!==void 0?{score:e,type:lC(t)?"directory":"file"}:{type:lC(t)?"directory":"file"}}}function Iie(t){let e=new Set,n=[];for(let o of t){let r=Math.max(o.lastIndexOf("/"),o.lastIndexOf("\\"));for(;r>0;){let i=o.slice(0,r+1).replace(/\\/g,"/");e.has(i)||(e.add(i),n.push(i)),r=Math.max(o.lastIndexOf("/",r-1),o.lastIndexOf("\\",r-1))}}return n}function lF(t){if(t.length===0)return"";let e=t.map(o=>o.displayText),n=e[0];for(let o=1;o<e.length;o++){let r=e[o],i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i++;if(n=n.slice(0,i),!n)return""}return n}function Vv(){if(aF()||Kv)return;let t=Zi(),e=xie();Kv=(async()=>{try{let n=Tie(t);if(n.length===0&&(n=await wie(t)),n.length===0)return;let{done:o}=e.loadFromFileListAsync(n.concat(Iie(n)));await o,iF.emit()}finally{Kv=null}})().catch(n=>{fr(n),Kv=null})}async function cF(t,e=!1){if(!t&&!e)return[];if(aF())return[];if(t===""||t==="."||t==="./")return Vv(),(await _ie()).slice(0,oF).map(c=>kie(c));let n=Date.now();Vv();let o=t,r="."+rp;t.startsWith(r)&&(o=t.slice(2)),o.startsWith("~")&&(o=Fv(o));let i=Hv,s=i?Sie(i,o):[],a=Date.now()-n;return s.length,t.length,s}function qv(t,e,n,o,r,i){let s=typeof t=="string"?t:t.displayText,a=e.substring(0,o)+s+e.substring(o+n.length),l=o+s.length;return r(a),i(l),{newInput:a,newCursorPos:l}}import Cie from"fuse.js";import{basename as Eie}from"node:path";function uF(t){switch(t.type){case"file":return{id:`file-${t.path}`,displayText:t.displayText,description:t.description,metadata:{score:t.score,type:t.pathType??"file"}};case"mcp_resource":return{id:`mcp-resource-${t.server}__${t.uri}`,displayText:t.displayText,description:t.description};case"agent":return{id:`agent-${t.agentType}`,displayText:t.displayText,description:t.description,color:t.color}}}var cC=15,Pie=60;function dF(t){return Ys(t,Pie)}function Rie(t,e,n=!1){if(!e&&!n)return[];try{let o=t.map(i=>({type:"agent",displayText:`${i.agentType} (agent)`,description:dF(i.whenToUse),agentType:i.agentType,color:(i.agentType,void 0)}));if(!e)return o;let r=e.toLowerCase();return o.filter(i=>i.agentType.toLowerCase().includes(r)||i.displayText.toLowerCase().includes(r))}catch(o){return fr(o),[]}}async function uC(t,e,n,o=!1){if(!t&&!o)return[];let[r,i]=await Promise.all([cF(t,o),Promise.resolve(Rie(n,t,o))]),s=r.map(u=>({type:"file",displayText:u.displayText,description:u.description,path:u.displayText,filename:Eie(u.displayText),score:u.metadata?.score,pathType:u.metadata?.type})),a=Object.values(e).flat().map(u=>({type:"mcp_resource",displayText:`${u.server}:${u.uri}`,description:dF(u.description||u.name||u.uri),server:u.server,uri:u.uri,name:u.name||u.uri}));if(!t)return[...s,...a,...i].slice(0,cC).map(uF);let l=[...a,...i],c=[];for(let u of s)c.push({source:u,score:u.score??.5});if(l.length>0){let d=new Cie(l,{includeScore:!0,threshold:.6,keys:[{name:"displayText",weight:2},{name:"name",weight:3},{name:"server",weight:1},{name:"description",weight:1},{name:"agentType",weight:3}]}).search(t,{limit:cC});for(let p of d)c.push({source:p.item,score:p.score??.5})}return c.sort((u,d)=>u.score-d.score),c.slice(0,cC).map(u=>u.source).map(uF)}import Aie,{createContext as Mie,useContext as Die,useMemo as Oie}from"react";var Lie=()=>{},Nie={addNotification:Lie},pF=Mie(Nie);function fF(t){let e=Oie(()=>{let n=t.appendInfo;return{addNotification(o){!n||!o.message||n(o.message)}}},[t.appendInfo]);return Aie.createElement(pF.Provider,{value:e},t.children)}function mF(){return Die(pF)}var $ie=/^@[\p{L}\p{N}\p{M}_\-./\\()[\]~:]*/u,vF=/^[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+/u,Fie=/(@[\p{L}\p{N}\p{M}_\-./\\()[\]~:]*|[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+)$/u,Uie=/[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+$/u,Bie=/(^|\s)@([\p{L}\p{N}\p{M}_\-./\\()[\]~:]*|"[^"]*"?)$/u,pC=/(^|\s)#([a-z0-9][a-z0-9_-]*)$/;function _F(t){return typeof t=="object"&&t!==null&&"type"in t&&(t.type==="directory"||t.type==="file")}function ia(t,e,n){if(n.length===0)return-1;if(e<0)return 0;let o=t[e];if(!o)return 0;let r=n.findIndex(i=>i.id===o.id);return r>=0?r:0}function bF(t){let e=t.metadata;return e?.sessionId?`/resume ${e.sessionId}`:`/resume ${t.displayText}`}function xF(t){return t.isQuoted?t.token.slice(2).replace(/"$/,""):t.token.startsWith("@")?t.token.substring(1):t.token}function fC(t){let{displayText:e,mode:n,hasAtPrefix:o,needsQuotes:r,isQuoted:i,isComplete:s,preferFileChip:a}=t,l=s?" ":"";return a&&n!=="bash"&&s?`${Rd(e)}${l}`:i||r?n==="bash"?`"${e}"${l}`:`@"${e}"${l}`:o?n==="bash"?`${e}${l}`:`@${e}${l}`:e}function mC(t,e,n,o,r,i){let l=e.slice(0,n).lastIndexOf(" ")+1,c;i==="variable"?c="$"+t.displayText+" ":i==="command"?c=t.displayText+" ":c=t.displayText;let u=e.slice(0,l)+c+e.slice(n);o(u),r(l+c.length)}var TF=/(^|\s)@[\w-]*$/;function Gv(t,e,n,o,r,i){let s=e.slice(0,n).match(o);if(!s||s.index===void 0)return;let a=s.index+(s[1]?.length??0),l=e.slice(0,a),c=l+t.displayText+" "+e.slice(n);r(c),i(l.length+t.displayText.length+1)}var Zv=null;async function jie(t,e){try{return Zv&&Zv.abort(),Zv=new AbortController,await k$(t,e,Zv.signal)}catch{return[]}}function zie(t,e,n,o,r){let i=r?"/":" ",s=t.slice(0,n),a=t.slice(n+o),l="@"+e+i;return{newInput:s+l+a,cursorPos:s.length+l.length}}function Wie(t,e,n){let r=sa(t,e,!0)??sa(t,e,!1);if(!r)return{applied:!1,isDirectory:!1,newInput:t,cursorPos:e};let i=_F(n.metadata)&&n.metadata.type==="directory",s=zie(t,n.id,r.startPos,r.token.length,i);return{applied:!0,isDirectory:i,newInput:s.newInput,cursorPos:s.cursorPos}}function sa(t,e,n=!1){if(!t)return null;let o=t.substring(0,e);if(n){let c=/@"([^"]*)"?$/,u=o.match(c);if(u&&u.index!==void 0){let p=t.substring(e).match(/^[^"]*"?/),f=p?p[0]:"";return{token:u[0]+f,startPos:u.index,isQuoted:!0}}}if(n){let c=o.lastIndexOf("@");if(c>=0&&(c===0||/\s/.test(o[c-1]))){let u=o.substring(c),d=u.match($ie);if(d&&d[0].length===u.length){let f=t.substring(e).match(vF),m=f?f[0]:"";return{token:d[0]+m,startPos:c,isQuoted:!1}}}}let r=n?Fie:Uie,i=o.match(r);if(!i||i.index===void 0)return null;let a=t.substring(e).match(vF),l=a?a[0]:"";return{token:i[0]+l,startPos:i.index,isQuoted:!1}}function Kie(t){if(Jo(t)){let e=t.indexOf(" ");return e===-1?{commandName:t.slice(1),args:""}:{commandName:t.slice(1,e),args:t.slice(e+1)}}return null}function wF(t,e){return!t&&e.includes(" ")&&!e.endsWith(" ")}function SF({commands:t,onInputChange:e,onSubmit:n,setCursorOffset:o,input:r,cursorOffset:i,mode:s,agents:a,setSuggestionsState:l,suggestionsState:{suggestions:c,selectedSuggestion:u,commandArgumentHint:d},suppressSuggestions:p=!1,markAccepted:f,onModeChange:m}){let{addNotification:g}=mF(),h=g$("chat:thinkingToggle","Chat","Ctrl+T"),[y,v]=dC("none"),b=hF(()=>{let w=t.filter(D=>!D.isHidden);return w.length===0?void 0:Math.max(...w.map(D=>Wt(D).length))+6},[t]),[R,M]=dC(void 0),B=ra(w=>w.mcp.resources),S=ra,x=ra(w=>w.promptSuggestion),T=ra(w=>!!w.viewingAgentTaskId),W=zs(),[A,U]=dC(void 0),j=hF(()=>{if(s!=="prompt"||p)return;let w=$v(r,i);if(!w)return;let z=nC(w.partialCommand,t);if(z)return{text:z.suffix,fullCommand:z.fullCommand,insertPosition:w.startPos+1+w.partialCommand.length}},[r,i,s,t,p]),_=p?void 0:s==="prompt"?j:A,$=Ji(i);$.current=i;let N=Ji(null),K=Ji(""),E=Ji(""),V=Ji(""),ae=Ji(""),Te=Ji(c);Te.current=c;let me=Ji(null),ne=go(()=>{l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0),U(void 0)},[l]),Pe=go(async(w,z=!1)=>{N.current=w;let D=await uC(w,B,a,z);if(N.current===w){if(D.length===0){l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}l(pe=>({commandArgumentHint:void 0,suggestions:D,selectedSuggestion:ia(pe.suggestions,pe.selectedSuggestion,D)})),v(D.length>0?"file":"none"),M(void 0)}},[B,l,v,M,a]);gF(()=>(Vv(),sF(()=>{let w=N.current;w!==null&&(N.current=null,Pe(w,w===""))})),[Pe]);let de=yF(Pe,50),H=go(async w=>{ae.current=w;let z=await J$(S.getState().mcp.clients,w);ae.current===w&&(l(D=>({commandArgumentHint:void 0,suggestions:z,selectedSuggestion:ia(D.suggestions,D.selectedSuggestion,z)})),v(z.length>0?"slack-channel":"none"),M(void 0))},[l]),te=yF(H,150),ee=go(async(w,z)=>{let D=z??$.current;if(p){de.cancel(),ne();return}if(s!=="bash"&&!Jo(w)&&D>0&&/\s/.test(w[D-1]??"")){(y==="file"||y==="directory")&&(de.cancel(),ne());return}if(s==="prompt"){let ye=$v(w,D);if(ye&&nC(ye.partialCommand,t)){l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}}if(s==="bash"&&w.trim()){V.current=w;let ye=await H$(w);if(V.current!==w)return;if(ye){U({text:ye.suffix,fullCommand:ye.fullCommand,insertPosition:w.length}),l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}else U(void 0)}let pe=s!=="bash"?w.substring(0,D).match(/(^|\s)@([\w-]*)$/):null;if(pe){let ye=(pe[2]??"").toLowerCase(),Re=S.getState(),Ae=[],Ke=new Set;if(h$()&&Re.teamContext)for(let He of Object.values(Re.teamContext.teammates??{}))He.name!==Y$&&He.name.toLowerCase().startsWith(ye)&&(Ke.add(He.name),Ae.push({id:`dm-${He.name}`,displayText:`@${He.name}`,description:"send message"}));for(let[He,_t]of Re.agentNameRegistry){if(Ke.has(He)||!He.toLowerCase().startsWith(ye))continue;let xt=Re.tasks[_t]?.status;Ae.push({id:`dm-${He}`,displayText:`@${He}`,description:xt?`send message \xB7 ${xt}`:"send message"})}if(ye.length>0&&Ae.length>0){de.cancel(),l(He=>({commandArgumentHint:void 0,suggestions:Ae,selectedSuggestion:ia(He.suggestions,He.selectedSuggestion,Ae)})),v("agent"),M(void 0);return}}if(s==="prompt"){let ye=w.substring(0,D).match(pC);if(ye&&Z$(S.getState().mcp.clients)){te(ye[2]);return}else y==="slack-channel"&&(te.cancel(),ne())}let Se=w.substring(0,D).match(Bie),st=D===w.length&&D>0&&w.length>0&&w[D-1]===" ";if(s==="prompt"&&Jo(w)&&D>0){let ye=Kie(w);if(ye&&ye.commandName==="add-dir"&&ye.args){let{args:Re}=ye;if(Re.match(/\s+$/)){de.cancel(),ne();return}let Ae=await j$(Re);if(Ae.length>0){l(Ke=>({suggestions:Ae,selectedSuggestion:ia(Ke.suggestions,Ke.selectedSuggestion,Ae),commandArgumentHint:void 0})),v("directory");return}de.cancel(),ne();return}if(ye&&ye.commandName==="resume"&&ye.args!==void 0&&w.includes(" ")){let{args:Re}=ye,Ke=(await C$(Re,{limit:10})).map(He=>{let _t=I$(He);return{id:`resume-title-${_t}`,displayText:He.customTitle,description:$8(He),metadata:{sessionId:_t}}});if(Ke.length>0){l(He=>({suggestions:Ke,selectedSuggestion:ia(He.suggestions,He.selectedSuggestion,Ke),commandArgumentHint:void 0})),v("custom-title");return}ne();return}}if(s==="prompt"&&Jo(w)&&D>0&&!wF(st,w)){let ye;if(w.length>1){let Ae=w.indexOf(" "),Ke=Ae===-1?w.slice(1):w.slice(1,Ae),He=Ae!==-1&&w.slice(Ae+1).trim().length>0,_t=Ae!==-1&&w.length===Ae+1;if(Ae!==-1){let xt=t.find(Yi=>Wt(Yi)===Ke);if(xt||He){if(xt?.argumentHint&&_t)ye=xt.argumentHint;else if(xt?.type==="prompt"&&xt.argNames?.length&&w.endsWith(" ")){let Yi=w.slice(Ae+1),ic=b$(Yi);ye=x$(xt.argNames,ic)}l(()=>({commandArgumentHint:ye,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}}}let Re=rC(w,t);l(()=>({commandArgumentHint:ye,suggestions:Re,selectedSuggestion:Re.length>0?0:-1})),v(Re.length>0?"command":"none"),Re.length>0&&M(b);return}if(y==="command"?(de.cancel(),ne()):Jo(w)&&wF(st,w)&&l(ye=>ye.commandArgumentHint?{...ye,commandArgumentHint:void 0}:ye),y==="custom-title"&&ne(),y==="agent"&&Te.current.some(ye=>ye.id?.startsWith("dm-"))&&(w.substring(0,D).match(/(^|\s)@([\w-]*)$/)||ne()),Se&&s!=="bash"){let ye=sa(w,D,!0);if(ye&&ye.token.startsWith("@")){let Re=xF(ye);E.current=Re;let Ae=await W$(Re,{maxResults:10});if(E.current!==Re)return;if(Ae.length>0){l(Ke=>({suggestions:Ae,selectedSuggestion:ia(Ke.suggestions,Ke.selectedSuggestion,Ae),commandArgumentHint:void 0})),v("directory");return}if(z$(Re)){de.cancel(),l(Ke=>({...Ke,suggestions:[],selectedSuggestion:-1,commandArgumentHint:void 0})),v("none");return}if(N.current===Re)return;de(Re,!0);return}}if(y==="file"){let ye=sa(w,D,!0);if(ye){let Re=xF(ye);if(N.current===Re)return;de(Re,!1)}else de.cancel(),ne()}if(y==="shell"){let ye=Te.current[0]?.metadata?.inputSnapshot;(s!=="bash"||w!==ye)&&(de.cancel(),ne())}},[y,t,l,ne,de,te,s,p,b]);gF(()=>{me.current!==r&&(K.current!==r&&(K.current=r,N.current=null),me.current=null,ee(r))},[r,ee]);let ue=go((w,z)=>{if(Jo(r)){if(z==="enter")return de.cancel(),ne(),!1;let pe=r.indexOf(" "),Se=r.slice(0,pe+1),st=_F(w.metadata)&&w.metadata.type==="directory",ye=st?"/":" ",Re=Se+w.id+ye;return e(Re),o(Re.length),st?(l(Ae=>({...Ae,commandArgumentHint:void 0})),ee(Re,Re.length)):ne(),!0}let D=Wie(r,i,w);return D.applied?(e(D.newInput),o(D.cursorPos),de.cancel(),D.isDirectory?z==="enter"?(me.current=D.newInput,ne(),!0):(l(pe=>({...pe,commandArgumentHint:void 0})),ee(D.newInput,D.cursorPos),!0):(ne(),!0)):(de.cancel(),ne(),!0)},[r,i,de,ne,e,o,l,ee]),Q=go(async()=>{if(_){if(s==="bash"){e(_.fullCommand),o(_.fullCommand.length),U(void 0);return}let w=$v(r,i);if(w){let z=r.slice(0,w.startPos),D=r.slice(w.startPos+w.token.length),pe=z+"/"+_.fullCommand+" "+D,Se=w.startPos+1+_.fullCommand.length+1;e(pe),o(Se);return}}if(c.length>0){de.cancel(),te.cancel();let w=u===-1?0:u,z=c[w];if(y==="command"&&w<c.length)z&&(oC(z,!1,t,e,o,n),ne());else if(y==="custom-title"&&c.length>0){if(z){let D=bF(z);e(D),o(D.length),ne()}}else if(y==="directory"&&c.length>0){let D=c[w];D&&ue(D,"tab")}else if(y==="shell"&&c.length>0){let D=c[w];if(D){let pe=D.metadata;mC(D,r,i,e,o,pe?.completionType),ne()}}else if(y==="agent"&&c.length>0&&c[w]?.id?.startsWith("dm-")){let D=c[w];D&&(Gv(D,r,i,TF,e,o),ne())}else if(y==="slack-channel"&&c.length>0){let D=c[w];D&&(Gv(D,r,i,pC,e,o),ne())}else if(y==="file"&&c.length>0){let D=sa(r,i,!0);if(!D){ne();return}let pe=lF(c),Se=D.token.startsWith("@"),st;if(D.isQuoted?st=D.token.slice(2).replace(/"$/,"").length:Se?st=D.token.length-1:st=D.token.length,pe.length>st){let ye=fC({displayText:pe,mode:s,hasAtPrefix:Se,needsQuotes:!1,isQuoted:D.isQuoted,isComplete:!1}),{newInput:Re,newCursorPos:Ae}=qv(ye,r,D.token,D.startPos,e,o);ee(Re,Ae)}else if(w<c.length){let ye=c[w];if(ye){let Re=ye.displayText.includes(" "),Ae=fC({displayText:ye.displayText,mode:s,hasAtPrefix:Se,needsQuotes:Re,isQuoted:D.isQuoted,isComplete:!0,preferFileChip:s==="prompt"});qv(Ae,r,D.token,D.startPos,e,o),ne()}}}}else if(r.trim()!==""){let w,z;if(s==="bash"){w="shell";let D=await jie(r,i);if(D.length===1){let pe=D[0];if(pe){let Se=pe.metadata;mC(pe,r,i,e,o,Se?.completionType)}z=[]}else z=D}else{w="file";let D=sa(r,i,!0);if(D){let pe=D.token.startsWith("@"),Se=pe?D.token.substring(1):D.token;z=await uC(Se,B,a,pe)}else z=[]}z.length>0&&(l(D=>({commandArgumentHint:void 0,suggestions:z,selectedSuggestion:ia(D.suggestions,D.selectedSuggestion,z)})),v(w),M(void 0))}},[c,u,r,y,t,s,e,o,n,ne,i,ee,B,l,a,de,te,_,ue]),We=go(()=>{if(c.length===0)return!1;let w=u<0?0:Math.min(u,c.length-1),z=c[w];if(y==="command"&&w<c.length)return z?(oC(z,!0,t,e,o,n),de.cancel(),ne(),!0):!1;if(y==="custom-title"&&w<c.length){if(z){let D=bF(z);return e(D),o(D.length),n(D,!0),de.cancel(),ne(),!0}return!1}else if(y==="shell"&&w<c.length){let D=c[w];if(D){let pe=D.metadata;return mC(D,r,i,e,o,pe?.completionType),de.cancel(),ne(),!0}return!1}else{if(y==="agent"&&w<c.length&&z?.id?.startsWith("dm-"))return Gv(z,r,i,TF,e,o),de.cancel(),ne(),!0;if(y==="slack-channel"&&w<c.length)return z?(Gv(z,r,i,pC,e,o),te.cancel(),ne(),!0):!1;if(y==="file"&&w<c.length){let D=sa(r,i,!0);if(!D)return de.cancel(),ne(),!0;if(z){let pe=D.token.startsWith("@"),Se=z.displayText.includes(" "),st=fC({displayText:z.displayText,mode:s,hasAtPrefix:pe,needsQuotes:Se,isQuoted:D.isQuoted,isComplete:!0,preferFileChip:s==="prompt"});return qv(st,r,D.token,D.startPos,e,o),de.cancel(),ne(),!0}return!1}else if(y==="directory"&&w<c.length)return z?ue(z,"enter"):!1}return!1},[c,u,y,t,r,i,s,e,o,n,ne,de,te,ue]),Qt=go(()=>{de.cancel(),te.cancel(),ne(),me.current=r},[de,te,ne,r]),Xt=go(()=>{l(w=>({...w,selectedSuggestion:w.selectedSuggestion<=0?c.length-1:w.selectedSuggestion-1}))},[c.length,l]),ln=go(()=>{l(w=>({...w,selectedSuggestion:w.selectedSuggestion>=c.length-1?0:w.selectedSuggestion+1}))},[c.length,l]),en=c.length>0||!!_,Ar=m$();f$("autocomplete",en),gd("Autocomplete",en);function nr(w){let z=tp(w);if(z!=="prompt"&&m){m(z);let D=p$(w);e(D),o(D.length)}else e(w),o(w.length)}return{suggestions:c,selectedSuggestion:u,suggestionType:y,maxColumnWidth:R,commandArgumentHint:d,inlineGhostText:_,handleKeyDown:w=>{if(w.key==="right"&&!T){let D=x?.text,pe=x?.shownAt;if(D&&pe&&pe>0&&r===""){f(),nr(D),w.stopImmediatePropagation();return}}if(w.key==="tab"&&!w.shift){if(c.length>0||_){w.preventDefault(),Q(),w.stopImmediatePropagation();return}let D=x?.text,pe=x?.shownAt;if(D&&pe&&pe>0&&r===""&&!T){w.preventDefault(),f(),nr(D);return}r.trim()===""&&(w.preventDefault(),g({key:"thinking-toggle-hint",message:`Use ${h} to toggle thinking`,priority:"immediate",timeoutMs:3e3}));return}if(c.length>0){if(w.key==="escape"&&!Ar){w.preventDefault(),Qt(),w.stopImmediatePropagation();return}if(w.key==="up"){w.preventDefault(),Xt(),w.stopImmediatePropagation();return}if(w.key==="down"){w.preventDefault(),ln(),w.stopImmediatePropagation();return}}if(c.length===0)return;let z=W?.pendingChord!=null;if(w.ctrl&&w.key==="n"&&!z){w.preventDefault(),ln();return}if(w.ctrl&&w.key==="p"&&!z){w.preventDefault(),Xt();return}w.key==="return"&&!w.shift&&!w.meta&&(w.preventDefault(),We()&&w.stopImmediatePropagation())}}}var gC=[{type:"local",name:"vim",description:"\u5207\u6362 Vim \u952E\u4F4D\uFF08\u4E0E Ctrl+Shift+Y \u76F8\u540C\uFF09"},{type:"local",name:"new",description:"\u65B0\u5EFA\u4F1A\u8BDD"},{type:"local",name:"clear",description:"\u65B0\u5EFA\u4F1A\u8BDD\uFF08\u522B\u540D\uFF0C\u4E0E /new \u76F8\u540C\uFF09"},{type:"local",name:"session",description:"\u6253\u5F00\u4F1A\u8BDD\u5217\u8868\uFF08\u522B\u540D\uFF0C\u4E0E /conversations \u76F8\u540C\uFF09"},{type:"local",name:"conversations",description:"\u6253\u5F00\u4F1A\u8BDD\u5217\u8868\uFF0C\u9009\u62E9\u5E76\u5207\u6362\u4F1A\u8BDD"},{type:"local",name:"resume",description:"\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF08\u4E0E\u4F1A\u8BDD\u5217\u8868\u76F8\u540C\uFF1B\u53EF /resume <\u5E8F\u53F7|conversationId>\uFF09"},{type:"local",name:"switch",description:"\u5207\u6362\u4F1A\u8BDD\uFF1A/switch <\u5217\u8868\u5E8F\u53F7|conversationId>"},{type:"local",name:"model",description:"\u5237\u65B0\u6A21\u578B\u5217\u8868\u5E76\u6253\u5F00\u6A21\u578B\u9009\u62E9\u5668\uFF08\u53EF\u8DDF\u6A21\u578B id\uFF09"},{type:"local",name:"auth",description:"\u7EDF\u4E00\u8BA4\u8BC1\u5165\u53E3\uFF1A/auth <login|register|logout|whoami>"},{type:"local",name:"register",description:"\u6CE8\u518C Panda \u8D26\u53F7\uFF08\u90AE\u7BB1\u9A8C\u8BC1\u7801 + \u5BC6\u7801\uFF09"},{type:"local",name:"login",description:"\u767B\u5F55 Panda \u8D26\u53F7\uFF08\u7528\u6237\u540D/\u90AE\u7BB1 + \u5BC6\u7801\uFF09"},{type:"local",name:"logout",description:"\u9000\u51FA\u5F53\u524D Panda \u767B\u5F55"},{type:"local",name:"whoami",description:"\u663E\u793A\u5F53\u524D\u767B\u5F55\u7528\u6237\u4FE1\u606F"},{type:"local",name:"mode",description:"\u6253\u5F00\u4EA4\u4E92\u6A21\u5F0F\u9009\u62E9\u5668\uFF1B\u4E5F\u53EF /mode <agent|ask|plan|office|team> \u76F4\u63A5\u5207\u6362"},{type:"local",name:"team",description:"\u6253\u5F00\u5B50 Agent \u89D2\u8272\u9009\u62E9\uFF08\u975E team \u6A21\u5F0F\u65F6\u4F1A\u5148\u5207\u6362\u5230 team\uFF09"},{type:"local",name:"mcp",description:"\u7BA1\u7406 MCP \u670D\u52A1\u5668",argumentHint:"[list|enable <name>|disable <name>]"},{type:"local",name:"fork",description:"\u57FA\u4E8E\u5F53\u524D\u5BF9\u8BDD\u521B\u5EFA\u5206\u53C9\u4F1A\u8BDD\uFF08\u4FDD\u7559\u5386\u53F2\uFF0C\u65B0\u4F1A\u8BDD ID \u7EE7\u7EED\uFF09"},{type:"local",name:"compact",description:"\u538B\u7F29\u5BF9\u8BDD\u4E0A\u4E0B\u6587\uFF08\u6458\u8981\u5386\u53F2\uFF0C\u964D\u4F4E token \u5360\u7528\uFF09"},{type:"local",name:"commit",description:"\u63D0\u4EA4\u5F53\u524D\u5DE5\u4F5C\u533A\u53D8\u66F4\uFF08\u751F\u6210\u5E76\u6267\u884C git commit\uFF09"},{type:"local",name:"update",description:"\u68C0\u67E5\u5E76\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\uFF08\u53EF\u5E26\u53C2\u6570: --check, --yes\uFF09"},{type:"local",name:"help",description:"\u663E\u793A\u5E2E\u52A9\u548C\u4F7F\u7528\u6280\u5DE7\uFF08? \u952E\u540C\u6548\uFF09",aliases:["?"]},{type:"local",name:"todo",description:"\u67E5\u770B/\u7BA1\u7406\u5F85\u529E\u4E8B\u9879\u3002\u7EAF /todo \u6253\u5F00\u5217\u8868\uFF0C/todo \u4E8B\u9879 \u6DFB\u52A0\u65B0\u7684\u5F85\u529E\u9879"},{type:"local",name:"debug",description:"\u67E5\u770B\u4F1A\u8BDD\u8C03\u8BD5\u65E5\u5FD7\u8DEF\u5F84\u6216\u5386\u53F2\u6587\u4EF6\u5185\u5BB9\uFF08~/.panda/debug/<workspace>/<conversation>.log\uFF09\uFF1B/debug clear \u6E05\u7A7A\u8BE5\u6587\u4EF6\u3002\u8FD0\u884C\u65F6\u4E0D\u518D\u81EA\u52A8\u5199\u5165\u6B64\u6587\u4EF6"},{type:"local",name:"testdiff",description:"\u8C03\u8BD5 diff \u80CC\u666F\u8272\u8FDE\u7EED\u6027\uFF1A\u5728\u804A\u5929\u4E2D\u6E32\u67D3\u591A\u79CD diff \u6392\u7248\u6837\u5F0F"}];function kF(t){return new Set(t.filter(e=>e.type==="local"||e.type==="local-jsx").map(e=>Wt(e).toLowerCase()))}function IF(t,e){return t.filter(n=>!e.has(n.name.toLowerCase())).map(n=>({type:"prompt",name:n.name,description:n.description,source:n.source==="project"?"localSettings":"userSettings",argNames:[]}))}function CF(t,e,n){let o=/^\/([^\s]+)(?:\s+(.*))?$/s.exec(t);if(!o)return null;let r=o[1]??"",i=o[2]??"",s=r.toLowerCase();if(n.has(s))return null;let a=e.find(l=>l.name.toLowerCase()===s);return a?{skillName:a.name,tail:i}:null}function EF(t){if(!t.startsWith("/"))return!1;let e=t.indexOf(" ");switch((e===-1?t:t.slice(0,e)).toLowerCase()){case"/new":case"/clear":case"/conversations":case"/session":case"/resume":case"/switch":case"/fork":case"/model":case"/login":case"/logout":case"/whoami":case"/mode":case"/team":case"/mcp":return!0;default:return!1}}var Jv=240;function PF(t){if(t.kind==="conversation_action"){let o=t.displayLabel??t.actionId;return o.length<=Jv?o:`${o.slice(0,Jv)}\u2026`}let n=xs(t.displayContent??t.prompt).trim().replace(/\s+/g," ");return n.length<=Jv?n||"\uFF08\u7A7A\u6D88\u606F\uFF09":`${n.slice(0,Jv)}\u2026`}var Yv=[{id:"shortcut-submit",title:"Enter \u2014 \u63D0\u4EA4\u8F93\u5165",detail:"\u5C06\u5F53\u524D\u8F93\u5165\u63D0\u4EA4\u7ED9\u6A21\u578B\u3002\u6A21\u578B\u5904\u7406\u4E2D\u6309 Enter \u5219\u5C06\u6D88\u606F\u52A0\u5165\u961F\u5217\u3002"},{id:"shortcut-newline",title:"Shift+Enter \u2014 \u6362\u884C",detail:"\u5728\u8F93\u5165\u4E2D\u63D2\u5165\u6362\u884C\u3002\u7528\u4E8E\u591A\u884C\u8F93\u5165\u3002"},{id:"shortcut-esc",title:"Esc \u2014 \u4E2D\u65AD / \u6E05\u7A7A",detail:"\u6A21\u578B\u8FD0\u884C\u65F6\uFF1A\u53CC\u51FB Esc \u4E2D\u65AD\u5F53\u524D\u56DE\u5408\u3002\u7A7A\u95F2\u65F6\uFF1A\u53CC\u51FB Esc \u6E05\u7A7A\u8F93\u5165\u3002"},{id:"shortcut-thinking",title:"Ctrl+T \u2014 \u601D\u8003\u5C55\u5F00/\u6298\u53E0",detail:"\u5207\u6362\u6A21\u578B\u601D\u8003\u5185\u5BB9\u7684\u663E\u793A\u6A21\u5F0F\u3002\u6298\u53E0\u4E3A\u5355\u884C\uFF0C\u5C55\u5F00\u53EF\u67E5\u770B\u5B8C\u6574\u63A8\u7406\u3002"},{id:"shortcut-vim-toggle",title:"Ctrl+Shift+Y \u2014 Vim \u6A21\u5F0F\u5207\u6362",detail:"\u5207\u6362 Vim \u952E\u4F4D\u3002\u540C /vim \u547D\u4EE4\u3002"},{id:"shortcut-bottom",title:"Ctrl+Shift+E \u2014 \u56DE\u5230\u5E95\u90E8",detail:"\u5C06\u5BF9\u8BDD\u6EDA\u52A8\u56DE\u6700\u5E95\u90E8\uFF08\u6700\u65B0\u6D88\u606F\uFF09\u3002"},{id:"shortcut-image-paste",title:"Ctrl+V / Alt+V \u2014 \u8D34\u56FE",detail:"\u5C06\u526A\u8D34\u677F\u4E2D\u7684\u56FE\u7247\u7C98\u8D34\u5230\u8F93\u5165\u4E2D\uFF08\u975E Windows: Ctrl+V\uFF1BWindows: Alt+V\uFF09\u3002\u652F\u6301 PNG \u683C\u5F0F\u3002"},{id:"shortcut-history-up",title:"\u2191 \u2014 \u5386\u53F2\u8F93\u5165",detail:"\u5411\u4E0A\u6D4F\u89C8\u5386\u53F2\u8F93\u5165\u8BB0\u5F55\u3002Ctrl+P \u540C\u6548\u3002"},{id:"shortcut-history-down",title:"\u2193 \u2014 \u5386\u53F2\u8F93\u5165",detail:"\u5411\u4E0B\u6D4F\u89C8\u5386\u53F2\u8F93\u5165\u8BB0\u5F55\u3002Ctrl+N \u540C\u6548\u3002"},{id:"shortcut-line-head",title:"Ctrl+A / Home \u2014 \u884C\u9996",detail:"\u8DF3\u8F6C\u5230\u5F53\u524D\u884C\u7684\u5F00\u5934\u3002"},{id:"shortcut-line-end",title:"Ctrl+E / End \u2014 \u884C\u5C3E",detail:"\u8DF3\u8F6C\u5230\u5F53\u524D\u884C\u7684\u672B\u5C3E\u3002"},{id:"shortcut-word-left",title:"Ctrl+B / \u2190 \u2014 \u6309\u5B57\u5DE6\u79FB",detail:"\u5C06\u5149\u6807\u5411\u5DE6\u79FB\u52A8\u4E00\u4E2A\u5B57\u3002"},{id:"shortcut-word-right",title:"Ctrl+F / \u2192 \u2014 \u6309\u5B57\u53F3\u79FB",detail:"\u5C06\u5149\u6807\u5411\u53F3\u79FB\u52A8\u4E00\u4E2A\u5B57\u3002"},{id:"shortcut-scroll-up",title:"Ctrl+U / PgUp \u2014 \u4E0A\u7FFB\u9875",detail:"\u5BF9\u8BDD\u533A\u5411\u4E0A\u7FFB\u9875\u3002"},{id:"shortcut-scroll-down",title:"Ctrl+D / PgDn \u2014 \u4E0B\u7FFB\u9875",detail:"\u5BF9\u8BDD\u533A\u5411\u4E0B\u7FFB\u9875\u3002"}];import{useCallback as Qv,useEffect as hC,useMemo as Hie,useRef as RF,useState as Xv}from"react";function AF(t){return t?t.replace(/\r\n/g,`
2094
+ `),p=s&&!u?Qre(o):[];return Vo(kv,{flexDirection:"column",paddingX:1,children:c.map((f,m)=>{let g=m===0?e:" ";if(u)return Gl(kv,{flexDirection:"row",children:[Vo(po,{color:n,children:g}),Vo(po,{color:r?Gd:void 0,wrap:r?"wrap":"truncate-end",children:f})]},`editor-line-${m}`);if(s){let h=p[m]??0,y=h+f.length,v=a>=h&&a<=y,b=v?a-h:-1;return Gl(kv,{flexDirection:"row",children:[Vo(po,{color:n,children:g}),v&&b>=0?Gl(po,{color:r?Gd:void 0,children:[f.slice(0,b),Vo(po,{inverse:!0,children:b<f.length?f.charAt(b):" "}),f.slice(b+1)]}):Vo(po,{color:r?Gd:void 0,children:f})]},`editor-line-${m}`)}return Gl(kv,{flexDirection:"row",children:[Vo(po,{color:n,children:g}),m===d.length-1&&i?Gl(Yre,{children:[Vo(po,{children:l}),Vo(po,{color:Gd,children:f})]}):Gl(po,{color:r?Gd:void 0,wrap:r?"wrap":void 0,children:[f,m===d.length-1&&!i?l:""]})]},`editor-line-${m}`)})})}import{jsx as KI,jsxs as Zd}from"react/jsx-runtime";import{Box as M8,Text as Xre,ThemedText as Jd}from"panda-ink";function D8(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function eoe(){let t=process.env.PANDA_DEBUG;if(!t)return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function O8(t){let{modeLabel:e,modelLabel:n,workspacePath:o="",interactionMode:r,contextMetrics:i,kMode:s}=t,a=(s??"Shift+Tab").toLowerCase(),l=eoe(),c=i?`Ctx ${Math.max(0,Math.round(i.usagePercentage))}% ${D8(i.contextTokensTotal)}/${D8(i.contextWindow)}${i.tokenSource==="usage_plus_delta"?"":"~"}`:null;return KI(M8,{marginTop:0,paddingX:1,flexDirection:"row",width:"100%",children:Zd(M8,{flexDirection:"row",flexWrap:"wrap",children:[KI(Xre,{color:P8(r),children:e}),Zd(Jd,{colorKey:"textSecondary",children:[" (",a," \u5207\u6362) \uFF5C "]}),Zd(Jd,{colorKey:"textSecondary",children:["\u6A21\u578B [",n,"]"]}),l?KI(Jd,{colorKey:"textSecondary",children:" \uFF5C [DEBUG]"}):null,o?Zd(Jd,{colorKey:"textSecondary",children:[" \uFF5C cwd ",o]}):null,c?Zd(Jd,{colorKey:"textSecondary",children:[" \uFF5C ",c]}):null]})})}import{jsx as toe}from"react/jsx-runtime";import{Text as noe}from"panda-ink";function L8(t){let e=Math.max(1,Math.floor(t));return"\u2500".repeat(e)}function HI(t){let{width:e,color:n,dimColor:o}=t;return toe(noe,{color:n,dimColor:o,children:L8(e)})}import Vi,{memo as ooe}from"react";import{Box as VI,Text as Iv,stringWidth as Qs}from"panda-ink";import Yd from"string-width";function Ys(t,e){if(e<=0)return"";if(Yd(t)<=e)return t;let n="",o=0;for(let r of t){let i=Yd(r);if(o+i>e-1)return`${n}\u2026`;n+=r,o+=i}return n}function N8(t,e){if(e<=1||Yd(t)<=e)return t;let n=Math.max(1,Math.floor(e/2)-1),o=Math.max(1,e-n-1),r="",i="",s=0;for(let a of t){if(s>=n)break;r+=a,s+=Yd(a)}s=0;for(let a=t.length-1;a>=0;a--){let l=t[a];if(s>=o)break;i=l+i,s+=Yd(l)}return`${r}\u2026${i}`}function $8(t){let e=[];return t.modified&&e.push(t.modified.toISOString().slice(0,10)),t.gitBranch&&e.push(String(t.gitBranch)),t.fileSize!==void 0?e.push(`${t.fileSize} bytes`):t.messageCount!==void 0&&e.push(`${t.messageCount} messages`),e.join(" \xB7 ")||"session"}function F8(t,e,n){if(t<=0||n<=0)return{startIndex:0,endIndex:0};let o=Math.max(0,Math.min(e-Math.floor(n/2),t-n)),r=Math.min(o+n,t);return{startIndex:o,endIndex:r}}function ioe(t){return t.startsWith("file-")?"+":t.startsWith("mcp-resource-")?"\u25C7":t.startsWith("agent-")?"*":"+"}function soe(t){return t.startsWith("file-")||t.startsWith("mcp-resource-")||t.startsWith("agent-")}var aoe=ooe(function(e){let{item:n,maxColumnWidth:o,isSelected:r}=e,{columns:i}=Fo();if(soe(n.id)){let h=ioe(n.id),y=r?"cyan":void 0,v=!r,b=n.id.startsWith("file-"),R=n.id.startsWith("mcp-resource-"),M=n.description?3:0,B=n.displayText;if(b){let T=n.description?Math.min(20,Qs(n.description)):0,W=i-2-4-M-T;B=N8(n.displayText,Math.max(8,W))}else R&&(B=Ys(n.displayText,30));let S=i-2-Qs(B)-M-4,x;if(n.description){let T=Math.max(0,S),W=Ys(n.description.replace(/\s+/g," "),T);x=`${h} ${B} \u2013 ${W}`}else x=`${h} ${B}`;return Vi.createElement(VI,null,Vi.createElement(Iv,{color:y,dimColor:v,wrap:"truncate"},x))}let a=Math.floor(i*.4),l=Math.min(o??Qs(n.displayText)+5,a),c=n.displayText;Qs(c)>l-2&&(c=Ys(c,l-2));let u=c+" ".repeat(Math.max(0,l-Qs(c))),d=n.tag?`[${n.tag}] `:"",p=Qs(d),f=Math.max(0,i-l-p-4),m=n.description?Ys(n.description.replace(/\s+/g," "),f):"",g=n.color||(r?"cyan":void 0);return Vi.createElement(VI,{key:n.id,flexDirection:"row"},Vi.createElement(Iv,{color:g,dimColor:!r},u),d?Vi.createElement(Iv,{dimColor:!0},d):null,Vi.createElement(Iv,{color:r?"cyan":void 0,dimColor:!r},m))});function U8(t){let{suggestions:e,selectedSuggestion:n,maxColumnWidth:o,overlay:r}=t,{rows:i}=Fo(),s=r?5:Math.min(6,Math.max(1,i-3));if(e.length===0)return null;let a=o??Math.max(...e.map(p=>Qs(p.displayText)))+5,{startIndex:l,endIndex:c}=F8(e.length,n,s),u=e.slice(l,c),d=e[n]?.id;return Vi.createElement(VI,{flexDirection:"column",justifyContent:r?void 0:"flex-end",paddingX:1},u.map(p=>Vi.createElement(aoe,{key:p.id,item:p,maxColumnWidth:a,isSelected:p.id===d})))}function j8(t){let{value:e,cursorOffset:n=0,done:o,running:r,modelLabel:i="-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",modeLabel:s="agent",interactionMode:a="agent",contextMetrics:l=null,askQuestionActive:c=!1,askQuestionHint:u="",askQuestionAllowSkipAll:d=!1,pendingUserMessageCount:p=0,queueSelectionActive:f=!1,modelPickerActive:m=!1,modelPickerHint:g="",modePickerActive:h=!1,modePickerHint:y="",teamRolesPickerActive:v=!1,teamRolesPickerHint:b="",conversationPickerActive:R=!1,conversationPickerForResume:M=!1,conversationPickerHint:B="",helpPopupActive:S=!1,debugPickerActive:x=!1,debugPickerHint:T="",workspacePath:W="",conversationTitle:A="",wrappedRenderedLines:U,vimBindingsEnabled:j=!1,vimInputMode:_="INSERT",contentWidth:$=80,typeaheadSuggestions:N=[],typeaheadSelectedSuggestion:K=-1,typeaheadMaxColumnWidth:E,typeaheadCommandArgumentHint:V}=t;if(o)return null;let ae=Math.max(1,Math.floor($)),Te=R8({value:e,cursorOffset:n,interactionMode:a,running:r,modelPickerActive:m,modelPickerHint:g,modePickerActive:h,modePickerHint:y,conversationPickerActive:R,conversationPickerHint:B,teamRolesPickerActive:v,teamRolesPickerHint:b,askQuestionActive:c,askQuestionHint:u,helpPopupActive:S,debugPickerActive:x,debugPickerHint:T,pendingUserMessageCount:p}),{prefix:me,prefixColor:ne,displayValue:Pe,contentIsDim:de,showLeadingCursorPlaceholder:H,inlineCaret:te,effectiveCursor:ee,cursor:ue}=Te,Q=Pe.split(`
2095
+ `),We=!!U?.length&&!te&&!m&&!h&&!R&&!v&&!c&&!S&&!x,Qt=We?U:Q,ln=zs()?.getDisplayText("chat:toggleOperationMode","Chat"),en=m?"magenta":h?"blue":x?"yellow":v?"green":R?"cyan":c?"yellow":Sv(a);return qi(loe,{children:coe(B8,{flexDirection:"column",marginTop:1,children:[qi(HI,{width:ae,color:en}),qi(A8,{prefix:me,prefixColor:ne,displayValue:Pe,contentIsDim:de,showLeadingCursorPlaceholder:H,inlineCaret:te,effectiveCursor:ee,cursor:ue,bodyLines:Qt,useMeasuredWrap:We}),qi(HI,{width:ae,color:en}),N.length>0?qi(U8,{suggestions:N,selectedSuggestion:K,maxColumnWidth:E}):null,V?qi(B8,{paddingX:1,children:qi(uoe,{dimColor:!0,children:V})}):null,qi(O8,{modeLabel:s,modelLabel:i,workspacePath:W,interactionMode:a,contextMetrics:l,kMode:ln})]})})}import{jsx as Cv,jsxs as doe}from"react/jsx-runtime";import{Box as qI,ThemedText as z8}from"panda-ink";function W8(t){let{exitPendingHint:e="",inputTransientHint:n=""}=t;return doe(qI,{marginTop:0,flexDirection:"column",children:[e?Cv(qI,{marginTop:0,children:Cv(z8,{colorKey:"textWarning",children:e})}):null,n?Cv(qI,{marginTop:0,children:Cv(z8,{colorKey:"textWarning",children:n})}):null]})}import{jsx as Xs,jsxs as GI}from"react/jsx-runtime";import{Box as Ev,Text as Zl}from"panda-ink";function poe(t){return t?t.replace(/\x1b\[[0-9;]*[A-Za-z]/g,"").replace(/[\u0000-\u001F\u007F]/g," ").replace(/\s+/g," ").trim():""}function K8(t){let{heading:e,hint:n,options:o,highlightedIndex:r,offset:i,viewportSize:s,selectedConversationId:a,groupTitleForTimestamp:l}=t,c=o.slice(i,i+s);return GI(Ev,{borderStyle:"round",borderColor:"cyan",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Xs(Zl,{color:"cyan",children:e??"@ \u4F1A\u8BDD\u5217\u8868"}),n?Xs(Zl,{color:"gray",children:n}):null,c.map((u,d)=>{let p=i+d,f=p===r,m=u.conversationId===a,g=o[p-1],h=l(u.updatedAt),y=g?l(g.updatedAt):null,v=p===0||y!==h,R=poe(u.title)||"\uFF08\u65E0\u6807\u9898\uFF09",B=`${new Date(u.updatedAt).toLocaleString()} \xB7 ${u.messageCount} \u6761\u6D88\u606F`,S=`${f?">":" "} ${m?"[*]":"[ ]"} ${R}`;return GI(Ev,{flexDirection:"column",width:"100%",backgroundColor:"black",children:[v?GI(Zl,{color:"magenta",children:["[",h,"]"]}):null,Xs(Ev,{width:"100%",backgroundColor:"black",children:Xs(Zl,{color:f?"cyan":m?"green":"white",wrap:"truncate-end",children:S})}),Xs(Ev,{width:"100%",marginLeft:2,backgroundColor:"black",children:Xs(Zl,{color:"gray",wrap:"truncate-end",children:B})})]},`conversation-popup-${u.conversationId}`)}),o.length>s?Xs(Zl,{color:"gray",children:`\u663E\u793A\u7B2C ${i+1}\u2013${Math.min(i+s,o.length)} \u6761\uFF0C\u5171 ${o.length} \u6761\uFF08\u2191/\u2193 \xB7 j/k \xB7 Ctrl+N/P \xB7 PgUp/PgDn\uFF09`}):null]})}import{jsx as Qd,jsxs as Pv}from"react/jsx-runtime";import{Box as ZI,Text as Jl}from"panda-ink";var H8=t=>{let{items:e,highlightedIndex:n}=t;return e.length===0?Pv(ZI,{borderStyle:"round",borderColor:"yellow",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Qd(Jl,{color:"yellow",children:"/ TODO"}),Qd(Jl,{color:"gray",children:"\u6682\u65E0\u5F85\u529E\u4E8B\u9879\u3002\u4F7F\u7528 /todo \u4E8B\u9879\u5185\u5BB9 \u6DFB\u52A0"})]}):Pv(ZI,{borderStyle:"round",borderColor:"yellow",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Qd(Jl,{color:"yellow",children:"/ TODO - \u5F85\u53D1\u9001\u6D88\u606F\uFF08Enter \u52A0\u8F7D\u5230\u8F93\u5165\u6846\uFF09"}),Qd(Jl,{color:"gray",children:"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u9009\u62E9 \xB7 Esc \u5173\u95ED"}),e.map((o,r)=>{let i=r===n;return Pv(ZI,{flexDirection:"row",children:[Pv(Jl,{color:i?"yellow":"gray",children:[i?">":" "," "]}),Qd(Jl,{bold:i,wrap:"truncate-end",children:o.prompt})]},`todo-${r}`)})]})};import{jsx as Rv,jsxs as Av}from"react/jsx-runtime";import{Box as V8,Text as Yl}from"panda-ink";function q8(t){let{email:e,password:n,focusedField:o,submitting:r=!1,error:i}=t,s=n.length>0?"*".repeat(n.length):"";return Av(V8,{borderStyle:"round",borderColor:"cyan",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Rv(Yl,{color:"cyan",children:"# Panda \u767B\u5F55"}),Rv(Yl,{dimColor:!0,children:"\u2191/\u2193 \u5207\u6362\u5B57\u6BB5 \xB7 Enter \u63D0\u4EA4 \xB7 Esc \u53D6\u6D88 \xB7 \u652F\u6301\u7C98\u8D34"}),Av(V8,{flexDirection:"column",marginTop:1,children:[Av(Yl,{color:o==="email"?"cyan":"gray",children:[o==="email"?">":" "," \u90AE\u7BB1: ",e||"(\u8BF7\u8F93\u5165)"]}),Av(Yl,{color:o==="password"?"cyan":"gray",children:[o==="password"?">":" "," \u5BC6\u7801: ",s||"(\u8BF7\u8F93\u5165)"]})]}),r?Rv(Yl,{color:"yellow",children:"\u6B63\u5728\u767B\u5F55..."}):null,i?Rv(Yl,{color:"red",children:i}):null]})}import{jsx as Xd,jsxs as ea}from"react/jsx-runtime";import{Box as G8,Text as fo}from"panda-ink";function Z8(t){return t.length>0?"*".repeat(t.length):""}function J8(t){let{email:e,code:n,password:o,confirmPassword:r,displayName:i,focusedField:s,submitting:a=!1,error:l,success:c}=t;return ea(G8,{borderStyle:"round",borderColor:"green",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[Xd(fo,{color:"green",children:"# Panda \u6CE8\u518C"}),Xd(fo,{dimColor:!0,children:"\u2191/\u2193 \u5207\u6362\u5B57\u6BB5 \xB7 Ctrl+G \u53D1\u9A8C\u8BC1\u7801 \xB7 Enter \u63D0\u4EA4\u6CE8\u518C \xB7 Esc \u53D6\u6D88"}),ea(G8,{flexDirection:"column",marginTop:1,children:[ea(fo,{color:s==="email"?"green":"gray",children:[s==="email"?">":" "," \u90AE\u7BB1: ",e||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="code"?"green":"gray",children:[s==="code"?">":" "," \u9A8C\u8BC1\u7801: ",n||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="password"?"green":"gray",children:[s==="password"?">":" "," \u5BC6\u7801: ",Z8(o)||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="confirmPassword"?"green":"gray",children:[s==="confirmPassword"?">":" "," \u786E\u8BA4\u5BC6\u7801: ",Z8(r)||"(\u8BF7\u8F93\u5165)"]}),ea(fo,{color:s==="displayName"?"green":"gray",children:[s==="displayName"?">":" "," \u6635\u79F0(\u53EF\u9009): ",i||"(\u53EF\u7559\u7A7A)"]})]}),a?Xd(fo,{color:"yellow",children:"\u6B63\u5728\u63D0\u4EA4\u6CE8\u518C..."}):null,c?Xd(fo,{color:"green",children:c}):null,l?Xd(fo,{color:"red",children:l}):null]})}import{jsx as ta,jsxs as Ql}from"react/jsx-runtime";import{Box as Xl,Text as na}from"panda-ink";function Y8(t){let{tips:e,highlightedIndex:n,offset:o,viewportSize:r}=t,i=Math.max(1,r),s=e.slice(o,o+i),a={\u4EA4\u4E92\u6A21\u5F0F:"green",\u659C\u6760\u547D\u4EE4:"blue",\u5FEB\u6377\u952E:"magenta",\u8F93\u5165\u6280\u5DE7:"cyan"},l="yellow";return Ql(Xl,{borderStyle:"round",borderColor:"green",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[ta(na,{color:"green",bold:!0,children:"? \u5E2E\u52A9 & \u4F7F\u7528\u6280\u5DE7"}),ta(na,{dimColor:!0,children:"\u2191/\u2193 \u6216 j/k \u5BFC\u822A \xB7 PgUp/PgDn \u7FFB\u9875 \xB7 Esc \u5173\u95ED"}),s.map((c,u)=>{let d=o+u,p=d===n,f=e[d-1],m=d===0||f&&f.category!==c.category,g=a[c.category]??l,h=p?"green":"white";return Ql(Xl,{flexDirection:"column",width:"100%",backgroundColor:"black",marginTop:m?1:0,children:[m?Ql(na,{color:g,bold:!0,children:["[",c.category,"]"]}):null,ta(Xl,{width:"100%",backgroundColor:"black",children:Ql(na,{color:h,wrap:"truncate-end",children:[p?"> ":" ",c.title]})}),ta(Xl,{width:"100%",marginLeft:2,backgroundColor:"black",children:ta(na,{color:"gray",wrap:"truncate-end",children:c.detail})})]},`help-tip-${c.id}`)}),e.length>i?ta(Xl,{marginTop:1,children:Ql(na,{color:"gray",children:["\u663E\u793A\u7B2C ",o+1,"\u2013",Math.min(o+i,e.length)," \u6761\uFF0C\u5171"," ",e.length," \u6761\uFF08\u2191/\u2193 \xB7 j/k \xB7 PgUp/PgDn\uFF09"]})}):ta(Xl,{marginTop:1,children:Ql(na,{color:"gray",children:["\u5171 ",e.length," \u6761"]})})]})}import{jsx as mo,jsxs as Q8}from"react/jsx-runtime";import{Box as ec,Text as tc}from"panda-ink";function X8(t){let{lines:e,offset:n,viewportSize:o,logPath:r,contentWidth:i}=t,s=Math.max(1,o),a=Math.max(0,e.length-s),l=Math.min(Math.max(0,n),a),c=e.slice(l,l+s),u=Math.min(l+c.length,e.length),d=Math.max(20,Math.floor(i));return Q8(ec,{borderStyle:"round",borderColor:"yellow",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",width:d,minWidth:0,children:[mo(tc,{color:"yellow",bold:!0,children:"% \u8C03\u8BD5\u65E5\u5FD7"}),mo(ec,{width:"100%",minWidth:0,children:mo(tc,{dimColor:!0,wrap:"wrap",children:r})}),mo(ec,{width:"100%",minWidth:0,children:mo(tc,{dimColor:!0,wrap:"wrap",children:"\u2191/\u2193 / j/k \u6EDA\u52A8 \xB7 PgUp/PgDn \u7FFB\u9875 \xB7 \u9F20\u6807\u6EDA\u8F6E \xB7 r \u91CD\u8F7D \xB7 Enter/Esc \u5173\u95ED"})}),c.map((p,f)=>{let m=l+f+1;return Q8(ec,{flexDirection:"row",width:"100%",minWidth:0,alignItems:"flex-start",backgroundColor:"black",children:[mo(tc,{color:"gray",children:`${String(m).padStart(4," ")}\u2502`}),mo(ec,{flexGrow:1,flexShrink:1,minWidth:0,children:mo(tc,{wrap:"wrap",children:p.length>0?p:" "})})]},`debug-log-${l+f}`)}),mo(ec,{marginTop:1,children:mo(tc,{color:"gray",children:e.length===0?"0 \u884C":`\u7B2C ${l+1}\u2013${u} \u884C\uFF0C\u5171 ${e.length} \u884C`})})]})}import{jsx as foe}from"react/jsx-runtime";import{useRef as moe}from"react";import{Box as goe,useTerminalViewport as hoe}from"panda-ink";function nc({children:t}){let[e,{isVisible:n}]=hoe(),o=moe(t);return n&&(o.current=t),foe(goe,{ref:e,children:o.current})}import{jsx as ep,jsxs as Pr}from"react/jsx-runtime";import{Box as Mv,Text as pr}from"panda-ink";function yoe(t,e){if(!e?.length)return"\uFF08\u672A\u9009\uFF09";let n=t.options;return e.map(o=>pg(o,n)).join("\u3001")}function e$(t){let{title:e,allowSkipAll:n,questions:o,questionIndex:r,optionIndex:i,selectedByQuestion:s,optionNotesByQuestion:a={},noteCapture:l}=t;if(o.length===0)return null;let c=o[r]??o[0],u=o.length,d=a[c.id]??{},p=dg(c.options);return Pr(Mv,{borderStyle:"round",borderColor:"yellow",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[ep(pr,{color:"yellow",children:"? \u53D1\u8D77\u63D0\u95EE"}),e.trim()?ep(pr,{bold:!0,wrap:"truncate-end",children:e.trim()}):null,Pr(pr,{dimColor:!0,children:["\u7B2C ",r+1,"/",u," \u9898",c.required?" \xB7 \u5FC5\u9009":"",c.allowMultiple?" \xB7 \u591A\u9009\uFF08Space \u52FE\u9009\uFF0CEnter \u786E\u8BA4\u672C\u9898\uFF09":" \xB7 \u5355\u9009\uFF08Enter \u9009\u4E2D\u5E76\u7EE7\u7EED\uFF09",n?" \xB7 Esc \u53EF\u8DF3\u8FC7\u5168\u90E8":""]}),Pr(pr,{dimColor:!0,children:["\u2191/\u2193 \u9009\u9879 \xB7 \u6570\u5B57\u5B9A\u4F4D \xB7 \u805A\u7126\u300C\u5176\u4ED6\u300D\u540E\u6309 n \u5199\u8865\u5145\u8BF4\u660E \xB7 Enter \u4FDD\u5B58",c.allowMultiple?" \xB7 Space \u52FE\u9009":""," \xB7 Enter ",c.allowMultiple?r>=u-1?"\u63D0\u4EA4\u5168\u90E8":"\u4E0B\u4E00\u9898":r>=u-1?"\u63D0\u4EA4":"\u4E0B\u4E00\u9898"," \xB7 [ \u4E0A\u4E00\u9898 \xB7 ] \u4E0B\u4E00\u9898"]}),l?Pr(pr,{color:"cyan",wrap:"truncate-end",children:["\u300C\u5176\u4ED6\u300D\u8865\u5145\u8BF4\u660E: ",l.text.length?l.text:"\uFF08\u7A7A\uFF09"]}):null,o.slice(0,r).map((f,m)=>{let g=yoe(f,s[f.id]);return Pr(pr,{color:"gray",dimColor:!0,wrap:"truncate-end",children:["\u2713 Q",m+1," ",f.prompt.slice(0,60),f.prompt.length>60?"\u2026":""," \u2014 ",g]},`ask-done-${f.id}`)}),Pr(Mv,{flexDirection:"column",marginTop:1,children:[ep(pr,{bold:!0,wrap:"wrap",children:c.prompt}),ep(pr,{dimColor:!0,children:"\u672B\u9879\u4E3A\u300C\u5176\u4ED6\u300D\uFF0C\u9009\u4E2D\u540E\u53EF\u586B\u8865\u5145\u8BF4\u660E"}),p.map((f,m)=>{let g=!!s[c.id]?.includes(f.id),h=i===m,y=c.allowMultiple?g?"[x]":"[ ]":g?"(*)":"( )",v=h?">":" ",b=h?"yellow":g?"cyan":"gray",R=Ti(f.id)&&d[Eo]?.trim()?d[Eo].trim():"";return Pr(Mv,{flexDirection:"column",marginBottom:0,children:[Pr(pr,{color:b,dimColor:!h&&!g,wrap:"truncate-end",children:[v," ",y," ",m+1,". ",f.label]}),f.description?.trim()?Pr(pr,{dimColor:!0,wrap:"truncate-end",children:[" ",f.description.trim()]}):null,R&&Ti(f.id)?Pr(pr,{dimColor:!0,wrap:"truncate-end",children:[" ","\u21B3 ",R]}):null]},f.id)})]}),r<u-1?ep(Mv,{marginTop:1,children:Pr(pr,{dimColor:!0,children:["\u2026 \u5C1A\u6709 ",u-r-1," \u9898"]})}):null]})}function t$(t){return{historyItems:t.historyItems}}function n$(t){return{currentTurnId:t.currentTurnId,pendingThinking:t.pendingThinking,pendingAssistant:t.pendingAssistant,pendingAssistantChunks:t.pendingAssistantChunks,assistantStreamOverlap:t.assistantStreamOverlap,pendingToolCalls:t.pendingToolCalls,subAgentFeeds:t.subAgentFeeds}}function r$(t){return{streamingState:t.streamingState,running:t.running,done:t.done,exitCode:t.exitCode,conversationActionInFlight:t.conversationActionInFlight,contextMetrics:t.contextMetrics}}import{Fragment as voe,jsx as ke,jsxs as ze}from"react/jsx-runtime";import{Box as et,Text as Ee}from"panda-ink";var JI=["project","local","user"];function Dv(t){switch(t){case"project":return"Project MCPs";case"local":return"Local MCPs";case"user":return"User MCPs";default:return t}}function o$(t,e){return e.type==="stdio","user"}function i$(t){switch(t){case"connected":return{icon:"\u2713",color:"green",label:"connected"};case"pending":return{icon:"\u23F3",color:"yellow",label:"connecting\u2026"};case"disabled":return{icon:"\u2717",color:"gray",label:"disabled"};case"needs_auth":return{icon:"\u{1F512}",color:"yellow",label:"needs auth"};case"failed":return{icon:"\u2717",color:"red",label:"failed"};default:return{icon:"?",color:"gray",label:t}}}function boe({scope:t}){return ke(et,{paddingLeft:2,marginTop:1,children:ke(Ee,{bold:!0,children:t})})}function xoe({servers:t,highlightedIndex:e}){if(t.length===0)return ke(Ee,{dimColor:!0,children:" \uFF08\u672A\u914D\u7F6E MCP \u670D\u52A1\u5668\uFF09"});let n=new Map;for(let s of t){let a=o$(s.name,s.config),l=Dv(a);n.has(l)||n.set(l,[]),n.get(l).push(s)}let o=[],r=0,i=[...n.entries()].sort(([s],[a])=>{let l=JI.findIndex(u=>Dv(u)===s),c=JI.findIndex(u=>Dv(u)===a);return(l>=0?l:99)-(c>=0?c:99)});for(let[s,a]of i){o.push(ke(boe,{scope:s},`h-${s}`));for(let l of a){let c=r===e,u=i$(l.status.status==="disabled"?"disabled":l.status.status);o.push(ze(et,{children:[ke(Ee,{color:c?"cyan":void 0,children:c?"> ":" "}),ke(Ee,{color:c?"cyan":void 0,children:l.name}),ke(Ee,{dimColor:!c,children:" \xB7 "}),ke(Ee,{color:u.color,dimColor:!c,children:u.icon}),ze(Ee,{dimColor:!c,children:[" ",u.label]})]},`s-${l.name}`)),r++}}return ke(voe,{children:o})}function Toe({server:t}){let e=i$(t.status.status==="disabled"?"disabled":t.status.status),n=(()=>{let r=t.config;return r.type==="stdio"?ze(et,{flexDirection:"column",children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Type: "}),ke(Ee,{dimColor:!0,children:"stdio"})]}),ze(et,{children:[ke(Ee,{bold:!0,children:"Command: "}),ke(Ee,{dimColor:!0,children:r.command})]}),r.args&&r.args.length>0&&ze(et,{children:[ke(Ee,{bold:!0,children:"Args: "}),ke(Ee,{dimColor:!0,children:r.args.join(" ")})]})]}):r.type==="http"||r.type==="sse"?ze(et,{flexDirection:"column",children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Type: "}),ke(Ee,{dimColor:!0,children:r.type})]}),ze(et,{children:[ke(Ee,{bold:!0,children:"URL: "}),ke(Ee,{dimColor:!0,children:r.url})]})]}):ke(Ee,{dimColor:!0,children:"Unknown config type"})})(),o=t.status.status==="connected"?t.tools.length:0;return ze(et,{flexDirection:"column",paddingX:1,children:[ke(et,{marginBottom:1,children:ze(Ee,{bold:!0,children:[t.name," MCP Server"]})}),ze(et,{flexDirection:"column",marginLeft:1,children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Status: "}),ze(Ee,{color:e.color,children:[e.icon," ",e.label]}),t.status.status==="failed"&&"error"in t.status&&ze(Ee,{color:"red",children:[" (",t.status.error,")"]})]}),n,ze(et,{marginTop:1,children:[ke(Ee,{bold:!0,children:"Tools: "}),ke(Ee,{dimColor:!0,children:t.status.status==="connected"?`${o} tool(s)`:"N/A (server not connected)"})]})]}),ke(et,{marginTop:1,marginLeft:1,children:ke(Ee,{dimColor:!0,children:"\u6309 Enter \u67E5\u770B\u5DE5\u5177\u5217\u8868 \xB7 Esc \u8FD4\u56DE"})})]})}function woe({server:t,highlightedIndex:e}){let n=t.tools;return n.length===0?ze(et,{flexDirection:"column",paddingX:1,children:[ke(et,{marginBottom:1,children:ze(Ee,{bold:!0,children:[t.name," \u2014 Tools"]})}),ke(Ee,{dimColor:!0,children:"\u8BE5\u670D\u52A1\u5668\u6CA1\u6709\u63D0\u4F9B\u4EFB\u4F55\u5DE5\u5177"})]}):ze(et,{flexDirection:"column",paddingX:1,children:[ke(et,{marginBottom:1,children:ze(Ee,{bold:!0,children:[t.name," \u2014 Tools (",n.length,")"]})}),n.map((o,r)=>{let i=r===e;return ze(et,{children:[ke(Ee,{color:i?"cyan":void 0,children:i?"> ":" "}),ke(Ee,{color:i?"cyan":void 0,children:o.displayName||o.toolName})]},o.id)}),ke(et,{marginTop:1,children:ke(Ee,{dimColor:!0,children:"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u67E5\u770B\u8BE6\u60C5 \xB7 Esc \u8FD4\u56DE"})})]})}function _oe({server:t,tool:e}){let n=(()=>{let o=e.inputSchema;if(!o||!o.properties)return null;let r=o.properties,i=o.required??[],s=Object.entries(r);return s.length===0?null:ze(et,{flexDirection:"column",marginLeft:2,marginTop:1,children:[ke(Ee,{bold:!0,children:"Parameters:"}),s.map(([a,l])=>{let c=i.includes(a),u=typeof l=="object"&&l&&"type"in l?String(l.type):"unknown",d=typeof l=="object"&&l&&"description"in l?String(l.description):null;return ze(et,{children:[ze(Ee,{children:["\xB7 ",a]}),c&&ke(Ee,{dimColor:!0,children:" (required)"}),ze(Ee,{dimColor:!0,children:[": ",u]}),d&&ze(Ee,{dimColor:!0,children:[" \u2014 ",d]})]},a)})]})})();return ze(et,{flexDirection:"column",paddingX:1,children:[ze(et,{marginBottom:1,children:[ze(Ee,{bold:!0,children:["Tool: ",e.displayName||e.toolName]}),ze(Ee,{dimColor:!0,children:[" (",t.name,")"]})]}),ze(et,{flexDirection:"column",marginLeft:1,children:[ze(et,{children:[ke(Ee,{bold:!0,children:"Full name: "}),ke(Ee,{dimColor:!0,children:e.toolName})]}),e.description&&ze(et,{marginTop:1,flexDirection:"column",children:[ke(Ee,{bold:!0,children:"Description:"}),ke(Ee,{wrap:"wrap",children:e.description})]}),n]}),ke(et,{marginTop:1,children:ke(Ee,{dimColor:!0,children:"Esc \u8FD4\u56DE\u5DE5\u5177\u5217\u8868"})})]})}function s$(t){let{servers:e,viewState:n,highlightedIndex:o}=t,r=e.length,i=e.filter(s=>s.status.status==="connected").length;return ze(et,{borderStyle:"round",borderColor:"cyan",backgroundColor:"black",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[ke(Ee,{color:"cyan",bold:!0,children:"MCP \u670D\u52A1\u5668\u7BA1\u7406"}),ze(Ee,{color:"gray",children:[r," \u670D\u52A1\u5668 \xB7 ",i," \u5DF2\u8FDE\u63A5"]}),ze(et,{marginTop:1,flexDirection:"column",children:[n.mode==="server-list"&&ke(xoe,{servers:e,highlightedIndex:o}),n.mode==="server-detail"&&e[n.serverIndex]&&ke(Toe,{server:e[n.serverIndex]}),n.mode==="tool-list"&&e[n.serverIndex]&&ke(woe,{server:e[n.serverIndex],highlightedIndex:o}),n.mode==="tool-detail"&&e[n.serverIndex]&&e[n.serverIndex].tools[n.toolIndex]&&ke(_oe,{server:e[n.serverIndex],tool:e[n.serverIndex].tools[n.toolIndex]})]}),ke(et,{marginTop:1,children:ze(Ee,{dimColor:!0,italic:!0,children:[n.mode==="server-list"&&"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u67E5\u770B\u8BE6\u60C5 \xB7 Esc \u9000\u51FA \xB7 \u6309 /mcp e <name> \u542F\u7528/\u7981\u7528",n.mode==="server-detail"&&"Enter \u67E5\u770B\u5DE5\u5177 \xB7 Esc \u8FD4\u56DE\u5217\u8868",n.mode==="tool-list"&&"\u2191/\u2193 \u5BFC\u822A \xB7 Enter \u67E5\u770B\u8BE6\u60C5 \xB7 Esc \u8FD4\u56DE",n.mode==="tool-detail"&&"Esc \u8FD4\u56DE\u5DE5\u5177\u5217\u8868"]})})]})}function a$(t){let{uiState:e,inputValue:n,inputCursorOffset:o=0,wrappedRenderedLines:r,inputTransientHint:i="",vimBindingsEnabled:s=!1,vimInputMode:a="INSERT",workspacePath:l,conversationId:c,contentWidth:u,conversationTitle:d,modelLabel:p,modeLabel:f,interactionMode:m,contextMetrics:g=null,streamingApproxRef:h,askQuestionActive:y,askQuestionHint:v,askQuestionAllowSkipAll:b=!1,askQuestionUiState:R,askQuestionPopup:M,modelPickerActive:B,modelPickerHint:S,modelPickerState:x,modePickerActive:T,modePickerHint:W,modePickerState:A,teamRolesPickerActive:U,teamRolesPickerHint:j,teamRolesPickerState:_,conversationPickerActive:$,conversationPickerHeading:N,conversationPickerHint:K,conversationPickerForResume:E=!1,conversationPickerState:V,exitPendingHint:ae="",typeaheadSuggestions:Te=[],typeaheadSelectedSuggestion:me=-1,typeaheadMaxColumnWidth:ne,typeaheadCommandArgumentHint:Pe,pendingUserMessageCount:de=0,queueSelectionActive:H=!1,queueSelectionIndex:te=-1,queuedUserLines:ee=[],loginPopup:ue,registerPopup:Q,helpPopupActive:We=!1,helpTipsData:Qt,helpTipsIndex:Xt=0,helpTipsOffset:ln=0,helpTipsViewportSize:en=8,mcpPanelActive:Ar=!1,mcpServers:nr=[],mcpViewState:O,mcpHighlightedIndex:w=0,todoPickerActive:z=!1,todoPickerState:D,debugPickerActive:pe=!1,debugPickerHint:Se="",debugPickerState:st}=t,ye=t$(e),Re=n$(e),Ae=r$(e);return sn(qo,{flexDirection:"column",flexShrink:0,children:[bt(qo,{flexGrow:1,flexDirection:"column",minHeight:0,paddingX:1,children:bt(E8,{conversationId:c,historyItems:ye.historyItems,pendingAssistant:Re.pendingAssistant,assistantStreamOverlap:Re.assistantStreamOverlap,pendingToolCalls:Re.pendingToolCalls,streamingState:Ae.streamingState,streamingApproxRef:h,contentWidth:u,askQuestionUiState:R,subAgentFeeds:Re.subAgentFeeds,queuedUserLines:ee,queueSelectionActive:H,queueSelectionIndex:te})}),sn(qo,{flexShrink:0,flexDirection:"column",paddingX:1,children:[y&&M&&M.questions.length>0?bt(nc,{children:bt(e$,{title:M.title,allowSkipAll:M.allowSkipAll,questions:M.questions,questionIndex:M.questionIndex,optionIndex:M.optionIndex,selectedByQuestion:M.selectedByQuestion,optionNotesByQuestion:M.optionNotesByQuestion,noteCapture:M.noteCapture})}):null,U&&_&&_.entries.length>0?bt(nc,{children:sn(qo,{borderStyle:"round",borderColor:"green",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[bt(an,{color:"green",children:"* Team roles"}),j?bt(an,{color:"gray",children:j}):null,_.entries.map((Ke,He)=>{let _t=He===_.highlightedIndex,xt=_.selectedRoleIds.includes(Ke.id);return sn(qo,{flexDirection:"row",children:[sn(an,{color:_t?"green":"gray",children:[_t?">":" "," "]}),bt(an,{color:xt?"cyan":"gray",children:xt?"[x]":"[ ]"}),sn(an,{children:[" ",Ke.label,sn(an,{color:"gray",children:[" \u2014 ",Ke.description]})]})]},`team-role-${Ke.id}`)})]})}):null,T&&A&&A.entries.length>0?sn(qo,{borderStyle:"round",borderColor:"blue",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[bt(an,{color:"blue",children:"+ \u4EA4\u4E92\u6A21\u5F0F"}),W?bt(an,{color:"gray",children:W}):null,A.entries.map((Ke,He)=>{let _t=He===A.highlightedIndex,xt=Ke.id===A.selectedMode;return sn(qo,{flexDirection:"row",children:[sn(an,{color:_t?"blue":"gray",children:[_t?">":" "," "]}),bt(an,{color:xt?"cyan":"gray",children:xt?"[*]":"[ ]"}),sn(an,{children:[" ",Ke.label,sn(an,{color:"gray",children:[" \u2014 ",Ke.description]})]})]},`mode-popup-${Ke.id}`)})]}):null,B&&x&&x.options.length>0?sn(qo,{borderStyle:"round",borderColor:"magenta",paddingX:1,paddingY:0,marginBottom:1,flexDirection:"column",children:[bt(an,{color:"magenta",children:"@ \u6A21\u578B\u9009\u62E9"}),x.options.map((Ke,He)=>{let _t=He===x.highlightedIndex,xt=Ke.id===x.selectedModelId;return sn(qo,{children:[sn(an,{color:_t?"magenta":"gray",children:[_t?">":" "," "]}),bt(an,{color:xt?"cyan":void 0,children:xt?"[*]":"[ ]"}),sn(an,{children:[" ",Ke.displayName]}),sn(an,{color:"gray",children:[" (",Ke.id,")"]})]},`model-popup-${Ke.id}`)})]}):null,$&&V&&V.options.length>0?bt(K8,{heading:N,hint:K,options:V.options,highlightedIndex:V.highlightedIndex,offset:V.offset,viewportSize:V.viewportSize,selectedConversationId:V.selectedConversationId,groupTitleForTimestamp:V.groupTitleForTimestamp}):null,z&&D?bt(H8,{items:D.items,highlightedIndex:D.highlightedIndex}):null,pe&&st?bt(X8,{lines:st.lines,offset:st.offset,viewportSize:st.viewportSize,logPath:st.logPath,contentWidth:Math.max(20,Math.floor(u??80))}):null,ue?bt(q8,{email:ue.email,password:ue.password,focusedField:ue.focusedField,submitting:ue.submitting,error:ue.error}):null,Q?bt(J8,{email:Q.email,code:Q.code,password:Q.password,confirmPassword:Q.confirmPassword,displayName:Q.displayName,focusedField:Q.focusedField,submitting:Q.submitting,error:Q.error,success:Q.success}):null,We&&Qt&&Qt.length>0?bt(Y8,{tips:Qt,highlightedIndex:Xt,offset:ln,viewportSize:en}):null,Ar&&nr&&O?bt(nc,{children:bt(s$,{servers:nr,viewState:O,highlightedIndex:w})}):null,bt(nc,{children:bt(j8,{value:n,cursorOffset:o,wrappedRenderedLines:r,vimBindingsEnabled:s,vimInputMode:a,done:Ae.done,running:Ae.running,modelLabel:p,modeLabel:f,interactionMode:m,contextMetrics:g,askQuestionActive:y,askQuestionHint:v,askQuestionAllowSkipAll:b,modelPickerActive:B,modelPickerHint:S,modePickerActive:T,modePickerHint:W,debugPickerActive:pe,debugPickerHint:Se,teamRolesPickerActive:U,teamRolesPickerHint:j,conversationPickerActive:$,conversationPickerForResume:E,conversationPickerHint:K,helpPopupActive:We,workspacePath:l,conversationTitle:d,contentWidth:Math.max(1,Math.floor(u??80)),typeaheadSuggestions:Te,typeaheadSelectedSuggestion:me,typeaheadMaxColumnWidth:ne,typeaheadCommandArgumentHint:Pe,pendingUserMessageCount:de,queueSelectionActive:H})}),bt(nc,{children:bt(W8,{workspacePath:l,conversationId:c,exitPendingHint:ae,inputTransientHint:i})})]})]})}import{AlternateScreen as Xie}from"panda-ink";import{jsx as Ov,jsxs as Soe}from"react/jsx-runtime";import{useMemo as koe,useRef as Ioe}from"react";import{Box as l$,Text as Coe,ScrollBox as Eoe}from"panda-ink";function c$(t){let{messages:e,contentWidth:n,streamingState:o,conversationId:r,taskFallbackSnapshot:i,streamingApproxRef:s,showAll:a=!1}=t,l=Ioe(null),c=koe(()=>e,[e,a]);return Soe(l$,{flexDirection:"column",width:"100%",children:[Ov(Eoe,{ref:l,flexGrow:1,flexDirection:"column",stickyScroll:!0,children:Ov(_v,{messages:c,contentWidth:n,streamingState:o,conversationId:r,taskFallbackSnapshot:i,streamingApproxRef:s,transcriptMode:!0})}),Ov(l$,{flexShrink:0,paddingX:2,paddingY:1,children:Ov(Coe,{dimColor:!0,children:"\u8BE6\u7EC6\u5BF9\u8BDD \xB7 ctrl+o \u5207\u6362 \xB7 ctrl+e \u5C55\u5F00\u5168\u90E8 \xB7 Esc/q \u9000\u51FA"})})]})}var Gi=[];function Go(t,e){return e.downArrow||e.wheelDown||e.ctrl&&Sr(t,e)==="n"?!0:t==="j"&&!e.ctrl&&!e.shift&&!e.meta&&!e.super}function Zo(t,e){return e.upArrow||e.wheelUp||e.ctrl&&Sr(t,e)==="p"?!0:t==="k"&&!e.ctrl&&!e.shift&&!e.meta&&!e.super}import{useCallback as go,useEffect as gF,useMemo as hF,useRef as Ji,useState as dC}from"react";import{useDebounceCallback as yF}from"usehooks-ts";function Wt(t){return t.userFacingName?.()??t.name}function Poe(t,e){return e.find(n=>n.name===t||Wt(n)===t||n.aliases?.includes(t))}function u$(t,e){let n=Poe(t,e);if(!n)throw new ReferenceError(`Command ${t} not found. Available commands: ${e.map(o=>{let r=Wt(o);return o.aliases?`${r} (aliases: ${o.aliases.join(", ")})`:r}).sort((o,r)=>o.localeCompare(r)).join(", ")}`);return n}function d$(t){if(t.type!=="prompt")return t.description;if(t.kind==="workflow")return`${t.description} (workflow)`;if(t.source==="plugin"){let e=t.pluginInfo?.pluginManifest.name;return e?`(${e}) ${t.description}`:`${t.description} (plugin)`}return t.source==="builtin"||t.source==="mcp"?t.description:t.source==="bundled"?`${t.description} (bundled)`:`${t.description} (${String(t.source)})`}function tp(t){return t.startsWith("!")?"bash":"prompt"}function p$(t){return tp(t)==="prompt"?t:t.slice(1)}import{useEffect as Roe}from"react";import{createStore as Aoe,useStore as Moe}from"zustand";var Doe=new Set(["autocomplete"]),YI=Aoe(()=>({activeOverlays:new Set}));function f$(t,e=!0){Roe(()=>{if(e)return YI.setState(n=>{if(n.activeOverlays.has(t))return n;let o=new Set(n.activeOverlays);return o.add(t),{activeOverlays:o}}),()=>{YI.setState(n=>{if(!n.activeOverlays.has(t))return n;let o=new Set(n.activeOverlays);return o.delete(t),{activeOverlays:o}})}},[t,e])}function m$(){return Moe(YI,t=>{for(let e of t.activeOverlays)if(!Doe.has(e))return!0;return!1})}function g$(t,e,n){return n}import{create as Ooe}from"zustand";var ra=Ooe()(()=>({mcp:{resources:{},clients:[]},promptSuggestion:null,viewingAgentTaskId:null,teamContext:null,agentNameRegistry:new Map,tasks:{},agents:[]}));function h$(){return!1}import{parse as y$,quote as v$}from"shell-quote";function fr(t){t instanceof Error?console.error(t):console.error(String(t))}function Lv(t,e){try{return{success:!0,tokens:typeof e=="function"?y$(t,e):y$(t,e)}}catch(n){return n instanceof Error&&fr(n),{success:!1,error:n instanceof Error?n.message:"Unknown parse error"}}}function Loe(t){try{let e=t.map((o,r)=>{if(o==null)return String(o);let i=typeof o;if(i==="string")return o;if(i==="number"||i==="boolean")return String(o);throw i==="object"?new Error(`Cannot quote argument at index ${r}: object values are not supported`):i==="symbol"?new Error(`Cannot quote argument at index ${r}: symbol values are not supported`):i==="function"?new Error(`Cannot quote argument at index ${r}: function values are not supported`):new Error(`Cannot quote argument at index ${r}: unsupported type ${i}`)});return{success:!0,quoted:v$(e)}}catch(e){return e instanceof Error&&fr(e),{success:!1,error:e instanceof Error?e.message:"Unknown quote error"}}}function oa(t){let e=Loe([...t]);if(e.success)return e.quoted;try{let n=t.map(o=>{if(o==null)return String(o);let r=typeof o;return r==="string"||r==="number"||r==="boolean"?String(o):JSON.stringify(o)});return v$(n)}catch(n){throw n instanceof Error&&fr(n),new Error("Failed to quote shell arguments safely")}}function b$(t){if(!t||!t.trim())return[];let e=Lv(t,n=>`$${n}`);return e.success?e.tokens.filter(n=>typeof n=="string"):t.split(/\s+/).filter(Boolean)}function x$(t,e){let n=t.slice(e.length);if(n.length!==0)return n.map(o=>`[${o}]`).join(" ")}import{spawn as Noe}from"node:child_process";function T$(){let t=process.env.SHELL||"";return t.includes("zsh")?"zsh":t.includes("bash")?"bash":t.includes("fish")?"fish":"unknown"}async function w$(t,e,n,o){let i=Noe(n==="zsh"?"zsh":"bash",["-lc",t],{cwd:process.cwd(),env:process.env,stdio:["ignore","pipe","pipe"]}),s="",a="";i.stdout?.setEncoding("utf8"),i.stderr?.setEncoding("utf8"),i.stdout?.on("data",p=>{s+=p}),i.stderr?.on("data",p=>{a+=p});let l=o?.timeout??3e4,c=setTimeout(()=>{i.kill("SIGKILL")},l),u=()=>{i.kill("SIGTERM")};return e.addEventListener("abort",u),{result:new Promise(p=>{i.on("close",f=>{clearTimeout(c),e.removeEventListener("abort",u),p({stdout:s,stderr:a,code:f??0})})}),kill:()=>{i.kill("SIGKILL")}}}var QI=15,$oe=1e3,Foe=["|","||","&&",";"];function S$(t){return typeof t=="object"&&t!==null&&"op"in t&&Foe.includes(t.op)}function _$(t){return t.startsWith("$")?"variable":t.includes("/")||t.startsWith("~")||t.startsWith(".")?"file":"command"}function Uoe(t){let e=t.findLastIndex(n=>typeof n=="string");return e!==-1?{token:t[e],index:e}:null}function Boe(t,e){if(e===0)return!0;let n=t[e-1];return n!==void 0&&S$(n)}function joe(t,e){let n=t.slice(0,e),o=n.match(/\$[a-zA-Z_][a-zA-Z0-9_]*$/);if(o)return{prefix:o[0],completionType:"variable"};let r=Lv(n);if(!r.success){let l=n.split(/\s+/),c=l[l.length-1]||"",d=l.length===1&&!n.includes(" ")?"command":_$(c);return{prefix:c,completionType:d}}let i=Uoe(r.tokens);if(!i){let l=r.tokens[r.tokens.length-1];return{prefix:"",completionType:(l&&S$(l),"command")}}if(n.endsWith(" "))return{prefix:"",completionType:"file"};let s=_$(i.token);if(s==="variable"||s==="file")return{prefix:i.token,completionType:s};let a=Boe(r.tokens,i.index)?"command":"file";return{prefix:i.token,completionType:a}}function zoe(t,e){if(e==="variable"){let n=t.slice(1);return`compgen -v ${oa([n])} 2>/dev/null`}else return e==="file"?`compgen -f ${oa([t])} 2>/dev/null | head -${QI} | while IFS= read -r f; do [ -d "$f" ] && echo "$f/" || echo "$f "; done`:`compgen -c ${oa([t])} 2>/dev/null`}function Woe(t,e){if(e==="variable"){let n=t.slice(1);return`print -rl -- \${(k)parameters[(I)${oa([n])}*]} 2>/dev/null`}else return e==="file"?`for f in ${oa([t])}*(N[1,${QI}]); do [[ -d "$f" ]] && echo "$f/" || echo "$f "; done`:`print -rl -- \${(k)commands[(I)${oa([t])}*]} 2>/dev/null`}async function Koe(t,e,n,o){let r;if(t==="bash")r=zoe(e,n);else if(t==="zsh")r=Woe(e,n);else return[];return(await(await w$(r,o,t,{timeout:$oe})).result).stdout.split(`
2096
+ `).filter(a=>a.trim()).slice(0,QI).map(a=>({id:a,displayText:a,description:void 0,metadata:{completionType:n}}))}async function k$(t,e,n){let o=T$();if(o!=="bash"&&o!=="zsh")return[];try{let{prefix:r,completionType:i}=joe(t,e);return r?(await Koe(o,r,i,n)).map(a=>({...a,metadata:{...a.metadata,inputSnapshot:t}})):[]}catch(r){return[]}}function I$(t){return t.sessionId??""}async function C$(t,e){return[]}import Hoe from"fuse.js";function XI(t){return 0}var Voe=/[:_-]/g,eC=null;function qoe(t){if(eC?.commands===t)return eC.fuse;let e=t.filter(o=>!o.isHidden).map(o=>{let r=Wt(o),i=r.split(Voe).filter(Boolean);return{descriptionKey:(o.description??"").split(" ").map(s=>Yoe(s)).filter(Boolean),partKey:i.length>1?i:void 0,commandName:r,command:o,aliasKey:o.aliases}}),n=new Hoe(e,{includeScore:!0,threshold:.3,location:0,distance:100,keys:[{name:"commandName",weight:3},{name:"partKey",weight:2},{name:"aliasKey",weight:2},{name:"descriptionKey",weight:.5}]});return eC={commands:t,fuse:n},n}function E$(t){return typeof t=="object"&&t!==null&&"name"in t&&typeof t.name=="string"&&"type"in t}function $v(t,e){if(t.startsWith("/"))return null;let o=t.slice(0,e).match(/\s\/([a-zA-Z0-9_:-]*)$/);if(!o||o.index===void 0)return null;let r=o.index+1,s=t.slice(r+1).match(/^[a-zA-Z0-9_:-]*/),a=s?s[0]:"";return e>r+1+a.length?null:{token:"/"+a,startPos:r,partialCommand:a}}function nC(t,e){if(!t)return null;let n=rC("/"+t,e);if(n.length===0)return null;let o=t.toLowerCase();for(let r of n){if(!E$(r.metadata))continue;let i=Wt(r.metadata);if(i.toLowerCase().startsWith(o)){let s=i.slice(t.length);if(s)return{suffix:s,fullCommand:i}}}return null}function Jo(t){return t.startsWith("/")}function Goe(t){return!(!Jo(t)||!t.includes(" ")||t.endsWith(" "))}function Zoe(t){return`/${t} `}function Nv(t){let e=Wt(t);return t.type==="prompt"?t.source==="plugin"&&t.pluginInfo?.repository?`${e}:${t.source}:${t.pluginInfo.repository}`:`${e}:${t.source}`:`${e}:${t.type}`}function Joe(t,e){if(!(!e||e.length===0||t===""))return e.find(n=>n.toLowerCase().startsWith(t))}function tC(t,e){let n=Wt(t),o=e?` (${e})`:"",r=t.type==="prompt"&&t.kind==="workflow",i=(r?t.description:d$(t))+(t.type==="prompt"&&t.argNames?.length?` (arguments: ${t.argNames.join(", ")})`:"");return{id:Nv(t),displayText:`/${n}${o}`,tag:r?"workflow":void 0,description:i,metadata:t}}function rC(t,e){if(!Jo(t))return[];if(Goe(t))return[];let n=t.slice(1).toLowerCase().trim();if(n===""){let c=e.filter(b=>!b.isHidden),u=[],d=c.filter(b=>b.type==="prompt").map(b=>({cmd:b,score:XI(Wt(b))})).filter(b=>b.score>0).sort((b,R)=>R.score-b.score);for(let b of d.slice(0,5))u.push(b.cmd);let p=new Set(u.map(b=>Nv(b))),f=[],m=[],g=[],h=[],y=[];c.forEach(b=>{p.has(Nv(b))||(b.type==="local"||b.type==="local-jsx"?f.push(b):b.type==="prompt"&&(b.source==="userSettings"||b.source==="localSettings")?m.push(b):b.type==="prompt"&&b.source==="projectSettings"?g.push(b):b.type==="prompt"&&b.source==="policySettings"?h.push(b):y.push(b))});let v=(b,R)=>Wt(b).localeCompare(Wt(R));return f.sort(v),m.sort(v),g.sort(v),h.sort(v),y.sort(v),[...u,...f,...m,...g,...h,...y].map(b=>tC(b))}let o=e.find(c=>c.isHidden&&Wt(c).toLowerCase()===n);o&&e.some(c=>!c.isHidden&&Wt(c).toLowerCase()===n)&&(o=void 0);let l=qoe(e).search(n).map(c=>{let u=c.item.commandName.toLowerCase(),d=c.item.aliasKey?.map(f=>f.toLowerCase())??[],p=c.item.command.type==="prompt"?XI(Wt(c.item.command)):0;return{r:c,name:u,aliases:d,usage:p}}).sort((c,u)=>{let d=c.name,p=u.name,f=c.aliases,m=u.aliases,g=d===n,h=p===n;if(g&&!h)return-1;if(h&&!g)return 1;let y=f.some(x=>x===n),v=m.some(x=>x===n);if(y&&!v)return-1;if(v&&!y)return 1;let b=d.startsWith(n),R=p.startsWith(n);if(b&&!R)return-1;if(R&&!b)return 1;if(b&&R&&d.length!==p.length)return d.length-p.length;let M=f.find(x=>x.startsWith(n)),B=m.find(x=>x.startsWith(n));if(M&&!B)return-1;if(B&&!M)return 1;if(M&&B&&M.length!==B.length)return M.length-B.length;let S=(c.r.score??0)-(u.r.score??0);return Math.abs(S)>.1?S:u.usage-c.usage}).map(c=>{let u=c.r.item.command,d=Joe(n,u.aliases);return tC(u,d)});if(o){let c=Nv(o);if(!l.some(u=>u.id===c))return[tC(o),...l]}return l}function oC(t,e,n,o,r,i){let s,a;if(typeof t=="string")s=t,a=e?u$(s,n):void 0;else{if(!E$(t.metadata))return;s=Wt(t.metadata),a=t.metadata}let l=Zoe(s);o(l),r(l.length),e&&a&&(a.type!=="prompt"||(a.argNames??[]).length===0)&&i(l,!0)}function Yoe(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"")}import{readdir as L$}from"node:fs/promises";import{LRUCache as N$}from"lru-cache";import{basename as eie,dirname as tie,join as $$,sep as Uv}from"node:path";import{homedir as P$}from"node:os";import{isAbsolute as Qoe,join as Xoe,normalize as rc,resolve as R$}from"node:path";var iC=null;function A$(t){iC=rc(R$(t))}function M$(){iC=null}function Zi(){return iC??process.cwd()}function Fv(t,e=Zi()){let n=t.trim();return n?n==="~"?rc(P$()):n.startsWith("~/")||n.startsWith("~\\")?rc(Xoe(P$(),n.slice(2))):Qoe(n)?rc(n):rc(R$(e,n)):rc(e)}var F$=500,U$=300*1e3,D$=new N$({max:F$,ttl:U$}),O$=new N$({max:F$,ttl:U$});function B$(t,e){if(!t)return{directory:e||Zi(),prefix:""};let n=Fv(t,e);if(t.endsWith("/")||t.endsWith(Uv))return{directory:n,prefix:""};let o=tie(n),r=eie(t);return{directory:o,prefix:r}}async function nie(t){let e=D$.get(t);if(e)return e;try{let o=(await L$(t,{withFileTypes:!0})).filter(r=>r.isDirectory()&&!r.name.startsWith(".")).map(r=>({name:r.name,path:$$(t,r.name),type:"directory"})).slice(0,100);return D$.set(t,o),o}catch(n){return fr(n),[]}}async function j$(t,e={}){let{basePath:n=Zi(),maxResults:o=10}=e,{directory:r,prefix:i}=B$(t,n),s=await nie(r),a=i.toLowerCase();return s.filter(c=>c.name.toLowerCase().startsWith(a)).slice(0,o).map(c=>({id:c.path,displayText:c.name+"/",description:"directory",metadata:{type:"directory"}}))}function z$(t){return t.startsWith("~/")||t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t==="~"||t==="."||t===".."}async function rie(t,e=!1){let n=`${t}:${e}`,o=O$.get(n);if(o)return o;try{let i=(await L$(t,{withFileTypes:!0})).filter(s=>e||!s.name.startsWith(".")).map(s=>({name:s.name,path:$$(t,s.name),type:s.isDirectory()?"directory":"file"})).sort((s,a)=>s.type==="directory"&&a.type!=="directory"?-1:s.type!=="directory"&&a.type==="directory"?1:s.name.localeCompare(a.name)).slice(0,100);return O$.set(n,i),i}catch(r){return fr(r),[]}}async function W$(t,e={}){let{basePath:n=Zi(),maxResults:o=10,includeFiles:r=!0,includeHidden:i=!1}=e,{directory:s,prefix:a}=B$(t,n),l=await rie(s,i),c=a.toLowerCase(),u=l.filter(f=>!r&&f.type==="file"?!1:f.name.toLowerCase().startsWith(c)).slice(0,o),d=t.includes("/")||t.includes(Uv),p="";if(d){let f=t.lastIndexOf("/"),m=t.lastIndexOf(Uv),g=Math.max(f,m);p=t.substring(0,g+1)}return(p.startsWith("./")||p.startsWith("."+Uv))&&(p=p.slice(2)),u.map(f=>{let m=p+f.name;return{id:m,displayText:f.type==="directory"?m+"/":m,metadata:{type:f.type}}})}async function*oie(){}var sC=null,K$=0,iie=6e4;async function sie(){let t=Date.now();if(sC&&t-K$<iie)return sC;let e=[],n=new Set;try{for await(let o of oie()){if(o.display&&o.display.startsWith("!")){let r=o.display.slice(1).trim();r&&!n.has(r)&&(n.add(r),e.push(r))}if(e.length>=50)break}}catch(o){}return sC=e,K$=t,e}async function H$(t){if(!t||t.length<2||!t.trim())return null;let n=await sie();for(let o of n)if(o.startsWith(t)&&o!==t)return{fullCommand:o,suffix:o.slice(t.length)};return null}import{z as V$}from"zod";function Bv(){let t=new Set;return{subscribe(e){return t.add(e),()=>{t.delete(e)}},emit(...e){for(let n of t)n(...e)},clear(){t.clear()}}}var aie="slack_search_channels",oc=new Map,aC=new Set,lie=0,q$=Bv(),m8e=q$.subscribe,jv=null,np=null;function G$(t){return t.find(e=>e.type==="connected"&&e.name.includes("slack"))}async function cie(t,e){let n=G$(t);if(!n||n.type!=="connected")return[];try{let r=(await n.client.callTool({name:aie,arguments:{query:e,limit:20,channel_types:"public_channel,private_channel"}},void 0,{timeout:5e3})).content;if(!Array.isArray(r))return[];let i=r.filter(s=>s.type==="text").map(s=>s.text).join(`
2097
+ `);return pie(die(i))}catch{return[]}}var uie=V$.object({results:V$.string()});function die(t){let e=t.trim();if(!e.startsWith("{"))return t;try{let n=uie.safeParse(JSON.parse(e));if(n.success)return n.data.results}catch{}return t}function pie(t){let e=[],n=new Set;for(let o of t.split(`
2098
+ `)){let r=o.match(/^Name:\s*#?([a-z0-9][a-z0-9_-]{0,79})\s*$/);r&&!n.has(r[1])&&(n.add(r[1]),e.push(r[1]))}return e}function Z$(t){return G$(t)!==void 0}function fie(t){let e=Math.max(t.lastIndexOf("-"),t.lastIndexOf("_"));return e>0?t.slice(0,e):t}function mie(t,e){let n,o=0;for(let[r,i]of oc)t.startsWith(r)&&r.length>o&&i.some(s=>s.startsWith(e))&&(n=i,o=r.length);return n}async function J$(t,e){if(!e)return[];let n=fie(e),o=e.toLowerCase(),r=oc.get(n)??mie(n,o);if(!r)if(jv===n&&np)r=await np;else{jv=n,np=cie(t,n),r=await np,oc.set(n,r);let i=aC.size;for(let s of r)aC.add(s);aC.size!==i&&(lie++,q$.emit()),oc.size>50&&oc.delete(oc.keys().next().value),jv===n&&(jv=null,np=null)}return r.filter(i=>i.startsWith(o)).sort().slice(0,10).map(i=>({id:`slack-channel-${i}`,displayText:`#${i}`}))}var Y$="team-lead";import{execFileSync as eF}from"node:child_process";import{readdir as rF}from"node:fs/promises";import{join as xie,sep as rp}from"node:path";var zv=new Int32Array(64),Wv=class{paths=[];lowerPaths=[];charBits=new Int32Array(0);pathLens=new Uint16Array(0);topLevelCache=null;readyCount=0;loadFromFileList(e){let n=new Set,o=[];for(let r of e)r.length>0&&!n.has(r)&&(n.add(r),o.push(r));this.buildIndex(o)}loadFromFileListAsync(e){let n=()=>{},o=new Promise(i=>{n=i}),r=this.buildAsync(e,n);return{queryable:o,done:r}}async buildAsync(e,n){let o=new Set,r=[],i=performance.now();for(let a=0;a<e.length;a++){let l=e[a];l.length>0&&!o.has(l)&&(o.add(l),r.push(l)),(a&255)===255&&performance.now()-i>4&&(await X$(),i=performance.now())}this.resetArrays(r),i=performance.now();let s=!0;for(let a=0;a<r.length;a++)this.indexPath(a),(a&255)===255&&performance.now()-i>4&&(this.readyCount=a+1,s&&(n(),s=!1),await X$(),i=performance.now());this.readyCount=r.length,n()}buildIndex(e){this.resetArrays(e);for(let n=0;n<e.length;n++)this.indexPath(n);this.readyCount=e.length}resetArrays(e){let n=e.length;this.paths=e,this.lowerPaths=new Array(n),this.charBits=new Int32Array(n),this.pathLens=new Uint16Array(n),this.readyCount=0,this.topLevelCache=vie(e,100)}indexPath(e){let n=this.paths[e].toLowerCase();this.lowerPaths[e]=n;let o=n.length;this.pathLens[e]=o;let r=0;for(let i=0;i<o;i++){let s=n.charCodeAt(i);s>=97&&s<=122&&(r|=1<<s-97)}this.charBits[e]=r}search(e,n){if(n<=0)return[];if(e.length===0)return this.topLevelCache?this.topLevelCache.slice(0,n):[];let o=e!==e.toLowerCase(),r=o?e:e.toLowerCase(),i=Math.min(r.length,64),s=new Array(i),a=0;for(let b=0;b<i;b++){let R=r.charAt(b);s[b]=R;let M=R.charCodeAt(0);M>=97&&M<=122&&(a|=1<<M-97)}let l=i*24+8+32,c=[],u=-1/0,{paths:d,lowerPaths:p,charBits:f,pathLens:m,readyCount:g}=this;e:for(let b=0;b<g;b++){if((f[b]&a)!==a)continue;let R=o?d[b]:p[b],M=R.indexOf(s[0]);if(M===-1)continue;zv[0]=M;let B=0,S=0,x=M;for(let U=1;U<i;U++){if(M=R.indexOf(s[U],x+1),M===-1)continue e;zv[U]=M;let j=M-x-1;j===0?S+=4:B+=3+j*1,x=M}if(c.length===n&&l+S-B<=u)continue;let T=d[b],W=m[b],A=i*16+S-B;A+=Q$(T,zv[0],!0);for(let U=1;U<i;U++)A+=Q$(T,zv[U],!1);if(A+=Math.max(0,32-(W>>2)),c.length<n)c.push({path:T,fuzzScore:A}),c.length===n&&(c.sort((U,j)=>U.fuzzScore-j.fuzzScore),u=c[0].fuzzScore);else if(A>u){let U=0,j=c.length;for(;U<j;){let _=U+j>>1;c[_].fuzzScore<A?U=_+1:j=_}c.splice(U,0,{path:T,fuzzScore:A}),c.shift(),u=c[0].fuzzScore}}c.sort((b,R)=>R.fuzzScore-b.fuzzScore);let h=c.length,y=Math.max(h,1),v=new Array(h);for(let b=0;b<h;b++){let R=c[b].path,M=b/y,B=R.includes("test")?Math.min(M*1.05,1):M;v[b]={path:R,score:B}}return v}};function Q$(t,e,n){if(e===0)return n?8:0;let o=t.charCodeAt(e-1);return gie(o)?8:hie(o)&&yie(t.charCodeAt(e))?6:0}function gie(t){return t===47||t===92||t===45||t===95||t===46||t===32}function hie(t){return t>=97&&t<=122}function yie(t){return t>=65&&t<=90}function X$(){return new Promise(t=>setImmediate(t))}function vie(t,e){let n=new Set;for(let r of t){let i=r.length;for(let a=0;a<r.length;a++){let l=r.charCodeAt(a);if(l===47||l===92){i=a;break}}let s=r.slice(0,i);if(s.length>0&&(n.add(s),n.size>=e))break}let o=Array.from(n);return o.sort((r,i)=>{let s=r.length-i.length;return s!==0?s:r<i?-1:r>i?1:0}),o.slice(0,e).map(r=>({path:r,score:0}))}var oF=15,tF=12e3,Tie=new Set(["node_modules",".git","__pycache__"]),Hv=null,Kv=null,iF=Bv(),sF=iF.subscribe;function lC(t){return t.endsWith("/")||t.endsWith(rp)}function wie(){return Hv||(Hv=new Wv),Hv}function aF(){return process.env.PANDA_TYPEAHEAD_DISABLE_FILE_INDEX==="1"}function _ie(t){try{let e=eF("git",["ls-files","--cached","-z"],{cwd:t,encoding:"utf8",maxBuffer:67108864}),n=eF("git",["ls-files","--others","--exclude-standard","-z"],{cwd:t,encoding:"utf8",maxBuffer:64*1024*1024}),o=new Set,r=[];for(let i of[e,n])if(i)for(let s of i.split("\0"))s&&!o.has(s)&&(o.add(s),r.push(s));return r}catch{return[]}}async function Sie(t){let e=[],n=[""];for(;n.length>0&&e.length<tF;){let o=n.shift(),r=o?xie(t,o):t,i;try{i=await rF(r,{withFileTypes:!0})}catch{continue}for(let s of i){if(e.length>=tF)break;let a=s.name,l=o?`${o}${rp}${a}`:a;if(s.isDirectory()){if(Tie.has(a))continue;n.push(l)}else s.isFile()&&e.push(l)}}return e}function nF(t){return(t.endsWith(rp)?t.slice(0,-1):t).startsWith(".")}async function kie(){let t=Zi();try{let n=(await rF(t,{withFileTypes:!0})).map(o=>{let r=o.name;return o.isDirectory()?r+rp:r});return n.sort((o,r)=>{let i=nF(o),s=nF(r);return i!==s?i?1:-1:o.localeCompare(r,void 0,{sensitivity:"base"})}),n}catch(e){return fr(e),[]}}function Iie(t,e){return t.search(e,oF).map(o=>({id:`file-${o.path}`,displayText:o.path,metadata:{score:o.score,type:lC(o.path)?"directory":"file"}}))}function Cie(t,e){return{id:`file-${t}`,displayText:t,metadata:e!==void 0?{score:e,type:lC(t)?"directory":"file"}:{type:lC(t)?"directory":"file"}}}function Eie(t){let e=new Set,n=[];for(let o of t){let r=Math.max(o.lastIndexOf("/"),o.lastIndexOf("\\"));for(;r>0;){let i=o.slice(0,r+1).replace(/\\/g,"/");e.has(i)||(e.add(i),n.push(i)),r=Math.max(o.lastIndexOf("/",r-1),o.lastIndexOf("\\",r-1))}}return n}function lF(t){if(t.length===0)return"";let e=t.map(o=>o.displayText),n=e[0];for(let o=1;o<e.length;o++){let r=e[o],i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i++;if(n=n.slice(0,i),!n)return""}return n}function Vv(){if(aF()||Kv)return;let t=Zi(),e=wie();Kv=(async()=>{try{let n=_ie(t);if(n.length===0&&(n=await Sie(t)),n.length===0)return;let{done:o}=e.loadFromFileListAsync(n.concat(Eie(n)));await o,iF.emit()}finally{Kv=null}})().catch(n=>{fr(n),Kv=null})}async function cF(t,e=!1){if(!t&&!e)return[];if(aF())return[];if(t===""||t==="."||t==="./")return Vv(),(await kie()).slice(0,oF).map(c=>Cie(c));let n=Date.now();Vv();let o=t,r="."+rp;t.startsWith(r)&&(o=t.slice(2)),o.startsWith("~")&&(o=Fv(o));let i=Hv,s=i?Iie(i,o):[],a=Date.now()-n;return s.length,t.length,s}function qv(t,e,n,o,r,i){let s=typeof t=="string"?t:t.displayText,a=e.substring(0,o)+s+e.substring(o+n.length),l=o+s.length;return r(a),i(l),{newInput:a,newCursorPos:l}}import Pie from"fuse.js";import{basename as Rie}from"node:path";function uF(t){switch(t.type){case"file":return{id:`file-${t.path}`,displayText:t.displayText,description:t.description,metadata:{score:t.score,type:t.pathType??"file"}};case"mcp_resource":return{id:`mcp-resource-${t.server}__${t.uri}`,displayText:t.displayText,description:t.description};case"agent":return{id:`agent-${t.agentType}`,displayText:t.displayText,description:t.description,color:t.color}}}var cC=15,Aie=60;function dF(t){return Ys(t,Aie)}function Mie(t,e,n=!1){if(!e&&!n)return[];try{let o=t.map(i=>({type:"agent",displayText:`${i.agentType} (agent)`,description:dF(i.whenToUse),agentType:i.agentType,color:(i.agentType,void 0)}));if(!e)return o;let r=e.toLowerCase();return o.filter(i=>i.agentType.toLowerCase().includes(r)||i.displayText.toLowerCase().includes(r))}catch(o){return fr(o),[]}}async function uC(t,e,n,o=!1){if(!t&&!o)return[];let[r,i]=await Promise.all([cF(t,o),Promise.resolve(Mie(n,t,o))]),s=r.map(u=>({type:"file",displayText:u.displayText,description:u.description,path:u.displayText,filename:Rie(u.displayText),score:u.metadata?.score,pathType:u.metadata?.type})),a=Object.values(e).flat().map(u=>({type:"mcp_resource",displayText:`${u.server}:${u.uri}`,description:dF(u.description||u.name||u.uri),server:u.server,uri:u.uri,name:u.name||u.uri}));if(!t)return[...s,...a,...i].slice(0,cC).map(uF);let l=[...a,...i],c=[];for(let u of s)c.push({source:u,score:u.score??.5});if(l.length>0){let d=new Pie(l,{includeScore:!0,threshold:.6,keys:[{name:"displayText",weight:2},{name:"name",weight:3},{name:"server",weight:1},{name:"description",weight:1},{name:"agentType",weight:3}]}).search(t,{limit:cC});for(let p of d)c.push({source:p.item,score:p.score??.5})}return c.sort((u,d)=>u.score-d.score),c.slice(0,cC).map(u=>u.source).map(uF)}import Die,{createContext as Oie,useContext as Lie,useMemo as Nie}from"react";var $ie=()=>{},Fie={addNotification:$ie},pF=Oie(Fie);function fF(t){let e=Nie(()=>{let n=t.appendInfo;return{addNotification(o){!n||!o.message||n(o.message)}}},[t.appendInfo]);return Die.createElement(pF.Provider,{value:e},t.children)}function mF(){return Lie(pF)}var Uie=/^@[\p{L}\p{N}\p{M}_\-./\\()[\]~:]*/u,vF=/^[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+/u,Bie=/(@[\p{L}\p{N}\p{M}_\-./\\()[\]~:]*|[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+)$/u,jie=/[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+$/u,zie=/(^|\s)@([\p{L}\p{N}\p{M}_\-./\\()[\]~:]*|"[^"]*"?)$/u,pC=/(^|\s)#([a-z0-9][a-z0-9_-]*)$/;function _F(t){return typeof t=="object"&&t!==null&&"type"in t&&(t.type==="directory"||t.type==="file")}function ia(t,e,n){if(n.length===0)return-1;if(e<0)return 0;let o=t[e];if(!o)return 0;let r=n.findIndex(i=>i.id===o.id);return r>=0?r:0}function bF(t){let e=t.metadata;return e?.sessionId?`/resume ${e.sessionId}`:`/resume ${t.displayText}`}function xF(t){return t.isQuoted?t.token.slice(2).replace(/"$/,""):t.token.startsWith("@")?t.token.substring(1):t.token}function fC(t){let{displayText:e,mode:n,hasAtPrefix:o,needsQuotes:r,isQuoted:i,isComplete:s,preferFileChip:a}=t,l=s?" ":"";return a&&n!=="bash"&&s?`${Rd(e)}${l}`:i||r?n==="bash"?`"${e}"${l}`:`@"${e}"${l}`:o?n==="bash"?`${e}${l}`:`@${e}${l}`:e}function mC(t,e,n,o,r,i){let l=e.slice(0,n).lastIndexOf(" ")+1,c;i==="variable"?c="$"+t.displayText+" ":i==="command"?c=t.displayText+" ":c=t.displayText;let u=e.slice(0,l)+c+e.slice(n);o(u),r(l+c.length)}var TF=/(^|\s)@[\w-]*$/;function Gv(t,e,n,o,r,i){let s=e.slice(0,n).match(o);if(!s||s.index===void 0)return;let a=s.index+(s[1]?.length??0),l=e.slice(0,a),c=l+t.displayText+" "+e.slice(n);r(c),i(l.length+t.displayText.length+1)}var Zv=null;async function Wie(t,e){try{return Zv&&Zv.abort(),Zv=new AbortController,await k$(t,e,Zv.signal)}catch{return[]}}function Kie(t,e,n,o,r){let i=r?"/":" ",s=t.slice(0,n),a=t.slice(n+o),l="@"+e+i;return{newInput:s+l+a,cursorPos:s.length+l.length}}function Hie(t,e,n){let r=sa(t,e,!0)??sa(t,e,!1);if(!r)return{applied:!1,isDirectory:!1,newInput:t,cursorPos:e};let i=_F(n.metadata)&&n.metadata.type==="directory",s=Kie(t,n.id,r.startPos,r.token.length,i);return{applied:!0,isDirectory:i,newInput:s.newInput,cursorPos:s.cursorPos}}function sa(t,e,n=!1){if(!t)return null;let o=t.substring(0,e);if(n){let c=/@"([^"]*)"?$/,u=o.match(c);if(u&&u.index!==void 0){let p=t.substring(e).match(/^[^"]*"?/),f=p?p[0]:"";return{token:u[0]+f,startPos:u.index,isQuoted:!0}}}if(n){let c=o.lastIndexOf("@");if(c>=0&&(c===0||/\s/.test(o[c-1]))){let u=o.substring(c),d=u.match(Uie);if(d&&d[0].length===u.length){let f=t.substring(e).match(vF),m=f?f[0]:"";return{token:d[0]+m,startPos:c,isQuoted:!1}}}}let r=n?Bie:jie,i=o.match(r);if(!i||i.index===void 0)return null;let a=t.substring(e).match(vF),l=a?a[0]:"";return{token:i[0]+l,startPos:i.index,isQuoted:!1}}function Vie(t){if(Jo(t)){let e=t.indexOf(" ");return e===-1?{commandName:t.slice(1),args:""}:{commandName:t.slice(1,e),args:t.slice(e+1)}}return null}function wF(t,e){return!t&&e.includes(" ")&&!e.endsWith(" ")}function SF({commands:t,onInputChange:e,onSubmit:n,setCursorOffset:o,input:r,cursorOffset:i,mode:s,agents:a,setSuggestionsState:l,suggestionsState:{suggestions:c,selectedSuggestion:u,commandArgumentHint:d},suppressSuggestions:p=!1,markAccepted:f,onModeChange:m}){let{addNotification:g}=mF(),h=g$("chat:thinkingToggle","Chat","Ctrl+T"),[y,v]=dC("none"),b=hF(()=>{let w=t.filter(D=>!D.isHidden);return w.length===0?void 0:Math.max(...w.map(D=>Wt(D).length))+6},[t]),[R,M]=dC(void 0),B=ra(w=>w.mcp.resources),S=ra,x=ra(w=>w.promptSuggestion),T=ra(w=>!!w.viewingAgentTaskId),W=zs(),[A,U]=dC(void 0),j=hF(()=>{if(s!=="prompt"||p)return;let w=$v(r,i);if(!w)return;let z=nC(w.partialCommand,t);if(z)return{text:z.suffix,fullCommand:z.fullCommand,insertPosition:w.startPos+1+w.partialCommand.length}},[r,i,s,t,p]),_=p?void 0:s==="prompt"?j:A,$=Ji(i);$.current=i;let N=Ji(null),K=Ji(""),E=Ji(""),V=Ji(""),ae=Ji(""),Te=Ji(c);Te.current=c;let me=Ji(null),ne=go(()=>{l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0),U(void 0)},[l]),Pe=go(async(w,z=!1)=>{N.current=w;let D=await uC(w,B,a,z);if(N.current===w){if(D.length===0){l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}l(pe=>({commandArgumentHint:void 0,suggestions:D,selectedSuggestion:ia(pe.suggestions,pe.selectedSuggestion,D)})),v(D.length>0?"file":"none"),M(void 0)}},[B,l,v,M,a]);gF(()=>(Vv(),sF(()=>{let w=N.current;w!==null&&(N.current=null,Pe(w,w===""))})),[Pe]);let de=yF(Pe,50),H=go(async w=>{ae.current=w;let z=await J$(S.getState().mcp.clients,w);ae.current===w&&(l(D=>({commandArgumentHint:void 0,suggestions:z,selectedSuggestion:ia(D.suggestions,D.selectedSuggestion,z)})),v(z.length>0?"slack-channel":"none"),M(void 0))},[l]),te=yF(H,150),ee=go(async(w,z)=>{let D=z??$.current;if(p){de.cancel(),ne();return}if(s!=="bash"&&!Jo(w)&&D>0&&/\s/.test(w[D-1]??"")){(y==="file"||y==="directory")&&(de.cancel(),ne());return}if(s==="prompt"){let ye=$v(w,D);if(ye&&nC(ye.partialCommand,t)){l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}}if(s==="bash"&&w.trim()){V.current=w;let ye=await H$(w);if(V.current!==w)return;if(ye){U({text:ye.suffix,fullCommand:ye.fullCommand,insertPosition:w.length}),l(()=>({commandArgumentHint:void 0,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}else U(void 0)}let pe=s!=="bash"?w.substring(0,D).match(/(^|\s)@([\w-]*)$/):null;if(pe){let ye=(pe[2]??"").toLowerCase(),Re=S.getState(),Ae=[],Ke=new Set;if(h$()&&Re.teamContext)for(let He of Object.values(Re.teamContext.teammates??{}))He.name!==Y$&&He.name.toLowerCase().startsWith(ye)&&(Ke.add(He.name),Ae.push({id:`dm-${He.name}`,displayText:`@${He.name}`,description:"send message"}));for(let[He,_t]of Re.agentNameRegistry){if(Ke.has(He)||!He.toLowerCase().startsWith(ye))continue;let xt=Re.tasks[_t]?.status;Ae.push({id:`dm-${He}`,displayText:`@${He}`,description:xt?`send message \xB7 ${xt}`:"send message"})}if(ye.length>0&&Ae.length>0){de.cancel(),l(He=>({commandArgumentHint:void 0,suggestions:Ae,selectedSuggestion:ia(He.suggestions,He.selectedSuggestion,Ae)})),v("agent"),M(void 0);return}}if(s==="prompt"){let ye=w.substring(0,D).match(pC);if(ye&&Z$(S.getState().mcp.clients)){te(ye[2]);return}else y==="slack-channel"&&(te.cancel(),ne())}let Se=w.substring(0,D).match(zie),st=D===w.length&&D>0&&w.length>0&&w[D-1]===" ";if(s==="prompt"&&Jo(w)&&D>0){let ye=Vie(w);if(ye&&ye.commandName==="add-dir"&&ye.args){let{args:Re}=ye;if(Re.match(/\s+$/)){de.cancel(),ne();return}let Ae=await j$(Re);if(Ae.length>0){l(Ke=>({suggestions:Ae,selectedSuggestion:ia(Ke.suggestions,Ke.selectedSuggestion,Ae),commandArgumentHint:void 0})),v("directory");return}de.cancel(),ne();return}if(ye&&ye.commandName==="resume"&&ye.args!==void 0&&w.includes(" ")){let{args:Re}=ye,Ke=(await C$(Re,{limit:10})).map(He=>{let _t=I$(He);return{id:`resume-title-${_t}`,displayText:He.customTitle,description:$8(He),metadata:{sessionId:_t}}});if(Ke.length>0){l(He=>({suggestions:Ke,selectedSuggestion:ia(He.suggestions,He.selectedSuggestion,Ke),commandArgumentHint:void 0})),v("custom-title");return}ne();return}}if(s==="prompt"&&Jo(w)&&D>0&&!wF(st,w)){let ye;if(w.length>1){let Ae=w.indexOf(" "),Ke=Ae===-1?w.slice(1):w.slice(1,Ae),He=Ae!==-1&&w.slice(Ae+1).trim().length>0,_t=Ae!==-1&&w.length===Ae+1;if(Ae!==-1){let xt=t.find(Yi=>Wt(Yi)===Ke);if(xt||He){if(xt?.argumentHint&&_t)ye=xt.argumentHint;else if(xt?.type==="prompt"&&xt.argNames?.length&&w.endsWith(" ")){let Yi=w.slice(Ae+1),ic=b$(Yi);ye=x$(xt.argNames,ic)}l(()=>({commandArgumentHint:ye,suggestions:[],selectedSuggestion:-1})),v("none"),M(void 0);return}}}let Re=rC(w,t);l(()=>({commandArgumentHint:ye,suggestions:Re,selectedSuggestion:Re.length>0?0:-1})),v(Re.length>0?"command":"none"),Re.length>0&&M(b);return}if(y==="command"?(de.cancel(),ne()):Jo(w)&&wF(st,w)&&l(ye=>ye.commandArgumentHint?{...ye,commandArgumentHint:void 0}:ye),y==="custom-title"&&ne(),y==="agent"&&Te.current.some(ye=>ye.id?.startsWith("dm-"))&&(w.substring(0,D).match(/(^|\s)@([\w-]*)$/)||ne()),Se&&s!=="bash"){let ye=sa(w,D,!0);if(ye&&ye.token.startsWith("@")){let Re=xF(ye);E.current=Re;let Ae=await W$(Re,{maxResults:10});if(E.current!==Re)return;if(Ae.length>0){l(Ke=>({suggestions:Ae,selectedSuggestion:ia(Ke.suggestions,Ke.selectedSuggestion,Ae),commandArgumentHint:void 0})),v("directory");return}if(z$(Re)){de.cancel(),l(Ke=>({...Ke,suggestions:[],selectedSuggestion:-1,commandArgumentHint:void 0})),v("none");return}if(N.current===Re)return;de(Re,!0);return}}if(y==="file"){let ye=sa(w,D,!0);if(ye){let Re=xF(ye);if(N.current===Re)return;de(Re,!1)}else de.cancel(),ne()}if(y==="shell"){let ye=Te.current[0]?.metadata?.inputSnapshot;(s!=="bash"||w!==ye)&&(de.cancel(),ne())}},[y,t,l,ne,de,te,s,p,b]);gF(()=>{me.current!==r&&(K.current!==r&&(K.current=r,N.current=null),me.current=null,ee(r))},[r,ee]);let ue=go((w,z)=>{if(Jo(r)){if(z==="enter")return de.cancel(),ne(),!1;let pe=r.indexOf(" "),Se=r.slice(0,pe+1),st=_F(w.metadata)&&w.metadata.type==="directory",ye=st?"/":" ",Re=Se+w.id+ye;return e(Re),o(Re.length),st?(l(Ae=>({...Ae,commandArgumentHint:void 0})),ee(Re,Re.length)):ne(),!0}let D=Hie(r,i,w);return D.applied?(e(D.newInput),o(D.cursorPos),de.cancel(),D.isDirectory?z==="enter"?(me.current=D.newInput,ne(),!0):(l(pe=>({...pe,commandArgumentHint:void 0})),ee(D.newInput,D.cursorPos),!0):(ne(),!0)):(de.cancel(),ne(),!0)},[r,i,de,ne,e,o,l,ee]),Q=go(async()=>{if(_){if(s==="bash"){e(_.fullCommand),o(_.fullCommand.length),U(void 0);return}let w=$v(r,i);if(w){let z=r.slice(0,w.startPos),D=r.slice(w.startPos+w.token.length),pe=z+"/"+_.fullCommand+" "+D,Se=w.startPos+1+_.fullCommand.length+1;e(pe),o(Se);return}}if(c.length>0){de.cancel(),te.cancel();let w=u===-1?0:u,z=c[w];if(y==="command"&&w<c.length)z&&(oC(z,!1,t,e,o,n),ne());else if(y==="custom-title"&&c.length>0){if(z){let D=bF(z);e(D),o(D.length),ne()}}else if(y==="directory"&&c.length>0){let D=c[w];D&&ue(D,"tab")}else if(y==="shell"&&c.length>0){let D=c[w];if(D){let pe=D.metadata;mC(D,r,i,e,o,pe?.completionType),ne()}}else if(y==="agent"&&c.length>0&&c[w]?.id?.startsWith("dm-")){let D=c[w];D&&(Gv(D,r,i,TF,e,o),ne())}else if(y==="slack-channel"&&c.length>0){let D=c[w];D&&(Gv(D,r,i,pC,e,o),ne())}else if(y==="file"&&c.length>0){let D=sa(r,i,!0);if(!D){ne();return}let pe=lF(c),Se=D.token.startsWith("@"),st;if(D.isQuoted?st=D.token.slice(2).replace(/"$/,"").length:Se?st=D.token.length-1:st=D.token.length,pe.length>st){let ye=fC({displayText:pe,mode:s,hasAtPrefix:Se,needsQuotes:!1,isQuoted:D.isQuoted,isComplete:!1}),{newInput:Re,newCursorPos:Ae}=qv(ye,r,D.token,D.startPos,e,o);ee(Re,Ae)}else if(w<c.length){let ye=c[w];if(ye){let Re=ye.displayText.includes(" "),Ae=fC({displayText:ye.displayText,mode:s,hasAtPrefix:Se,needsQuotes:Re,isQuoted:D.isQuoted,isComplete:!0,preferFileChip:s==="prompt"});qv(Ae,r,D.token,D.startPos,e,o),ne()}}}}else if(r.trim()!==""){let w,z;if(s==="bash"){w="shell";let D=await Wie(r,i);if(D.length===1){let pe=D[0];if(pe){let Se=pe.metadata;mC(pe,r,i,e,o,Se?.completionType)}z=[]}else z=D}else{w="file";let D=sa(r,i,!0);if(D){let pe=D.token.startsWith("@"),Se=pe?D.token.substring(1):D.token;z=await uC(Se,B,a,pe)}else z=[]}z.length>0&&(l(D=>({commandArgumentHint:void 0,suggestions:z,selectedSuggestion:ia(D.suggestions,D.selectedSuggestion,z)})),v(w),M(void 0))}},[c,u,r,y,t,s,e,o,n,ne,i,ee,B,l,a,de,te,_,ue]),We=go(()=>{if(c.length===0)return!1;let w=u<0?0:Math.min(u,c.length-1),z=c[w];if(y==="command"&&w<c.length)return z?(oC(z,!0,t,e,o,n),de.cancel(),ne(),!0):!1;if(y==="custom-title"&&w<c.length){if(z){let D=bF(z);return e(D),o(D.length),n(D,!0),de.cancel(),ne(),!0}return!1}else if(y==="shell"&&w<c.length){let D=c[w];if(D){let pe=D.metadata;return mC(D,r,i,e,o,pe?.completionType),de.cancel(),ne(),!0}return!1}else{if(y==="agent"&&w<c.length&&z?.id?.startsWith("dm-"))return Gv(z,r,i,TF,e,o),de.cancel(),ne(),!0;if(y==="slack-channel"&&w<c.length)return z?(Gv(z,r,i,pC,e,o),te.cancel(),ne(),!0):!1;if(y==="file"&&w<c.length){let D=sa(r,i,!0);if(!D)return de.cancel(),ne(),!0;if(z){let pe=D.token.startsWith("@"),Se=z.displayText.includes(" "),st=fC({displayText:z.displayText,mode:s,hasAtPrefix:pe,needsQuotes:Se,isQuoted:D.isQuoted,isComplete:!0,preferFileChip:s==="prompt"});return qv(st,r,D.token,D.startPos,e,o),de.cancel(),ne(),!0}return!1}else if(y==="directory"&&w<c.length)return z?ue(z,"enter"):!1}return!1},[c,u,y,t,r,i,s,e,o,n,ne,de,te,ue]),Qt=go(()=>{de.cancel(),te.cancel(),ne(),me.current=r},[de,te,ne,r]),Xt=go(()=>{l(w=>({...w,selectedSuggestion:w.selectedSuggestion<=0?c.length-1:w.selectedSuggestion-1}))},[c.length,l]),ln=go(()=>{l(w=>({...w,selectedSuggestion:w.selectedSuggestion>=c.length-1?0:w.selectedSuggestion+1}))},[c.length,l]),en=c.length>0||!!_,Ar=m$();f$("autocomplete",en),gd("Autocomplete",en);function nr(w){let z=tp(w);if(z!=="prompt"&&m){m(z);let D=p$(w);e(D),o(D.length)}else e(w),o(w.length)}return{suggestions:c,selectedSuggestion:u,suggestionType:y,maxColumnWidth:R,commandArgumentHint:d,inlineGhostText:_,handleKeyDown:w=>{if(w.key==="right"&&!T){let D=x?.text,pe=x?.shownAt;if(D&&pe&&pe>0&&r===""){f(),nr(D),w.stopImmediatePropagation();return}}if(w.key==="tab"&&!w.shift){if(c.length>0||_){w.preventDefault(),Q(),w.stopImmediatePropagation();return}let D=x?.text,pe=x?.shownAt;if(D&&pe&&pe>0&&r===""&&!T){w.preventDefault(),f(),nr(D);return}r.trim()===""&&(w.preventDefault(),g({key:"thinking-toggle-hint",message:`Use ${h} to toggle thinking`,priority:"immediate",timeoutMs:3e3}));return}if(c.length>0){if(w.key==="escape"&&!Ar){w.preventDefault(),Qt(),w.stopImmediatePropagation();return}if(w.key==="up"){w.preventDefault(),Xt(),w.stopImmediatePropagation();return}if(w.key==="down"){w.preventDefault(),ln(),w.stopImmediatePropagation();return}}if(c.length===0)return;let z=W?.pendingChord!=null;if(w.ctrl&&w.key==="n"&&!z){w.preventDefault(),ln();return}if(w.ctrl&&w.key==="p"&&!z){w.preventDefault(),Xt();return}w.key==="return"&&!w.shift&&!w.meta&&(w.preventDefault(),We()&&w.stopImmediatePropagation())}}}var gC=[{type:"local",name:"vim",description:"\u5207\u6362 Vim \u952E\u4F4D\uFF08\u4E0E Ctrl+Shift+Y \u76F8\u540C\uFF09"},{type:"local",name:"new",description:"\u65B0\u5EFA\u4F1A\u8BDD"},{type:"local",name:"clear",description:"\u65B0\u5EFA\u4F1A\u8BDD\uFF08\u522B\u540D\uFF0C\u4E0E /new \u76F8\u540C\uFF09"},{type:"local",name:"session",description:"\u6253\u5F00\u4F1A\u8BDD\u5217\u8868\uFF08\u522B\u540D\uFF0C\u4E0E /conversations \u76F8\u540C\uFF09"},{type:"local",name:"conversations",description:"\u6253\u5F00\u4F1A\u8BDD\u5217\u8868\uFF0C\u9009\u62E9\u5E76\u5207\u6362\u4F1A\u8BDD"},{type:"local",name:"resume",description:"\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF08\u4E0E\u4F1A\u8BDD\u5217\u8868\u76F8\u540C\uFF1B\u53EF /resume <\u5E8F\u53F7|conversationId>\uFF09"},{type:"local",name:"switch",description:"\u5207\u6362\u4F1A\u8BDD\uFF1A/switch <\u5217\u8868\u5E8F\u53F7|conversationId>"},{type:"local",name:"model",description:"\u5237\u65B0\u6A21\u578B\u5217\u8868\u5E76\u6253\u5F00\u6A21\u578B\u9009\u62E9\u5668\uFF08\u53EF\u8DDF\u6A21\u578B id\uFF09"},{type:"local",name:"auth",description:"\u7EDF\u4E00\u8BA4\u8BC1\u5165\u53E3\uFF1A/auth <login|register|logout|whoami>"},{type:"local",name:"register",description:"\u6CE8\u518C Panda \u8D26\u53F7\uFF08\u90AE\u7BB1\u9A8C\u8BC1\u7801 + \u5BC6\u7801\uFF09"},{type:"local",name:"login",description:"\u767B\u5F55 Panda \u8D26\u53F7\uFF08\u7528\u6237\u540D/\u90AE\u7BB1 + \u5BC6\u7801\uFF09"},{type:"local",name:"logout",description:"\u9000\u51FA\u5F53\u524D Panda \u767B\u5F55"},{type:"local",name:"whoami",description:"\u663E\u793A\u5F53\u524D\u767B\u5F55\u7528\u6237\u4FE1\u606F"},{type:"local",name:"mode",description:"\u6253\u5F00\u4EA4\u4E92\u6A21\u5F0F\u9009\u62E9\u5668\uFF1B\u4E5F\u53EF /mode <agent|ask|plan|office|team> \u76F4\u63A5\u5207\u6362"},{type:"local",name:"team",description:"\u6253\u5F00\u5B50 Agent \u89D2\u8272\u9009\u62E9\uFF08\u975E team \u6A21\u5F0F\u65F6\u4F1A\u5148\u5207\u6362\u5230 team\uFF09"},{type:"local",name:"mcp",description:"\u7BA1\u7406 MCP \u670D\u52A1\u5668",argumentHint:"[list|enable <name>|disable <name>]"},{type:"local",name:"fork",description:"\u57FA\u4E8E\u5F53\u524D\u5BF9\u8BDD\u521B\u5EFA\u5206\u53C9\u4F1A\u8BDD\uFF08\u4FDD\u7559\u5386\u53F2\uFF0C\u65B0\u4F1A\u8BDD ID \u7EE7\u7EED\uFF09"},{type:"local",name:"compact",description:"\u538B\u7F29\u5BF9\u8BDD\u4E0A\u4E0B\u6587\uFF08\u6458\u8981\u5386\u53F2\uFF0C\u964D\u4F4E token \u5360\u7528\uFF09"},{type:"local",name:"commit",description:"\u63D0\u4EA4\u5F53\u524D\u5DE5\u4F5C\u533A\u53D8\u66F4\uFF08\u751F\u6210\u5E76\u6267\u884C git commit\uFF09"},{type:"local",name:"update",description:"\u68C0\u67E5\u5E76\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\uFF08\u53EF\u5E26\u53C2\u6570: --check, --yes\uFF09"},{type:"local",name:"help",description:"\u663E\u793A\u5E2E\u52A9\u548C\u4F7F\u7528\u6280\u5DE7\uFF08? \u952E\u540C\u6548\uFF09",aliases:["?"]},{type:"local",name:"todo",description:"\u67E5\u770B/\u7BA1\u7406\u5F85\u529E\u4E8B\u9879\u3002\u7EAF /todo \u6253\u5F00\u5217\u8868\uFF0C/todo \u4E8B\u9879 \u6DFB\u52A0\u65B0\u7684\u5F85\u529E\u9879"},{type:"local",name:"debug",description:"\u67E5\u770B\u4F1A\u8BDD\u8C03\u8BD5\u65E5\u5FD7\u8DEF\u5F84\u6216\u5386\u53F2\u6587\u4EF6\u5185\u5BB9\uFF08~/.panda/debug/<workspace>/<conversation>.log\uFF09\uFF1B/debug clear \u6E05\u7A7A\u8BE5\u6587\u4EF6\u3002\u8FD0\u884C\u65F6\u4E0D\u518D\u81EA\u52A8\u5199\u5165\u6B64\u6587\u4EF6"},{type:"local",name:"testdiff",description:"\u8C03\u8BD5 diff \u80CC\u666F\u8272\u8FDE\u7EED\u6027\uFF1A\u5728\u804A\u5929\u4E2D\u6E32\u67D3\u591A\u79CD diff \u6392\u7248\u6837\u5F0F"}];function kF(t){return new Set(t.filter(e=>e.type==="local"||e.type==="local-jsx").map(e=>Wt(e).toLowerCase()))}function IF(t,e){return t.filter(n=>!e.has(n.name.toLowerCase())).map(n=>({type:"prompt",name:n.name,description:n.description,source:n.source==="project"?"localSettings":"userSettings",argNames:[]}))}function CF(t,e,n){let o=/^\/([^\s]+)(?:\s+(.*))?$/s.exec(t);if(!o)return null;let r=o[1]??"",i=o[2]??"",s=r.toLowerCase();if(n.has(s))return null;let a=e.find(l=>l.name.toLowerCase()===s);return a?{skillName:a.name,tail:i}:null}function EF(t){if(!t.startsWith("/"))return!1;let e=t.indexOf(" ");switch((e===-1?t:t.slice(0,e)).toLowerCase()){case"/new":case"/clear":case"/conversations":case"/session":case"/resume":case"/switch":case"/fork":case"/model":case"/login":case"/logout":case"/whoami":case"/mode":case"/team":case"/mcp":return!0;default:return!1}}var Jv=240;function PF(t){if(t.kind==="conversation_action"){let o=t.displayLabel??t.actionId;return o.length<=Jv?o:`${o.slice(0,Jv)}\u2026`}let n=xs(t.displayContent??t.prompt).trim().replace(/\s+/g," ");return n.length<=Jv?n||"\uFF08\u7A7A\u6D88\u606F\uFF09":`${n.slice(0,Jv)}\u2026`}var Yv=[{id:"shortcut-submit",title:"Enter \u2014 \u63D0\u4EA4\u8F93\u5165",detail:"\u5C06\u5F53\u524D\u8F93\u5165\u63D0\u4EA4\u7ED9\u6A21\u578B\u3002\u6A21\u578B\u5904\u7406\u4E2D\u6309 Enter \u5219\u5C06\u6D88\u606F\u52A0\u5165\u961F\u5217\u3002"},{id:"shortcut-newline",title:"Shift+Enter \u2014 \u6362\u884C",detail:"\u5728\u8F93\u5165\u4E2D\u63D2\u5165\u6362\u884C\u3002\u7528\u4E8E\u591A\u884C\u8F93\u5165\u3002"},{id:"shortcut-esc",title:"Esc \u2014 \u4E2D\u65AD / \u6E05\u7A7A",detail:"\u6A21\u578B\u8FD0\u884C\u65F6\uFF1A\u53CC\u51FB Esc \u4E2D\u65AD\u5F53\u524D\u56DE\u5408\u3002\u7A7A\u95F2\u65F6\uFF1A\u53CC\u51FB Esc \u6E05\u7A7A\u8F93\u5165\u3002"},{id:"shortcut-thinking",title:"Ctrl+T \u2014 \u601D\u8003\u5C55\u5F00/\u6298\u53E0",detail:"\u5207\u6362\u6A21\u578B\u601D\u8003\u5185\u5BB9\u7684\u663E\u793A\u6A21\u5F0F\u3002\u6298\u53E0\u4E3A\u5355\u884C\uFF0C\u5C55\u5F00\u53EF\u67E5\u770B\u5B8C\u6574\u63A8\u7406\u3002"},{id:"shortcut-vim-toggle",title:"Ctrl+Shift+Y \u2014 Vim \u6A21\u5F0F\u5207\u6362",detail:"\u5207\u6362 Vim \u952E\u4F4D\u3002\u540C /vim \u547D\u4EE4\u3002"},{id:"shortcut-bottom",title:"Ctrl+Shift+E \u2014 \u56DE\u5230\u5E95\u90E8",detail:"\u5C06\u5BF9\u8BDD\u6EDA\u52A8\u56DE\u6700\u5E95\u90E8\uFF08\u6700\u65B0\u6D88\u606F\uFF09\u3002"},{id:"shortcut-image-paste",title:"Ctrl+V / Alt+V \u2014 \u8D34\u56FE",detail:"\u5C06\u526A\u8D34\u677F\u4E2D\u7684\u56FE\u7247\u7C98\u8D34\u5230\u8F93\u5165\u4E2D\uFF08\u975E Windows: Ctrl+V\uFF1BWindows: Alt+V\uFF09\u3002\u652F\u6301 PNG \u683C\u5F0F\u3002"},{id:"shortcut-history-up",title:"\u2191 \u2014 \u5386\u53F2\u8F93\u5165",detail:"\u5411\u4E0A\u6D4F\u89C8\u5386\u53F2\u8F93\u5165\u8BB0\u5F55\u3002Ctrl+P \u540C\u6548\u3002"},{id:"shortcut-history-down",title:"\u2193 \u2014 \u5386\u53F2\u8F93\u5165",detail:"\u5411\u4E0B\u6D4F\u89C8\u5386\u53F2\u8F93\u5165\u8BB0\u5F55\u3002Ctrl+N \u540C\u6548\u3002"},{id:"shortcut-line-head",title:"Ctrl+A / Home \u2014 \u884C\u9996",detail:"\u8DF3\u8F6C\u5230\u5F53\u524D\u884C\u7684\u5F00\u5934\u3002"},{id:"shortcut-line-end",title:"Ctrl+E / End \u2014 \u884C\u5C3E",detail:"\u8DF3\u8F6C\u5230\u5F53\u524D\u884C\u7684\u672B\u5C3E\u3002"},{id:"shortcut-word-left",title:"Ctrl+B / \u2190 \u2014 \u6309\u5B57\u5DE6\u79FB",detail:"\u5C06\u5149\u6807\u5411\u5DE6\u79FB\u52A8\u4E00\u4E2A\u5B57\u3002"},{id:"shortcut-word-right",title:"Ctrl+F / \u2192 \u2014 \u6309\u5B57\u53F3\u79FB",detail:"\u5C06\u5149\u6807\u5411\u53F3\u79FB\u52A8\u4E00\u4E2A\u5B57\u3002"},{id:"shortcut-scroll-up",title:"Ctrl+U / PgUp \u2014 \u4E0A\u7FFB\u9875",detail:"\u5BF9\u8BDD\u533A\u5411\u4E0A\u7FFB\u9875\u3002"},{id:"shortcut-scroll-down",title:"Ctrl+D / PgDn \u2014 \u4E0B\u7FFB\u9875",detail:"\u5BF9\u8BDD\u533A\u5411\u4E0B\u7FFB\u9875\u3002"}];import{useCallback as Qv,useEffect as hC,useMemo as qie,useRef as RF,useState as Xv}from"react";function AF(t){return t?t.replace(/\r\n/g,`
2099
2099
  `).replace(/\r/g,`
2100
2100
  `).split(`
2101
- `):["\uFF08\u6682\u65E0\u65E5\u5FD7\uFF1A\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u4E3A\u7A7A\uFF09"]}function MF(t){let{termRows:e,onError:n}=t,[o,r]=Xv(!1),[i,s]=Xv([]),[a,l]=Xv(0),[c,u]=Xv(""),d=Hie(()=>{let v=Number.isFinite(e)&&e>=1?Math.min(4096,Math.floor(e)):24,B=Math.max(0,v-14-4-1);return Math.max(5,Math.min(200,B))},[e]),p=RF([]),f=RF(12);hC(()=>{p.current=i},[i]),hC(()=>{f.current=d},[d]),hC(()=>{o&&l(v=>{let b=Math.max(0,p.current.length-f.current);return Math.min(Math.max(0,v),b)})},[o,i.length,d]);let m=Qv(()=>{r(!1)},[]),g=Qv(v=>{v.readCliDebugLog().then(b=>{let R=AF(b);s(R),u(v.getCliDebugLogPath()),l(Math.max(0,R.length-f.current))}).catch(b=>n(b))},[n]),h=Qv(v=>{v.readCliDebugLog().then(b=>{let R=AF(b);u(v.getCliDebugLogPath()),s(R),l(Math.max(0,R.length-f.current)),r(!0)}).catch(b=>n(b))},[n]),y=Qv(v=>{let{inputChar:b,isEscape:R,isEnter:M,isShiftEnter:B,isPageUp:S,isPageDown:x,isWheelUp:T,isWheelDown:W,isPickerListUp:A,isPickerListDown:U,ctrlOrMeta:j,session:_}=v;return o?R||M&&!B?(m(),!0):b==="r"&&!j?(g(_),!0):A?(l($=>Math.max(0,$-1)),!0):U?(l($=>{let N=Math.max(0,p.current.length-f.current);return Math.min(N,$+1)}),!0):S?(l($=>Math.max(0,$-f.current)),!0):x?(l($=>{let N=Math.max(0,p.current.length-f.current);return Math.min(N,$+f.current)}),!0):T?(l($=>Math.max(0,$-3)),!0):(W&&l($=>{let N=Math.max(0,p.current.length-f.current);return Math.min(N,$+3)}),!0):!1},[o,m,g]);return{active:o,lines:i,offset:a,logPath:c,viewportSize:d,open:h,close:m,handleInput:y,hint:o?"\u8C03\u8BD5\u65E5\u5FD7\uFF1A\u2191/\u2193 \u6EDA\u52A8 \xB7 r \u91CD\u8F7D \xB7 Enter/Esc \u5173\u95ED":""}}var OF=kF(gC);function op(t){return`${t}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Qie(t){let e=globalThis;if(typeof e.requestAnimationFrame=="function"){let o=e.requestAnimationFrame(t);return()=>e.cancelAnimationFrame?.(o)}if(typeof setImmediate=="function"){let o=setImmediate(t);return()=>clearImmediate(o)}let n=setTimeout(t,0);return()=>clearTimeout(n)}function Xie(t){if(!(process.platform!=="darwin"||!t))try{Gie("pbcopy",["-"],{input:t,encoding:"utf8",stdio:["pipe","ignore","ignore"]})}catch{}}function ese(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>e?.type==="text"?String(e.text??""):e?.type==="image"?"[\u56FE\u7247]":e?.type==="fileContext"&&typeof e.displayPath=="string"&&e.displayPath?Rd(e.displayPath):"").join(""):""}function tse(t){return typeof t=="string"?t:Array.isArray(t)?xs(t):""}function LF(t){return typeof t=="string"?t:Array.isArray(t)?xs(t):""}function nse(t){return t==="pending"?"pending":t==="executing"?"executing":t==="error"?"error":t==="success"?"success":t==="cancelled"?"error":"success"}function $F(t){let e=t.displayData;return e&&typeof e=="object"&&typeof e.tool=="string"?e.tool:"tool"}function rse(t){let e=new Set;for(let n of t){if(n.role!=="tool")continue;let o=n.displayData,r=o&&typeof o.subWorkId=="string"?o.subWorkId.trim():"";r&&e.add(r)}return e}function ose(t,e){if(t.role==="assistant"||t.role==="thinking"){let n=t.workId?.trim();return!!(n&&e.has(n))}if(t.role==="tool"){let n=$F(t);if(n==="ask_question")return!1;let o=t.workId?.trim();if(!o||!e.has(o))return!1;let r=t.displayData,i=r&&typeof r.subWorkId=="string"?r.subWorkId.trim():"";return n.startsWith("agent_")?!!(i&&i!==o):!0}return!1}function ise(t){let e=[],n=rse(t);for(let o of t){if(ose(o,n))continue;let r=o.role==="user"?tse(o.content):ese(o.content);if(o.role==="user"){e.push({id:op("user"),type:"user",text:r});continue}if(o.role==="thinking"){e.push({id:op("thinking"),type:"thinking",text:r});continue}if(o.role==="assistant"){e.push({id:op("assistant"),type:"assistant",text:r});continue}if(o.role==="tool"){let i=o.displayData,s=nse(i?.status?.state),a={id:o.messageId||op("tool"),name:$F(o),status:s,resultText:r,displayData:o.displayData,...o.workId?{workId:o.workId}:{}};e.push({id:op("tools"),type:"tool_group",tools:[a]});continue}}return e}async function aa(t,e){let n=t.getCurrentConversationMessages();e({type:"HYDRATE_HISTORY",historyItems:ise(n)})}function sse(t){let e=new Date,n=new Date(t);if(e.toDateString()===n.toDateString())return"\u4ECA\u5929";let r=new Date(e);if(r.setDate(e.getDate()-1),r.toDateString()===n.toDateString())return"\u6628\u5929";let i=new Date(e);return i.setDate(e.getDate()-7),n>=i?"\u8FD1 7 \u5929":`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,"0")}`}function Yo(t){return t instanceof Error?t.message:String(t)}function ase(t){return t.includes("PANDA_NOT_LOGGED_IN")}var lse=8;function NF(t){let e=t.trim();return e?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e):!1}var cse="\u5F53\u524D\u6709\u56DE\u590D\u6216\u5DE5\u5177\u5728\u8FDB\u884C\uFF1A/new\u3001/switch\u3001/conversations\u3001/resume\u3001/model\u3001/mode\u3001/team \u5DF2\u6682\u65F6\u7981\u7528\u3002\u53EF\u8F93\u5165\u666E\u901A\u6D88\u606F\u540E Enter \u52A0\u5165\u961F\u5217\uFF0C\u6216\u53CC\u51FB Esc \u4E2D\u65AD\u540E\u518D\u6267\u884C\u4E0A\u8FF0\u547D\u4EE4\u3002",use=5e3;function dse(t){return gk(t)}function FF(t){let{args:e}=t,{rows:n,columns:o}=Fo(),[r,i]=qie(ON,void 0,LN);Vie(()=>r.assistantStreamOverlap?Qie(()=>{i({type:"CLEAR_ASSISTANT_STREAM_OVERLAP"})}):void 0,[r.assistantStreamOverlap?.historyItemId,i]);let[s,a]=he("normal"),[l,c]=he(null),u=s==="transcript",d=Jt(()=>{let L=s!=="transcript";a(q=>q==="transcript"?"normal":"transcript"),c(L?{historyItemsLength:r.historyItems.length,streamingState:r.streamingState}:null)},[s,r.historyItems.length,r.streamingState]),p=Jt(()=>{a("normal"),c(null)},[]),f=Rr(()=>l?r.historyItems.slice(0,l.historyItemsLength):r.historyItems,[l,r.historyItems]),m=Jt(L=>{i({type:"APPEND_INFO",text:L})},[i]),[g,h]=he(""),[y,v]=he(0),[b,R]=he(null),[M,B]=he(0),[S,x]=he(!1),[T,W]=he(0),[A,U]=he([]),[j,_]=he(void 0),[$,N]=he(!1),[K,E]=he(0),[V,ae]=he(!1),[Te,me]=he(0),[ne,Pe]=he(!1),[de,H]=he(!1),[te,ee]=he(0),[ue,Q]=he(0),[We,Qt]=he([]),[Xt,ln]=he("agent"),[en,Ar]=he(!1),[nr,O]=he(0),[w,z]=he([]),[D,pe]=he(!1),[Se,st]=he(0),[ye,Re]=he([]),[Ae,Ke]=he(0),[He,_t]=he(0),[xt,Yi]=he({}),[ic,n1]=he({}),[r1,la]=he(null),[VF,qF]=he(""),[bC,sc]=he(!1),[ac,lc]=he(""),[o1,ca]=he(""),[i1,ua]=he("email"),[da,s1]=he(!1),[GF,Qi]=he(void 0),[xC,ip]=he(!1),[cc,a1]=he(""),[TC,l1]=he(""),[wC,c1]=he(""),[_C,u1]=he(""),[SC,d1]=he(""),[rr,yo]=he("email"),[Xi,uc]=he(!1),[ZF,vn]=he(void 0),[JF,Qo]=he(void 0),[kC,p1]=he(!1),[f1,IC]=he(!1),[es,dc]=he(0),[CC,EC]=he(0),[PC,RC]=he(!1),[ts,YF]=he([]),[Kt,ns]=he({mode:"server-list"}),[sp,Mr]=he(0),[ap,QF]=he({suggestions:[],selectedSuggestion:-1}),[AC,MC]=he(()=>{let L=typeof process<"u"?process.env.PANDA_CLI_VIM?.trim().toLowerCase():"";return L==="1"||L==="true"||L==="vim"}),[XF,e3]=he("INSERT"),m1=Yt([]),bn=Yt(-1),g1=Yt(""),pa=Yt(""),lp=Yt(""),h1=Yt(""),Ht=Yt(null),DC=Yt(!1);DC.current=r.running;let pc=Yt(null),fc=Yt({targetChars:0,turnStartedAt:0,thinkingCharCount:0,thinkingEnded:!1}),OC=Yt(void 0),LC=Yt(!1),y1=Yt(new Set),NC=Yt(0),cp=Yt(new Map),[$C,FC]=he([]),v1=Yt([]),mr=Jt(()=>{cp.current.clear(),NC.current=0},[]),b1=Jt(L=>{let q=k6();if(!q)return L?.notifyWhenEmpty&&i({type:"APPEND_INFO",text:"\u526A\u8D34\u677F\u4E2D\u672A\u68C0\u6D4B\u5230 PNG \u56FE\u7247\uFF08\u5F53\u524D\u4EC5 macOS \u652F\u6301\uFF1B\u53EF\u5C1D\u8BD5\u622A\u56FE\u540E\u7C98\u8D34\uFF09\u3002"}),!1;bn.current=-1;let X=++NC.current;cp.current.set(X,q);let ie=`[Image #${X}]`,ge=up.current,St=pa.current,Ot=St.slice(0,ge)+ie+St.slice(ge);return h(Ot),v(ge+ie.length),!0},[i]),rs=Rr(()=>{let L=Number.isFinite(n)&&n>=1?Math.min(4096,Math.floor(n)):24,q=Number.isFinite(o)&&o>=1?Math.min(4096,Math.floor(o)):80,X=14,ie=4,ge=1,St=4,Ot=Math.max(0,L-X-ie-ge),le=Math.max(3,Math.min(200,Math.floor(Ot/St)));return{cols:q,conversationPickerViewportSize:le}},[n,o]),UC=Rr(()=>{let L=Number.isFinite(n)&&n>=1?Math.min(4096,Math.floor(n)):24,q=14,X=4,ie=1,ge=3,St=Math.max(0,L-q-X-ie);return Math.max(3,Math.min(200,Math.floor(St/ge)))},[n]),xn=MF({termRows:n,onError:L=>i({type:"APPEND_ERROR",text:Yo(L)})}),BC=xn.open;ho(()=>(A$(e.workspacePath),()=>M$()),[e.workspacePath]),ho(()=>{let L=!1;return Ei(e.workspacePath,process.env.HOME??process.env.USERPROFILE??"").then(q=>{L||(v1.current=q,FC(IF(q,OF)))}).catch(()=>{L||(v1.current=[],FC([]))}),()=>{L=!0}},[e.workspacePath]),ho(()=>{pa.current=g},[g]);let up=Yt(0),Dr=Yt(null);ho(()=>{up.current=y},[y]);let t3=Math.max(20,rs.cols-6),vo=Rr(()=>{let L=Ht.current;return L?L.getPendingQueue().map(PF):[]},[M,b,r.running,r.streamingState,r.historyItems.length,r.pendingAssistant]);ho(()=>{if(S){if(vo.length===0){x(!1),W(0);return}W(L=>Math.max(0,Math.min(L,vo.length-1)))}},[S,vo.length]);let x1=Jt(()=>{Dr.current&&(clearTimeout(Dr.current),Dr.current=null),p1(!1)},[]);ho(()=>()=>{Dr.current&&(clearTimeout(Dr.current),Dr.current=null)},[]);let os=Jt(L=>{let q=L.trim();if(!q)return;let X=m1.current;X[X.length-1]!==q&&X.push(q)},[]),n3=Jt(()=>{if(vo.length>0&&bn.current===-1&&up.current===0){x(!0),W(ie=>Math.max(0,Math.min(ie,vo.length-1)));return}let L=m1.current;if(L.length===0)return;let q=pa.current;bn.current===-1?(g1.current=q,bn.current=L.length-1):bn.current>0&&bn.current--;let X=L[bn.current]??"";h(X),v(X.length)},[vo.length]),r3=Jt(()=>{let L=m1.current;if(bn.current!==-1)if(bn.current<L.length-1){bn.current++;let q=L[bn.current]??"";h(q),v(q.length)}else{bn.current=-1;let q=g1.current;h(q),v(q.length)}},[]),o3=Jt(()=>{bn.current=-1,g1.current=""},[]),is=Jt(()=>{let L=Ht.current;L&&ln(L.getInteractionMode())},[]),ss=Jt(()=>{ip(!1),sc(!0),lc(""),ca(""),ua("email"),s1(!1),Qi(void 0),mr(),h(""),v(0)},[mr]),dp=Jt(L=>!L||!ase(L)?!1:(i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u5DF2\u62E6\u622A\u672C\u6B21\u8BF7\u6C42\u3002\u8BF7\u5148\u767B\u5F55 Panda \u8D26\u53F7\u540E\u91CD\u8BD5\u3002"}),ss(),!0),[i,ss]),T1=Jt(()=>{sc(!1),ip(!0),a1(""),l1(""),c1(""),u1(""),d1(""),yo("email"),uc(!1),vn(void 0),Qo(void 0),mr(),h(""),v(0)},[mr]),w1=Jt(L=>{let q=Ht.current;if(!q)return;let X=L.trim();if(X){if(X==="/vim"){MC(ie=>{let ge=!ie;return i({type:"APPEND_INFO",text:ge?"Vim \u952E\u4F4D\u5DF2\u5F00\u542F\uFF1AInsert \u5185 Esc\u2192Normal\uFF1Bhjkl/\u8FD0\u7B97\u7B26\u7B49\u89C1 docs/PROMPT_INPUT_VIM.md\u3002\u518D\u8F93\u5165 /vim \u5173\u95ED\u3002":"\u5DF2\u5173\u95ED Vim\uFF0C\u6062\u590D readline \u7F16\u8F91\uFF08\u53CC\u6309 Esc \u6E05\u7A7A\u8F93\u5165\uFF09\u3002"}),ge}),mr(),h(""),v(0);return}if(X==="/help"||X==="?"){IC(ie=>(ie||(dc(0),EC(0)),!ie)),mr(),h(""),v(0);return}if(X==="/debug"||X.startsWith("/debug ")){let ie=X==="/debug"?"":X.slice(6).trim();if(mr(),h(""),v(0),ie==="clear"){os("/debug clear"),q.clearCliDebugLog().then(()=>{i({type:"APPEND_INFO",text:`\u5DF2\u6E05\u9664\u8C03\u8BD5\u65E5\u5FD7\uFF1A${q.getCliDebugLogPath()}`})}).catch(ge=>{i({type:"APPEND_ERROR",text:Yo(ge)})});return}if(ie!==""){i({type:"APPEND_ERROR",text:"\u7528\u6CD5\uFF1A/debug \u67E5\u770B\u4F1A\u8BDD\u8C03\u8BD5\u65E5\u5FD7\uFF1B/debug clear \u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u65E5\u5FD7"});return}os("/debug"),BC(q);return}(async()=>{if(DC.current&&EF(X)){i({type:"APPEND_INFO",text:cse});return}if(X==="/compact"){mr(),os(Vy(X)||X),h(""),v(0);try{q.enqueueConversationAction("summarize_conversation",{modelId:j,displayLabel:"/compact"}),B(le=>le+1)}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}return}if(X==="/commit"){mr(),os(X),h(""),v(0);try{q.enqueueConversationAction("commit",{modelId:j,displayLabel:"/commit"}),B(le=>le+1)}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}return}if(X==="/todo"||X.startsWith("/todo ")){let le=q.getTodoStore(),Ie=X==="/todo"?"":X.slice(6).trim();Ie?(le.addItem(Ie).then(()=>{i({type:"APPEND_INFO",text:`\u5DF2\u6DFB\u52A0\u5F85\u529E\u4E8B\u9879\uFF1A${Ie}`})}),h(""),v(0)):le.getItems().then(oe=>{if(oe.length===0){i({type:"APPEND_INFO",text:"\u6682\u65E0\u5F85\u529E\u4E8B\u9879\u3002\u4F7F\u7528 /todo \u4E8B\u9879\u5185\u5BB9 \u6DFB\u52A0"}),h(""),v(0);return}Re(oe),st(0),pe(!0)});return}let ie=CF(X,v1.current,OF),ge=ie?await _6(ie.skillName,ie.tail,cp.current,e.workspacePath):await vI(X,cp.current,e.workspacePath),St=S6(ge);if(mr(),os(Vy(X)||X),lp.current=LF(St),h(""),v(0),X==="/new"||X==="/clear"){let le=q.newConversation();R(le),i({type:"HYDRATE_HISTORY",historyItems:[]}),is();return}if(X==="/fork"){try{let le=await q.forkConversation();R(le.conversationId),await aa(q,i),is(),i({type:"APPEND_INFO",text:`\u5DF2\u521B\u5EFA\u5206\u53C9\u4F1A\u8BDD\uFF1A${le.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${le.conversationId}]`})}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}return}if(X==="/conversations"||X==="/resume"||X==="/session"){let le=X==="/resume";try{let Ie=await q.listSessionSummaries();if(Ie.length===0){i({type:"APPEND_INFO",text:"\u672A\u627E\u5230\u5DF2\u4FDD\u5B58\u7684\u4F1A\u8BDD\u3002"});return}le&&i({type:"APPEND_INFO",text:"\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF1A\u5728\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u9879\uFF0CEnter \u6062\u590D\uFF1BEsc \u53D6\u6D88\u3002"}),Qt(Ie);let oe=Math.max(0,Ie.findIndex(Je=>Je.conversationId===q.getConversationId()));ee(oe),Q(Math.max(0,oe-4)),H(le),Pe(!0)}catch(Ie){i({type:"APPEND_ERROR",text:Ie instanceof Error?Ie.message:String(Ie)})}return}if(X.startsWith("/switch ")||X.startsWith("/resume ")){let le=X.startsWith("/resume "),Ie=le?"/resume ":"/switch ";try{let oe=X.slice(Ie.length).trim();if(!oe){i({type:"APPEND_ERROR",text:le?"Usage: /resume <index|conversationId>":"Usage: /switch <index|conversationId>"});return}let Je=await q.listSessionSummaries(),tt=null,Xo=Number(oe);if(!Number.isNaN(Xo)&&Xo>=1&&Xo<=Je.length?tt=Je[Xo-1].conversationId:Je.some(fa=>fa.conversationId===oe)&&(tt=oe),!tt){i({type:"APPEND_ERROR",text:`Session not found: ${oe}`});return}if(!await q.switchConversation(tt)){i({type:"APPEND_ERROR",text:`Failed to switch session: ${tt}`});return}if(R(tt),await aa(q,i),is(),le){let fa=q.getCurrentConversationSummary();i({type:"APPEND_INFO",text:`\u5DF2\u6062\u590D\u4F1A\u8BDD\uFF1A${fa.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${fa.conversationId}]`})}}catch(oe){i({type:"APPEND_ERROR",text:oe instanceof Error?oe.message:String(oe)})}return}if(X==="/model"||X.startsWith("/model ")){let le=A,Ie=j;try{let oe=await q.refreshModelOptions();U(oe.options),_(oe.selectedModelId),le=oe.options,Ie=oe.selectedModelId,oe.changed&&i({type:"APPEND_INFO",text:`\u6A21\u578B\u5217\u8868\u5DF2\u5237\u65B0\uFF08${oe.options.length} \u4E2A\uFF09\u3002`})}catch(oe){i({type:"APPEND_ERROR",text:`\u6A21\u578B\u5237\u65B0\u5931\u8D25\uFF1A${oe instanceof Error?oe.message:String(oe)}`})}if(X.startsWith("/model ")){let oe=X.slice(7).trim();if(oe.length>0){let Je=le.find(tt=>tt.id===oe);if(!Je){i({type:"APPEND_ERROR",text:`\u6A21\u578B\u4E0D\u5B58\u5728\uFF1A${oe}`});return}q.setSelectedModelId(Je.id).catch(()=>{}),_(Je.id),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u6A21\u578B\uFF1A${Je.displayName}`});return}}le.length>0&&(N(!0),E(Math.max(0,le.findIndex(oe=>oe.id===Ie))));return}if(X==="/auth"||X.startsWith("/auth ")){let Ie=X.slice(5).trim().toLowerCase()||"login";if(!["login","register","logout","whoami"].includes(Ie)){i({type:"APPEND_ERROR",text:"\u672A\u77E5 /auth \u5B50\u547D\u4EE4\u3002\u7528\u6CD5\uFF1A/auth <login|register|logout|whoami>"});return}if(i({type:"APPEND_INFO",text:`\u5DF2\u8FDB\u5165\u7EDF\u4E00\u8BA4\u8BC1\u5165\u53E3\uFF1A/auth ${Ie}`}),Ie==="whoami"){try{let oe=await q.checkAuthSession();!oe.ok||!oe.user?i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\u3002"}):i({type:"APPEND_INFO",text:`\u5F53\u524D\u767B\u5F55\uFF1A${oe.user.username||oe.user.email||oe.user.id}`})}catch(oe){i({type:"APPEND_ERROR",text:oe instanceof Error?oe.message:String(oe)})}return}if(Ie==="logout"){try{await q.logout(),i({type:"APPEND_INFO",text:"\u5DF2\u9000\u51FA\u767B\u5F55\u3002"})}catch(oe){i({type:"APPEND_ERROR",text:oe instanceof Error?oe.message:String(oe)})}return}if(Ie==="register"){T1();return}try{let oe=await q.checkAuthSession();if(oe.ok&&oe.user){i({type:"APPEND_INFO",text:`\u5F53\u524D\u5DF2\u767B\u5F55\uFF1A${oe.user.username||oe.user.email||oe.user.id}\u3002\u5982\u9700\u5207\u6362\u8D26\u53F7\u8BF7\u5148 /auth logout\u3002`});return}}catch{}ss();return}if(X==="/whoami"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth whoami\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"});try{let le=await q.getCurrentUser();i(le?{type:"APPEND_INFO",text:`\u5F53\u524D\u767B\u5F55\uFF1A${le.username||le.email||le.id}`}:{type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\u3002"})}catch(le){i({type:"APPEND_ERROR",text:le instanceof Error?le.message:String(le)})}return}if(X==="/logout"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth logout\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"});try{await q.logout(),i({type:"APPEND_INFO",text:"\u5DF2\u9000\u51FA\u767B\u5F55\u3002"})}catch(le){i({type:"APPEND_ERROR",text:le instanceof Error?le.message:String(le)})}return}if(X==="/register"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth register\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"}),T1();return}if(X==="/login"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth login\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"});try{let le=await q.getCurrentUser();if(le){i({type:"APPEND_INFO",text:`\u5F53\u524D\u5DF2\u767B\u5F55\uFF1A${le.username||le.email||le.id}\u3002\u5982\u9700\u5207\u6362\u8D26\u53F7\u8BF7\u5148 /logout\u3002`});return}}catch{}ss();return}if(X==="/mode"||X.startsWith("/mode ")){let le=X.slice(5).trim();if(le===""){ae(!0),me(Math.max(0,mk.indexOf(Xt)));return}let Ie=le,oe=t7(Ie);if(!oe){i({type:"APPEND_ERROR",text:`\u672A\u77E5\u6A21\u5F0F\u300C${Ie}\u300D\u3002\u7528\u6CD5\uFF1A/mode <agent|ask|plan|office|team>\uFF1B\u4EC5\u8F93\u5165 /mode \u6253\u5F00\u4EA4\u4E92\u6A21\u5F0F\u5217\u8868\u3002`});return}q.setInteractionMode(oe),ln(oe),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u5230 ${gk(oe)} \u6A21\u5F0F\u3002`});return}if(X==="/team"){q.getInteractionMode()!=="team"&&(q.setInteractionMode("team"),ln("team"),i({type:"APPEND_INFO",text:"\u5DF2\u5207\u6362\u5230 team \u6A21\u5F0F\u3002"}));return}if(X==="/update"||X.startsWith("/update ")){let le=X.slice(7).trim();if(le==="--help"||le==="-h"){Ty(Je=>i({type:"APPEND_INFO",text:Je}));return}let Ie=le==="--check"||le==="-c",oe=Je=>Je.replace(/^\n+/,"");try{await wy({checkOnly:Ie,skipConfirm:!0,onInfo:Je=>i({type:"APPEND_INFO",text:oe(Je)}),onError:Je=>i({type:"APPEND_ERROR",text:oe(Je)})})}catch(Je){i({type:"APPEND_ERROR",text:Yo(Je)})}return}if(X==="/mcp"||X.startsWith("/mcp ")){let Ie=X.slice(4).trim().split(/\s+/),oe=Ie[0]??"",Je=Ie.slice(1).join(" ").trim();if(oe==="list"||oe===""){try{let tt=await q.getMcpDetails();YF(tt),ns({mode:"server-list"}),Mr(0),RC(!0)}catch(tt){i({type:"APPEND_ERROR",text:tt instanceof Error?tt.message:String(tt)})}return}if(oe==="enable"){if(!Je){i({type:"APPEND_ERROR",text:"\u7528\u6CD5\uFF1A/mcp enable <name>"});return}try{await q.setMcpServerEnabled(Je,!0);let{updateMcpConfigEnabled:tt}=await Promise.resolve().then(()=>(vy(),Ak));await tt(Je,!0),i({type:"APPEND_INFO",text:`\u5DF2\u542F\u7528 MCP \u670D\u52A1\u5668 "${Je}"`})}catch(tt){i({type:"APPEND_ERROR",text:tt instanceof Error?tt.message:String(tt)})}return}if(oe==="disable"){if(!Je){i({type:"APPEND_ERROR",text:"\u7528\u6CD5\uFF1A/mcp disable <name>"});return}try{await q.setMcpServerEnabled(Je,!1);let{updateMcpConfigEnabled:tt}=await Promise.resolve().then(()=>(vy(),Ak));await tt(Je,!1),i({type:"APPEND_INFO",text:`\u5DF2\u7981\u7528 MCP \u670D\u52A1\u5668 "${Je}"`})}catch(tt){i({type:"APPEND_ERROR",text:tt instanceof Error?tt.message:String(tt)})}return}}try{i({type:"TURN_STARTED",turnId:""}),q.submit(ge,j,St),R(q.getConversationId()),B(le=>le+1)}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}})().catch(ie=>{let ge=ie instanceof Error?ie.message:String(ie);dp(ge)||i({type:"APPEND_ERROR",text:ge})})}},[e.workspacePath,mr,b,BC,i,dp,Xt,A,ss,T1,os,j,ln,is,r.historyItems.length]),gt=Rr(()=>{for(let L of r.pendingToolCalls){if(L.name!=="ask_question"||L.status==="success"||L.status==="error"||L.status!=="pending"&&L.status!=="executing"&&L.status!=="confirming")continue;let q=L.displayData;if(!q||q.tool!=="ask_question"||!Array.isArray(q.questions)||q.questions.length===0)continue;let X=q.questions.filter(ie=>ie&&typeof ie.id=="string"&&typeof ie.prompt=="string"&&Array.isArray(ie.options)&&ie.options.length>0).map(ie=>({id:String(ie.id),prompt:String(ie.prompt),allowMultiple:!!ie.allowMultiple,required:ie.required!==!1,freeform:!!ie.freeform,options:ie.options.map(ge=>{let St=String(ge.id??""),Ot=String(ge.label??""),le=typeof ge.description=="string"&&ge.description.trim()?ge.description.trim():void 0;return le?{id:St,label:Ot,description:le}:{id:St,label:Ot}})}));if(X.length!==0)return{toolCallId:L.id,title:typeof q.title=="string"?q.title:"",allowSkipAll:q.allowSkipAll===!0,questions:X}}return null},[r.pendingToolCalls]);ho(()=>{Ke(0),_t(0),Yi({}),n1({}),la(null)},[gt?.toolCallId]);let i3=Rr(()=>{if(gt)return{toolCallId:gt.toolCallId,questionIndex:Ae,optionIndex:He,selectedByQuestion:xt}},[gt,Ae,He,xt]),mc=!ne&&!en&&!V&&!$&&!D&&!xn.active&&!gt&&!f1,s3=Rr(()=>[...gC,...$C],[$C]),a3=ra(L=>L.agents),l3=Jt((L,q)=>{w1(L)},[w1]),_1=SF({commands:s3,onInputChange:L=>{bn.current=-1,h(L)},onSubmit:l3,setCursorOffset:v,input:g,cursorOffset:y,mode:tp(g),agents:a3,setSuggestionsState:QF,suggestionsState:ap,suppressSuggestions:!mc,markAccepted:()=>{}}),S1=f6({value:g,onChange:L=>{bn.current=-1,h(L)},onOffsetChange:v,externalOffset:y,columns:t3,multiline:!0,vimBindingsEnabled:AC,onModeChange:L=>e3(L),cursorChar:"\u2588",invert:L=>DF.inverse(L),dim:L=>DF.dim(L),onSubmit:w1,onHistoryUp:n3,onHistoryDown:r3,onHistoryReset:o3,onEscapeClearHint:L=>qF(L?"\u518D\u6309 Esc \u6E05\u7A7A\u8F93\u5165":""),onDoubleEscapeCommit:L=>{let q=L.trim();q&&os(Vy(q)||q)},inlineGhostText:_1.inlineGhostText}),c3=Rr(()=>{if(!(!mc||xn.active||g.length===0))return S1.renderedValue.split(`
2102
- `)},[mc,xn.active,g.length,S1.renderedValue]);gd("Chat",mc);let u3=Jt(()=>{let L=Ht.current;return!L||!Nk(r)&&!L.isConversationCoreBusy()?!1:(L.interruptCurrentTurn({inputEmptyAtCancel:pa.current.length===0,restorePrompt:lp.current||void 0}).catch(q=>i({type:"APPEND_ERROR",text:q instanceof Error?q.message:String(q)})),x1(),x(!1),!0)},[x1,i,r]),k1=fN(hd,u3,void 0,!0),d3=Rr(()=>({"chat:toggleVimMode":()=>{MC(L=>{let q=!L;return i({type:"APPEND_INFO",text:q?"Vim \u952E\u4F4D\u5DF2\u5F00\u542F\uFF08Ctrl+Shift+Y \u6216 /vim \u5207\u6362\uFF09\u3002":"Vim \u952E\u4F4D\u5DF2\u5173\u95ED\u3002"}),q})},"chat:toggleOperationMode":()=>{let L=Ht.current;if(!L)return;let q=e7(L.getInteractionMode());L.setInteractionMode(q),ln(q)},"chat:openTeamRolesPicker":()=>{let L=Ht.current;!L||L.getInteractionMode()!=="team"||(z(L.getEnabledTeamRoles()),O(0),Ar(!0))},"chat:openModelPicker":()=>{A.length>0&&(N(!0),E(Math.max(0,A.findIndex(L=>L.id===j))))},"chat:imagePaste":()=>{b1({notifyWhenEmpty:!0})}}),[i,A,j,b1]);hd(d3,{context:"Chat",isActive:mc});let p3=Rr(()=>({"app:toggleTranscript":d}),[d]);hd(p3,{context:"Global"}),gd("Transcript",u);let f3=Rr(()=>({"transcript:toggleShowAll":()=>{c(null)},"transcript:exit":p}),[p]);hd(f3,{context:"Transcript",isActive:u}),ho(()=>{if(!LC.current)return LC.current=!0,(async()=>{try{let L=await yy(e);Ht.current=L,R(L.getConversationId()),await aa(L,i),is();let q=L.listModelOptions();U(q);let X=L.getSelectedModelId()??q[0]?.id;_(X),E(Math.max(0,q.findIndex(ge=>ge.id===X))),await L.getCurrentUser().catch(()=>{})||(i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55 Panda \u8D26\u53F7\u3002"}),ss()),e.initialPrompt&&e.initialPrompt.trim()&&(L.submit(e.initialPrompt.trim()),R(L.getConversationId()))}catch(L){i({type:"APPEND_ERROR",text:Yo(L)})}})(),()=>{pc.current?.()}},[e,ss,is]);let jC=Jt(async(L,q)=>{let X=Ht.current;if(!X)return;let ie=X.getConversationId();if(!(ie===En||y1.current.has(ie)||X.isCurrentConversationEphemeral()||X.getCurrentConversationTurnCount()>1)){y1.current.add(ie);try{await X.runRegisteredActionImmediate("rename_conversation",void 0,X.getSelectedModelId()??void 0,L)}catch{y1.current.delete(ie)}}},[]);if(ho(()=>{let L=Ht.current;if(!L||!b)return;let q=OC.current;OC.current=b,pc.current?.(),mN(q,b)&&i({type:"RESET_STREAMING_STATE"}),fc.current.targetChars=0,fc.current.turnStartedAt=Date.now();let X=process.env.PANDA_CLI_UI_FREEZE_UNTIL_TURN_END==="1";return pc.current=BN({eventBus:L.eventBus,getConversationId:()=>Ht.current?.getConversationId()??En,dispatch:i,streamingApproxRef:fc,onTurnStarted:jC,onTurnFailed:ie=>{dp(ie)},onTurnCancelled:({revertApplied:ie,restorePrompt:ge})=>{if(!ie)return;let St=Ht.current;if(!St)return;aa(St,i);let Ot=LF(ge);Ot.length>0&&(h(Ot),v(Ot.length)),lp.current=""},onConversationUiMessagesUpdated:()=>{let ie=Ht.current;ie&&aa(ie,i)},freezeUiUntilTurnEnd:X,onFreezeTurnEndHydrate:()=>{let ie=Ht.current;ie&&aa(ie,i)}}),()=>{pc.current?.(),pc.current=null}},[b,jC,i,dp]),ho(()=>{if(!ne||We.length===0)return;let L=rs.conversationPickerViewportSize;Q(q=>Math.max(0,Math.min(q,Math.max(0,We.length-L))))},[ne,rs.conversationPickerViewportSize,We.length]),Jie((L,q,X)=>{let ie=Ht.current;if(!ie)return;let ge=q,St=String(ge.sequence??L??""),Ot=!!(ge.upArrow||ge.name==="up"||St==="\x1B[A"||St.endsWith("[A")),le=!!(ge.downArrow||ge.name==="down"||St==="\x1B[B"||St.endsWith("[B")),Ie=!!(ge.return||ge.name==="return"||ge.name==="enter"),oe=!!(ge.escape||ge.name==="escape"),Je=Ie&&!!ge.shift,tt=!!(ge.pageUp||ge.name==="pageup"),Xo=!!(ge.pageDown||ge.name==="pagedown"),zC=!!(ge.wheelUp||ge.name==="wheelup"),fa=!!(ge.wheelDown||ge.name==="wheeldown"),cn=q;if(xC){let we=["email","code","password","confirmPassword","displayName"],ve=q,be=!!(ve.backspace||ve.name==="backspace"||L==="\b"||L==="\x7F"),ce=!!((ve.ctrl||ve.meta)&&L.toLowerCase()==="g");if(oe&&!Xi){ip(!1),vn(void 0),Qo(void 0);return}if((Ot||le)&&!Xi){let re=we.indexOf(rr),dt=Ot?re<=0?we.length-1:re-1:re>=we.length-1?0:re+1;yo(we[dt]);return}if(be&&!Xi){vn(void 0),Qo(void 0),rr==="email"&&a1(re=>re.slice(0,-1)),rr==="code"&&l1(re=>re.slice(0,-1)),rr==="password"&&c1(re=>re.slice(0,-1)),rr==="confirmPassword"&&u1(re=>re.slice(0,-1)),rr==="displayName"&&d1(re=>re.slice(0,-1));return}if(ce&&!Xi){if(!cc.trim()){vn("\u8BF7\u8F93\u5165\u90AE\u7BB1\u3002"),yo("email");return}if(!NF(cc)){vn("\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002"),yo("email");return}uc(!0),vn(void 0),Qo(void 0),(async()=>{try{await ie.sendRegisterVerificationCode(cc.trim()),Qo("\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u5230\u60A8\u7684\u90AE\u7BB1\uFF0C\u8BF7\u67E5\u6536\u3002")}catch(re){vn(re instanceof Error?re.message:String(re))}finally{uc(!1)}})().catch(()=>{});return}if(Ie&&!Xi){let re=cc.trim(),dt=TC.trim(),at=wC,as=_C,un=SC.trim();if(!re){vn("\u8BF7\u8F93\u5165\u90AE\u7BB1\u3002"),yo("email");return}if(!NF(re)){vn("\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002"),yo("email");return}if(!dt){vn("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801\u3002"),yo("code");return}if(!at||at.length<lse){vn("\u5BC6\u7801\u81F3\u5C11 8 \u4F4D\u3002"),yo("password");return}if(at!==as){vn("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002"),yo("confirmPassword");return}uc(!0),vn(void 0),Qo(void 0),(async()=>{try{await ie.register(re,dt,at,as,un||void 0),ip(!1),Qo(void 0),sc(!0),lc(re),ca(""),ua("password"),Qi(void 0),i({type:"APPEND_INFO",text:"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55\u3002"})}catch(qn){vn(qn instanceof Error?qn.message:String(qn))}finally{uc(!1)}})().catch(()=>{});return}let fe=L.replace(/[\r\n]/g,"");if(!Xi&&fe.length>0){vn(void 0),Qo(void 0),rr==="email"&&a1(re=>re+fe),rr==="code"&&l1(re=>re+fe),rr==="password"&&c1(re=>re+fe),rr==="confirmPassword"&&u1(re=>re+fe),rr==="displayName"&&d1(re=>re+fe);return}return}if(bC){if(oe&&!da){sc(!1),Qi(void 0),ca("");return}if((Ot||le)&&!da){ua(ce=>ce==="email"?"password":"email");return}let we=q;if(!!(we.backspace||we.name==="backspace"||L==="\b"||L==="\x7F")&&!da){i1==="email"?lc(ce=>ce.slice(0,-1)):ca(ce=>ce.slice(0,-1));return}if(Ie&&!da){if(!ac.trim()||!o1){Qi("\u8BF7\u8F93\u5165\u90AE\u7BB1\u548C\u5BC6\u7801\u3002"),ac.trim()?ua("password"):ua("email");return}s1(!0),Qi(void 0),(async()=>{try{let ce=await ie.login(ac.trim(),o1);i({type:"APPEND_INFO",text:`\u767B\u5F55\u6210\u529F\uFF1A${ce.username||ce.email||ac.trim()}`});let fe=await ie.refreshModelOptions();U(fe.options),_(fe.selectedModelId),sc(!1),lc(""),ca(""),ua("email")}catch(ce){Qi(ce instanceof Error?ce.message:String(ce))}finally{s1(!1)}})().catch(()=>{});return}let be=L.replace(/[\r\n]/g,"");if(!da&&be.length>0){Qi(void 0),i1==="email"?lc(ce=>ce+be):ca(ce=>ce+be);return}return}if(ne){let we=Math.max(0,We.length-1),ve=rs.conversationPickerViewportSize,be=fe=>{let re=ue;fe<re?re=fe:fe>=re+ve&&(re=fe-ve+1),Q(Math.max(0,Math.min(re,Math.max(0,We.length-ve))))};if(oe){Pe(!1),H(!1);return}if(Zo(L,cn)){let fe=te<=0?we:te-1;ee(fe),be(fe);return}if(Go(L,cn)){let fe=te>=we?0:te+1;ee(fe),be(fe);return}if(tt){let fe=Math.max(0,te-ve);ee(fe),be(fe);return}if(Xo){let fe=Math.min(we,te+ve);ee(fe),be(fe);return}let ce=Number(L);if(!Number.isNaN(ce)&&ce>=1&&ce<=We.length){let fe=ce-1;ee(fe),be(fe);return}if(Ie){let fe=We[te],re=de;if(!fe){Pe(!1),H(!1);return}(async()=>{if(!await ie.switchConversation(fe.conversationId)){i({type:"APPEND_ERROR",text:`Failed to switch conversation: ${fe.conversationId}`});return}R(fe.conversationId),await aa(ie,i),is();let at=ie.getCurrentConversationSummary();i({type:"APPEND_INFO",text:`${re?"\u5DF2\u6062\u590D\u4F1A\u8BDD":"\u5DF2\u5207\u6362\u4F1A\u8BDD"}\uFF1A${at.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${at.conversationId}]`})})().catch(dt=>{i({type:"APPEND_ERROR",text:dt instanceof Error?dt.message:String(dt)})}),Pe(!1),H(!1);return}}if(D){let we=Math.max(0,ye.length-1);if(oe){pe(!1);return}if(Zo(L,cn)){st(ve=>ve<=0?we:ve-1);return}if(Go(L,cn)){st(ve=>ve>=we?0:ve+1);return}if(Ie){let ve=ye[Se];ve&&(ie.getTodoStore().removeItem(Se).then(()=>{Re(ce=>ce.filter((fe,re)=>re!==Se))}),h(ve.prompt),v(ve.prompt.length),pe(!1));return}}if(xn.active){let we=Ht.current;if(!we){xn.close();return}return xn.handleInput({inputChar:L,isEscape:oe,isEnter:Ie,isShiftEnter:Je,isPageUp:tt,isPageDown:Xo,isWheelUp:zC,isWheelDown:fa,isPickerListUp:Zo(L,cn),isPickerListDown:Go(L,cn),ctrlOrMeta:!!(ge.ctrl||ge.meta),session:we}),void 0}if(V){let we=Math.max(0,Fl.length-1);if(oe){ae(!1);return}if(Zo(L,cn)){me(be=>be<=0?we:be-1);return}if(Go(L,cn)){me(be=>be>=we?0:be+1);return}let ve=Number(L);if(!Number.isNaN(ve)&&ve>=1&&ve<=Fl.length){me(ve-1);return}if(Ie){let be=Fl[Te]?.id;be&&(ie.setInteractionMode(be),ln(be),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u5230 ${be} \u6A21\u5F0F\u3002`})),ae(!1);return}return}if(en){let we=Ht.current;if(!we)return;let ve=Math.max(0,Gi.length-1);if(oe){Ar(!1);return}if(Zo(L,cn)){O(ce=>ce<=0?ve:ce-1);return}if(Go(L,cn)){O(ce=>ce>=ve?0:ce+1);return}let be=Number(L);if(!Number.isNaN(be)&&be>=1&&be<=Gi.length){O(be-1);return}if(L===" "){let ce=Gi[nr];if(!ce)return;z(fe=>{let re=new Set(fe);if(re.has(ce.id)){if(re.size<=1)return fe;re.delete(ce.id)}else re.add(ce.id);return Gi.filter(dt=>re.has(dt.id)).map(dt=>dt.id)});return}if(Ie){we.setEnabledTeamRoles(w),Ar(!1);return}}if($){let we=Math.max(0,A.length-1);if(oe){N(!1);return}if(Zo(L,cn)){E(be=>be<=0?we:be-1);return}if(Go(L,cn)){E(be=>be>=we?0:be+1);return}let ve=Number(L);if(!Number.isNaN(ve)&&ve>=1&&ve<=A.length){E(ve-1);return}if(Ie){let ce=A[K]?.id;ce&&(ie.setSelectedModelId(ce).catch(()=>{}),_(ce)),N(!1);return}}if(gt){if(r1){let re=ge,dt=!!(re.backspace||re.name==="backspace"||L==="\b"||L==="\x7F");if(oe){la(null);return}if(dt){la(at=>at?{...at,text:at.text.slice(0,-1)}:null);return}if(Ie){let at=r1,as=at.text.trim();n1(un=>{let qn={...un[at.questionId]??{}};return as?qn[at.optionId]=as:delete qn[at.optionId],{...un,[at.questionId]:qn}}),la(null);return}if(L&&!ge.ctrl&&!ge.meta){la(at=>at?{...at,text:at.text+L}:null);return}return}if(oe){gt.allowSkipAll&&ie.answerAskQuestion(gt.toolCallId,[]).catch(()=>{});return}let we=Math.max(0,gt.questions.length-1);if(L==="["&&!ge.shift){Ke(re=>Math.max(0,re-1)),_t(0);return}if(L==="]"){Ke(re=>Math.min(we,re+1)),_t(0);return}let ve=gt.questions[Ae]??gt.questions[0];if(!ve)return;let be=dg(ve.options),ce=Math.max(0,be.length-1);if(L==="n"&&!ge.ctrl&&!ge.meta&&!ge.shift){let re=be[He]??be[0];if(re&&Ti(re.id)){let dt=ic[ve.id]?.[Eo]??"";la({questionId:ve.id,optionId:Eo,text:dt})}return}if(Zo(L,cn)){_t(re=>re<=0?ce:re-1);return}if(Go(L,cn)){_t(re=>re>=ce?0:re+1);return}let fe=Number(L);if(!Number.isNaN(fe)&&fe>=1&&fe<=be.length){_t(fe-1);return}if(ve.allowMultiple&&L===" "){let re=be[He]??be[0];if(!re)return;Yi(dt=>{let at=new Set(dt[ve.id]??[]);return at.has(re.id)?at.delete(re.id):at.add(re.id),{...dt,[ve.id]:Array.from(at)}});return}if(Ie){let re=be[He]??be[0],dt=xt;if(!ve.allowMultiple&&re&&(dt={...xt,[ve.id]:[re.id]},Yi(dt),n1(un=>{let qn={...un[ve.id]??{}},pp={};return qn[re.id]&&(pp[re.id]=qn[re.id]),{...un,[ve.id]:pp}})),Ae<gt.questions.length-1){Ke(un=>un+1),_t(0);return}let at=gt.questions.map(un=>{let qn=dt[un.id]??[],pp=ic[un.id]??{},I1={};for(let WC of qn){let KC=pp[WC]?.trim();KC&&(I1[WC]=KC)}return{questionId:un.id,selectedOptionIds:qn,...Object.keys(I1).length>0?{optionNotes:I1}:{}}});if(gt.questions.some(un=>un.required&&(dt[un.id]??[]).length===0))return;ie.answerAskQuestion(gt.toolCallId,at).catch(()=>{});return}return}if(f1){let we=Math.max(0,Yv.length-1),ve=UC,be=ce=>{let fe=CC;ce<fe?fe=ce:ce>=fe+ve&&(fe=ce-ve+1),EC(Math.max(0,Math.min(fe,Math.max(0,Yv.length-ve))))};if(oe){IC(!1);return}if(Zo(L,cn)){let ce=es<=0?we:es-1;dc(ce),be(ce);return}if(Go(L,cn)){let ce=es>=we?0:es+1;dc(ce),be(ce);return}if(tt){let ce=Math.max(0,es-ve);dc(ce),be(ce);return}if(Xo){let ce=Math.min(we,es+ve);dc(ce),be(ce);return}return}if(PC){if(oe){Kt.mode==="tool-detail"?(ns({mode:"tool-list",serverIndex:Kt.serverIndex}),Mr(Kt.toolIndex)):Kt.mode==="tool-list"?(ns({mode:"server-detail",serverIndex:Kt.serverIndex}),Mr(0)):Kt.mode==="server-detail"?(ns({mode:"server-list"}),Mr(Kt.serverIndex)):RC(!1);return}if(Ie&&Kt.mode==="server-list"){let we=sp;ts[we]&&(ns({mode:"server-detail",serverIndex:we}),Mr(0));return}if(Ie&&Kt.mode==="server-detail"){let we=ts[Kt.serverIndex];we&&we.status.status==="connected"&&we.tools.length>0&&(ns({mode:"tool-list",serverIndex:Kt.serverIndex}),Mr(0));return}if(Ie&&Kt.mode==="tool-list"){let we=ts[Kt.serverIndex];we&&we.tools[sp]&&ns({mode:"tool-detail",serverIndex:Kt.serverIndex,toolIndex:sp});return}if(Kt.mode==="server-list"){if(Ot){Mr(we=>we<=0?Math.max(0,ts.length-1):we-1);return}if(le){Mr(we=>we>=ts.length-1?0:we+1);return}}if(Kt.mode==="tool-list"){let we=ts[Kt.serverIndex],ve=we?we.tools.length:0;if(Ot){Mr(be=>be<=0?Math.max(0,ve-1):be-1);return}if(le){Mr(be=>be>=ve-1?0:be+1);return}}return}let bo=q;if(!ne&&!en&&!V&&!$&&!D&&!xn.active&&!gt){if(S){let ce=Math.max(0,vo.length-1);if(oe){x(!1);return}if(Ot){W(fe=>fe<=0?ce:fe-1);return}if(le){W(fe=>fe>=ce?0:fe+1);return}if(Ie){let fe=Math.max(0,Math.min(T,ce));Je?ie.removePendingUserMessage(fe):ie.sendPendingUserMessageImmediately(fe).catch(re=>{i({type:"APPEND_ERROR",text:Yo(re)})}),B(re=>re+1);return}}if((Nk(r)||ie.isConversationCoreBusy())&&oe&&pa.current.length===0){if(kC){x1(),ie.interruptCurrentTurn({inputEmptyAtCancel:pa.current.length===0,restorePrompt:lp.current||void 0}).catch(ce=>i({type:"APPEND_ERROR",text:ce instanceof Error?ce.message:String(ce)}));return}p1(!0),Dr.current&&clearTimeout(Dr.current),Dr.current=setTimeout(()=>{Dr.current=null,p1(!1)},use);return}let ve=X,be=new Zie(ve.keypress);if(_1.handleKeyDown(be),be.didStopImmediatePropagation()){ve.stopImmediatePropagation();return}if(bo.shift&&(bo.ctrl||bo.super)&&Sr(L,bo)==="c"){h1.current=g,Xie(g);return}if(bo.shift&&(bo.ctrl||bo.super)&&Sr(L,bo)==="v"&&h1.current){let ce=h1.current,fe=up.current,re=g.slice(0,fe),dt=g.slice(fe);h(re+ce+dt),v(fe+ce.length);return}if(process.platform==="darwin"&&ve.keypress?.isPasted===!0&&L.length===0&&b1({notifyWhenEmpty:!1}))return}S1.onInput(L,bo)}),u){let L=Math.max(20,rs.cols-6),q=l?.streamingState??"Idle",ie=rv({historyItems:f,pendingAssistant:"",pendingToolCalls:[],streamingState:q,contentWidth:L,transcriptMode:!0}).blocks;return e1(Yie,{mouseTracking:!0,children:e1(c$,{messages:ie,contentWidth:L,streamingState:q,conversationId:b,streamingApproxRef:fc})})}return e1(fF,{appendInfo:m,children:e1(a$,{uiState:r,inputValue:g,inputCursorOffset:y,wrappedRenderedLines:c3,inputTransientHint:VF,vimBindingsEnabled:AC,vimInputMode:XF,workspacePath:e.workspacePath,conversationId:b,contentWidth:Math.max(20,rs.cols-6),conversationTitle:Ht.current?.getCurrentConversationSummary().title,modelLabel:Ht.current?.getModelLabelById(j)??"-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",modeLabel:dse(Xt),interactionMode:Xt,contextMetrics:r.contextMetrics,streamingApproxRef:fc,askQuestionActive:!!gt,askQuestionAllowSkipAll:gt?.allowSkipAll??!1,askQuestionHint:gt?(()=>{let L=gt.questions.length,X=!!gt.questions[Ae]?.allowMultiple,ie=Ae>=L-1,ge=X?ie?"Enter \u63D0\u4EA4":"Enter \u4E0B\u4E00\u9898":ie?"Enter \u9009\u4E2D\u5E76\u63D0\u4EA4":"Enter \u9009\u4E2D\u5E76\u4E0B\u4E00\u9898",St=X?" \xB7 Space \u52FE\u9009\u9879":"",Ot=gt.allowSkipAll?" \xB7 Esc \u8DF3\u8FC7":"";return`Q${Ae+1}/${L} \xB7 \u2191/\u2193 \u9009\u9879${St} \xB7 \u805A\u7126\u300C\u5176\u4ED6\u300D\u540E n \u5199\u8BF4\u660E \xB7 ${ge} \xB7 [ ] \u4E0A/\u4E0B\u9898${Ot}`})():"",askQuestionUiState:i3,askQuestionPopup:gt?{title:gt.title,allowSkipAll:gt.allowSkipAll,questions:gt.questions,questionIndex:Ae,optionIndex:He,selectedByQuestion:xt,optionNotesByQuestion:ic,noteCapture:r1}:void 0,loginPopup:bC?{email:ac,password:o1,focusedField:i1,submitting:da,error:GF}:void 0,registerPopup:xC?{email:cc,code:TC,password:wC,confirmPassword:_C,displayName:SC,focusedField:rr,submitting:Xi,error:ZF,success:JF}:void 0,modePickerActive:V,modePickerHint:V?"\u4EA4\u4E92\u6A21\u5F0F":"",modePickerState:V?{entries:[...Fl],highlightedIndex:Te,selectedMode:Xt}:void 0,modelPickerActive:$,modelPickerHint:$?`Pick model (${A.length}) -> ${A[K]?.displayName??""}`:"",modelPickerState:$?{options:A,highlightedIndex:K,selectedModelId:j}:void 0,teamRolesPickerActive:en,teamRolesPickerHint:en?`\u5B50 Agent\uFF08${Gi.length}\uFF09\u2192 ${Gi[nr]?.label??""}`:"",teamRolesPickerState:en?{entries:Gi,highlightedIndex:nr,selectedRoleIds:w}:void 0,conversationPickerActive:ne,conversationPickerHeading:ne?de?"@ \u6062\u590D\u4F1A\u8BDD":"@ \u4F1A\u8BDD\u5217\u8868":void 0,conversationPickerHint:ne?de?`\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF08\u5171 ${We.length} \u4E2A\uFF09`:`\u9009\u62E9\u4F1A\u8BDD\uFF08\u5171 ${We.length} \u4E2A\uFF09`:"",conversationPickerForResume:de,conversationPickerState:ne?{options:We,highlightedIndex:te,offset:ue,viewportSize:rs.conversationPickerViewportSize,selectedConversationId:b??void 0,groupTitleForTimestamp:sse}:void 0,exitPendingHint:kC?"\u518D\u6309 Esc \u4E00\u6B21\u4E2D\u65AD":k1.pending&&k1.keyName?`\u518D\u6309 ${k1.keyName} \u4E00\u6B21\u9000\u51FA`:"",typeaheadSuggestions:ap.suggestions,typeaheadSelectedSuggestion:ap.selectedSuggestion,typeaheadMaxColumnWidth:_1.maxColumnWidth,typeaheadCommandArgumentHint:ap.commandArgumentHint,pendingUserMessageCount:vo.length,queueSelectionActive:S,queueSelectionIndex:T,queuedUserLines:vo,helpPopupActive:f1,helpTipsData:Yv,helpTipsIndex:es,helpTipsOffset:CC,helpTipsViewportSize:UC,mcpPanelActive:PC,mcpServers:ts,mcpViewState:Kt,mcpHighlightedIndex:sp,todoPickerActive:D,todoPickerState:D?{items:ye,highlightedIndex:Se}:void 0,debugPickerActive:xn.active,debugPickerHint:xn.hint,debugPickerState:xn.active?{lines:xn.lines,offset:xn.offset,viewportSize:xn.viewportSize,logPath:xn.logPath}:void 0})})}var t1=class{frameCount=0;flickerCount=0;reasons=new Map;onFrame(e){this.frameCount+=1;let n=e;if(!(!n||!Array.isArray(n.flickers)||n.flickers.length===0)){this.flickerCount+=n.flickers.length;for(let o of n.flickers){let r=typeof o?.reason=="string"&&o.reason.trim()?o.reason:"unknown";this.reasons.set(r,(this.reasons.get(r)??0)+1)}}}snapshot(){let e={};for(let[n,o]of this.reasons.entries())e[n]=o;return{frameCount:this.frameCount,flickerCount:this.flickerCount,reasons:e}}};function yC(t,e){let n=Object.entries(e.reasons).sort((r,i)=>i[1]-r[1]),o=n.length===0?"reasons=none":`reasons=${n.map(([r,i])=>`${r}:${i}`).join(",")}`;return`${t} frames=${e.frameCount} flickers=${e.flickerCount} ${o}`}function mse(t){if(typeof t=="boolean")return t;if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}async function BF(t){let e=mse(process.env.PANDA_CLI_FLICKER_STATS),n=e?new t1:null,{options:o,stdin:r,ownership:i}=oN(t,!1);sN(r);let s;try{let a=await fse({...o,onFrame:e?l=>n?.onFrame(l):void 0});n&&(process.stderr?.write?.(`[panda-flicker] enabled, sampling every 2s
2101
+ `):["\uFF08\u6682\u65E0\u65E5\u5FD7\uFF1A\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u4E3A\u7A7A\uFF09"]}function MF(t){let{termRows:e,onError:n}=t,[o,r]=Xv(!1),[i,s]=Xv([]),[a,l]=Xv(0),[c,u]=Xv(""),d=qie(()=>{let v=Number.isFinite(e)&&e>=1?Math.min(4096,Math.floor(e)):24,B=Math.max(0,v-14-4-1);return Math.max(5,Math.min(200,B))},[e]),p=RF([]),f=RF(12);hC(()=>{p.current=i},[i]),hC(()=>{f.current=d},[d]),hC(()=>{o&&l(v=>{let b=Math.max(0,p.current.length-f.current);return Math.min(Math.max(0,v),b)})},[o,i.length,d]);let m=Qv(()=>{r(!1)},[]),g=Qv(v=>{v.readCliDebugLog().then(b=>{let R=AF(b);s(R),u(v.getCliDebugLogPath()),l(Math.max(0,R.length-f.current))}).catch(b=>n(b))},[n]),h=Qv(v=>{v.readCliDebugLog().then(b=>{let R=AF(b);u(v.getCliDebugLogPath()),s(R),l(Math.max(0,R.length-f.current)),r(!0)}).catch(b=>n(b))},[n]),y=Qv(v=>{let{inputChar:b,isEscape:R,isEnter:M,isShiftEnter:B,isPageUp:S,isPageDown:x,isWheelUp:T,isWheelDown:W,isPickerListUp:A,isPickerListDown:U,ctrlOrMeta:j,session:_}=v;return o?R||M&&!B?(m(),!0):b==="r"&&!j?(g(_),!0):A?(l($=>Math.max(0,$-1)),!0):U?(l($=>{let N=Math.max(0,p.current.length-f.current);return Math.min(N,$+1)}),!0):S?(l($=>Math.max(0,$-f.current)),!0):x?(l($=>{let N=Math.max(0,p.current.length-f.current);return Math.min(N,$+f.current)}),!0):T?(l($=>Math.max(0,$-3)),!0):(W&&l($=>{let N=Math.max(0,p.current.length-f.current);return Math.min(N,$+3)}),!0):!1},[o,m,g]);return{active:o,lines:i,offset:a,logPath:c,viewportSize:d,open:h,close:m,handleInput:y,hint:o?"\u8C03\u8BD5\u65E5\u5FD7\uFF1A\u2191/\u2193 \u6EDA\u52A8 \xB7 r \u91CD\u8F7D \xB7 Enter/Esc \u5173\u95ED":""}}var OF=kF(gC);function op(t){return`${t}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function ese(t){let e=globalThis;if(typeof e.requestAnimationFrame=="function"){let o=e.requestAnimationFrame(t);return()=>e.cancelAnimationFrame?.(o)}if(typeof setImmediate=="function"){let o=setImmediate(t);return()=>clearImmediate(o)}let n=setTimeout(t,0);return()=>clearTimeout(n)}function tse(t){if(!(process.platform!=="darwin"||!t))try{Jie("pbcopy",["-"],{input:t,encoding:"utf8",stdio:["pipe","ignore","ignore"]})}catch{}}function nse(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>e?.type==="text"?String(e.text??""):e?.type==="image"?"[\u56FE\u7247]":e?.type==="fileContext"&&typeof e.displayPath=="string"&&e.displayPath?Rd(e.displayPath):"").join(""):""}function rse(t){return typeof t=="string"?t:Array.isArray(t)?xs(t):""}function LF(t){return typeof t=="string"?t:Array.isArray(t)?xs(t):""}function ose(t){return t==="pending"?"pending":t==="executing"?"executing":t==="error"?"error":t==="success"?"success":t==="cancelled"?"error":"success"}function $F(t){let e=t.displayData;return e&&typeof e=="object"&&typeof e.tool=="string"?e.tool:"tool"}function ise(t){let e=new Set;for(let n of t){if(n.role!=="tool")continue;let o=n.displayData,r=o&&typeof o.subWorkId=="string"?o.subWorkId.trim():"";r&&e.add(r)}return e}function sse(t,e){if(t.role==="assistant"||t.role==="thinking"){let n=t.workId?.trim();return!!(n&&e.has(n))}if(t.role==="tool"){let n=$F(t);if(n==="ask_question")return!1;let o=t.workId?.trim();if(!o||!e.has(o))return!1;let r=t.displayData,i=r&&typeof r.subWorkId=="string"?r.subWorkId.trim():"";return n.startsWith("agent_")?!!(i&&i!==o):!0}return!1}function ase(t){let e=[],n=ise(t);for(let o of t){if(sse(o,n))continue;let r=o.role==="user"?rse(o.content):nse(o.content);if(o.role==="user"){e.push({id:op("user"),type:"user",text:r});continue}if(o.role==="thinking"){e.push({id:op("thinking"),type:"thinking",text:r});continue}if(o.role==="assistant"){e.push({id:op("assistant"),type:"assistant",text:r});continue}if(o.role==="tool"){let i=o.displayData,s=ose(i?.status?.state),a={id:o.messageId||op("tool"),name:$F(o),status:s,resultText:r,displayData:o.displayData,...o.workId?{workId:o.workId}:{}};e.push({id:op("tools"),type:"tool_group",tools:[a]});continue}}return e}async function aa(t,e){let n=t.getCurrentConversationMessages();e({type:"HYDRATE_HISTORY",historyItems:ase(n)})}function lse(t){let e=new Date,n=new Date(t);if(e.toDateString()===n.toDateString())return"\u4ECA\u5929";let r=new Date(e);if(r.setDate(e.getDate()-1),r.toDateString()===n.toDateString())return"\u6628\u5929";let i=new Date(e);return i.setDate(e.getDate()-7),n>=i?"\u8FD1 7 \u5929":`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,"0")}`}function Yo(t){return t instanceof Error?t.message:String(t)}function cse(t){return t.includes("PANDA_NOT_LOGGED_IN")}var use=8;function NF(t){let e=t.trim();return e?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e):!1}var dse="\u5F53\u524D\u6709\u56DE\u590D\u6216\u5DE5\u5177\u5728\u8FDB\u884C\uFF1A/new\u3001/switch\u3001/conversations\u3001/resume\u3001/model\u3001/mode\u3001/team \u5DF2\u6682\u65F6\u7981\u7528\u3002\u53EF\u8F93\u5165\u666E\u901A\u6D88\u606F\u540E Enter \u52A0\u5165\u961F\u5217\uFF0C\u6216\u53CC\u51FB Esc \u4E2D\u65AD\u540E\u518D\u6267\u884C\u4E0A\u8FF0\u547D\u4EE4\u3002",pse=5e3;function fse(t){return gk(t)}function FF(t){let{args:e}=t,{rows:n,columns:o}=Fo(),[r,i]=Zie(ON,void 0,LN);Gie(()=>r.assistantStreamOverlap?ese(()=>{i({type:"CLEAR_ASSISTANT_STREAM_OVERLAP"})}):void 0,[r.assistantStreamOverlap?.historyItemId,i]);let[s,a]=he("normal"),[l,c]=he(null),u=s==="transcript",d=Jt(()=>{let L=s!=="transcript";a(q=>q==="transcript"?"normal":"transcript"),c(L?{historyItemsLength:r.historyItems.length,streamingState:r.streamingState}:null)},[s,r.historyItems.length,r.streamingState]),p=Jt(()=>{a("normal"),c(null)},[]),f=Rr(()=>l?r.historyItems.slice(0,l.historyItemsLength):r.historyItems,[l,r.historyItems]),m=Jt(L=>{i({type:"APPEND_INFO",text:L})},[i]),[g,h]=he(""),[y,v]=he(0),[b,R]=he(null),[M,B]=he(0),[S,x]=he(!1),[T,W]=he(0),[A,U]=he([]),[j,_]=he(void 0),[$,N]=he(!1),[K,E]=he(0),[V,ae]=he(!1),[Te,me]=he(0),[ne,Pe]=he(!1),[de,H]=he(!1),[te,ee]=he(0),[ue,Q]=he(0),[We,Qt]=he([]),[Xt,ln]=he("agent"),[en,Ar]=he(!1),[nr,O]=he(0),[w,z]=he([]),[D,pe]=he(!1),[Se,st]=he(0),[ye,Re]=he([]),[Ae,Ke]=he(0),[He,_t]=he(0),[xt,Yi]=he({}),[ic,n1]=he({}),[r1,la]=he(null),[VF,qF]=he(""),[bC,sc]=he(!1),[ac,lc]=he(""),[o1,ca]=he(""),[i1,ua]=he("email"),[da,s1]=he(!1),[GF,Qi]=he(void 0),[xC,ip]=he(!1),[cc,a1]=he(""),[TC,l1]=he(""),[wC,c1]=he(""),[_C,u1]=he(""),[SC,d1]=he(""),[rr,yo]=he("email"),[Xi,uc]=he(!1),[ZF,vn]=he(void 0),[JF,Qo]=he(void 0),[kC,p1]=he(!1),[f1,IC]=he(!1),[es,dc]=he(0),[CC,EC]=he(0),[PC,RC]=he(!1),[ts,YF]=he([]),[Kt,ns]=he({mode:"server-list"}),[sp,Mr]=he(0),[ap,QF]=he({suggestions:[],selectedSuggestion:-1}),[AC,MC]=he(()=>{let L=typeof process<"u"?process.env.PANDA_CLI_VIM?.trim().toLowerCase():"";return L==="1"||L==="true"||L==="vim"}),[XF,e3]=he("INSERT"),m1=Yt([]),bn=Yt(-1),g1=Yt(""),pa=Yt(""),lp=Yt(""),h1=Yt(""),Ht=Yt(null),DC=Yt(!1);DC.current=r.running;let pc=Yt(null),fc=Yt({targetChars:0,turnStartedAt:0,thinkingCharCount:0,thinkingEnded:!1}),OC=Yt(void 0),LC=Yt(!1),y1=Yt(new Set),NC=Yt(0),cp=Yt(new Map),[$C,FC]=he([]),v1=Yt([]),mr=Jt(()=>{cp.current.clear(),NC.current=0},[]),b1=Jt(L=>{let q=k6();if(!q)return L?.notifyWhenEmpty&&i({type:"APPEND_INFO",text:"\u526A\u8D34\u677F\u4E2D\u672A\u68C0\u6D4B\u5230 PNG \u56FE\u7247\uFF08\u5F53\u524D\u4EC5 macOS \u652F\u6301\uFF1B\u53EF\u5C1D\u8BD5\u622A\u56FE\u540E\u7C98\u8D34\uFF09\u3002"}),!1;bn.current=-1;let X=++NC.current;cp.current.set(X,q);let ie=`[Image #${X}]`,ge=up.current,St=pa.current,Ot=St.slice(0,ge)+ie+St.slice(ge);return h(Ot),v(ge+ie.length),!0},[i]),rs=Rr(()=>{let L=Number.isFinite(n)&&n>=1?Math.min(4096,Math.floor(n)):24,q=Number.isFinite(o)&&o>=1?Math.min(4096,Math.floor(o)):80,X=14,ie=4,ge=1,St=4,Ot=Math.max(0,L-X-ie-ge),le=Math.max(3,Math.min(200,Math.floor(Ot/St)));return{cols:q,conversationPickerViewportSize:le}},[n,o]),UC=Rr(()=>{let L=Number.isFinite(n)&&n>=1?Math.min(4096,Math.floor(n)):24,q=14,X=4,ie=1,ge=3,St=Math.max(0,L-q-X-ie);return Math.max(3,Math.min(200,Math.floor(St/ge)))},[n]),xn=MF({termRows:n,onError:L=>i({type:"APPEND_ERROR",text:Yo(L)})}),BC=xn.open;ho(()=>(A$(e.workspacePath),()=>M$()),[e.workspacePath]),ho(()=>{let L=!1;return Ei(e.workspacePath,process.env.HOME??process.env.USERPROFILE??"").then(q=>{L||(v1.current=q,FC(IF(q,OF)))}).catch(()=>{L||(v1.current=[],FC([]))}),()=>{L=!0}},[e.workspacePath]),ho(()=>{pa.current=g},[g]);let up=Yt(0),Dr=Yt(null);ho(()=>{up.current=y},[y]);let t3=Math.max(20,rs.cols-6),vo=Rr(()=>{let L=Ht.current;return L?L.getPendingQueue().map(PF):[]},[M,b,r.running,r.streamingState,r.historyItems.length,r.pendingAssistant]);ho(()=>{if(S){if(vo.length===0){x(!1),W(0);return}W(L=>Math.max(0,Math.min(L,vo.length-1)))}},[S,vo.length]);let x1=Jt(()=>{Dr.current&&(clearTimeout(Dr.current),Dr.current=null),p1(!1)},[]);ho(()=>()=>{Dr.current&&(clearTimeout(Dr.current),Dr.current=null)},[]);let os=Jt(L=>{let q=L.trim();if(!q)return;let X=m1.current;X[X.length-1]!==q&&X.push(q)},[]),n3=Jt(()=>{if(vo.length>0&&bn.current===-1&&up.current===0){x(!0),W(ie=>Math.max(0,Math.min(ie,vo.length-1)));return}let L=m1.current;if(L.length===0)return;let q=pa.current;bn.current===-1?(g1.current=q,bn.current=L.length-1):bn.current>0&&bn.current--;let X=L[bn.current]??"";h(X),v(X.length)},[vo.length]),r3=Jt(()=>{let L=m1.current;if(bn.current!==-1)if(bn.current<L.length-1){bn.current++;let q=L[bn.current]??"";h(q),v(q.length)}else{bn.current=-1;let q=g1.current;h(q),v(q.length)}},[]),o3=Jt(()=>{bn.current=-1,g1.current=""},[]),is=Jt(()=>{let L=Ht.current;L&&ln(L.getInteractionMode())},[]),ss=Jt(()=>{ip(!1),sc(!0),lc(""),ca(""),ua("email"),s1(!1),Qi(void 0),mr(),h(""),v(0)},[mr]),dp=Jt(L=>!L||!cse(L)?!1:(i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u5DF2\u62E6\u622A\u672C\u6B21\u8BF7\u6C42\u3002\u8BF7\u5148\u767B\u5F55 Panda \u8D26\u53F7\u540E\u91CD\u8BD5\u3002"}),ss(),!0),[i,ss]),T1=Jt(()=>{sc(!1),ip(!0),a1(""),l1(""),c1(""),u1(""),d1(""),yo("email"),uc(!1),vn(void 0),Qo(void 0),mr(),h(""),v(0)},[mr]),w1=Jt(L=>{let q=Ht.current;if(!q)return;let X=L.trim();if(X){if(X==="/vim"){MC(ie=>{let ge=!ie;return i({type:"APPEND_INFO",text:ge?"Vim \u952E\u4F4D\u5DF2\u5F00\u542F\uFF1AInsert \u5185 Esc\u2192Normal\uFF1Bhjkl/\u8FD0\u7B97\u7B26\u7B49\u89C1 docs/PROMPT_INPUT_VIM.md\u3002\u518D\u8F93\u5165 /vim \u5173\u95ED\u3002":"\u5DF2\u5173\u95ED Vim\uFF0C\u6062\u590D readline \u7F16\u8F91\uFF08\u53CC\u6309 Esc \u6E05\u7A7A\u8F93\u5165\uFF09\u3002"}),ge}),mr(),h(""),v(0);return}if(X==="/help"||X==="?"){IC(ie=>(ie||(dc(0),EC(0)),!ie)),mr(),h(""),v(0);return}if(X==="/debug"||X.startsWith("/debug ")){let ie=X==="/debug"?"":X.slice(6).trim();if(mr(),h(""),v(0),ie==="clear"){os("/debug clear"),q.clearCliDebugLog().then(()=>{i({type:"APPEND_INFO",text:`\u5DF2\u6E05\u9664\u8C03\u8BD5\u65E5\u5FD7\uFF1A${q.getCliDebugLogPath()}`})}).catch(ge=>{i({type:"APPEND_ERROR",text:Yo(ge)})});return}if(ie!==""){i({type:"APPEND_ERROR",text:"\u7528\u6CD5\uFF1A/debug \u67E5\u770B\u4F1A\u8BDD\u8C03\u8BD5\u65E5\u5FD7\uFF1B/debug clear \u6E05\u7A7A\u5F53\u524D\u4F1A\u8BDD\u65E5\u5FD7"});return}os("/debug"),BC(q);return}(async()=>{if(DC.current&&EF(X)){i({type:"APPEND_INFO",text:dse});return}if(X==="/compact"){mr(),os(Vy(X)||X),h(""),v(0);try{q.enqueueConversationAction("summarize_conversation",{modelId:j,displayLabel:"/compact"}),B(le=>le+1)}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}return}if(X==="/commit"){mr(),os(X),h(""),v(0);try{q.enqueueConversationAction("commit",{modelId:j,displayLabel:"/commit"}),B(le=>le+1)}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}return}if(X==="/todo"||X.startsWith("/todo ")){let le=q.getTodoStore(),Ie=X==="/todo"?"":X.slice(6).trim();Ie?(le.addItem(Ie).then(()=>{i({type:"APPEND_INFO",text:`\u5DF2\u6DFB\u52A0\u5F85\u529E\u4E8B\u9879\uFF1A${Ie}`})}),h(""),v(0)):le.getItems().then(oe=>{if(oe.length===0){i({type:"APPEND_INFO",text:"\u6682\u65E0\u5F85\u529E\u4E8B\u9879\u3002\u4F7F\u7528 /todo \u4E8B\u9879\u5185\u5BB9 \u6DFB\u52A0"}),h(""),v(0);return}Re(oe),st(0),pe(!0)});return}let ie=CF(X,v1.current,OF),ge=ie?await _6(ie.skillName,ie.tail,cp.current,e.workspacePath):await vI(X,cp.current,e.workspacePath),St=S6(ge);if(mr(),os(Vy(X)||X),lp.current=LF(St),h(""),v(0),X==="/new"||X==="/clear"){let le=q.newConversation();R(le),i({type:"HYDRATE_HISTORY",historyItems:[]}),is();return}if(X==="/fork"){try{let le=await q.forkConversation();R(le.conversationId),await aa(q,i),is(),i({type:"APPEND_INFO",text:`\u5DF2\u521B\u5EFA\u5206\u53C9\u4F1A\u8BDD\uFF1A${le.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${le.conversationId}]`})}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}return}if(X==="/conversations"||X==="/resume"||X==="/session"){let le=X==="/resume";try{let Ie=await q.listSessionSummaries();if(Ie.length===0){i({type:"APPEND_INFO",text:"\u672A\u627E\u5230\u5DF2\u4FDD\u5B58\u7684\u4F1A\u8BDD\u3002"});return}le&&i({type:"APPEND_INFO",text:"\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF1A\u5728\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u9879\uFF0CEnter \u6062\u590D\uFF1BEsc \u53D6\u6D88\u3002"}),Qt(Ie);let oe=Math.max(0,Ie.findIndex(Je=>Je.conversationId===q.getConversationId()));ee(oe),Q(Math.max(0,oe-4)),H(le),Pe(!0)}catch(Ie){i({type:"APPEND_ERROR",text:Ie instanceof Error?Ie.message:String(Ie)})}return}if(X.startsWith("/switch ")||X.startsWith("/resume ")){let le=X.startsWith("/resume "),Ie=le?"/resume ":"/switch ";try{let oe=X.slice(Ie.length).trim();if(!oe){i({type:"APPEND_ERROR",text:le?"Usage: /resume <index|conversationId>":"Usage: /switch <index|conversationId>"});return}let Je=await q.listSessionSummaries(),tt=null,Xo=Number(oe);if(!Number.isNaN(Xo)&&Xo>=1&&Xo<=Je.length?tt=Je[Xo-1].conversationId:Je.some(fa=>fa.conversationId===oe)&&(tt=oe),!tt){i({type:"APPEND_ERROR",text:`Session not found: ${oe}`});return}if(!await q.switchConversation(tt)){i({type:"APPEND_ERROR",text:`Failed to switch session: ${tt}`});return}if(R(tt),await aa(q,i),is(),le){let fa=q.getCurrentConversationSummary();i({type:"APPEND_INFO",text:`\u5DF2\u6062\u590D\u4F1A\u8BDD\uFF1A${fa.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${fa.conversationId}]`})}}catch(oe){i({type:"APPEND_ERROR",text:oe instanceof Error?oe.message:String(oe)})}return}if(X==="/model"||X.startsWith("/model ")){let le=A,Ie=j;try{let oe=await q.refreshModelOptions();U(oe.options),_(oe.selectedModelId),le=oe.options,Ie=oe.selectedModelId,oe.changed&&i({type:"APPEND_INFO",text:`\u6A21\u578B\u5217\u8868\u5DF2\u5237\u65B0\uFF08${oe.options.length} \u4E2A\uFF09\u3002`})}catch(oe){i({type:"APPEND_ERROR",text:`\u6A21\u578B\u5237\u65B0\u5931\u8D25\uFF1A${oe instanceof Error?oe.message:String(oe)}`})}if(X.startsWith("/model ")){let oe=X.slice(7).trim();if(oe.length>0){let Je=le.find(tt=>tt.id===oe);if(!Je){i({type:"APPEND_ERROR",text:`\u6A21\u578B\u4E0D\u5B58\u5728\uFF1A${oe}`});return}q.setSelectedModelId(Je.id).catch(()=>{}),_(Je.id),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u6A21\u578B\uFF1A${Je.displayName}`});return}}le.length>0&&(N(!0),E(Math.max(0,le.findIndex(oe=>oe.id===Ie))));return}if(X==="/auth"||X.startsWith("/auth ")){let Ie=X.slice(5).trim().toLowerCase()||"login";if(!["login","register","logout","whoami"].includes(Ie)){i({type:"APPEND_ERROR",text:"\u672A\u77E5 /auth \u5B50\u547D\u4EE4\u3002\u7528\u6CD5\uFF1A/auth <login|register|logout|whoami>"});return}if(i({type:"APPEND_INFO",text:`\u5DF2\u8FDB\u5165\u7EDF\u4E00\u8BA4\u8BC1\u5165\u53E3\uFF1A/auth ${Ie}`}),Ie==="whoami"){try{let oe=await q.checkAuthSession();!oe.ok||!oe.user?i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\u3002"}):i({type:"APPEND_INFO",text:`\u5F53\u524D\u767B\u5F55\uFF1A${oe.user.username||oe.user.email||oe.user.id}`})}catch(oe){i({type:"APPEND_ERROR",text:oe instanceof Error?oe.message:String(oe)})}return}if(Ie==="logout"){try{await q.logout(),i({type:"APPEND_INFO",text:"\u5DF2\u9000\u51FA\u767B\u5F55\u3002"})}catch(oe){i({type:"APPEND_ERROR",text:oe instanceof Error?oe.message:String(oe)})}return}if(Ie==="register"){T1();return}try{let oe=await q.checkAuthSession();if(oe.ok&&oe.user){i({type:"APPEND_INFO",text:`\u5F53\u524D\u5DF2\u767B\u5F55\uFF1A${oe.user.username||oe.user.email||oe.user.id}\u3002\u5982\u9700\u5207\u6362\u8D26\u53F7\u8BF7\u5148 /auth logout\u3002`});return}}catch{}ss();return}if(X==="/whoami"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth whoami\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"});try{let le=await q.getCurrentUser();i(le?{type:"APPEND_INFO",text:`\u5F53\u524D\u767B\u5F55\uFF1A${le.username||le.email||le.id}`}:{type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\u3002"})}catch(le){i({type:"APPEND_ERROR",text:le instanceof Error?le.message:String(le)})}return}if(X==="/logout"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth logout\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"});try{await q.logout(),i({type:"APPEND_INFO",text:"\u5DF2\u9000\u51FA\u767B\u5F55\u3002"})}catch(le){i({type:"APPEND_ERROR",text:le instanceof Error?le.message:String(le)})}return}if(X==="/register"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth register\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"}),T1();return}if(X==="/login"){i({type:"APPEND_INFO",text:"\u63D0\u793A\uFF1A\u63A8\u8350\u4F7F\u7528 /auth login\uFF08\u65E7\u547D\u4EE4\u4ECD\u53EF\u7528\uFF09\u3002"});try{let le=await q.getCurrentUser();if(le){i({type:"APPEND_INFO",text:`\u5F53\u524D\u5DF2\u767B\u5F55\uFF1A${le.username||le.email||le.id}\u3002\u5982\u9700\u5207\u6362\u8D26\u53F7\u8BF7\u5148 /logout\u3002`});return}}catch{}ss();return}if(X==="/mode"||X.startsWith("/mode ")){let le=X.slice(5).trim();if(le===""){ae(!0),me(Math.max(0,mk.indexOf(Xt)));return}let Ie=le,oe=t7(Ie);if(!oe){i({type:"APPEND_ERROR",text:`\u672A\u77E5\u6A21\u5F0F\u300C${Ie}\u300D\u3002\u7528\u6CD5\uFF1A/mode <agent|ask|plan|office|team>\uFF1B\u4EC5\u8F93\u5165 /mode \u6253\u5F00\u4EA4\u4E92\u6A21\u5F0F\u5217\u8868\u3002`});return}q.setInteractionMode(oe),ln(oe),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u5230 ${gk(oe)} \u6A21\u5F0F\u3002`});return}if(X==="/team"){q.getInteractionMode()!=="team"&&(q.setInteractionMode("team"),ln("team"),i({type:"APPEND_INFO",text:"\u5DF2\u5207\u6362\u5230 team \u6A21\u5F0F\u3002"}));return}if(X==="/update"||X.startsWith("/update ")){let le=X.slice(7).trim();if(le==="--help"||le==="-h"){Ty(Je=>i({type:"APPEND_INFO",text:Je}));return}let Ie=le==="--check"||le==="-c",oe=Je=>Je.replace(/^\n+/,"");try{await wy({checkOnly:Ie,skipConfirm:!0,onInfo:Je=>i({type:"APPEND_INFO",text:oe(Je)}),onError:Je=>i({type:"APPEND_ERROR",text:oe(Je)})})}catch(Je){i({type:"APPEND_ERROR",text:Yo(Je)})}return}if(X==="/mcp"||X.startsWith("/mcp ")){let Ie=X.slice(4).trim().split(/\s+/),oe=Ie[0]??"",Je=Ie.slice(1).join(" ").trim();if(oe==="list"||oe===""){try{let tt=await q.getMcpDetails();YF(tt),ns({mode:"server-list"}),Mr(0),RC(!0)}catch(tt){i({type:"APPEND_ERROR",text:tt instanceof Error?tt.message:String(tt)})}return}if(oe==="enable"){if(!Je){i({type:"APPEND_ERROR",text:"\u7528\u6CD5\uFF1A/mcp enable <name>"});return}try{await q.setMcpServerEnabled(Je,!0);let{updateMcpConfigEnabled:tt}=await Promise.resolve().then(()=>(vy(),Ak));await tt(Je,!0),i({type:"APPEND_INFO",text:`\u5DF2\u542F\u7528 MCP \u670D\u52A1\u5668 "${Je}"`})}catch(tt){i({type:"APPEND_ERROR",text:tt instanceof Error?tt.message:String(tt)})}return}if(oe==="disable"){if(!Je){i({type:"APPEND_ERROR",text:"\u7528\u6CD5\uFF1A/mcp disable <name>"});return}try{await q.setMcpServerEnabled(Je,!1);let{updateMcpConfigEnabled:tt}=await Promise.resolve().then(()=>(vy(),Ak));await tt(Je,!1),i({type:"APPEND_INFO",text:`\u5DF2\u7981\u7528 MCP \u670D\u52A1\u5668 "${Je}"`})}catch(tt){i({type:"APPEND_ERROR",text:tt instanceof Error?tt.message:String(tt)})}return}}try{i({type:"TURN_STARTED",turnId:""}),q.submit(ge,j,St),R(q.getConversationId()),B(le=>le+1)}catch(le){i({type:"APPEND_ERROR",text:Yo(le)})}})().catch(ie=>{let ge=ie instanceof Error?ie.message:String(ie);dp(ge)||i({type:"APPEND_ERROR",text:ge})})}},[e.workspacePath,mr,b,BC,i,dp,Xt,A,ss,T1,os,j,ln,is,r.historyItems.length]),gt=Rr(()=>{for(let L of r.pendingToolCalls){if(L.name!=="ask_question"||L.status==="success"||L.status==="error"||L.status!=="pending"&&L.status!=="executing"&&L.status!=="confirming")continue;let q=L.displayData;if(!q||q.tool!=="ask_question"||!Array.isArray(q.questions)||q.questions.length===0)continue;let X=q.questions.filter(ie=>ie&&typeof ie.id=="string"&&typeof ie.prompt=="string"&&Array.isArray(ie.options)&&ie.options.length>0).map(ie=>({id:String(ie.id),prompt:String(ie.prompt),allowMultiple:!!ie.allowMultiple,required:ie.required!==!1,freeform:!!ie.freeform,options:ie.options.map(ge=>{let St=String(ge.id??""),Ot=String(ge.label??""),le=typeof ge.description=="string"&&ge.description.trim()?ge.description.trim():void 0;return le?{id:St,label:Ot,description:le}:{id:St,label:Ot}})}));if(X.length!==0)return{toolCallId:L.id,title:typeof q.title=="string"?q.title:"",allowSkipAll:q.allowSkipAll===!0,questions:X}}return null},[r.pendingToolCalls]);ho(()=>{Ke(0),_t(0),Yi({}),n1({}),la(null)},[gt?.toolCallId]);let i3=Rr(()=>{if(gt)return{toolCallId:gt.toolCallId,questionIndex:Ae,optionIndex:He,selectedByQuestion:xt}},[gt,Ae,He,xt]),mc=!ne&&!en&&!V&&!$&&!D&&!xn.active&&!gt&&!f1,s3=Rr(()=>[...gC,...$C],[$C]),a3=ra(L=>L.agents),l3=Jt((L,q)=>{w1(L)},[w1]),_1=SF({commands:s3,onInputChange:L=>{bn.current=-1,h(L)},onSubmit:l3,setCursorOffset:v,input:g,cursorOffset:y,mode:tp(g),agents:a3,setSuggestionsState:QF,suggestionsState:ap,suppressSuggestions:!mc,markAccepted:()=>{}}),S1=f6({value:g,onChange:L=>{bn.current=-1,h(L)},onOffsetChange:v,externalOffset:y,columns:t3,multiline:!0,vimBindingsEnabled:AC,onModeChange:L=>e3(L),cursorChar:"\u2588",invert:L=>DF.inverse(L),dim:L=>DF.dim(L),onSubmit:w1,onHistoryUp:n3,onHistoryDown:r3,onHistoryReset:o3,onEscapeClearHint:L=>qF(L?"\u518D\u6309 Esc \u6E05\u7A7A\u8F93\u5165":""),onDoubleEscapeCommit:L=>{let q=L.trim();q&&os(Vy(q)||q)},inlineGhostText:_1.inlineGhostText}),c3=Rr(()=>{if(!(!mc||xn.active||g.length===0))return S1.renderedValue.split(`
2102
+ `)},[mc,xn.active,g.length,S1.renderedValue]);gd("Chat",mc);let u3=Jt(()=>{let L=Ht.current;return!L||!Nk(r)&&!L.isConversationCoreBusy()?!1:(L.interruptCurrentTurn({inputEmptyAtCancel:pa.current.length===0,restorePrompt:lp.current||void 0}).catch(q=>i({type:"APPEND_ERROR",text:q instanceof Error?q.message:String(q)})),x1(),x(!1),!0)},[x1,i,r]),k1=fN(hd,u3,void 0,!0),d3=Rr(()=>({"chat:toggleVimMode":()=>{MC(L=>{let q=!L;return i({type:"APPEND_INFO",text:q?"Vim \u952E\u4F4D\u5DF2\u5F00\u542F\uFF08Ctrl+Shift+Y \u6216 /vim \u5207\u6362\uFF09\u3002":"Vim \u952E\u4F4D\u5DF2\u5173\u95ED\u3002"}),q})},"chat:toggleOperationMode":()=>{let L=Ht.current;if(!L)return;let q=e7(L.getInteractionMode());L.setInteractionMode(q),ln(q)},"chat:openTeamRolesPicker":()=>{let L=Ht.current;!L||L.getInteractionMode()!=="team"||(z(L.getEnabledTeamRoles()),O(0),Ar(!0))},"chat:openModelPicker":()=>{A.length>0&&(N(!0),E(Math.max(0,A.findIndex(L=>L.id===j))))},"chat:imagePaste":()=>{b1({notifyWhenEmpty:!0})}}),[i,A,j,b1]);hd(d3,{context:"Chat",isActive:mc});let p3=Rr(()=>({"app:toggleTranscript":d}),[d]);hd(p3,{context:"Global"}),gd("Transcript",u);let f3=Rr(()=>({"transcript:toggleShowAll":()=>{c(null)},"transcript:exit":p}),[p]);hd(f3,{context:"Transcript",isActive:u}),ho(()=>{if(!LC.current)return LC.current=!0,(async()=>{try{let L=await yy(e);Ht.current=L,R(L.getConversationId()),await aa(L,i),is();let q=L.listModelOptions();U(q);let X=L.getSelectedModelId()??q[0]?.id;_(X),E(Math.max(0,q.findIndex(ge=>ge.id===X))),await L.getCurrentUser().catch(()=>{})||(i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55 Panda \u8D26\u53F7\u3002"}),ss()),e.initialPrompt&&e.initialPrompt.trim()&&(L.submit(e.initialPrompt.trim()),R(L.getConversationId()))}catch(L){i({type:"APPEND_ERROR",text:Yo(L)})}})(),()=>{pc.current?.()}},[e,ss,is]);let jC=Jt(async(L,q)=>{let X=Ht.current;if(!X)return;let ie=X.getConversationId();if(!(ie===En||y1.current.has(ie)||X.isCurrentConversationEphemeral()||X.getCurrentConversationTurnCount()>1)){y1.current.add(ie);try{await X.runRegisteredActionImmediate("rename_conversation",void 0,X.getSelectedModelId()??void 0,L)}catch{y1.current.delete(ie)}}},[]);if(ho(()=>{let L=Ht.current;if(!L||!b)return;let q=OC.current;OC.current=b,pc.current?.(),mN(q,b)&&i({type:"RESET_STREAMING_STATE"}),fc.current.targetChars=0,fc.current.turnStartedAt=Date.now();let X=process.env.PANDA_CLI_UI_FREEZE_UNTIL_TURN_END==="1";return pc.current=BN({eventBus:L.eventBus,getConversationId:()=>Ht.current?.getConversationId()??En,dispatch:i,streamingApproxRef:fc,onTurnStarted:jC,onTurnFailed:ie=>{dp(ie)},onTurnCancelled:({revertApplied:ie,restorePrompt:ge})=>{if(!ie)return;let St=Ht.current;if(!St)return;aa(St,i);let Ot=LF(ge);Ot.length>0&&(h(Ot),v(Ot.length)),lp.current=""},onConversationUiMessagesUpdated:()=>{let ie=Ht.current;ie&&aa(ie,i)},freezeUiUntilTurnEnd:X,onFreezeTurnEndHydrate:()=>{let ie=Ht.current;ie&&aa(ie,i)}}),()=>{pc.current?.(),pc.current=null}},[b,jC,i,dp]),ho(()=>{if(!ne||We.length===0)return;let L=rs.conversationPickerViewportSize;Q(q=>Math.max(0,Math.min(q,Math.max(0,We.length-L))))},[ne,rs.conversationPickerViewportSize,We.length]),Qie((L,q,X)=>{let ie=Ht.current;if(!ie)return;let ge=q,St=String(ge.sequence??L??""),Ot=!!(ge.upArrow||ge.name==="up"||St==="\x1B[A"||St.endsWith("[A")),le=!!(ge.downArrow||ge.name==="down"||St==="\x1B[B"||St.endsWith("[B")),Ie=!!(ge.return||ge.name==="return"||ge.name==="enter"),oe=!!(ge.escape||ge.name==="escape"),Je=Ie&&!!ge.shift,tt=!!(ge.pageUp||ge.name==="pageup"),Xo=!!(ge.pageDown||ge.name==="pagedown"),zC=!!(ge.wheelUp||ge.name==="wheelup"),fa=!!(ge.wheelDown||ge.name==="wheeldown"),cn=q;if(xC){let we=["email","code","password","confirmPassword","displayName"],ve=q,be=!!(ve.backspace||ve.name==="backspace"||L==="\b"||L==="\x7F"),ce=!!((ve.ctrl||ve.meta)&&L.toLowerCase()==="g");if(oe&&!Xi){ip(!1),vn(void 0),Qo(void 0);return}if((Ot||le)&&!Xi){let re=we.indexOf(rr),dt=Ot?re<=0?we.length-1:re-1:re>=we.length-1?0:re+1;yo(we[dt]);return}if(be&&!Xi){vn(void 0),Qo(void 0),rr==="email"&&a1(re=>re.slice(0,-1)),rr==="code"&&l1(re=>re.slice(0,-1)),rr==="password"&&c1(re=>re.slice(0,-1)),rr==="confirmPassword"&&u1(re=>re.slice(0,-1)),rr==="displayName"&&d1(re=>re.slice(0,-1));return}if(ce&&!Xi){if(!cc.trim()){vn("\u8BF7\u8F93\u5165\u90AE\u7BB1\u3002"),yo("email");return}if(!NF(cc)){vn("\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002"),yo("email");return}uc(!0),vn(void 0),Qo(void 0),(async()=>{try{await ie.sendRegisterVerificationCode(cc.trim()),Qo("\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u5230\u60A8\u7684\u90AE\u7BB1\uFF0C\u8BF7\u67E5\u6536\u3002")}catch(re){vn(re instanceof Error?re.message:String(re))}finally{uc(!1)}})().catch(()=>{});return}if(Ie&&!Xi){let re=cc.trim(),dt=TC.trim(),at=wC,as=_C,un=SC.trim();if(!re){vn("\u8BF7\u8F93\u5165\u90AE\u7BB1\u3002"),yo("email");return}if(!NF(re)){vn("\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002"),yo("email");return}if(!dt){vn("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801\u3002"),yo("code");return}if(!at||at.length<use){vn("\u5BC6\u7801\u81F3\u5C11 8 \u4F4D\u3002"),yo("password");return}if(at!==as){vn("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002"),yo("confirmPassword");return}uc(!0),vn(void 0),Qo(void 0),(async()=>{try{await ie.register(re,dt,at,as,un||void 0),ip(!1),Qo(void 0),sc(!0),lc(re),ca(""),ua("password"),Qi(void 0),i({type:"APPEND_INFO",text:"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55\u3002"})}catch(qn){vn(qn instanceof Error?qn.message:String(qn))}finally{uc(!1)}})().catch(()=>{});return}let fe=L.replace(/[\r\n]/g,"");if(!Xi&&fe.length>0){vn(void 0),Qo(void 0),rr==="email"&&a1(re=>re+fe),rr==="code"&&l1(re=>re+fe),rr==="password"&&c1(re=>re+fe),rr==="confirmPassword"&&u1(re=>re+fe),rr==="displayName"&&d1(re=>re+fe);return}return}if(bC){if(oe&&!da){sc(!1),Qi(void 0),ca("");return}if((Ot||le)&&!da){ua(ce=>ce==="email"?"password":"email");return}let we=q;if(!!(we.backspace||we.name==="backspace"||L==="\b"||L==="\x7F")&&!da){i1==="email"?lc(ce=>ce.slice(0,-1)):ca(ce=>ce.slice(0,-1));return}if(Ie&&!da){if(!ac.trim()||!o1){Qi("\u8BF7\u8F93\u5165\u90AE\u7BB1\u548C\u5BC6\u7801\u3002"),ac.trim()?ua("password"):ua("email");return}s1(!0),Qi(void 0),(async()=>{try{let ce=await ie.login(ac.trim(),o1);i({type:"APPEND_INFO",text:`\u767B\u5F55\u6210\u529F\uFF1A${ce.username||ce.email||ac.trim()}`});let fe=await ie.refreshModelOptions();U(fe.options),_(fe.selectedModelId),sc(!1),lc(""),ca(""),ua("email")}catch(ce){Qi(ce instanceof Error?ce.message:String(ce))}finally{s1(!1)}})().catch(()=>{});return}let be=L.replace(/[\r\n]/g,"");if(!da&&be.length>0){Qi(void 0),i1==="email"?lc(ce=>ce+be):ca(ce=>ce+be);return}return}if(ne){let we=Math.max(0,We.length-1),ve=rs.conversationPickerViewportSize,be=fe=>{let re=ue;fe<re?re=fe:fe>=re+ve&&(re=fe-ve+1),Q(Math.max(0,Math.min(re,Math.max(0,We.length-ve))))};if(oe){Pe(!1),H(!1);return}if(Zo(L,cn)){let fe=te<=0?we:te-1;ee(fe),be(fe);return}if(Go(L,cn)){let fe=te>=we?0:te+1;ee(fe),be(fe);return}if(tt){let fe=Math.max(0,te-ve);ee(fe),be(fe);return}if(Xo){let fe=Math.min(we,te+ve);ee(fe),be(fe);return}let ce=Number(L);if(!Number.isNaN(ce)&&ce>=1&&ce<=We.length){let fe=ce-1;ee(fe),be(fe);return}if(Ie){let fe=We[te],re=de;if(!fe){Pe(!1),H(!1);return}(async()=>{if(!await ie.switchConversation(fe.conversationId)){i({type:"APPEND_ERROR",text:`Failed to switch conversation: ${fe.conversationId}`});return}R(fe.conversationId),await aa(ie,i),is();let at=ie.getCurrentConversationSummary();i({type:"APPEND_INFO",text:`${re?"\u5DF2\u6062\u590D\u4F1A\u8BDD":"\u5DF2\u5207\u6362\u4F1A\u8BDD"}\uFF1A${at.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${at.conversationId}]`})})().catch(dt=>{i({type:"APPEND_ERROR",text:dt instanceof Error?dt.message:String(dt)})}),Pe(!1),H(!1);return}}if(D){let we=Math.max(0,ye.length-1);if(oe){pe(!1);return}if(Zo(L,cn)){st(ve=>ve<=0?we:ve-1);return}if(Go(L,cn)){st(ve=>ve>=we?0:ve+1);return}if(Ie){let ve=ye[Se];ve&&(ie.getTodoStore().removeItem(Se).then(()=>{Re(ce=>ce.filter((fe,re)=>re!==Se))}),h(ve.prompt),v(ve.prompt.length),pe(!1));return}}if(xn.active){let we=Ht.current;if(!we){xn.close();return}return xn.handleInput({inputChar:L,isEscape:oe,isEnter:Ie,isShiftEnter:Je,isPageUp:tt,isPageDown:Xo,isWheelUp:zC,isWheelDown:fa,isPickerListUp:Zo(L,cn),isPickerListDown:Go(L,cn),ctrlOrMeta:!!(ge.ctrl||ge.meta),session:we}),void 0}if(V){let we=Math.max(0,Fl.length-1);if(oe){ae(!1);return}if(Zo(L,cn)){me(be=>be<=0?we:be-1);return}if(Go(L,cn)){me(be=>be>=we?0:be+1);return}let ve=Number(L);if(!Number.isNaN(ve)&&ve>=1&&ve<=Fl.length){me(ve-1);return}if(Ie){let be=Fl[Te]?.id;be&&(ie.setInteractionMode(be),ln(be),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u5230 ${be} \u6A21\u5F0F\u3002`})),ae(!1);return}return}if(en){let we=Ht.current;if(!we)return;let ve=Math.max(0,Gi.length-1);if(oe){Ar(!1);return}if(Zo(L,cn)){O(ce=>ce<=0?ve:ce-1);return}if(Go(L,cn)){O(ce=>ce>=ve?0:ce+1);return}let be=Number(L);if(!Number.isNaN(be)&&be>=1&&be<=Gi.length){O(be-1);return}if(L===" "){let ce=Gi[nr];if(!ce)return;z(fe=>{let re=new Set(fe);if(re.has(ce.id)){if(re.size<=1)return fe;re.delete(ce.id)}else re.add(ce.id);return Gi.filter(dt=>re.has(dt.id)).map(dt=>dt.id)});return}if(Ie){we.setEnabledTeamRoles(w),Ar(!1);return}}if($){let we=Math.max(0,A.length-1);if(oe){N(!1);return}if(Zo(L,cn)){E(be=>be<=0?we:be-1);return}if(Go(L,cn)){E(be=>be>=we?0:be+1);return}let ve=Number(L);if(!Number.isNaN(ve)&&ve>=1&&ve<=A.length){E(ve-1);return}if(Ie){let ce=A[K]?.id;ce&&(ie.setSelectedModelId(ce).catch(()=>{}),_(ce)),N(!1);return}}if(gt){if(r1){let re=ge,dt=!!(re.backspace||re.name==="backspace"||L==="\b"||L==="\x7F");if(oe){la(null);return}if(dt){la(at=>at?{...at,text:at.text.slice(0,-1)}:null);return}if(Ie){let at=r1,as=at.text.trim();n1(un=>{let qn={...un[at.questionId]??{}};return as?qn[at.optionId]=as:delete qn[at.optionId],{...un,[at.questionId]:qn}}),la(null);return}if(L&&!ge.ctrl&&!ge.meta){la(at=>at?{...at,text:at.text+L}:null);return}return}if(oe){gt.allowSkipAll&&ie.answerAskQuestion(gt.toolCallId,[]).catch(()=>{});return}let we=Math.max(0,gt.questions.length-1);if(L==="["&&!ge.shift){Ke(re=>Math.max(0,re-1)),_t(0);return}if(L==="]"){Ke(re=>Math.min(we,re+1)),_t(0);return}let ve=gt.questions[Ae]??gt.questions[0];if(!ve)return;let be=dg(ve.options),ce=Math.max(0,be.length-1);if(L==="n"&&!ge.ctrl&&!ge.meta&&!ge.shift){let re=be[He]??be[0];if(re&&Ti(re.id)){let dt=ic[ve.id]?.[Eo]??"";la({questionId:ve.id,optionId:Eo,text:dt})}return}if(Zo(L,cn)){_t(re=>re<=0?ce:re-1);return}if(Go(L,cn)){_t(re=>re>=ce?0:re+1);return}let fe=Number(L);if(!Number.isNaN(fe)&&fe>=1&&fe<=be.length){_t(fe-1);return}if(ve.allowMultiple&&L===" "){let re=be[He]??be[0];if(!re)return;Yi(dt=>{let at=new Set(dt[ve.id]??[]);return at.has(re.id)?at.delete(re.id):at.add(re.id),{...dt,[ve.id]:Array.from(at)}});return}if(Ie){let re=be[He]??be[0],dt=xt;if(!ve.allowMultiple&&re&&(dt={...xt,[ve.id]:[re.id]},Yi(dt),n1(un=>{let qn={...un[ve.id]??{}},pp={};return qn[re.id]&&(pp[re.id]=qn[re.id]),{...un,[ve.id]:pp}})),Ae<gt.questions.length-1){Ke(un=>un+1),_t(0);return}let at=gt.questions.map(un=>{let qn=dt[un.id]??[],pp=ic[un.id]??{},I1={};for(let WC of qn){let KC=pp[WC]?.trim();KC&&(I1[WC]=KC)}return{questionId:un.id,selectedOptionIds:qn,...Object.keys(I1).length>0?{optionNotes:I1}:{}}});if(gt.questions.some(un=>un.required&&(dt[un.id]??[]).length===0))return;ie.answerAskQuestion(gt.toolCallId,at).catch(()=>{});return}return}if(f1){let we=Math.max(0,Yv.length-1),ve=UC,be=ce=>{let fe=CC;ce<fe?fe=ce:ce>=fe+ve&&(fe=ce-ve+1),EC(Math.max(0,Math.min(fe,Math.max(0,Yv.length-ve))))};if(oe){IC(!1);return}if(Zo(L,cn)){let ce=es<=0?we:es-1;dc(ce),be(ce);return}if(Go(L,cn)){let ce=es>=we?0:es+1;dc(ce),be(ce);return}if(tt){let ce=Math.max(0,es-ve);dc(ce),be(ce);return}if(Xo){let ce=Math.min(we,es+ve);dc(ce),be(ce);return}return}if(PC){if(oe){Kt.mode==="tool-detail"?(ns({mode:"tool-list",serverIndex:Kt.serverIndex}),Mr(Kt.toolIndex)):Kt.mode==="tool-list"?(ns({mode:"server-detail",serverIndex:Kt.serverIndex}),Mr(0)):Kt.mode==="server-detail"?(ns({mode:"server-list"}),Mr(Kt.serverIndex)):RC(!1);return}if(Ie&&Kt.mode==="server-list"){let we=sp;ts[we]&&(ns({mode:"server-detail",serverIndex:we}),Mr(0));return}if(Ie&&Kt.mode==="server-detail"){let we=ts[Kt.serverIndex];we&&we.status.status==="connected"&&we.tools.length>0&&(ns({mode:"tool-list",serverIndex:Kt.serverIndex}),Mr(0));return}if(Ie&&Kt.mode==="tool-list"){let we=ts[Kt.serverIndex];we&&we.tools[sp]&&ns({mode:"tool-detail",serverIndex:Kt.serverIndex,toolIndex:sp});return}if(Kt.mode==="server-list"){if(Ot){Mr(we=>we<=0?Math.max(0,ts.length-1):we-1);return}if(le){Mr(we=>we>=ts.length-1?0:we+1);return}}if(Kt.mode==="tool-list"){let we=ts[Kt.serverIndex],ve=we?we.tools.length:0;if(Ot){Mr(be=>be<=0?Math.max(0,ve-1):be-1);return}if(le){Mr(be=>be>=ve-1?0:be+1);return}}return}let bo=q;if(!ne&&!en&&!V&&!$&&!D&&!xn.active&&!gt){if(S){let ce=Math.max(0,vo.length-1);if(oe){x(!1);return}if(Ot){W(fe=>fe<=0?ce:fe-1);return}if(le){W(fe=>fe>=ce?0:fe+1);return}if(Ie){let fe=Math.max(0,Math.min(T,ce));Je?ie.removePendingUserMessage(fe):ie.sendPendingUserMessageImmediately(fe).catch(re=>{i({type:"APPEND_ERROR",text:Yo(re)})}),B(re=>re+1);return}}if((Nk(r)||ie.isConversationCoreBusy())&&oe&&pa.current.length===0){if(kC){x1(),ie.interruptCurrentTurn({inputEmptyAtCancel:pa.current.length===0,restorePrompt:lp.current||void 0}).catch(ce=>i({type:"APPEND_ERROR",text:ce instanceof Error?ce.message:String(ce)}));return}p1(!0),Dr.current&&clearTimeout(Dr.current),Dr.current=setTimeout(()=>{Dr.current=null,p1(!1)},pse);return}let ve=X,be=new Yie(ve.keypress);if(_1.handleKeyDown(be),be.didStopImmediatePropagation()){ve.stopImmediatePropagation();return}if(bo.shift&&(bo.ctrl||bo.super)&&Sr(L,bo)==="c"){h1.current=g,tse(g);return}if(bo.shift&&(bo.ctrl||bo.super)&&Sr(L,bo)==="v"&&h1.current){let ce=h1.current,fe=up.current,re=g.slice(0,fe),dt=g.slice(fe);h(re+ce+dt),v(fe+ce.length);return}if(process.platform==="darwin"&&ve.keypress?.isPasted===!0&&L.length===0&&b1({notifyWhenEmpty:!1}))return}S1.onInput(L,bo)}),u){let L=Math.max(20,rs.cols-6),q=l?.streamingState??"Idle",ie=rv({historyItems:f,pendingAssistant:"",pendingToolCalls:[],streamingState:q,contentWidth:L,transcriptMode:!0}).blocks;return e1(Xie,{mouseTracking:!0,children:e1(c$,{messages:ie,contentWidth:L,streamingState:q,conversationId:b,streamingApproxRef:fc})})}return e1(fF,{appendInfo:m,children:e1(a$,{uiState:r,inputValue:g,inputCursorOffset:y,wrappedRenderedLines:c3,inputTransientHint:VF,vimBindingsEnabled:AC,vimInputMode:XF,workspacePath:e.workspacePath,conversationId:b,contentWidth:Math.max(20,rs.cols-6),conversationTitle:Ht.current?.getCurrentConversationSummary().title,modelLabel:Ht.current?.getModelLabelById(j)??"-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",modeLabel:fse(Xt),interactionMode:Xt,contextMetrics:r.contextMetrics,streamingApproxRef:fc,askQuestionActive:!!gt,askQuestionAllowSkipAll:gt?.allowSkipAll??!1,askQuestionHint:gt?(()=>{let L=gt.questions.length,X=!!gt.questions[Ae]?.allowMultiple,ie=Ae>=L-1,ge=X?ie?"Enter \u63D0\u4EA4":"Enter \u4E0B\u4E00\u9898":ie?"Enter \u9009\u4E2D\u5E76\u63D0\u4EA4":"Enter \u9009\u4E2D\u5E76\u4E0B\u4E00\u9898",St=X?" \xB7 Space \u52FE\u9009\u9879":"",Ot=gt.allowSkipAll?" \xB7 Esc \u8DF3\u8FC7":"";return`Q${Ae+1}/${L} \xB7 \u2191/\u2193 \u9009\u9879${St} \xB7 \u805A\u7126\u300C\u5176\u4ED6\u300D\u540E n \u5199\u8BF4\u660E \xB7 ${ge} \xB7 [ ] \u4E0A/\u4E0B\u9898${Ot}`})():"",askQuestionUiState:i3,askQuestionPopup:gt?{title:gt.title,allowSkipAll:gt.allowSkipAll,questions:gt.questions,questionIndex:Ae,optionIndex:He,selectedByQuestion:xt,optionNotesByQuestion:ic,noteCapture:r1}:void 0,loginPopup:bC?{email:ac,password:o1,focusedField:i1,submitting:da,error:GF}:void 0,registerPopup:xC?{email:cc,code:TC,password:wC,confirmPassword:_C,displayName:SC,focusedField:rr,submitting:Xi,error:ZF,success:JF}:void 0,modePickerActive:V,modePickerHint:V?"\u4EA4\u4E92\u6A21\u5F0F":"",modePickerState:V?{entries:[...Fl],highlightedIndex:Te,selectedMode:Xt}:void 0,modelPickerActive:$,modelPickerHint:$?`Pick model (${A.length}) -> ${A[K]?.displayName??""}`:"",modelPickerState:$?{options:A,highlightedIndex:K,selectedModelId:j}:void 0,teamRolesPickerActive:en,teamRolesPickerHint:en?`\u5B50 Agent\uFF08${Gi.length}\uFF09\u2192 ${Gi[nr]?.label??""}`:"",teamRolesPickerState:en?{entries:Gi,highlightedIndex:nr,selectedRoleIds:w}:void 0,conversationPickerActive:ne,conversationPickerHeading:ne?de?"@ \u6062\u590D\u4F1A\u8BDD":"@ \u4F1A\u8BDD\u5217\u8868":void 0,conversationPickerHint:ne?de?`\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF08\u5171 ${We.length} \u4E2A\uFF09`:`\u9009\u62E9\u4F1A\u8BDD\uFF08\u5171 ${We.length} \u4E2A\uFF09`:"",conversationPickerForResume:de,conversationPickerState:ne?{options:We,highlightedIndex:te,offset:ue,viewportSize:rs.conversationPickerViewportSize,selectedConversationId:b??void 0,groupTitleForTimestamp:lse}:void 0,exitPendingHint:kC?"\u518D\u6309 Esc \u4E00\u6B21\u4E2D\u65AD":k1.pending&&k1.keyName?`\u518D\u6309 ${k1.keyName} \u4E00\u6B21\u9000\u51FA`:"",typeaheadSuggestions:ap.suggestions,typeaheadSelectedSuggestion:ap.selectedSuggestion,typeaheadMaxColumnWidth:_1.maxColumnWidth,typeaheadCommandArgumentHint:ap.commandArgumentHint,pendingUserMessageCount:vo.length,queueSelectionActive:S,queueSelectionIndex:T,queuedUserLines:vo,helpPopupActive:f1,helpTipsData:Yv,helpTipsIndex:es,helpTipsOffset:CC,helpTipsViewportSize:UC,mcpPanelActive:PC,mcpServers:ts,mcpViewState:Kt,mcpHighlightedIndex:sp,todoPickerActive:D,todoPickerState:D?{items:ye,highlightedIndex:Se}:void 0,debugPickerActive:xn.active,debugPickerHint:xn.hint,debugPickerState:xn.active?{lines:xn.lines,offset:xn.offset,viewportSize:xn.viewportSize,logPath:xn.logPath}:void 0})})}var t1=class{frameCount=0;flickerCount=0;reasons=new Map;onFrame(e){this.frameCount+=1;let n=e;if(!(!n||!Array.isArray(n.flickers)||n.flickers.length===0)){this.flickerCount+=n.flickers.length;for(let o of n.flickers){let r=typeof o?.reason=="string"&&o.reason.trim()?o.reason:"unknown";this.reasons.set(r,(this.reasons.get(r)??0)+1)}}}snapshot(){let e={};for(let[n,o]of this.reasons.entries())e[n]=o;return{frameCount:this.frameCount,flickerCount:this.flickerCount,reasons:e}}};function yC(t,e){let n=Object.entries(e.reasons).sort((r,i)=>i[1]-r[1]),o=n.length===0?"reasons=none":`reasons=${n.map(([r,i])=>`${r}:${i}`).join(",")}`;return`${t} frames=${e.frameCount} flickers=${e.flickerCount} ${o}`}function hse(t){if(typeof t=="boolean")return t;if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}async function BF(t){let e=hse(process.env.PANDA_CLI_FLICKER_STATS),n=e?new t1:null,{options:o,stdin:r,ownership:i}=oN(t,!1);sN(r);let s;try{let a=await gse({...o,onFrame:e?l=>n?.onFrame(l):void 0});n&&(process.stderr?.write?.(`[panda-flicker] enabled, sampling every 2s
2103
2103
  `),s=setInterval(()=>{process.stderr?.write?.(`${yC("[panda-flicker]",n.snapshot())}
2104
- `)},2e3)),process.stdout?.write?.(pse),a.render(UF.createElement(rN,null,UF.createElement(FF,{args:t}))),await a.waitUntilExit()}finally{s&&clearInterval(s),n&&process.stderr?.write?.(`${yC("[panda-flicker][final]",n.snapshot())}
2105
- `),aN(r,i)}}import{readFileSync as jF}from"node:fs";import{dirname as gse,join as vC}from"node:path";import{fileURLToPath as hse}from"node:url";var zF=!1;function yse(){try{let t=gse(hse(import.meta.url)),e=vC(t,"..",".."),n=vC(e,"product.json"),o=jF(n,"utf-8"),r=JSON.parse(o),i=vC(e,"package.json"),s=JSON.parse(jF(i,"utf-8")),a=r.pandacliVersion?.trim();if(!a)return null;let l=r.pandaVersion?.trim()??r.version?.trim()??String(s.version??"").trim()??"0.0.0";return{pandacliVersion:a,pandaProductVersion:l}}catch{return null}}function WF(){let t=yse();return t?(zF||(zF=!0,console.warn("[panda-cli] \u4F7F\u7528\u4ED3\u5E93\u6839 product.json \u7248\u672C\uFF08\u672A\u68C0\u6D4B\u5230\u6784\u5EFA\u671F\u6CE8\u5165\u5E38\u91CF\uFF09")),t):{pandacliVersion:"0.0.0-dev",pandaProductVersion:"0.0.0-dev"}}function vse(){return"0.1.27"}function bse(){return"0.9.9"}function xse(t,e){return`pandacli ${t} (panda ${e})`}function KF(){return xse(vse(),bse())}function Sse(){if(process.platform==="win32")return!1;try{let t=wse("/dev/tty","r");return Tse(t),!0}catch{return!1}}function kse(){let t=["Panda CLI \u547D\u4EE4\u884C\u52A9\u624B","","\u7528\u6CD5\uFF1A"," panda [\u9009\u9879] [prompt]",' panda --print [\u9009\u9879] "\u4F60\u7684\u95EE\u9898"'," panda mcp <subcommand> [\u53C2\u6570]"," panda update [\u9009\u9879]","","\u8BF4\u660E\uFF1A"," \u9ED8\u8BA4\u8FDB\u5165\u4EA4\u4E92\u6A21\u5F0F\uFF1B\u4F7F\u7528 --print \u8FDB\u5165\u975E\u4EA4\u4E92\u4E00\u6B21\u6027\u6267\u884C\u6A21\u5F0F\u3002","","\u5E38\u7528\u9009\u9879\uFF1A"," -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"," -V, --version \u663E\u793A CLI \u4E0E Panda \u4EA7\u54C1\u7248\u672C"," --workspace <path> \u6307\u5B9A\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5F53\u524D\u76EE\u5F55\uFF09"," --prompt <text> \u6307\u5B9A\u8F93\u5165\u6587\u672C\uFF08\u53EF\u4E0E\u4F4D\u7F6E\u53C2\u6570\u4E8C\u9009\u4E00\uFF09"," --print \u542F\u7528\u975E\u4EA4\u4E92\u6A21\u5F0F"," --output-format <text|json|stream-json> \u975E\u4EA4\u4E92\u8F93\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 text\uFF09"," --render-mode <auto|incremental|safe|full> \u6E32\u67D3\u6A21\u5F0F\uFF08\u9ED8\u8BA4 auto\uFF09"," --mode <agent|ask|plan|office|team> \u6307\u5B9A\u4F1A\u8BDD\u6A21\u5F0F"," --model <modelId> \u6307\u5B9A\u672C\u6B21\u6267\u884C\u6A21\u578B\uFF08\u4E0D\u6539\u5DE5\u4F5C\u533A\u9ED8\u8BA4\uFF09"," --conversation <id> \u6307\u5B9A\u4F1A\u8BDD ID\uFF08\u5B58\u5728\u5219\u6062\u590D\uFF0C\u4E0D\u5B58\u5728\u5219\u6309\u8BE5 ID \u521B\u5EFA\uFF09"," --resume-latest \u542F\u52A8\u65F6\u81EA\u52A8\u6062\u590D\u6700\u8FD1\u66F4\u65B0\u7684\u5DF2\u4FDD\u5B58\u4F1A\u8BDD\uFF08\u9ED8\u8BA4\u4E0D\u6062\u590D\uFF09"," --pack <id> \u9ED8\u8BA4\u5207\u6362\u5230\u6307\u5B9A pack \u6A21\u5F0F","","\u4E92\u65A5\u5173\u7CFB\uFF1A",...D7.map(e=>` - ${e}`),"","\u6A21\u5F0F\u53EF\u9009\u503C\uFF1A",` ${M7.join(", ")}`,"","\u793A\u4F8B\uFF1A",' panda --print --mode plan --model gpt-4.1 "\u8BF7\u5148\u7ED9\u5B9E\u73B0\u8BA1\u5212"',' panda --print --conversation my-conv-id "\u7EE7\u7EED\u4E0A\u6B21\u4EFB\u52A1"',' panda --print --pack backend "\u68C0\u67E5\u63A5\u53E3\u6743\u9650"'," panda mcp --help","","\u5B50\u547D\u4EE4\uFF1A"," mcp \u7BA1\u7406 MCP \u670D\u52A1\u5668\u914D\u7F6E"," update \u68C0\u67E5\u5E76\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C","","\u4EA4\u4E92\u6A21\u5F0F\u5E38\u7528\u659C\u6760\u547D\u4EE4\uFF1A"," /login \u767B\u5F55 Panda \u8D26\u53F7\uFF08\u7528\u6237\u540D/\u90AE\u7BB1 + \u5BC6\u7801\uFF09"," /logout \u9000\u51FA\u5F53\u524D\u767B\u5F55"," /whoami \u663E\u793A\u5F53\u524D\u767B\u5F55\u7528\u6237"," /model [modelId] \u5148\u5237\u65B0\u6A21\u578B\u5217\u8868\uFF0C\u518D\u6253\u5F00\u9009\u62E9\u5668\u6216\u76F4\u63A5\u5207\u6362\u6A21\u578B"];console.log(t.join(`
2106
- `))}async function Ise(){let t=process.argv.slice(2);if(t.includes("--version")||t.includes("-V")){console.log(KF());return}if(t[0]==="mcp"){let o=await Rk(t.slice(1),process.cwd());o!==0&&process.exit(o);return}if(t[0]==="update"){let o=await j7(t.slice(1));o!==0&&process.exit(o);return}if(t.includes("--help")||t.includes("-h")){kse();return}let e=O7(process.argv.slice(2));if(e.print){await N7(e);return}process.stdin?.isTTY||Sse()||(console.error("[panda-cli] stdin is not a TTY and /dev/tty is unavailable. Run in a real terminal, or pass --print for non-interactive mode."),process.exit(1)),await BF(e)}function Cse(){let t=process.argv[1];if(!t)return!1;try{let e=HF(_se(import.meta.url)),n=HF(t);return process.platform==="win32"?e.toLowerCase()===n.toLowerCase():e===n}catch{return!1}}Cse()&&Ise().catch(t=>{console.error(t instanceof Error?t.message:String(t)),process.exit(1)});export{Ise as main};
2104
+ `)},2e3)),process.stdout?.write?.(mse),a.render(UF.createElement(rN,null,UF.createElement(FF,{args:t}))),await a.waitUntilExit()}finally{s&&clearInterval(s),n&&process.stderr?.write?.(`${yC("[panda-flicker][final]",n.snapshot())}
2105
+ `),aN(r,i)}}import{readFileSync as jF}from"node:fs";import{dirname as yse,join as vC}from"node:path";import{fileURLToPath as vse}from"node:url";var zF=!1;function bse(){try{let t=yse(vse(import.meta.url)),e=vC(t,"..",".."),n=vC(e,"product.json"),o=jF(n,"utf-8"),r=JSON.parse(o),i=vC(e,"package.json"),s=JSON.parse(jF(i,"utf-8")),a=r.pandacliVersion?.trim();if(!a)return null;let l=r.pandaVersion?.trim()??r.version?.trim()??String(s.version??"").trim()??"0.0.0";return{pandacliVersion:a,pandaProductVersion:l}}catch{return null}}function WF(){let t=bse();return t?(zF||(zF=!0,console.warn("[panda-cli] \u4F7F\u7528\u4ED3\u5E93\u6839 product.json \u7248\u672C\uFF08\u672A\u68C0\u6D4B\u5230\u6784\u5EFA\u671F\u6CE8\u5165\u5E38\u91CF\uFF09")),t):{pandacliVersion:"0.0.0-dev",pandaProductVersion:"0.0.0-dev"}}function xse(){return"0.1.28"}function Tse(){return"0.9.9"}function wse(t,e){return`pandacli ${t} (panda ${e})`}function KF(){return wse(xse(),Tse())}function Ise(){if(process.platform==="win32")return!1;try{let t=Sse("/dev/tty","r");return _se(t),!0}catch{return!1}}function Cse(){let t=["Panda CLI \u547D\u4EE4\u884C\u52A9\u624B","","\u7528\u6CD5\uFF1A"," panda [\u9009\u9879] [prompt]",' panda --print [\u9009\u9879] "\u4F60\u7684\u95EE\u9898"'," panda mcp <subcommand> [\u53C2\u6570]"," panda update [\u9009\u9879]","","\u8BF4\u660E\uFF1A"," \u9ED8\u8BA4\u8FDB\u5165\u4EA4\u4E92\u6A21\u5F0F\uFF1B\u4F7F\u7528 --print \u8FDB\u5165\u975E\u4EA4\u4E92\u4E00\u6B21\u6027\u6267\u884C\u6A21\u5F0F\u3002","","\u5E38\u7528\u9009\u9879\uFF1A"," -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"," -V, --version \u663E\u793A CLI \u4E0E Panda \u4EA7\u54C1\u7248\u672C"," --workspace <path> \u6307\u5B9A\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5F53\u524D\u76EE\u5F55\uFF09"," --prompt <text> \u6307\u5B9A\u8F93\u5165\u6587\u672C\uFF08\u53EF\u4E0E\u4F4D\u7F6E\u53C2\u6570\u4E8C\u9009\u4E00\uFF09"," --print \u542F\u7528\u975E\u4EA4\u4E92\u6A21\u5F0F"," --output-format <text|json|stream-json> \u975E\u4EA4\u4E92\u8F93\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 text\uFF09"," --render-mode <auto|incremental|safe|full> \u6E32\u67D3\u6A21\u5F0F\uFF08\u9ED8\u8BA4 auto\uFF09"," --mode <agent|ask|plan|office|team> \u6307\u5B9A\u4F1A\u8BDD\u6A21\u5F0F"," --model <modelId> \u6307\u5B9A\u672C\u6B21\u6267\u884C\u6A21\u578B\uFF08\u4E0D\u6539\u5DE5\u4F5C\u533A\u9ED8\u8BA4\uFF09"," --conversation <id> \u6307\u5B9A\u4F1A\u8BDD ID\uFF08\u5B58\u5728\u5219\u6062\u590D\uFF0C\u4E0D\u5B58\u5728\u5219\u6309\u8BE5 ID \u521B\u5EFA\uFF09"," --resume-latest \u542F\u52A8\u65F6\u81EA\u52A8\u6062\u590D\u6700\u8FD1\u66F4\u65B0\u7684\u5DF2\u4FDD\u5B58\u4F1A\u8BDD\uFF08\u9ED8\u8BA4\u4E0D\u6062\u590D\uFF09"," --pack <id> \u9ED8\u8BA4\u5207\u6362\u5230\u6307\u5B9A pack \u6A21\u5F0F","","\u4E92\u65A5\u5173\u7CFB\uFF1A",...D7.map(e=>` - ${e}`),"","\u6A21\u5F0F\u53EF\u9009\u503C\uFF1A",` ${M7.join(", ")}`,"","\u793A\u4F8B\uFF1A",' panda --print --mode plan --model gpt-4.1 "\u8BF7\u5148\u7ED9\u5B9E\u73B0\u8BA1\u5212"',' panda --print --conversation my-conv-id "\u7EE7\u7EED\u4E0A\u6B21\u4EFB\u52A1"',' panda --print --pack backend "\u68C0\u67E5\u63A5\u53E3\u6743\u9650"'," panda mcp --help","","\u5B50\u547D\u4EE4\uFF1A"," mcp \u7BA1\u7406 MCP \u670D\u52A1\u5668\u914D\u7F6E"," update \u68C0\u67E5\u5E76\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C","","\u4EA4\u4E92\u6A21\u5F0F\u5E38\u7528\u659C\u6760\u547D\u4EE4\uFF1A"," /login \u767B\u5F55 Panda \u8D26\u53F7\uFF08\u7528\u6237\u540D/\u90AE\u7BB1 + \u5BC6\u7801\uFF09"," /logout \u9000\u51FA\u5F53\u524D\u767B\u5F55"," /whoami \u663E\u793A\u5F53\u524D\u767B\u5F55\u7528\u6237"," /model [modelId] \u5148\u5237\u65B0\u6A21\u578B\u5217\u8868\uFF0C\u518D\u6253\u5F00\u9009\u62E9\u5668\u6216\u76F4\u63A5\u5207\u6362\u6A21\u578B"];console.log(t.join(`
2106
+ `))}async function Ese(){let t=process.argv.slice(2);if(t.includes("--version")||t.includes("-V")){console.log(KF());return}if(t[0]==="mcp"){let o=await Rk(t.slice(1),process.cwd());o!==0&&process.exit(o);return}if(t[0]==="update"){let o=await j7(t.slice(1));o!==0&&process.exit(o);return}if(t.includes("--help")||t.includes("-h")){Cse();return}let e=O7(process.argv.slice(2));if(e.print){await N7(e);return}process.stdin?.isTTY||Ise()||(console.error("[panda-cli] stdin is not a TTY and /dev/tty is unavailable. Run in a real terminal, or pass --print for non-interactive mode."),process.exit(1)),await BF(e)}function Pse(){let t=process.argv[1];if(!t)return!1;try{let e=HF(kse(import.meta.url)),n=HF(t);return process.platform==="win32"?e.toLowerCase()===n.toLowerCase():e===n}catch{return!1}}Pse()&&Ese().catch(t=>{console.error(t instanceof Error?t.message:String(t)),process.exit(1)});export{Ese as main};