@github/copilot 0.0.351-15 → 0.0.351-16
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 +6 -3
- package/package.json +2 -2
- package/sdk/index.js +1 -0
package/index.js
CHANGED
|
@@ -1673,6 +1673,7 @@ You *must* avoid doing any of these things you cannot or must not do, and also *
|
|
|
1673
1673
|
* Clean up temporary files at end of task
|
|
1674
1674
|
* Use view/edit for existing files (not create - avoid data loss)
|
|
1675
1675
|
* Ask for guidance if uncertain
|
|
1676
|
+
* Do not create markdown files for planning, notes, or tracking\u2014work in memory instead. Only create a markdown file when the user explicitly asks for that specific file by name or path.
|
|
1676
1677
|
</tips_and_tricks>
|
|
1677
1678
|
|
|
1678
1679
|
${Mon(n,r,a,I,d,s,c)}
|
|
@@ -2067,7 +2068,9 @@ You can restore your previous key bindings from ${I}`:"";return{state:"failed",m
|
|
|
2067
2068
|
Path: ${a}${o}
|
|
2068
2069
|
Error: ${s}`}}}var W4n=N4n(Z4n),V7e={vscode:{appName:"Code",terminalName:"VS Code"},"vscode-insiders":{appName:"Code - Insiders",terminalName:"VS Code (Insiders)"},cursor:{appName:"Cursor",terminalName:"Cursor"},windsurf:{appName:"Windsurf",terminalName:"Windsurf"}};async function Hjt(t){if(Y7e.platform()==="linux"&&process.env.WSL_DISTRO_NAME)return"wsl";let e=(process.env.VSCODE_GIT_ASKPASS_MAIN||"").toLowerCase();if(process.env.CURSOR_TRACE_ID||e.includes("cursor"))return"cursor";if(e.includes("windsurf"))return"windsurf";if(e.includes("code"))return e.includes("insiders")?"vscode-insiders":"vscode";if(process.env.TERM_PROGRAM==="vscode"||process.env.VSCODE_GIT_IPC_HANDLE)return"vscode";try{let n=Y7e.platform()==="win32"?'(Get-Process -Id (Get-CimInstance Win32_Process -Filter "ProcessId=$PID").ParentProcessId).Path':"ps -o comm= -p $PPID",{stdout:r}=await W4n(n),a=r.trim().toLowerCase();if(a.includes("windsurf"))return"windsurf";if(a.includes("cursor"))return"cursor";if(a.includes("code"))return a.includes("insiders")?"vscode-insiders":"vscode"}catch(n){t.debug(`Failed to detect parent process: ${n}`)}return null}async function Xjt(t){if(aQe())return{state:"not-needed",message:"Your terminal already has multiline support with Shift+Enter and Ctrl+Enter."};let e=await Hjt(t);if(!e)return{state:"failed",message:"No supported terminal detected. `/terminal-setup` is supported only in VS Code, Cursor and Windsurf."};switch(e){case"vscode":case"vscode-insiders":case"cursor":case"windsurf":{let l=V7e[e];return vjt(t,l.terminalName,l.appName)}case"wsl":return{state:"failed",message:"WSL terminal detected.\n\nIf you're running WSL from VS Code, Windsurf or Cursor, please switch to a supported terminal within the IDE (e.g. PowerShell or Command Prompt) and run `/terminal-setup` again."};default:return{state:"failed",message:`Terminal "${e}" not supported. \`/terminal-setup\` is supported only in VS Code, Cursor and Windsurf.`}}}async function kjt(){let t=new xd,e=await Hjt(t);if(!e||!Object.keys(V7e).includes(e))return null;try{if((await Sr.load())?.asked_setup_terminals?.includes(e))return null}catch{}switch(e){case"vscode":case"vscode-insiders":case"cursor":case"windsurf":{let l=V7e[e];return(await Cjt(t,l.terminalName,l.appName)).state==="succeeded"?{terminal:e,terminalName:l.terminalName}:null}default:return null}}async function Ljt(t,e){let l=await _c(async()=>{try{return await Sr.load()??{}}catch{return{}}}),n=l.asked_setup_terminals??[];if(!n.includes(e)){n.push(e),l.asked_setup_terminals=n;try{await Sr.writeKey("asked_setup_terminals",n)}catch(r){t.warning(`Failed to mark terminal ${e} as "already asked to set up": ${r}`)}}}function yme(t,e){let l=e.trim();if(!l.startsWith("/"))return[];let n=l.split(" ")[0];return t.filter(r=>r.name.startsWith(n)?!0:r.aliases?r.aliases.some(a=>a.startsWith(n)):!1)}function Tjt(t,e){let l=" ".repeat(e),n=t.reduce((r,a)=>{let I=a.aliases&&a.aliases.length>0?`, ${a.aliases.join(", ")}`:"";return Math.max(r,a.name.length+I.length+(a.args?a.args.length+1:0))},0);return t.map(r=>{let a=r.aliases&&r.aliases.length>0?`, ${r.aliases.join(", ")}`:"",I=(r.args?`${r.name}${a} ${r.args}`:`${r.name}${a}`).padEnd(n);return`${l}${I} ${r.help}`}).join(`
|
|
2069
2070
|
`)}var Ojt={kind:"noop"};function Ujt(t){return t==="~"?Jjt():t.startsWith("~/")?y4n.join(Jjt(),t.slice(2)):t}var R4n={name:"/add-dir",args:"<directory>",help:"Add a directory to the allowed list for file access",execute:async(t,e)=>{if(e.length<1)return{kind:"add-timeline-entry",entry:{type:"error",text:`Usage: /add-dir <directory>
|
|
2070
|
-
Example: /add-dir /home/user/projects`}};let l=e.join(" "),n=Ujt(l);try{return await t.permissions.addAllowedDirectory(n),{kind:"add-timeline-entry",entry:{type:"info",text:`Added directory to allowed list: ${n}`}}}catch(r){return{kind:"add-timeline-entry",entry:{type:"error",text:`Failed to add directory: ${r instanceof Error?r.message:String(r)}`}}}}},Y4n={name:"/agent",help:"Browse and select from available agents (if any)",execute:async(t,e)=>t.
|
|
2071
|
+
Example: /add-dir /home/user/projects`}};let l=e.join(" "),n=Ujt(l);try{return await t.permissions.addAllowedDirectory(n),{kind:"add-timeline-entry",entry:{type:"info",text:`Added directory to allowed list: ${n}`}}}catch(r){return{kind:"add-timeline-entry",entry:{type:"error",text:`Failed to add directory: ${r instanceof Error?r.message:String(r)}`}}}}},Y4n={name:"/agent",help:"Browse and select from available agents (if any)",execute:async(t,e)=>t.customAgents.available.length===0?t.customAgents.warnings.length>0?{kind:"add-timeline-entry",entry:{type:"error",text:`No available custom agents:
|
|
2072
|
+
${t.customAgents.warnings.map(n=>`\u2022 ${n}`).join(`
|
|
2073
|
+
`)}`}}:{kind:"add-timeline-entry",entry:{type:"info",text:"No available custom agents."}}:{kind:"show-dialog",dialog:{kind:"custom-agent-picker"}}},V4n={name:"/clear",help:"Clear the conversation history",execute:async(t,e)=>(await t.session.clearHistory(),t.ui.clear(),Ojt)},w4n={name:"/cwd",args:"[directory]",help:"Change working directory or show current directory",execute:async(t,e)=>{if(e.length===0)return{kind:"add-timeline-entry",entry:{type:"info",text:`Current working directory: ${t.process.cwd}`}};let l=e.join(" "),n=Ujt(l),r=E4n(n);try{return await t.process.chdir(r),{kind:"add-timeline-entry",entry:{type:"info",text:`Changed working directory to: ${r}`}}}catch(a){return{kind:"add-timeline-entry",entry:{type:"error",text:`Failed to change directory: ${a instanceof Error?a.message:String(a)}`}}}}},Q4n={name:"/exit",aliases:["/quit"],help:"Exit the CLI",execute:async(t,e)=>({kind:"exit"})},F4n={name:"/feedback",help:"Provide feedback about the CLI",execute:async(t,e)=>({kind:"show-dialog",dialog:{kind:"feedback"}})},C4n={name:"/help",help:"Show help for interactive commands",execute:async(t,e)=>({kind:"add-timeline-entry",entry:{type:"info",text:[mPt(`
|
|
2071
2074
|
Global shortcuts:
|
|
2072
2075
|
@ - mention files, include contents in the current context
|
|
2073
2076
|
Esc - cancel the current operation
|
|
@@ -2467,7 +2470,7 @@ Run `+Sl.cyan("{updateCommand}")+" to update",a=e.message||r;e.boxenOptions??={p
|
|
|
2467
2470
|
`||V[O-1]===" "){X=O;break}}else if(T===" "||T===`
|
|
2468
2471
|
`||T===" ")break}if(X===-1)return{isAtMention:!1,atPosition:-1,query:""};let S=V.slice(X+1,v);return S.includes(" ")||S.includes(`
|
|
2469
2472
|
`)||S.includes(" ")?{isAtMention:!1,atPosition:-1,query:""}:{isAtMention:!0,atPosition:X,query:S}},[t.text,t.cursorPosition]);(0,cJ.useEffect)(()=>{if(!d.isAtMention){r([]),I(0);return}let V=!1,v=async()=>{try{let S=await c.search(d.query),O=[...S];d.query===""&&l&&(O=[...l.getDirectories().map(x=>({path:x,relativePath:`[DIR] ${x}`,score:1})),...S]),V||(r(O),I(0))}catch{V||(r([]),I(0))}},X=setTimeout(()=>{v()},200);return()=>{V=!0,clearTimeout(X)}},[d.query,d.isAtMention,c]);let m=()=>{n.length!==0&&I(V=>V>0?V-1:n.length-1)},G=()=>{n.length!==0&&I(V=>V<n.length-1?V+1:0)},p=()=>{if(!d.isAtMention||n.length===0)return null;let V=n[a];if(!V)return null;let v=`@${V.relativePath}`,X=`${v} `,{text:S,cursorPosition:O}=t,T=S.slice(0,d.atPosition),P=S.slice(O),x=T+X+P,D={displayText:v,fullPath:V.path,type:V.relativePath.startsWith("[DIR]")?"directory":"file",startIndex:d.atPosition};return o(ae=>{let Ge=new Map(ae);return Ge.set(D.startIndex,D),Ge}),t.setText(x),t.setCursorPosition(d.atPosition+X.length),V.relativePath},A=()=>{r([]),I(0)},Z=()=>{o(new Map)};return[{isActive:d.isAtMention&&n.length>0,query:d.query,suggestions:n,selectedIndex:a,atPosition:d.atPosition,storedMentions:s},{navigateUp:m,navigateDown:G,complete:p,reset:A,clearStoredMentions:Z}]}var Gve=$e($t(),1),IGl=$e(nBe(),1);import{readdir as n7n,readFile as r7n}from"node:fs/promises";import a7n,{join as aGl}from"node:path";function lU(t,e){if(e instanceof Error)return`${t}: ${e.message}`;if(typeof e=="object"&&e!==null)try{return`${t}: ${JSON.stringify(e)}`}catch{return`${t}: [object with circular reference]`}else return`${t}: ${String(e)}`}var bve=$e($t(),1);var eGl=$e($bl(),1);function Rnt(t){try{let e=(0,eGl.default)(t.FetchURL);return e.source!=="github.com"||!e.owner||!e.name?null:{owner:e.owner,name:e.name,host:"github.com"}}catch{return null}}async function mve(t){let e=await YPt(t);if(e.length===0)return null;if(e.length===1)return Rnt(e[0]);let l=e.find(n=>n.Name==="origin");return Rnt(l||e[0])}function tGl(t){let[e,l]=(0,bve.useState)(null);return(0,bve.useEffect)(()=>{(async()=>{let n=await Ynt(t);l(r=>!r||r.kind!==n.kind||r.path!==n.path||n.kind==="git"&&r.kind==="git"&&(r.repo?.owner!==n.repo?.owner||r.repo?.name!==n.repo?.name)?n:r)})()},[t]),e}async function Ynt(t){let e=await uY(t);if(!e.found)return{kind:"plain",path:t};try{let l=await mve(e.gitRoot);return{kind:"git",path:e.gitRoot,repo:l}}catch{return{kind:"git",path:e.gitRoot,repo:null}}}function sGl(t,e,l,n,r,a){let[I,s]=(0,Gve.useState)({selected:null,available:[],warnings:[]}),o=tGl(a);return(0,Gve.useEffect)(()=>{if(!t)return;(async()=>{let{agents:d,warnings:m}=await Vnt(e,l,n,a7n.join(r,"agents"),o);s({selected:null,available:d,warnings:m})})()},[t,e,l,n,r,o]),{customAgents:I,selectCustomAgent:async c=>{if(!t)throw new Error("attempted to use disabled feature flagged feature");let d=I.available.find(G=>G.id===c);if(!d)throw new Error(`attempted to select unknown custom agent: ${c} from ${I.available.map(G=>G.id).join(", ")}`);let m=await d.prompt().then(G=>({kind:"success",prompt:G}),G=>({kind:"error",message:lU("loading custom agent prompt",G)}));return m.kind==="error"?{kind:"error",message:m.message}:(s(G=>({...G,selected:{id:d.id,displayName:d.displayName,prompt:m.prompt,mcpServers:d.mcpServers}})),{kind:"success"})}}}function lGl(t){let e=new Set,l=[];for(let n of t)e.has(n.id)||(e.add(n.id),l.push(n));return l}async function Vnt(t,e,l,n,r){let a=await nGl(n);if(r===null)return{agents:a.agents,warnings:a.warnings};let I=await nGl(aGl(r.path,".github","agents")),s=lGl([...a.agents,...I.agents]),o=[...a.warnings,...I.warnings];if(r.kind!=="git")return{agents:s,warnings:o};if(!r.repo)return{agents:s,warnings:[...o,"could not load remote agents, no github.com remote found"]};if(!l)return{agents:s,warnings:[...o,O7(r.repo,"no authentication available")]};let c=await I7n(t,e,l,r.repo);return{agents:lGl([...s,...c.agents]),warnings:[...o,...c.warnings]}}function O7(t,e){return`could not load remote agents for ${t.owner}/${t.name}: ${e}`}async function I7n(t,e,l,n){let r=iY(l,{onHMACAuthInfo:()=>Mte,onEnvAuthInfo:A=>A.host,onGhCliAuthInfo:A=>A.host,onUserAuthInfo:A=>A.host,onApiKeyAuthInfo:A=>A.host}),{host:a}=new URL(r);if(a!=="github.com")return{agents:[],warnings:[O7(n,"auth info does not target github.com")]};let I=await Iy(l);if(!I)return{agents:[],warnings:[O7(n,"no usable token for accessing repo contents found")]};let s=await oGl(()=>E0(r,I,t),A=>lU("fetching copilot URL",A));if(s.kind==="error")return{agents:[],warnings:[O7(n,s.message)]};let o=`${s.value}/agents/swe/custom-agents/${n.owner}/${n.name}?exclude_invalid_config=true`,c={Authorization:`Bearer ${I}`},d=await ZC(o,{method:"GET",headers:c},t);if(!d.ok)return t.warning(`Failed to load custom agents for ${n.owner}/${n.name}: ${await d.text()}`),{agents:[],warnings:[O7(n,`server returned ${d.status}: ${d.statusText}`)]};let m=await d.json(),p=UI.object({agents:UI.array(cGl)}).safeParse(m);return p.success?{agents:p.data.agents.map(A=>({id:A.name,displayName:A.display_name,description:A.description,tools:A.tools,prompt:async()=>{let Z=await u7n({logger:t,integrationId:e,sweAgentsEndpoint:`${s.value}/agents/swe`,token:I,repoOwner:A.repo_owner,repoName:A.repo_name,customAgentName:A.name});if(!Z)throw new Error(`Failed to load prompt for agent ${A.name}`);return Z.prompt},mcpServers:{}})),warnings:[]}:{agents:[],warnings:[O7(n,lU("parsing http response into schema",p.error))]}}async function nGl(t){let e=await n7n(t,{withFileTypes:!0}).then(r=>({kind:"success",dirEntries:r})).catch(r=>r.code==="ENOENT"?{kind:"success",dirEntries:[]}:{kind:"error",message:lU(t,r)});if(e.kind==="error")return{agents:[],warnings:[]};let l=[],n=[];for(let r of e.dirEntries)if(r.isFile()&&r.name.endsWith(".md")){let a=aGl(t,r.name),I=r.name.slice(0,-3),s=await rGl(a);if(s.kind==="error"){n.push(s.message);continue}l.push({id:I,displayName:s.agent.name,description:s.agent.description,tools:s.agent.tools||["*"],prompt:async()=>{let o=await rGl(a);if(o.kind==="error")throw new Error(o.message);return await o.agent.prompt()},mcpServers:s.agent.mcpServers||{}})}return{agents:l,warnings:n}}async function rGl(t){let e=await oGl(()=>r7n(t,"utf-8"),n=>lU(t,n));if(e.kind==="error")return{kind:"error",message:e.message};let l=s7n(e.value);return l.kind==="error"?{kind:"error",message:`${t}: ${l.message}`}:{kind:"success",agent:l.agent}}var s7n=t=>{let e=UI.object({name:UI.string(),description:UI.string(),tools:UI.array(UI.string()).optional(),"mcp-servers":iGl}),l=/^---\s*\n([\s\S]*?)\n---\s*\n?/,n=t.match(l);if(!n)return{kind:"error",message:"custom agent markdown frontmatter is malformed"};let r=n[1];try{let a=(0,IGl.parse)(r),I=e.safeParse(a);if(!I.success)return{kind:"error",message:o7n(I.error)};let s=t.slice(n[0].length);return{kind:"success",agent:{name:I.data.name,description:I.data.description,tools:I.data.tools||["*"],prompt:()=>Promise.resolve(s),mcpServers:I.data["mcp-servers"]||void 0}}}catch(a){return{kind:"error",message:lU("failed to parse front matter",a)}}};function o7n(t){let e=(l,n="")=>{let r=l.path.join(".")||"(root)",a=[];return l.code==="invalid_union"&&"unionErrors"in l?(a.push(`${n}${r}: ${l.message}`),l.unionErrors.forEach((s,o)=>{a.push(`${n} Option ${o+1}:`),s.issues.forEach(c=>{a.push(...e(c,n+" "))})})):a.push(`${n}${r}: ${l.message}`),a};return t.issues.flatMap(l=>e(l)).join(`
|
|
2470
|
-
`)}async function oGl(t,e){try{return{kind:"success",value:await t()}}catch(l){return{kind:"error",message:e(l)}}}var i7n=UI.object({command:UI.string(),args:UI.array(UI.string()),env:UI.record(UI.string(),UI.string()).optional(),tools:UI.array(UI.string()),type:UI.enum(["local","stdio"]).optional()}),c7n=UI.object({url:UI.string(),headers:UI.record(UI.string(),UI.string()).optional(),tools:UI.array(UI.string()),type:UI.enum(["http","sse"])}),iGl=UI.record(UI.string(),UI.union([i7n,c7n])).optional().nullable(),cGl=UI.object({name:UI.string(),repo_owner:UI.string(),repo_name:UI.string(),display_name:UI.string(),description:UI.string(),tools:UI.array(UI.string()),version:UI.string(),mcp_servers:iGl}),d7n=cGl.extend({prompt:UI.string()});async function u7n(t){t.logger.info(`Reading custom agent "${t.customAgentName}" from ${t.repoOwner}/${t.repoName}`);try{let e={"Copilot-Integration-Id":t.integrationId,Authorization:`Bearer ${t.token}`,"X-GitHub-Job-Nonce":t.jobNonce??""},l=await ZC(`${t.sweAgentsEndpoint}/custom-agents/${t.repoOwner}/${t.repoName}/${t.customAgentName}`,{method:"GET",headers:e},t.logger,"get custom agent config");if(!l.ok){if(l.status===404)return null;throw new Error(`Failed to get custom agent config: ${l.status} ${l.statusText}`)}let n=await l.json();return d7n.parse(n)}catch(e){let l=e,n=l?.requestId||"unknown";throw t.logger.error(`Failed to get custom agent config (request ID: ${n}): ${l}`),l}}var uy=$e($t(),1);function dGl(t){let{cliModel:e,session:l,currentWorkingDirectory:n,customAgentName:r,stdoutColumns:a,models:I}=t,[s,o]=(0,uy.useState)({gitRoot:"",found:!1}),[c,d]=(0,uy.useState)(null);(0,uy.useEffect)(()=>{(async()=>{d(null);let V=await uY(n);o(V)})()},[n]);let m=(0,uy.useCallback)(async()=>{if(!s.found){d(null);return}let R=await wPt(s.gitRoot);if(!R){d(null);return}let V=await VPt(s.gitRoot);d(v=>v?.branch===R&&v?.hasChanges===V?v:{branch:R,hasChanges:V})},[s]),G=(0,uy.useMemo)(()=>CEe(n),[n]),[p,A]=(0,uy.useState)("");(0,uy.useEffect)(()=>{(async()=>{if(!I||I.type!=="success")return;let V=await iO(e,l,I.list);V&&A(v=>v===V?v:V)})()},[e,l,I]);let Z=(0,uy.useMemo)(()=>{if(!c||!c.branch)return null;let R=a||80,V=p.length,v=r?.length||0,X=G.length,S=c.hasChanges?6:5,T=V+X+S+4+v,x=Math.max(8,R-T)-3;return`[\u2387 ${c.branch.length>x?c.branch.substring(0,x)+"...":c.branch}${c.hasChanges?"*":""}]`},[c,a,G,p]),W=(0,uy.useMemo)(()=>{if(!p)return p;let R=I&&I.type==="success"?I.list:void 0,V=Qq(p,R);return`${p} (${V}x)`},[p,I]);return{displayCwd:G,gitBranchInfo:Z,selectedModel:p,selectedModelDisplay:W,setSelectedModel:A,updateGitStatus:m}}var fg=$e($t(),1),m7n=3*1e3;function uGl(){let[t,e]=(0,fg.useState)("idle"),[l,n]=(0,fg.useState)(0),[r,a]=(0,fg.useState)(0),[I,s]=(0,fg.useState)(!1),o=(0,fg.useRef)(null);(0,fg.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]);let c=(0,fg.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("indexing"),n(0),a(0),s(!0)},[]),d=(0,fg.useCallback)((A,Z)=>{e("completed"),n(A),a(Z),s(!0),o.current=setTimeout(()=>{s(!1),o.current=null},m7n)},[]),m=(0,fg.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("idle"),n(0),a(0),s(!1)},[]),G={state:t,fileCount:l,durationMs:r,isVisible:I},p=(0,fg.useMemo)(()=>({startIndexing:c,completeIndexing:d,reset:m}),[c,d,m]);return[G,p]}var mGl=$e($t(),1);function bGl(t,e){(0,mGl.useEffect)(()=>{if(t)return t.on("assistant.message",l=>{if(l.data.toolRequests){for(let n of l.data.toolRequests)if(n.name===WE.name){let r=n.arguments.intent;r&&e(r)}}})},[t,e])}var pve=$e($t(),1);var nGe=class{hosts=new Map;logger;constructor(e){this.logger=e}async getOrCreateHost(e,l){if(!l||Object.keys(l).length===0)return;let n=this.hosts.get(e);if(n)return n;try{let r={mcpServers:l},a=new HL(this.logger,r);return await a.startServers(),this.hosts.set(e,a),this.logger.info(`Started ${Object.keys(l).length} MCP server(s) for ${e}`),a}catch(r){this.logger.error(`Failed to start MCP servers for ${e}: ${r}`);return}}getHost(e){return this.hosts.get(e)}async cleanup(){let e=[];for(let[l,n]of this.hosts.entries())e.push(n.stopServers().catch(r=>{this.logger.error(`Error stopping MCP host for ${l}: ${r}`)}));await Promise.all(e),this.hosts.clear()}size(){return this.hosts.size}};function GGl(t){let e=(0,pve.useRef)(null);return e.current||(e.current=new nGe(t)),(0,pve.useEffect)(()=>()=>{e.current&&e.current.cleanup().catch(l=>{t.error(`Error cleaning up MCP host cache: ${l}`)})},[t]),e.current}var hve=$e($t(),1);function pGl(t,e,l,n){let[r,a]=(0,hve.useState)();return(0,hve.useEffect)(()=>{async function I(){if(!l)return;let s=await wnt(t,e,l,n);a(s)}I()},[l,e,n]),{models:r}}async function wnt(t,e,l,n){if(xL())return{type:"success",list:[]};try{if(l.type==="hmac")return{type:"success",list:await yT.createWithHmac(t,Mte,n,l.hmac,e).listModels()};let r=await Iy(l);if(!r)return{type:"noauth"};let a=await E0(l.host,r,t);return{type:"success",list:await yT.createWithOAuthToken(t,a,n,r,e).listModels()}}catch(r){return{type:"error",error:r}}}var dQ=$e($t(),1);function hGl(t=3){let[e,l]=(0,dQ.useState)(!1),n=(0,dQ.useRef)(null),r=(0,dQ.useRef)(t*1e3);(0,dQ.useEffect)(()=>{r.current=t*1e3},[t]),(0,dQ.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]);let a=(0,dQ.useCallback)(I=>{n.current&&(clearTimeout(n.current),n.current=null),l(!0);let s=I!==void 0?I*1e3:r.current;n.current=setTimeout(()=>{l(!1),n.current=null},s)},[]);return[e,a]}var rGe=$e($t(),1);function AGl({builtInSlashCommands:t,logger:e,currentWorkingDirectory:l,setCurrentWorkingDirectory:n,fileSearch:r,authManager:a,mcpHost:I,loginStatus:s,setLoginStatus:o,addEntryToSession:c,clearSessionHistory:d,getSessionUsageOutput:m,pathManager:G,resetSessionToolApprovals:p,clearTimeline:A,clearHeader:Z,clearContextWindowMetrics:W,setThemePreference:R,refreshStatic:V,hasAvailableCustomAgents:v,slashCommandResultActions:X}){let S=(0,rGe.useMemo)(()=>({logger:e,slashCommands:t,hasAvailableCustomAgents:v,mcp:{host:I,config:async()=>await dY.load()||{mcpServers:{}},hasServer:async P=>(await S.mcp.config())?.mcpServers[P]!==void 0,deleteServer:async P=>{let x=await S.mcp.config();delete x.mcpServers[P],await dY.write(x)}},auth:{availableAuthMethods:()=>tPt(a,s.authInfo),loginStatus:s,logout:async()=>{let P=await a.logout();return o({status:"NotLoggedIn"}),P}},session:{addTimelineEntry:c,clearHistory:d,usageOutput:m},permissions:{allowedDirs:G.getDirectories.bind(G),addAllowedDirectory:G.addDirectory.bind(G),resetSessionToolApprovals:p},process:{cwd:l,chdir:async P=>{process.chdir(P),await G.updatePrimaryDirectory(P),n(P),await r.setRootPath(P)}},ui:{getThemePreference:Dwe,setThemePreference:R,clear:()=>{A(),Z(),W(),V()}}}),[t,e,l,n,r,a,I,s,o,c,d,m,G,p,Z,W,R,V,v]),O=(0,rGe.useCallback)(async P=>{let x=_c(()=>{let K=P.trim();return K==="?"?"/help":K});if(!x.startsWith("/"))return{handled:!1};let D=x.split(" ")[0],ae=t.find(K=>K.name===D||K.aliases?.includes(D));if(!ae)return{handled:!1};let Ge=x.substring(ae.name.length).trim().split(" ").filter(K=>K),he=await ae.execute(S,Ge);if(!he)return{handled:!0};switch(he.kind){case"exit":return X.exit(),{handled:!0};case"add-timeline-entry":return c(he.entry),{handled:!0};case"show-dialog":switch(he.dialog.kind){case"custom-agent-picker":X.showCustomAgentPickerDialog();break;case"feedback":X.showFeedbackDialog();break;case"login":X.showLoginDialog();break;case"mcp":X.showMCPDialog(he.dialog.mode,he.dialog.serverName);break;case"model-picker":X.showModelPickerDialog();break;case"session":X.showSessionDialog();break;case"user-switcher":X.showUserSwitcherDialog();break;default:wo(he.dialog,`Unknown dialog kind: ${he.dialog}`)}return{handled:!0};case"set-model":return await X.setModel(he.model),{handled:!0};case"noop":return{handled:!0};case"start-remote-delegate":return X.startRemoteDelegation(he.prompt),{handled:!0};default:wo(he,`Unknown slash command result kind: ${he}`)}},[t,c,X,S]),T=(0,rGe.useCallback)(P=>yme(t,P),[t]);return{slashCommands:t,handleSlashCommand:O,matchingSlashCommands:T}}var Ave=$e($t(),1);function gGl(t,e,l){let n=(0,Ave.useMemo)(()=>new Map,[]);(0,Ave.useEffect)(()=>{(async()=>{if(Object.keys(t).length===0||t.staff!==void 0||!e)return;let a=await Iy(e),I=e.type==="hmac"?void 0:e.host;if(!a||I!==kL)return;let s=n.get(a)??ozt(I,a).catch(()=>!1);n.set(a,s),await s&&(await Sr.writeKey("staff",!0),await Sr.writeKey("log_level","all"),l({type:"info",text:"Staff mode activated! Restart the app to enable staff features \u2728"}))})()},[t,e,l])}var dJ=$e($t(),1);function ZGl(t,e,l){let[n,r]=(0,dJ.useState)(null),a=(0,dJ.useRef)("");return(0,dJ.useEffect)(()=>{e.text!==a.current&&(n?.availableOptions.some(o=>e.text===o.name)||r(null),a.current=e.text)},[e.text,n]),{handleTabCompletion:(0,dJ.useCallback)(()=>{let s=o=>{let c=o.indexOf(" ");return c===-1?!1:o.slice(c+1).trim().length>0};if(n){if(s(e.text)){r(null);return}let o=(n.currentIndex+1)%n.availableOptions.length,c=n.availableOptions[o];e.setText(c.name),r({...n,currentIndex:o}),l.setSlashCommandPickerIndex(o)}else{if(s(e.text))return;let o=yme(t,e.text);if(o.length===1){let c=o[0],d=c.name;for(let m=d.length-1;m>=2;m--){let G=d.slice(0,m),p=yme(t,G);if(p.length>1){let A=p.findIndex(R=>R.name===c.name);r({originalInput:G,availableOptions:p,currentIndex:A>=0?A:0});let Z=(A+1)%p.length,W=p[Z];e.setText(W.name),r({originalInput:G,availableOptions:p,currentIndex:Z}),l.setSlashCommandPickerIndex(Z);return}}}o.length>1?(r({originalInput:e.text,availableOptions:o,currentIndex:0}),e.setText(o[0].name),l.setSlashCommandPickerIndex(0)):o.length===1&&e.setText(o[0].name)}},[n,e,l]),tabCyclingState:n}}var tH=$e($t(),1);function NGl(){let[t,e]=(0,tH.useState)({columns:process.stdout.columns,rows:process.stdout.rows}),l=(0,tH.useRef)(()=>{}),n=(0,tH.useCallback)(a=>{l.current=a||(()=>{})},[]),r=(0,tH.useCallback)(()=>{let{columns:a,rows:I}=process.stdout;e({columns:a,rows:I}),l.current(a,I)},[]);return(0,tH.useEffect)(()=>(process.stdout.on("resize",r),()=>{process.stdout.off("resize",r)}),[]),{...t,setOnResize:n}}var M7=$e($t(),1);var uJ=t=>/\s/.test(t);function b7n(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&uJ(t[l]);)l+=t[l].length;for(;l<t.length&&!uJ(t[l]);)l+=t[l].length;return l}function WGl(t,e){if(e===0)return 0;let l=e-1;for(;l>=0&&uJ(t[l]);)l-=t[l].length;if(l<0)return 0;for(;l>=0&&!uJ(t[l]);)l-=t[l].length;return l+1}function G7n(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&!uJ(t[l]);)l+=t[l].length;for(;l<t.length&&uJ(t[l]);)l+=t[l].length;return l}function nU(t,e){if(e<=0)return[t];let l=t.split(`
|
|
2473
|
+
`)}async function oGl(t,e){try{return{kind:"success",value:await t()}}catch(l){return{kind:"error",message:e(l)}}}var i7n=UI.object({command:UI.string(),args:UI.array(UI.string()),env:UI.record(UI.string(),UI.string()).optional(),tools:UI.array(UI.string()),type:UI.enum(["local","stdio"]).optional()}),c7n=UI.object({url:UI.string(),headers:UI.record(UI.string(),UI.string()).optional(),tools:UI.array(UI.string()),type:UI.enum(["http","sse"])}),iGl=UI.record(UI.string(),UI.union([i7n,c7n])).optional().nullable(),cGl=UI.object({name:UI.string(),repo_owner:UI.string(),repo_name:UI.string(),display_name:UI.string(),description:UI.string(),tools:UI.array(UI.string()),version:UI.string(),mcp_servers:iGl}),d7n=cGl.extend({prompt:UI.string()});async function u7n(t){t.logger.info(`Reading custom agent "${t.customAgentName}" from ${t.repoOwner}/${t.repoName}`);try{let e={"Copilot-Integration-Id":t.integrationId,Authorization:`Bearer ${t.token}`,"X-GitHub-Job-Nonce":t.jobNonce??""},l=await ZC(`${t.sweAgentsEndpoint}/custom-agents/${t.repoOwner}/${t.repoName}/${t.customAgentName}`,{method:"GET",headers:e},t.logger,"get custom agent config");if(!l.ok){if(l.status===404)return null;throw new Error(`Failed to get custom agent config: ${l.status} ${l.statusText}`)}let n=await l.json();return d7n.parse(n)}catch(e){let l=e,n=l?.requestId||"unknown";throw t.logger.error(`Failed to get custom agent config (request ID: ${n}): ${l}`),l}}var uy=$e($t(),1);function dGl(t){let{cliModel:e,session:l,currentWorkingDirectory:n,customAgentName:r,stdoutColumns:a,models:I}=t,[s,o]=(0,uy.useState)({gitRoot:"",found:!1}),[c,d]=(0,uy.useState)(null);(0,uy.useEffect)(()=>{(async()=>{d(null);let V=await uY(n);o(V)})()},[n]);let m=(0,uy.useCallback)(async()=>{if(!s.found){d(null);return}let R=await wPt(s.gitRoot);if(!R){d(null);return}let V=await VPt(s.gitRoot);d(v=>v?.branch===R&&v?.hasChanges===V?v:{branch:R,hasChanges:V})},[s]),G=(0,uy.useMemo)(()=>CEe(n),[n]),[p,A]=(0,uy.useState)("");(0,uy.useEffect)(()=>{(async()=>{if(!I||I.type!=="success")return;let V=await iO(e,l,I.list);V&&A(v=>v===V?v:V)})()},[e,l,I]);let Z=(0,uy.useMemo)(()=>{if(!c||!c.branch)return null;let R=a||80,V=p.length,v=r?.length||0,X=G.length,S=c.hasChanges?6:5,T=V+X+S+4+v,x=Math.max(8,R-T)-3;return`[\u2387 ${c.branch.length>x?c.branch.substring(0,x)+"...":c.branch}${c.hasChanges?"*":""}]`},[c,a,G,p]),W=(0,uy.useMemo)(()=>{if(!p)return p;let R=I&&I.type==="success"?I.list:void 0,V=Qq(p,R);return`${p} (${V}x)`},[p,I]);return{displayCwd:G,gitBranchInfo:Z,selectedModel:p,selectedModelDisplay:W,setSelectedModel:A,updateGitStatus:m}}var fg=$e($t(),1),m7n=3*1e3;function uGl(){let[t,e]=(0,fg.useState)("idle"),[l,n]=(0,fg.useState)(0),[r,a]=(0,fg.useState)(0),[I,s]=(0,fg.useState)(!1),o=(0,fg.useRef)(null);(0,fg.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]);let c=(0,fg.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("indexing"),n(0),a(0),s(!0)},[]),d=(0,fg.useCallback)((A,Z)=>{e("completed"),n(A),a(Z),s(!0),o.current=setTimeout(()=>{s(!1),o.current=null},m7n)},[]),m=(0,fg.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("idle"),n(0),a(0),s(!1)},[]),G={state:t,fileCount:l,durationMs:r,isVisible:I},p=(0,fg.useMemo)(()=>({startIndexing:c,completeIndexing:d,reset:m}),[c,d,m]);return[G,p]}var mGl=$e($t(),1);function bGl(t,e){(0,mGl.useEffect)(()=>{if(t)return t.on("assistant.message",l=>{if(l.data.toolRequests){for(let n of l.data.toolRequests)if(n.name===WE.name){let r=n.arguments.intent;r&&e(r)}}})},[t,e])}var pve=$e($t(),1);var nGe=class{hosts=new Map;logger;constructor(e){this.logger=e}async getOrCreateHost(e,l){if(!l||Object.keys(l).length===0)return;let n=this.hosts.get(e);if(n)return n;try{let r={mcpServers:l},a=new HL(this.logger,r);return await a.startServers(),this.hosts.set(e,a),this.logger.info(`Started ${Object.keys(l).length} MCP server(s) for ${e}`),a}catch(r){this.logger.error(`Failed to start MCP servers for ${e}: ${r}`);return}}getHost(e){return this.hosts.get(e)}async cleanup(){let e=[];for(let[l,n]of this.hosts.entries())e.push(n.stopServers().catch(r=>{this.logger.error(`Error stopping MCP host for ${l}: ${r}`)}));await Promise.all(e),this.hosts.clear()}size(){return this.hosts.size}};function GGl(t){let e=(0,pve.useRef)(null);return e.current||(e.current=new nGe(t)),(0,pve.useEffect)(()=>()=>{e.current&&e.current.cleanup().catch(l=>{t.error(`Error cleaning up MCP host cache: ${l}`)})},[t]),e.current}var hve=$e($t(),1);function pGl(t,e,l,n){let[r,a]=(0,hve.useState)();return(0,hve.useEffect)(()=>{async function I(){if(!l)return;let s=await wnt(t,e,l,n);a(s)}I()},[l,e,n]),{models:r}}async function wnt(t,e,l,n){if(xL())return{type:"success",list:[]};try{if(l.type==="hmac")return{type:"success",list:await yT.createWithHmac(t,Mte,n,l.hmac,e).listModels()};let r=await Iy(l);if(!r)return{type:"noauth"};let a=await E0(l.host,r,t);return{type:"success",list:await yT.createWithOAuthToken(t,a,n,r,e).listModels()}}catch(r){return{type:"error",error:r}}}var dQ=$e($t(),1);function hGl(t=3){let[e,l]=(0,dQ.useState)(!1),n=(0,dQ.useRef)(null),r=(0,dQ.useRef)(t*1e3);(0,dQ.useEffect)(()=>{r.current=t*1e3},[t]),(0,dQ.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]);let a=(0,dQ.useCallback)(I=>{n.current&&(clearTimeout(n.current),n.current=null),l(!0);let s=I!==void 0?I*1e3:r.current;n.current=setTimeout(()=>{l(!1),n.current=null},s)},[]);return[e,a]}var rGe=$e($t(),1);function AGl({builtInSlashCommands:t,logger:e,currentWorkingDirectory:l,setCurrentWorkingDirectory:n,fileSearch:r,authManager:a,mcpHost:I,loginStatus:s,setLoginStatus:o,addEntryToSession:c,clearSessionHistory:d,getSessionUsageOutput:m,pathManager:G,resetSessionToolApprovals:p,clearTimeline:A,clearHeader:Z,clearContextWindowMetrics:W,setThemePreference:R,refreshStatic:V,customAgents:v,slashCommandResultActions:X}){let S=(0,rGe.useMemo)(()=>({logger:e,slashCommands:t,customAgents:v,mcp:{host:I,config:async()=>await dY.load()||{mcpServers:{}},hasServer:async P=>(await S.mcp.config())?.mcpServers[P]!==void 0,deleteServer:async P=>{let x=await S.mcp.config();delete x.mcpServers[P],await dY.write(x)}},auth:{availableAuthMethods:()=>tPt(a,s.authInfo),loginStatus:s,logout:async()=>{let P=await a.logout();return o({status:"NotLoggedIn"}),P}},session:{addTimelineEntry:c,clearHistory:d,usageOutput:m},permissions:{allowedDirs:G.getDirectories.bind(G),addAllowedDirectory:G.addDirectory.bind(G),resetSessionToolApprovals:p},process:{cwd:l,chdir:async P=>{process.chdir(P),await G.updatePrimaryDirectory(P),n(P),await r.setRootPath(P)}},ui:{getThemePreference:Dwe,setThemePreference:R,clear:()=>{A(),Z(),W(),V()}}}),[t,e,l,n,r,a,I,s,o,c,d,m,G,p,Z,W,R,V,v]),O=(0,rGe.useCallback)(async P=>{let x=_c(()=>{let K=P.trim();return K==="?"?"/help":K});if(!x.startsWith("/"))return{handled:!1};let D=x.split(" ")[0],ae=t.find(K=>K.name===D||K.aliases?.includes(D));if(!ae)return{handled:!1};let Ge=x.substring(ae.name.length).trim().split(" ").filter(K=>K),he=await ae.execute(S,Ge);if(!he)return{handled:!0};switch(he.kind){case"exit":return X.exit(),{handled:!0};case"add-timeline-entry":return c(he.entry),{handled:!0};case"show-dialog":switch(he.dialog.kind){case"custom-agent-picker":X.showCustomAgentPickerDialog();break;case"feedback":X.showFeedbackDialog();break;case"login":X.showLoginDialog();break;case"mcp":X.showMCPDialog(he.dialog.mode,he.dialog.serverName);break;case"model-picker":X.showModelPickerDialog();break;case"session":X.showSessionDialog();break;case"user-switcher":X.showUserSwitcherDialog();break;default:wo(he.dialog,`Unknown dialog kind: ${he.dialog}`)}return{handled:!0};case"set-model":return await X.setModel(he.model),{handled:!0};case"noop":return{handled:!0};case"start-remote-delegate":return X.startRemoteDelegation(he.prompt),{handled:!0};default:wo(he,`Unknown slash command result kind: ${he}`)}},[t,c,X,S]),T=(0,rGe.useCallback)(P=>yme(t,P),[t]);return{slashCommands:t,handleSlashCommand:O,matchingSlashCommands:T}}var Ave=$e($t(),1);function gGl(t,e,l){let n=(0,Ave.useMemo)(()=>new Map,[]);(0,Ave.useEffect)(()=>{(async()=>{if(Object.keys(t).length===0||t.staff!==void 0||!e)return;let a=await Iy(e),I=e.type==="hmac"?void 0:e.host;if(!a||I!==kL)return;let s=n.get(a)??ozt(I,a).catch(()=>!1);n.set(a,s),await s&&(await Sr.writeKey("staff",!0),await Sr.writeKey("log_level","all"),l({type:"info",text:"Staff mode activated! Restart the app to enable staff features \u2728"}))})()},[t,e,l])}var dJ=$e($t(),1);function ZGl(t,e,l){let[n,r]=(0,dJ.useState)(null),a=(0,dJ.useRef)("");return(0,dJ.useEffect)(()=>{e.text!==a.current&&(n?.availableOptions.some(o=>e.text===o.name)||r(null),a.current=e.text)},[e.text,n]),{handleTabCompletion:(0,dJ.useCallback)(()=>{let s=o=>{let c=o.indexOf(" ");return c===-1?!1:o.slice(c+1).trim().length>0};if(n){if(s(e.text)){r(null);return}let o=(n.currentIndex+1)%n.availableOptions.length,c=n.availableOptions[o];e.setText(c.name),r({...n,currentIndex:o}),l.setSlashCommandPickerIndex(o)}else{if(s(e.text))return;let o=yme(t,e.text);if(o.length===1){let c=o[0],d=c.name;for(let m=d.length-1;m>=2;m--){let G=d.slice(0,m),p=yme(t,G);if(p.length>1){let A=p.findIndex(R=>R.name===c.name);r({originalInput:G,availableOptions:p,currentIndex:A>=0?A:0});let Z=(A+1)%p.length,W=p[Z];e.setText(W.name),r({originalInput:G,availableOptions:p,currentIndex:Z}),l.setSlashCommandPickerIndex(Z);return}}}o.length>1?(r({originalInput:e.text,availableOptions:o,currentIndex:0}),e.setText(o[0].name),l.setSlashCommandPickerIndex(0)):o.length===1&&e.setText(o[0].name)}},[n,e,l]),tabCyclingState:n}}var tH=$e($t(),1);function NGl(){let[t,e]=(0,tH.useState)({columns:process.stdout.columns,rows:process.stdout.rows}),l=(0,tH.useRef)(()=>{}),n=(0,tH.useCallback)(a=>{l.current=a||(()=>{})},[]),r=(0,tH.useCallback)(()=>{let{columns:a,rows:I}=process.stdout;e({columns:a,rows:I}),l.current(a,I)},[]);return(0,tH.useEffect)(()=>(process.stdout.on("resize",r),()=>{process.stdout.off("resize",r)}),[]),{...t,setOnResize:n}}var M7=$e($t(),1);var uJ=t=>/\s/.test(t);function b7n(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&uJ(t[l]);)l+=t[l].length;for(;l<t.length&&!uJ(t[l]);)l+=t[l].length;return l}function WGl(t,e){if(e===0)return 0;let l=e-1;for(;l>=0&&uJ(t[l]);)l-=t[l].length;if(l<0)return 0;for(;l>=0&&!uJ(t[l]);)l-=t[l].length;return l+1}function G7n(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&!uJ(t[l]);)l+=t[l].length;for(;l<t.length&&uJ(t[l]);)l+=t[l].length;return l}function nU(t,e){if(e<=0)return[t];let l=t.split(`
|
|
2471
2474
|
`).map(r=>r+" "),n=[];for(let r of l){if(r.length<=e){n.push(r);continue}let a=r;for(;a.length>e;){let I=e;if(uJ(a.slice(0,e)))for(let o=e-1;o>=Math.max(0,e-20)&&!uJ(a[o]);o--)I=o;let s=a.slice(0,I);n.push(s),a=a.slice(I)}a.length>0&&n.push(a)}return n}function _7(t,e){if(e.length===0)return{line:0,column:0};let l=0;for(let r=0;r<e.length;r++){let a=e[r],I=l+a.length;if(t<I)return{line:r,column:t-l};l=I}let n=e.length-1;return{line:n,column:e[n].length}}function U7(t,e,l,n){if(t.length===0)return 0;let r=0;for(let a=0;a<Math.min(e,t.length);a++)r+=t[a].length;return e<t.length?r+=Math.min(l,t[e].length):r=n.length,Math.min(r,n.length)}function p7n(t,e){switch(e.type){case"set_text":return{text:e.payload,cursorPosition:e.payload.length,width:t.width};case"set_cursor_position":return{...t,cursorPosition:Math.max(0,Math.min(e.payload,t.text.length))};case"set_cursor_line_position":{let{line:l,column:n}=e.payload,r=nU(t.text,t.width),a=U7(r,l,n,t.text);return{...t,cursorPosition:a}}case"set_width":return t.width===e.payload?t:{...t,width:e.payload};case"insert_input":{let{text:l,cursorPosition:n}=t,{input:r,callback:a}=e.payload,I=r.replace(/\r\n/g,`
|
|
2472
2475
|
`).replace(/\r/g,`
|
|
2473
2476
|
`),s=l.slice(0,n),o=l.slice(n),c=s+I+o,d=n+I.length;return a?.(c),{text:c,cursorPosition:d,width:t.width}}case"backspace":return t.cursorPosition===0?t:{text:t.text.slice(0,t.cursorPosition-1)+t.text.slice(t.cursorPosition),cursorPosition:t.cursorPosition-1,width:t.width};case"forward_delete":{if(t.cursorPosition>=t.text.length)return t;let l=t.text.slice(0,t.cursorPosition)+t.text.slice(t.cursorPosition+1);return{...t,text:l}}case"backspace_word":{let{text:l,cursorPosition:n}=t;if(n===0)return t;let r=WGl(l,n);return{text:l.slice(0,r)+l.slice(n),cursorPosition:r,width:t.width}}case"forward_delete_word":{let{text:l,cursorPosition:n}=t;if(n>=l.length)return t;let r=b7n(l,n),a=l.slice(0,n)+l.slice(r);return{...t,text:a}}case"move_word_left":{let{text:l,cursorPosition:n}=t;if(n===0)return t;let r=WGl(l,n);return{...t,cursorPosition:r}}case"move_word_right":{let{text:l,cursorPosition:n}=t;if(n>=l.length)return t;let r=G7n(l,n);return{...t,cursorPosition:r}}case"move_right":return t.cursorPosition===t.text.length?t:{...t,cursorPosition:t.cursorPosition+1};case"move_left":return t.cursorPosition===0?t:{...t,cursorPosition:t.cursorPosition-1};case"move_up":{let{text:l,cursorPosition:n,width:r}=t,a=nU(l,r),I=_7(n,a);if(I.line>0){let s=I.line-1,o=Math.min(I.column,a[s].length-1),c=U7(a,s,o,l);return{...t,cursorPosition:c}}return t}case"move_down":{let{text:l,cursorPosition:n,width:r}=t,a=nU(l,r),I=_7(n,a);if(I.line<a.length-1){let s=I.line+1,o=Math.min(I.column,a[s].length-1),c=U7(a,s,o,l);return{...t,cursorPosition:c}}return t}case"clear":return{text:"",cursorPosition:0,width:t.width};case"clear_before_cursor":{let{text:l,cursorPosition:n,width:r}=t,a=nU(l,r),I=_7(n,a),s=U7(a,I.line,0,l);return{text:l.slice(0,s)+l.slice(n),cursorPosition:s,width:r}}case"clear_after_cursor":{let{text:l,cursorPosition:n}=t,r=l.indexOf(`
|
|
@@ -2495,7 +2498,7 @@ ${Re.paths.map(yl=>` - ${yl}`).join(`
|
|
|
2495
2498
|
Allow access to these paths? (y/n): `;Ie.question(_t,yl=>{Ie.close();let Vt=yl.trim().toLowerCase();Qe(Vt==="y"||Vt==="yes"?{kind:"approve"}:{kind:"reject"})})})}}),me=()=>{};I.emit("user.message",{content:e,attachments:[]}),await epl(t,e,We,a,Re=>{I.emit("tool.execution_complete",{parentToolCallId:Re.parentToolCallId,toolCallId:Re.callId,success:Re.resultType==="success",result:Re.resultType==="success"?{content:Re.log}:void 0,error:Re.resultType!=="success"?{message:Re.log,code:Re.resultType}:void 0})},()=>{},me,()=>{},()=>{},I,o,P,QI.cwd(),re,c,d,m,x,T,W,O,R,Re=>{D=Re},S,U.list,V);let ve=Wve(Ge);QI.stderr.write(`
|
|
2496
2499
|
`+ve+`
|
|
2497
2500
|
`),await s.saveSession(I),QI.exit(0)}catch(U){let re=`Error executing prompt: ${U}`;QI.stderr.write(re+`
|
|
2498
|
-
`),o.error(re),await s.saveSession(I),QI.exit(1)}finally{K();try{await T.cleanup()}catch(U){o.error(`Error cleaning up MCP host cache: ${U}`)}if(x)try{await x.stopServers()}catch(U){o.error(`Error stopping MCP servers: ${U}`)}}}var D7n=({featureFlags:t=Rbe,integrationId:e,authManager:l,sessionManager:n,initialSession:r,needsSessionPicker:a,allowAllTools:I,allowAllPaths:s,rules:o,showBanner:c,showHeader:d,trajectoryOutputFile:m,logger:G,additionalDirs:p,disabledMcpServers:A,additionalMcpConfig:Z,errorService:W,cliModel:R,showLlmTiming:V,cliStreaming:v,disableParallelToolsExecution:X,disallowTempDir:S,enableAllGithubMcpTools:O})=>{let T=(0,Yt.useMemo)(()=>G??new xd,[G]),{theme:P,setThemePreference:x,themeInitialized:D}=Tn(),{stdout:ae}=OR(),Ge=rx(),he=d0(),[K,U]=(0,Yt.useState)(0),[re,se]=(0,Yt.useState)(a??!1),[We,me]=(0,Yt.useState)(null),ve=(0,Yt.useCallback)(()=>{QI.stdout.write(ap.cursorTo(0,0)+ap.eraseScreen),U(wt=>wt+1)},[U,ae]),Re=NGl(),ye=V?new j7:void 0,Ie=GGl(T);(0,Yt.useEffect)(()=>{let wt=null,vl=Re.columns,na=Re.rows,Xi=(sI,jc)=>{let qd=sI,hr=jc;if(qd===vl&&hr!==na){na=hr;return}qd!==vl&&(vl=qd,na=hr,wt&&clearTimeout(wt),wt=setTimeout(()=>{ve()},50))};return Re.setOnResize(Xi),()=>{Re.setOnResize(null),wt&&clearTimeout(wt)}},[ve,ae]);let[Qe,Se]=(0,Yt.useState)(r);(0,Yt.useEffect)(()=>{W?.addErrorHandler(wt=>{Qe.emit("session.error",{errorType:"internal",message:String(wt)})})},[W,Qe]);let{timeline:_t,setAvailableTools:yl,addEphemeralEntry:Vt,clearTimeline:qt}=VGl(Qe),ct=FGl(Qe),[Ct,dt]=(0,Yt.useState)({}),[on,ll]=(0,Yt.useState)(0),[Ce,Ft]=(0,Yt.useState)(null),[El,Pt]=(0,Yt.useState)(!1);bGl(Qe,Ft);let[hn,Cn]=(0,Yt.useState)({totalTokens:0,postTruncationTokens:0,tokenLimit:0,truncationStrategy:"truncation",messagesRemoved:0,tokensRemoved:0}),[tn,Kl]=(0,Yt.useState)(null),ba=()=>{if(El){Pt(!1),Kl(null),ve();return}Pt(!0),ve()},II=()=>{if(El||tn!==null){Pt(!1),Kl(null),ve();return}let Xi=_t.filter(sI=>sI.type==="tool_call_completed"||sI.type==="tool_call_requested"||sI.type==="group_tool_call_requested"||sI.type==="group_tool_call_completed").slice(-10).at(0)?.timestamp||new Date;Kl(Xi),ve()},Ga=(0,Yt.useCallback)(wt=>wt.type!=="tool_call_completed"&&wt.type!=="tool_call_requested"&&wt.type!=="group_tool_call_requested"&&wt.type!=="group_tool_call_completed"?!1:El?!0:tn!==null&&wt.timestamp&&wt.timestamp.getTime()>=tn.getTime(),[El,tn]),[mI,Xo]=(0,Yt.useState)(!1),[la,co]=(0,Yt.useState)({status:"Unknown"}),[Ol,Rn]=(0,Yt.useState)({});e=Ol.copilot_integration_id||QI.env.GITHUB_COPILOT_INTEGRATION_ID||"copilot-developer-cli";let An=(0,Yt.useMemo)(()=>new Rve(la.status==="LoggedIn"?la.authInfo:null,T,e),[la.authInfo,T,e]);(0,Yt.useEffect)(()=>{switch(la.status){case"LoggedIn":T.info(lme(la.authInfo));break;case"NotLoggedIn":T.info("Logged out");break;default:T.info("Login status unknown");break}},[la]),(0,Yt.useEffect)(()=>(An.setOnStateChangeCallback(me),()=>{An.setOnStateChangeCallback(null)}),[An]);let[Yr,Br]=(0,Yt.useState)(0),[ie,tt]=(0,Yt.useState)(!1),[Gl,Xl]=(0,Yt.useState)(!1),[Gn,or]=(0,Yt.useState)(!1),[On,mr]=(0,Yt.useState)(!1),[br,gd]=(0,Yt.useState)(!1),[bI,Nc]=(0,Yt.useState)(!1),[xb,pm]=(0,Yt.useState)(!1),[Wc,ti]=(0,Yt.useState)(!1),[tb,tA]=(0,Yt.useState)(null),[eo,Zd]=(0,Yt.useState)("list"),[Nd,Pd]=(0,Yt.useState)(void 0),[un,lb]=(0,Yt.useState)(!1),[Es,Cu]=(0,Yt.useState)(0),[ko,Jg]=(0,Yt.useState)(QI.cwd()),[UG]=(0,Yt.useState)(()=>s?new iGe(QI.cwd()):new oGe(QI.cwd(),p||[],{includeTempDirectory:!S})),[vu,kn]=(0,Yt.useState)([]),[Je,Al]=(0,Yt.useState)(null),[cn,DI]=(0,Yt.useState)([]),[xs,Ss]=(0,Yt.useState)(null),[ps,go]=(0,Yt.useState)(d===!1),[jd,Zo]=(0,Yt.useState)(d??!0),[Nr,MG]=(0,Yt.useState)(null),[Kd,hs]=(0,Yt.useState)(null),[Sb,hi]=hGl(1),[_G,Bb]=(0,Yt.useState)(!1),[ce,de]=(0,Yt.useState)(!1),{models:ke}=pGl(T,Qe.sessionId,la.authInfo,e),{customAgents:_e,selectCustomAgent:ut}=sGl(t.CUSTOM_AGENTS,T,e,la.authInfo||null,T4(),ko);(0,Yt.useEffect)(()=>{kjt().then(tA).catch(()=>{})},[]);let Bt=(0,Yt.useCallback)(wt=>{let vl=Wve(ct);MG(wt?{type:"error",reason:wt,usage:vl}:{type:"routine",usage:vl}),setTimeout(()=>{QI.exit(0)},300)},[ct]);(0,Yt.useEffect)(()=>{(async()=>{let vl={};try{vl=await Sr.load()||{}}catch(na){T.error(`Failed to load configuration: ${na}`)}vl.banner=vl?.banner??"once",vl.render_markdown=vl?.render_markdown??!0,Rn(vl),Ge&&vl.screen_reader===void 0&&Xl(!0)})()},[Ge]),(0,Yt.useEffect)(()=>{if(Je===null&&vu.length>0){Ol.beep!==!1&&QI.stdout.write(ap.beep);let wt=vu[0];Al(wt),kn(vl=>vl.slice(1))}},[Je,vu]),(0,Yt.useEffect)(()=>{if(xs===null&&cn.length>0){Ol.beep!==!1&&QI.stdout.write(ap.beep);let wt=cn[0];Ss(wt),DI(vl=>vl.slice(1))}},[xs,cn]);let ul=(0,Yt.useRef)(!0),al=(0,Yt.useRef)(FJe({requestToolPermissionFromUser:wt=>new Promise(vl=>{kn(na=>[{request:wt,resolve:sI=>{if(sI.kind==="approve-for-session"&&sI.approval.kind!==wt.kind)throw new Error(`Mismatched approval kind: expected ${wt.kind}, got ${sI.approval.kind}`);vl(sI)}},...na])}),requestPathPermissionFromUser:wt=>new Promise(vl=>{DI(na=>[...na,{paths:wt.paths,resolve:vl}])}),approveAllToolPermissionRequests:I,rules:o,pathManager:UG})),{displayCwd:Ql,gitBranchInfo:wl,selectedModel:kl,selectedModelDisplay:Dn,setSelectedModel:pa,updateGitStatus:CI}=dGl({cliModel:R,session:Qe,currentWorkingDirectory:ko,customAgentName:_e.selected?.displayName,stdoutColumns:ae.columns,models:ke});(0,Yt.useEffect)(()=>{(async()=>{if(!ke||ke.type!=="success"||!kl)return;let vl=ke.list.find(na=>na.id===kl);if(vl?.capabilities?.limits){let na=vl.capabilities.limits.max_prompt_tokens||vl.capabilities.limits.max_context_window_tokens||2e5;Cn(Xi=>({...Xi,tokenLimit:na}))}})()},[kl,ke]),(0,Yt.useEffect)(()=>{(async()=>{if(!kl||!ke)return;let vl=await Qe.getChatContextMessages(),na=await Qe.getSystemContextMessages();if(vl.length>0||na.length>0){let Xi=Pte(vl,kl),sI=Pte(na,kl),jc=Xi+sI;Cn(qd=>({...qd,totalTokens:jc,postTruncationTokens:jc}))}})()},[kl,ke,Qe]);let[Hr,Hi]=(0,Yt.useState)(void 0),ji=async()=>{try{let wt=await dY.load()||{mcpServers:{}},vl=Z?IGe(wt,Z):wt,na=new XA(T),Xi=new Rf(T,JSON.stringify(vl),na,A||[],O);await Xi.startServers(),Hi(Xi)}catch(wt){Qe.emit("session.error",{errorType:"mcp",message:`Failed to start MCP Servers: ${wt instanceof Error?wt.message:String(wt)}`}),Hi(void 0)}};(0,Yt.useEffect)(()=>{let wt=Hr?Object.keys(Hr.getConfig().mcpServers):[];if(wt.length>0){let vl=`Configured MCP servers: ${wt.join(", ")}`;Qe.emit("session.info",{infoType:"mcp",message:vl})}return()=>{Hr&&Hr.stopServers().catch(vl=>{T.error(`Error shutting down MCP host on cleanup: ${vl instanceof Error?vl.message:String(vl)}`)})}},[Hr]),(0,Yt.useEffect)(()=>{ji()},[]),(0,Yt.useEffect)(()=>{if(!Hr||!(Hr instanceof Rf))return;let wt=async(na,Xi)=>{try{na?await Hr.configureGitHubAuth(na)&&Qe.emit("session.info",{infoType:"mcp",message:"Connected to GitHub MCP Server"}):await Hr.removeGitHubAuth()&&Qe.emit("session.info",{infoType:"mcp",message:"Disconnected from GitHub MCP Server"})}catch(sI){T.error(`Error configuring GitHub MCP Server: ${sI}`)}};return l.onAuthChange(wt),(async()=>{try{let na=await l.getCurrentAuthInfo();na&&await wt(na)}catch(na){T.error(`Error applying existing auth to MCP host: ${na}`)}})(),()=>{l.removeAuthCallback(wt)}},[Hr]);let Rs=yGl(wt=>{cY.updateCurrentCommand(wt)}),[YN,lA]=uGl(),Bp=(0,Yt.useMemo)(()=>new lGe({cacheTimeout:5*6e4,includeDirsInIndex:!1,indexFileStats:!1,maxStatConcurrency:64,onIndexingStart:()=>lA.startIndexing(),onIndexingComplete:(wt,vl)=>lA.completeIndexing(wt,vl),logger:T}),[lA]),[yc,nb]=kbl(Rs,Bp,UG);(0,Yt.useEffect)(()=>{let wt=!1,vl=null,na=async()=>{await CI(),wt||(vl=setTimeout(()=>void na(),15e3))};return na(),()=>{wt=!0,vl&&clearTimeout(vl)}},[CI]);let Tb=(0,Yt.useCallback)(wt=>{Qe.emit("tool.execution_complete",{parentToolCallId:wt.parentToolCallId,toolCallId:wt.callId,success:wt.resultType==="success",result:wt.resultType==="success"?{content:wt.log}:void 0,error:wt.resultType!=="success"?{message:wt.log,code:wt.resultType}:void 0});let vl=setTimeout(()=>{CI()},500);return()=>clearTimeout(vl)},[Qe,CI]);(0,Yt.useEffect)(()=>{cY.initialize()},[]),(0,Yt.useEffect)(()=>{(async()=>{try{let vl=await l.getCurrentAuthInfo();vl?(co({status:"LoggedIn",authInfo:vl}),Qe.emit("session.info",{infoType:"authentication",message:lme(vl)})):co({status:"NotLoggedIn"})}catch{co({status:"NotLoggedIn"})}})()},[]),gGl(Ol,la.authInfo,Vt),(0,Yt.useEffect)(()=>{(async()=>{try{QI.env.COPILOT_ALLOW_ALL==="true"||await Ybe.isFolderTrusted(ko)?Br(1):(Br(2),tt(!0))}catch{QI.env.COPILOT_ALLOW_ALL==="true"?Br(1):(Br(2),tt(!0))}})()},[ko]),(0,Yt.useEffect)(()=>{gml().then(wt=>{hs(wt)}).catch(wt=>{T.error(`Error checking for updates: ${wt}`)})},[]),(0,Yt.useEffect)(()=>()=>{ul.current=!1},[]);let nA=(0,Yt.useMemo)(()=>iQe({customAgentsEnabled:t.CUSTOM_AGENTS,ccaDelegateEnabled:t.CCA_DELEGATE}),[t.CUSTOM_AGENTS,t.CCA_DELEGATE]),{slashCommands:VN,handleSlashCommand:K0,matchingSlashCommands:Tp}=AGl({builtInSlashCommands:nA,logger:T,currentWorkingDirectory:ko,setCurrentWorkingDirectory:Jg,fileSearch:Bp,authManager:l,mcpHost:Hr,loginStatus:la,setLoginStatus:co,addEntryToSession:Vt,clearSessionHistory:async()=>{let wt=await n.createSession({selectedModel:R});Se(wt)},getSessionUsageOutput:()=>Wve(ct),pathManager:UG,resetSessionToolApprovals:al.current.resetSessionToolApprovals,clearTimeline:qt,clearHeader:()=>Zo(!1),clearContextWindowMetrics:()=>Cn(wt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:wt.tokenLimit,truncationStrategy:wt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setThemePreference:x,refreshStatic:ve,hasAvailableCustomAgents:_e.available.length>0,slashCommandResultActions:{exit:Bt,showCustomAgentPickerDialog:()=>or(!0),showFeedbackDialog:()=>lb(!0),showLoginDialog:()=>mr(!0),showMCPDialog:(wt,vl)=>{gd(!0),wt&&Zd(wt),vl&&Pd(vl)},showModelPickerDialog:()=>Nc(!0),showSessionDialog:()=>pm(!0),showUserSwitcherDialog:()=>ti(!0),startRemoteDelegation:wt=>{An.startDelegation(wt,Qe.sessionId)},setModel:async wt=>{if(!wq(wt)){Qe.emit("session.error",{errorType:"user.model_selection",message:`Model "${wt}" is not supported. Please select a valid model.`});return}Yx(),await Qe.setSelectedModel(wt),pa(wt)}}}),{handleTabCompletion:wN,tabCyclingState:rA}=ZGl(VN,Rs,{setSlashCommandPickerIndex:Cu}),rb=(0,Yt.useMemo)(()=>{let wt=Tp(Rs.text);return rA||Cu(0),wt},[Tp,Rs.text,rA]),Op=(0,Yt.useMemo)(()=>{let wt=Rs.text,vl=rb[Es];if(!vl)return{suggestion:void 0,isHint:!1};let na=wt.trimEnd();return na===vl.name&&vl.args?{suggestion:wt!==na?vl.args:` ${vl.args}`,isHint:!0}:{suggestion:(vl.name+(vl.args?" ":"")).substring(wt.length),isHint:!1}},[Rs.text,Es,rb]),yy=(0,Yt.useCallback)(wt=>{mI||uQ||(async()=>{if(await cY.addCommand(wt),wt.startsWith("!")){let hr=wt.substring(1),ml=cu();Qe.emit("tool.user_requested",{toolCallId:ml,toolName:W7,arguments:{command:hr,description:`Execute shell command: ${hr}`}}),Kh=new AbortController;let Kn="";try{uQ=!0,de(!0);let fa=T7n(hr,{shell:!0,cwd:ko,env:QI.env,stdio:"pipe",signal:Kh.signal}),Na=[],Hu=!1,CN=sA=>{Hu||(Hu=sA.includes(13)),Na.push(sA);let oA=Buffer.concat(Na).toString("utf-8");Kn=Hu?bcl(oA):oA,Qe.emitEphemeral("tool.execution_partial_result",{toolCallId:ml,partialOutput:Kn})};fa.stderr.on("data",CN),fa.stdout.on("data",CN),fa.stdin.end();let VY=await new Promise((sA,oA)=>{fa.on("error",oA),fa.on("exit",(Up,xg)=>{xg?oA(new Error(`Process was killed with signal: ${xg}`)):sA(Up)})});Qe.emit("tool.execution_complete",{parentToolCallId:void 0,toolCallId:ml,isUserRequested:!0,success:VY===0,result:{content:Kn}})}catch(fa){Qe.emit("tool.execution_complete",{parentToolCallId:void 0,toolCallId:ml,isUserRequested:!0,success:!1,error:{message:`${Kn?`${Kn}
|
|
2501
|
+
`),o.error(re),await s.saveSession(I),QI.exit(1)}finally{K();try{await T.cleanup()}catch(U){o.error(`Error cleaning up MCP host cache: ${U}`)}if(x)try{await x.stopServers()}catch(U){o.error(`Error stopping MCP servers: ${U}`)}}}var D7n=({featureFlags:t=Rbe,integrationId:e,authManager:l,sessionManager:n,initialSession:r,needsSessionPicker:a,allowAllTools:I,allowAllPaths:s,rules:o,showBanner:c,showHeader:d,trajectoryOutputFile:m,logger:G,additionalDirs:p,disabledMcpServers:A,additionalMcpConfig:Z,errorService:W,cliModel:R,showLlmTiming:V,cliStreaming:v,disableParallelToolsExecution:X,disallowTempDir:S,enableAllGithubMcpTools:O})=>{let T=(0,Yt.useMemo)(()=>G??new xd,[G]),{theme:P,setThemePreference:x,themeInitialized:D}=Tn(),{stdout:ae}=OR(),Ge=rx(),he=d0(),[K,U]=(0,Yt.useState)(0),[re,se]=(0,Yt.useState)(a??!1),[We,me]=(0,Yt.useState)(null),ve=(0,Yt.useCallback)(()=>{QI.stdout.write(ap.cursorTo(0,0)+ap.eraseScreen),U(wt=>wt+1)},[U,ae]),Re=NGl(),ye=V?new j7:void 0,Ie=GGl(T);(0,Yt.useEffect)(()=>{let wt=null,vl=Re.columns,na=Re.rows,Xi=(sI,jc)=>{let qd=sI,hr=jc;if(qd===vl&&hr!==na){na=hr;return}qd!==vl&&(vl=qd,na=hr,wt&&clearTimeout(wt),wt=setTimeout(()=>{ve()},50))};return Re.setOnResize(Xi),()=>{Re.setOnResize(null),wt&&clearTimeout(wt)}},[ve,ae]);let[Qe,Se]=(0,Yt.useState)(r);(0,Yt.useEffect)(()=>{W?.addErrorHandler(wt=>{Qe.emit("session.error",{errorType:"internal",message:String(wt)})})},[W,Qe]);let{timeline:_t,setAvailableTools:yl,addEphemeralEntry:Vt,clearTimeline:qt}=VGl(Qe),ct=FGl(Qe),[Ct,dt]=(0,Yt.useState)({}),[on,ll]=(0,Yt.useState)(0),[Ce,Ft]=(0,Yt.useState)(null),[El,Pt]=(0,Yt.useState)(!1);bGl(Qe,Ft);let[hn,Cn]=(0,Yt.useState)({totalTokens:0,postTruncationTokens:0,tokenLimit:0,truncationStrategy:"truncation",messagesRemoved:0,tokensRemoved:0}),[tn,Kl]=(0,Yt.useState)(null),ba=()=>{if(El){Pt(!1),Kl(null),ve();return}Pt(!0),ve()},II=()=>{if(El||tn!==null){Pt(!1),Kl(null),ve();return}let Xi=_t.filter(sI=>sI.type==="tool_call_completed"||sI.type==="tool_call_requested"||sI.type==="group_tool_call_requested"||sI.type==="group_tool_call_completed").slice(-10).at(0)?.timestamp||new Date;Kl(Xi),ve()},Ga=(0,Yt.useCallback)(wt=>wt.type!=="tool_call_completed"&&wt.type!=="tool_call_requested"&&wt.type!=="group_tool_call_requested"&&wt.type!=="group_tool_call_completed"?!1:El?!0:tn!==null&&wt.timestamp&&wt.timestamp.getTime()>=tn.getTime(),[El,tn]),[mI,Xo]=(0,Yt.useState)(!1),[la,co]=(0,Yt.useState)({status:"Unknown"}),[Ol,Rn]=(0,Yt.useState)({});e=Ol.copilot_integration_id||QI.env.GITHUB_COPILOT_INTEGRATION_ID||"copilot-developer-cli";let An=(0,Yt.useMemo)(()=>new Rve(la.status==="LoggedIn"?la.authInfo:null,T,e),[la.authInfo,T,e]);(0,Yt.useEffect)(()=>{switch(la.status){case"LoggedIn":T.info(lme(la.authInfo));break;case"NotLoggedIn":T.info("Logged out");break;default:T.info("Login status unknown");break}},[la]),(0,Yt.useEffect)(()=>(An.setOnStateChangeCallback(me),()=>{An.setOnStateChangeCallback(null)}),[An]);let[Yr,Br]=(0,Yt.useState)(0),[ie,tt]=(0,Yt.useState)(!1),[Gl,Xl]=(0,Yt.useState)(!1),[Gn,or]=(0,Yt.useState)(!1),[On,mr]=(0,Yt.useState)(!1),[br,gd]=(0,Yt.useState)(!1),[bI,Nc]=(0,Yt.useState)(!1),[xb,pm]=(0,Yt.useState)(!1),[Wc,ti]=(0,Yt.useState)(!1),[tb,tA]=(0,Yt.useState)(null),[eo,Zd]=(0,Yt.useState)("list"),[Nd,Pd]=(0,Yt.useState)(void 0),[un,lb]=(0,Yt.useState)(!1),[Es,Cu]=(0,Yt.useState)(0),[ko,Jg]=(0,Yt.useState)(QI.cwd()),[UG]=(0,Yt.useState)(()=>s?new iGe(QI.cwd()):new oGe(QI.cwd(),p||[],{includeTempDirectory:!S})),[vu,kn]=(0,Yt.useState)([]),[Je,Al]=(0,Yt.useState)(null),[cn,DI]=(0,Yt.useState)([]),[xs,Ss]=(0,Yt.useState)(null),[ps,go]=(0,Yt.useState)(d===!1),[jd,Zo]=(0,Yt.useState)(d??!0),[Nr,MG]=(0,Yt.useState)(null),[Kd,hs]=(0,Yt.useState)(null),[Sb,hi]=hGl(1),[_G,Bb]=(0,Yt.useState)(!1),[ce,de]=(0,Yt.useState)(!1),{models:ke}=pGl(T,Qe.sessionId,la.authInfo,e),{customAgents:_e,selectCustomAgent:ut}=sGl(t.CUSTOM_AGENTS,T,e,la.authInfo||null,T4(),ko);(0,Yt.useEffect)(()=>{kjt().then(tA).catch(()=>{})},[]);let Bt=(0,Yt.useCallback)(wt=>{let vl=Wve(ct);MG(wt?{type:"error",reason:wt,usage:vl}:{type:"routine",usage:vl}),setTimeout(()=>{QI.exit(0)},300)},[ct]);(0,Yt.useEffect)(()=>{(async()=>{let vl={};try{vl=await Sr.load()||{}}catch(na){T.error(`Failed to load configuration: ${na}`)}vl.banner=vl?.banner??"once",vl.render_markdown=vl?.render_markdown??!0,Rn(vl),Ge&&vl.screen_reader===void 0&&Xl(!0)})()},[Ge]),(0,Yt.useEffect)(()=>{if(Je===null&&vu.length>0){Ol.beep!==!1&&QI.stdout.write(ap.beep);let wt=vu[0];Al(wt),kn(vl=>vl.slice(1))}},[Je,vu]),(0,Yt.useEffect)(()=>{if(xs===null&&cn.length>0){Ol.beep!==!1&&QI.stdout.write(ap.beep);let wt=cn[0];Ss(wt),DI(vl=>vl.slice(1))}},[xs,cn]);let ul=(0,Yt.useRef)(!0),al=(0,Yt.useRef)(FJe({requestToolPermissionFromUser:wt=>new Promise(vl=>{kn(na=>[{request:wt,resolve:sI=>{if(sI.kind==="approve-for-session"&&sI.approval.kind!==wt.kind)throw new Error(`Mismatched approval kind: expected ${wt.kind}, got ${sI.approval.kind}`);vl(sI)}},...na])}),requestPathPermissionFromUser:wt=>new Promise(vl=>{DI(na=>[...na,{paths:wt.paths,resolve:vl}])}),approveAllToolPermissionRequests:I,rules:o,pathManager:UG})),{displayCwd:Ql,gitBranchInfo:wl,selectedModel:kl,selectedModelDisplay:Dn,setSelectedModel:pa,updateGitStatus:CI}=dGl({cliModel:R,session:Qe,currentWorkingDirectory:ko,customAgentName:_e.selected?.displayName,stdoutColumns:ae.columns,models:ke});(0,Yt.useEffect)(()=>{(async()=>{if(!ke||ke.type!=="success"||!kl)return;let vl=ke.list.find(na=>na.id===kl);if(vl?.capabilities?.limits){let na=vl.capabilities.limits.max_prompt_tokens||vl.capabilities.limits.max_context_window_tokens||2e5;Cn(Xi=>({...Xi,tokenLimit:na}))}})()},[kl,ke]),(0,Yt.useEffect)(()=>{(async()=>{if(!kl||!ke)return;let vl=await Qe.getChatContextMessages(),na=await Qe.getSystemContextMessages();if(vl.length>0||na.length>0){let Xi=Pte(vl,kl),sI=Pte(na,kl),jc=Xi+sI;Cn(qd=>({...qd,totalTokens:jc,postTruncationTokens:jc}))}})()},[kl,ke,Qe]);let[Hr,Hi]=(0,Yt.useState)(void 0),ji=async()=>{try{let wt=await dY.load()||{mcpServers:{}},vl=Z?IGe(wt,Z):wt,na=new XA(T),Xi=new Rf(T,JSON.stringify(vl),na,A||[],O);await Xi.startServers(),Hi(Xi)}catch(wt){Qe.emit("session.error",{errorType:"mcp",message:`Failed to start MCP Servers: ${wt instanceof Error?wt.message:String(wt)}`}),Hi(void 0)}};(0,Yt.useEffect)(()=>{let wt=Hr?Object.keys(Hr.getConfig().mcpServers):[];if(wt.length>0){let vl=`Configured MCP servers: ${wt.join(", ")}`;Qe.emit("session.info",{infoType:"mcp",message:vl})}return()=>{Hr&&Hr.stopServers().catch(vl=>{T.error(`Error shutting down MCP host on cleanup: ${vl instanceof Error?vl.message:String(vl)}`)})}},[Hr]),(0,Yt.useEffect)(()=>{ji()},[]),(0,Yt.useEffect)(()=>{if(!Hr||!(Hr instanceof Rf))return;let wt=async(na,Xi)=>{try{na?await Hr.configureGitHubAuth(na)&&Qe.emit("session.info",{infoType:"mcp",message:"Connected to GitHub MCP Server"}):await Hr.removeGitHubAuth()&&Qe.emit("session.info",{infoType:"mcp",message:"Disconnected from GitHub MCP Server"})}catch(sI){T.error(`Error configuring GitHub MCP Server: ${sI}`)}};return l.onAuthChange(wt),(async()=>{try{let na=await l.getCurrentAuthInfo();na&&await wt(na)}catch(na){T.error(`Error applying existing auth to MCP host: ${na}`)}})(),()=>{l.removeAuthCallback(wt)}},[Hr]);let Rs=yGl(wt=>{cY.updateCurrentCommand(wt)}),[YN,lA]=uGl(),Bp=(0,Yt.useMemo)(()=>new lGe({cacheTimeout:5*6e4,includeDirsInIndex:!1,indexFileStats:!1,maxStatConcurrency:64,onIndexingStart:()=>lA.startIndexing(),onIndexingComplete:(wt,vl)=>lA.completeIndexing(wt,vl),logger:T}),[lA]),[yc,nb]=kbl(Rs,Bp,UG);(0,Yt.useEffect)(()=>{let wt=!1,vl=null,na=async()=>{await CI(),wt||(vl=setTimeout(()=>void na(),15e3))};return na(),()=>{wt=!0,vl&&clearTimeout(vl)}},[CI]);let Tb=(0,Yt.useCallback)(wt=>{Qe.emit("tool.execution_complete",{parentToolCallId:wt.parentToolCallId,toolCallId:wt.callId,success:wt.resultType==="success",result:wt.resultType==="success"?{content:wt.log}:void 0,error:wt.resultType!=="success"?{message:wt.log,code:wt.resultType}:void 0});let vl=setTimeout(()=>{CI()},500);return()=>clearTimeout(vl)},[Qe,CI]);(0,Yt.useEffect)(()=>{cY.initialize()},[]),(0,Yt.useEffect)(()=>{(async()=>{try{let vl=await l.getCurrentAuthInfo();vl?(co({status:"LoggedIn",authInfo:vl}),Qe.emit("session.info",{infoType:"authentication",message:lme(vl)})):co({status:"NotLoggedIn"})}catch{co({status:"NotLoggedIn"})}})()},[]),gGl(Ol,la.authInfo,Vt),(0,Yt.useEffect)(()=>{(async()=>{try{QI.env.COPILOT_ALLOW_ALL==="true"||await Ybe.isFolderTrusted(ko)?Br(1):(Br(2),tt(!0))}catch{QI.env.COPILOT_ALLOW_ALL==="true"?Br(1):(Br(2),tt(!0))}})()},[ko]),(0,Yt.useEffect)(()=>{gml().then(wt=>{hs(wt)}).catch(wt=>{T.error(`Error checking for updates: ${wt}`)})},[]),(0,Yt.useEffect)(()=>()=>{ul.current=!1},[]);let nA=(0,Yt.useMemo)(()=>iQe({customAgentsEnabled:t.CUSTOM_AGENTS,ccaDelegateEnabled:t.CCA_DELEGATE}),[t.CUSTOM_AGENTS,t.CCA_DELEGATE]),{slashCommands:VN,handleSlashCommand:K0,matchingSlashCommands:Tp}=AGl({builtInSlashCommands:nA,logger:T,currentWorkingDirectory:ko,setCurrentWorkingDirectory:Jg,fileSearch:Bp,authManager:l,mcpHost:Hr,loginStatus:la,setLoginStatus:co,addEntryToSession:Vt,clearSessionHistory:async()=>{let wt=await n.createSession({selectedModel:R});Se(wt)},getSessionUsageOutput:()=>Wve(ct),pathManager:UG,resetSessionToolApprovals:al.current.resetSessionToolApprovals,clearTimeline:qt,clearHeader:()=>Zo(!1),clearContextWindowMetrics:()=>Cn(wt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:wt.tokenLimit,truncationStrategy:wt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setThemePreference:x,refreshStatic:ve,customAgents:_e,slashCommandResultActions:{exit:Bt,showCustomAgentPickerDialog:()=>or(!0),showFeedbackDialog:()=>lb(!0),showLoginDialog:()=>mr(!0),showMCPDialog:(wt,vl)=>{gd(!0),wt&&Zd(wt),vl&&Pd(vl)},showModelPickerDialog:()=>Nc(!0),showSessionDialog:()=>pm(!0),showUserSwitcherDialog:()=>ti(!0),startRemoteDelegation:wt=>{An.startDelegation(wt,Qe.sessionId)},setModel:async wt=>{if(!wq(wt)){Qe.emit("session.error",{errorType:"user.model_selection",message:`Model "${wt}" is not supported. Please select a valid model.`});return}Yx(),await Qe.setSelectedModel(wt),pa(wt)}}}),{handleTabCompletion:wN,tabCyclingState:rA}=ZGl(VN,Rs,{setSlashCommandPickerIndex:Cu}),rb=(0,Yt.useMemo)(()=>{let wt=Tp(Rs.text);return rA||Cu(0),wt},[Tp,Rs.text,rA]),Op=(0,Yt.useMemo)(()=>{let wt=Rs.text,vl=rb[Es];if(!vl)return{suggestion:void 0,isHint:!1};let na=wt.trimEnd();return na===vl.name&&vl.args?{suggestion:wt!==na?vl.args:` ${vl.args}`,isHint:!0}:{suggestion:(vl.name+(vl.args?" ":"")).substring(wt.length),isHint:!1}},[Rs.text,Es,rb]),yy=(0,Yt.useCallback)(wt=>{mI||uQ||(async()=>{if(await cY.addCommand(wt),wt.startsWith("!")){let hr=wt.substring(1),ml=cu();Qe.emit("tool.user_requested",{toolCallId:ml,toolName:W7,arguments:{command:hr,description:`Execute shell command: ${hr}`}}),Kh=new AbortController;let Kn="";try{uQ=!0,de(!0);let fa=T7n(hr,{shell:!0,cwd:ko,env:QI.env,stdio:"pipe",signal:Kh.signal}),Na=[],Hu=!1,CN=sA=>{Hu||(Hu=sA.includes(13)),Na.push(sA);let oA=Buffer.concat(Na).toString("utf-8");Kn=Hu?bcl(oA):oA,Qe.emitEphemeral("tool.execution_partial_result",{toolCallId:ml,partialOutput:Kn})};fa.stderr.on("data",CN),fa.stdout.on("data",CN),fa.stdin.end();let VY=await new Promise((sA,oA)=>{fa.on("error",oA),fa.on("exit",(Up,xg)=>{xg?oA(new Error(`Process was killed with signal: ${xg}`)):sA(Up)})});Qe.emit("tool.execution_complete",{parentToolCallId:void 0,toolCallId:ml,isUserRequested:!0,success:VY===0,result:{content:Kn}})}catch(fa){Qe.emit("tool.execution_complete",{parentToolCallId:void 0,toolCallId:ml,isUserRequested:!0,success:!1,error:{message:`${Kn?`${Kn}
|
|
2499
2502
|
|
|
2500
2503
|
`:""}Error executing shell command: ${fa instanceof Error?fa.message:String(fa)}`}})}finally{uQ=!1,aU=!1,Kh=null,de(!1)}return}if((await K0(wt)).handled)return;let na=null,Xi="You must be logged in to send messages. Please run /login";if(la.status==="Unknown")try{if(na=await l.getCurrentAuthInfo(),!na){Qe.emit("session.error",{errorType:"authentication",message:Xi});return}}catch{Qe.emit("session.error",{errorType:"authentication",message:Xi});return}else if(la.status!=="LoggedIn"){Qe.emit("session.error",{errorType:"authentication",message:Xi});return}else na=la.authInfo;if(Yr!==1){Qe.emit("session.error",{errorType:"folder_trust",message:"This folder is not trusted. Please confirm folder trust to continue."});return}let sI=ke?.type==="success"?ke.list:void 0,jc=await iO(R,Qe,sI,T);if(!jc){Qe.emit("session.error",{errorType:"model_selection",message:"No model available. Check policy enablement under GitHub Settings > Copilot"});return}let qd=await PGl(wt,yc.storedMentions,ko,T);Qe.emit("user.message",{content:wt,attachments:qd}),Xo(!0);try{await epl(e,wt,al.current,na,Tb,dt,Cn,ll,Ft,Qe,T,UG,ko,jc,_e.available,v??Ol.stream??!0,m,Hr,Ie,V,ye,!1,yl,_e.selected?{name:_e.selected.id,prompt:_e.selected.prompt,mcpServers:_e.selected.mcpServers||{}}:void 0,ke?.type==="success"?ke.list:void 0,X)}catch(hr){let ml=hr instanceof Error?hr.message:String(hr);Qe.emit("session.error",{errorType:"execution",message:`Execution failed: ${ml}`})}finally{ul.current&&(Xo(!1),Ol.beep!==!1&&QI.stdout.write(ap.beep),setTimeout(()=>void CI(),1e3))}})()},[e,mI,Tb,Hr,la,Yr,yc.storedMentions,_e.selected?.prompt,K0]),fu=(0,Yt.useCallback)(()=>{Wc||tb||(yc.isActive?nb.navigateUp():!cY.isNavigating()&&rb.length?Cu(wt=>wt>0?wt-1:rb.length-1):cY.navigateUp(Rs))},[Wc,tb,yc.isActive,nb,rb.length,Es,Rs]),q0=(0,Yt.useCallback)(()=>{Wc||tb||(yc.isActive?nb.navigateDown():!cY.isNavigating()&&rb.length?Cu(wt=>wt<rb.length-1?wt+1:0):cY.navigateDown(Rs))},[Wc,tb,yc.isActive,nb,rb.length,Es,Rs]);Zc((wt,vl)=>{if(vl.ctrl&&wt==="d"){Bt();return}if(vl.ctrl&&wt==="c"){if((mI||uQ)&&Kh&&!Kh.signal.aborted){aU=!0,Kh.abort(),Qe.emit("abort",{reason:"user initiated"}),hi();return}if(Rs.text.length>0){Rs.clear(),cY.resetNavigation(),hi();return}if(!Sb){hi();return}Bt()}if(vl.escape){(mI||uQ)&&Kh&&!Kh.signal.aborted&&(aU=!0,Kh.abort(),Qe.emit("abort",{reason:"user initiated"}));return}if(vl.ctrl&&wt==="r"){II();return}if(vl.ctrl&&wt==="o"){ba();return}if(!(mI||uQ||Wc||tb)){if(vl.tab||vl.return){if(yc.isActive){nb.complete();return}return}!vl.leftArrow&&!vl.rightArrow&&!vl.upArrow&&!vl.downArrow&&cY.setNavigating(!1)}}),(0,Yt.useEffect)(()=>{Bb(Rs.text.startsWith("!"))},[Rs.text]);let Pc=(0,Yt.useCallback)(()=>{An.advanceStage()},[An]),VQ=(0,Yt.useCallback)(()=>{An.cancelDelegation()},[An]),QN=(0,Yt.useCallback)(()=>{An.cancelDelegation(),n.createSession({selectedModel:R}).then(wt=>{Se(wt)}).catch(wt=>{T.error(`Error creating new session: ${wt instanceof Error?wt.message:String(wt)}`)}),Zo(!1),Cn(wt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:wt.tokenLimit,truncationStrategy:wt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setTimeout(()=>{ve()},200)},[An,n,ve]);(0,Yt.useEffect)(()=>{An.onSessionComplete(QN)},[An,QN]);let $0=_c(()=>{if(Gl)return ps?Yt.default.createElement(Nil,{onConfirm:Kn=>{(async()=>{try{Kn==="yes"?(await Sr.writeKey("screen_reader",!0),Qe.emit("session.info",{infoType:"configuration",message:"Enabled screen reader mode for future sessions."})):Kn==="never"&&(await Sr.writeKey("screen_reader",!1),Qe.emit("session.info",{infoType:"configuration",message:"Disabled screen reader mode for future sessions."})),Xl(!1)}catch(fa){Qe.emit("session.error",{errorType:"configuration",message:`Failed to update screen reader configuration: ${fa instanceof Error?fa.message:String(fa)}`})}})()}}):Yt.default.createElement(Yt.default.Fragment,null);if(ie)return ps?Yt.default.createElement(ssl,{folderPath:ko,onConfirm:Kn=>{let fa=()=>{Br(1),tt(!1)};Kn==="yes"?fa():Kn==="remember"?Ybe.addTrustedFolder(ko).then(()=>{fa(),Qe.emit("session.info",{infoType:"folder_trust",message:`Folder ${ko} has been added to trusted folders.`})}).catch(Na=>{Qe.emit("session.error",{errorType:"folder_trust",message:`Failed to add folder to trusted list: ${Na instanceof Error?Na.message:String(Na)}`})}):QI.exit(0)}}):Yt.default.createElement(Yt.default.Fragment,null);if(Gn)return Yt.default.createElement(asl,{customAgents:_e,onSubmission:Kn=>{(async()=>{if(Kn.kind!=="cancelled"){let fa=await ut(Kn.id);if(fa.kind==="error"){Vt({type:"error",text:`Failed to select custom agent: ${fa.message}`});return}Vt({type:"info",text:`Selected custom agent: ${Kn.displayName}`})}or(!1)})()}});if(xb)return Yt.default.createElement(Wil,{sessionId:Qe.sessionId,onClose:()=>{pm(!1)}});if(On)return Yt.default.createElement(Dol,{onLoginSuccess:(Kn,fa)=>{_c(async()=>{await l.loginUser(Kn,fa),mr(!1),Qe.emit("session.info",{infoType:"authentication",message:`Signed in successfully as ${tme({host:Kn,login:fa})}! You can now use Copilot.`}),co({status:"LoggedIn",authInfo:{type:"user",host:Kn,login:fa}})})},onLoginClose:()=>{mr(!1)}});if(br)return Yt.default.createElement(Kol,{initialMode:eo,initialServerName:Nd,onClose:()=>{gd(!1),Zd("list"),Pd(void 0)},onConfigSaved:()=>{ji().then(()=>{Qe.emit("session.info",{infoType:"mcp",message:"MCP configuration saved successfully! Changes will take effect immediately."})}).catch(Kn=>{Qe.emit("session.error",{errorType:"mcp",message:`Failed to reload MCP config. Error: ${Kn instanceof Error?Kn.message:String(Kn)}`})})}});if(bI)return Yt.default.createElement($ol,{models:ke,cliModel:R,session:Qe,onClose:()=>{Nc(!1)},onModelSelected:async Kn=>{Yx(),await Qe.setSelectedModel(Kn),(async()=>{try{let Na={...await Sr.load()||{},model:Kn};await Sr.write(Na)}catch{}})(),Qe.emit("session.info",{infoType:"model",message:`Model changed to: ${Kn}. The new model will be used for the next conversation.`}),pa(Kn)}});if(Wc)return Yt.default.createElement(fil,{authManager:l,initialAuth:la.status==="LoggedIn"?la.authInfo:null,onSelect:Kn=>{co({status:"LoggedIn",authInfo:Kn.authInfo}),ti(!1),Qe.emit("session.info",{infoType:"authentication",message:`Switched to ${nme(Kn.authInfo)}`}),l.switchToAuth(Kn)},onCancel:()=>ti(!1),onError:Kn=>{Qe.emit("session.error",{errorType:"authentication",message:`Failed to switch user. Error: ${Kn}`})}});if(tb){let{terminal:Kn,terminalName:fa}=tb;return Yt.default.createElement(tsl,{logger:T,terminal:Kn,terminalName:fa,onConfirm:Na=>{tA(null),Na?K0("/terminal-setup"):Vt({type:"info",text:`Skipped terminal setup for ${fa}. You can run /terminal-setup later to set it up manually.`})}})}if(Je){let Kn=vu.length;return Yt.default.createElement(Be,{flexDirection:"column"},Kn>0&&Yt.default.createElement(Be,{marginBottom:1},Yt.default.createElement(oe,{color:P.FG},"Permission request (",Kn," remaining)")),Yt.default.createElement(Gil,{request:Je.request,onConfirm:fa=>{Je.resolve(fa),fa.kind==="reject"&&vu.length>0&&!X&&kn(Na=>(Na.forEach(Hu=>{Hu.resolve({kind:"reject"})}),[])),Al(null)}}))}if(xs){let Kn=cn.length;return Yt.default.createElement(Be,{flexDirection:"column"},Kn>0&&Yt.default.createElement(Be,{marginBottom:1},Yt.default.createElement(oe,{color:P.FG},"Path confirmation (",Kn," remaining)")),Yt.default.createElement(eil,{paths:xs.paths,onConfirm:fa=>{xs.resolve(fa),Ss(null)}}))}let wt=mI||uQ,vl="Enter @ to mention files or / for commands",na=Op.suggestion,Xi=Op.isHint,sI=wt||aU,jc=!cY.isNavigating()&&rb.length>0,qd=yc.isActive,hr=!qd&&!jc,ml=_c(()=>aU?"cancelling":ce?"executing":"thinking");return Yt.default.createElement(Yt.default.Fragment,null,la.status==="NotLoggedIn"&&Yt.default.createElement(oe,{bold:!0,color:P.COPILOT},"Please use /login to sign in to use Copilot"),sI&&Yt.default.createElement(Be,{paddingBottom:1},Yt.default.createElement(Yil,{mode:ml,streamingResponseSize:on,currentIntent:Ce})),Yt.default.createElement(Be,{flexDirection:"row",columnGap:1},Yt.default.createElement(Be,{flexGrow:1},Yt.default.createElement(oe,null,Ql),wl&&Yt.default.createElement(oe,{color:P.MUTED},wl)),Yt.default.createElement(oe,{color:P.MUTED},Dn),_e.selected&&Yt.default.createElement(oe,{color:P.SELECTED,bold:!0},_e.selected?.displayName),Yt.default.createElement(rsl,{metrics:hn})),We?.stage?Yt.default.createElement(Zil,{state:We,onAdvance:Pc,onCancel:VQ,onStartNewSession:QN}):Yt.default.createElement(msl,{terminalWidth:Re.columns-qGl*2,onSubmit:yy,textCursorLocation:Rs,placeholder:vl,inlineSuggestion:na,inlineSuggestionIsHint:Xi,onTabCompletion:wN,disableEnterSubmit:wt||aU||yc.isActive,onUpArrow:fu,onDownArrow:q0}),jc&&Yt.default.createElement(Be,{paddingBottom:1},Yt.default.createElement(Ril,{options:rb,selectedIndex:Es,maxRows:10,showScrollHints:!0})),qd&&Yt.default.createElement(Be,{paddingBottom:1},Yt.default.createElement(DIl,{files:yc.suggestions.map(Kn=>Kn.relativePath),selectedIndex:yc.selectedIndex,maxRows:10,showScrollHints:!0,query:yc.query})),Yt.default.createElement(isl,{indexingIndicator:YN}),hr&&!We?.stage&&Yt.default.createElement(hsl,{quotaSnapshots:Ct,isRecentTimelineExpanded:tn!==null,isAllTimelineExpanded:El,showControlCMessage:Sb,inShellExecMode:_G}))}),FN=Yt.default.createElement(Be,{key:"header",flexDirection:"column"},Yt.default.createElement(Be,{flexDirection:"column"},Yt.default.createElement(lsl,{animationComplete:()=>go(!0),completed:ps,bannerConfig:c?"always":Ol.banner,loggerOverride:T,version:he.version}),Yt.default.createElement(Be,{flexDirection:"row",paddingX:1},Yt.default.createElement(oe,{color:P.MUTED},"Version ",he.version),he.buildMetadata&&Yt.default.createElement(Yt.default.Fragment,null,Yt.default.createElement(oe,{color:P.MUTED}," \xB7 "),Yt.default.createElement(oe,{color:P.MUTED},"Commit ",he.buildMetadata.gitCommit)))),Yt.default.createElement(Be,{flexDirection:"column",padding:1,gap:1},Yt.default.createElement(oe,{color:P.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."))),aA=_t.filter(wt=>!("isHidden"in wt&&wt.isHidden)),IA=Gcl(aA),Ey=IA.staticEntries.map(wt=>Yt.default.createElement(Zbe,{key:wt.id,entry:wt,expand:Ga(wt),renderAsMarkdown:Ol.render_markdown})),eR=IA.dynamicEntries.map(wt=>Yt.default.createElement(Zbe,{key:wt.id,entry:wt,expand:Ga(wt),renderAsMarkdown:Ol.render_markdown})),zG=ps&&D;return Yt.default.createElement(CFe,{mode:"interactive"},re?Yt.default.createElement(Be,{flexDirection:"column",paddingX:1},Yt.default.createElement(Eil,{logger:T,sessionManager:n,onSessionSelected:wt=>{(async()=>{try{let vl=await n.getSession(wt);if(!vl)throw new Error("Failed to get session after resuming");Se(vl),se(!1),go(!0),Zo(!1)}catch(vl){Qe.emit("session.error",{errorType:"session",message:`Failed to resume session: ${vl instanceof Error?vl.message:String(vl)}`})}})()},onCancel:()=>{(async()=>{try{QI.exit(0)}catch(wt){Qe.emit("session.error",{errorType:"session",message:`Failed to restart with new session: ${wt instanceof Error?wt.message:String(wt)}`})}})()}})):Yt.default.createElement(Be,{flexDirection:"column"},zG&&Yt.default.createElement(Yt.default.Fragment,null,Yt.default.createElement(zhe,{key:K,items:[...jd?[FN]:[],...Ey]},wt=>wt),eR),!zG&&jd&&FN,!Nr&&Yt.default.createElement(Be,{flexDirection:"column",paddingX:qGl,paddingTop:jd?0:1},un?Yt.default.createElement(Isl,{onCancel:()=>lb(!1)}):$0),Nr&&Yt.default.createElement(Be,{flexDirection:"column",paddingX:1,rowGap:1},Nr.usage&&Yt.default.createElement(oe,{dimColor:!0},Nr.usage),Yt.default.createElement(vil,{packageName:he.name,checkUpdateResponse:Kd}),Nr.type==="routine"?Yt.default.createElement(oe,{color:P.ACCENT,bold:!0},"Shutting down..."):Yt.default.createElement(oe,{color:P.ERROR,bold:!0},`Shutting down: ${Nr.reason}`)),Yt.default.createElement(oe,null,K%2?"\u200C":"\u200D")))},lpl=D7n;var MEl=$e(tK(),1);var x$=$e(TEl(),1);function OEl(){(0,x$.install)(),(0,x$.setGlobalDispatcher)(new x$.EnvHttpProxyAgent({allowH2:!0}))}var VHe=class{constructor(e){this.logger=e;this.listenToErrors()}errorHandlers=[];formatError(e,l){if(l instanceof Error)return`${e}: ${l.message}
|
|
2501
2504
|
${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.351-
|
|
4
|
+
"version": "0.0.351-16",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
"worker/**/*"
|
|
38
38
|
],
|
|
39
39
|
"buildMetadata": {
|
|
40
|
-
"gitCommit": "
|
|
40
|
+
"gitCommit": "861cda9"
|
|
41
41
|
}
|
|
42
42
|
}
|
package/sdk/index.js
CHANGED
|
@@ -1288,6 +1288,7 @@ You *must* avoid doing any of these things you cannot or must not do, and also *
|
|
|
1288
1288
|
* Clean up temporary files at end of task
|
|
1289
1289
|
* Use view/edit for existing files (not create - avoid data loss)
|
|
1290
1290
|
* Ask for guidance if uncertain
|
|
1291
|
+
* Do not create markdown files for planning, notes, or tracking\u2014work in memory instead. Only create a markdown file when the user explicitly asks for that specific file by name or path.
|
|
1291
1292
|
</tips_and_tricks>
|
|
1292
1293
|
|
|
1293
1294
|
${M7I(l,n,c,r,G,s,o)}
|