@github/copilot 0.0.334-8 → 0.0.334-9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +3 -3
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -1911,7 +1911,7 @@ Would you like to add these directories to the allowed list?`;return e5.default.
|
|
|
1911
1911
|
`);return Pc(I,"output",e,"start")}var ztI=(t,e,l,I)=>{if(t.type==="denied")return{text:t.log,textColor:l.ERROR};if(t.type==="rejected")return{text:"Rejected by you.",textColor:l.WARNING};if(t.type==="failure")return{text:t.log,textColor:l.ERROR};if(t.type==="success"&&t.log.trim()==="")return{text:I!==!1?"No Content":null,textColor:l.MUTED};if(e)return{text:_tI(t.log),textColor:l.FG};let n=t.log.trim().split(`
|
|
1912
1912
|
`).length;return{text:`\u21AA ${n} ${n===1?"line":"lines"}...`,textColor:l.MUTED}},_Be=({toolName:t,subtype:e,intentionSummary:l,arguments:I,result:n,expand:r,showNoContent:a})=>{let{theme:s}=jI(),{color:o,icon:d,label:G}=$D(n,s),u=()=>{switch(e){case"shell":{let W=I;return Vb.default.createElement($e,{flexDirection:"column"},Vb.default.createElement(Fe,{color:s.FG},l),Vb.default.createElement(Fe,{color:s.MUTED},"$ ",W.command))}default:return l?Vb.default.createElement(Vb.default.Fragment,null,Vb.default.createElement(Fe,{color:s.FG},`${t}: `),Vb.default.createElement(Fe,{color:s.MUTED},`${l}`)):Vb.default.createElement(Fe,{color:s.FG},`${t}`)}},h=Vb.default.useMemo(()=>ztI(n,!!r,{FG:s.FG,MUTED:s.MUTED,ERROR:s.ERROR,WARNING:s.WARNING},a),[r,n,s]);return Vb.default.createElement($e,{flexDirection:"column"},Vb.default.createElement($e,{flexDirection:"row",gap:0},Vb.default.createElement(Fe,{color:o,"aria-label":`${G}:`},d),Vb.default.createElement(Fe,null," "),Vb.default.createElement($e,{flexDirection:"column"},u())),Vb.default.createElement($e,{flexDirection:"column",paddingLeft:2},h.text&&Vb.default.createElement($e,{...r?{borderStyle:"round",borderColor:s.BORDER}:{},paddingX:r?1:0},Vb.default.createElement(Fe,{color:h.textColor},s3t(h.text)))))};c();var lo=Gt(ul(),1);import*as UAe from"path";function zBe(t){try{let e=process.cwd();return UAe.isAbsolute(t)?t===e?".":t.startsWith(e+UAe.sep)||t.startsWith(e+"/")?t.slice(e.length+1):qGe(t):t}catch{return t}}var MtI=t=>t&&t.type==="success"&&kBe(t.log)?LAe(t.log):{additions:0,deletions:0},DtI=t=>t?`:${t[0]}-${t[1]===-1?"end":t[1]}`:"",jtI=({actionLabel:t,path:e,additions:l=0,deletions:I=0})=>{let{theme:n}=jI(),r=zBe(e),a=l>0||I>0;return lo.default.createElement($e,{flexDirection:"column"},lo.default.createElement(Fe,{color:n.FG},t," ",r,a&&lo.default.createElement(lo.default.Fragment,null," (",l>0&&lo.default.createElement(Fe,{color:n.SUCCESS},"+",l),l>0&&I>0&&" ",I>0&&lo.default.createElement(Fe,{color:n.ERROR},"-",I),")")))},PtI=({path:t,rangeSuffix:e,isDir:l,lineCount:I})=>{let{theme:n}=jI();return l?lo.default.createElement($e,{flexDirection:"column"},lo.default.createElement(Fe,{color:n.FG},"List directory ",zBe(t),I!==void 0?` (${I} ${I===1?"file":"files"})`:"")):lo.default.createElement($e,{flexDirection:"column"},lo.default.createElement(Fe,{color:n.FG},"Read ",zBe(t),e,I!==void 0?` (${I} ${I===1?"line":"lines"})`:""))},MBe=({name:t,intentionSummary:e,arguments:l,result:I,expand:n})=>{let{theme:r}=jI(),{color:a,icon:s,label:o}=$D(I,r),d=()=>{switch(l.command){case"view":{let u=qde(l.path)===!0,h;if(I&&I.type==="success"){let W=I.log.trim();W&&(h=W.split(`
|
|
1913
1913
|
`).length)}return lo.default.createElement(PtI,{path:l.path,rangeSuffix:DtI(l.view_range),isDir:u,lineCount:h})}case"create":case"str_replace":case"insert":{let u=MtI(I),h=l.command==="create"?"Create":"Edit";return lo.default.createElement(jtI,{actionLabel:h,path:l.path,additions:u.additions,deletions:u.deletions})}default:return lo.default.createElement($e,{flexDirection:"column"},lo.default.createElement(Fe,{color:r.FG},t,": ",e||"Unknown str_replace_editor command"))}},G=()=>{if(!I)return null;if(I.type==="denied")return lo.default.createElement($e,{flexDirection:"column",paddingLeft:2},lo.default.createElement(Fe,{color:r.ERROR},I.log));if(I.type==="rejected")return lo.default.createElement($e,{flexDirection:"column",paddingLeft:2},lo.default.createElement(Fe,{color:r.WARNING},"Rejected by you."));if(I.type==="failure")return lo.default.createElement($e,{flexDirection:"column",paddingLeft:2},lo.default.createElement(Fe,{color:r.ERROR},I.log));let u=I.log.trim();if(u==="")return lo.default.createElement($e,{flexDirection:"column",paddingLeft:2},lo.default.createElement(Fe,{color:r.MUTED},"No Content"));if(n){let y=kBe(u);return lo.default.createElement($e,{flexDirection:"column",paddingLeft:2},lo.default.createElement($e,{borderStyle:"round",borderColor:r.BORDER,paddingX:1},y?lo.default.createElement(xAe,{diff:u}):lo.default.createElement(Fe,{color:r.FG},u)))}let h=l.command==="view"&&qde(l.path)===!0,W=l.command==="create"||l.command==="str_replace"||l.command==="insert";return null};return lo.default.createElement($e,{flexDirection:"column"},lo.default.createElement($e,{flexDirection:"row",gap:1},lo.default.createElement(Fe,{color:a,"aria-label":`${o}:`},s),lo.default.createElement($e,{flexDirection:"column"},d())),G())};c();var tj=Gt(ul(),1);var KtI=t=>{switch(t){case"error":return"\u2717";case"user":return">";default:return"\u25CF"}},qtI=(t,e)=>{switch(t){case"copilot":return e.COPILOT;case"error":return e.ERROR;case"info":return e.ACCENT;case"user":return e.MUTED;default:return e.MUTED}},$tI=t=>{switch(t){case"copilot":return"Copilot said";case"error":return"Error";case"user":return"You said";default:return"Info"}},zre=({type:t,text:e,renderAsMarkdown:l})=>{let{theme:I}=jI(),{stdout:n}=d0(),r=n?.columns??80,a=t==="user",s=a?2:0,o=a?2:0,d=1,h=Math.max(0,r-s-o-d-1-2),W=l?TAe(e):ej(e),y=qtI(t,I),R=KtI(t),V=$tI(t);return tj.default.createElement($e,{flexDirection:"row",gap:1,alignSelf:"flex-start",borderStyle:a?"round":void 0,borderColor:I.BORDER,paddingX:a?1:0},tj.default.createElement($e,{width:d},tj.default.createElement(Fe,{color:y,bold:t==="error","aria-label":`${V}:`},R)),tj.default.createElement($e,{width:h},tj.default.createElement(Fe,{wrap:"wrap",color:I.FG},W)))};var _Ae=({entry:t,expand:e,renderAsMarkdown:l})=>va.default.createElement($e,{marginBottom:1,paddingX:1},t3t(t,{onCopilot:I=>va.default.createElement(zre,{...I,renderAsMarkdown:l}),onError:I=>va.default.createElement(zre,{...I,renderAsMarkdown:!1}),onInfo:I=>va.default.createElement(zre,{...I,renderAsMarkdown:!1}),onToolCallRequested:I=>va.default.createElement(elI,{expand:I.isAlwaysExpanded??e,...I,renderAsMarkdown:!1}),onToolCallCompleted:I=>va.default.createElement(tlI,{expand:I.isAlwaysExpanded??e,...I,renderAsMarkdown:I.result.markdown??l}),onUser:I=>va.default.createElement(zre,{...I,renderAsMarkdown:!1})})),elI=({callId:t,name:e,toolTitle:l,intentionSummary:I,arguments:n={},partialOutput:r,expand:a,renderAsMarkdown:s})=>{let{theme:o}=jI(),d=va.default.useMemo(()=>UBe(e,n),[e,n]);if(d.kind==="str_replace_editor")return va.default.createElement(MBe,{callId:t,name:e,intentionSummary:I,arguments:d.parsed});if(d.kind==="shell")return va.default.createElement(_Be,{callId:t,toolName:e,intentionSummary:I,arguments:d.parsed,subtype:d.subtype,result:{type:"in_progress",log:r?ej(r):""},expand:a});let G=l||e;return va.default.createElement($e,{flexDirection:"row",gap:1},va.default.createElement(Fe,{color:o.MUTED,"aria-hidden":!0},"\u25CF"),I?va.default.createElement(va.default.Fragment,null,va.default.createElement(Fe,{color:o.FG},`${G}: `),va.default.createElement(Fe,{color:o.MUTED},`${I}`)):va.default.createElement(Fe,{color:o.FG},`${G}`))},tlI=({callId:t,name:e,toolTitle:l,intentionSummary:I,arguments:n={},result:r,expand:a,renderAsMarkdown:s,showNoContent:o})=>{let d=va.default.useMemo(()=>UBe(e,n),[e,n]);if(d.kind==="str_replace_editor")return va.default.createElement(MBe,{callId:t,name:e,intentionSummary:I,arguments:d.parsed,result:r,expand:a});if(d.kind==="shell")return va.default.createElement(_Be,{callId:t,toolName:e,intentionSummary:I,arguments:d.parsed,subtype:d.subtype,result:r,expand:a,showNoContent:o});let{theme:G}=jI(),{stdout:u}=d0(),{color:h,icon:W,label:y}=$D(r,G),R=va.default.useMemo(()=>r.type==="denied"?{showToggleHelp:!1,text:r.log,textColor:G.ERROR}:r.type==="rejected"?{showToggleHelp:!1,text:"Rejected by you.",textColor:G.WARNING}:r.type==="failure"?{showToggleHelp:!1,text:r.log,textColor:G.ERROR}:r.log.trim()===""?{showToggleHelp:!1,text:o!==!1?"No Content":null,textColor:G.MUTED}:a?{showToggleHelp:!0,text:r.log.trim(),textColor:G.FG}:{showToggleHelp:!0,text:null},[a,r,G]),Q={think:"Think about next steps"}[e]||l||e,f=va.default.useMemo(()=>{if(a||r.type!=="success")return null;let S=(r.log||"").trim();if(!S)return null;let B=S.split(`
|
|
1914
|
-
`).find(U=>U.trim().length>0)??"";try{let U=JSON.parse(S);U&&typeof U=="object"&&(B=JSON.stringify(U))}catch{}let T=u.columns??80,te=Math.min(78,T-7),ae=Math.max(20,te);return B.length>ae?`${B.slice(0,ae-1)}...`:B},[a,r,u.columns]);return va.default.createElement($e,{flexDirection:"column"},va.default.createElement(Fe,null,va.default.createElement(Fe,{color:h,"aria-label":`${y}:`},W),va.default.createElement(Fe,null," "),I?va.default.createElement(va.default.Fragment,null,va.default.createElement(Fe,{color:G.FG},`${Q}: `),va.default.createElement(Fe,{color:G.MUTED},`${I}`)):va.default.createElement(Fe,{color:G.FG},`${Q}`)),va.default.createElement($e,{flexDirection:"column",paddingLeft:2},(()=>{if(!R.text)return null;if(r.type==="rejected"||r.type==="denied")return va.default.createElement(Fe,{color:R.textColor},R.text);let S=(()=>{let T=R.text.trim();try{let D=JSON.parse(T);return D!==null&&typeof D=="object"?JSON.stringify(D,null,2):R.text}catch{return R.text}})(),B=s?TAe(S):ej(S);return r.type==="failure"?va.default.createElement(Fe,{color:R.textColor},B):va.default.createElement($e,{borderStyle:"round",borderColor:G.BORDER,paddingX:1},va.default.createElement(Fe,{color:R.textColor},B))})(),R.showToggleHelp&&!a&&va.default.createElement(Fe,{color:G.MUTED},"\u21AA ",f||"")))};c();var Mre=Gt(ul(),1);function o3t({packageName:t,
|
|
1914
|
+
`).find(U=>U.trim().length>0)??"";try{let U=JSON.parse(S);U&&typeof U=="object"&&(B=JSON.stringify(U))}catch{}let T=u.columns??80,te=Math.min(78,T-7),ae=Math.max(20,te);return B.length>ae?`${B.slice(0,ae-1)}...`:B},[a,r,u.columns]);return va.default.createElement($e,{flexDirection:"column"},va.default.createElement(Fe,null,va.default.createElement(Fe,{color:h,"aria-label":`${y}:`},W),va.default.createElement(Fe,null," "),I?va.default.createElement(va.default.Fragment,null,va.default.createElement(Fe,{color:G.FG},`${Q}: `),va.default.createElement(Fe,{color:G.MUTED},`${I}`)):va.default.createElement(Fe,{color:G.FG},`${Q}`)),va.default.createElement($e,{flexDirection:"column",paddingLeft:2},(()=>{if(!R.text)return null;if(r.type==="rejected"||r.type==="denied")return va.default.createElement(Fe,{color:R.textColor},R.text);let S=(()=>{let T=R.text.trim();try{let D=JSON.parse(T);return D!==null&&typeof D=="object"?JSON.stringify(D,null,2):R.text}catch{return R.text}})(),B=s?TAe(S):ej(S);return r.type==="failure"?va.default.createElement(Fe,{color:R.textColor},B):va.default.createElement($e,{borderStyle:"round",borderColor:G.BORDER,paddingX:1},va.default.createElement(Fe,{color:R.textColor},B))})(),R.showToggleHelp&&!a&&va.default.createElement(Fe,{color:G.MUTED},"\u21AA ",f||"")))};c();var Mre=Gt(ul(),1);function o3t({packageName:t,checkUpdateResponse:e}){let{theme:l}=jI();return e?Mre.default.createElement($e,{flexDirection:"column",borderColor:l.ACCENT,borderStyle:"round",paddingX:1},Mre.default.createElement(Fe,{color:l.ACCENT,bold:!0},"New version available: ",e.latest),Mre.default.createElement(Fe,{color:l.MUTED},"Run"," ",Mre.default.createElement(Fe,{color:l.COPILOT,bold:!0},"npm i -g ",t,e.distTag!=="latest"?`@${e.distTag}`:"")," ","to update")):null}c();var HQ=Gt(ul(),1);function c3t({authManager:t,onSelect:e,onCancel:l,onError:I,initialAuth:n}){let[r,a]=(0,HQ.useState)([]),{theme:s}=jI();(0,HQ.useEffect)(()=>{(async()=>{let G=await t.getAllAuthAvailable();if(G.length===0){I("No logged in users found"),l();return}a(G)})()},[]),Js((d,G)=>{if(G.escape){l();return}});let o=n?r.findIndex(d=>Jxe(d.authInfo,n)):void 0;return HQ.default.createElement($e,{flexDirection:"column",gap:1},HQ.default.createElement(Fe,null,"Select a user:"),r.length>0&&HQ.default.createElement(Qre,{items:r.map((d,G)=>({label:`${G+1}. ${Mne(d.authInfo)}`,value:G})),initialIndex:o===-1?void 0:o,onSelect:d=>{e(r[d.value])}}),HQ.default.createElement(Fe,{color:s.MUTED,dimColor:!0},"Confirm with number keys or \u2191\u2193 keys and Enter, Cancel with Esc"))}c();c();import*as MAe from"fs";import*as i3t from"path";var zAe=class t{constructor(e,l){this.logger=e;this.eventsLogDirectory=l;if(this.eventsLogDirectory)try{MAe.mkdirSync(this.eventsLogDirectory,{recursive:!0}),this.loggingEnabled=!0}catch(I){this.logger.error(`Failed to create events log directory: ${I}`)}}static MAX_FILE_SIZE=10*1024*1024;currentFileIndex=0;currentFileSize=0;loggingEnabled=!1;async progress(e){await this.writeToEventsLog(JSON.stringify({type:"progress",timestamp:new Date().toISOString(),...e}))}async partialResult(e){await this.writeToEventsLog(JSON.stringify({type:"partialResult",timestamp:new Date().toISOString(),...e}))}async commentReply(e){await this.writeToEventsLog(JSON.stringify({type:"commentReply",timestamp:new Date().toISOString(),...e}))}async result(e){await this.writeToEventsLog(JSON.stringify({type:"result",timestamp:new Date().toISOString(),...e}))}async error(e){await this.writeToEventsLog(JSON.stringify({type:"error",timestamp:new Date().toISOString(),...e}))}async writeToEventsLog(e){if(this.loggingEnabled&&this.eventsLogDirectory)try{let l=e+`
|
|
1915
1915
|
`,I=Buffer.byteLength(l,"utf8");this.currentFileSize+I>=t.MAX_FILE_SIZE&&(this.currentFileIndex++,this.currentFileSize=0);let n=`events.${this.currentFileIndex}.jsonl`,r=i3t.join(this.eventsLogDirectory,n);await MAe.promises.appendFile(r,l),this.currentFileSize+=I}catch(l){this.logger.error(`Failed to write to events.${this.currentFileIndex}.jsonl: ${l}`)}}};c();import*as lj from"fs";import*as p3t from"path";c();import*as d3t from"fs";import*as m3t from"readline";async function G3t(){let t=new Map,e=process.env.COPILOT_AGENT_FIREWALL_LOG_FILE;if(e){let l=null;try{l=d3t.createReadStream(e,"utf8");let I=m3t.createInterface({input:l,crlfDelay:1/0});for await(let n of I)if(n.trim())try{let r=JSON.parse(n);if(r.blocked&&r.because!=="IPv6AlwaysBlocked"&&!r.hasBeenRedirected){let{because:a,domains:s,ip:o,originalIp:d,port:G,url:u,ruleSourceComment:h,hasBeenRedirected:W,cmd:y,blockedAt:R}=r,V={because:a,domains:s,ip:o,originalIp:d,port:G,url:u,ruleSourceComment:h,hasBeenRedirected:W,cmd:y,blockedAt:R};(V.cmd==="root process (pid 0)"||/process with pid \d+ no longer exists/.test(V.cmd))&&(V.cmd=""),t.set(JSON.stringify(V),V)}}catch{continue}}finally{l?.close()}}return Array.from(t.values())}c();c();var llI="Copilot encountered an unknown Git error.",DBe="Changes were pushed to Copilot's branch while it was working, and Copilot was unable to merge its changes with the contents of the remote branch. See logs for details.",fJr=new Map([["pull first",DBe],["fetch first",DBe],["rebase",DBe],["LFS","Copilot encountered an error with a large file when trying to push changes. See logs for details. If your repository uses Git Large File Storage (LFS), you can configure the Copilot setup steps to enable LFS access - for details, see https://gh.io/copilot-coding-agent-lfs."],["hook","Copilot encountered an error when trying to run a configured Git hook. See logs for details."],["protection rule","Copilot encountered a repository rule or branch protection rule violation when trying to push changes. See logs for details."],["disconnect","Copilot encountered an unexpected disconnect from Git while trying to push or pull changes."],["access denied","Copilot encountered an access denied error from Git while trying to push or pull changes."],["unknown",llI]]);function b3t(t){return t.kind==="session_logging_disabled"}c();var DAe=class{secretFilter=Z0.getInstance();formatToolCall(e){let l=`<function_calls>
|
|
1916
1916
|
`;l+='<invoke name="'+this.escapeXml(e.function.name)+`">
|
|
1917
1917
|
`;let I;try{I=JSON.parse(e.function.arguments)}catch{I={functionArguments:e.function.arguments}}for(let[n,r]of Object.entries(I)){let a=IIt(this.escapeXml(Z0.getInstance().filterSecrets(String(r))));l+=`<parameter name="${this.escapeXml(n)}">${a}</parameter>
|
|
@@ -1936,7 +1936,7 @@ ${qxt}
|
|
|
1936
1936
|
Try running with %s or get access `,al.cyan("sudo"))+`
|
|
1937
1937
|
to the local update config store via
|
|
1938
1938
|
`+al.cyan(hTe(" sudo chown -R $USER:$(id -gn $USER) %s ",oj));t9.on("exit",()=>{console.error(kye(l,{textAlignment:"center"}))})}}check(){!this.config||this.config.get("optOut")||this.#I||(this.update=this.config.get("update"),this.update&&(this.update.current=this.#t,this.config.delete("update")),!(Date.now()-this.config.get("lastUpdateCheck")<this.#l)&&TaI(t9.execPath,[ZBt.join(_aI,"check.js"),JSON.stringify(this.#e)],{detached:!0,stdio:"ignore"}).unref())}async fetchInfo(){let{distTag:e}=this.#e,l=await ITe(this._packageName,{version:e});return{latest:l,current:this.#t,type:(0,NBt.default)(this.#t,l)??e,name:this._packageName}}notify(e){let l=!this._shouldNotifyInNpmScript&&JSt;if(!t9.stdout.isTTY||l||!this.update||!(0,WBt.default)(this.update.latest,this.update.current))return this;e={isGlobal:MSt,...e};let I=e.isGlobal?`npm i -g ${this._packageName}`:`npm i ${this._packageName}`,n="Update available "+al.dim("{currentVersion}")+al.reset(" \u2192 ")+al.green("{latestVersion}")+`
|
|
1939
|
-
Run `+al.cyan("{updateCommand}")+" to update",r=e.message||n;e.boxenOptions??={padding:1,margin:1,textAlignment:"center",borderColor:"yellow",borderStyle:"round"};let a=kye(pTe(r,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:I}),e.boxenOptions);return e.defer===!1?console.error(a):t9.on("exit",()=>{console.error(a)}),this}};function ZTe(t){let e=new gae(t);return e.check(),e}async function gBt(){let t=R2(),
|
|
1939
|
+
Run `+al.cyan("{updateCommand}")+" to update",r=e.message||n;e.boxenOptions??={padding:1,margin:1,textAlignment:"center",borderColor:"yellow",borderStyle:"round"};let a=kye(pTe(r,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:I}),e.boxenOptions);return e.defer===!1?console.error(a):t9.on("exit",()=>{console.error(a)}),this}};function ZTe(t){let e=new gae(t);return e.check(),e}async function gBt(){let t=R2(),e=t.version.includes("-")?"prerelease":"latest",I=await ZTe({pkg:t,updateCheckInterval:0,distTag:e}).fetchInfo();return I.latest===I.current?null:{latest:I.latest,distTag:e}}c();var i5=Gt(ul(),1);c();var UOt=Gt(ZOt(),1);import{stat as RcI}from"fs/promises";c();var OTe={216:"O",223:"s",248:"o",273:"d",295:"h",305:"i",320:"l",322:"l",359:"t",383:"s",384:"b",385:"B",387:"b",390:"O",392:"c",393:"D",394:"D",396:"d",398:"E",400:"E",402:"f",403:"G",407:"I",409:"k",410:"l",412:"M",413:"N",414:"n",415:"O",421:"p",427:"t",429:"t",430:"T",434:"V",436:"y",438:"z",477:"e",485:"g",544:"N",545:"d",549:"z",564:"l",565:"n",566:"t",567:"j",570:"A",571:"C",572:"c",573:"L",574:"T",575:"s",576:"z",579:"B",580:"U",581:"V",582:"E",583:"e",584:"J",585:"j",586:"Q",587:"q",588:"R",589:"r",590:"Y",591:"y",592:"a",593:"a",595:"b",596:"o",597:"c",598:"d",599:"d",600:"e",603:"e",604:"e",605:"e",606:"e",607:"j",608:"g",609:"g",610:"G",613:"h",614:"h",616:"i",618:"I",619:"l",620:"l",621:"l",623:"m",624:"m",625:"m",626:"n",627:"n",628:"N",629:"o",633:"r",634:"r",635:"r",636:"r",637:"r",638:"r",639:"r",640:"R",641:"R",642:"s",647:"t",648:"t",649:"u",651:"v",652:"v",653:"w",654:"y",655:"Y",656:"z",657:"z",663:"c",665:"B",666:"e",667:"G",668:"H",669:"j",670:"k",671:"L",672:"q",686:"h",867:"a",868:"e",869:"i",870:"o",871:"u",872:"c",873:"d",874:"h",875:"m",876:"r",877:"t",878:"v",879:"x",7424:"A",7427:"B",7428:"C",7429:"D",7431:"E",7432:"e",7433:"i",7434:"J",7435:"K",7436:"L",7437:"M",7438:"N",7439:"O",7440:"O",7441:"o",7442:"o",7443:"o",7446:"o",7447:"o",7448:"P",7449:"R",7450:"R",7451:"T",7452:"U",7453:"u",7454:"u",7455:"m",7456:"V",7457:"W",7458:"Z",7522:"i",7523:"r",7524:"u",7525:"v",7834:"a",7835:"s",8305:"i",8341:"h",8342:"k",8343:"l",8344:"m",8345:"n",8346:"p",8347:"s",8348:"t",8580:"c"};for(let t="\u0300".codePointAt(0);t<="\u036F".codePointAt(0);++t){let e=String.fromCodePoint(t);for(let l of"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"){let n=(l+e).normalize().codePointAt(0);n>126&&(OTe[n]=l)}}var LTe={a:[7844,7863],e:[7870,7879],o:[7888,7907],u:[7912,7921]};for(let t of Object.keys(LTe)){let e=t.toUpperCase();for(let l=LTe[t][0];l<=LTe[t][1];++l)OTe[l]=l%2===0?e:t}function Qae(t){if(t<192||t>8580)return t;let e=OTe[t];return e!==void 0?e.codePointAt(0):t}function c5(t,e){return t>e?t:e}var gOt=t=>t.split("").map(e=>e.codePointAt(0));var XoI=new Set(` \f
|
|
1940
1940
|
\r \v\xA0\u1680\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("").map(t=>t.codePointAt(0)));for(let t="\u2000".codePointAt(0);t<="\u200A".codePointAt(0);t++)XoI.add(t);var yj="\x7F".codePointAt(0),Yae="A".codePointAt(0),Vae="Z".codePointAt(0),AOt="a".codePointAt(0),yOt="z".codePointAt(0),foI="0".codePointAt(0),JoI="9".codePointAt(0);function Aj(t,e,l){return l?t:e-t-1}var wae=16,$ye=-3,Fae=-1,l9=wae/2,koI=wae/2,LoI=l9+Fae,ROt=-($ye+Fae),EOt=2;function xTe(t){return t?new Set:null}function Eae(t,e,l){if(e!==null&&e.i16.length>t+l){let I=e.i16.subarray(t,t+l);return[t+l,I]}return[t,new Int16Array(l)]}function NOt(t,e,l){if(e!==null&&e.i32.length>t+l){let I=e.i32.subarray(t,t+l);return[t+l,I]}return[t,new Int32Array(l)]}function YOt(t){return t>=AOt&&t<=yOt?1:t>=Yae&&t<=Vae?2:t>=foI&&t<=JoI?4:0}function VOt(t){let e=String.fromCodePoint(t);return e!==e.toUpperCase()?1:e!==e.toLowerCase()?2:e.match(new RegExp("\\p{Number}","gu"))!==null?4:e.match(new RegExp("\\p{Letter}","gu"))!==null?3:0}function e0e(t){return t<=yj?YOt(t):VOt(t)}function TTe(t,e){return t===0&&e!==0?l9:t===1&&e===2||t!==4&&e===4?LoI:e===0?koI:0}function xoI(t,e){return e===0?l9:TTe(e0e(t[e-1]),e0e(t[e]))}function SoI(t,e,l,I){let n=t.slice(I),r=n.indexOf(l);if(r===0)return I;if(!e&&l>=AOt&&l<=yOt){r>0&&(n=n.slice(0,r));let a=n.indexOf(l-32);a>=0&&(r=a)}return r<0?-1:I+r}function WOt(t){for(let e of t)if(e>=128)return!1;return!0}function UTe(t,e,l){if(!WOt(t))return 0;if(!WOt(e))return-1;let I=0,n=0;for(let r=0;r<e.length;r++){if(n=SoI(t,l,e[r],n),n<0)return-1;r===0&&n>0&&(I=n-1),n++}return I}var BoI=(t,e,l,I,n,r,a)=>{let s=n.length;if(s===0)return[{start:0,end:0,score:0},xTe(r)];let o=I.length;if(a!==null&&o*s>a.i16.length)return FOt(t,e,l,I,n,r);let d=UTe(I,n,t);if(d<0)return[{start:-1,end:-1,score:0},null];let G=0,u=0,h=null,W=null,y=null,R=null;[G,h]=Eae(G,a,o),[G,W]=Eae(G,a,o),[G,y]=Eae(G,a,o),[u,R]=NOt(u,a,s);let[,V]=NOt(u,a,o);for(let Re=0;Re<V.length;Re++)V[Re]=I[Re];let Q=0,f=0,S=0,B=0,T=n[0],D=n[0],te=0,ae=0,U=!1,$=V.subarray(d),Ge=h.subarray(d).subarray(0,$.length),ue=W.subarray(d).subarray(0,$.length),ye=y.subarray(d).subarray(0,$.length);for(let[Re,re]of $.entries()){let Me=null;re<=yj?(Me=YOt(re),!t&&Me===2&&(re+=32)):(Me=VOt(re),!t&&Me===2&&(re=String.fromCodePoint(re).toLowerCase().codePointAt(0)),e&&(re=Qae(re))),$[Re]=re;let Ce=TTe(ae,Me);if(ye[Re]=Ce,ae=Me,re===D&&(S<s&&(R[S]=d+Re,S++,D=n[Math.min(S,s-1)]),B=d+Re),re===T){let Ot=wae+Ce*EOt;if(Ge[Re]=Ot,ue[Re]=1,s===1&&(l&&Ot>Q||!l&&Ot>=Q)&&(Q=Ot,f=d+Re,l&&Ce===l9))break;U=!1}else U?Ge[Re]=c5(te+Fae,0):Ge[Re]=c5(te+$ye,0),ue[Re]=0,U=!0;te=Ge[Re]}if(S!==s)return[{start:-1,end:-1,score:0},null];if(s===1){let Re={start:f,end:f+1,score:Q};if(!r)return[Re,null];let re=new Set;return re.add(f),[Re,re]}let ne=R[0],P=B-ne+1,pe=null;[G,pe]=Eae(G,a,P*s);{let Re=h.subarray(ne,B+1);for(let[re,Me]of Re.entries())pe[re]=Me}let[,ie]=Eae(G,a,P*s);{let Re=W.subarray(ne,B+1);for(let[re,Me]of Re.entries())ie[re]=Me}let Ve=R.subarray(1),se=n.slice(1).slice(0,Ve.length);for(let[Re,re]of Ve.entries()){let Me=!1,Ce=se[Re],Ot=Re+1,yl=Ot*P,wt=V.subarray(re,B+1),Mt=y.subarray(re).subarray(0,wt.length),mt=ie.subarray(yl+re-ne).subarray(0,wt.length),Tt=ie.subarray(yl+re-ne-1-P).subarray(0,wt.length),cl=pe.subarray(yl+re-ne).subarray(0,wt.length),JI=pe.subarray(yl+re-ne-1-P).subarray(0,wt.length),dl=pe.subarray(yl+re-ne-1).subarray(0,wt.length);dl[0]=0;for(let[Qe,Vt]of wt.entries()){let Wl=Qe+re,Dt=0,dI=0,kI=0;if(Me?dI=dl[Qe]+Fae:dI=dl[Qe]+$ye,Ce===Vt){Dt=JI[Qe]+wae;let jl=Mt[Qe];kI=Tt[Qe]+1,jl===l9?kI=1:kI>1&&(jl=c5(jl,c5(ROt,y[Wl-kI+1]))),Dt+jl<dI?(Dt+=Mt[Qe],kI=0):Dt+=jl}mt[Qe]=kI,Me=Dt<dI;let lI=c5(c5(Dt,dI),0);Ot===s-1&&(l&&lI>Q||!l&&lI>=Q)&&(Q=lI,f=Wl),cl[Qe]=lI}}let nt=xTe(r),ve=ne;if(r&&nt!==null){let Re=s-1;ve=f;let re=!0;for(;;){let Me=Re*P,Ce=ve-ne,Ot=pe[Me+Ce],yl=0,wt=0;if(Re>0&&ve>=R[Re]&&(yl=pe[Me-P+Ce-1]),ve>R[Re]&&(wt=pe[Me+Ce-1]),Ot>yl&&(Ot>wt||Ot===wt&&re)){if(nt.add(ve),Re===0)break;Re--}re=ie[Me+Ce]>1||Me+P+Ce+1<ie.length&&ie[Me+P+Ce+1]>0,ve--}}return[{start:ve,end:f+1,score:Q},nt]};function wOt(t,e,l,I,n,r,a){let s=0,o=0,d=!1,G=0,u=0,h=xTe(a),W=0;n>0&&(W=e0e(l[n-1]));for(let y=n;y<r;y++){let R=l[y],V=e0e(R);if(t||(R>=Yae&&R<=Vae?R+=32:R>yj&&(R=String.fromCodePoint(R).toLowerCase().codePointAt(0))),e&&(R=Qae(R)),R===I[s]){a&&h!==null&&h.add(y),o+=wae;let Q=TTe(W,V);G===0?u=Q:(Q===l9&&(u=Q),Q=c5(c5(Q,u),ROt)),s===0?o+=Q*EOt:o+=Q,d=!1,G++,s++}else d?o+=Fae:o+=$ye,d=!0,G=0,u=0;W=V}return[o,h]}var FOt=(t,e,l,I,n,r,a)=>{if(n.length===0)return[{start:0,end:0,score:0},null];if(UTe(I,n,t)<0)return[{start:-1,end:-1,score:0},null];let s=0,o=-1,d=-1,G=I.length,u=n.length;for(let h=0;h<G;h++){let W=I[Aj(h,G,l)];t||(W>=Yae&&W<=Vae?W+=32:W>yj&&(W=String.fromCodePoint(W).toLowerCase().codePointAt(0))),e&&(W=Qae(W));let y=n[Aj(s,u,l)];if(W===y&&(o<0&&(o=h),s++,s===u)){d=h+1;break}}if(o>=0&&d>=0){s--;for(let y=d-1;y>=o;y--){let R=Aj(y,G,l),V=I[R];t||(V>=Yae&&V<=Vae?V+=32:V>yj&&(V=String.fromCodePoint(V).toLowerCase().codePointAt(0)));let Q=Aj(s,u,l),f=n[Q];if(V===f&&(s--,s<0)){o=y;break}}if(!l){let y=o;o=G-d,d=G-y}let[h,W]=wOt(t,e,I,n,o,d,r);return[{start:o,end:d,score:h},W]}return[{start:-1,end:-1,score:0},null]},OoI=(t,e,l,I,n,r,a)=>{if(n.length===0)return[{start:0,end:0,score:0},null];let s=I.length,o=n.length;if(s<o)return[{start:-1,end:-1,score:0},null];if(UTe(I,n,t)<0)return[{start:-1,end:-1,score:0},null];let d=0,G=-1,u=0,h=-1;for(let W=0;W<s;W++){let y=Aj(W,s,l),R=I[y];t||(R>=Yae&&R<=Vae?R+=32:R>yj&&(R=String.fromCodePoint(R).toLowerCase().codePointAt(0))),e&&(R=Qae(R));let V=Aj(d,o,l);if(n[V]===R){if(V===0&&(u=xoI(I,y)),d++,d===o){if(u>h&&(G=W,h=u),u===l9)break;W-=d-1,d=0,u=0}}else W-=d,d=0,u=0}if(G>=0){let W=0,y=0;l?(W=G-o+1,y=G+1):(W=s-(G+1),y=s-(G-o+1));let[R]=wOt(t,e,I,n,W,y,!1);return[{start:W,end:y,score:R},null]}return[{start:-1,end:-1,score:0},null]};var ToI=100*1024,UoI=2048;function _oI(t,e){return{i16:new Int16Array(t),i32:new Int32Array(e)}}var zoI=_oI(ToI,UoI);var QOt=(t,e,l)=>{let I=!1;switch(e){case"smart-case":t.toLowerCase()!==t&&(I=!0);break;case"case-sensitive":I=!0;break;case"case-insensitive":t=t.toLowerCase(),I=!1;break}let n=gOt(t);return l&&(n=n.map(Qae)),{queryRunes:n,caseSensitive:I}};function vOt(t,e){let l=Object.keys(t).map(n=>parseInt(n,10)).sort((n,r)=>r-n),I=[];for(let n of l)if(I=I.concat(t[n]),I.length>=e)break;return I}function COt(t,e,l){return I=>{let n=this.runesList[I];if(e.length>n.length)return;let[r,a]=this.algoFn(l,this.opts.normalize,this.opts.forward,n,e,!0,zoI);if(r.start===-1)return;if(this.opts.fuzzy===!1){a=new Set;for(let o=r.start;o<r.end;++o)a.add(o)}let s=this.opts.sort?r.score:0;t[s]===void 0&&(t[s]=[]),t[s].push({item:this.items[I],...r,positions:a??new Set})}}function MoI(t){let{queryRunes:e,caseSensitive:l}=QOt(t,this.opts.casing,this.opts.normalize),I={},n=COt.bind(this)(I,e,l);for(let r=0,a=this.runesList.length;r<a;++r)n(r);return vOt(I,this.opts.limit)}var DoI=typeof Ae<"u"&&typeof window>"u";function joI(t,e,l,I){return new Promise((n,r)=>{let s=0,o=Math.min(1e3,e),d=()=>{if(t.cancelled)return r("search cancelled");for(;s<o;++s)l(s);o<e?(o=Math.min(o+1e3,e),DoI?setImmediate(d):setTimeout(d)):n(I())};d()})}function PoI(t,e){let{queryRunes:l,caseSensitive:I}=QOt(t,this.opts.casing,this.opts.normalize),n={};return joI(e,this.runesList.length,COt.bind(this)(n,l,I),()=>vOt(n,this.opts.limit))}var _Te={limit:1/0,selector:t=>t,casing:"smart-case",normalize:!0,fuzzy:"v2",tiebreakers:[],sort:!0,forward:!0},STe=class{constructor(e,...l){switch(this.opts={..._Te,...l[0]},this.items=e,this.runesList=e.map(I=>gOt(this.opts.selector(I).normalize())),this.algoFn=OoI,this.opts.fuzzy){case"v2":this.algoFn=BoI;break;case"v1":this.algoFn=FOt;break}}},SBr={..._Te,match:MoI};var KoI={..._Te,match:PoI},BTe=class extends STe{constructor(e,...l){super(e,...l),this.opts={...KoI,...l[0]},this.token={cancelled:!1}}async find(e){if(this.token.cancelled=!0,this.token={cancelled:!1},e.length===0||this.items.length===0)return this.items.slice(0,this.opts.limit).map(qoI);e=e.normalize();let l=await this.opts.match.bind(this)(e,this.token);return $oI(l,this.opts)}},qoI=t=>({item:t,start:-1,end:-1,score:0,positions:new Set});function $oI(t,e){if(e.sort){let{selector:l}=e;t.sort((I,n)=>{if(I.score===n.score)for(let r of e.tiebreakers){let a=r(I,n,l);if(a!==0)return a}return 0})}return Number.isFinite(e.limit)&&t.splice(e.limit),t}var t0e=class{constructor(e,...l){this.finder=new BTe(e,...l),this.find=this.finder.find.bind(this.finder)}};var _Ot=Gt(JTe(),1);import{join as EcI,relative as YcI,sep as I9}from"path";c();var qTe=Gt(BOt(),1);import{existsSync as WcI}from"fs";import{readFile as gcI}from"fs/promises";import{join as AcI,relative as ycI}from"path";var Cae=class{patterns=[];rootPath;fingerprint="";ig=(0,qTe.default)();constructor(e){this.rootPath=e}async loadPatterns(){this.patterns=[],this.ig=(0,qTe.default)();let e=AcI(this.rootPath,".gitignore");if(WcI(e))try{let a=await gcI(e,"utf-8");this.addIgnoreRules(a)}catch{}let I=[".git","node_modules","dist","build","out",".coverage","coverage",".nyc_output","tmp","temp",".tmp",".temp","__pycache__","target","bin","obj"].flatMap(a=>[a,`${a}/**`,`**/${a}/**`]);I.push("*.log");let n=[".DS_Store","Thumbs.db","*.pyc","*.class","*.o","*.exe","*.swp","*.swo",".*~"],r=[".cache/**","**/.cache/**",".temp/**","**/.temp/**",".pytest_cache/**","**/.pytest_cache/**"];return this.addIgnoreRules([...I,...n,...r]),this.updateFingerprint(),this.patterns}addIgnoreRules(e){if(typeof e=="string"){let l=this.parseIgnoreFile(e);this.patterns.push(...l),this.ig.add(l)}else this.patterns.push(...e),this.ig.add(e)}parseIgnoreFile(e){return e.split(`
|
|
1941
1941
|
`).map(l=>l.trim()).filter(l=>l&&!l.startsWith("#")).map(l=>l.endsWith("/")?l.slice(0,-1)+"/**":l)}shouldIgnore(e){try{let l=ycI(this.rootPath,e);return l==="."||l.startsWith("..")?!1:this.ig.ignores(l)}catch{return!1}}getDirectoryFilter(){return e=>{if(!e||e===".")return!1;let l=e.startsWith("./")?e.slice(2):e;return!l||l==="."?!1:this.ig.ignores(l)}}getFileFilter(){return e=>{if(!e||e===".")return!1;let l=e.startsWith("./")?e.slice(2):e;return!l||l==="."?!1:this.ig.ignores(l)}}updateFingerprint(){this.fingerprint=JSON.stringify(this.patterns)}getFingerprint(){return this.fingerprint}getPatterns(){return[...this.patterns]}};var OOt=2e4,eUe=class extends Error{constructor(e="Search aborted"){super(e),this.name="AbortError"}};async function TOt(t,e,l,I){let n=(0,_Ot.default)(e,{dot:!0,contains:!0,nocase:!0}),r=[];for(let[a,s]of t.entries()){if(a%1e3===0&&(await new Promise(o=>setImmediate(o)),l?.aborted))throw new eUe;if(n(s)&&r.push(s),r.length>=I)break}return r.sort((a,s)=>{let o=a.endsWith(I9),d=s.endsWith(I9);return o&&!d?-1:!o&&d?1:a<s?-1:a>s?1:0}),r}var Hae=class{rootPath;ignorePatterns;maxResults;cacheTimeout;indexFileStats;maxStatConcurrency;includeDirsInIndex;allFiles=[];visiblePaths=[];fileCache=[];fileByRelative=new Map;lastCacheUpdate=0;isIndexing=!1;indexingPromise=null;isIndexed=!1;strategy="v2";fzf;onIndexingStart;onIndexingComplete;logger;constructor(e={}){this.rootPath=e.rootPath||process.cwd(),this.ignorePatterns=new Cae(this.rootPath),this.maxResults=e.maxResults||50,this.cacheTimeout=e.cacheTimeout??5*6e4,this.indexFileStats=e.indexFileStats??!1,this.maxStatConcurrency=e.maxStatConcurrency??64,this.includeDirsInIndex=e.includeDirsInIndex??!1,this.onIndexingStart=e.onIndexingStart,this.onIndexingComplete=e.onIndexingComplete,this.logger=e.logger||new Ch}async search(e){if(await this.ensureFileIndex(),this.fileCache.length===0)return[];if(!e.trim()){let l=this.fileCache;return l.slice(0,this.maxResults).map((I,n)=>({path:I.path,score:1-n/Math.max(l.length,1),relativePath:I.relativePath}))}if(e.includes("*")){let l=await TOt(this.visiblePaths,e,void 0,this.maxResults),I=[],n=this.fileByRelative;for(let[r,a]of l.entries()){if(r%1e3===0&&await new Promise(o=>setImmediate(o)),I.length>=this.maxResults)break;if(a===".")continue;let s=n.get(a);if(s){let o=this.calculateScore(s.relativePath,e);I.push({path:s.path,score:o,relativePath:s.relativePath})}}return I.sort((r,a)=>a.score-r.score),I}else{this.fzf||(this.fzf=new t0e(this.visiblePaths,{fuzzy:this.visiblePaths.length>OOt?"v1":"v2"}));let l=[];try{l=await this.fzf.find(e)}catch{l=(await TOt(this.visiblePaths,e,void 0,this.maxResults)).map(a=>({item:a,score:1,start:0,end:0,positions:new Set}))}let I=l.slice(0,this.maxResults).map((r,a)=>({rel:r.item,idx:a})),n=[];for(let{rel:r,idx:a}of I){if(r===".")continue;let s=this.fileByRelative.get(r);s&&n.push({file:s,idx:a,bucket:this.exactBucket(s.relativePath,e),score:this.calculateScore(s.relativePath,e)})}return n.sort((r,a)=>a.bucket-r.bucket||r.idx-a.idx),n.map(r=>({path:r.file.path,relativePath:r.file.relativePath,score:r.score}))}}exactBucket(e,l){let I=e.toLowerCase(),n=l.toLowerCase();if(I===n)return 3;let r=I.lastIndexOf(I9),a=r===-1?I:I.slice(r+1);return a===n?2:a.startsWith(n)?1:0}calculateScore(e,l){let I=e.toLowerCase(),n=l.toLowerCase();if(I===n)return 1;let r=e.lastIndexOf(I9),s=(r===-1?e:e.slice(r+1)).toLowerCase();if(s===n)return .95;if(s.startsWith(n))return .85;if(I.startsWith(n))return .75;let o=I.indexOf(n);return o===-1?.5:Math.max(.1,.7-o/I.length)}async refresh(){this.invalidateCache(),await this.ensureFileIndex()}invalidateCache(){this.lastCacheUpdate=0,this.isIndexed=!1,this.indexingPromise=null,this.fileCache=[],this.allFiles=[],this.fzf=void 0,this.visiblePaths=[],this.fileByRelative.clear()}getCacheInfo(){return{fileCount:this.fileCache.length,lastUpdated:this.lastCacheUpdate,isIndexing:this.isIndexing,strategy:this.strategy,isIndexed:this.isIndexed}}async ensureFileIndex(){let e=Date.now();if(!(this.isIndexed&&this.fileCache.length>0&&e-this.lastCacheUpdate<this.cacheTimeout))return this.indexingPromise?this.indexingPromise:(this.isIndexing=!0,this.indexingPromise=this.buildFileIndex().finally(()=>{this.isIndexing=!1,this.indexingPromise=null}),this.indexingPromise)}async buildFileIndex(){let e=Date.now();this.onIndexingStart?.();try{await this.ignorePatterns.loadPatterns(),this.allFiles=await this.performCrawl();let l=await this.filterFilesConcurrently(this.allFiles),I=l.map(r=>({path:EcI(this.rootPath,r),relativePath:r,lastModified:0}));this.indexFileStats&&I.length&&await this.fillStatsConcurrently(I,this.maxStatConcurrency),I.sort((r,a)=>r.relativePath.localeCompare(a.relativePath)),this.fileCache=I,this.visiblePaths=l,this.fileByRelative=new Map(I.map(r=>[r.relativePath,r])),this.lastCacheUpdate=Date.now(),this.isIndexed=!0,this.strategy=this.visiblePaths.length>OOt?"v1":"v2";let n=Date.now()-e;this.onIndexingComplete?.(this.fileCache.length,n)}catch(l){this.logger.error(`Error building file index: ${l}`),this.fileCache=[],this.allFiles=[],this.visiblePaths=[],this.fileByRelative.clear(),this.isIndexed=!1;let I=Date.now()-e;this.onIndexingComplete?.(0,I)}}async fillStatsConcurrently(e,l){let I=0,n=new Array(Math.min(l,e.length)).fill(0).map(async()=>{for(;;){let r=I++;if(r>=e.length)break;let a=e[r];try{let s=await RcI(a.path);a.lastModified=s.mtime.getTime()}catch{}r%2e3===0&&await new Promise(s=>setImmediate(s))}});await Promise.all(n)}async filterFilesConcurrently(e,l=50){let I=this.ignorePatterns.getFileFilter(),n=[];for(let r=0;r<e.length;r+=l){let a=e.slice(r,r+l),s=a.map(o=>!I(o));a.forEach((o,d)=>{s[d]&&n.push(o)}),await new Promise(o=>setImmediate(o))}return n}async performCrawl(){let e=this.ignorePatterns.getDirectoryFilter(),l=new UOt.fdir().withRelativePaths().withPathSeparator(I9).exclude((I,n)=>{let r=YcI(this.rootPath,n);if(r==="."||r==="")return!1;let a=r.endsWith(I9)?r:`${r}${I9}`;return e(a)});return this.includeDirsInIndex&&l.withDirs(),l.crawl(this.rootPath).withPromise()}getRootPath(){return this.rootPath}async setRootPath(e){this.rootPath=e,this.ignorePatterns=new Cae(e),this.invalidateCache()}},$Te=null;function zOt(){return $Te||($Te=new Hae),$Te}function MOt(t,e,l){let[I,n]=(0,i5.useState)([]),[r,a]=(0,i5.useState)(0),[s,o]=(0,i5.useState)(new Map),d=e||zOt(),G=(0,i5.useMemo)(()=>{let{text:f,cursorPosition:S}=t,B=-1;for(let D=S-1;D>=0;D--){let te=f[D];if(te==="@"){if(D===0||f[D-1]===" "||f[D-1]===`
|
|
1942
1942
|
`||f[D-1]===" "){B=D;break}}else if(te===" "||te===`
|
|
@@ -1957,7 +1957,7 @@ Run `+al.cyan("{updateCommand}")+" to update",r=e.message||n;e.boxenOptions??={p
|
|
|
1957
1957
|
`:""}Error executing shell command: ${hc instanceof Error?hc.message:String(hc)}`,markdown:!1})}finally{g1=!1,n9=!1,Ep=null,ko(!1)}return}let Pe=await EYt(ke,()=>{e.clearHistory(),ae([]),S()},Ka,di.current.resetSessionToolApprovals,async()=>{let _l=As.cwd();No(_l),oI&&await oI.setRootPath(_l)},T,async _l=>{await W(_l),S()},Cs);if(Pe.handled){if(Pe.addEntry&&Pa(e,Pe.addEntry),Pe.showLoginUI&&Mt(!0),Pe.logout){if(Re.status==="LoggedIn"){let _l=await t.logout();Pa(e,{type:"info",text:"You have been logged out successfully."}),Wl(_l)}else Pa(e,{type:"error",text:"You are not logged in."});re({status:"NotLoggedIn"})}if(Pe.showMCPConfigUI&&(Tt(!0),Pe.mcpUIMode&&dI(Pe.mcpUIMode),Pe.mcpUIServerName&&lI(Pe.mcpUIServerName)),Pe.showModelPicker&&JI(!0),Pe.setModelDirectly&&(fP(),e.setSelectedModel(Pe.setModelDirectly),Pa(e,{type:"info",text:`Model changed to: ${Pe.setModelDirectly}. The new model will be used for the next conversation.`}),vs(Pe.setModelDirectly)),Pe.showFeedbackForm&&Dn(!0),Pe.showSessionInfo&&Qe(!0),Pe.showUsageInfo){let _l=e.getFormattedUsageOutput();e.addTimelineEntry({type:"info",text:_l})}if(Pe.exit){qa();return}switch(Pe.showUserAction){case"show":Re.status==="LoggedIn"?Pa(e,{type:"info",text:fxe(Re.authInfo)}):Pa(e,{type:"error",text:"You are not logged in."});break;case"list":{let _l=await IYt(t,Re.status==="LoggedIn"?Re.authInfo:void 0);if(_l.length===0){Pa(e,{type:"error",text:"No users are currently logged in."});return}Pa(e,{type:"info",text:`Available users:
|
|
1958
1958
|
|
|
1959
1959
|
${_l.join(`
|
|
1960
|
-
`)}`});break}case"switch":Wl(!0);break}return}if(Re.status!=="LoggedIn"){Pa(e,{type:"error",text:"You must be logged in to send messages. Please run /login"});return}if(Me!==1){Pa(e,{type:"error",text:"This folder is not trusted. Please confirm folder trust to continue."});return}let Et=Date.now(),{expandedText:qt,mentions:$t,syntheticToolCalls:Vl,imageAttachments:mI}=await nTt(ke,Bn.storedMentions,Yr,T),vn=mI.length>0?{text:qt,images:mI}:qt;Pa(e,{type:"user",text:ke,mentions:$t,expandedText:qt,imageAttachments:mI}),ve(!0);try{let _l=await Zx(G,e,fd);await oTt(Et,vn,Vl,di.current,Re.authInfo,ys,$,ne,e,T,Ka,Yr,_l,r,Cs,u,D)}catch(_l){let dn=_l instanceof Error?_l.message:String(_l);Pa(e,{type:"error",text:`Execution failed: ${dn}`})}finally{Xi.current&&(ve(!1),eI.beep!==!1&&As.stdout.write(Tb.beep),setTimeout(()=>void rd(),1e3))}})()},[nt,ys,Cs,Re,Me,Bn.storedMentions]),Fb=(0,Lt.useCallback)(()=>{Vt||(Bn.isActive?ds.navigateUp():!X2.isNavigating()&&ec.length?Sn(Math.max(0,jn-1)):X2.navigateUp(tI))},[Vt,Bn.isActive,ds,ec.length,jn,tI]),ad=(0,Lt.useCallback)(()=>{Vt||(Bn.isActive?ds.navigateDown():!X2.isNavigating()&&ec.length?Sn(Math.min(ec.length-1,jn+1)):X2.navigateDown(tI))},[Vt,Bn.isActive,ds,ec.length,jn,tI]);Js((ke,Pe)=>{if(Pe.ctrl&&ke==="d"){qa();return}if(Pe.ctrl&&ke==="c"){if((nt||g1)&&Ep&&!Ep.signal.aborted){n9=!0,Ep.abort(),e.handleAbortedOperation(),pc();return}if(tI.text.length>0){tI.clear(),X2.resetNavigation(),pc();return}if(!Br){pc();return}qa()}if(Pe.escape){(nt||g1)&&Ep&&!Ep.signal.aborted&&(n9=!0,Ep.abort(),e.handleAbortedOperation());return}if(Pe.ctrl&&ke==="r"){Ve();return}if(Pe.ctrl&&ke==="o"){ie();return}if(!(nt||g1||Vt)){if(Pe.tab||Pe.return){if(Bn.isActive){ds.complete();return}return}!Pe.leftArrow&&!Pe.rightArrow&&!Pe.upArrow&&!Pe.downArrow&&X2.setNavigating(!1)}}),(0,Lt.useEffect)(()=>{Km(tI.text.startsWith("!"))},[tI.text]);let Ta=VN(()=>{if(Ot)return il?Lt.default.createElement(_Jt,{folderPath:Yr,onConfirm:_l=>{let dn=()=>{Ce(1),yl(!1)};_l==="yes"?dn():_l==="remember"?lae.addTrustedFolder(Yr).then(()=>{dn(),Pa(e,{type:"info",text:`Folder ${Yr} has been added to trusted folders.`})}).catch($a=>{Pa(e,{type:"error",text:`Failed to add folder to trusted list: ${$a instanceof Error?$a.message:String($a)}`})}):As.exit(0)}}):Lt.default.createElement(Lt.default.Fragment,null);if(dl)return Lt.default.createElement(KLt,{sessionId:e.getCurrentSessionId(),onClose:()=>{Qe(!1)}});if(wt)return Lt.default.createElement(CLt,{onLoginSuccess:(_l,dn)=>{VN(async()=>{await t.loginUser(_l,dn),Mt(!1),Pa(e,{type:"info",text:`Signed in successfully as ${zne({host:_l,login:dn})}! You can now use Copilot.`}),re({status:"LoggedIn",authInfo:{type:"user",host:_l,login:dn}})})},onLoginClose:()=>{Mt(!1)}});if(mt)return Lt.default.createElement(XLt,{initialMode:Dt,initialServerName:kI,onClose:()=>{Tt(!1),dI("list"),lI(void 0)},onConfigSaved:()=>{Vp().then(()=>{Pa(e,{type:"info",text:"MCP configuration saved successfully! Changes will take effect immediately."})}).catch(_l=>{Pa(e,{type:"error",text:`Failed to reload MCP config. Error: ${_l instanceof Error?_l.message:String(_l)}`})})}});if(cl)return Lt.default.createElement(fLt,{models:fd,cliModel:G,sessionManager:e,onClose:()=>{JI(!1)},onModelSelected:_l=>{fP(),e.setSelectedModel(_l),(async()=>{try{let $a={...await Mr.load()||{},model:_l};await Mr.write($a)}catch{}})(),Pa(e,{type:"info",text:`Model changed to: ${_l}. The new model will be used for the next conversation.`}),vs(_l)}});if(Vt)return Lt.default.createElement(c3t,{authManager:t,initialAuth:Re.status==="LoggedIn"?Re.authInfo:null,onSelect:_l=>{re({status:"LoggedIn",authInfo:_l.authInfo}),Wl(!1),Pa(e,{type:"info",text:`Switched to ${Mne(_l.authInfo)}`}),t.switchToAuth(_l)},onCancel:()=>Wl(!1),onError:_l=>{Pa(e,{type:"error",text:`Failed to switch user. Error: ${_l}`})}});if(sI){let _l=Io.length;return Lt.default.createElement($e,{flexDirection:"column"},_l>0&&Lt.default.createElement($e,{marginBottom:1},Lt.default.createElement(Fe,{color:h.FG},"Permission request (",_l," remaining)")),Lt.default.createElement(PLt,{request:sI.request,onConfirm:dn=>{sI.resolve(dn),BI(null)}}))}if(oe){let _l=nn.length;return Lt.default.createElement($e,{flexDirection:"column"},_l>0&&Lt.default.createElement($e,{marginBottom:1},Lt.default.createElement(Fe,{color:h.FG},"Path confirmation (",_l," remaining)")),Lt.default.createElement(JLt,{paths:oe.paths,onConfirm:dn=>{oe.resolve(dn),It(null)}}))}let ke=nt||g1,Pe="Enter @ to mention files or / for commands",Et=Wo,qt=ke||n9,$t=!X2.isNavigating()&&ec.length>0,Vl=Bn.isActive,mI=!Vl&&!$t,vn=VN(()=>n9?"cancelling":pm?"executing":"thinking");return Lt.default.createElement(Lt.default.Fragment,null,Re.status==="NotLoggedIn"&&Lt.default.createElement(Fe,{bold:!0,color:h.COPILOT},"Please use /login to sign in to use Copilot"),qt&&Lt.default.createElement($e,{paddingBottom:1},Lt.default.createElement(r3t,{mode:vn})),Lt.default.createElement($e,{flexDirection:"row",columnGap:1},Lt.default.createElement($e,{flexGrow:1},Lt.default.createElement(Fe,null,Jd),rI&&Lt.default.createElement(Fe,{color:h.MUTED},rI)),Lt.default.createElement(Fe,{color:h.MUTED},Bc),Lt.default.createElement(xJt,{metrics:ye})),Lt.default.createElement($Jt,{terminalWidth:B.columns-rTt*2,onSubmit:Yn,textCursorLocation:tI,placeholder:Pe,inlineSuggestion:Et,onTabCompletion:Rs,disableEnterSubmit:ke||n9||Bn.isActive,onUpArrow:Fb,onDownArrow:ad}),$t&&Lt.default.createElement($e,{paddingBottom:1},Lt.default.createElement(n3t,{options:ec,selectedIndex:jn,maxRows:10,showScrollHints:!0})),Vl&&Lt.default.createElement($e,{paddingBottom:1},Lt.default.createElement(JJt,{files:Bn.suggestions.map(_l=>_l.relativePath),selectedIndex:Bn.selectedIndex,maxRows:10,showScrollHints:!0,query:Bn.query})),Lt.default.createElement(MJt,{indexingIndicator:Se}),mI&&Lt.default.createElement(Ikt,{quotaSnapshots:U,isRecentTimelineExpanded:P!==null,isAllTimelineExpanded:Ge,showControlCMessage:Br,inShellExecMode:CG}))}),Qb=As.platform==="win32",tc=Lt.default.createElement($e,{key:"header",flexDirection:"column"},Lt.default.createElement($e,{flexDirection:"column"},Lt.default.createElement(kJt,{animationComplete:()=>vl(!0),completed:il,bannerConfig:n?"always":eI.banner,loggerOverride:T,version:V.version}),Lt.default.createElement($e,{flexDirection:"row",paddingX:1},Lt.default.createElement(Fe,{color:h.MUTED},"Version ",V.version),V.buildMetadata&&Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(Fe,{color:h.MUTED}," \xB7 "),Lt.default.createElement(Fe,{color:h.MUTED},"Commit ",V.buildMetadata.gitCommit)))),Lt.default.createElement($e,{flexDirection:"column",padding:1,width:80,gap:1},Lt.default.createElement(Fe,{color:h.MUTED,wrap:"wrap"},"Copilot can write, test and debug code right from your terminal. Describe a task to get started or enter ? for help. Copilot uses AI, check for mistakes."),Qb&&Lt.default.createElement(Fe,{color:h.WARNING},"Windows support is experimental. If you encounter issues, consider running Copilot inside Windows Subsystem for Linux (WSL). Please report any issues using /feedback."))),hm=te.filter(ke=>!("isHidden"in ke&&ke.isHidden)),kd=hm.findIndex(ke=>ke.type==="tool_call_requested");kd===-1&&(kd=hm.length);let ce=hm.slice(0,kd),de=hm.slice(kd),xe=ce.map(ke=>Lt.default.createElement(_Ae,{key:ke.id,entry:ke,expand:se(ke),renderAsMarkdown:eI.render_markdown})),Ke=de.map(ke=>Lt.default.createElement(_Ae,{key:ke.id,entry:ke,expand:se(ke),renderAsMarkdown:eI.render_markdown})),dt=il&&y;return Lt.default.createElement(KSe,{mode:"interactive"},e.isWaitingForSessionPicker()?Lt.default.createElement($e,{flexDirection:"column",paddingX:1},Lt.default.createElement(I3t,{onSessionSelected:ke=>{(async()=>{try{await e.selectSession(ke)}catch(Pe){e.addTimelineEntry({type:"error",text:`Failed to resume session: ${Pe instanceof Error?Pe.message:String(Pe)}`})}})()},onCancel:()=>{(async()=>{try{As.exit(0)}catch(ke){e.addTimelineEntry({type:"error",text:`Failed to restart with new session: ${ke instanceof Error?ke.message:String(ke)}`})}})()}})):Lt.default.createElement($e,{flexDirection:"column"},dt&&Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(Noe,{key:Q,items:[tc,...xe]},ke=>ke),Ke),!dt&&tc,!gI&&Lt.default.createElement($e,{flexDirection:"column",paddingX:rTt},jl?Lt.default.createElement(SJt,{onCancel:()=>Dn(!1)}):Ta),gI&&Lt.default.createElement($e,{flexDirection:"column",paddingX:1,rowGap:1},gI.usage&&Lt.default.createElement(Fe,{dimColor:!0},gI.usage),Lt.default.createElement(o3t,{packageName:V.name,versionToUpdate:ln}),gI.type==="routine"?Lt.default.createElement(Fe,{color:h.ACCENT,bold:!0},"Shutting down..."):Lt.default.createElement(Fe,{color:h.ERROR,bold:!0},`Shutting down: ${gI.reason}`))))};function iTt(t,e=!1){let l=Lt.default.createElement(cAe,{logger:new Ch,children:Lt.default.createElement(KSe,{mode:"non-interactive",children:Lt.default.createElement(_Ae,{entry:t,expand:e})})}),{lastFrame:I}=J$e(l),n=I();return n?n.trim():""}var dTt=KcI;c();function qcI(t){return`session_${t.sessionId}_${t.startTime.getTime()}`}function mTt(t){let e=/^session_(.+)_(\d+)\.json$/,l=t.match(e);if(!l)return null;let[,I,n]=l;return{sessionId:I,startTime:new Date(parseInt(n,10))}}var _Q=class t{currentSession;onTimelineEntriesChangeCallback=null;debounceSave=null;logger;needsSessionPicker=!1;autoSaveEnabled=!1;usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map};static async create(e){let l=new t;switch(e.kind){case"new":break;case"resume-last":await l.resumeLastSession();break;case"resume":await l.resumeSpecificSession(e.sessionId);break;case"resume-with-picker":l.needsSessionPicker=!0;break;default:{let I=e;throw new Error(`unexpected session kind: ${JSON.stringify(I)}`)}}return l}static async hasMultipleSessions(){try{return(await m1.directoryFiles()).length>1}catch{return!1}}constructor(){this.currentSession=this.generateSession(),this.logger=new Ch}setLogger(e){this.logger=e}getLogger(){return this.logger}isWaitingForSessionPicker(){return this.needsSessionPicker}async selectSession(e){this.needsSessionPicker=!1,await this.resumeSpecificSession(e)}setOnTimelineEntriesChangeCallback(e){this.onTimelineEntriesChangeCallback=e,this.notifyTimelineEntriesChange()}notifyTimelineEntriesChange(){this.onTimelineEntriesChangeCallback?.([...this.currentSession.timeline])}enableAutoSave(){this.autoSaveEnabled=!0}async forceSave(){await this.saveHistorySession(this.currentSession)}scheduleSave(){this.debounceSave&&clearTimeout(this.debounceSave);let e=this.currentSession;this.debounceSave=setTimeout(()=>{this.autoSaveEnabled&&this.saveHistorySession(e)},100)}getTimelineEntries(){return[...this.currentSession.timeline]}async loadHistorySession(e){try{let l=await m1.load(e);if(!l)return;let I={...l,startTime:new Date(l.startTime)};this.currentSession=I;for(let n of this.currentSession.timeline)n.timestamp=new Date(n.timestamp);this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.enableAutoSave(),this.notifyTimelineEntriesChange()}catch(l){throw this.logger.error(`Error loading history session: ${l}`),l}}async saveHistorySession(e){let l=qcI(e);await m1.write(e,l)}getCurrentSessionId(){return this.currentSession?.sessionId}getCurrentSessionStartTime(){return this.currentSession?.startTime}getSelectedModel(){return this.currentSession?.selectedModel}getCurrentModel(e){return e||this.currentSession?.selectedModel||this.usageMetrics.currentModel||""}setSelectedModel(e){this.currentSession.selectedModel=e,this.scheduleSave()}addTimelineEntry(e){try{this.currentSession.timeline.push({id:tA(),timestamp:new Date,...e}),this.scheduleSave(),this.notifyTimelineEntriesChange()}catch(l){this.logger.error(`Error adding timeline entry: ${l}`)}}clearHistory(){this.currentSession.chatMessages=[],this.currentSession.timeline=[],this.scheduleSave(),this.notifyTimelineEntriesChange()}addChatMessage(e){this.currentSession.chatMessages.push(e),this.scheduleSave()}getChatContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role!=="system")}getSystemContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role==="system")}handleAbortedOperation(){this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.scheduleSave()}completeOrphanedToolCalls(e){if(e.length===0)return e;let l=[];for(let r=e.length-1;r>=0;r--){let a=e[r];if(a.role==="assistant"&&"tool_calls"in a&&a.tool_calls&&a.tool_calls.length>0)for(let s of a.tool_calls)l.push(s.id);else break}if(l.length===0)return e;let I="The execution of this tool, or a previous tool was interrupted.";this.logger.info(`Completing ${l.length} orphaned tool calls.`);let n=l.map(r=>({role:"tool",tool_call_id:r,content:I}));for(let r of l)this.updateToolCallTimelineEntryResult({callId:r,resultType:"rejected",log:I});return[...e,...n]}updateToolCallTimelineEntryResult(e){let l=this.currentSession.timeline.findLastIndex(r=>r.type==="tool_call_requested"&&r.callId===e.callId);if(l===-1){this.logger.error(`Pending tool call with ID ${e.callId} not found`);return}let I=this.currentSession.timeline[l];if(I.type==="tool_call_requested"&&I.name==="str_replace_editor"&&e.log){let s=I.arguments?.path;this.updateCodeChangeMetrics(e.log,s)}let n=this.currentSession.timeline[l];this.currentSession.timeline[l]={type:"tool_call_completed",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,result:{type:e.resultType,log:e.log,markdown:e.markdown},isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.scheduleSave(),this.notifyTimelineEntriesChange()}updateToolCallTimelineEntryPartialOutput(e,l){let I=this.currentSession.timeline.findLastIndex(r=>r.type==="tool_call_requested"&&r.callId===e);if(I===-1){this.logger.error(`Pending tool call with ID ${e} not found`);return}let n=this.currentSession.timeline[I];this.currentSession.timeline[I]={type:"tool_call_requested",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,partialOutput:l,isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.notifyTimelineEntriesChange()}async resumeSpecificSession(e){let l=await m1.directoryFiles();if(l.length===0)throw new Error(`Session not found: ${e}`);let I=null,n=[];for(let r of l){let a=mTt(r);if(a&&a.sessionId===e){I=r;break}}if(!I){for(let r of l){let a=mTt(r);a&&a.sessionId.startsWith(e)&&n.push({file:r,parsed:a})}n.length>0&&(n.sort((r,a)=>a.parsed.startTime.getTime()-r.parsed.startTime.getTime()),I=n[0].file)}if(!I)throw new Error(`Session not found: ${e}`);try{await this.loadHistorySession(I)}catch(r){throw new Error(`Failed to load session ${e}: ${r}`)}}async resumeLastSession(){let e=await m1.directoryFiles();if(e.length===0)throw new Error("No sessions found");let l=e[0];try{await this.loadHistorySession(l)}catch(I){throw new Error(`Failed to resume last session: ${I}`)}}generateSession(){return this.resetUsageMetrics(),{sessionId:this.generateSessionId(),startTime:new Date,chatMessages:[],timeline:[]}}generateSessionId(){return tA()}getUsageMetrics(){return this.usageMetrics}resetUsageMetrics(){this.usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map}}getModelRequestMultiplier(e){return{"claude-sonnet-4":1,"gpt-5":1,"claude-sonnet-4.5":1}[e]??1}trackUserMessage(e){let l=e||"",n=1*this.getModelRequestMultiplier(l);this.usageMetrics.totalPremiumRequests+=n,this.usageMetrics.modelMetrics.has(l)||this.usageMetrics.modelMetrics.set(l,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let r=this.usageMetrics.modelMetrics.get(l);r.requests.count+=1,r.requests.cost+=n,this.usageMetrics.currentModel=l}updateModelUsageMetrics(e,l,I){let n=e||"";if(this.usageMetrics.totalApiDurationMs+=l,I){this.usageMetrics.modelMetrics.has(n)||this.usageMetrics.modelMetrics.set(n,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let r=this.usageMetrics.modelMetrics.get(n);if(r.usage.inputTokens+=I.prompt_tokens||0,r.usage.outputTokens+=I.completion_tokens||0,I.prompt_tokens_details?.cached_tokens){r.usage.cacheReadTokens+=I.prompt_tokens_details.cached_tokens;let a=(I.prompt_tokens||0)-I.prompt_tokens_details.cached_tokens;r.usage.cacheWriteTokens+=Math.max(0,a)}}}updateCodeChangeMetrics(e,l){if(!e||!e.includes("diff --git"))return;let I=e.split(`
|
|
1960
|
+
`)}`});break}case"switch":Wl(!0);break}return}if(Re.status!=="LoggedIn"){Pa(e,{type:"error",text:"You must be logged in to send messages. Please run /login"});return}if(Me!==1){Pa(e,{type:"error",text:"This folder is not trusted. Please confirm folder trust to continue."});return}let Et=Date.now(),{expandedText:qt,mentions:$t,syntheticToolCalls:Vl,imageAttachments:mI}=await nTt(ke,Bn.storedMentions,Yr,T),vn=mI.length>0?{text:qt,images:mI}:qt;Pa(e,{type:"user",text:ke,mentions:$t,expandedText:qt,imageAttachments:mI}),ve(!0);try{let _l=await Zx(G,e,fd);await oTt(Et,vn,Vl,di.current,Re.authInfo,ys,$,ne,e,T,Ka,Yr,_l,r,Cs,u,D)}catch(_l){let dn=_l instanceof Error?_l.message:String(_l);Pa(e,{type:"error",text:`Execution failed: ${dn}`})}finally{Xi.current&&(ve(!1),eI.beep!==!1&&As.stdout.write(Tb.beep),setTimeout(()=>void rd(),1e3))}})()},[nt,ys,Cs,Re,Me,Bn.storedMentions]),Fb=(0,Lt.useCallback)(()=>{Vt||(Bn.isActive?ds.navigateUp():!X2.isNavigating()&&ec.length?Sn(Math.max(0,jn-1)):X2.navigateUp(tI))},[Vt,Bn.isActive,ds,ec.length,jn,tI]),ad=(0,Lt.useCallback)(()=>{Vt||(Bn.isActive?ds.navigateDown():!X2.isNavigating()&&ec.length?Sn(Math.min(ec.length-1,jn+1)):X2.navigateDown(tI))},[Vt,Bn.isActive,ds,ec.length,jn,tI]);Js((ke,Pe)=>{if(Pe.ctrl&&ke==="d"){qa();return}if(Pe.ctrl&&ke==="c"){if((nt||g1)&&Ep&&!Ep.signal.aborted){n9=!0,Ep.abort(),e.handleAbortedOperation(),pc();return}if(tI.text.length>0){tI.clear(),X2.resetNavigation(),pc();return}if(!Br){pc();return}qa()}if(Pe.escape){(nt||g1)&&Ep&&!Ep.signal.aborted&&(n9=!0,Ep.abort(),e.handleAbortedOperation());return}if(Pe.ctrl&&ke==="r"){Ve();return}if(Pe.ctrl&&ke==="o"){ie();return}if(!(nt||g1||Vt)){if(Pe.tab||Pe.return){if(Bn.isActive){ds.complete();return}return}!Pe.leftArrow&&!Pe.rightArrow&&!Pe.upArrow&&!Pe.downArrow&&X2.setNavigating(!1)}}),(0,Lt.useEffect)(()=>{Km(tI.text.startsWith("!"))},[tI.text]);let Ta=VN(()=>{if(Ot)return il?Lt.default.createElement(_Jt,{folderPath:Yr,onConfirm:_l=>{let dn=()=>{Ce(1),yl(!1)};_l==="yes"?dn():_l==="remember"?lae.addTrustedFolder(Yr).then(()=>{dn(),Pa(e,{type:"info",text:`Folder ${Yr} has been added to trusted folders.`})}).catch($a=>{Pa(e,{type:"error",text:`Failed to add folder to trusted list: ${$a instanceof Error?$a.message:String($a)}`})}):As.exit(0)}}):Lt.default.createElement(Lt.default.Fragment,null);if(dl)return Lt.default.createElement(KLt,{sessionId:e.getCurrentSessionId(),onClose:()=>{Qe(!1)}});if(wt)return Lt.default.createElement(CLt,{onLoginSuccess:(_l,dn)=>{VN(async()=>{await t.loginUser(_l,dn),Mt(!1),Pa(e,{type:"info",text:`Signed in successfully as ${zne({host:_l,login:dn})}! You can now use Copilot.`}),re({status:"LoggedIn",authInfo:{type:"user",host:_l,login:dn}})})},onLoginClose:()=>{Mt(!1)}});if(mt)return Lt.default.createElement(XLt,{initialMode:Dt,initialServerName:kI,onClose:()=>{Tt(!1),dI("list"),lI(void 0)},onConfigSaved:()=>{Vp().then(()=>{Pa(e,{type:"info",text:"MCP configuration saved successfully! Changes will take effect immediately."})}).catch(_l=>{Pa(e,{type:"error",text:`Failed to reload MCP config. Error: ${_l instanceof Error?_l.message:String(_l)}`})})}});if(cl)return Lt.default.createElement(fLt,{models:fd,cliModel:G,sessionManager:e,onClose:()=>{JI(!1)},onModelSelected:_l=>{fP(),e.setSelectedModel(_l),(async()=>{try{let $a={...await Mr.load()||{},model:_l};await Mr.write($a)}catch{}})(),Pa(e,{type:"info",text:`Model changed to: ${_l}. The new model will be used for the next conversation.`}),vs(_l)}});if(Vt)return Lt.default.createElement(c3t,{authManager:t,initialAuth:Re.status==="LoggedIn"?Re.authInfo:null,onSelect:_l=>{re({status:"LoggedIn",authInfo:_l.authInfo}),Wl(!1),Pa(e,{type:"info",text:`Switched to ${Mne(_l.authInfo)}`}),t.switchToAuth(_l)},onCancel:()=>Wl(!1),onError:_l=>{Pa(e,{type:"error",text:`Failed to switch user. Error: ${_l}`})}});if(sI){let _l=Io.length;return Lt.default.createElement($e,{flexDirection:"column"},_l>0&&Lt.default.createElement($e,{marginBottom:1},Lt.default.createElement(Fe,{color:h.FG},"Permission request (",_l," remaining)")),Lt.default.createElement(PLt,{request:sI.request,onConfirm:dn=>{sI.resolve(dn),BI(null)}}))}if(oe){let _l=nn.length;return Lt.default.createElement($e,{flexDirection:"column"},_l>0&&Lt.default.createElement($e,{marginBottom:1},Lt.default.createElement(Fe,{color:h.FG},"Path confirmation (",_l," remaining)")),Lt.default.createElement(JLt,{paths:oe.paths,onConfirm:dn=>{oe.resolve(dn),It(null)}}))}let ke=nt||g1,Pe="Enter @ to mention files or / for commands",Et=Wo,qt=ke||n9,$t=!X2.isNavigating()&&ec.length>0,Vl=Bn.isActive,mI=!Vl&&!$t,vn=VN(()=>n9?"cancelling":pm?"executing":"thinking");return Lt.default.createElement(Lt.default.Fragment,null,Re.status==="NotLoggedIn"&&Lt.default.createElement(Fe,{bold:!0,color:h.COPILOT},"Please use /login to sign in to use Copilot"),qt&&Lt.default.createElement($e,{paddingBottom:1},Lt.default.createElement(r3t,{mode:vn})),Lt.default.createElement($e,{flexDirection:"row",columnGap:1},Lt.default.createElement($e,{flexGrow:1},Lt.default.createElement(Fe,null,Jd),rI&&Lt.default.createElement(Fe,{color:h.MUTED},rI)),Lt.default.createElement(Fe,{color:h.MUTED},Bc),Lt.default.createElement(xJt,{metrics:ye})),Lt.default.createElement($Jt,{terminalWidth:B.columns-rTt*2,onSubmit:Yn,textCursorLocation:tI,placeholder:Pe,inlineSuggestion:Et,onTabCompletion:Rs,disableEnterSubmit:ke||n9||Bn.isActive,onUpArrow:Fb,onDownArrow:ad}),$t&&Lt.default.createElement($e,{paddingBottom:1},Lt.default.createElement(n3t,{options:ec,selectedIndex:jn,maxRows:10,showScrollHints:!0})),Vl&&Lt.default.createElement($e,{paddingBottom:1},Lt.default.createElement(JJt,{files:Bn.suggestions.map(_l=>_l.relativePath),selectedIndex:Bn.selectedIndex,maxRows:10,showScrollHints:!0,query:Bn.query})),Lt.default.createElement(MJt,{indexingIndicator:Se}),mI&&Lt.default.createElement(Ikt,{quotaSnapshots:U,isRecentTimelineExpanded:P!==null,isAllTimelineExpanded:Ge,showControlCMessage:Br,inShellExecMode:CG}))}),Qb=As.platform==="win32",tc=Lt.default.createElement($e,{key:"header",flexDirection:"column"},Lt.default.createElement($e,{flexDirection:"column"},Lt.default.createElement(kJt,{animationComplete:()=>vl(!0),completed:il,bannerConfig:n?"always":eI.banner,loggerOverride:T,version:V.version}),Lt.default.createElement($e,{flexDirection:"row",paddingX:1},Lt.default.createElement(Fe,{color:h.MUTED},"Version ",V.version),V.buildMetadata&&Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(Fe,{color:h.MUTED}," \xB7 "),Lt.default.createElement(Fe,{color:h.MUTED},"Commit ",V.buildMetadata.gitCommit)))),Lt.default.createElement($e,{flexDirection:"column",padding:1,width:80,gap:1},Lt.default.createElement(Fe,{color:h.MUTED,wrap:"wrap"},"Copilot can write, test and debug code right from your terminal. Describe a task to get started or enter ? for help. Copilot uses AI, check for mistakes."),Qb&&Lt.default.createElement(Fe,{color:h.WARNING},"Windows support is experimental. If you encounter issues, consider running Copilot inside Windows Subsystem for Linux (WSL). Please report any issues using /feedback."))),hm=te.filter(ke=>!("isHidden"in ke&&ke.isHidden)),kd=hm.findIndex(ke=>ke.type==="tool_call_requested");kd===-1&&(kd=hm.length);let ce=hm.slice(0,kd),de=hm.slice(kd),xe=ce.map(ke=>Lt.default.createElement(_Ae,{key:ke.id,entry:ke,expand:se(ke),renderAsMarkdown:eI.render_markdown})),Ke=de.map(ke=>Lt.default.createElement(_Ae,{key:ke.id,entry:ke,expand:se(ke),renderAsMarkdown:eI.render_markdown})),dt=il&&y;return Lt.default.createElement(KSe,{mode:"interactive"},e.isWaitingForSessionPicker()?Lt.default.createElement($e,{flexDirection:"column",paddingX:1},Lt.default.createElement(I3t,{onSessionSelected:ke=>{(async()=>{try{await e.selectSession(ke)}catch(Pe){e.addTimelineEntry({type:"error",text:`Failed to resume session: ${Pe instanceof Error?Pe.message:String(Pe)}`})}})()},onCancel:()=>{(async()=>{try{As.exit(0)}catch(ke){e.addTimelineEntry({type:"error",text:`Failed to restart with new session: ${ke instanceof Error?ke.message:String(ke)}`})}})()}})):Lt.default.createElement($e,{flexDirection:"column"},dt&&Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(Noe,{key:Q,items:[tc,...xe]},ke=>ke),Ke),!dt&&tc,!gI&&Lt.default.createElement($e,{flexDirection:"column",paddingX:rTt},jl?Lt.default.createElement(SJt,{onCancel:()=>Dn(!1)}):Ta),gI&&Lt.default.createElement($e,{flexDirection:"column",paddingX:1,rowGap:1},gI.usage&&Lt.default.createElement(Fe,{dimColor:!0},gI.usage),Lt.default.createElement(o3t,{packageName:V.name,checkUpdateResponse:ln}),gI.type==="routine"?Lt.default.createElement(Fe,{color:h.ACCENT,bold:!0},"Shutting down..."):Lt.default.createElement(Fe,{color:h.ERROR,bold:!0},`Shutting down: ${gI.reason}`))))};function iTt(t,e=!1){let l=Lt.default.createElement(cAe,{logger:new Ch,children:Lt.default.createElement(KSe,{mode:"non-interactive",children:Lt.default.createElement(_Ae,{entry:t,expand:e})})}),{lastFrame:I}=J$e(l),n=I();return n?n.trim():""}var dTt=KcI;c();function qcI(t){return`session_${t.sessionId}_${t.startTime.getTime()}`}function mTt(t){let e=/^session_(.+)_(\d+)\.json$/,l=t.match(e);if(!l)return null;let[,I,n]=l;return{sessionId:I,startTime:new Date(parseInt(n,10))}}var _Q=class t{currentSession;onTimelineEntriesChangeCallback=null;debounceSave=null;logger;needsSessionPicker=!1;autoSaveEnabled=!1;usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map};static async create(e){let l=new t;switch(e.kind){case"new":break;case"resume-last":await l.resumeLastSession();break;case"resume":await l.resumeSpecificSession(e.sessionId);break;case"resume-with-picker":l.needsSessionPicker=!0;break;default:{let I=e;throw new Error(`unexpected session kind: ${JSON.stringify(I)}`)}}return l}static async hasMultipleSessions(){try{return(await m1.directoryFiles()).length>1}catch{return!1}}constructor(){this.currentSession=this.generateSession(),this.logger=new Ch}setLogger(e){this.logger=e}getLogger(){return this.logger}isWaitingForSessionPicker(){return this.needsSessionPicker}async selectSession(e){this.needsSessionPicker=!1,await this.resumeSpecificSession(e)}setOnTimelineEntriesChangeCallback(e){this.onTimelineEntriesChangeCallback=e,this.notifyTimelineEntriesChange()}notifyTimelineEntriesChange(){this.onTimelineEntriesChangeCallback?.([...this.currentSession.timeline])}enableAutoSave(){this.autoSaveEnabled=!0}async forceSave(){await this.saveHistorySession(this.currentSession)}scheduleSave(){this.debounceSave&&clearTimeout(this.debounceSave);let e=this.currentSession;this.debounceSave=setTimeout(()=>{this.autoSaveEnabled&&this.saveHistorySession(e)},100)}getTimelineEntries(){return[...this.currentSession.timeline]}async loadHistorySession(e){try{let l=await m1.load(e);if(!l)return;let I={...l,startTime:new Date(l.startTime)};this.currentSession=I;for(let n of this.currentSession.timeline)n.timestamp=new Date(n.timestamp);this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.enableAutoSave(),this.notifyTimelineEntriesChange()}catch(l){throw this.logger.error(`Error loading history session: ${l}`),l}}async saveHistorySession(e){let l=qcI(e);await m1.write(e,l)}getCurrentSessionId(){return this.currentSession?.sessionId}getCurrentSessionStartTime(){return this.currentSession?.startTime}getSelectedModel(){return this.currentSession?.selectedModel}getCurrentModel(e){return e||this.currentSession?.selectedModel||this.usageMetrics.currentModel||""}setSelectedModel(e){this.currentSession.selectedModel=e,this.scheduleSave()}addTimelineEntry(e){try{this.currentSession.timeline.push({id:tA(),timestamp:new Date,...e}),this.scheduleSave(),this.notifyTimelineEntriesChange()}catch(l){this.logger.error(`Error adding timeline entry: ${l}`)}}clearHistory(){this.currentSession.chatMessages=[],this.currentSession.timeline=[],this.scheduleSave(),this.notifyTimelineEntriesChange()}addChatMessage(e){this.currentSession.chatMessages.push(e),this.scheduleSave()}getChatContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role!=="system")}getSystemContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role==="system")}handleAbortedOperation(){this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.scheduleSave()}completeOrphanedToolCalls(e){if(e.length===0)return e;let l=[];for(let r=e.length-1;r>=0;r--){let a=e[r];if(a.role==="assistant"&&"tool_calls"in a&&a.tool_calls&&a.tool_calls.length>0)for(let s of a.tool_calls)l.push(s.id);else break}if(l.length===0)return e;let I="The execution of this tool, or a previous tool was interrupted.";this.logger.info(`Completing ${l.length} orphaned tool calls.`);let n=l.map(r=>({role:"tool",tool_call_id:r,content:I}));for(let r of l)this.updateToolCallTimelineEntryResult({callId:r,resultType:"rejected",log:I});return[...e,...n]}updateToolCallTimelineEntryResult(e){let l=this.currentSession.timeline.findLastIndex(r=>r.type==="tool_call_requested"&&r.callId===e.callId);if(l===-1){this.logger.error(`Pending tool call with ID ${e.callId} not found`);return}let I=this.currentSession.timeline[l];if(I.type==="tool_call_requested"&&I.name==="str_replace_editor"&&e.log){let s=I.arguments?.path;this.updateCodeChangeMetrics(e.log,s)}let n=this.currentSession.timeline[l];this.currentSession.timeline[l]={type:"tool_call_completed",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,result:{type:e.resultType,log:e.log,markdown:e.markdown},isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.scheduleSave(),this.notifyTimelineEntriesChange()}updateToolCallTimelineEntryPartialOutput(e,l){let I=this.currentSession.timeline.findLastIndex(r=>r.type==="tool_call_requested"&&r.callId===e);if(I===-1){this.logger.error(`Pending tool call with ID ${e} not found`);return}let n=this.currentSession.timeline[I];this.currentSession.timeline[I]={type:"tool_call_requested",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,partialOutput:l,isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.notifyTimelineEntriesChange()}async resumeSpecificSession(e){let l=await m1.directoryFiles();if(l.length===0)throw new Error(`Session not found: ${e}`);let I=null,n=[];for(let r of l){let a=mTt(r);if(a&&a.sessionId===e){I=r;break}}if(!I){for(let r of l){let a=mTt(r);a&&a.sessionId.startsWith(e)&&n.push({file:r,parsed:a})}n.length>0&&(n.sort((r,a)=>a.parsed.startTime.getTime()-r.parsed.startTime.getTime()),I=n[0].file)}if(!I)throw new Error(`Session not found: ${e}`);try{await this.loadHistorySession(I)}catch(r){throw new Error(`Failed to load session ${e}: ${r}`)}}async resumeLastSession(){let e=await m1.directoryFiles();if(e.length===0)throw new Error("No sessions found");let l=e[0];try{await this.loadHistorySession(l)}catch(I){throw new Error(`Failed to resume last session: ${I}`)}}generateSession(){return this.resetUsageMetrics(),{sessionId:this.generateSessionId(),startTime:new Date,chatMessages:[],timeline:[]}}generateSessionId(){return tA()}getUsageMetrics(){return this.usageMetrics}resetUsageMetrics(){this.usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map}}getModelRequestMultiplier(e){return{"claude-sonnet-4":1,"gpt-5":1,"claude-sonnet-4.5":1}[e]??1}trackUserMessage(e){let l=e||"",n=1*this.getModelRequestMultiplier(l);this.usageMetrics.totalPremiumRequests+=n,this.usageMetrics.modelMetrics.has(l)||this.usageMetrics.modelMetrics.set(l,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let r=this.usageMetrics.modelMetrics.get(l);r.requests.count+=1,r.requests.cost+=n,this.usageMetrics.currentModel=l}updateModelUsageMetrics(e,l,I){let n=e||"";if(this.usageMetrics.totalApiDurationMs+=l,I){this.usageMetrics.modelMetrics.has(n)||this.usageMetrics.modelMetrics.set(n,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let r=this.usageMetrics.modelMetrics.get(n);if(r.usage.inputTokens+=I.prompt_tokens||0,r.usage.outputTokens+=I.completion_tokens||0,I.prompt_tokens_details?.cached_tokens){r.usage.cacheReadTokens+=I.prompt_tokens_details.cached_tokens;let a=(I.prompt_tokens||0)-I.prompt_tokens_details.cached_tokens;r.usage.cacheWriteTokens+=Math.max(0,a)}}}updateCodeChangeMetrics(e,l){if(!e||!e.includes("diff --git"))return;let I=e.split(`
|
|
1961
1961
|
`),n=0,r=0;for(let a of I)a.startsWith("+")&&!a.startsWith("+++")?n++:a.startsWith("-")&&!a.startsWith("---")&&r++;this.usageMetrics.codeChanges.linesAdded+=n,this.usageMetrics.codeChanges.linesRemoved+=r,l&&this.usageMetrics.codeChanges.filesModified.add(l)}formatTokenCount(e){return e===0?"0":e<1e3?e.toString():e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}m`}formatDuration(e){let l=Math.floor(e/1e3),I=Math.floor(l/60),n=Math.floor(I/60);if(n>0){let r=I%60,a=e%6e4/1e3;return`${n}h ${r}m ${a.toFixed(1)}s`}else if(I>0){let r=e%6e4/1e3;return`${I}m ${r.toFixed(1)}s`}else return`${(e/1e3).toFixed(1)}s`}getFormattedUsageOutput(){let e=this.usageMetrics,l=this.formatDuration(Date.now()-e.sessionStartTime),I=this.formatDuration(e.totalApiDurationMs),n=Math.round(e.totalPremiumRequests),a=[`Total usage est: ${n} ${n===1?"Premium request":"Premium requests"}`,`Total duration (API): ${I}`,`Total duration (wall): ${l}`,`Total code changes: ${e.codeChanges.linesAdded} lines added, ${e.codeChanges.linesRemoved} lines removed`];if(e.modelMetrics.size>0){a.push("Usage by model:");for(let[s,o]of e.modelMetrics){let{requests:d,usage:G}=o,u=this.formatTokenCount(G.inputTokens),h=this.formatTokenCount(G.outputTokens),W=this.formatTokenCount(G.cacheReadTokens),y=this.formatTokenCount(G.cacheWriteTokens),R=Math.round(d.cost),V=R===1?"Premium request":"Premium requests",f=(s||"(unknown)").padEnd(20);a.push(` ${f} ${u} input, ${h} output, ${W} cache read, ${y} cache write (Est. ${R} ${V})`)}}return a.join(`
|
|
1962
1962
|
`)}};c();var s0e=class{constructor(e){this.logger=e;this.listenToErrors()}errorHandlers=[];formatError(e,l){if(l instanceof Error)return`${e}: ${l.message}
|
|
1963
1963
|
${l.stack}`;if(typeof l=="object"&&l!==null)try{return`${e}: ${JSON.stringify(l)}`}catch{return`${e}: [object with circular reference]`}else return`${e}: ${String(l)}`}addErrorHandler(e){this.errorHandlers.push(e)}listenToErrors(){process.on("uncaughtException",e=>{this.handleError("Uncaught Exception",e)}),process.on("unhandledRejection",e=>{this.handleError("Unhandled Rejection",e)})}handleError(e,l){this.logger.error(this.formatError(e,l)),this.errorHandlers.length===0&&(process.stderr.write(this.formatError(e,l)+`
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@github/copilot",
|
|
3
3
|
"description": "GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal.",
|
|
4
|
-
"version": "0.0.334-
|
|
4
|
+
"version": "0.0.334-9",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"sdk/**/*"
|
|
34
34
|
],
|
|
35
35
|
"buildMetadata": {
|
|
36
|
-
"gitCommit": "
|
|
36
|
+
"gitCommit": "a9634b4"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"node-pty": "npm:@devm33/node-pty@^1.0.8",
|