@github/copilot 0.0.349-11 → 0.0.349-13
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 +11 -11
- package/package.json +2 -2
- package/sdk/index.js +1 -1
- package/sdk/index.js.map +1 -1
package/index.js
CHANGED
|
@@ -1954,7 +1954,7 @@ Pay attention to the following when using it:
|
|
|
1954
1954
|
`}var nYn=tVe.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function rYn(){let t={};for(let e of nYn){let l=tVe.env[e];l!==void 0&&(l.startsWith("()")||(t[e]=l))}return t}var eVe=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new $1e,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new lYn)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,l)=>{var n,r,I,a,s;this._process=(0,TUt.default)(this._serverParams.command,(n=this._serverParams.args)!==null&&n!==void 0?n:[],{env:{...rYn(),...this._serverParams.env},stdio:["pipe","pipe",(r=this._serverParams.stderr)!==null&&r!==void 0?r:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:tVe.platform==="win32"&&IYn(),cwd:this._serverParams.cwd}),this._process.on("error",o=>{var d,u;if(o.name==="AbortError"){(d=this.onclose)===null||d===void 0||d.call(this);return}l(o),(u=this.onerror)===null||u===void 0||u.call(this,o)}),this._process.on("spawn",()=>{e()}),this._process.on("close",o=>{var d;this._process=void 0,(d=this.onclose)===null||d===void 0||d.call(this)}),(I=this._process.stdin)===null||I===void 0||I.on("error",o=>{var d;(d=this.onerror)===null||d===void 0||d.call(this,o)}),(a=this._process.stdout)===null||a===void 0||a.on("data",o=>{this._readBuffer.append(o),this.processReadBuffer()}),(s=this._process.stdout)===null||s===void 0||s.on("error",o=>{var d;(d=this.onerror)===null||d===void 0||d.call(this,o)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,l;return this._stderrStream?this._stderrStream:(l=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&l!==void 0?l:null}get pid(){var e,l;return(l=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&l!==void 0?l:null}processReadBuffer(){for(var e,l;;)try{let n=this._readBuffer.readMessage();if(n===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,n)}catch(n){(l=this.onerror)===null||l===void 0||l.call(this,n)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(l=>{var n;if(!(!((n=this._process)===null||n===void 0)&&n.stdin))throw new Error("Not connected");let r=OUt(e);this._process.stdin.write(r)?l():this._process.stdin.once("drain",l)})}};function IYn(){return"type"in tVe}c();c();var lVe=class extends TransformStream{constructor({onError:e,onRetry:l,onComment:n}={}){let r;super({start(I){r=D1e({onEvent:a=>{I.enqueue(a)},onError(a){e==="terminate"?I.error(a):typeof e=="function"&&e(a)},onRetry:l,onComment:n})},transform(I){r.feed(I)}})}};var aYn={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},Kde=class extends Error{constructor(e,l){super(`Streamable HTTP error: ${l}`),this.code=e}},nVe=class{constructor(e,l){var n;this._url=e,this._resourceMetadataUrl=void 0,this._requestInit=l?.requestInit,this._authProvider=l?.authProvider,this._fetch=l?.fetch,this._sessionId=l?.sessionId,this._reconnectionOptions=(n=l?.reconnectionOptions)!==null&&n!==void 0?n:aYn}async _authThenStart(){var e;if(!this._authProvider)throw new tN("No auth provider");let l;try{l=await eL(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,fetchFn:this._fetch})}catch(n){throw(e=this.onerror)===null||e===void 0||e.call(this,n),n}if(l!=="AUTHORIZED")throw new tN;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){var e;let l={};if(this._authProvider){let r=await this._authProvider.tokens();r&&(l.Authorization=`Bearer ${r.access_token}`)}this._sessionId&&(l["mcp-session-id"]=this._sessionId),this._protocolVersion&&(l["mcp-protocol-version"]=this._protocolVersion);let n=this._normalizeHeaders((e=this._requestInit)===null||e===void 0?void 0:e.headers);return new Headers({...l,...n})}async _startOrAuthSse(e){var l,n,r;let{resumptionToken:I}=e;try{let a=await this._commonHeaders();a.set("Accept","text/event-stream"),I&&a.set("last-event-id",I);let s=await((l=this._fetch)!==null&&l!==void 0?l:fetch)(this._url,{method:"GET",headers:a,signal:(n=this._abortController)===null||n===void 0?void 0:n.signal});if(!s.ok){if(s.status===401&&this._authProvider)return await this._authThenStart();if(s.status===405)return;throw new Kde(s.status,`Failed to open SSE stream: ${s.statusText}`)}this._handleSseStream(s.body,e,!0)}catch(a){throw(r=this.onerror)===null||r===void 0||r.call(this,a),a}}_getNextReconnectionDelay(e){let l=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(l*Math.pow(n,e),r)}_normalizeHeaders(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}_scheduleReconnection(e,l=0){var n;let r=this._reconnectionOptions.maxRetries;if(r>0&&l>=r){(n=this.onerror)===null||n===void 0||n.call(this,new Error(`Maximum reconnection attempts (${r}) exceeded.`));return}let I=this._getNextReconnectionDelay(l);setTimeout(()=>{this._startOrAuthSse(e).catch(a=>{var s;(s=this.onerror)===null||s===void 0||s.call(this,new Error(`Failed to reconnect SSE stream: ${a instanceof Error?a.message:String(a)}`)),this._scheduleReconnection(e,l+1)})},I)}_handleSseStream(e,l,n){if(!e)return;let{onresumptiontoken:r,replayMessageId:I}=l,a;(async()=>{var o,d,u,b;try{let p=e.pipeThrough(new TextDecoderStream).pipeThrough(new lVe).getReader();for(;;){let{value:h,done:Z}=await p.read();if(Z)break;if(h.id&&(a=h.id,r?.(h.id)),!h.event||h.event==="message")try{let N=Mk.parse(JSON.parse(h.data));I!==void 0&&rde(N)&&(N.id=I),(o=this.onmessage)===null||o===void 0||o.call(this,N)}catch(N){(d=this.onerror)===null||d===void 0||d.call(this,N)}}}catch(p){if((u=this.onerror)===null||u===void 0||u.call(this,new Error(`SSE stream disconnected: ${p}`)),n&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:I},0)}catch(h){(b=this.onerror)===null||b===void 0||b.call(this,new Error(`Failed to reconnect: ${h instanceof Error?h.message:String(h)}`))}}})()}async start(){if(this._abortController)throw new Error("StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new tN("No auth provider");if(await eL(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,fetchFn:this._fetch})!=="AUTHORIZED")throw new tN("Failed to authorize")}async close(){var e,l;(e=this._abortController)===null||e===void 0||e.abort(),(l=this.onclose)===null||l===void 0||l.call(this)}async send(e,l){var n,r,I,a;try{let{resumptionToken:s,onresumptiontoken:o}=l||{};if(s){this._startOrAuthSse({resumptionToken:s,replayMessageId:t1e(e)?e.id:void 0}).catch(y=>{var Y;return(Y=this.onerror)===null||Y===void 0?void 0:Y.call(this,y)});return}let d=await this._commonHeaders();d.set("content-type","application/json"),d.set("accept","application/json, text/event-stream");let u={...this._requestInit,method:"POST",headers:d,body:JSON.stringify(e),signal:(n=this._abortController)===null||n===void 0?void 0:n.signal},b=await((r=this._fetch)!==null&&r!==void 0?r:fetch)(this._url,u),p=b.headers.get("mcp-session-id");if(p&&(this._sessionId=p),!b.ok){if(b.status===401&&this._authProvider){if(this._resourceMetadataUrl=jde(b),await eL(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,fetchFn:this._fetch})!=="AUTHORIZED")throw new tN;return this.send(e)}let y=await b.text().catch(()=>null);throw new Error(`Error POSTing to endpoint (HTTP ${b.status}): ${y}`)}if(b.status===202){$Bt(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(y=>{var Y;return(Y=this.onerror)===null||Y===void 0?void 0:Y.call(this,y)});return}let Z=(Array.isArray(e)?e:[e]).filter(y=>"method"in y&&"id"in y&&y.id!==void 0).length>0,N=b.headers.get("content-type");if(Z)if(N?.includes("text/event-stream"))this._handleSseStream(b.body,{onresumptiontoken:o},!1);else if(N?.includes("application/json")){let y=await b.json(),Y=Array.isArray(y)?y.map(w=>Mk.parse(w)):[Mk.parse(y)];for(let w of Y)(I=this.onmessage)===null||I===void 0||I.call(this,w)}else throw new Kde(-1,`Unexpected content type: ${N}`)}catch(s){throw(a=this.onerror)===null||a===void 0||a.call(this,s),s}}get sessionId(){return this._sessionId}async terminateSession(){var e,l,n;if(this._sessionId)try{let r=await this._commonHeaders(),I={...this._requestInit,method:"DELETE",headers:r,signal:(e=this._abortController)===null||e===void 0?void 0:e.signal},a=await((l=this._fetch)!==null&&l!==void 0?l:fetch)(this._url,I);if(!a.ok&&a.status!==405)throw new Kde(a.status,`Failed to terminate session: ${a.statusText}`);this._sessionId=void 0}catch(r){throw(n=this.onerror)===null||n===void 0||n.call(this,r),r}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}};c();var rVe=class{constructor(e){this.server=e}onmessage;onerror;onclose;serverTransport;closed=!1;async start(){if(this.closed)throw new Error("Transport is closed");this.serverTransport=new e8e(this),await this.server.connect(this.serverTransport)}async send(e){if(this.closed)throw new Error("Transport is closed");setImmediate(()=>{try{this.serverTransport?.onmessage?.(e)}catch(l){this.onerror?.(l instanceof Error?l:new Error(String(l)))}})}receive(e){this.closed||this.onmessage?.(e)}async close(){this.closed||(this.closed=!0,await this.serverTransport?.close(),this.onclose?.())}},e8e=class{constructor(e){this.clientTransport=e}onmessage;onerror;onclose;closed=!1;async start(){}async send(e){if(this.closed)throw new Error("Transport is closed");setImmediate(()=>{try{this.clientTransport.receive(e)}catch(l){this.onerror?.(l instanceof Error?l:new Error(String(l)))}})}async close(){this.closed||(this.closed=!0,this.onclose?.())}};var IVe=class{createTransport(e){switch(e.type){case"stdio":{let l=new eVe({command:e.command,args:e.args,env:e.env,stderr:e.stderr?"pipe":void 0,cwd:e.cwd});return l.stderr?.pipe(e.stderr),l}case"http":return new nVe(new URL(e.url),{requestInit:{headers:e.headers||{}}});case"sse":return new K1e(new URL(e.url),{requestInit:{headers:e.headers||{}}});case"memory":return new rVe(e.server);default:throw new Error(`Unsupported transport type: ${e.type}`)}}};c();var qde="blackbird-mcp-server",Y8="github-mcp-server",t8e="playwright",$de=[qde];function V8(t){return t.type===void 0||t.type.toLowerCase()==="local"||t.type.toLowerCase()==="stdio"}function w8(t){return eue(t)||tue(t)}function eue(t){return t.type?.toLowerCase()==="http"}function tue(t){return t.type?.toLowerCase()==="sse"}function lue(t){return t.type?.toLowerCase()==="memory"}var l8e=class extends sYn{constructor(l,n){super({decodeStrings:!1});this.serverName=l;this.logger=n}_write(l,n,r){try{let I=l.toString();this.logger.log(`[mcp server ${this.serverName} stderr] ${I}`),r()}catch(I){r(I instanceof Error?I:new Error(String(I)))}}},aVe=class{constructor(e,l=new M1e,n=new IVe,r="indirect"){this.logger=e;this.clientFactory=l;this.transportFactory=n;this.envValueMode=r}clients={};transports={};async startLocalMcpClient(e,l,n,r,I){this.logger.log(`Starting MCP client for ${e} with command: ${n} and args: ${r}`);let a=new l8e(e,this.logger),s={type:"stdio",command:n,args:r,env:{...l,PATH:process.env.PATH},stderr:a,cwd:I},o=this.transportFactory.createTransport(s);await this.setupAndConnectClient(e,o)}async startHttpMcpClient(e,l){this.logger.log(`Starting remote MCP client for ${e} with url: ${l.url}`);let n={type:"http",url:l.url,headers:l.headers},r=this.transportFactory.createTransport(n);await this.setupAndConnectClient(e,r)}async startSseMcpClient(e,l){this.logger.log(`Starting remote MCP client for ${e} with url: ${l.url}`);let n={type:"sse",url:l.url,headers:l.headers},r=this.transportFactory.createTransport(n);await this.setupAndConnectClient(e,r)}async startInMemoryMcpClient(e,l){this.logger.log(`Starting in-memory MCP client for ${e}`);let n={type:"memory",server:l},r=this.transportFactory.createTransport(n);await this.setupAndConnectClient(e,r)}async setupAndConnectClient(e,l){this.transports[e]=l,l.onclose=()=>{this.logger.log(`MCP transport for ${e} closed`),delete this.transports[e]},this.logger.log(`Creating MCP client for ${e}...`);let n=this.clientFactory.createClient({name:"github-copilot-developer",version:"1.0.0"},{capabilities:{experimental:void 0,roots:void 0,sampling:void 0}}),r=Date.now();this.logger.log(`Connecting MCP client for ${e}...`),await n.connect(l),n.onclose=()=>{this.logger.log(`MCP client for ${e} closed`),delete this.clients[e]},n.onerror=I=>{this.logger.error(`MCP client for ${e} errored ${I}`)},this.logger.log(`MCP client for ${e} connected, took ${Date.now()-r}ms`),this.clients[e]=n}async getTools(e,l){let n={};for(let[r,I]of Object.entries(this.clients)){let a=[];try{this.logger.log(`Fetching tools from client: ${r}`);let s=await I.listTools(),o=e?.mcpServers[r].tools,d=e?.mcpServers[r].filterMapping;for(let b of s.tools){if(b.name==="get_copilot_space")continue;if(!(o?.includes("*")||o?.includes(b.name))){this.logger.log(`Tool ${b.name} is not in the allowed list for client: ${r}`);continue}let h=qye(r,b.name),Z=`${r}-${b.name}`,N;typeof d=="string"?N=pOe(d):N=pOe(d?.[b.name]??"hidden_characters"),n[`${r}/${b.name}`]={name:Z,namespacedName:`${r}/${b.name}`,title:b.title??b.annotations?.title??b.name,description:b.description??Z,input_schema:b.inputSchema,readOnly:b.annotations?.readOnlyHint,safeForTelemetry:{name:!!(e?.mcpServers[r].isDefaultServer||h),inputsNames:!!e?.mcpServers[r].isDefaultServer},filterMode:N},a.push(b.name),this.logger.log(`Tool ${b.name} added to tools list for client: ${r}`)}this.logger.log(`Successfully retrieved ${a.length} tools from client: ${r}`);let u=I.getServerVersion();await this.logServerSuccessWithTools(r,a,u,l)}catch(s){this.logger.error(`Failed to get tools from client: ${r} ${s}`)}}return this.logger.log(`All tools retrieved: ${JSON.stringify(n,null,2)}`),n}async logServerSuccessWithTools(e,l,n,r){if(!$de.includes(e)&&r)try{let I=l.map(o=>`- ${o}`).join(`
|
|
1955
1955
|
`),s=`MCP server started successfully${n?` (version ${n.version})`:""} with ${l.length} ${l.length===1?"tool":"tools"} - for the full output, see the verbose logs
|
|
1956
1956
|
|
|
1957
|
-
${I}`;await r.createOrUpdateMCPStartupToolCall({serverName:e,content:s}),this.logger.log(`Updated session log for ${e} with ${l.length} tools`)}catch(I){this.logger.error(`Failed to update session log for ${e}: ${I}`)}}};c();c();var tL=class t{static resolveString(e,l){return!l||e.length>1e3?e:e.replace(/\$\{([A-Z0-9_]+)(?::-([^}]*))?\}|\$([A-Z0-9_]+)(?![A-Z0-9_])/g,(n,r,I,a)=>{let o=l[r||a];return o!==void 0?o:I!==void 0?I:n})}static resolveArray(e,l){return e?l?e.map(n=>t.resolveString(n,l)):e:[]}static resolveHeaders(e,l){if(!e)return{};if(!l)return e;let n={};for(let[r,I]of Object.entries(e)){let a=t.resolveArray([I],l);n[r]=a[0]}return n}static resolveLocalServerConfig(e,l){let n=t.resolveString(e.command,l),r=t.resolveArray(e.args,l),I;return e.cwd&&(I=t.resolveString(e.cwd,l)),{...e,command:n,args:r,cwd:I}}static resolveRemoteServerConfig(e,l=process.env){let n=t.resolveString(e.url,l),r=t.resolveHeaders(e.headers,l);return{...e,url:n,headers:r}}};var n8e={mcpServers:{}},sVe=class{constructor(e,l,n){this.logger=e;this.registry=l;this.remoteEnabled=n?.remoteEnabled??!1,this.mcp3pEnabled=n?.mcp3pEnabled??!1,this.blackbirdMetisIndexEnabled=n?.blackbirdMetisIndexEnabled??!1,this.sessionClient=n?.sessionClient,this.mcpEnvConfig=void 0,this.envValueMode=n?.envValueMode??this.registry.envValueMode}remoteEnabled;mcp3pEnabled;blackbirdMetisIndexEnabled;mcpEnvConfig;sessionClient;envValueMode;ReadMcpConfigFromEnv(e){this.mcpEnvConfig=process.env.GITHUB_COPILOT_MCP_JSON,this.mcp3pEnabled=process.env.GITHUB_COPILOT_3P_MCP_ENABLED==="true",this.remoteEnabled=process.env.GITHUB_COPILOT_REMOTE_MCP_ENABLED==="true",this.blackbirdMetisIndexEnabled=process.env.BLACKBIRD_METIS_INDEX_ENABLED==="true";let l=this.validateEnvConfig();return process.env.GITHUB_COPILOT_CLI_MODE==="true"?this.logger.log("CLI mode detected - skipping default MCP servers"):(this.logger.log("Adding default MCP servers to configuration"),this.configureBlackbirdMcp(l,e),this.configureGitHubMcp(l,e),this.configurePlaywrightMcp(l)),l}validateEnvConfig(){if(!this.mcp3pEnabled)return this.logger.log("User-provided MCPs are disabled"),n8e;if(this.logger.log("User-provided MCPs are enabled, checking for environment variable"),!this.mcpEnvConfig)return this.logger.log("No user-provided MCP servers found"),n8e;try{let e=JSON.parse(this.mcpEnvConfig);if(!e.mcpServers)throw new Error("User-provided config had incorrect format. Missing 'mcpServers' property.");for(let l in e.mcpServers)e.mcpServers[l].isDefaultServer=!1;return e}catch(e){return this.logger.error(`Warning: User-provided MCP servers were defined but invalid: ${e}`),n8e}}configureGitHubMcp(e,l){this.remoteEnabled?this.configureRemoteGitHubMcp(e,l):this.configureLocalGitHubMcp(e)}configureRemoteGitHubMcp(e,l){this.logger.log("Using default remote GitHub MCP server configuration");let n="repos,issues,users,pull_requests,code_security,secret_protection,actions,web_search";process.env.COPILOT_MCP_COPILOT_SPACES_ENABLED==="true"&&(this.logger.log("Enabling Copilot Spaces in GitHub MCP server configuration"),n=n+",copilot_spaces");let r={Authorization:"Bearer "+process.env.GITHUB_PERSONAL_ACCESS_TOKEN,"X-MCP-Toolsets":n,"X-MCP-Host":"github-coding-agent","X-Initiator":"agent"};l&&l.api?.copilot?.integrationId&&(r["Copilot-Integration-Id"]=l.api.copilot.integrationId),process.env.GITHUB_COPILOT_INTERACTION_ID&&(r["X-Interaction-Id"]=process.env.GITHUB_COPILOT_INTERACTION_ID);let I={type:"http",url:this.getCapiMcpUrl(),headers:r,tools:["*"],isDefaultServer:!0,filterMapping:{get_issue:"markdown",get_issue_comments:"markdown",get_pull_request:"markdown",get_pull_request_comments:"markdown",get_pull_request_reviews:"markdown"}};e.mcpServers[Y8]=I}configureLocalGitHubMcp(e){if(e.mcpServers[Y8]){this.logger.log("Using user-provided GitHub MCP server configuration");let l=e.mcpServers[Y8]??{};V8(l)&&!l.command&&(e.mcpServers[Y8]={...l,command:"./copilot-developer-action-main/github-mcp-server/github-mcp-server",isDefaultServer:!0},this.logger.log("Added default command to user-provided GitHub MCP server configuration"))}else{this.logger.log("Using default local GitHub MCP server configuration");let l={command:"./copilot-developer-action-main/github-mcp-server/github-mcp-server",args:["stdio","--read-only"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",GITHUB_HOST:"GITHUB_SERVER_URL"},tools:["*"],isDefaultServer:!0};e.mcpServers[Y8]=l}}configurePlaywrightMcp(e){if(!e.mcpServers[t8e]){if((process.env.COPILOT_FEATURE_FLAGS??"").split(",").map(n=>n.trim()).includes("copilot_swe_agent_playwright_use_firewall")){this.logger.log("Playwright MCP server is configured to use the firewall, skipping launch.");return}this.logger.log("Enabling Playwright MCP server");let l={command:"npx",args:[...WTe,"--allowed-origins","localhost;localhost:*;127.0.0.1;127.0.0.1:*"],tools:["*"],isDefaultServer:!0};e.mcpServers[t8e]=l}}configureBlackbirdMcp(e,l){this.remoteEnabled?this.configureRemoteBlackbirdMcp(e):this.blackbirdMetisIndexEnabled?this.configureLocalMetisBlackbirdMCP(e,l):this.configureLocalBlackbirdMcp(e)}configureLocalMetisBlackbirdMCP(e,l){this.logger.log("Using local Metis Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${l.blackbird?.mode}`);let n=process.env.AGENT_DIR||"/agent";this.logger.log(`Using agent directory: ${n}`);let r=[];l.blackbird?.mode==="tool"&&(r=["*"]),this.logger.log(`Using blackbird Metis server: ${l.blackbird?.mode}`);let I={command:`${n}/blackbird/mcp`,args:["serve","--index",`${n}/blackbird/metis`],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",COPILOT_API_HMAC_KEY:"CAPI_HMAC_KEY",MODEL_BASED_RETRIEVAL_TOKEN:"BLACKBIRD_AUTH_MODEL_BASED_RETRIEVAL_TOKEN",METIS_API_KEY:"BLACKBIRD_AUTH_METIS_API_KEY"},tools:r,isDefaultServer:!0};e.mcpServers[qde]=I}configureLocalBlackbirdMcp(e){this.logger.log("Using local Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${process.env.BLACKBIRD_MODE}`);let l=[];process.env.BLACKBIRD_MODE==="tool"&&(l=["*"]);let n={command:"./copilot-developer-action-main/blackbird-mcp-server/blackbird-mcp-server",args:["stdio"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",CAPI_HOST:"COPILOT_API_URL"},tools:l,isDefaultServer:!0};e.mcpServers[qde]=n}configureRemoteBlackbirdMcp(e){this.logger.log("Using remote Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${process.env.BLACKBIRD_MODE}`);let l=[];process.env.BLACKBIRD_MODE==="tool"&&(l=["*"]);let n={Authorization:"Bearer "+process.env.GITHUB_PERSONAL_ACCESS_TOKEN,"X-MCP-Toolsets":"search_agent","X-MCP-Host":"github-coding-agent"};process.env.GITHUB_COPILOT_INTERACTION_ID&&(n["X-Interaction-Id"]=process.env.GITHUB_COPILOT_INTERACTION_ID);let r={type:"http",url:this.getCapiMcpUrl(),headers:n,tools:l,isDefaultServer:!0};e.mcpServers[qde]=r}getCapiMcpUrl(){return process.env.COPILOT_API_URL?new URL("/mcp/readonly",process.env.COPILOT_API_URL).toString():"https://api.githubcopilot.com/mcp/readonly"}isValidServerType(e){return V8(e)||eue(e)||tue(e)||lue(e)}isValidLocalServerConfig(e){return e.command!==void 0&&e.command.trim()!==""&&Array.isArray(e.args)}isValidRemoteServerConfig(e){return e.url!==void 0&&e.url.trim()!==""}isValidInMemoryServerConfig(e){return e.serverInstance!==void 0&&typeof e.serverInstance=="object"}validateServerConfig(e,l){return this.remoteEnabled&&!this.isValidServerType(l)?(this.logger.error(`Unsupported server type "${l.type}" for server "${e}". Only "Local", "STDIO", "HTTP", "SSE", or "Memory" are supported.`),!1):!this.remoteEnabled&&!V8(l)&&!lue(l)?(this.logger.error(`Unsupported server type "${l.type}" for server "${e}". Only "Local", "STDIO", or "Memory" are supported.`),!1):l.tools?V8(l)&&!this.isValidLocalServerConfig(l)?(this.logger.error(`Invalid local server configuration for "${e}". Please ensure 'command' and 'args' are provided.`),!1):(eue(l)||tue(l))&&!this.isValidRemoteServerConfig(l)?(this.logger.error(`Invalid remote server configuration for "${e}". Please ensure 'url' is provided.`),!1):lue(l)&&!this.isValidInMemoryServerConfig(l)?(this.logger.error(`Invalid in-memory server configuration for "${e}". Please ensure 'serverInstance' is provided and is an instance of MCPServer.`),!1):!0:(this.logger.error(`No tools specified for server "${e}". Please provide a list of tools or "*" to include all tools.`),!1)}async processHttpServer(e,l){try{let n=tL.resolveHeaders(l.headers,process.env),r={...l,headers:n};await this.registry.startHttpMcpClient(e,r),this.logger.log(`Started MCP client for remote server ${e}`)}catch(n){throw this.logger.error(`Failed to start MCP client for remote server ${e}: ${n}`),n}}async processSseServer(e,l){try{let n=tL.resolveRemoteServerConfig(l,process.env);await this.registry.startSseMcpClient(e,n),this.logger.log(`Started MCP client for remote server ${e}`)}catch(n){throw this.logger.error(`Failed to start MCP client for remote server ${e}: ${n}`),n}}async processInMemoryServer(e,l){try{await this.registry.startInMemoryMcpClient(e,l.serverInstance),this.logger.log(`Started in-memory MCP client for ${e}`)}catch(n){throw this.logger.error(`Failed to start in-memory MCP client for ${e}: ${n}`),n}}async processLocalServer(e,l){let n={...l};if(l.command==="python")try{n=await this.convertPythonToPipx(n)}catch(a){this.logger.error(`Failed to handle Python module for ${e}: ${a}`)}let r=this.buildEnvironment(n),I=tL.resolveLocalServerConfig(n,r);this.logger.log(`Starting MCP client for ${e} with command: ${I.command} and args: ${I.args}`),I.cwd&&this.logger.log(`cwd: ${I.cwd}`);try{await this.registry.startLocalMcpClient(e,r,I.command,I.args,I.cwd),this.logger.log(`Started MCP client for ${e}`)}catch(a){throw this.logger.error(`Failed to start MCP client for ${e}: ${a}`),a}}convertPythonToPipx(e){if(!e||!e.args||e.args.length===0)return e;let l=e.args,n=l.indexOf("-m");if(n===-1||n===l.length-1)throw new Error("Python command with -m flag must specify a module");let r=l[n+1];this.logger.log(`Converting Python module: ${r} to pipx command`);let I=["run",r];for(let a=n+2;a<l.length;a++)I.push(l[a]);for(let a=0;a<n;a++)I.push(l[a]);return{...e,command:"pipx",args:I}}buildEnvironment(e){let l={};if(e.env)if(this.envValueMode==="direct")for(let[n,r]of Object.entries(e.env))l[n]=tL.resolveString(r,process.env);else for(let[n,r]of Object.entries(e.env)){let I=r.trim(),a=I;if(I.includes("$")&&(a=tL.resolveString(I,process.env)),a!==I){l[n]=a;continue}process.env[I]!==void 0&&(l[n]=process.env[I])}return l}async processServers(e){if(!e)throw new Error("No servers to process");let l=Object.entries(e.mcpServers).map(([n,r])=>this.processServer(n,r));await Promise.all(l)}async processServer(e,l){if(!this.validateServerConfig(e,l)){this.logger.error(`Skipping server "${e}" due to invalid configuration.`);return}$de.includes(e)||await this.sessionClient?.createOrUpdateMCPStartupToolCall({serverName:e});try{V8(l)?await this.processLocalServer(e,l):eue(l)&&this.remoteEnabled?await this.processHttpServer(e,l):tue(l)&&this.remoteEnabled?await this.processSseServer(e,l):lue(l)&&await this.processInMemoryServer(e,l)}catch(n){$de.includes(e)||await this.logServerFailure(e,n)}}async logServerFailure(e,l){if(this.sessionClient)try{await this.sessionClient.createOrUpdateMCPStartupToolCall({serverName:e,content:`<error>MCP server failed to start: ${l.message} - for the full output, see the verbose logs</error>`})}catch(n){this.logger.error(`Failed to log failure for MCP Server '${e}': '${n}'`)}}};var nue=class{constructor(e,l,n,r="indirect"){this.logger=e;let I;if(typeof l=="string"){if(I=JSON.parse(l),typeof I!="object")throw new Error("Invalid MCP configuration: must be an object");if(I===null||!("mcpServers"in I)||typeof I.mcpServers!="object")throw new Error("Invalid MCP configuration: missing or invalid mcpServers property");this.config=I}else this.config=l;this.disabledServers=new Set(n||[]),this.registry=new aVe(this.logger,void 0,void 0,r),this.processor=new sVe(this.logger,this.registry,{mcp3pEnabled:!0,remoteEnabled:!0})}registry;processor;config;startServersPromise=null;transport=null;disabledServers;async startServers(){return this.startServersPromise||(this.startServersPromise=this.processServersWithExtensions()),this.startServersPromise}async injectDefaultServers(e){}async processServersWithExtensions(){await this.injectDefaultServers(this.config);let e;if(this.disabledServers.size>0){let l={};for(let[n,r]of Object.entries(this.config.mcpServers))this.disabledServers.has(n)?this.logger.log(`Skipping disabled MCP server: ${n}`):l[n]=r;e={...this.config,mcpServers:l}}else e=this.config;return this.processor.processServers(e)}async stopServers(){for(let[e,l]of Object.entries(this.registry.transports))try{await l.close()}catch(n){this.logger.error(`Error closing transport for ${e}: ${n}`)}this.startServersPromise=null,this.transport=null}async getTools(e,l,n){await this.startServers(),this.transport=this.transport??new rse(e,l,!0);let r=[];for(let I of Object.keys(this.registry.clients)){let a=await this.transport.loadTools({mcpClient:this.registry.clients[I],clientName:I,tools:this.config.mcpServers[I]?.tools||["*"],filterMapping:this.config.mcpServers[I]?.filterMapping||"hidden_characters"},n);r.push(...a)}return r}getConfig(){return this.config}getClients(){return this.registry.clients}async startServer(e,l){await this.startServers(),this.config.mcpServers[e]=l,await this.processor.processServer(e,l),this.transport=null}async stopServer(e){let l=this.registry.transports[e];if(l)try{await l.close(),delete this.registry.transports[e]}catch(n){this.logger.error(`Error closing transport for ${e}: ${n}`)}this.registry.clients[e]&&delete this.registry.clients[e],this.transport=null}async restartServer(e,l){this.isServerRunning(e)&&await this.stopServer(e),delete this.config.mcpServers[e],await this.startServer(e,l)}isServerRunning(e){return e in this.registry.transports&&e in this.registry.clients}isServerDisabled(e){return this.disabledServers.has(e)}async disableServer(e){if(this.disabledServers.has(e)){this.logger.log(`Server ${e} is already disabled`);return}this.disabledServers.add(e),this.logger.log(`Disabled server ${e} for this session`),this.isServerRunning(e)&&await this.stopServer(e),this.transport=null}async enableServer(e){if(!this.disabledServers.has(e)){this.logger.log(`Server ${e} is not disabled`);return}this.disabledServers.delete(e),this.logger.log(`Enabled server ${e} for this session`);let l=this.getServerConfig(e);l?await this.startServer(e,l):await this.startBuiltInServer(e),this.transport=null}async startBuiltInServer(e){}getServerConfig(e){return this.config.mcpServers[e]}};c();var oYn="/login/device/code",iYn="/login/oauth/access_token",UUt="Ov23ctDVkRmgkPke0Mmm",nL="https://github.com",lL=class extends Error{constructor(l,n){super(n);this.status=l;this.message=n;this.name="GitHubApiError"}};function gO(t){let e=new URL(t);return e.hostname.startsWith("api.")||(e.hostname="api."+e.hostname),e.href}async function MUt(t){let e=new URL(oYn,t),l=await fetch(e.href,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:UUt,scope:"user:email,read:user,repo,workflow"})});if(!l.ok)throw new lL(l.status,`Failed to request device code: ${l.statusText}`);return await l.json()}async function _Ut(t,e){let l=new URL(iYn,t),n=await fetch(l.href,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:UUt,device_code:e,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});if(!n.ok)throw new lL(n.status,`Failed to authorize: ${n.statusText}`);let r=await n.json();if(typeof r.access_token=="string")return r.access_token;if(r.error!=="authorization_pending"&&r.error!=="slow_down")throw new Error(r.error_description||`Unexpected error: ${r.error}`)}async function Q8(t,e){let l=new URL("/user",gO(t)),n=await fetch(l.href,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!n.ok)throw new lL(n.status,`Failed to fetch user info: ${n.statusText}`);return(await n.json()).login}async function c0(t,e){let l=`
|
|
1957
|
+
${I}`;await r.createOrUpdateMCPStartupToolCall({serverName:e,content:s}),this.logger.log(`Updated session log for ${e} with ${l.length} tools`)}catch(I){this.logger.error(`Failed to update session log for ${e}: ${I}`)}}};c();c();var tL=class t{static resolveString(e,l){return!l||e.length>1e3?e:e.replace(/\$\{([A-Z0-9_]+)(?::-([^}]*))?\}|\$([A-Z0-9_]+)(?![A-Z0-9_])/g,(n,r,I,a)=>{let o=l[r||a];return o!==void 0?o:I!==void 0?I:n})}static resolveArray(e,l){return e?l?e.map(n=>t.resolveString(n,l)):e:[]}static resolveHeaders(e,l){if(!e)return{};if(!l)return e;let n={};for(let[r,I]of Object.entries(e)){let a=t.resolveArray([I],l);n[r]=a[0]}return n}static resolveLocalServerConfig(e,l){let n=t.resolveString(e.command,l),r=t.resolveArray(e.args,l),I;return e.cwd&&(I=t.resolveString(e.cwd,l)),{...e,command:n,args:r,cwd:I}}static resolveRemoteServerConfig(e,l=process.env){let n=t.resolveString(e.url,l),r=t.resolveHeaders(e.headers,l);return{...e,url:n,headers:r}}};var n8e={mcpServers:{}},sVe=class{constructor(e,l,n){this.logger=e;this.registry=l;this.remoteEnabled=n?.remoteEnabled??!1,this.mcp3pEnabled=n?.mcp3pEnabled??!1,this.blackbirdMetisIndexEnabled=n?.blackbirdMetisIndexEnabled??!1,this.sessionClient=n?.sessionClient,this.mcpEnvConfig=void 0,this.envValueMode=n?.envValueMode??this.registry.envValueMode}remoteEnabled;mcp3pEnabled;blackbirdMetisIndexEnabled;mcpEnvConfig;sessionClient;envValueMode;ReadMcpConfigFromEnv(e){this.mcpEnvConfig=process.env.GITHUB_COPILOT_MCP_JSON,this.mcp3pEnabled=process.env.GITHUB_COPILOT_3P_MCP_ENABLED==="true",this.remoteEnabled=process.env.GITHUB_COPILOT_REMOTE_MCP_ENABLED==="true",this.blackbirdMetisIndexEnabled=process.env.BLACKBIRD_METIS_INDEX_ENABLED==="true";let l=this.validateEnvConfig();return process.env.GITHUB_COPILOT_CLI_MODE==="true"?this.logger.log("CLI mode detected - skipping default MCP servers"):(this.logger.log("Adding default MCP servers to configuration"),this.configureBlackbirdMcp(l,e),this.configureGitHubMcp(l,e),this.configurePlaywrightMcp(l)),l}validateEnvConfig(){if(!this.mcp3pEnabled)return this.logger.log("User-provided MCPs are disabled"),n8e;if(this.logger.log("User-provided MCPs are enabled, checking for environment variable"),!this.mcpEnvConfig)return this.logger.log("No user-provided MCP servers found"),n8e;try{let e=JSON.parse(this.mcpEnvConfig);if(!e.mcpServers)throw new Error("User-provided config had incorrect format. Missing 'mcpServers' property.");for(let l in e.mcpServers)e.mcpServers[l].isDefaultServer=!1;return e}catch(e){return this.logger.error(`Warning: User-provided MCP servers were defined but invalid: ${e}`),n8e}}configureGitHubMcp(e,l){this.remoteEnabled?this.configureRemoteGitHubMcp(e,l):this.configureLocalGitHubMcp(e)}configureRemoteGitHubMcp(e,l){this.logger.log("Using default remote GitHub MCP server configuration");let n="repos,issues,users,pull_requests,code_security,secret_protection,actions,web_search";process.env.COPILOT_MCP_COPILOT_SPACES_ENABLED==="true"&&(this.logger.log("Enabling Copilot Spaces in GitHub MCP server configuration"),n=n+",copilot_spaces");let r={Authorization:"Bearer "+process.env.GITHUB_PERSONAL_ACCESS_TOKEN,"X-MCP-Toolsets":n,"X-MCP-Host":"github-coding-agent","X-Initiator":"agent"};l&&l.api?.copilot?.integrationId&&(r["Copilot-Integration-Id"]=l.api.copilot.integrationId),process.env.GITHUB_COPILOT_INTERACTION_ID&&(r["X-Interaction-Id"]=process.env.GITHUB_COPILOT_INTERACTION_ID);let I={type:"http",url:this.getCapiMcpUrl(),headers:r,tools:["*"],isDefaultServer:!0,filterMapping:{get_issue:"markdown",get_issue_comments:"markdown",get_pull_request:"markdown",get_pull_request_comments:"markdown",get_pull_request_reviews:"markdown"}};e.mcpServers[Y8]=I}configureLocalGitHubMcp(e){if(e.mcpServers[Y8]){this.logger.log("Using user-provided GitHub MCP server configuration");let l=e.mcpServers[Y8]??{};V8(l)&&!l.command&&(e.mcpServers[Y8]={...l,command:"./copilot-developer-action-main/github-mcp-server/github-mcp-server",isDefaultServer:!0},this.logger.log("Added default command to user-provided GitHub MCP server configuration"))}else{this.logger.log("Using default local GitHub MCP server configuration");let l={command:"./copilot-developer-action-main/github-mcp-server/github-mcp-server",args:["stdio","--read-only"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",GITHUB_HOST:"GITHUB_SERVER_URL"},tools:["*"],isDefaultServer:!0};e.mcpServers[Y8]=l}}configurePlaywrightMcp(e){if(!e.mcpServers[t8e]){if((process.env.COPILOT_FEATURE_FLAGS??"").split(",").map(n=>n.trim()).includes("copilot_swe_agent_playwright_use_firewall")){this.logger.log("Playwright MCP server is configured to use the firewall, skipping launch.");return}this.logger.log("Enabling Playwright MCP server");let l={command:"npx",args:[...WTe,"--allowed-origins","localhost;localhost:*;127.0.0.1;127.0.0.1:*"],tools:["*"],isDefaultServer:!0};e.mcpServers[t8e]=l}}configureBlackbirdMcp(e,l){this.remoteEnabled?this.configureRemoteBlackbirdMcp(e):this.blackbirdMetisIndexEnabled?this.configureLocalMetisBlackbirdMCP(e,l):this.configureLocalBlackbirdMcp(e)}configureLocalMetisBlackbirdMCP(e,l){this.logger.log("Using local Metis Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${l.blackbird?.mode}`);let n=process.env.AGENT_DIR||"/agent";this.logger.log(`Using agent directory: ${n}`);let r=[];l.blackbird?.mode==="tool"&&(r=["*"]),this.logger.log(`Using blackbird Metis server: ${l.blackbird?.mode}`);let I={command:`${n}/blackbird/mcp`,args:["serve","--index",`${n}/blackbird/metis`],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",COPILOT_API_HMAC_KEY:"CAPI_HMAC_KEY",MODEL_BASED_RETRIEVAL_TOKEN:"BLACKBIRD_AUTH_MODEL_BASED_RETRIEVAL_TOKEN",METIS_API_KEY:"BLACKBIRD_AUTH_METIS_API_KEY"},tools:r,isDefaultServer:!0};e.mcpServers[qde]=I}configureLocalBlackbirdMcp(e){this.logger.log("Using local Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${process.env.BLACKBIRD_MODE}`);let l=[];process.env.BLACKBIRD_MODE==="tool"&&(l=["*"]);let n={command:"./copilot-developer-action-main/blackbird-mcp-server/blackbird-mcp-server",args:["stdio"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",CAPI_HOST:"COPILOT_API_URL"},tools:l,isDefaultServer:!0};e.mcpServers[qde]=n}configureRemoteBlackbirdMcp(e){this.logger.log("Using remote Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${process.env.BLACKBIRD_MODE}`);let l=[];process.env.BLACKBIRD_MODE==="tool"&&(l=["*"]);let n={Authorization:"Bearer "+process.env.GITHUB_PERSONAL_ACCESS_TOKEN,"X-MCP-Toolsets":"search_agent","X-MCP-Host":"github-coding-agent"};process.env.GITHUB_COPILOT_INTERACTION_ID&&(n["X-Interaction-Id"]=process.env.GITHUB_COPILOT_INTERACTION_ID);let r={type:"http",url:this.getCapiMcpUrl(),headers:n,tools:l,isDefaultServer:!0};e.mcpServers[qde]=r}getCapiMcpUrl(){return process.env.COPILOT_API_URL?new URL("/mcp/readonly",process.env.COPILOT_API_URL).toString():"https://api.githubcopilot.com/mcp/readonly"}isValidServerType(e){return V8(e)||eue(e)||tue(e)||lue(e)}isValidLocalServerConfig(e){return e.command!==void 0&&e.command.trim()!==""&&Array.isArray(e.args)}isValidRemoteServerConfig(e){return e.url!==void 0&&e.url.trim()!==""}isValidInMemoryServerConfig(e){return e.serverInstance!==void 0&&typeof e.serverInstance=="object"}validateServerConfig(e,l){return this.remoteEnabled&&!this.isValidServerType(l)?(this.logger.error(`Unsupported server type "${l.type}" for server "${e}". Only "Local", "STDIO", "HTTP", "SSE", or "Memory" are supported.`),!1):!this.remoteEnabled&&!V8(l)&&!lue(l)?(this.logger.error(`Unsupported server type "${l.type}" for server "${e}". Only "Local", "STDIO", or "Memory" are supported.`),!1):l.tools?V8(l)&&!this.isValidLocalServerConfig(l)?(this.logger.error(`Invalid local server configuration for "${e}". Please ensure 'command' and 'args' are provided.`),!1):(eue(l)||tue(l))&&!this.isValidRemoteServerConfig(l)?(this.logger.error(`Invalid remote server configuration for "${e}". Please ensure 'url' is provided.`),!1):lue(l)&&!this.isValidInMemoryServerConfig(l)?(this.logger.error(`Invalid in-memory server configuration for "${e}". Please ensure 'serverInstance' is provided and is an instance of MCPServer.`),!1):!0:(this.logger.error(`No tools specified for server "${e}". Please provide a list of tools or "*" to include all tools.`),!1)}async processHttpServer(e,l){try{let n=tL.resolveHeaders(l.headers,process.env),r={...l,headers:n};await this.registry.startHttpMcpClient(e,r),this.logger.log(`Started MCP client for remote server ${e}`)}catch(n){throw this.logger.error(`Failed to start MCP client for remote server ${e}: ${n}`),n}}async processSseServer(e,l){try{let n=tL.resolveRemoteServerConfig(l,process.env);await this.registry.startSseMcpClient(e,n),this.logger.log(`Started MCP client for remote server ${e}`)}catch(n){throw this.logger.error(`Failed to start MCP client for remote server ${e}: ${n}`),n}}async processInMemoryServer(e,l){try{await this.registry.startInMemoryMcpClient(e,l.serverInstance),this.logger.log(`Started in-memory MCP client for ${e}`)}catch(n){throw this.logger.error(`Failed to start in-memory MCP client for ${e}: ${n}`),n}}async processLocalServer(e,l){let n={...l};if(l.command==="python")try{n=await this.convertPythonToPipx(n)}catch(a){this.logger.error(`Failed to handle Python module for ${e}: ${a}`)}let r=this.buildEnvironment(n),I=tL.resolveLocalServerConfig(n,r);this.logger.log(`Starting MCP client for ${e} with command: ${I.command} and args: ${I.args}`),I.cwd&&this.logger.log(`cwd: ${I.cwd}`);try{await this.registry.startLocalMcpClient(e,r,I.command,I.args,I.cwd),this.logger.log(`Started MCP client for ${e}`)}catch(a){throw this.logger.error(`Failed to start MCP client for ${e}: ${a}`),a}}convertPythonToPipx(e){if(!e||!e.args||e.args.length===0)return e;let l=e.args;if(l.length>1e3)throw new Error("Too many arguments provided to Python command");let n=l.indexOf("-m");if(n===-1||n===l.length-1)throw new Error("Python command with -m flag must specify a module");let r=l[n+1];this.logger.log(`Converting Python module: ${r} to pipx command`);let I=["run",r];for(let a=n+2;a<l.length;a++)I.push(l[a]);for(let a=0;a<n;a++)I.push(l[a]);return{...e,command:"pipx",args:I}}buildEnvironment(e){let l={};if(e.env)if(this.envValueMode==="direct")for(let[n,r]of Object.entries(e.env))l[n]=tL.resolveString(r,process.env);else for(let[n,r]of Object.entries(e.env)){let I=r.trim(),a=I;if(I.includes("$")&&(a=tL.resolveString(I,process.env)),a!==I){l[n]=a;continue}process.env[I]!==void 0&&(l[n]=process.env[I])}return l}async processServers(e){if(!e)throw new Error("No servers to process");let l=Object.entries(e.mcpServers).map(([n,r])=>this.processServer(n,r));await Promise.all(l)}async processServer(e,l){if(!this.validateServerConfig(e,l)){this.logger.error(`Skipping server "${e}" due to invalid configuration.`);return}$de.includes(e)||await this.sessionClient?.createOrUpdateMCPStartupToolCall({serverName:e});try{V8(l)?await this.processLocalServer(e,l):eue(l)&&this.remoteEnabled?await this.processHttpServer(e,l):tue(l)&&this.remoteEnabled?await this.processSseServer(e,l):lue(l)&&await this.processInMemoryServer(e,l)}catch(n){$de.includes(e)||await this.logServerFailure(e,n)}}async logServerFailure(e,l){if(this.sessionClient)try{await this.sessionClient.createOrUpdateMCPStartupToolCall({serverName:e,content:`<error>MCP server failed to start: ${l.message} - for the full output, see the verbose logs</error>`})}catch(n){this.logger.error(`Failed to log failure for MCP Server '${e}': '${n}'`)}}};var nue=class{constructor(e,l,n,r="indirect"){this.logger=e;let I;if(typeof l=="string"){if(I=JSON.parse(l),typeof I!="object")throw new Error("Invalid MCP configuration: must be an object");if(I===null||!("mcpServers"in I)||typeof I.mcpServers!="object")throw new Error("Invalid MCP configuration: missing or invalid mcpServers property");this.config=I}else this.config=l;this.disabledServers=new Set(n||[]),this.registry=new aVe(this.logger,void 0,void 0,r),this.processor=new sVe(this.logger,this.registry,{mcp3pEnabled:!0,remoteEnabled:!0})}registry;processor;config;startServersPromise=null;transport=null;disabledServers;async startServers(){return this.startServersPromise||(this.startServersPromise=this.processServersWithExtensions()),this.startServersPromise}async injectDefaultServers(e){}async processServersWithExtensions(){await this.injectDefaultServers(this.config);let e;if(this.disabledServers.size>0){let l={};for(let[n,r]of Object.entries(this.config.mcpServers))this.disabledServers.has(n)?this.logger.log(`Skipping disabled MCP server: ${n}`):l[n]=r;e={...this.config,mcpServers:l}}else e=this.config;return this.processor.processServers(e)}async stopServers(){for(let[e,l]of Object.entries(this.registry.transports))try{await l.close()}catch(n){this.logger.error(`Error closing transport for ${e}: ${n}`)}this.startServersPromise=null,this.transport=null}async getTools(e,l,n){await this.startServers(),this.transport=this.transport??new rse(e,l,!0);let r=[];for(let I of Object.keys(this.registry.clients)){let a=await this.transport.loadTools({mcpClient:this.registry.clients[I],clientName:I,tools:this.config.mcpServers[I]?.tools||["*"],filterMapping:this.config.mcpServers[I]?.filterMapping||"hidden_characters"},n);r.push(...a)}return r}getConfig(){return this.config}getClients(){return this.registry.clients}async startServer(e,l){await this.startServers(),this.config.mcpServers[e]=l,await this.processor.processServer(e,l),this.transport=null}async stopServer(e){let l=this.registry.transports[e];if(l)try{await l.close(),delete this.registry.transports[e]}catch(n){this.logger.error(`Error closing transport for ${e}: ${n}`)}this.registry.clients[e]&&delete this.registry.clients[e],this.transport=null}async restartServer(e,l){this.isServerRunning(e)&&await this.stopServer(e),delete this.config.mcpServers[e],await this.startServer(e,l)}isServerRunning(e){return e in this.registry.transports&&e in this.registry.clients}isServerDisabled(e){return this.disabledServers.has(e)}async disableServer(e){if(this.disabledServers.has(e)){this.logger.log(`Server ${e} is already disabled`);return}this.disabledServers.add(e),this.logger.log(`Disabled server ${e} for this session`),this.isServerRunning(e)&&await this.stopServer(e),this.transport=null}async enableServer(e){if(!this.disabledServers.has(e)){this.logger.log(`Server ${e} is not disabled`);return}this.disabledServers.delete(e),this.logger.log(`Enabled server ${e} for this session`);let l=this.getServerConfig(e);l?await this.startServer(e,l):await this.startBuiltInServer(e),this.transport=null}async startBuiltInServer(e){}getServerConfig(e){return this.config.mcpServers[e]}};c();var oYn="/login/device/code",iYn="/login/oauth/access_token",UUt="Ov23ctDVkRmgkPke0Mmm",nL="https://github.com",lL=class extends Error{constructor(l,n){super(n);this.status=l;this.message=n;this.name="GitHubApiError"}};function gO(t){let e=new URL(t);return e.hostname.startsWith("api.")||(e.hostname="api."+e.hostname),e.href}async function MUt(t){let e=new URL(oYn,t),l=await fetch(e.href,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:UUt,scope:"user:email,read:user,repo,workflow"})});if(!l.ok)throw new lL(l.status,`Failed to request device code: ${l.statusText}`);return await l.json()}async function _Ut(t,e){let l=new URL(iYn,t),n=await fetch(l.href,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:UUt,device_code:e,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});if(!n.ok)throw new lL(n.status,`Failed to authorize: ${n.statusText}`);let r=await n.json();if(typeof r.access_token=="string")return r.access_token;if(r.error!=="authorization_pending"&&r.error!=="slow_down")throw new Error(r.error_description||`Unexpected error: ${r.error}`)}async function Q8(t,e){let l=new URL("/user",gO(t)),n=await fetch(l.href,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"}});if(!n.ok)throw new lL(n.status,`Failed to fetch user info: ${n.statusText}`);return(await n.json()).login}async function c0(t,e){let l=`
|
|
1958
1958
|
{
|
|
1959
1959
|
viewer {
|
|
1960
1960
|
copilotEndpoints {
|
|
@@ -2057,8 +2057,8 @@ Valid options are: auto, dark, light`}}},WCn={name:"/terminal-setup",help:"Confi
|
|
|
2057
2057
|
|
|
2058
2058
|
${l.join(`
|
|
2059
2059
|
`)}`}}},YCn=async(t,e)=>({kind:"show-dialog",dialog:{kind:"user-switcher"}}),VCn={name:"/user",args:"[show|list|switch]",help:"Manage GitHub user list",execute:async(t,e)=>{let[l,...n]=e;if(!l)return YDt(t,n);switch(l){case"show":return YDt(t,n);case"list":return RCn(t,n);case"switch":return YCn(t,n);default:return{kind:"add-timeline-entry",entry:{type:"info",text:["User Command Usage:","/user (or /user show) - Show the currently logged-in user","/user list - List all available users","/user switch - Switch to a different user","","Examples:","/user show - Display the current user's information","/user list - Show a list of all users","/user switch - Open the user switcher dialog"].join(`
|
|
2060
|
-
`)}}}}},wCn={name:"/
|
|
2061
|
-
Example: /
|
|
2060
|
+
`)}}}}},wCn={name:"/delegate",args:"<prompt>",help:"Delegate changes to remote repository with AI-generated PR",execute:async(t,e)=>e.length<1?{kind:"add-timeline-entry",entry:{type:"error",text:`Usage: /delegate <prompt>
|
|
2061
|
+
Example: /delegate Add dark mode support to settings page`}}:{kind:"start-remote-delegate",prompt:e.join(" ")}},rwe=({customAgentsEnabled:t,ccaDelegateEnabled:e})=>[eCn,...t?[tCn]:[],lCn,nCn,rCn,ICn,aCn,sCn,oCn,iCn,pCn,hCn,...e?[wCn]:[],ACn,ZCn,WCn,yCn,ECn,VCn];c();var Xw=nt(qt(),1);import{sep as sme}from"path";c();var G0=nt(qt(),1);c();function rqe(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var XO=rqe();function XDt(t){XO=t}var Cue={exec:()=>null};function Ko(t,e=""){let l=typeof t=="string"?t:t.source,n={replace:(r,I)=>{let a=typeof I=="string"?I:I.source;return a=a.replace(pZ.caret,"$1"),l=l.replace(r,a),n},getRegex:()=>new RegExp(l,e)};return n}var pZ={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},QCn=/^(?:[ \t]*(?:\n|$))+/,FCn=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,CCn=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vue=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,vCn=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Iqe=/(?:[*+-]|\d{1,9}[.)])/,kDt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,LDt=Ko(kDt).replace(/bull/g,Iqe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),fCn=Ko(kDt).replace(/bull/g,Iqe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),aqe=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,HCn=/^[^\n]+/,sqe=/(?!\s*\])(?:\\.|[^\[\]\\])+/,XCn=Ko(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",sqe).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),kCn=Ko(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Iqe).getRegex(),cwe="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",oqe=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,LCn=Ko("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",oqe).replace("tag",cwe).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),JDt=Ko(aqe).replace("hr",vue).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",cwe).getRegex(),JCn=Ko(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",JDt).getRegex(),iqe={blockquote:JCn,code:FCn,def:XCn,fences:CCn,heading:vCn,hr:vue,html:LCn,lheading:LDt,list:kCn,newline:QCn,paragraph:JDt,table:Cue,text:HCn},FDt=Ko("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vue).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",cwe).getRegex(),xCn={...iqe,lheading:fCn,table:FDt,paragraph:Ko(aqe).replace("hr",vue).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",FDt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",cwe).getRegex()},SCn={...iqe,html:Ko(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",oqe).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Cue,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Ko(aqe).replace("hr",vue).replace("heading",` *#{1,6} *[^
|
|
2062
2062
|
]`).replace("lheading",LDt).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},BCn=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,OCn=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,xDt=/^( {2,}|\\)\n(?!\s*$)/,TCn=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,dwe=/[\p{P}\p{S}]/u,cqe=/[\s\p{P}\p{S}]/u,SDt=/[^\s\p{P}\p{S}]/u,UCn=Ko(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,cqe).getRegex(),BDt=/(?!~)[\p{P}\p{S}]/u,MCn=/(?!~)[\s\p{P}\p{S}]/u,_Cn=/(?:[^\s\p{P}\p{S}]|~)/u,DCn=/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,ODt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,zCn=Ko(ODt,"u").replace(/punct/g,dwe).getRegex(),PCn=Ko(ODt,"u").replace(/punct/g,BDt).getRegex(),TDt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",jCn=Ko(TDt,"gu").replace(/notPunctSpace/g,SDt).replace(/punctSpace/g,cqe).replace(/punct/g,dwe).getRegex(),KCn=Ko(TDt,"gu").replace(/notPunctSpace/g,_Cn).replace(/punctSpace/g,MCn).replace(/punct/g,BDt).getRegex(),qCn=Ko("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,SDt).replace(/punctSpace/g,cqe).replace(/punct/g,dwe).getRegex(),$Cn=Ko(/\\(punct)/,"gu").replace(/punct/g,dwe).getRegex(),evn=Ko(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),tvn=Ko(oqe).replace("(?:-->|$)","-->").getRegex(),lvn=Ko("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",tvn).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),swe=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,nvn=Ko(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",swe).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),UDt=Ko(/^!?\[(label)\]\[(ref)\]/).replace("label",swe).replace("ref",sqe).getRegex(),MDt=Ko(/^!?\[(ref)\](?:\[\])?/).replace("ref",sqe).getRegex(),rvn=Ko("reflink|nolink(?!\\()","g").replace("reflink",UDt).replace("nolink",MDt).getRegex(),dqe={_backpedal:Cue,anyPunctuation:$Cn,autolink:evn,blockSkip:DCn,br:xDt,code:OCn,del:Cue,emStrongLDelim:zCn,emStrongRDelimAst:jCn,emStrongRDelimUnd:qCn,escape:BCn,link:nvn,nolink:MDt,punctuation:UCn,reflink:UDt,reflinkSearch:rvn,tag:lvn,text:TCn,url:Cue},Ivn={...dqe,link:Ko(/^!?\[(label)\]\((.*?)\)/).replace("label",swe).getRegex(),reflink:Ko(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",swe).getRegex()},tqe={...dqe,emStrongRDelimAst:KCn,emStrongLDelim:PCn,url:Ko(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},avn={...tqe,br:Ko(xDt).replace("{2,}","*").getRegex(),text:Ko(tqe.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Iwe={normal:iqe,gfm:xCn,pedantic:SCn},Que={normal:dqe,gfm:tqe,breaks:avn,pedantic:Ivn},svn={"&":"&","<":"<",">":">",'"':""","'":"'"},CDt=t=>svn[t];function Qw(t,e){if(e){if(pZ.escapeTest.test(t))return t.replace(pZ.escapeReplace,CDt)}else if(pZ.escapeTestNoEncode.test(t))return t.replace(pZ.escapeReplaceNoEncode,CDt);return t}function vDt(t){try{t=encodeURI(t).replace(pZ.percentDecode,"%")}catch{return null}return t}function fDt(t,e){let l=t.replace(pZ.findPipe,(I,a,s)=>{let o=!1,d=a;for(;--d>=0&&s[d]==="\\";)o=!o;return o?"|":" |"}),n=l.split(pZ.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(pZ.slashPipe,"|");return n}function Fue(t,e,l){let n=t.length;if(n===0)return"";let r=0;for(;r<n;){let I=t.charAt(n-r-1);if(I===e&&!l)r++;else if(I!==e&&l)r++;else break}return t.slice(0,n-r)}function ovn(t,e){if(t.indexOf(e[1])===-1)return-1;let l=0;for(let n=0;n<t.length;n++)if(t[n]==="\\")n++;else if(t[n]===e[0])l++;else if(t[n]===e[1]&&(l--,l<0))return n;return l>0?-2:-1}function HDt(t,e,l,n,r){let I=e.href,a=e.title||null,s=t[1].replace(r.other.outputLinkReplace,"$1");n.state.inLink=!0;let o={type:t[0].charAt(0)==="!"?"image":"link",raw:l,href:I,title:a,text:s,tokens:n.inlineTokens(s)};return n.state.inLink=!1,o}function ivn(t,e,l){let n=t.match(l.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`
|
|
2063
2063
|
`).map(I=>{let a=I.match(l.other.beginningSpace);if(a===null)return I;let[s]=a;return s.length>=r.length?I.slice(r.length):I}).join(`
|
|
2064
2064
|
`)}var owe=class{options;rules;lexer;constructor(t){this.options=t||XO}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let l=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?l:Fue(l,`
|
|
@@ -2364,7 +2364,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let n="<p>An error
|
|
|
2364
2364
|
|
|
2365
2365
|
${n}`:""),isTruncated:!0}}return{problemStatement:t+(e?`
|
|
2366
2366
|
|
|
2367
|
-
${e}`:""),isTruncated:!1}}function dal(t){let e=Math.floor((Date.now()-t.getTime())/1e3);if(e<60)return`${e}s`;let l=Math.floor(e/60);return l<60?`${l}m`:`${Math.floor(l/60)}h`}var j$e=({date:t,prefix:e="",suffix:l=""})=>{let[,n]=(0,wq.useState)(0);return(0,wq.useEffect)(()=>{let r,I=()=>{Math.floor((Date.now()-t.getTime())/1e3)<60?r=setInterval(()=>{n(o=>o+1)},1e3):r=setInterval(()=>{n(o=>o+1)},6e4)};I();let a=setInterval(()=>{Math.floor((Date.now()-t.getTime())/1e3)>=60&&(clearInterval(r),I(),clearInterval(a))},1e3);return()=>{clearInterval(r),clearInterval(a)}},[t]),wq.default.createElement(ce,null,e,dal(t),l)};var ual=({state:t,onAdvance:e,onCancel:l,onStartNewSession:n})=>{let{theme:r}=_n();Zc((d,u)=>{if(t.error&&u.escape){l();return}t.stage==="push_tracking"&&u.ctrl&&d==="n"&&(n?n():l())});let I=d=>{d.value?e():l()},a={label:"Yes",value:!0},s={label:"No, cancel",value:!1},o=()=>{switch(t.stage){case"uncommitted_changes_check":return t.isLoading?In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(ce,{bold:!0},"Push current session to Copilot Coding Agent?"),In.default.createElement(Lw,{color:r.MUTED},"Checking for uncommitted changes")):t.hasUncommittedChanges&&t.fileCount?In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(ce,{bold:!0},"Push current session to Copilot Coding Agent?"),In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(ce,null,"Uncommitted changes detected:"),t.fileCount.staged>0&&In.default.createElement(ce,null,"- Staged files: ",In.default.createElement(ce,{color:r.ACCENT},t.fileCount.staged)),t.fileCount.unstaged>0&&In.default.createElement(ce,null,"- Modified files: ",In.default.createElement(ce,{color:r.ACCENT},t.fileCount.unstaged)),t.fileCount.untracked>0&&In.default.createElement(ce,null,"- Untracked files: ",In.default.createElement(ce,{color:r.ACCENT},t.fileCount.untracked))),In.default.createElement(ce,null,"Would you like to commit all changes before pushing? This will create a checkpoint commit: ",In.default.createElement(ce,{color:r.ACCENT},t.commitMessage)),In.default.createElement(p0,{items:[a],onSelect:I,escapeItem:s,onEscape:l})):null;case"confirm_push":return t.isLoading?In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{bold:!0},"Push current session to Copilot Coding Agent?"),In.default.createElement(ce,null," "),In.default.createElement(Lw,{color:r.MUTED},"Loading repository information")):In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(ce,{bold:!0},"Push current session to Copilot Coding Agent?"),In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(ce,null,"Prompt:"),In.default.createElement(Te,{borderStyle:"round",paddingX:1},In.default.createElement(ce,null,t.prompt.length>1e3?`${t.prompt.slice(0,1e3)}...`:t.prompt))),In.default.createElement(ce,null,"Copilot will push your local changes to the"," ",In.default.createElement(ce,{color:r.ACCENT},t.repository)," repository on"," ",In.default.createElement(ce,{color:r.ACCENT},t.asyncBranch)," (based on"," ",In.default.createElement(ce,{color:r.ACCENT},t.headBranch),") and draft a pull request based on your prompt."),In.default.createElement(p0,{items:[a],onSelect:I,escapeItem:s,onEscape:l}));case"push_processing":return In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{bold:!0},"Pushing session to Copilot Coding Agent",t.processingStartTime&&In.default.createElement(In.default.Fragment,null," (",In.default.createElement(j$e,{date:t.processingStartTime}),")"),":"),t.operations&&In.default.createElement(Te,{marginBottom:1},In.default.createElement(ial,{operations:t.operations,state:t,theme:r})),In.default.createElement(ce,null,"Logs will begin streaming here once Copilot Coding Agent starts work."));case"push_tracking":{let d=()=>{let p=t.sessionState,h=p==="queued"||p==="in_progress";return In.default.createElement(Te,null,In.default.createElement(ce,{bold:!0},t.prTitle||"Untitled"," #",t.prNumber||"..."," - "),(()=>{if(h)return In.default.createElement(In.default.Fragment,null,In.default.createElement(Lw,{color:r.COPILOT}),In.default.createElement(ce,null,p==="queued"?"Queued":"Processing"));let Z,N,y;switch(p){case"waiting_for_user":Z=r.WARNING,N="Waiting for user action",y="\u25CF";break;case"idle":Z=r.MUTED,N="Session paused",y="\u25CF";break;case"completed":Z=r.SUCCESS,N="Completed",y="\u25CF";break;case"failed":Z=r.ERROR,N="Failed",y="\u2717";break;case"timed_out":Z=r.ERROR,N="Timed out",y="\u2717";break;default:Z=r.MUTED,N="Initializing...",y="\u25CF"}return In.default.createElement(In.default.Fragment,null,In.default.createElement(ce,{color:Z},y," "),In.default.createElement(ce,null,N))})())},u=()=>In.default.createElement(ce,null,In.default.createElement(ce,{color:r.ACCENT},t.repository),t.prDraft&&" \u25CF Draft"," \xB7 Created by ",t.jobCreatedBy||"Copilot",t.jobCreatedAt&&In.default.createElement(In.default.Fragment,null," (",In.default.createElement(j$e,{date:t.jobCreatedAt}),")")),b=()=>{let p=t.prChangedFiles||0;if(p===0)return null;let h=t.prFiles?t.prFiles.length:0,Z=p-h;return In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(ce,null,"Files changed (",p,"):"),t.prFiles&&t.prFiles.map((N,y)=>In.default.createElement(ce,{key:y},"\u2514 ",N.filename," ",In.default.createElement(ce,{color:r.SUCCESS},"+",N.additions)," ",In.default.createElement(ce,{color:r.ERROR},"-",N.deletions))),Z>0&&In.default.createElement(ce,{dimColor:!0},"\u2514 ",Z," more file",Z===1?"":"s"," ","modified/added/deleted"))};return In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(Te,{flexDirection:"column"},d(),u()),t.jobUrl&&In.default.createElement(ce,null,t.jobUrl),b()),In.default.createElement(Te,null,In.default.createElement(Aq,{shortcut:"Ctrl+N",description:"Start a new session"})))}default:return In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{color:r.ERROR},"Unknown stage: ",t.stage))}};if(t.error){let d=t.error instanceof CO,u=d?t.error:null,b=d?"Job Status Pending":"Error Details:",p=d?r.WARNING:r.ERROR,h=d&&u?In.default.createElement(In.default.Fragment,null,In.default.createElement(ce,null,"We are taking longer than usual to start the task. To save you waiting, we have stopped checking the status. You can track the latest status by visiting"," ",u.prUrl?`your pull request ${u.prUrl}`:"https://github.com/copilot and checking your Tasks","."),In.default.createElement(ce,null,"If this issue persists, please contact support.")):In.default.createElement(ce,null,t.error.message);return In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{bold:!0,color:p},b),In.default.createElement(Te,{marginTop:1,flexDirection:"column",gap:1},h)),In.default.createElement(Te,null,In.default.createElement(Aq,{shortcut:"Esc",description:"Cancel"})))}return o()};ual.displayName="RemoteJobPushControlArea";var mal=ual;c();var Rme=nt(qt(),1);var bal=({onConfirm:t})=>Rme.default.createElement(h0,{title:"Remember screen reader mode",body:Rme.default.createElement(Te,{flexDirection:"column",gap:1},Rme.default.createElement(ce,null,"Copilot can enable screen reader optimizations in future sessions using the `screen_reader` configuration setting."),Rme.default.createElement(ce,null,"Do you want to remember screen reader mode for future sessions?")),items:[{label:"Yes, remember screen reader mode",value:"yes"},{label:"No, never ask me again",value:"never"}],escapeItem:{label:"No, ask me next time",value:"no"},onConfirm:t});c();var tT=nt(qt(),1);function Gal({sessionId:t,onClose:e}){let{theme:l}=_n();return Zc((n,r)=>{(r.return||r.escape)&&e()}),tT.default.createElement(Te,{flexDirection:"column",borderColor:l.BORDER},tT.default.createElement(Te,{flexDirection:"row",gap:1},tT.default.createElement(ce,{color:l.ACCENT,bold:!0},"Session ID:"),tT.default.createElement(ce,{color:l.FG},t)),tT.default.createElement(Te,{flexDirection:"column",marginTop:1},tT.default.createElement(ce,{color:l.MUTED},"Hit Enter or Esc to continue")))}c();var Zs=nt(qt(),1);function pal(t){let l=new Date().getTime()-t.getTime(),n=Math.floor(l/1e3),r=Math.floor(n/60),I=Math.floor(r/60),a=Math.floor(I/24),s=Math.floor(a/7),o=Math.floor(a/30),d=Math.floor(a/365);return n<60?"just now":r<60?`${r}m ago`:I<24?`${I}h ago`:a<7?`${a}d ago`:s<4?`${s}w ago`:o<12?`${o}mo ago`:`${d}y ago`}function XOn(t){return t.sort((e,l)=>{let n=e.isModified?e.modifiedTime.getTime():e.startTime.getTime();return(l.isModified?l.modifiedTime.getTime():l.startTime.getTime())-n})}function hal({sessionManager:t,onSessionSelected:e,onCancel:l,logger:n}){let{theme:r}=_n(),[I,a]=(0,Zs.useState)([]),[s,o]=(0,Zs.useState)(0),[d,u]=(0,Zs.useState)(!0),[b,p]=(0,Zs.useState)(null);(0,Zs.useEffect)(()=>{async function N(){try{let y=await t.listSessions();if(n.info(`Found ${y.length} sessions`),y.length===0){p("No previous sessions found"),u(!1);return}let Y=y.map(J=>async()=>{let S={sessionId:J.sessionId,startTime:J.startTime,modifiedTime:J.modifiedTime,isModified:Math.abs(J.modifiedTime.getTime()-J.startTime.getTime())>6e4,summary:"(no message content)",messageCount:0};try{let T=await t.getSession(J.sessionId,!1);return T?{...S,summary:T.summary||S.summary,messageCount:T.messageCount}:S}catch{return S}}),w=10,H=[];for(let J=0;J<Y.length;J+=w){let S=Y.slice(J,J+w),T=await Promise.all(S.map(j=>j()));H.push(...T);let U=XOn(H);a(U),u(!1)}}catch(y){p(`Failed to load sessions: ${y instanceof Error?y.message:String(y)}`),u(!1)}}N()},[t]),Zc((N,y)=>{if(d||b){y.escape&&l();return}y.upArrow&&s>0?o(s-1):y.downArrow&&s<I.length-1?o(s+1):y.return&&I.length>0?e(I[s].sessionId):y.escape&&l()});let h=()=>Zs.default.createElement(Te,{paddingBottom:1,paddingLeft:3,flexDirection:"row"},Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"#".padEnd(5)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Modified".padEnd(12)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Created".padEnd(12)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Msg".padEnd(5)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Summary")),Z=(N,y,Y)=>{let w=Y?r.SELECTED:r.FG,H=Y?r.SELECTED:r.MUTED,J=`${y+1}.`.padEnd(5),S=N.isModified?N.modifiedTime:N.startTime,U=pal(S).padEnd(12),O=pal(N.startTime).padEnd(12),z=N.messageCount.toString().padEnd(5),se=N.summary||"";return Zs.default.createElement(Te,{flexDirection:"row",key:N.sessionId},Zs.default.createElement(ce,{dimColor:!Y,color:Y?H:void 0},J),Zs.default.createElement(ce,{color:H},U),Zs.default.createElement(ce,{color:H},O),Zs.default.createElement(ce,{color:H},z),Zs.default.createElement(ce,{color:w},se))};return d?Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.ACCENT,bold:!0},"Loading sessions..."),Zs.default.createElement(ce,{color:r.MUTED},"Press Esc to cancel")):b?Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.ERROR,bold:!0},b),Zs.default.createElement(ce,{color:r.MUTED},"Press Esc to continue")):I.length===0?Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.ACCENT,bold:!0},"No previous sessions found"),Zs.default.createElement(ce,{color:r.MUTED},"Press Esc to continue")):Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.FG,bold:!0},"Select a session to resume:"),Zs.default.createElement(Te,{marginTop:1,flexDirection:"column"},h(),Zs.default.createElement(Te,null,Zs.default.createElement(Gq,{items:I,selectedIndex:s,maxRows:10,renderItem:Z,showScrollHints:!0}))),Zs.default.createElement(Te,{marginTop:1},Zs.default.createElement(ce,{color:r.MUTED},"Use \u2191\u2193 to navigate, Enter to select, Esc to cancel")))}c();var Qq=nt(qt(),1);var kOn=45,LOn=t=>{let{theme:e}=_n(),l=(n,r,I)=>{let a=I?e.SELECTED:e.MUTED,s=n.aliases&&n.aliases.length>0?`, ${n.aliases.join(", ")}`:"",o=`${n.name}${s}${n.args?` ${n.args}`:""}`;return Qq.default.createElement(Te,{flexDirection:"row",key:n.name},Qq.default.createElement(Te,{width:kOn},Qq.default.createElement(ce,{color:a,wrap:"truncate"},o)),Qq.default.createElement(ce,{color:a,wrap:"truncate"},n.help))};return Qq.default.createElement(Gq,{items:t.options,selectedIndex:t.selectedIndex,maxRows:t.maxRows,renderItem:l,showScrollHints:t.showScrollHints??!1})},Aal=LOn;c();var y0=nt(qt(),1);var JOn=100,xOn=1e3,SOn=({text:t,color:e,shimmerColor:l})=>{let[n,r]=(0,y0.useState)(0);return(0,y0.useEffect)(()=>{let I=setTimeout(()=>{r(a=>a===t.length?0:a===t.length-1?t.length:a+1)},n===t.length?xOn:JOn);return()=>clearTimeout(I)},[n,t.length]),y0.default.createElement(ce,null,t.split("").map((I,a)=>y0.default.createElement(ce,{key:a,color:a===n?l:e},I)))},Zal=t=>{let{hideToggleHelp:e}=wQe(),{theme:l}=_n(),n="\xB7",r=t.mode==="executing"?"Executing":t.mode==="cancelling"?"Cancelling":"Thinking",I=t.mode!=="cancelling"&&!e,a=t.streamingResponseSize&&t.streamingResponseSize>0?`(Esc to cancel ${n} ${uE(t.streamingResponseSize,1)})`:"(Esc to cancel)";return y0.default.createElement(Te,{flexDirection:"row",gap:1},y0.default.createElement(Te,{flexDirection:"row"},y0.default.createElement(Lw,{color:l.COPILOT}),y0.default.createElement(SOn,{text:r,color:l.COPILOT,shimmerColor:l.COPILOT_BRIGHT})),I&&y0.default.createElement(ce,{color:l.MUTED},a))};c();var $a=nt(qt(),1);c();var Fq=(t,e)=>{if(!t)return{color:e.MUTED,icon:"\u25CB",label:"In Progress"};switch(t.type){case"in_progress":return{color:e.MUTED,icon:"\u25CB",label:"In Progress"};case"success":return{color:e.SUCCESS,icon:"\u2713",label:"Success"};case"rejected":return{color:e.ERROR,icon:"\u2717",label:"Rejected"};case"denied":return{color:e.ERROR,icon:"\u2717",label:"Denied"};case"failure":return{color:e.ERROR,icon:"\u2717",label:"Failed"};default:throw new Error(`unexpected type ${t.type}`)}};c();var HG=nt(qt(),1);c();var lT="local_shell";function Nal(t,e=8){return t.includes(" ")?t.split(`
|
|
2367
|
+
${e}`:""),isTruncated:!1}}function dal(t){let e=Math.floor((Date.now()-t.getTime())/1e3);if(e<60)return`${e}s`;let l=Math.floor(e/60);return l<60?`${l}m`:`${Math.floor(l/60)}h`}var j$e=({date:t,prefix:e="",suffix:l=""})=>{let[,n]=(0,wq.useState)(0);return(0,wq.useEffect)(()=>{let r,I=()=>{Math.floor((Date.now()-t.getTime())/1e3)<60?r=setInterval(()=>{n(o=>o+1)},1e3):r=setInterval(()=>{n(o=>o+1)},6e4)};I();let a=setInterval(()=>{Math.floor((Date.now()-t.getTime())/1e3)>=60&&(clearInterval(r),I(),clearInterval(a))},1e3);return()=>{clearInterval(r),clearInterval(a)}},[t]),wq.default.createElement(ce,null,e,dal(t),l)};var ual=({state:t,onAdvance:e,onCancel:l,onStartNewSession:n})=>{let{theme:r}=_n();Zc((d,u)=>{if(t.error&&u.escape){l();return}t.stage==="tracking"&&u.ctrl&&d==="n"&&(n?n():l())});let I=d=>{d.value?e():l()},a={label:"Yes",value:!0},s={label:"No, cancel",value:!1},o=()=>{switch(t.stage){case"uncommitted_changes_check":return t.isLoading?In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(ce,{bold:!0},"Delegate the current session to Copilot Coding Agent?"),In.default.createElement(Lw,{color:r.MUTED},"Checking for uncommitted changes")):t.hasUncommittedChanges&&t.fileCount?In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(ce,{bold:!0},"Delegate the current session to Copilot Coding Agent?"),In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(ce,null,"Uncommitted changes detected:"),t.fileCount.staged>0&&In.default.createElement(ce,null,"- Staged files: ",In.default.createElement(ce,{color:r.ACCENT},t.fileCount.staged)),t.fileCount.unstaged>0&&In.default.createElement(ce,null,"- Modified files: ",In.default.createElement(ce,{color:r.ACCENT},t.fileCount.unstaged)),t.fileCount.untracked>0&&In.default.createElement(ce,null,"- Untracked files: ",In.default.createElement(ce,{color:r.ACCENT},t.fileCount.untracked))),In.default.createElement(ce,null,"Would you like to commit all changes before delegating? This will create a checkpoint commit: ",In.default.createElement(ce,{color:r.ACCENT},t.commitMessage)),In.default.createElement(p0,{items:[a],onSelect:I,escapeItem:s,onEscape:l})):null;case"confirm":return t.isLoading?In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{bold:!0},"Delegate the current session to Copilot Coding Agent?"),In.default.createElement(ce,null," "),In.default.createElement(Lw,{color:r.MUTED},"Loading repository information")):In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(ce,{bold:!0},"Delegate the current session to Copilot Coding Agent?"),In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(ce,null,"Prompt:"),In.default.createElement(Te,{borderStyle:"round",paddingX:1},In.default.createElement(ce,null,t.prompt.length>1e3?`${t.prompt.slice(0,1e3)}...`:t.prompt))),In.default.createElement(ce,null,"Copilot will delegate your local changes to the"," ",In.default.createElement(ce,{color:r.ACCENT},t.repository)," repository on"," ",In.default.createElement(ce,{color:r.ACCENT},t.asyncBranch)," (based on"," ",In.default.createElement(ce,{color:r.ACCENT},t.headBranch),") and draft a pull request based on your prompt."),In.default.createElement(p0,{items:[a],onSelect:I,escapeItem:s,onEscape:l}));case"processing":return In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{bold:!0},"Delegating session to Copilot Coding Agent",t.processingStartTime&&In.default.createElement(In.default.Fragment,null," (",In.default.createElement(j$e,{date:t.processingStartTime}),")"),":"),t.operations&&In.default.createElement(Te,{marginBottom:1},In.default.createElement(ial,{operations:t.operations,state:t,theme:r})),In.default.createElement(ce,null,"Logs will begin streaming here once Copilot Coding Agent starts work."));case"tracking":{let d=()=>{let p=t.sessionState,h=p==="queued"||p==="in_progress";return In.default.createElement(Te,null,In.default.createElement(ce,{bold:!0},t.prTitle||"Untitled"," #",t.prNumber||"..."," - "),(()=>{if(h)return In.default.createElement(In.default.Fragment,null,In.default.createElement(Lw,{color:r.COPILOT}),In.default.createElement(ce,null,p==="queued"?"Queued":"Processing"));let Z,N,y;switch(p){case"waiting_for_user":Z=r.WARNING,N="Waiting for user action",y="\u25CF";break;case"idle":Z=r.MUTED,N="Session paused",y="\u25CF";break;case"completed":Z=r.SUCCESS,N="Completed",y="\u25CF";break;case"failed":Z=r.ERROR,N="Failed",y="\u2717";break;case"timed_out":Z=r.ERROR,N="Timed out",y="\u2717";break;default:Z=r.MUTED,N="Initializing...",y="\u25CF"}return In.default.createElement(In.default.Fragment,null,In.default.createElement(ce,{color:Z},y," "),In.default.createElement(ce,null,N))})())},u=()=>In.default.createElement(ce,null,In.default.createElement(ce,{color:r.ACCENT},t.repository),t.prDraft&&" \u25CF Draft"," \xB7 Created by ",t.jobCreatedBy||"Copilot",t.jobCreatedAt&&In.default.createElement(In.default.Fragment,null," (",In.default.createElement(j$e,{date:t.jobCreatedAt}),")")),b=()=>{let p=t.prChangedFiles||0;if(p===0)return null;let h=t.prFiles?t.prFiles.length:0,Z=p-h;return In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(ce,null,"Files changed (",p,"):"),t.prFiles&&t.prFiles.map((N,y)=>In.default.createElement(ce,{key:y},"\u2514 ",N.filename," ",In.default.createElement(ce,{color:r.SUCCESS},"+",N.additions)," ",In.default.createElement(ce,{color:r.ERROR},"-",N.deletions))),Z>0&&In.default.createElement(ce,{dimColor:!0},"\u2514 ",Z," more file",Z===1?"":"s"," ","modified/added/deleted"))};return In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1,gap:1},In.default.createElement(Te,{flexDirection:"column"},d(),u()),t.jobUrl&&In.default.createElement(ce,null,t.jobUrl),b()),In.default.createElement(Te,null,In.default.createElement(Aq,{shortcut:"Ctrl+N",description:"Start a new session"})))}default:return In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{color:r.ERROR},"Unknown stage: ",t.stage))}};if(t.error){let d=t.error instanceof CO,u=d?t.error:null,b=d?"Job Status Pending":"Error Details:",p=d?r.WARNING:r.ERROR,h=d&&u?In.default.createElement(In.default.Fragment,null,In.default.createElement(ce,null,"We are taking longer than usual to start the task. To save you waiting, we have stopped checking the status. You can track the latest status by visiting"," ",u.prUrl?`your pull request ${u.prUrl}`:"https://github.com/copilot and checking your Tasks","."),In.default.createElement(ce,null,"If this issue persists, please contact support.")):In.default.createElement(ce,null,t.error.message);return In.default.createElement(Te,{flexDirection:"column"},In.default.createElement(Te,{flexDirection:"column",borderStyle:"round",paddingX:1},In.default.createElement(ce,{bold:!0,color:p},b),In.default.createElement(Te,{marginTop:1,flexDirection:"column",gap:1},h)),In.default.createElement(Te,null,In.default.createElement(Aq,{shortcut:"Esc",description:"Cancel"})))}return o()};ual.displayName="RemoteJobDelegationControlArea";var mal=ual;c();var Rme=nt(qt(),1);var bal=({onConfirm:t})=>Rme.default.createElement(h0,{title:"Remember screen reader mode",body:Rme.default.createElement(Te,{flexDirection:"column",gap:1},Rme.default.createElement(ce,null,"Copilot can enable screen reader optimizations in future sessions using the `screen_reader` configuration setting."),Rme.default.createElement(ce,null,"Do you want to remember screen reader mode for future sessions?")),items:[{label:"Yes, remember screen reader mode",value:"yes"},{label:"No, never ask me again",value:"never"}],escapeItem:{label:"No, ask me next time",value:"no"},onConfirm:t});c();var tT=nt(qt(),1);function Gal({sessionId:t,onClose:e}){let{theme:l}=_n();return Zc((n,r)=>{(r.return||r.escape)&&e()}),tT.default.createElement(Te,{flexDirection:"column",borderColor:l.BORDER},tT.default.createElement(Te,{flexDirection:"row",gap:1},tT.default.createElement(ce,{color:l.ACCENT,bold:!0},"Session ID:"),tT.default.createElement(ce,{color:l.FG},t)),tT.default.createElement(Te,{flexDirection:"column",marginTop:1},tT.default.createElement(ce,{color:l.MUTED},"Hit Enter or Esc to continue")))}c();var Zs=nt(qt(),1);function pal(t){let l=new Date().getTime()-t.getTime(),n=Math.floor(l/1e3),r=Math.floor(n/60),I=Math.floor(r/60),a=Math.floor(I/24),s=Math.floor(a/7),o=Math.floor(a/30),d=Math.floor(a/365);return n<60?"just now":r<60?`${r}m ago`:I<24?`${I}h ago`:a<7?`${a}d ago`:s<4?`${s}w ago`:o<12?`${o}mo ago`:`${d}y ago`}function XOn(t){return t.sort((e,l)=>{let n=e.isModified?e.modifiedTime.getTime():e.startTime.getTime();return(l.isModified?l.modifiedTime.getTime():l.startTime.getTime())-n})}function hal({sessionManager:t,onSessionSelected:e,onCancel:l,logger:n}){let{theme:r}=_n(),[I,a]=(0,Zs.useState)([]),[s,o]=(0,Zs.useState)(0),[d,u]=(0,Zs.useState)(!0),[b,p]=(0,Zs.useState)(null);(0,Zs.useEffect)(()=>{async function N(){try{let y=await t.listSessions();if(n.info(`Found ${y.length} sessions`),y.length===0){p("No previous sessions found"),u(!1);return}let Y=y.map(J=>async()=>{let S={sessionId:J.sessionId,startTime:J.startTime,modifiedTime:J.modifiedTime,isModified:Math.abs(J.modifiedTime.getTime()-J.startTime.getTime())>6e4,summary:"(no message content)",messageCount:0};try{let T=await t.getSession(J.sessionId,!1);return T?{...S,summary:T.summary||S.summary,messageCount:T.messageCount}:S}catch{return S}}),w=10,H=[];for(let J=0;J<Y.length;J+=w){let S=Y.slice(J,J+w),T=await Promise.all(S.map(j=>j()));H.push(...T);let U=XOn(H);a(U),u(!1)}}catch(y){p(`Failed to load sessions: ${y instanceof Error?y.message:String(y)}`),u(!1)}}N()},[t]),Zc((N,y)=>{if(d||b){y.escape&&l();return}y.upArrow&&s>0?o(s-1):y.downArrow&&s<I.length-1?o(s+1):y.return&&I.length>0?e(I[s].sessionId):y.escape&&l()});let h=()=>Zs.default.createElement(Te,{paddingBottom:1,paddingLeft:3,flexDirection:"row"},Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"#".padEnd(5)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Modified".padEnd(12)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Created".padEnd(12)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Msg".padEnd(5)),Zs.default.createElement(ce,{color:r.MUTED,bold:!0},"Summary")),Z=(N,y,Y)=>{let w=Y?r.SELECTED:r.FG,H=Y?r.SELECTED:r.MUTED,J=`${y+1}.`.padEnd(5),S=N.isModified?N.modifiedTime:N.startTime,U=pal(S).padEnd(12),O=pal(N.startTime).padEnd(12),z=N.messageCount.toString().padEnd(5),se=N.summary||"";return Zs.default.createElement(Te,{flexDirection:"row",key:N.sessionId},Zs.default.createElement(ce,{dimColor:!Y,color:Y?H:void 0},J),Zs.default.createElement(ce,{color:H},U),Zs.default.createElement(ce,{color:H},O),Zs.default.createElement(ce,{color:H},z),Zs.default.createElement(ce,{color:w},se))};return d?Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.ACCENT,bold:!0},"Loading sessions..."),Zs.default.createElement(ce,{color:r.MUTED},"Press Esc to cancel")):b?Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.ERROR,bold:!0},b),Zs.default.createElement(ce,{color:r.MUTED},"Press Esc to continue")):I.length===0?Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.ACCENT,bold:!0},"No previous sessions found"),Zs.default.createElement(ce,{color:r.MUTED},"Press Esc to continue")):Zs.default.createElement(Te,{flexDirection:"column"},Zs.default.createElement(ce,{color:r.FG,bold:!0},"Select a session to resume:"),Zs.default.createElement(Te,{marginTop:1,flexDirection:"column"},h(),Zs.default.createElement(Te,null,Zs.default.createElement(Gq,{items:I,selectedIndex:s,maxRows:10,renderItem:Z,showScrollHints:!0}))),Zs.default.createElement(Te,{marginTop:1},Zs.default.createElement(ce,{color:r.MUTED},"Use \u2191\u2193 to navigate, Enter to select, Esc to cancel")))}c();var Qq=nt(qt(),1);var kOn=45,LOn=t=>{let{theme:e}=_n(),l=(n,r,I)=>{let a=I?e.SELECTED:e.MUTED,s=n.aliases&&n.aliases.length>0?`, ${n.aliases.join(", ")}`:"",o=`${n.name}${s}${n.args?` ${n.args}`:""}`;return Qq.default.createElement(Te,{flexDirection:"row",key:n.name},Qq.default.createElement(Te,{width:kOn},Qq.default.createElement(ce,{color:a,wrap:"truncate"},o)),Qq.default.createElement(ce,{color:a,wrap:"truncate"},n.help))};return Qq.default.createElement(Gq,{items:t.options,selectedIndex:t.selectedIndex,maxRows:t.maxRows,renderItem:l,showScrollHints:t.showScrollHints??!1})},Aal=LOn;c();var y0=nt(qt(),1);var JOn=100,xOn=1e3,SOn=({text:t,color:e,shimmerColor:l})=>{let[n,r]=(0,y0.useState)(0);return(0,y0.useEffect)(()=>{let I=setTimeout(()=>{r(a=>a===t.length?0:a===t.length-1?t.length:a+1)},n===t.length?xOn:JOn);return()=>clearTimeout(I)},[n,t.length]),y0.default.createElement(ce,null,t.split("").map((I,a)=>y0.default.createElement(ce,{key:a,color:a===n?l:e},I)))},Zal=t=>{let{hideToggleHelp:e}=wQe(),{theme:l}=_n(),n="\xB7",r=t.mode==="executing"?"Executing":t.mode==="cancelling"?"Cancelling":"Thinking",I=t.mode!=="cancelling"&&!e,a=t.streamingResponseSize&&t.streamingResponseSize>0?`(Esc to cancel ${n} ${uE(t.streamingResponseSize,1)})`:"(Esc to cancel)";return y0.default.createElement(Te,{flexDirection:"row",gap:1},y0.default.createElement(Te,{flexDirection:"row"},y0.default.createElement(Lw,{color:l.COPILOT}),y0.default.createElement(SOn,{text:r,color:l.COPILOT,shimmerColor:l.COPILOT_BRIGHT})),I&&y0.default.createElement(ce,{color:l.MUTED},a))};c();var $a=nt(qt(),1);c();var Fq=(t,e)=>{if(!t)return{color:e.MUTED,icon:"\u25CB",label:"In Progress"};switch(t.type){case"in_progress":return{color:e.MUTED,icon:"\u25CB",label:"In Progress"};case"success":return{color:e.SUCCESS,icon:"\u2713",label:"Success"};case"rejected":return{color:e.ERROR,icon:"\u2717",label:"Rejected"};case"denied":return{color:e.ERROR,icon:"\u2717",label:"Denied"};case"failure":return{color:e.ERROR,icon:"\u2717",label:"Failed"};default:throw new Error(`unexpected type ${t.type}`)}};c();var HG=nt(qt(),1);c();var lT="local_shell";function Nal(t,e=8){return t.includes(" ")?t.split(`
|
|
2368
2368
|
`).map(l=>{let n="",r=0;for(let I of l)if(I===" "){let a=e-r%e;n+=" ".repeat(a),r+=a}else n+=I,r+=1;return n}).join(`
|
|
2369
2369
|
`):t}var BOn=/[\u2500-\u257F\u2580-\u259F]/g;function Cq(t){return YR(t).replace(/\r/g,`
|
|
2370
2370
|
`).replace(/\t/g," ").replace(BOn,"")}function lFe(t){try{return Go.parse(t,{async:!1}).replace(/\n{3,}/g,`
|
|
@@ -2389,7 +2389,7 @@ ${this.escapeXml(this.secretFilter.filterSecrets(l.trim()))}
|
|
|
2389
2389
|
`)[0],J=H.match(dTn)?.[0]??"";switch(Ve._free(n),y){case nY.Syntax:throw new Qme(nY.Syntax,{suffix:`${w}: '${H}'...`},w,0);case nY.NodeName:throw new Qme(y,{word:J},w,J.length);case nY.FieldName:throw new Qme(y,{word:J},w,J.length);case nY.CaptureName:throw new Qme(y,{word:J},w,J.length);case nY.PatternStructure:throw new Qme(y,{suffix:`${w}: '${H}'...`},w,0)}}let I=Ve._ts_query_string_count(r),a=Ve._ts_query_capture_count(r),s=Ve._ts_query_pattern_count(r),o=new Array(a),d=new Array(s),u=new Array(I);for(let y=0;y<a;y++){let Y=Ve._ts_query_capture_name_for_id(r,y,er),w=Ve.getValue(er,"i32");o[y]=Ve.UTF8ToString(Y,w)}for(let y=0;y<s;y++){let Y=new Array(a);for(let w=0;w<a;w++){let H=Ve._ts_query_capture_quantifier_for_id(r,y,w);Y[w]=H}d[y]=Y}for(let y=0;y<I;y++){let Y=Ve._ts_query_string_value_for_id(r,y,er),w=Ve.getValue(er,"i32");u[y]=Ve.UTF8ToString(Y,w)}let b=new Array(s),p=new Array(s),h=new Array(s),Z=new Array(s),N=new Array(s);for(let y=0;y<s;y++){let Y=Ve._ts_query_predicates_for_pattern(r,y,er),w=Ve.getValue(er,"i32");Z[y]=[],N[y]=[];let H=new Array,J=Y;for(let S=0;S<w;S++){let T=Ve.getValue(J,"i32");J+=ur;let U=Ve.getValue(J,"i32");J+=ur,Pal(y,T,U,o,u,H,N,Z,b,p,h)}Object.freeze(N[y]),Object.freeze(Z[y]),Object.freeze(b[y]),Object.freeze(p[y]),Object.freeze(h[y])}Ve._free(n),this[0]=r,this.captureNames=o,this.captureQuantifiers=d,this.textPredicates=N,this.predicates=Z,this.setProperties=b,this.assertedProperties=p,this.refutedProperties=h,this.exceededMatchLimit=!1}delete(){Ve._ts_query_delete(this[0]),this[0]=0}matches(t,e={}){let l=e.startPosition??gL,n=e.endPosition??gL,r=e.startIndex??0,I=e.endIndex??0,a=e.matchLimit??4294967295,s=e.maxStartDepth??4294967295,o=e.timeoutMicros??0,d=e.progressCallback;if(typeof a!="number")throw new Error("Arguments must be numbers");if(this.matchLimit=a,I!==0&&r>I)throw new Error("`startIndex` cannot be greater than `endIndex`");if(n!==gL&&(l.row>n.row||l.row===n.row&&l.column>n.column))throw new Error("`startPosition` cannot be greater than `endPosition`");d&&(Ve.currentQueryProgressCallback=d),UI(t),Ve._ts_query_matches_wasm(this[0],t.tree[0],l.row,l.column,n.row,n.column,r,I,a,s,o);let u=Ve.getValue(er,"i32"),b=Ve.getValue(er+ur,"i32"),p=Ve.getValue(er+2*ur,"i32"),h=new Array(u);this.exceededMatchLimit=!!p;let Z=0,N=b;for(let y=0;y<u;y++){let Y=Ve.getValue(N,"i32");N+=ur;let w=Ve.getValue(N,"i32");N+=ur;let H=new Array(w);if(N=set(this,t.tree,N,Y,H),this.textPredicates[Y].every(J=>J(H))){h[Z]={pattern:Y,patternIndex:Y,captures:H};let J=this.setProperties[Y];h[Z].setProperties=J;let S=this.assertedProperties[Y];h[Z].assertedProperties=S;let T=this.refutedProperties[Y];h[Z].refutedProperties=T,Z++}}return h.length=Z,Ve._free(b),Ve.currentQueryProgressCallback=null,h}captures(t,e={}){let l=e.startPosition??gL,n=e.endPosition??gL,r=e.startIndex??0,I=e.endIndex??0,a=e.matchLimit??4294967295,s=e.maxStartDepth??4294967295,o=e.timeoutMicros??0,d=e.progressCallback;if(typeof a!="number")throw new Error("Arguments must be numbers");if(this.matchLimit=a,I!==0&&r>I)throw new Error("`startIndex` cannot be greater than `endIndex`");if(n!==gL&&(l.row>n.row||l.row===n.row&&l.column>n.column))throw new Error("`startPosition` cannot be greater than `endPosition`");d&&(Ve.currentQueryProgressCallback=d),UI(t),Ve._ts_query_captures_wasm(this[0],t.tree[0],l.row,l.column,n.row,n.column,r,I,a,s,o);let u=Ve.getValue(er,"i32"),b=Ve.getValue(er+ur,"i32"),p=Ve.getValue(er+2*ur,"i32"),h=new Array;this.exceededMatchLimit=!!p;let Z=new Array,N=b;for(let y=0;y<u;y++){let Y=Ve.getValue(N,"i32");N+=ur;let w=Ve.getValue(N,"i32");N+=ur;let H=Ve.getValue(N,"i32");if(N+=ur,Z.length=w,N=set(this,t.tree,N,Y,Z),this.textPredicates[Y].every(J=>J(Z))){let J=Z[H],S=this.setProperties[Y];J.setProperties=S;let T=this.assertedProperties[Y];J.assertedProperties=T;let U=this.refutedProperties[Y];J.refutedProperties=U,h.push(J)}}return Ve._free(b),Ve.currentQueryProgressCallback=null,h}predicatesForPattern(t){return this.predicates[t]}disableCapture(t){let e=Ve.lengthBytesUTF8(t),l=Ve._malloc(e+1);Ve.stringToUTF8(t,l,e+1),Ve._ts_query_disable_capture(this[0],l,e),Ve._free(l)}disablePattern(t){if(t>=this.predicates.length)throw new Error(`Pattern index is ${t} but the pattern count is ${this.predicates.length}`);Ve._ts_query_disable_pattern(this[0],t)}didExceedMatchLimit(){return this.exceededMatchLimit}startIndexForPattern(t){if(t>=this.predicates.length)throw new Error(`Pattern index is ${t} but the pattern count is ${this.predicates.length}`);return Ve._ts_query_start_byte_for_pattern(this[0],t)}endIndexForPattern(t){if(t>=this.predicates.length)throw new Error(`Pattern index is ${t} but the pattern count is ${this.predicates.length}`);return Ve._ts_query_end_byte_for_pattern(this[0],t)}patternCount(){return Ve._ts_query_pattern_count(this[0])}captureIndexForName(t){return this.captureNames.indexOf(t)}isPatternRooted(t){return Ve._ts_query_is_pattern_rooted(this[0],t)===1}isPatternNonLocal(t){return Ve._ts_query_is_pattern_non_local(this[0],t)===1}isPatternGuaranteedAtStep(t){return Ve._ts_query_is_pattern_guaranteed_at_step(this[0],t)===1}},mTn=/^tree_sitter_\w+$/,cet=class jal{static{Nt(this,"Language")}0=0;types;fields;constructor(e,l){fq(e),this[0]=l,this.types=new Array(Ve._ts_language_symbol_count(this[0]));for(let n=0,r=this.types.length;n<r;n++)Ve._ts_language_symbol_type(this[0],n)<2&&(this.types[n]=Ve.UTF8ToString(Ve._ts_language_symbol_name(this[0],n)));this.fields=new Array(Ve._ts_language_field_count(this[0])+1);for(let n=0,r=this.fields.length;n<r;n++){let I=Ve._ts_language_field_name_for_id(this[0],n);I!==0?this.fields[n]=Ve.UTF8ToString(I):this.fields[n]=null}}get name(){let e=Ve._ts_language_name(this[0]);return e===0?null:Ve.UTF8ToString(e)}get version(){return Ve._ts_language_version(this[0])}get abiVersion(){return Ve._ts_language_abi_version(this[0])}get metadata(){Ve._ts_language_metadata(this[0]);let e=Ve.getValue(er,"i32"),l=Ve.getValue(er+ur,"i32");return e===0?null:Oal(l)}get fieldCount(){return this.fields.length-1}get stateCount(){return Ve._ts_language_state_count(this[0])}fieldIdForName(e){let l=this.fields.indexOf(e);return l!==-1?l:null}fieldNameForId(e){return this.fields[e]??null}idForNodeType(e,l){let n=Ve.lengthBytesUTF8(e),r=Ve._malloc(n+1);Ve.stringToUTF8(e,r,n+1);let I=Ve._ts_language_symbol_for_name(this[0],r,n,l?1:0);return Ve._free(r),I||null}get nodeTypeCount(){return Ve._ts_language_symbol_count(this[0])}nodeTypeForId(e){let l=Ve._ts_language_symbol_name(this[0],e);return l?Ve.UTF8ToString(l):null}nodeTypeIsNamed(e){return!!Ve._ts_language_type_is_named_wasm(this[0],e)}nodeTypeIsVisible(e){return!!Ve._ts_language_type_is_visible_wasm(this[0],e)}get supertypes(){Ve._ts_language_supertypes_wasm(this[0]);let e=Ve.getValue(er,"i32"),l=Ve.getValue(er+ur,"i32"),n=new Array(e);if(e>0){let r=l;for(let I=0;I<e;I++)n[I]=Ve.getValue(r,"i16"),r+=kal}return n}subtypes(e){Ve._ts_language_subtypes_wasm(this[0],e);let l=Ve.getValue(er,"i32"),n=Ve.getValue(er+ur,"i32"),r=new Array(l);if(l>0){let I=n;for(let a=0;a<l;a++)r[a]=Ve.getValue(I,"i16"),I+=kal}return r}nextState(e,l){return Ve._ts_language_next_state(this[0],e,l)}lookaheadIterator(e){let l=Ve._ts_lookahead_iterator_new(this[0],e);return l?new ITn(NL,l,this):null}query(e){return console.warn("Language.query is deprecated. Use new Query(language, source) instead."),new uTn(this,e)}static async load(e){let l;e instanceof Uint8Array?l=Promise.resolve(e):globalThis.process?.versions.node?l=(await import("fs/promises")).readFile(e):l=fetch(e).then(s=>s.arrayBuffer().then(o=>{if(s.ok)return new Uint8Array(o);{let d=new TextDecoder("utf-8").decode(o);throw new Error(`Language.load failed with status ${s.status}.
|
|
2390
2390
|
|
|
2391
2391
|
${d}`)}}));let n=await Ve.loadWebAssemblyModule(await l,{loadAsync:!0}),r=Object.keys(n),I=r.find(s=>mTn.test(s)&&!s.includes("external_scanner_"));if(!I)throw console.log(`Couldn't find language function in WASM file. Symbols:
|
|
2392
|
-
${JSON.stringify(r,null,2)}`),new Error("Language.load failed: no language function found in WASM file");let a=n[I]();return new jal(NL,a)}},bTn=(()=>{var _scriptName=import.meta.url;return async function(moduleArg={}){var moduleRtn,Module=moduleArg,readyPromiseResolve,readyPromiseReject,readyPromise=new Promise((t,e)=>{readyPromiseResolve=t,readyPromiseReject=e}),ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){let{createRequire:t}=await import("module");var require=t(import.meta.url)}Module.currentQueryProgressCallback=null,Module.currentProgressCallback=null,Module.currentLogCallback=null,Module.currentParseCallback=null;var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=Nt((t,e)=>{throw e},"quit_"),scriptDirectory="";function locateFile(t){return Module.locateFile?Module.locateFile(t,scriptDirectory):scriptDirectory+t}Nt(locateFile,"locateFile");var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");import.meta.url.startsWith("data:")||(scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"),readBinary=Nt(t=>{t=isFileURI(t)?new URL(t):t;var e=fs.readFileSync(t);return e},"readBinary"),readAsync=Nt(async(t,e=!0)=>{t=isFileURI(t)?new URL(t):t;var l=fs.readFileSync(t,e?void 0:"utf8");return l},"readAsync"),!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),quit_=Nt((t,e)=>{throw process.exitCode=t,e},"quit_")}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:typeof document<"u"&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptName&&(scriptDirectory=_scriptName),scriptDirectory.startsWith("blob:")?scriptDirectory="":scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),ENVIRONMENT_IS_WORKER&&(readBinary=Nt(t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)},"readBinary")),readAsync=Nt(async t=>{if(isFileURI(t))return new Promise((l,n)=>{var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="arraybuffer",r.onload=()=>{if(r.status==200||r.status==0&&r.response){l(r.response);return}n(r.status)},r.onerror=n,r.send(null)});var e=await fetch(t,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+" : "+e.url)},"readAsync"));var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary=Module.wasmBinary,wasmMemory,ABORT=!1,EXITSTATUS;function assert(t,e){t||abort(e)}Nt(assert,"assert");var HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64,HEAP_DATA_VIEW,runtimeInitialized=!1,isFileURI=Nt(t=>t.startsWith("file://"),"isFileURI");function updateMemoryViews(){var t=wasmMemory.buffer;Module.HEAP_DATA_VIEW=HEAP_DATA_VIEW=new DataView(t),Module.HEAP8=HEAP8=new Int8Array(t),Module.HEAP16=HEAP16=new Int16Array(t),Module.HEAPU8=HEAPU8=new Uint8Array(t),Module.HEAPU16=HEAPU16=new Uint16Array(t),Module.HEAP32=HEAP32=new Int32Array(t),Module.HEAPU32=HEAPU32=new Uint32Array(t),Module.HEAPF32=HEAPF32=new Float32Array(t),Module.HEAPF64=HEAPF64=new Float64Array(t),Module.HEAP64=HEAP64=new BigInt64Array(t),Module.HEAPU64=HEAPU64=new BigUint64Array(t)}if(Nt(updateMemoryViews,"updateMemoryViews"),Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768})}updateMemoryViews();var __RELOC_FUNCS__=[];function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns)}Nt(preRun,"preRun");function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),wasmExports.__wasm_call_ctors(),callRuntimeCallbacks(onPostCtors)}Nt(initRuntime,"initRuntime");function preMain(){}Nt(preMain,"preMain");function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}Nt(postRun,"postRun");var runDependencies=0,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}Nt(getUniqueRunDependency,"getUniqueRunDependency");function addRunDependency(t){runDependencies++,Module.monitorRunDependencies?.(runDependencies)}Nt(addRunDependency,"addRunDependency");function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Nt(removeRunDependency,"removeRunDependency");function abort(t){Module.onAbort?.(t),t="Aborted("+t+")",err(t),ABORT=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw readyPromiseReject(e),e}Nt(abort,"abort");var wasmBinaryFile;function findWasmBinary(){return Module.locateFile?locateFile("tree-sitter.wasm"):new URL("tree-sitter.wasm",import.meta.url).href}Nt(findWasmBinary,"findWasmBinary");function getBinarySync(t){if(t==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(t);throw"both async and sync fetching of the wasm failed"}Nt(getBinarySync,"getBinarySync");async function getWasmBinary(t){if(!wasmBinary)try{var e=await readAsync(t);return new Uint8Array(e)}catch{}return getBinarySync(t)}Nt(getWasmBinary,"getWasmBinary");async function instantiateArrayBuffer(t,e){try{var l=await getWasmBinary(t),n=await WebAssembly.instantiate(l,e);return n}catch(r){err(`failed to asynchronously prepare wasm: ${r}`),abort(r)}}Nt(instantiateArrayBuffer,"instantiateArrayBuffer");async function instantiateAsync(t,e,l){if(!t&&typeof WebAssembly.instantiateStreaming=="function"&&!isFileURI(e)&&!ENVIRONMENT_IS_NODE)try{var n=fetch(e,{credentials:"same-origin"}),r=await WebAssembly.instantiateStreaming(n,l);return r}catch(I){err(`wasm streaming compile failed: ${I}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(e,l)}Nt(instantiateAsync,"instantiateAsync");function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}Nt(getWasmImports,"getWasmImports");async function createWasm(){function t(I,a){wasmExports=I.exports,wasmExports=relocateExports(wasmExports,1024);var s=getDylinkMetadata(a);return s.neededDynlibs&&(dynamicLibraries=s.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),wasmExports}Nt(t,"receiveInstance"),addRunDependency("wasm-instantiate");function e(I){return t(I.instance,I.module)}Nt(e,"receiveInstantiationResult");var l=getWasmImports();if(Module.instantiateWasm)return new Promise((I,a)=>{Module.instantiateWasm(l,(s,o)=>{t(s,o),I(s.exports)})});wasmBinaryFile??=findWasmBinary();try{var n=await instantiateAsync(wasmBinary,wasmBinaryFile,l),r=e(n);return r}catch(I){return readyPromiseReject(I),Promise.reject(I)}}Nt(createWasm,"createWasm");var ASM_CONSTS={};class ExitStatus{static{Nt(this,"ExitStatus")}name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(t,e){var l=GOT[e];return l||(l=GOT[e]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(e)||(l.required=!0),l}},LE_HEAP_LOAD_F32=Nt(t=>HEAP_DATA_VIEW.getFloat32(t,!0),"LE_HEAP_LOAD_F32"),LE_HEAP_LOAD_F64=Nt(t=>HEAP_DATA_VIEW.getFloat64(t,!0),"LE_HEAP_LOAD_F64"),LE_HEAP_LOAD_I16=Nt(t=>HEAP_DATA_VIEW.getInt16(t,!0),"LE_HEAP_LOAD_I16"),LE_HEAP_LOAD_I32=Nt(t=>HEAP_DATA_VIEW.getInt32(t,!0),"LE_HEAP_LOAD_I32"),LE_HEAP_LOAD_U16=Nt(t=>HEAP_DATA_VIEW.getUint16(t,!0),"LE_HEAP_LOAD_U16"),LE_HEAP_LOAD_U32=Nt(t=>HEAP_DATA_VIEW.getUint32(t,!0),"LE_HEAP_LOAD_U32"),LE_HEAP_STORE_F32=Nt((t,e)=>HEAP_DATA_VIEW.setFloat32(t,e,!0),"LE_HEAP_STORE_F32"),LE_HEAP_STORE_F64=Nt((t,e)=>HEAP_DATA_VIEW.setFloat64(t,e,!0),"LE_HEAP_STORE_F64"),LE_HEAP_STORE_I16=Nt((t,e)=>HEAP_DATA_VIEW.setInt16(t,e,!0),"LE_HEAP_STORE_I16"),LE_HEAP_STORE_I32=Nt((t,e)=>HEAP_DATA_VIEW.setInt32(t,e,!0),"LE_HEAP_STORE_I32"),LE_HEAP_STORE_U16=Nt((t,e)=>HEAP_DATA_VIEW.setUint16(t,e,!0),"LE_HEAP_STORE_U16"),LE_HEAP_STORE_U32=Nt((t,e)=>HEAP_DATA_VIEW.setUint32(t,e,!0),"LE_HEAP_STORE_U32"),callRuntimeCallbacks=Nt(t=>{for(;t.length>0;)t.shift()(Module)},"callRuntimeCallbacks"),onPostRuns=[],addOnPostRun=Nt(t=>onPostRuns.unshift(t),"addOnPostRun"),onPreRuns=[],addOnPreRun=Nt(t=>onPreRuns.unshift(t),"addOnPreRun"),UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,UTF8ArrayToString=Nt((t,e=0,l=NaN)=>{for(var n=e+l,r=e;t[r]&&!(r>=n);)++r;if(r-e>16&&t.buffer&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var I="";e<r;){var a=t[e++];if(!(a&128)){I+=String.fromCharCode(a);continue}var s=t[e++]&63;if((a&224)==192){I+=String.fromCharCode((a&31)<<6|s);continue}var o=t[e++]&63;if((a&240)==224?a=(a&15)<<12|s<<6|o:a=(a&7)<<18|s<<12|o<<6|t[e++]&63,a<65536)I+=String.fromCharCode(a);else{var d=a-65536;I+=String.fromCharCode(55296|d>>10,56320|d&1023)}}return I},"UTF8ArrayToString"),getDylinkMetadata=Nt(t=>{var e=0,l=0;function n(){return t[e++]}Nt(n,"getU8");function r(){for(var We=0,ee=1;;){var M=t[e++];if(We+=(M&127)*ee,ee*=128,!(M&128))break}return We}Nt(r,"getLEB");function I(){var We=r();return e+=We,UTF8ArrayToString(t,e-We,We)}Nt(I,"getString");function a(We,ee){if(We)throw new Error(ee)}Nt(a,"failIf");var s="dylink.0";if(t instanceof WebAssembly.Module){var o=WebAssembly.Module.customSections(t,s);o.length===0&&(s="dylink",o=WebAssembly.Module.customSections(t,s)),a(o.length===0,"need dylink section"),t=new Uint8Array(o[0]),l=t.length}else{var d=new Uint32Array(new Uint8Array(t.subarray(0,24)).buffer),u=d[0]==1836278016||d[0]==6386541;a(!u,"need to see wasm magic number"),a(t[8]!==0,"need the dylink section to be first"),e=9;var b=r();l=e+b,s=I()}var p={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(s=="dylink"){p.memorySize=r(),p.memoryAlign=r(),p.tableSize=r(),p.tableAlign=r();for(var h=r(),Z=0;Z<h;++Z){var N=I();p.neededDynlibs.push(N)}}else{a(s!=="dylink.0");for(var y=1,Y=2,w=3,H=4,J=256,S=3,T=1;e<l;){var U=n(),j=r();if(U===y)p.memorySize=r(),p.memoryAlign=r(),p.tableSize=r(),p.tableAlign=r();else if(U===Y)for(var h=r(),Z=0;Z<h;++Z)N=I(),p.neededDynlibs.push(N);else if(U===w)for(var O=r();O--;){var z=I(),se=r();se&J&&p.tlsExports.add(z)}else if(U===H)for(var O=r();O--;){var ue=I(),z=I(),se=r();(se&S)==T&&p.weakImports.add(z)}else e+=j}}return p},"getDylinkMetadata");function getValue(t,e="i8"){switch(e.endsWith("*")&&(e="*"),e){case"i1":return HEAP8[t];case"i8":return HEAP8[t];case"i16":return LE_HEAP_LOAD_I16((t>>1)*2);case"i32":return LE_HEAP_LOAD_I32((t>>2)*4);case"i64":return HEAP64[t>>3];case"float":return LE_HEAP_LOAD_F32((t>>2)*4);case"double":return LE_HEAP_LOAD_F64((t>>3)*8);case"*":return LE_HEAP_LOAD_U32((t>>2)*4);default:abort(`invalid type for getValue: ${e}`)}}Nt(getValue,"getValue");var newDSO=Nt((t,e,l)=>{var n={refcount:1/0,name:t,exports:l,global:!0};return LDSO.loadedLibsByName[t]=n,e!=null&&(LDSO.loadedLibsByHandle[e]=n),n},"newDSO"),LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=78224,alignMemory=Nt((t,e)=>Math.ceil(t/e)*e,"alignMemory"),getMemory=Nt(t=>{if(runtimeInitialized)return _calloc(t,1);var e=___heap_base,l=e+alignMemory(t,16);return ___heap_base=l,GOT.__heap_base.value=l,e},"getMemory"),isInternalSym=Nt(t=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(t)||t.startsWith("__em_js__"),"isInternalSym"),uleb128Encode=Nt((t,e)=>{t<128?e.push(t):e.push(t%128|128,t>>7)},"uleb128Encode"),sigToWasmTypes=Nt(t=>{for(var e={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},l={parameters:[],results:t[0]=="v"?[]:[e[t[0]]]},n=1;n<t.length;++n)l.parameters.push(e[t[n]]);return l},"sigToWasmTypes"),generateFuncType=Nt((t,e)=>{var l=t.slice(0,1),n=t.slice(1),r={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96),uleb128Encode(n.length,e);for(var I=0;I<n.length;++I)e.push(r[n[I]]);l=="v"?e.push(0):e.push(1,r[l])},"generateFuncType"),convertJsFunctionToWasm=Nt((t,e)=>{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(sigToWasmTypes(e),t);var l=[1];generateFuncType(e,l);var n=[0,97,115,109,1,0,0,0,1];uleb128Encode(l.length,n),n.push(...l),n.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var r=new WebAssembly.Module(new Uint8Array(n)),I=new WebAssembly.Instance(r,{e:{f:t}}),a=I.exports.f;return a},"convertJsFunctionToWasm"),wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:31,element:"anyfunc"}),getWasmTableEntry=Nt(t=>{var e=wasmTableMirror[t];return e||(t>=wasmTableMirror.length&&(wasmTableMirror.length=t+1),wasmTableMirror[t]=e=wasmTable.get(t)),e},"getWasmTableEntry"),updateTableMap=Nt((t,e)=>{if(functionsInTableMap)for(var l=t;l<t+e;l++){var n=getWasmTableEntry(l);n&&functionsInTableMap.set(n,l)}},"updateTableMap"),functionsInTableMap,getFunctionAddress=Nt(t=>(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(t)||0),"getFunctionAddress"),freeTableIndexes=[],getEmptyTableSlot=Nt(()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(t){throw t instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":t}return wasmTable.length-1},"getEmptyTableSlot"),setWasmTableEntry=Nt((t,e)=>{wasmTable.set(t,e),wasmTableMirror[t]=wasmTable.get(t)},"setWasmTableEntry"),addFunction=Nt((t,e)=>{var l=getFunctionAddress(t);if(l)return l;var n=getEmptyTableSlot();try{setWasmTableEntry(n,t)}catch(I){if(!(I instanceof TypeError))throw I;var r=convertJsFunctionToWasm(t,e);setWasmTableEntry(n,r)}return functionsInTableMap.set(t,n),n},"addFunction"),updateGOT=Nt((t,e)=>{for(var l in t)if(!isInternalSym(l)){var n=t[l];GOT[l]||=new WebAssembly.Global({value:"i32",mutable:!0}),(e||GOT[l].value==0)&&(typeof n=="function"?GOT[l].value=addFunction(n):typeof n=="number"?GOT[l].value=n:err(`unhandled export type for '${l}': ${typeof n}`))}},"updateGOT"),relocateExports=Nt((t,e,l)=>{var n={};for(var r in t){var I=t[r];typeof I=="object"&&(I=I.value),typeof I=="number"&&(I+=e),n[r]=I}return updateGOT(n,l),n},"relocateExports"),isSymbolDefined=Nt(t=>{var e=wasmImports[t];return!(!e||e.stub)},"isSymbolDefined"),dynCall=Nt((t,e,l=[])=>{var n=getWasmTableEntry(e)(...l);return n},"dynCall"),stackSave=Nt(()=>_emscripten_stack_get_current(),"stackSave"),stackRestore=Nt(t=>__emscripten_stack_restore(t),"stackRestore"),createInvokeFunction=Nt(t=>(e,...l)=>{var n=stackSave();try{return dynCall(t,e,l)}catch(r){if(stackRestore(n),r!==r+0)throw r;if(_setThrew(1,0),t[0]=="j")return 0n}},"createInvokeFunction"),resolveGlobalSymbol=Nt((t,e=!1)=>{var l;return isSymbolDefined(t)?l=wasmImports[t]:t.startsWith("invoke_")&&(l=wasmImports[t]=createInvokeFunction(t.split("_")[1])),{sym:l,name:t}},"resolveGlobalSymbol"),onPostCtors=[],addOnPostCtor=Nt(t=>onPostCtors.unshift(t),"addOnPostCtor"),UTF8ToString=Nt((t,e)=>t?UTF8ArrayToString(HEAPU8,t,e):"","UTF8ToString"),loadWebAssemblyModule=Nt((binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);currentModuleWeakSymbols=metadata.weakImports;function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase),LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize),LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase),LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)),metadata.tableSize&&wasmTable.grow(metadata.tableSize);var moduleExports;function resolveSymbol(t){var e=resolveGlobalSymbol(t).sym;return!e&&localScope&&(e=localScope[t]),e||(e=moduleExports[t]),e}Nt(resolveSymbol,"resolveSymbol");var proxyHandler={get(t,e){switch(e){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(e in wasmImports&&!wasmImports[e].stub){var l=wasmImports[e];return l}if(!(e in t)){var n;t[e]=(...r)=>(n||=resolveSymbol(e),n(...r))}return t[e]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(Nt(addEmAsm,"addEmAsm"),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start<stop;){var jsString=UTF8ToString(start);addEmAsm(start,jsString),start=HEAPU8.indexOf(0,start)+1}function addEmJs(name,cSig,body){var jsArgs=[];if(cSig=cSig.slice(1,-1),cSig!="void"){cSig=cSig.split(",");for(var i in cSig){var jsArg=cSig[i].split(" ").pop();jsArgs.push(jsArg.replace("*",""))}}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}Nt(addEmJs,"addEmJs");for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():addOnPostCtor(init)),moduleExports}if(Nt(postInstantiation,"postInstantiation"),flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then(t=>postInstantiation(t.module,t.instance))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return Nt(loadModule,"loadModule"),flags.loadAsync?metadata.neededDynlibs.reduce((t,e)=>t.then(()=>loadDynamicLibrary(e,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(t=>loadDynamicLibrary(t,flags,localScope)),loadModule())},"loadWebAssemblyModule"),mergeLibSymbols=Nt((t,e)=>{for(var[l,n]of Object.entries(t)){let r=Nt(a=>{isSymbolDefined(a)||(wasmImports[a]=n)},"setImport");r(l);let I="__main_argc_argv";l=="main"&&r(I),l==I&&r("main")}},"mergeLibSymbols"),asyncLoad=Nt(async t=>{var e=await readAsync(t);return new Uint8Array(e)},"asyncLoad");function loadDynamicLibrary(t,e={global:!0,nodelete:!0},l,n){var r=LDSO.loadedLibsByName[t];if(r)return e.global?r.global||(r.global=!0,mergeLibSymbols(r.exports,t)):l&&Object.assign(l,r.exports),e.nodelete&&r.refcount!==1/0&&(r.refcount=1/0),r.refcount++,n&&(LDSO.loadedLibsByHandle[n]=r),e.loadAsync?Promise.resolve(!0):!0;r=newDSO(t,n,"loading"),r.refcount=e.nodelete?1/0:1,r.global=e.global;function I(){if(n){var o=LE_HEAP_LOAD_U32((n+28>>2)*4),d=LE_HEAP_LOAD_U32((n+32>>2)*4);if(o&&d){var u=HEAP8.slice(o,o+d);return e.loadAsync?Promise.resolve(u):u}}var b=locateFile(t);if(e.loadAsync)return asyncLoad(b);if(!readBinary)throw new Error(`${b}: file not found, and synchronous loading of external files is not available`);return readBinary(b)}Nt(I,"loadLibData");function a(){return e.loadAsync?I().then(o=>loadWebAssemblyModule(o,e,t,l,n)):loadWebAssemblyModule(I(),e,t,l,n)}Nt(a,"getExports");function s(o){r.global?mergeLibSymbols(o,t):l&&Object.assign(l,o),r.exports=o}return Nt(s,"moduleLoaded"),e.loadAsync?a().then(o=>(s(o),!0)):(s(a()),!0)}Nt(loadDynamicLibrary,"loadDynamicLibrary");var reportUndefinedSymbols=Nt(()=>{for(var[t,e]of Object.entries(GOT))if(e.value==0){var l=resolveGlobalSymbol(t,!0).sym;if(!l&&!e.required)continue;if(typeof l=="function")e.value=addFunction(l,l.sig);else if(typeof l=="number")e.value=l;else throw new Error(`bad export type for '${t}': ${typeof l}`)}},"reportUndefinedSymbols"),loadDylibs=Nt(()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs"),dynamicLibraries.reduce((t,e)=>t.then(()=>loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})),Promise.resolve()).then(()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")})},"loadDylibs"),noExitRuntime=Module.noExitRuntime||!0;function setValue(t,e,l="i8"){switch(l.endsWith("*")&&(l="*"),l){case"i1":HEAP8[t]=e;break;case"i8":HEAP8[t]=e;break;case"i16":LE_HEAP_STORE_I16((t>>1)*2,e);break;case"i32":LE_HEAP_STORE_I32((t>>2)*4,e);break;case"i64":HEAP64[t>>3]=BigInt(e);break;case"float":LE_HEAP_STORE_F32((t>>2)*4,e);break;case"double":LE_HEAP_STORE_F64((t>>3)*8,e);break;case"*":LE_HEAP_STORE_U32((t>>2)*4,e);break;default:abort(`invalid type for setValue: ${l}`)}}Nt(setValue,"setValue");var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},78224),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=Nt(()=>abort(""),"__abort_js");__abort_js.sig="v";var _emscripten_get_now=Nt(()=>performance.now(),"_emscripten_get_now");_emscripten_get_now.sig="d";var _emscripten_date_now=Nt(()=>Date.now(),"_emscripten_date_now");_emscripten_date_now.sig="d";var nowIsMonotonic=1,checkWasiClock=Nt(t=>t>=0&&t<=3,"checkWasiClock"),INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=Nt(t=>t<INT53_MIN||t>INT53_MAX?NaN:Number(t),"bigintToI53Checked");function _clock_time_get(t,e,l){if(e=bigintToI53Checked(e),!checkWasiClock(t))return 28;var n;if(t===0)n=_emscripten_date_now();else if(nowIsMonotonic)n=_emscripten_get_now();else return 52;var r=Math.round(n*1e3*1e3);return HEAP64[l>>3]=BigInt(r),0}Nt(_clock_time_get,"_clock_time_get"),_clock_time_get.sig="iijp";var getHeapMax=Nt(()=>2147483648,"getHeapMax"),growMemory=Nt(t=>{var e=wasmMemory.buffer,l=(t-e.byteLength+65535)/65536|0;try{return wasmMemory.grow(l),updateMemoryViews(),1}catch{}},"growMemory"),_emscripten_resize_heap=Nt(t=>{var e=HEAPU8.length;t>>>=0;var l=getHeapMax();if(t>l)return!1;for(var n=1;n<=4;n*=2){var r=e*(1+.2/n);r=Math.min(r,t+100663296);var I=Math.min(l,alignMemory(Math.max(t,r),65536)),a=growMemory(I);if(a)return!0}return!1},"_emscripten_resize_heap");_emscripten_resize_heap.sig="ip";var _fd_close=Nt(t=>52,"_fd_close");_fd_close.sig="ii";function _fd_seek(t,e,l,n){return e=bigintToI53Checked(e),70}Nt(_fd_seek,"_fd_seek"),_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]],printChar=Nt((t,e)=>{var l=printCharBuffers[t];e===0||e===10?((t===1?out:err)(UTF8ArrayToString(l)),l.length=0):l.push(e)},"printChar"),flush_NO_FILESYSTEM=Nt(()=>{printCharBuffers[1].length&&printChar(1,10),printCharBuffers[2].length&&printChar(2,10)},"flush_NO_FILESYSTEM"),SYSCALLS={varargs:void 0,getStr(t){var e=UTF8ToString(t);return e}},_fd_write=Nt((t,e,l,n)=>{for(var r=0,I=0;I<l;I++){var a=LE_HEAP_LOAD_U32((e>>2)*4),s=LE_HEAP_LOAD_U32((e+4>>2)*4);e+=8;for(var o=0;o<s;o++)printChar(t,HEAPU8[a+o]);r+=s}return LE_HEAP_STORE_U32((n>>2)*4,r),0},"_fd_write");_fd_write.sig="iippp";function _tree_sitter_log_callback(t,e){if(Module.currentLogCallback){let l=UTF8ToString(e);Module.currentLogCallback(l,t!==0)}}Nt(_tree_sitter_log_callback,"_tree_sitter_log_callback");function _tree_sitter_parse_callback(t,e,l,n,r){let a=Module.currentParseCallback(e,{row:l,column:n});typeof a=="string"?(setValue(r,a.length,"i32"),stringToUTF16(a,t,10240)):setValue(r,0,"i32")}Nt(_tree_sitter_parse_callback,"_tree_sitter_parse_callback");function _tree_sitter_progress_callback(t,e){return Module.currentProgressCallback?Module.currentProgressCallback({currentOffset:t,hasError:e}):!1}Nt(_tree_sitter_progress_callback,"_tree_sitter_progress_callback");function _tree_sitter_query_progress_callback(t){return Module.currentQueryProgressCallback?Module.currentQueryProgressCallback({currentOffset:t}):!1}Nt(_tree_sitter_query_progress_callback,"_tree_sitter_query_progress_callback");var runtimeKeepaliveCounter=0,keepRuntimeAlive=Nt(()=>noExitRuntime||runtimeKeepaliveCounter>0,"keepRuntimeAlive"),_proc_exit=Nt(t=>{EXITSTATUS=t,keepRuntimeAlive()||(Module.onExit?.(t),ABORT=!0),quit_(t,new ExitStatus(t))},"_proc_exit");_proc_exit.sig="vi";var exitJS=Nt((t,e)=>{EXITSTATUS=t,_proc_exit(t)},"exitJS"),handleException=Nt(t=>{if(t instanceof ExitStatus||t=="unwind")return EXITSTATUS;quit_(1,t)},"handleException"),lengthBytesUTF8=Nt(t=>{for(var e=0,l=0;l<t.length;++l){var n=t.charCodeAt(l);n<=127?e++:n<=2047?e+=2:n>=55296&&n<=57343?(e+=4,++l):e+=3}return e},"lengthBytesUTF8"),stringToUTF8Array=Nt((t,e,l,n)=>{if(!(n>0))return 0;for(var r=l,I=l+n-1,a=0;a<t.length;++a){var s=t.charCodeAt(a);if(s>=55296&&s<=57343){var o=t.charCodeAt(++a);s=65536+((s&1023)<<10)|o&1023}if(s<=127){if(l>=I)break;e[l++]=s}else if(s<=2047){if(l+1>=I)break;e[l++]=192|s>>6,e[l++]=128|s&63}else if(s<=65535){if(l+2>=I)break;e[l++]=224|s>>12,e[l++]=128|s>>6&63,e[l++]=128|s&63}else{if(l+3>=I)break;e[l++]=240|s>>18,e[l++]=128|s>>12&63,e[l++]=128|s>>6&63,e[l++]=128|s&63}}return e[l]=0,l-r},"stringToUTF8Array"),stringToUTF8=Nt((t,e,l)=>stringToUTF8Array(t,HEAPU8,e,l),"stringToUTF8"),stackAlloc=Nt(t=>__emscripten_stack_alloc(t),"stackAlloc"),stringToUTF8OnStack=Nt(t=>{var e=lengthBytesUTF8(t)+1,l=stackAlloc(e);return stringToUTF8(t,l,e),l},"stringToUTF8OnStack"),AsciiToString=Nt(t=>{for(var e="";;){var l=HEAPU8[t++];if(!l)return e;e+=String.fromCharCode(l)}},"AsciiToString"),stringToUTF16=Nt((t,e,l)=>{if(l??=2147483647,l<2)return 0;l-=2;for(var n=e,r=l<t.length*2?l/2:t.length,I=0;I<r;++I){var a=t.charCodeAt(I);LE_HEAP_STORE_I16((e>>1)*2,a),e+=2}return LE_HEAP_STORE_I16((e>>1)*2,0),e-n},"stringToUTF16"),wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__table_base:___table_base,_abort_js:__abort_js,clock_time_get:_clock_time_get,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback,tree_sitter_progress_callback:_tree_sitter_progress_callback,tree_sitter_query_progress_callback:_tree_sitter_query_progress_callback},wasmExports=await createWasm(),___wasm_call_ctors=wasmExports.__wasm_call_ctors,_malloc=Module._malloc=wasmExports.malloc,_calloc=Module._calloc=wasmExports.calloc,_realloc=Module._realloc=wasmExports.realloc,_free=Module._free=wasmExports.free,_memcmp=Module._memcmp=wasmExports.memcmp,_ts_language_symbol_count=Module._ts_language_symbol_count=wasmExports.ts_language_symbol_count,_ts_language_state_count=Module._ts_language_state_count=wasmExports.ts_language_state_count,_ts_language_version=Module._ts_language_version=wasmExports.ts_language_version,_ts_language_abi_version=Module._ts_language_abi_version=wasmExports.ts_language_abi_version,_ts_language_metadata=Module._ts_language_metadata=wasmExports.ts_language_metadata,_ts_language_name=Module._ts_language_name=wasmExports.ts_language_name,_ts_language_field_count=Module._ts_language_field_count=wasmExports.ts_language_field_count,_ts_language_next_state=Module._ts_language_next_state=wasmExports.ts_language_next_state,_ts_language_symbol_name=Module._ts_language_symbol_name=wasmExports.ts_language_symbol_name,_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=wasmExports.ts_language_symbol_for_name,_strncmp=Module._strncmp=wasmExports.strncmp,_ts_language_symbol_type=Module._ts_language_symbol_type=wasmExports.ts_language_symbol_type,_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=wasmExports.ts_language_field_name_for_id,_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=wasmExports.ts_lookahead_iterator_new,_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=wasmExports.ts_lookahead_iterator_delete,_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=wasmExports.ts_lookahead_iterator_reset_state,_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=wasmExports.ts_lookahead_iterator_reset,_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=wasmExports.ts_lookahead_iterator_next,_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=wasmExports.ts_lookahead_iterator_current_symbol,_ts_parser_delete=Module._ts_parser_delete=wasmExports.ts_parser_delete,_ts_parser_reset=Module._ts_parser_reset=wasmExports.ts_parser_reset,_ts_parser_set_language=Module._ts_parser_set_language=wasmExports.ts_parser_set_language,_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=wasmExports.ts_parser_timeout_micros,_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=wasmExports.ts_parser_set_timeout_micros,_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=wasmExports.ts_parser_set_included_ranges,_ts_query_new=Module._ts_query_new=wasmExports.ts_query_new,_ts_query_delete=Module._ts_query_delete=wasmExports.ts_query_delete,_iswspace=Module._iswspace=wasmExports.iswspace,_iswalnum=Module._iswalnum=wasmExports.iswalnum,_ts_query_pattern_count=Module._ts_query_pattern_count=wasmExports.ts_query_pattern_count,_ts_query_capture_count=Module._ts_query_capture_count=wasmExports.ts_query_capture_count,_ts_query_string_count=Module._ts_query_string_count=wasmExports.ts_query_string_count,_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=wasmExports.ts_query_capture_name_for_id,_ts_query_capture_quantifier_for_id=Module._ts_query_capture_quantifier_for_id=wasmExports.ts_query_capture_quantifier_for_id,_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=wasmExports.ts_query_string_value_for_id,_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=wasmExports.ts_query_predicates_for_pattern,_ts_query_start_byte_for_pattern=Module._ts_query_start_byte_for_pattern=wasmExports.ts_query_start_byte_for_pattern,_ts_query_end_byte_for_pattern=Module._ts_query_end_byte_for_pattern=wasmExports.ts_query_end_byte_for_pattern,_ts_query_is_pattern_rooted=Module._ts_query_is_pattern_rooted=wasmExports.ts_query_is_pattern_rooted,_ts_query_is_pattern_non_local=Module._ts_query_is_pattern_non_local=wasmExports.ts_query_is_pattern_non_local,_ts_query_is_pattern_guaranteed_at_step=Module._ts_query_is_pattern_guaranteed_at_step=wasmExports.ts_query_is_pattern_guaranteed_at_step,_ts_query_disable_capture=Module._ts_query_disable_capture=wasmExports.ts_query_disable_capture,_ts_query_disable_pattern=Module._ts_query_disable_pattern=wasmExports.ts_query_disable_pattern,_ts_tree_copy=Module._ts_tree_copy=wasmExports.ts_tree_copy,_ts_tree_delete=Module._ts_tree_delete=wasmExports.ts_tree_delete,_ts_init=Module._ts_init=wasmExports.ts_init,_ts_parser_new_wasm=Module._ts_parser_new_wasm=wasmExports.ts_parser_new_wasm,_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=wasmExports.ts_parser_enable_logger_wasm,_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=wasmExports.ts_parser_parse_wasm,_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=wasmExports.ts_parser_included_ranges_wasm,_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=wasmExports.ts_language_type_is_named_wasm,_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=wasmExports.ts_language_type_is_visible_wasm,_ts_language_supertypes_wasm=Module._ts_language_supertypes_wasm=wasmExports.ts_language_supertypes_wasm,_ts_language_subtypes_wasm=Module._ts_language_subtypes_wasm=wasmExports.ts_language_subtypes_wasm,_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=wasmExports.ts_tree_root_node_wasm,_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=wasmExports.ts_tree_root_node_with_offset_wasm,_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=wasmExports.ts_tree_edit_wasm,_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=wasmExports.ts_tree_included_ranges_wasm,_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=wasmExports.ts_tree_get_changed_ranges_wasm,_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=wasmExports.ts_tree_cursor_new_wasm,_ts_tree_cursor_copy_wasm=Module._ts_tree_cursor_copy_wasm=wasmExports.ts_tree_cursor_copy_wasm,_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=wasmExports.ts_tree_cursor_delete_wasm,_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=wasmExports.ts_tree_cursor_reset_wasm,_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=wasmExports.ts_tree_cursor_reset_to_wasm,_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=wasmExports.ts_tree_cursor_goto_first_child_wasm,_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=wasmExports.ts_tree_cursor_goto_last_child_wasm,_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_index_wasm,_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_position_wasm,_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=wasmExports.ts_tree_cursor_goto_next_sibling_wasm,_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=wasmExports.ts_tree_cursor_goto_previous_sibling_wasm,_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=wasmExports.ts_tree_cursor_goto_descendant_wasm,_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=wasmExports.ts_tree_cursor_goto_parent_wasm,_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=wasmExports.ts_tree_cursor_current_node_type_id_wasm,_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=wasmExports.ts_tree_cursor_current_node_state_id_wasm,_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=wasmExports.ts_tree_cursor_current_node_is_named_wasm,_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=wasmExports.ts_tree_cursor_current_node_is_missing_wasm,_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=wasmExports.ts_tree_cursor_current_node_id_wasm,_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=wasmExports.ts_tree_cursor_start_position_wasm,_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=wasmExports.ts_tree_cursor_end_position_wasm,_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=wasmExports.ts_tree_cursor_start_index_wasm,_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=wasmExports.ts_tree_cursor_end_index_wasm,_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=wasmExports.ts_tree_cursor_current_field_id_wasm,_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=wasmExports.ts_tree_cursor_current_depth_wasm,_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=wasmExports.ts_tree_cursor_current_descendant_index_wasm,_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=wasmExports.ts_tree_cursor_current_node_wasm,_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=wasmExports.ts_node_symbol_wasm,_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=wasmExports.ts_node_field_name_for_child_wasm,_ts_node_field_name_for_named_child_wasm=Module._ts_node_field_name_for_named_child_wasm=wasmExports.ts_node_field_name_for_named_child_wasm,_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=wasmExports.ts_node_children_by_field_id_wasm,_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=wasmExports.ts_node_first_child_for_byte_wasm,_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=wasmExports.ts_node_first_named_child_for_byte_wasm,_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=wasmExports.ts_node_grammar_symbol_wasm,_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=wasmExports.ts_node_child_count_wasm,_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=wasmExports.ts_node_named_child_count_wasm,_ts_node_child_wasm=Module._ts_node_child_wasm=wasmExports.ts_node_child_wasm,_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=wasmExports.ts_node_named_child_wasm,_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=wasmExports.ts_node_child_by_field_id_wasm,_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=wasmExports.ts_node_next_sibling_wasm,_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=wasmExports.ts_node_prev_sibling_wasm,_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=wasmExports.ts_node_next_named_sibling_wasm,_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=wasmExports.ts_node_prev_named_sibling_wasm,_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=wasmExports.ts_node_descendant_count_wasm,_ts_node_parent_wasm=Module._ts_node_parent_wasm=wasmExports.ts_node_parent_wasm,_ts_node_child_with_descendant_wasm=Module._ts_node_child_with_descendant_wasm=wasmExports.ts_node_child_with_descendant_wasm,_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=wasmExports.ts_node_descendant_for_index_wasm,_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=wasmExports.ts_node_named_descendant_for_index_wasm,_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=wasmExports.ts_node_descendant_for_position_wasm,_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=wasmExports.ts_node_named_descendant_for_position_wasm,_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=wasmExports.ts_node_start_point_wasm,_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=wasmExports.ts_node_end_point_wasm,_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=wasmExports.ts_node_start_index_wasm,_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=wasmExports.ts_node_end_index_wasm,_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=wasmExports.ts_node_to_string_wasm,_ts_node_children_wasm=Module._ts_node_children_wasm=wasmExports.ts_node_children_wasm,_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=wasmExports.ts_node_named_children_wasm,_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=wasmExports.ts_node_descendants_of_type_wasm,_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=wasmExports.ts_node_is_named_wasm,_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=wasmExports.ts_node_has_changes_wasm,_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=wasmExports.ts_node_has_error_wasm,_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=wasmExports.ts_node_is_error_wasm,_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=wasmExports.ts_node_is_missing_wasm,_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=wasmExports.ts_node_is_extra_wasm,_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=wasmExports.ts_node_parse_state_wasm,_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=wasmExports.ts_node_next_parse_state_wasm,_ts_query_matches_wasm=Module._ts_query_matches_wasm=wasmExports.ts_query_matches_wasm,_ts_query_captures_wasm=Module._ts_query_captures_wasm=wasmExports.ts_query_captures_wasm,_memset=Module._memset=wasmExports.memset,_memcpy=Module._memcpy=wasmExports.memcpy,_memmove=Module._memmove=wasmExports.memmove,_iswalpha=Module._iswalpha=wasmExports.iswalpha,_iswblank=Module._iswblank=wasmExports.iswblank,_iswdigit=Module._iswdigit=wasmExports.iswdigit,_iswlower=Module._iswlower=wasmExports.iswlower,_iswupper=Module._iswupper=wasmExports.iswupper,_iswxdigit=Module._iswxdigit=wasmExports.iswxdigit,_memchr=Module._memchr=wasmExports.memchr,_strlen=Module._strlen=wasmExports.strlen,_strcmp=Module._strcmp=wasmExports.strcmp,_strncat=Module._strncat=wasmExports.strncat,_strncpy=Module._strncpy=wasmExports.strncpy,_towlower=Module._towlower=wasmExports.towlower,_towupper=Module._towupper=wasmExports.towupper,_setThrew=wasmExports.setThrew,__emscripten_stack_restore=wasmExports._emscripten_stack_restore,__emscripten_stack_alloc=wasmExports._emscripten_stack_alloc,_emscripten_stack_get_current=wasmExports.emscripten_stack_get_current,___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs;Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,Module.loadWebAssemblyModule=loadWebAssemblyModule;function callMain(t=[]){var e=resolveGlobalSymbol("main").sym;if(e){t.unshift(thisProgram);var l=t.length,n=stackAlloc((l+1)*4),r=n;t.forEach(a=>{LE_HEAP_STORE_U32((r>>2)*4,stringToUTF8OnStack(a)),r+=4}),LE_HEAP_STORE_U32((r>>2)*4,0);try{var I=e(l,n);return exitJS(I,!0),I}catch(a){return handleException(a)}}}Nt(callMain,"callMain");function run(t=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}if(preRun(),runDependencies>0){dependenciesFulfilled=run;return}function e(){if(Module.calledRun=!0,!ABORT){initRuntime(),readyPromiseResolve(Module),Module.onRuntimeInitialized?.();var l=Module.noInitialRun;l||callMain(t),postRun()}}Nt(e,"doRun"),Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),e()},1)):e()}if(Nt(run,"run"),Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return run(),moduleRtn=readyPromise,moduleRtn}})(),GTn=bTn,oFe=null;async function Kal(t){return oFe||(oFe=await GTn(t)),oFe}Nt(Kal,"initializeBinding");function qal(){return!!oFe}Nt(qal,"checkModule");var er,ret,Iet,det=class{static{Nt(this,"Parser")}0=0;1=0;logCallback=null;language=null;static async init(t){Jal(await Kal(t)),er=Ve._ts_init(),ret=Ve.getValue(er,"i32"),Iet=Ve.getValue(er+ur,"i32")}constructor(){this.initialize()}initialize(){if(!qal())throw new Error("cannot construct a Parser before calling `init()`");Ve._ts_parser_new_wasm(),this[0]=Ve.getValue(er,"i32"),this[1]=Ve.getValue(er+ur,"i32")}delete(){Ve._ts_parser_delete(this[0]),Ve._free(this[1]),this[0]=0,this[1]=0}setLanguage(t){let e;if(!t)e=0,this.language=null;else if(t.constructor===cet){e=t[0];let l=Ve._ts_language_version(e);if(l<Iet||ret<l)throw new Error(`Incompatible language version ${l}. Compatibility range ${Iet} through ${ret}.`);this.language=t}else throw new Error("Argument must be a Language");return Ve._ts_parser_set_language(this[0],e),this}parse(t,e,l){if(typeof t=="string")Ve.currentParseCallback=s=>t.slice(s);else if(typeof t=="function")Ve.currentParseCallback=t;else throw new Error("Argument must be a string or a function");l?.progressCallback?Ve.currentProgressCallback=l.progressCallback:Ve.currentProgressCallback=null,this.logCallback?(Ve.currentLogCallback=this.logCallback,Ve._ts_parser_enable_logger_wasm(this[0],1)):(Ve.currentLogCallback=null,Ve._ts_parser_enable_logger_wasm(this[0],0));let n=0,r=0;if(l?.includedRanges){n=l.includedRanges.length,r=Ve._calloc(n,Cme);let s=r;for(let o=0;o<n;o++)Sal(s,l.includedRanges[o]),s+=Cme}let I=Ve._ts_parser_parse_wasm(this[0],this[1],e?e[0]:0,r,n);if(!I)return Ve.currentParseCallback=null,Ve.currentLogCallback=null,Ve.currentProgressCallback=null,null;if(!this.language)throw new Error("Parser must have a language to parse");let a=new aTn(NL,I,this.language,Ve.currentParseCallback);return Ve.currentParseCallback=null,Ve.currentLogCallback=null,Ve.currentProgressCallback=null,a}reset(){Ve._ts_parser_reset(this[0])}getIncludedRanges(){Ve._ts_parser_included_ranges_wasm(this[0]);let t=Ve.getValue(er,"i32"),e=Ve.getValue(er+ur,"i32"),l=new Array(t);if(t>0){let n=e;for(let r=0;r<t;r++)l[r]=iFe(n),n+=Cme;Ve._free(e)}return l}getTimeoutMicros(){return Ve._ts_parser_timeout_micros(this[0])}setTimeoutMicros(t){Ve._ts_parser_set_timeout_micros(this[0],0,t)}setLogger(t){if(!t)this.logCallback=null;else{if(typeof t!="function")throw new Error("Logger callback must be a function");this.logCallback=t}return this}getLogger(){return this.logCallback}};c();var $al=()=>!0;var uet=new Map,met=null;async function tsl(t,e,l){t==="powershell"&&(e=e.replace(/&&/g,";"));let n=await pTn(t,e);if(!n)return{kind:"error",reason:"failed to parse script"};let r=new Set(["expansion","simple_expansion","command_substitution","process_substitution","arithmetic_expansion","variable_assignment","variable_assignments","if_statement","for_statement","c_style_for_statement","while_statement","case_statement","function_definition","subshell","compound_statement","binary_expression","unary_expression","ternary_expression","test_command","negated_command","declaration_command","unset_command","brace_expression","command_name_expr"]),I=new Set(["integer_literal","string_literal","real_literal"]),a=[n.rootNode],s=[],o=!1,d=!1;for(;a.length>0;){let u=a.pop();if(u.isNamed){if(u.type==="command"){let b=ZTn(t,u,l);b!==null&&s.push({fullCommandText:u.text.trim(),commandIdentifier:b})}if(r.has(u.type)){let b=u.children.length===1?u.children[0]:null;u.type==="unary_expression"&&b&&I.has(b.type)||(d=!0)}u.type==="file_redirect"&&(o||=!WTn(u)),u.type==="redirection"&&(o||=!yTn(u));for(let b=u.children.length-1;b>=0;b--){let p=u.children[b];p&&a.push(p)}}}return{kind:"success",commands:s,hasWriteFileRedirection:o,hasPotentiallyConfusingConstructs:d}}async function pTn(t,e){met||(met=det.init()),await met;let l=await hTn(t),n=new det;return n.setLanguage(l),n.parse(e)}function hTn(t){let e=uet.get(t);if(e)return e;let l=ATn(t),n=$al()?esl.join(import.meta.dirname,l.file):esl.join("node_modules",l.package,l.file),r=cet.load(n).catch(I=>{throw uet.delete(t),I});return uet.set(t,r),r}function ATn(t){switch(t){case"bash":return{package:"tree-sitter-bash",file:"tree-sitter-bash.wasm"};case"powershell":return{package:"tree-sitter-powershell",file:"tree-sitter-powershell.wasm"};default:sb(t,`Unknown shell type: ${t}`)}}function ZTn(t,e,l){switch(t){case"bash":return gTn(e,l);case"powershell":return NTn(e,l);default:sb(t,`Unknown shell type: ${t}`)}}function gTn(t,e){if(!t||t.type!=="command")throw new Error(`expected a command node, got ${t.type}`);let l=t.childForFieldName("name")??t.namedChildren.find(a=>a?.type==="command_name");if(!l)throw new Error("command node has no name or command_name child");let n=l.text,r=e?.find(a=>a.stem===n);if(!r)return n;let I=l.nextNamedSibling;for(;I&&I.type==="word";){if(!r?.flagsToIgnore?.includes(I.text))return`${n} ${I.text}`;I=I.nextNamedSibling}return n}function NTn(t,e){if(!t||t.type!=="command")throw new Error(`expected a command node, got ${t.type}`);let l=t.childForFieldName("name")??t.namedChildren.find(a=>a?.type==="command_name");if(!l){if(t.namedChildren.find(s=>s?.type==="foreach_command"))return"ForEach-Object";let a=t.namedChildren.find(s=>s?.type==="command_name_expr");if(a)return a.childCount===1&&a.firstChild?.type==="script_block_expression"?null:"<command with expression as name>";throw new Error("command node has no name, command_name, foreach_command, or command_name_expr child")}let n=l.text,r=e?.find(a=>a.stem===n);if(!r)return n;let I=l.nextNamedSibling;for(;I;){if(I.type==="command_argument_sep"){I=I.nextNamedSibling;continue}if(I.type==="command_elements"){I=I.namedChildren[0];continue}if(I.type!=="command_parameter"&&I.type!=="generic_token")break;if(!r?.flagsToIgnore?.includes(I.text))return`${n} ${I.text}`;I=I.nextNamedSibling}return n}function WTn(t){if(t.children.length===3&&["2>&1","1>&2"].includes(t.text))return!0;for(let e of t.children){if(!e||e.isNamed)continue;let l=e.text;return l==="<"||l==="<&"||l==="<&-"}return!1}function yTn(t){for(let e of t.children)if(e){if(e.type==="merging_redirection_operator")return!1;if(e.type==="file_redirection_operator")return e.text.trim().startsWith("<")}return!1}var ETn=[{stem:"git",flagsToIgnore:["--no-pager"]},{stem:"gh"},{stem:"glab"},{stem:"npm"},{stem:"npx"},{stem:"yarn"},{stem:"pnpm"},{stem:"cargo"},{stem:"go"},{stem:"composer"},{stem:"pip"},{stem:"pipenv"},{stem:"poetry"},{stem:"conda"},{stem:"mvn"},{stem:"gradle"},{stem:"gradlew"},{stem:"dotnet"},{stem:"bundle"},{stem:"swift"},{stem:"sbt"},{stem:"flutter"},{stem:"mix"},{stem:"cabal"},{stem:"stack"}];async function lsl(t,e){let l=Xal(e),n=await tsl(t,e,ETn);return n.kind==="error"?{result:"failed",reason:`Command could not be assured as safe: ${n.reason}`}:n.commands.length===0?{result:"completed",commands:[{identifier:e,readOnly:!1}],possiblePaths:l,hasWriteFileRedirection:n.hasWriteFileRedirection,canOfferSessionApproval:!1}:{result:"completed",commands:n.commands.map(a=>RTn(t,a.fullCommandText,a.commandIdentifier)).reduce((a,s)=>{let o=a.find(d=>d.identifier===s.identifier);return o?o.readOnly=o.readOnly&&s.readOnly:(o={identifier:s.identifier,readOnly:s.readOnly},a.push(o)),a},[]),possiblePaths:l,hasWriteFileRedirection:n.hasWriteFileRedirection,canOfferSessionApproval:!n.hasPotentiallyConfusingConstructs}}function RTn(t,e,l){switch(l){case"cat":case"cd":case"echo":case"false":case"head":case"hostname":case"ls":case"pwd":case"timeout":case"true":case"whoami":return{identifier:l,readOnly:!0}}if(l==="git"||l.startsWith("git "))return wTn(l);if(t==="bash")switch(l){case"cal":case"df":case"du":case"env":case"free":case"groups":case"id":case"nice":case"nl":case"printenv":case"ps":case"set":case"tail":case"time":case"top":case"type":case"uname":case"unset":case"uptime":case"wc":case"whatis":case"whereis":case"which":return{identifier:l,readOnly:!0};case"date":return YTn(e);case"find":return VTn(e)}if(t==="powershell")switch(l){case"Get-Command":case"Get-Content":case"Get-Process":case"Get-ChildItem":case"Get-Location":case"Select-String":case"Select-Object":case"Test-Path":return{identifier:l,readOnly:!0}}return{identifier:l,readOnly:!1}}function YTn(t){return t.match(/\s-s/)||t.match(/\s--set\b/)?{identifier:"date",readOnly:!1}:{identifier:"date",readOnly:!0}}function VTn(t){let e=["-exec","-execdir","-ok","-okdir","-delete","-fls","-fprint","-fprint0","-fprintf"];for(let l of e)if(t.includes(l))return{identifier:"find",readOnly:!1};return{identifier:"find",readOnly:!0}}function wTn(t){return t==="git"?{identifier:t,readOnly:!0}:["git blame","git branch","git describe","git diff","git grep","git log","git ls-files","git ls-remote","git remote","git rev-parse","git shortlog","git show","git status","git tag"].includes(t)?{identifier:t,readOnly:!0}:{identifier:t,readOnly:!1}}var cFe=class t{agentKind;client;settings;logger;toolConfig;availableTools=[];callback=new GWe;executeToolsInParallel=!0;constructor(){}static async createFromOptions(e){let l=new t;return await l.initializeFromOptions(e),l}async initializeFromOptions(e){this.logger=e.logger,this.executeToolsInParallel=e.executeToolsInParallel??!0;let l=new M3;l.setProblemStatement(e.problemStatement).setInstanceId(dE(e.serviceInstanceId)).setAgentModel(dE(e.serviceAgentModel)).setCallbackUrl(dE(e.serviceCallbackUrl)).setAipSweAgentToken(dE(e.apiAipSweAgentToken)).setAnthropicApiKey(dE(e.apiAnthropicKey)).setCopilotUrl(dE(e.apiCopilotUrl)).setCopilotIntegrationId(dE(e.apiCopilotIntegrationId)).setCopilotHmacKey(dE(e.apiCopilotHmacKey)).setCopilotToken(dE(e.apiCopilotToken)).setTrajectoryOutputFile(dE(e.saveTrajectoryOutput)).setEventsLogDirectory(dE(e.saveEventLogs)).setDisableOnlineEvaluation(e.disableOnlineEvaluation).setGithubRepoName("temp-repo").setGithubRepoCommit("temp-commit").setGithubRepoReadWrite(!1);let n=l.build();Q_()?(F_(),this.settings=await jVe(n)):this.settings=await jVe(n),this.callback.addSettings(this.settings),this.settings.trajectory?.outputFile&&this.callback.addCallback(new sFe(this.logger,this.settings.trajectory.outputFile)),this.settings.logs?.eventsLogDir&&this.callback.addCallback(new rFe(this.logger,this.settings.logs.eventsLogDir));let r=this.settings.service?.agent?.model,I=Xj(r),a=I.agent;this.agentKind=a;let s=I.model?{model:I.model}:void 0;this.client=OYe(this.settings,this.logger,a,s);let o=!1,d=async p=>{if(o)return{kind:"denied-interactively-by-user",reason:"A previous tool call was rejected"};let h=await e.requestPermission(p);return h.kind==="denied-interactively-by-user"&&(o=!0),h};this.toolConfig={location:".",timeout:3e4,permissions:{requestRequired:!0,request:d},requireReasoning:!1,splitEditingTools:!0,toolPartialResultCallback:e.onToolPartialOutput,shellConfig:(process.platform==="win32"?VA.powerShell:VA.bash).withScriptSafetyAssessor(lsl)};let u=await Rje(this.toolConfig,this.logger),b=[];if(e.mcpHost)try{b=await e.mcpHost.getTools(this.settings,this.logger,this.toolConfig.permissions)}catch(p){this.logger.error(`Failed to get MCP tools: ${p}`)}this.availableTools=[...u,...b]}async*getCompletionWithTools(e,l,n){if(!this.client)throw new Error("CLI not properly initialized");let r={...n,executeToolsInParallel:this.executeToolsInParallel};for await(let I of this.client.getCompletionWithTools(e,l,this.availableTools,r))this.callback&&await this.handleEvent(I),yield I}getToolIntentionSummary(e,l){return this.availableTools.find(r=>r.name===e)?.summariseIntention?.(l)||null}getToolTitle(e){return this.availableTools.find(n=>n.name===e)?.title||null}getAvailableTools(){return this.availableTools}getModel(){return this.client?.model||"unknown"}getAgentKind(){return this.agentKind||"sweagent-capi"}getToolConfig(){return this.toolConfig}async shutdown(){for(let e of this.availableTools)e.shutdown&&await e.shutdown()}async handleEvent(e){if(this.callback)try{await this.callback.progress(e)}catch(l){this.logger?.error(`Error in callback: ${l}`)}}};c();var vme={CUSTOM_AGENTS:!1,CCA_PUSH:!1,COPILOT_KITTY:!0},QTn=["CUSTOM_AGENTS"],nsl=t=>t in vme;function rsl(t){let e={...t},l=process.env.COPILOT_CLI_ENABLED_FEATURE_FLAGS;if(l){let n=l.split(",").map(r=>r.trim().toUpperCase());for(let r of n)nsl(r)&&(e[r]=!0)}for(let n of Object.keys(t)){let r=n,I=process.env[r];I&&(I.toLowerCase()==="true"?e[r]=!0:I.toLowerCase()==="false"&&(e[r]=!1))}return e}function Isl(t,e){let l={...e};if(t.staff)for(let n of QTn)l[n]=!0;if(t.feature_flags?.enabled)for(let n of t.feature_flags.enabled){let r=n.toUpperCase();nsl(r)&&(l[r]=!0)}return l}c();import{realpathSync as dFe}from"fs";import FTn from"path";var fme=class{static async isFolderTrusted(e){try{let n=(await Lr.load())?.trusted_folders||[],r=dFe(e);return n.some(I=>{try{let a=dFe(I);return r===a||r.startsWith(a+FTn.sep)}catch{return!1}})}catch{return!1}}static async addTrustedFolder(e){try{let l=await Lr.load()||{},n=l.trusted_folders||[],r=dFe(e);n.some(a=>{try{return dFe(a)===r}catch{return!1}})||(n.push(r),l.trusted_folders=n,await Lr.write(l))}catch(l){throw new Error(`Failed to add trusted folder: ${l instanceof Error?l.message:String(l)}`)}}};c();import{Transform as CTn}from"node:stream";var vTn=Buffer.from([10]),fTn=()=>{let t,e,l,n=!1;function r(){t=Buffer.alloc(1024),l=e=0,n=!1}return r(),new CTn({decodeStrings:!0,transform(I,a,s){let o=0,d,u,b;for(;o<I.length;){u=I.indexOf(13,o),u===-1&&!n?(b=I.subarray(o).lastIndexOf(10),b=b===-1?-1:b+o):(b=I.indexOf(10,o),n=!0),d=Math.min(u===-1?I.length-1:u,b===-1?I.length-1:b),d=d===-1?I.length-1:d;let p,h=o,Z=[13,10].includes(I[d])?d:d+1;for(;(p=Z-h)>0;)if(l+p>t.length){l>0&&this.push(t.subarray(0,l));let N=t.length-l;this.push(I.subarray(h,h+N)),h+=N,r()}else{I.copy(t,l,h,Z),l+=p,e=Math.max(l,e);break}I[d]===10?(this.push(Buffer.concat([t.subarray(0,e),vTn])),r()):I[d]===13&&(l=0),o=d+1}s()},flush(I){I(null,e>0?t.subarray(0,e):null)}})},asl=t=>{let e=fTn(),l=[];return e.on("data",n=>l.push(n)),e.write(t),e.end(),Buffer.concat(l).toString("utf-8").replaceAll("\r","")};c();var uFe=class{constructor(e,l,n,r){this.session=e;this.onStreamingResponseSizeChanged=l;this.promptMode=n;this.logger=r}streamingMessageText="";streamingMessageId=null;totalResponseSizeBytes=0;onStreamingChunk(e){this.logger.debug("StreamingChunkDisplay received chunk.");let n=e.chunk.choices[0]?.delta?.content||"";if(this.promptMode){process.stdout.write(n);return}this.streamingMessageText+=n;let r=HTn(e);r&&(this.totalResponseSizeBytes+=r,this.onStreamingResponseSizeChanged(this.totalResponseSizeBytes)),n&&(this.streamingMessageId||(this.streamingMessageId=Bu()),this.session.addEvent({type:"assistant.message",ephemeral:!0,data:{messageId:this.streamingMessageId,content:this.streamingMessageText}}))}endCurrentStreamingMessage(){this.streamingMessageText="";let e=this.streamingMessageId;return e?(this.streamingMessageId=null,e):null}toJSON(){return"StreamingChunkDisplay"}};function HTn(t){let e=[];t.chunk.choices.forEach(n=>{e.push(n.delta.content),n.delta.tool_calls?.forEach(r=>{r.function&&(e.push(r.function.name),e.push(r.function.arguments))})});let l=e.join("");return l?new TextEncoder().encode(l).length:0}c();function ssl(t){let l=t.findLastIndex(XTn)+1,n=t.slice(l).findIndex(kTn);if(n===-1)return{staticEntries:t,dynamicEntries:[]};let r=l+n;return{staticEntries:t.slice(0,r),dynamicEntries:t.slice(r)}}function XTn(t){return t.type==="copilot"&&!t.isStreaming}function kTn(t){return t.type==="tool_call_requested"||t.type==="copilot"&&t.isStreaming===!0}c();c();c();import pT from"node:process";import{spawn as KMn}from"node:child_process";import{fileURLToPath as qMn}from"node:url";import ocl from"node:path";import{format as ptt}from"node:util";c();var Lme=nt(Asl(),1);import kme from"node:path";import tUn from"node:os";c();import DTn from"os";import hFe from"path";var yL=DTn.homedir(),{env:IT}=process,Zsl=IT.XDG_DATA_HOME||(yL?hFe.join(yL,".local","share"):void 0),Xq=IT.XDG_CONFIG_HOME||(yL?hFe.join(yL,".config"):void 0),tUa=IT.XDG_STATE_HOME||(yL?hFe.join(yL,".local","state"):void 0),lUa=IT.XDG_CACHE_HOME||(yL?hFe.join(yL,".cache"):void 0),nUa=IT.XDG_RUNTIME_DIR||void 0,zTn=(IT.XDG_DATA_DIRS||"/usr/local/share/:/usr/share/").split(":");Zsl&&zTn.unshift(Zsl);var PTn=(IT.XDG_CONFIG_DIRS||"/etc/xdg").split(":");Xq&&PTn.unshift(Xq);c();import $Tn from"node:path";c();import no from"node:fs";import{promisify as Sh}from"node:util";c();var wf=(t,e)=>function(...n){return t.apply(void 0,n).catch(e)},Ow=(t,e)=>function(...n){try{return t.apply(void 0,n)}catch(r){return e(r)}};c();import gsl from"node:process";var Nsl=gsl.getuid?!gsl.getuid():!1,Wsl=1e4,cN=()=>{};c();var Hme={isChangeErrorOk:t=>{if(!Hme.isNodeError(t))return!1;let{code:e}=t;return e==="ENOSYS"||!Nsl&&(e==="EINVAL"||e==="EPERM")},isNodeError:t=>t instanceof Error,isRetriableError:t=>{if(!Hme.isNodeError(t))return!1;let{code:e}=t;return e==="EMFILE"||e==="ENFILE"||e==="EAGAIN"||e==="EBUSY"||e==="EACCESS"||e==="EACCES"||e==="EACCS"||e==="EPERM"},onChangeError:t=>{if(!Hme.isNodeError(t))throw t;if(!Hme.isChangeErrorOk(t))throw t}},am=Hme;c();c();var Aet=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=Wsl,this.queueActive=new Set,this.queueWaiting=new Set,this.init=()=>{this.intervalId||(this.intervalId=setInterval(this.tick,this.interval))},this.reset=()=>{this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId)},this.add=e=>{this.queueWaiting.add(e),this.queueActive.size<this.limit/2?this.tick():this.init()},this.remove=e=>{this.queueWaiting.delete(e),this.queueActive.delete(e)},this.schedule=()=>new Promise(e=>{let l=()=>this.remove(n),n=()=>e(l);this.add(n)}),this.tick=()=>{if(!(this.queueActive.size>=this.limit)){if(!this.queueWaiting.size)return this.reset();for(let e of this.queueWaiting){if(this.queueActive.size>=this.limit)break;this.queueWaiting.delete(e),this.queueActive.add(e),e()}}}}},ysl=new Aet;var Qf=(t,e)=>function(n){return function r(...I){return ysl.schedule().then(a=>{let s=d=>(a(),d),o=d=>{if(a(),Date.now()>=n)throw d;if(e(d)){let u=Math.round(100*Math.random());return new Promise(p=>setTimeout(p,u)).then(()=>r.apply(void 0,I))}throw d};return t.apply(void 0,I).then(s,o)})}},Ff=(t,e)=>function(n){return function r(...I){try{return t.apply(void 0,I)}catch(a){if(Date.now()>n)throw a;if(e(a))return r.apply(void 0,I);throw a}}};var jTn={attempt:{chmod:wf(Sh(no.chmod),am.onChangeError),chown:wf(Sh(no.chown),am.onChangeError),close:wf(Sh(no.close),cN),fsync:wf(Sh(no.fsync),cN),mkdir:wf(Sh(no.mkdir),cN),realpath:wf(Sh(no.realpath),cN),stat:wf(Sh(no.stat),cN),unlink:wf(Sh(no.unlink),cN),chmodSync:Ow(no.chmodSync,am.onChangeError),chownSync:Ow(no.chownSync,am.onChangeError),closeSync:Ow(no.closeSync,cN),existsSync:Ow(no.existsSync,cN),fsyncSync:Ow(no.fsync,cN),mkdirSync:Ow(no.mkdirSync,cN),realpathSync:Ow(no.realpathSync,cN),statSync:Ow(no.statSync,cN),unlinkSync:Ow(no.unlinkSync,cN)},retry:{close:Qf(Sh(no.close),am.isRetriableError),fsync:Qf(Sh(no.fsync),am.isRetriableError),open:Qf(Sh(no.open),am.isRetriableError),readFile:Qf(Sh(no.readFile),am.isRetriableError),rename:Qf(Sh(no.rename),am.isRetriableError),stat:Qf(Sh(no.stat),am.isRetriableError),write:Qf(Sh(no.write),am.isRetriableError),writeFile:Qf(Sh(no.writeFile),am.isRetriableError),closeSync:Ff(no.closeSync,am.isRetriableError),fsyncSync:Ff(no.fsyncSync,am.isRetriableError),openSync:Ff(no.openSync,am.isRetriableError),readFileSync:Ff(no.readFileSync,am.isRetriableError),renameSync:Ff(no.renameSync,am.isRetriableError),statSync:Ff(no.statSync,am.isRetriableError),writeSync:Ff(no.writeSync,am.isRetriableError),writeFileSync:Ff(no.writeFileSync,am.isRetriableError)}},XG=jTn;c();import Esl from"node:os";import Zet from"node:process";var Rsl="utf8",get=438,Ysl=511;var Vsl={},wsl=Esl.userInfo().uid,Qsl=Esl.userInfo().gid;var Fsl=1e3,Csl=!!Zet.getuid,FUa=Zet.getuid?!Zet.getuid():!1,Net=128;c();var vsl=t=>t instanceof Error&&"code"in t;var Wet=t=>typeof t=="string",AFe=t=>t===void 0;c();c();import qTn from"node:path";c();c();import kq from"node:process";c();import fsl from"node:process";var Hsl=fsl.platform==="linux",ZFe=fsl.platform==="win32";c();var yet=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];ZFe||yet.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");Hsl&&yet.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED");var Xsl=yet;var Eet=class{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=e=>{if(!this.exited){this.exited=!0;for(let l of this.callbacks)l();e&&(ZFe&&e!=="SIGINT"&&e!=="SIGTERM"&&e!=="SIGKILL"?kq.kill(kq.pid,"SIGTERM"):kq.kill(kq.pid,e))}},this.hook=()=>{kq.once("exit",()=>this.exit());for(let e of Xsl)try{kq.once(e,()=>this.exit(e))}catch{}},this.register=e=>(this.callbacks.add(e),()=>{this.callbacks.delete(e)}),this.hook()}},ksl=new Eet;var KTn=ksl.register,Lsl=KTn;var ey={store:{},create:t=>{let e=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6),r=`.tmp-${Date.now().toString().slice(-10)}${e}`;return`${t}${r}`},get:(t,e,l=!0)=>{let n=ey.truncate(e(t));return n in ey.store?ey.get(t,e,l):(ey.store[n]=l,[n,()=>delete ey.store[n]])},purge:t=>{ey.store[t]&&(delete ey.store[t],XG.attempt.unlink(t))},purgeSync:t=>{ey.store[t]&&(delete ey.store[t],XG.attempt.unlinkSync(t))},purgeSyncAll:()=>{for(let t in ey.store)ey.purgeSync(t)},truncate:t=>{let e=qTn.basename(t);if(e.length<=Net)return t;let l=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(e);if(!l)return t;let n=e.length-Net;return`${t.slice(0,-e.length)}${l[1]}${l[2].slice(0,-n)}${l[3]}`}};Lsl(ey.purgeSyncAll);var Xme=ey;function gFe(t,e,l=Vsl){if(Wet(l))return gFe(t,e,{encoding:l});let n=Date.now()+((l.timeout??Fsl)||-1),r=null,I=null,a=null;try{let s=XG.attempt.realpathSync(t),o=!!s;t=s||t,[I,r]=Xme.get(t,l.tmpCreate||Xme.create,l.tmpPurge!==!1);let d=Csl&&AFe(l.chown),u=AFe(l.mode);if(o&&(d||u)){let b=XG.attempt.statSync(t);b&&(l={...l},d&&(l.chown={uid:b.uid,gid:b.gid}),u&&(l.mode=b.mode))}if(!o){let b=$Tn.dirname(t);XG.attempt.mkdirSync(b,{mode:Ysl,recursive:!0})}a=XG.retry.openSync(n)(I,"w",l.mode||get),l.tmpCreated&&l.tmpCreated(I),Wet(e)?XG.retry.writeSync(n)(a,e,0,l.encoding||Rsl):AFe(e)||XG.retry.writeSync(n)(a,e,0,e.length,0),l.fsync!==!1&&(l.fsyncWait!==!1?XG.retry.fsyncSync(n)(a):XG.attempt.fsync(a)),XG.retry.closeSync(n)(a),a=null,l.chown&&(l.chown.uid!==wsl||l.chown.gid!==Qsl)&&XG.attempt.chownSync(I,l.chown.uid,l.chown.gid),l.mode&&l.mode!==get&&XG.attempt.chmodSync(I,l.mode);try{XG.retry.renameSync(n)(I,t)}catch(b){if(!vsl(b)||b.code!=="ENAMETOOLONG")throw b;XG.retry.renameSync(n)(I,Xme.truncate(t))}r(),I=null}finally{a&&XG.attempt.closeSync(a),I&&Xme.purge(I)}}c();var aT=t=>{let e=typeof t;return t!==null&&(e==="object"||e==="function")};var Ret=new Set(["__proto__","prototype","constructor"]),eUn=new Set("0123456789");function NFe(t){let e=[],l="",n="start",r=!1;for(let I of t)switch(I){case"\\":{if(n==="index")throw new Error("Invalid character in an index");if(n==="indexEnd")throw new Error("Invalid character after an index");r&&(l+=I),n="property",r=!r;break}case".":{if(n==="index")throw new Error("Invalid character in an index");if(n==="indexEnd"){n="property";break}if(r){r=!1,l+=I;break}if(Ret.has(l))return[];e.push(l),l="",n="property";break}case"[":{if(n==="index")throw new Error("Invalid character in an index");if(n==="indexEnd"){n="index";break}if(r){r=!1,l+=I;break}if(n==="property"){if(Ret.has(l))return[];e.push(l),l=""}n="index";break}case"]":{if(n==="index"){e.push(Number.parseInt(l,10)),l="",n="indexEnd";break}if(n==="indexEnd")throw new Error("Invalid character after an index")}default:{if(n==="index"&&!eUn.has(I))throw new Error("Invalid character in an index");if(n==="indexEnd")throw new Error("Invalid character after an index");n==="start"&&(n="property"),r&&(r=!1,l+="\\"),l+=I}}switch(r&&(l+="\\"),n){case"property":{if(Ret.has(l))return[];e.push(l);break}case"index":throw new Error("Index was not closed");case"start":{e.push("");break}}return e}function Yet(t,e){if(typeof e!="number"&&Array.isArray(t)){let l=Number.parseInt(e,10);return Number.isInteger(l)&&t[l]===t[e]}return!1}function Jsl(t,e){if(Yet(t,e))throw new Error("Cannot use string index")}function xsl(t,e,l){if(!aT(t)||typeof e!="string")return l===void 0?t:l;let n=NFe(e);if(n.length===0)return l;for(let r=0;r<n.length;r++){let I=n[r];if(Yet(t,I)?t=r===n.length-1?void 0:null:t=t[I],t==null){if(r!==n.length-1)return l;break}}return t===void 0?l:t}function Vet(t,e,l){if(!aT(t)||typeof e!="string")return t;let n=t,r=NFe(e);for(let I=0;I<r.length;I++){let a=r[I];Jsl(t,a),I===r.length-1?t[a]=l:aT(t[a])||(t[a]=typeof r[I+1]=="number"?[]:{}),t=t[a]}return n}function Ssl(t,e){if(!aT(t)||typeof e!="string")return!1;let l=NFe(e);for(let n=0;n<l.length;n++){let r=l[n];if(Jsl(t,r),n===l.length-1)return delete t[r],!0;if(t=t[r],!aT(t))return!1}}function Bsl(t,e){if(!aT(t)||typeof e!="string")return!1;let l=NFe(e);if(l.length===0)return!1;for(let n of l){if(!aT(t)||!(n in t)||Yet(t,n))return!1;t=t[n]}return!0}function lUn(t,e){let l=e?kme.join(t,"config.json"):kme.join("configstore",`${t}.json`),n=Xq??Lme.default.mkdtempSync(Lme.default.realpathSync(tUn.tmpdir())+kme.sep);return kme.join(n,l)}var Osl="You don't have access to this file.",nUn={mode:448,recursive:!0},Tsl={mode:384},Jme=class{constructor(e,l,n={}){this._path=n.configPath??lUn(e,n.globalConfigPath),l&&(this.all={...l,...this.all})}get all(){try{return JSON.parse(Lme.default.readFileSync(this._path,"utf8"))}catch(e){if(e.code==="ENOENT")return{};if(e.code==="EACCES"&&(e.message=`${e.message}
|
|
2392
|
+
${JSON.stringify(r,null,2)}`),new Error("Language.load failed: no language function found in WASM file");let a=n[I]();return new jal(NL,a)}},bTn=(()=>{var _scriptName=import.meta.url;return async function(moduleArg={}){var moduleRtn,Module=moduleArg,readyPromiseResolve,readyPromiseReject,readyPromise=new Promise((t,e)=>{readyPromiseResolve=t,readyPromiseReject=e}),ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){let{createRequire:t}=await import("module");var require=t(import.meta.url)}Module.currentQueryProgressCallback=null,Module.currentProgressCallback=null,Module.currentLogCallback=null,Module.currentParseCallback=null;var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=Nt((t,e)=>{throw e},"quit_"),scriptDirectory="";function locateFile(t){return Module.locateFile?Module.locateFile(t,scriptDirectory):scriptDirectory+t}Nt(locateFile,"locateFile");var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");import.meta.url.startsWith("data:")||(scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"),readBinary=Nt(t=>{t=isFileURI(t)?new URL(t):t;var e=fs.readFileSync(t);return e},"readBinary"),readAsync=Nt(async(t,e=!0)=>{t=isFileURI(t)?new URL(t):t;var l=fs.readFileSync(t,e?void 0:"utf8");return l},"readAsync"),!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),quit_=Nt((t,e)=>{throw process.exitCode=t,e},"quit_")}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:typeof document<"u"&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptName&&(scriptDirectory=_scriptName),scriptDirectory.startsWith("blob:")?scriptDirectory="":scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),ENVIRONMENT_IS_WORKER&&(readBinary=Nt(t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)},"readBinary")),readAsync=Nt(async t=>{if(isFileURI(t))return new Promise((l,n)=>{var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="arraybuffer",r.onload=()=>{if(r.status==200||r.status==0&&r.response){l(r.response);return}n(r.status)},r.onerror=n,r.send(null)});var e=await fetch(t,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+" : "+e.url)},"readAsync"));var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary=Module.wasmBinary,wasmMemory,ABORT=!1,EXITSTATUS;function assert(t,e){t||abort(e)}Nt(assert,"assert");var HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64,HEAP_DATA_VIEW,runtimeInitialized=!1,isFileURI=Nt(t=>t.startsWith("file://"),"isFileURI");function updateMemoryViews(){var t=wasmMemory.buffer;Module.HEAP_DATA_VIEW=HEAP_DATA_VIEW=new DataView(t),Module.HEAP8=HEAP8=new Int8Array(t),Module.HEAP16=HEAP16=new Int16Array(t),Module.HEAPU8=HEAPU8=new Uint8Array(t),Module.HEAPU16=HEAPU16=new Uint16Array(t),Module.HEAP32=HEAP32=new Int32Array(t),Module.HEAPU32=HEAPU32=new Uint32Array(t),Module.HEAPF32=HEAPF32=new Float32Array(t),Module.HEAPF64=HEAPF64=new Float64Array(t),Module.HEAP64=HEAP64=new BigInt64Array(t),Module.HEAPU64=HEAPU64=new BigUint64Array(t)}if(Nt(updateMemoryViews,"updateMemoryViews"),Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768})}updateMemoryViews();var __RELOC_FUNCS__=[];function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns)}Nt(preRun,"preRun");function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),wasmExports.__wasm_call_ctors(),callRuntimeCallbacks(onPostCtors)}Nt(initRuntime,"initRuntime");function preMain(){}Nt(preMain,"preMain");function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}Nt(postRun,"postRun");var runDependencies=0,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}Nt(getUniqueRunDependency,"getUniqueRunDependency");function addRunDependency(t){runDependencies++,Module.monitorRunDependencies?.(runDependencies)}Nt(addRunDependency,"addRunDependency");function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Nt(removeRunDependency,"removeRunDependency");function abort(t){Module.onAbort?.(t),t="Aborted("+t+")",err(t),ABORT=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw readyPromiseReject(e),e}Nt(abort,"abort");var wasmBinaryFile;function findWasmBinary(){return Module.locateFile?locateFile("tree-sitter.wasm"):new URL("tree-sitter.wasm",import.meta.url).href}Nt(findWasmBinary,"findWasmBinary");function getBinarySync(t){if(t==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(t);throw"both async and sync fetching of the wasm failed"}Nt(getBinarySync,"getBinarySync");async function getWasmBinary(t){if(!wasmBinary)try{var e=await readAsync(t);return new Uint8Array(e)}catch{}return getBinarySync(t)}Nt(getWasmBinary,"getWasmBinary");async function instantiateArrayBuffer(t,e){try{var l=await getWasmBinary(t),n=await WebAssembly.instantiate(l,e);return n}catch(r){err(`failed to asynchronously prepare wasm: ${r}`),abort(r)}}Nt(instantiateArrayBuffer,"instantiateArrayBuffer");async function instantiateAsync(t,e,l){if(!t&&typeof WebAssembly.instantiateStreaming=="function"&&!isFileURI(e)&&!ENVIRONMENT_IS_NODE)try{var n=fetch(e,{credentials:"same-origin"}),r=await WebAssembly.instantiateStreaming(n,l);return r}catch(I){err(`wasm streaming compile failed: ${I}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(e,l)}Nt(instantiateAsync,"instantiateAsync");function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}Nt(getWasmImports,"getWasmImports");async function createWasm(){function t(I,a){wasmExports=I.exports,wasmExports=relocateExports(wasmExports,1024);var s=getDylinkMetadata(a);return s.neededDynlibs&&(dynamicLibraries=s.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),wasmExports}Nt(t,"receiveInstance"),addRunDependency("wasm-instantiate");function e(I){return t(I.instance,I.module)}Nt(e,"receiveInstantiationResult");var l=getWasmImports();if(Module.instantiateWasm)return new Promise((I,a)=>{Module.instantiateWasm(l,(s,o)=>{t(s,o),I(s.exports)})});wasmBinaryFile??=findWasmBinary();try{var n=await instantiateAsync(wasmBinary,wasmBinaryFile,l),r=e(n);return r}catch(I){return readyPromiseReject(I),Promise.reject(I)}}Nt(createWasm,"createWasm");var ASM_CONSTS={};class ExitStatus{static{Nt(this,"ExitStatus")}name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(t,e){var l=GOT[e];return l||(l=GOT[e]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(e)||(l.required=!0),l}},LE_HEAP_LOAD_F32=Nt(t=>HEAP_DATA_VIEW.getFloat32(t,!0),"LE_HEAP_LOAD_F32"),LE_HEAP_LOAD_F64=Nt(t=>HEAP_DATA_VIEW.getFloat64(t,!0),"LE_HEAP_LOAD_F64"),LE_HEAP_LOAD_I16=Nt(t=>HEAP_DATA_VIEW.getInt16(t,!0),"LE_HEAP_LOAD_I16"),LE_HEAP_LOAD_I32=Nt(t=>HEAP_DATA_VIEW.getInt32(t,!0),"LE_HEAP_LOAD_I32"),LE_HEAP_LOAD_U16=Nt(t=>HEAP_DATA_VIEW.getUint16(t,!0),"LE_HEAP_LOAD_U16"),LE_HEAP_LOAD_U32=Nt(t=>HEAP_DATA_VIEW.getUint32(t,!0),"LE_HEAP_LOAD_U32"),LE_HEAP_STORE_F32=Nt((t,e)=>HEAP_DATA_VIEW.setFloat32(t,e,!0),"LE_HEAP_STORE_F32"),LE_HEAP_STORE_F64=Nt((t,e)=>HEAP_DATA_VIEW.setFloat64(t,e,!0),"LE_HEAP_STORE_F64"),LE_HEAP_STORE_I16=Nt((t,e)=>HEAP_DATA_VIEW.setInt16(t,e,!0),"LE_HEAP_STORE_I16"),LE_HEAP_STORE_I32=Nt((t,e)=>HEAP_DATA_VIEW.setInt32(t,e,!0),"LE_HEAP_STORE_I32"),LE_HEAP_STORE_U16=Nt((t,e)=>HEAP_DATA_VIEW.setUint16(t,e,!0),"LE_HEAP_STORE_U16"),LE_HEAP_STORE_U32=Nt((t,e)=>HEAP_DATA_VIEW.setUint32(t,e,!0),"LE_HEAP_STORE_U32"),callRuntimeCallbacks=Nt(t=>{for(;t.length>0;)t.shift()(Module)},"callRuntimeCallbacks"),onPostRuns=[],addOnPostRun=Nt(t=>onPostRuns.unshift(t),"addOnPostRun"),onPreRuns=[],addOnPreRun=Nt(t=>onPreRuns.unshift(t),"addOnPreRun"),UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,UTF8ArrayToString=Nt((t,e=0,l=NaN)=>{for(var n=e+l,r=e;t[r]&&!(r>=n);)++r;if(r-e>16&&t.buffer&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var I="";e<r;){var a=t[e++];if(!(a&128)){I+=String.fromCharCode(a);continue}var s=t[e++]&63;if((a&224)==192){I+=String.fromCharCode((a&31)<<6|s);continue}var o=t[e++]&63;if((a&240)==224?a=(a&15)<<12|s<<6|o:a=(a&7)<<18|s<<12|o<<6|t[e++]&63,a<65536)I+=String.fromCharCode(a);else{var d=a-65536;I+=String.fromCharCode(55296|d>>10,56320|d&1023)}}return I},"UTF8ArrayToString"),getDylinkMetadata=Nt(t=>{var e=0,l=0;function n(){return t[e++]}Nt(n,"getU8");function r(){for(var We=0,ee=1;;){var M=t[e++];if(We+=(M&127)*ee,ee*=128,!(M&128))break}return We}Nt(r,"getLEB");function I(){var We=r();return e+=We,UTF8ArrayToString(t,e-We,We)}Nt(I,"getString");function a(We,ee){if(We)throw new Error(ee)}Nt(a,"failIf");var s="dylink.0";if(t instanceof WebAssembly.Module){var o=WebAssembly.Module.customSections(t,s);o.length===0&&(s="dylink",o=WebAssembly.Module.customSections(t,s)),a(o.length===0,"need dylink section"),t=new Uint8Array(o[0]),l=t.length}else{var d=new Uint32Array(new Uint8Array(t.subarray(0,24)).buffer),u=d[0]==1836278016||d[0]==6386541;a(!u,"need to see wasm magic number"),a(t[8]!==0,"need the dylink section to be first"),e=9;var b=r();l=e+b,s=I()}var p={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(s=="dylink"){p.memorySize=r(),p.memoryAlign=r(),p.tableSize=r(),p.tableAlign=r();for(var h=r(),Z=0;Z<h;++Z){var N=I();p.neededDynlibs.push(N)}}else{a(s!=="dylink.0");for(var y=1,Y=2,w=3,H=4,J=256,S=3,T=1;e<l;){var U=n(),j=r();if(U===y)p.memorySize=r(),p.memoryAlign=r(),p.tableSize=r(),p.tableAlign=r();else if(U===Y)for(var h=r(),Z=0;Z<h;++Z)N=I(),p.neededDynlibs.push(N);else if(U===w)for(var O=r();O--;){var z=I(),se=r();se&J&&p.tlsExports.add(z)}else if(U===H)for(var O=r();O--;){var ue=I(),z=I(),se=r();(se&S)==T&&p.weakImports.add(z)}else e+=j}}return p},"getDylinkMetadata");function getValue(t,e="i8"){switch(e.endsWith("*")&&(e="*"),e){case"i1":return HEAP8[t];case"i8":return HEAP8[t];case"i16":return LE_HEAP_LOAD_I16((t>>1)*2);case"i32":return LE_HEAP_LOAD_I32((t>>2)*4);case"i64":return HEAP64[t>>3];case"float":return LE_HEAP_LOAD_F32((t>>2)*4);case"double":return LE_HEAP_LOAD_F64((t>>3)*8);case"*":return LE_HEAP_LOAD_U32((t>>2)*4);default:abort(`invalid type for getValue: ${e}`)}}Nt(getValue,"getValue");var newDSO=Nt((t,e,l)=>{var n={refcount:1/0,name:t,exports:l,global:!0};return LDSO.loadedLibsByName[t]=n,e!=null&&(LDSO.loadedLibsByHandle[e]=n),n},"newDSO"),LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=78224,alignMemory=Nt((t,e)=>Math.ceil(t/e)*e,"alignMemory"),getMemory=Nt(t=>{if(runtimeInitialized)return _calloc(t,1);var e=___heap_base,l=e+alignMemory(t,16);return ___heap_base=l,GOT.__heap_base.value=l,e},"getMemory"),isInternalSym=Nt(t=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(t)||t.startsWith("__em_js__"),"isInternalSym"),uleb128Encode=Nt((t,e)=>{t<128?e.push(t):e.push(t%128|128,t>>7)},"uleb128Encode"),sigToWasmTypes=Nt(t=>{for(var e={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},l={parameters:[],results:t[0]=="v"?[]:[e[t[0]]]},n=1;n<t.length;++n)l.parameters.push(e[t[n]]);return l},"sigToWasmTypes"),generateFuncType=Nt((t,e)=>{var l=t.slice(0,1),n=t.slice(1),r={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96),uleb128Encode(n.length,e);for(var I=0;I<n.length;++I)e.push(r[n[I]]);l=="v"?e.push(0):e.push(1,r[l])},"generateFuncType"),convertJsFunctionToWasm=Nt((t,e)=>{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(sigToWasmTypes(e),t);var l=[1];generateFuncType(e,l);var n=[0,97,115,109,1,0,0,0,1];uleb128Encode(l.length,n),n.push(...l),n.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var r=new WebAssembly.Module(new Uint8Array(n)),I=new WebAssembly.Instance(r,{e:{f:t}}),a=I.exports.f;return a},"convertJsFunctionToWasm"),wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:31,element:"anyfunc"}),getWasmTableEntry=Nt(t=>{var e=wasmTableMirror[t];return e||(t>=wasmTableMirror.length&&(wasmTableMirror.length=t+1),wasmTableMirror[t]=e=wasmTable.get(t)),e},"getWasmTableEntry"),updateTableMap=Nt((t,e)=>{if(functionsInTableMap)for(var l=t;l<t+e;l++){var n=getWasmTableEntry(l);n&&functionsInTableMap.set(n,l)}},"updateTableMap"),functionsInTableMap,getFunctionAddress=Nt(t=>(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(t)||0),"getFunctionAddress"),freeTableIndexes=[],getEmptyTableSlot=Nt(()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(t){throw t instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":t}return wasmTable.length-1},"getEmptyTableSlot"),setWasmTableEntry=Nt((t,e)=>{wasmTable.set(t,e),wasmTableMirror[t]=wasmTable.get(t)},"setWasmTableEntry"),addFunction=Nt((t,e)=>{var l=getFunctionAddress(t);if(l)return l;var n=getEmptyTableSlot();try{setWasmTableEntry(n,t)}catch(I){if(!(I instanceof TypeError))throw I;var r=convertJsFunctionToWasm(t,e);setWasmTableEntry(n,r)}return functionsInTableMap.set(t,n),n},"addFunction"),updateGOT=Nt((t,e)=>{for(var l in t)if(!isInternalSym(l)){var n=t[l];GOT[l]||=new WebAssembly.Global({value:"i32",mutable:!0}),(e||GOT[l].value==0)&&(typeof n=="function"?GOT[l].value=addFunction(n):typeof n=="number"?GOT[l].value=n:err(`unhandled export type for '${l}': ${typeof n}`))}},"updateGOT"),relocateExports=Nt((t,e,l)=>{var n={};for(var r in t){var I=t[r];typeof I=="object"&&(I=I.value),typeof I=="number"&&(I+=e),n[r]=I}return updateGOT(n,l),n},"relocateExports"),isSymbolDefined=Nt(t=>{var e=wasmImports[t];return!(!e||e.stub)},"isSymbolDefined"),dynCall=Nt((t,e,l=[])=>{var n=getWasmTableEntry(e)(...l);return n},"dynCall"),stackSave=Nt(()=>_emscripten_stack_get_current(),"stackSave"),stackRestore=Nt(t=>__emscripten_stack_restore(t),"stackRestore"),createInvokeFunction=Nt(t=>(e,...l)=>{var n=stackSave();try{return dynCall(t,e,l)}catch(r){if(stackRestore(n),r!==r+0)throw r;if(_setThrew(1,0),t[0]=="j")return 0n}},"createInvokeFunction"),resolveGlobalSymbol=Nt((t,e=!1)=>{var l;return isSymbolDefined(t)?l=wasmImports[t]:t.startsWith("invoke_")&&(l=wasmImports[t]=createInvokeFunction(t.split("_")[1])),{sym:l,name:t}},"resolveGlobalSymbol"),onPostCtors=[],addOnPostCtor=Nt(t=>onPostCtors.unshift(t),"addOnPostCtor"),UTF8ToString=Nt((t,e)=>t?UTF8ArrayToString(HEAPU8,t,e):"","UTF8ToString"),loadWebAssemblyModule=Nt((binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);currentModuleWeakSymbols=metadata.weakImports;function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase),LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize),LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase),LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)),metadata.tableSize&&wasmTable.grow(metadata.tableSize);var moduleExports;function resolveSymbol(t){var e=resolveGlobalSymbol(t).sym;return!e&&localScope&&(e=localScope[t]),e||(e=moduleExports[t]),e}Nt(resolveSymbol,"resolveSymbol");var proxyHandler={get(t,e){switch(e){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(e in wasmImports&&!wasmImports[e].stub){var l=wasmImports[e];return l}if(!(e in t)){var n;t[e]=(...r)=>(n||=resolveSymbol(e),n(...r))}return t[e]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(Nt(addEmAsm,"addEmAsm"),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start<stop;){var jsString=UTF8ToString(start);addEmAsm(start,jsString),start=HEAPU8.indexOf(0,start)+1}function addEmJs(name,cSig,body){var jsArgs=[];if(cSig=cSig.slice(1,-1),cSig!="void"){cSig=cSig.split(",");for(var i in cSig){var jsArg=cSig[i].split(" ").pop();jsArgs.push(jsArg.replace("*",""))}}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}Nt(addEmJs,"addEmJs");for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():addOnPostCtor(init)),moduleExports}if(Nt(postInstantiation,"postInstantiation"),flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then(t=>postInstantiation(t.module,t.instance))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return Nt(loadModule,"loadModule"),flags.loadAsync?metadata.neededDynlibs.reduce((t,e)=>t.then(()=>loadDynamicLibrary(e,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(t=>loadDynamicLibrary(t,flags,localScope)),loadModule())},"loadWebAssemblyModule"),mergeLibSymbols=Nt((t,e)=>{for(var[l,n]of Object.entries(t)){let r=Nt(a=>{isSymbolDefined(a)||(wasmImports[a]=n)},"setImport");r(l);let I="__main_argc_argv";l=="main"&&r(I),l==I&&r("main")}},"mergeLibSymbols"),asyncLoad=Nt(async t=>{var e=await readAsync(t);return new Uint8Array(e)},"asyncLoad");function loadDynamicLibrary(t,e={global:!0,nodelete:!0},l,n){var r=LDSO.loadedLibsByName[t];if(r)return e.global?r.global||(r.global=!0,mergeLibSymbols(r.exports,t)):l&&Object.assign(l,r.exports),e.nodelete&&r.refcount!==1/0&&(r.refcount=1/0),r.refcount++,n&&(LDSO.loadedLibsByHandle[n]=r),e.loadAsync?Promise.resolve(!0):!0;r=newDSO(t,n,"loading"),r.refcount=e.nodelete?1/0:1,r.global=e.global;function I(){if(n){var o=LE_HEAP_LOAD_U32((n+28>>2)*4),d=LE_HEAP_LOAD_U32((n+32>>2)*4);if(o&&d){var u=HEAP8.slice(o,o+d);return e.loadAsync?Promise.resolve(u):u}}var b=locateFile(t);if(e.loadAsync)return asyncLoad(b);if(!readBinary)throw new Error(`${b}: file not found, and synchronous loading of external files is not available`);return readBinary(b)}Nt(I,"loadLibData");function a(){return e.loadAsync?I().then(o=>loadWebAssemblyModule(o,e,t,l,n)):loadWebAssemblyModule(I(),e,t,l,n)}Nt(a,"getExports");function s(o){r.global?mergeLibSymbols(o,t):l&&Object.assign(l,o),r.exports=o}return Nt(s,"moduleLoaded"),e.loadAsync?a().then(o=>(s(o),!0)):(s(a()),!0)}Nt(loadDynamicLibrary,"loadDynamicLibrary");var reportUndefinedSymbols=Nt(()=>{for(var[t,e]of Object.entries(GOT))if(e.value==0){var l=resolveGlobalSymbol(t,!0).sym;if(!l&&!e.required)continue;if(typeof l=="function")e.value=addFunction(l,l.sig);else if(typeof l=="number")e.value=l;else throw new Error(`bad export type for '${t}': ${typeof l}`)}},"reportUndefinedSymbols"),loadDylibs=Nt(()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs"),dynamicLibraries.reduce((t,e)=>t.then(()=>loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})),Promise.resolve()).then(()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")})},"loadDylibs"),noExitRuntime=Module.noExitRuntime||!0;function setValue(t,e,l="i8"){switch(l.endsWith("*")&&(l="*"),l){case"i1":HEAP8[t]=e;break;case"i8":HEAP8[t]=e;break;case"i16":LE_HEAP_STORE_I16((t>>1)*2,e);break;case"i32":LE_HEAP_STORE_I32((t>>2)*4,e);break;case"i64":HEAP64[t>>3]=BigInt(e);break;case"float":LE_HEAP_STORE_F32((t>>2)*4,e);break;case"double":LE_HEAP_STORE_F64((t>>3)*8,e);break;case"*":LE_HEAP_STORE_U32((t>>2)*4,e);break;default:abort(`invalid type for setValue: ${l}`)}}Nt(setValue,"setValue");var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},78224),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=Nt(()=>abort(""),"__abort_js");__abort_js.sig="v";var _emscripten_get_now=Nt(()=>performance.now(),"_emscripten_get_now");_emscripten_get_now.sig="d";var _emscripten_date_now=Nt(()=>Date.now(),"_emscripten_date_now");_emscripten_date_now.sig="d";var nowIsMonotonic=1,checkWasiClock=Nt(t=>t>=0&&t<=3,"checkWasiClock"),INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=Nt(t=>t<INT53_MIN||t>INT53_MAX?NaN:Number(t),"bigintToI53Checked");function _clock_time_get(t,e,l){if(e=bigintToI53Checked(e),!checkWasiClock(t))return 28;var n;if(t===0)n=_emscripten_date_now();else if(nowIsMonotonic)n=_emscripten_get_now();else return 52;var r=Math.round(n*1e3*1e3);return HEAP64[l>>3]=BigInt(r),0}Nt(_clock_time_get,"_clock_time_get"),_clock_time_get.sig="iijp";var getHeapMax=Nt(()=>2147483648,"getHeapMax"),growMemory=Nt(t=>{var e=wasmMemory.buffer,l=(t-e.byteLength+65535)/65536|0;try{return wasmMemory.grow(l),updateMemoryViews(),1}catch{}},"growMemory"),_emscripten_resize_heap=Nt(t=>{var e=HEAPU8.length;t>>>=0;var l=getHeapMax();if(t>l)return!1;for(var n=1;n<=4;n*=2){var r=e*(1+.2/n);r=Math.min(r,t+100663296);var I=Math.min(l,alignMemory(Math.max(t,r),65536)),a=growMemory(I);if(a)return!0}return!1},"_emscripten_resize_heap");_emscripten_resize_heap.sig="ip";var _fd_close=Nt(t=>52,"_fd_close");_fd_close.sig="ii";function _fd_seek(t,e,l,n){return e=bigintToI53Checked(e),70}Nt(_fd_seek,"_fd_seek"),_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]],printChar=Nt((t,e)=>{var l=printCharBuffers[t];e===0||e===10?((t===1?out:err)(UTF8ArrayToString(l)),l.length=0):l.push(e)},"printChar"),flush_NO_FILESYSTEM=Nt(()=>{printCharBuffers[1].length&&printChar(1,10),printCharBuffers[2].length&&printChar(2,10)},"flush_NO_FILESYSTEM"),SYSCALLS={varargs:void 0,getStr(t){var e=UTF8ToString(t);return e}},_fd_write=Nt((t,e,l,n)=>{for(var r=0,I=0;I<l;I++){var a=LE_HEAP_LOAD_U32((e>>2)*4),s=LE_HEAP_LOAD_U32((e+4>>2)*4);e+=8;for(var o=0;o<s;o++)printChar(t,HEAPU8[a+o]);r+=s}return LE_HEAP_STORE_U32((n>>2)*4,r),0},"_fd_write");_fd_write.sig="iippp";function _tree_sitter_log_callback(t,e){if(Module.currentLogCallback){let l=UTF8ToString(e);Module.currentLogCallback(l,t!==0)}}Nt(_tree_sitter_log_callback,"_tree_sitter_log_callback");function _tree_sitter_parse_callback(t,e,l,n,r){let a=Module.currentParseCallback(e,{row:l,column:n});typeof a=="string"?(setValue(r,a.length,"i32"),stringToUTF16(a,t,10240)):setValue(r,0,"i32")}Nt(_tree_sitter_parse_callback,"_tree_sitter_parse_callback");function _tree_sitter_progress_callback(t,e){return Module.currentProgressCallback?Module.currentProgressCallback({currentOffset:t,hasError:e}):!1}Nt(_tree_sitter_progress_callback,"_tree_sitter_progress_callback");function _tree_sitter_query_progress_callback(t){return Module.currentQueryProgressCallback?Module.currentQueryProgressCallback({currentOffset:t}):!1}Nt(_tree_sitter_query_progress_callback,"_tree_sitter_query_progress_callback");var runtimeKeepaliveCounter=0,keepRuntimeAlive=Nt(()=>noExitRuntime||runtimeKeepaliveCounter>0,"keepRuntimeAlive"),_proc_exit=Nt(t=>{EXITSTATUS=t,keepRuntimeAlive()||(Module.onExit?.(t),ABORT=!0),quit_(t,new ExitStatus(t))},"_proc_exit");_proc_exit.sig="vi";var exitJS=Nt((t,e)=>{EXITSTATUS=t,_proc_exit(t)},"exitJS"),handleException=Nt(t=>{if(t instanceof ExitStatus||t=="unwind")return EXITSTATUS;quit_(1,t)},"handleException"),lengthBytesUTF8=Nt(t=>{for(var e=0,l=0;l<t.length;++l){var n=t.charCodeAt(l);n<=127?e++:n<=2047?e+=2:n>=55296&&n<=57343?(e+=4,++l):e+=3}return e},"lengthBytesUTF8"),stringToUTF8Array=Nt((t,e,l,n)=>{if(!(n>0))return 0;for(var r=l,I=l+n-1,a=0;a<t.length;++a){var s=t.charCodeAt(a);if(s>=55296&&s<=57343){var o=t.charCodeAt(++a);s=65536+((s&1023)<<10)|o&1023}if(s<=127){if(l>=I)break;e[l++]=s}else if(s<=2047){if(l+1>=I)break;e[l++]=192|s>>6,e[l++]=128|s&63}else if(s<=65535){if(l+2>=I)break;e[l++]=224|s>>12,e[l++]=128|s>>6&63,e[l++]=128|s&63}else{if(l+3>=I)break;e[l++]=240|s>>18,e[l++]=128|s>>12&63,e[l++]=128|s>>6&63,e[l++]=128|s&63}}return e[l]=0,l-r},"stringToUTF8Array"),stringToUTF8=Nt((t,e,l)=>stringToUTF8Array(t,HEAPU8,e,l),"stringToUTF8"),stackAlloc=Nt(t=>__emscripten_stack_alloc(t),"stackAlloc"),stringToUTF8OnStack=Nt(t=>{var e=lengthBytesUTF8(t)+1,l=stackAlloc(e);return stringToUTF8(t,l,e),l},"stringToUTF8OnStack"),AsciiToString=Nt(t=>{for(var e="";;){var l=HEAPU8[t++];if(!l)return e;e+=String.fromCharCode(l)}},"AsciiToString"),stringToUTF16=Nt((t,e,l)=>{if(l??=2147483647,l<2)return 0;l-=2;for(var n=e,r=l<t.length*2?l/2:t.length,I=0;I<r;++I){var a=t.charCodeAt(I);LE_HEAP_STORE_I16((e>>1)*2,a),e+=2}return LE_HEAP_STORE_I16((e>>1)*2,0),e-n},"stringToUTF16"),wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__table_base:___table_base,_abort_js:__abort_js,clock_time_get:_clock_time_get,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback,tree_sitter_progress_callback:_tree_sitter_progress_callback,tree_sitter_query_progress_callback:_tree_sitter_query_progress_callback},wasmExports=await createWasm(),___wasm_call_ctors=wasmExports.__wasm_call_ctors,_malloc=Module._malloc=wasmExports.malloc,_calloc=Module._calloc=wasmExports.calloc,_realloc=Module._realloc=wasmExports.realloc,_free=Module._free=wasmExports.free,_memcmp=Module._memcmp=wasmExports.memcmp,_ts_language_symbol_count=Module._ts_language_symbol_count=wasmExports.ts_language_symbol_count,_ts_language_state_count=Module._ts_language_state_count=wasmExports.ts_language_state_count,_ts_language_version=Module._ts_language_version=wasmExports.ts_language_version,_ts_language_abi_version=Module._ts_language_abi_version=wasmExports.ts_language_abi_version,_ts_language_metadata=Module._ts_language_metadata=wasmExports.ts_language_metadata,_ts_language_name=Module._ts_language_name=wasmExports.ts_language_name,_ts_language_field_count=Module._ts_language_field_count=wasmExports.ts_language_field_count,_ts_language_next_state=Module._ts_language_next_state=wasmExports.ts_language_next_state,_ts_language_symbol_name=Module._ts_language_symbol_name=wasmExports.ts_language_symbol_name,_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=wasmExports.ts_language_symbol_for_name,_strncmp=Module._strncmp=wasmExports.strncmp,_ts_language_symbol_type=Module._ts_language_symbol_type=wasmExports.ts_language_symbol_type,_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=wasmExports.ts_language_field_name_for_id,_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=wasmExports.ts_lookahead_iterator_new,_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=wasmExports.ts_lookahead_iterator_delete,_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=wasmExports.ts_lookahead_iterator_reset_state,_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=wasmExports.ts_lookahead_iterator_reset,_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=wasmExports.ts_lookahead_iterator_next,_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=wasmExports.ts_lookahead_iterator_current_symbol,_ts_parser_delete=Module._ts_parser_delete=wasmExports.ts_parser_delete,_ts_parser_reset=Module._ts_parser_reset=wasmExports.ts_parser_reset,_ts_parser_set_language=Module._ts_parser_set_language=wasmExports.ts_parser_set_language,_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=wasmExports.ts_parser_timeout_micros,_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=wasmExports.ts_parser_set_timeout_micros,_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=wasmExports.ts_parser_set_included_ranges,_ts_query_new=Module._ts_query_new=wasmExports.ts_query_new,_ts_query_delete=Module._ts_query_delete=wasmExports.ts_query_delete,_iswspace=Module._iswspace=wasmExports.iswspace,_iswalnum=Module._iswalnum=wasmExports.iswalnum,_ts_query_pattern_count=Module._ts_query_pattern_count=wasmExports.ts_query_pattern_count,_ts_query_capture_count=Module._ts_query_capture_count=wasmExports.ts_query_capture_count,_ts_query_string_count=Module._ts_query_string_count=wasmExports.ts_query_string_count,_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=wasmExports.ts_query_capture_name_for_id,_ts_query_capture_quantifier_for_id=Module._ts_query_capture_quantifier_for_id=wasmExports.ts_query_capture_quantifier_for_id,_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=wasmExports.ts_query_string_value_for_id,_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=wasmExports.ts_query_predicates_for_pattern,_ts_query_start_byte_for_pattern=Module._ts_query_start_byte_for_pattern=wasmExports.ts_query_start_byte_for_pattern,_ts_query_end_byte_for_pattern=Module._ts_query_end_byte_for_pattern=wasmExports.ts_query_end_byte_for_pattern,_ts_query_is_pattern_rooted=Module._ts_query_is_pattern_rooted=wasmExports.ts_query_is_pattern_rooted,_ts_query_is_pattern_non_local=Module._ts_query_is_pattern_non_local=wasmExports.ts_query_is_pattern_non_local,_ts_query_is_pattern_guaranteed_at_step=Module._ts_query_is_pattern_guaranteed_at_step=wasmExports.ts_query_is_pattern_guaranteed_at_step,_ts_query_disable_capture=Module._ts_query_disable_capture=wasmExports.ts_query_disable_capture,_ts_query_disable_pattern=Module._ts_query_disable_pattern=wasmExports.ts_query_disable_pattern,_ts_tree_copy=Module._ts_tree_copy=wasmExports.ts_tree_copy,_ts_tree_delete=Module._ts_tree_delete=wasmExports.ts_tree_delete,_ts_init=Module._ts_init=wasmExports.ts_init,_ts_parser_new_wasm=Module._ts_parser_new_wasm=wasmExports.ts_parser_new_wasm,_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=wasmExports.ts_parser_enable_logger_wasm,_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=wasmExports.ts_parser_parse_wasm,_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=wasmExports.ts_parser_included_ranges_wasm,_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=wasmExports.ts_language_type_is_named_wasm,_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=wasmExports.ts_language_type_is_visible_wasm,_ts_language_supertypes_wasm=Module._ts_language_supertypes_wasm=wasmExports.ts_language_supertypes_wasm,_ts_language_subtypes_wasm=Module._ts_language_subtypes_wasm=wasmExports.ts_language_subtypes_wasm,_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=wasmExports.ts_tree_root_node_wasm,_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=wasmExports.ts_tree_root_node_with_offset_wasm,_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=wasmExports.ts_tree_edit_wasm,_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=wasmExports.ts_tree_included_ranges_wasm,_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=wasmExports.ts_tree_get_changed_ranges_wasm,_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=wasmExports.ts_tree_cursor_new_wasm,_ts_tree_cursor_copy_wasm=Module._ts_tree_cursor_copy_wasm=wasmExports.ts_tree_cursor_copy_wasm,_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=wasmExports.ts_tree_cursor_delete_wasm,_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=wasmExports.ts_tree_cursor_reset_wasm,_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=wasmExports.ts_tree_cursor_reset_to_wasm,_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=wasmExports.ts_tree_cursor_goto_first_child_wasm,_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=wasmExports.ts_tree_cursor_goto_last_child_wasm,_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_index_wasm,_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_position_wasm,_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=wasmExports.ts_tree_cursor_goto_next_sibling_wasm,_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=wasmExports.ts_tree_cursor_goto_previous_sibling_wasm,_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=wasmExports.ts_tree_cursor_goto_descendant_wasm,_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=wasmExports.ts_tree_cursor_goto_parent_wasm,_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=wasmExports.ts_tree_cursor_current_node_type_id_wasm,_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=wasmExports.ts_tree_cursor_current_node_state_id_wasm,_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=wasmExports.ts_tree_cursor_current_node_is_named_wasm,_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=wasmExports.ts_tree_cursor_current_node_is_missing_wasm,_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=wasmExports.ts_tree_cursor_current_node_id_wasm,_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=wasmExports.ts_tree_cursor_start_position_wasm,_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=wasmExports.ts_tree_cursor_end_position_wasm,_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=wasmExports.ts_tree_cursor_start_index_wasm,_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=wasmExports.ts_tree_cursor_end_index_wasm,_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=wasmExports.ts_tree_cursor_current_field_id_wasm,_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=wasmExports.ts_tree_cursor_current_depth_wasm,_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=wasmExports.ts_tree_cursor_current_descendant_index_wasm,_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=wasmExports.ts_tree_cursor_current_node_wasm,_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=wasmExports.ts_node_symbol_wasm,_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=wasmExports.ts_node_field_name_for_child_wasm,_ts_node_field_name_for_named_child_wasm=Module._ts_node_field_name_for_named_child_wasm=wasmExports.ts_node_field_name_for_named_child_wasm,_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=wasmExports.ts_node_children_by_field_id_wasm,_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=wasmExports.ts_node_first_child_for_byte_wasm,_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=wasmExports.ts_node_first_named_child_for_byte_wasm,_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=wasmExports.ts_node_grammar_symbol_wasm,_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=wasmExports.ts_node_child_count_wasm,_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=wasmExports.ts_node_named_child_count_wasm,_ts_node_child_wasm=Module._ts_node_child_wasm=wasmExports.ts_node_child_wasm,_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=wasmExports.ts_node_named_child_wasm,_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=wasmExports.ts_node_child_by_field_id_wasm,_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=wasmExports.ts_node_next_sibling_wasm,_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=wasmExports.ts_node_prev_sibling_wasm,_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=wasmExports.ts_node_next_named_sibling_wasm,_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=wasmExports.ts_node_prev_named_sibling_wasm,_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=wasmExports.ts_node_descendant_count_wasm,_ts_node_parent_wasm=Module._ts_node_parent_wasm=wasmExports.ts_node_parent_wasm,_ts_node_child_with_descendant_wasm=Module._ts_node_child_with_descendant_wasm=wasmExports.ts_node_child_with_descendant_wasm,_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=wasmExports.ts_node_descendant_for_index_wasm,_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=wasmExports.ts_node_named_descendant_for_index_wasm,_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=wasmExports.ts_node_descendant_for_position_wasm,_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=wasmExports.ts_node_named_descendant_for_position_wasm,_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=wasmExports.ts_node_start_point_wasm,_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=wasmExports.ts_node_end_point_wasm,_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=wasmExports.ts_node_start_index_wasm,_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=wasmExports.ts_node_end_index_wasm,_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=wasmExports.ts_node_to_string_wasm,_ts_node_children_wasm=Module._ts_node_children_wasm=wasmExports.ts_node_children_wasm,_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=wasmExports.ts_node_named_children_wasm,_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=wasmExports.ts_node_descendants_of_type_wasm,_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=wasmExports.ts_node_is_named_wasm,_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=wasmExports.ts_node_has_changes_wasm,_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=wasmExports.ts_node_has_error_wasm,_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=wasmExports.ts_node_is_error_wasm,_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=wasmExports.ts_node_is_missing_wasm,_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=wasmExports.ts_node_is_extra_wasm,_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=wasmExports.ts_node_parse_state_wasm,_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=wasmExports.ts_node_next_parse_state_wasm,_ts_query_matches_wasm=Module._ts_query_matches_wasm=wasmExports.ts_query_matches_wasm,_ts_query_captures_wasm=Module._ts_query_captures_wasm=wasmExports.ts_query_captures_wasm,_memset=Module._memset=wasmExports.memset,_memcpy=Module._memcpy=wasmExports.memcpy,_memmove=Module._memmove=wasmExports.memmove,_iswalpha=Module._iswalpha=wasmExports.iswalpha,_iswblank=Module._iswblank=wasmExports.iswblank,_iswdigit=Module._iswdigit=wasmExports.iswdigit,_iswlower=Module._iswlower=wasmExports.iswlower,_iswupper=Module._iswupper=wasmExports.iswupper,_iswxdigit=Module._iswxdigit=wasmExports.iswxdigit,_memchr=Module._memchr=wasmExports.memchr,_strlen=Module._strlen=wasmExports.strlen,_strcmp=Module._strcmp=wasmExports.strcmp,_strncat=Module._strncat=wasmExports.strncat,_strncpy=Module._strncpy=wasmExports.strncpy,_towlower=Module._towlower=wasmExports.towlower,_towupper=Module._towupper=wasmExports.towupper,_setThrew=wasmExports.setThrew,__emscripten_stack_restore=wasmExports._emscripten_stack_restore,__emscripten_stack_alloc=wasmExports._emscripten_stack_alloc,_emscripten_stack_get_current=wasmExports.emscripten_stack_get_current,___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs;Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,Module.loadWebAssemblyModule=loadWebAssemblyModule;function callMain(t=[]){var e=resolveGlobalSymbol("main").sym;if(e){t.unshift(thisProgram);var l=t.length,n=stackAlloc((l+1)*4),r=n;t.forEach(a=>{LE_HEAP_STORE_U32((r>>2)*4,stringToUTF8OnStack(a)),r+=4}),LE_HEAP_STORE_U32((r>>2)*4,0);try{var I=e(l,n);return exitJS(I,!0),I}catch(a){return handleException(a)}}}Nt(callMain,"callMain");function run(t=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}if(preRun(),runDependencies>0){dependenciesFulfilled=run;return}function e(){if(Module.calledRun=!0,!ABORT){initRuntime(),readyPromiseResolve(Module),Module.onRuntimeInitialized?.();var l=Module.noInitialRun;l||callMain(t),postRun()}}Nt(e,"doRun"),Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),e()},1)):e()}if(Nt(run,"run"),Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return run(),moduleRtn=readyPromise,moduleRtn}})(),GTn=bTn,oFe=null;async function Kal(t){return oFe||(oFe=await GTn(t)),oFe}Nt(Kal,"initializeBinding");function qal(){return!!oFe}Nt(qal,"checkModule");var er,ret,Iet,det=class{static{Nt(this,"Parser")}0=0;1=0;logCallback=null;language=null;static async init(t){Jal(await Kal(t)),er=Ve._ts_init(),ret=Ve.getValue(er,"i32"),Iet=Ve.getValue(er+ur,"i32")}constructor(){this.initialize()}initialize(){if(!qal())throw new Error("cannot construct a Parser before calling `init()`");Ve._ts_parser_new_wasm(),this[0]=Ve.getValue(er,"i32"),this[1]=Ve.getValue(er+ur,"i32")}delete(){Ve._ts_parser_delete(this[0]),Ve._free(this[1]),this[0]=0,this[1]=0}setLanguage(t){let e;if(!t)e=0,this.language=null;else if(t.constructor===cet){e=t[0];let l=Ve._ts_language_version(e);if(l<Iet||ret<l)throw new Error(`Incompatible language version ${l}. Compatibility range ${Iet} through ${ret}.`);this.language=t}else throw new Error("Argument must be a Language");return Ve._ts_parser_set_language(this[0],e),this}parse(t,e,l){if(typeof t=="string")Ve.currentParseCallback=s=>t.slice(s);else if(typeof t=="function")Ve.currentParseCallback=t;else throw new Error("Argument must be a string or a function");l?.progressCallback?Ve.currentProgressCallback=l.progressCallback:Ve.currentProgressCallback=null,this.logCallback?(Ve.currentLogCallback=this.logCallback,Ve._ts_parser_enable_logger_wasm(this[0],1)):(Ve.currentLogCallback=null,Ve._ts_parser_enable_logger_wasm(this[0],0));let n=0,r=0;if(l?.includedRanges){n=l.includedRanges.length,r=Ve._calloc(n,Cme);let s=r;for(let o=0;o<n;o++)Sal(s,l.includedRanges[o]),s+=Cme}let I=Ve._ts_parser_parse_wasm(this[0],this[1],e?e[0]:0,r,n);if(!I)return Ve.currentParseCallback=null,Ve.currentLogCallback=null,Ve.currentProgressCallback=null,null;if(!this.language)throw new Error("Parser must have a language to parse");let a=new aTn(NL,I,this.language,Ve.currentParseCallback);return Ve.currentParseCallback=null,Ve.currentLogCallback=null,Ve.currentProgressCallback=null,a}reset(){Ve._ts_parser_reset(this[0])}getIncludedRanges(){Ve._ts_parser_included_ranges_wasm(this[0]);let t=Ve.getValue(er,"i32"),e=Ve.getValue(er+ur,"i32"),l=new Array(t);if(t>0){let n=e;for(let r=0;r<t;r++)l[r]=iFe(n),n+=Cme;Ve._free(e)}return l}getTimeoutMicros(){return Ve._ts_parser_timeout_micros(this[0])}setTimeoutMicros(t){Ve._ts_parser_set_timeout_micros(this[0],0,t)}setLogger(t){if(!t)this.logCallback=null;else{if(typeof t!="function")throw new Error("Logger callback must be a function");this.logCallback=t}return this}getLogger(){return this.logCallback}};c();var $al=()=>!0;var uet=new Map,met=null;async function tsl(t,e,l){t==="powershell"&&(e=e.replace(/&&/g,";"));let n=await pTn(t,e);if(!n)return{kind:"error",reason:"failed to parse script"};let r=new Set(["expansion","simple_expansion","command_substitution","process_substitution","arithmetic_expansion","variable_assignment","variable_assignments","if_statement","for_statement","c_style_for_statement","while_statement","case_statement","function_definition","subshell","compound_statement","binary_expression","unary_expression","ternary_expression","test_command","negated_command","declaration_command","unset_command","brace_expression","command_name_expr"]),I=new Set(["integer_literal","string_literal","real_literal"]),a=[n.rootNode],s=[],o=!1,d=!1;for(;a.length>0;){let u=a.pop();if(u.isNamed){if(u.type==="command"){let b=ZTn(t,u,l);b!==null&&s.push({fullCommandText:u.text.trim(),commandIdentifier:b})}if(r.has(u.type)){let b=u.children.length===1?u.children[0]:null;u.type==="unary_expression"&&b&&I.has(b.type)||(d=!0)}u.type==="file_redirect"&&(o||=!WTn(u)),u.type==="redirection"&&(o||=!yTn(u));for(let b=u.children.length-1;b>=0;b--){let p=u.children[b];p&&a.push(p)}}}return{kind:"success",commands:s,hasWriteFileRedirection:o,hasPotentiallyConfusingConstructs:d}}async function pTn(t,e){met||(met=det.init()),await met;let l=await hTn(t),n=new det;return n.setLanguage(l),n.parse(e)}function hTn(t){let e=uet.get(t);if(e)return e;let l=ATn(t),n=$al()?esl.join(import.meta.dirname,l.file):esl.join("node_modules",l.package,l.file),r=cet.load(n).catch(I=>{throw uet.delete(t),I});return uet.set(t,r),r}function ATn(t){switch(t){case"bash":return{package:"tree-sitter-bash",file:"tree-sitter-bash.wasm"};case"powershell":return{package:"tree-sitter-powershell",file:"tree-sitter-powershell.wasm"};default:sb(t,`Unknown shell type: ${t}`)}}function ZTn(t,e,l){switch(t){case"bash":return gTn(e,l);case"powershell":return NTn(e,l);default:sb(t,`Unknown shell type: ${t}`)}}function gTn(t,e){if(!t||t.type!=="command")throw new Error(`expected a command node, got ${t.type}`);let l=t.childForFieldName("name")??t.namedChildren.find(a=>a?.type==="command_name");if(!l)throw new Error("command node has no name or command_name child");let n=l.text,r=e?.find(a=>a.stem===n);if(!r)return n;let I=l.nextNamedSibling;for(;I&&I.type==="word";){if(!r?.flagsToIgnore?.includes(I.text))return`${n} ${I.text}`;I=I.nextNamedSibling}return n}function NTn(t,e){if(!t||t.type!=="command")throw new Error(`expected a command node, got ${t.type}`);let l=t.childForFieldName("name")??t.namedChildren.find(a=>a?.type==="command_name");if(!l){if(t.namedChildren.find(s=>s?.type==="foreach_command"))return"ForEach-Object";let a=t.namedChildren.find(s=>s?.type==="command_name_expr");if(a)return a.childCount===1&&a.firstChild?.type==="script_block_expression"?null:"<command with expression as name>";throw new Error("command node has no name, command_name, foreach_command, or command_name_expr child")}let n=l.text,r=e?.find(a=>a.stem===n);if(!r)return n;let I=l.nextNamedSibling;for(;I;){if(I.type==="command_argument_sep"){I=I.nextNamedSibling;continue}if(I.type==="command_elements"){I=I.namedChildren[0];continue}if(I.type!=="command_parameter"&&I.type!=="generic_token")break;if(!r?.flagsToIgnore?.includes(I.text))return`${n} ${I.text}`;I=I.nextNamedSibling}return n}function WTn(t){if(t.children.length===3&&["2>&1","1>&2"].includes(t.text))return!0;for(let e of t.children){if(!e||e.isNamed)continue;let l=e.text;return l==="<"||l==="<&"||l==="<&-"}return!1}function yTn(t){for(let e of t.children)if(e){if(e.type==="merging_redirection_operator")return!1;if(e.type==="file_redirection_operator")return e.text.trim().startsWith("<")}return!1}var ETn=[{stem:"git",flagsToIgnore:["--no-pager"]},{stem:"gh"},{stem:"glab"},{stem:"npm"},{stem:"npx"},{stem:"yarn"},{stem:"pnpm"},{stem:"cargo"},{stem:"go"},{stem:"composer"},{stem:"pip"},{stem:"pipenv"},{stem:"poetry"},{stem:"conda"},{stem:"mvn"},{stem:"gradle"},{stem:"gradlew"},{stem:"dotnet"},{stem:"bundle"},{stem:"swift"},{stem:"sbt"},{stem:"flutter"},{stem:"mix"},{stem:"cabal"},{stem:"stack"}];async function lsl(t,e){let l=Xal(e),n=await tsl(t,e,ETn);return n.kind==="error"?{result:"failed",reason:`Command could not be assured as safe: ${n.reason}`}:n.commands.length===0?{result:"completed",commands:[{identifier:e,readOnly:!1}],possiblePaths:l,hasWriteFileRedirection:n.hasWriteFileRedirection,canOfferSessionApproval:!1}:{result:"completed",commands:n.commands.map(a=>RTn(t,a.fullCommandText,a.commandIdentifier)).reduce((a,s)=>{let o=a.find(d=>d.identifier===s.identifier);return o?o.readOnly=o.readOnly&&s.readOnly:(o={identifier:s.identifier,readOnly:s.readOnly},a.push(o)),a},[]),possiblePaths:l,hasWriteFileRedirection:n.hasWriteFileRedirection,canOfferSessionApproval:!n.hasPotentiallyConfusingConstructs}}function RTn(t,e,l){switch(l){case"cat":case"cd":case"echo":case"false":case"head":case"hostname":case"ls":case"pwd":case"timeout":case"true":case"whoami":return{identifier:l,readOnly:!0}}if(l==="git"||l.startsWith("git "))return wTn(l);if(t==="bash")switch(l){case"cal":case"df":case"du":case"env":case"free":case"groups":case"id":case"nice":case"nl":case"printenv":case"ps":case"set":case"tail":case"time":case"top":case"type":case"uname":case"unset":case"uptime":case"wc":case"whatis":case"whereis":case"which":return{identifier:l,readOnly:!0};case"date":return YTn(e);case"find":return VTn(e)}if(t==="powershell")switch(l){case"Get-Command":case"Get-Content":case"Get-Process":case"Get-ChildItem":case"Get-Location":case"Select-String":case"Select-Object":case"Test-Path":return{identifier:l,readOnly:!0}}return{identifier:l,readOnly:!1}}function YTn(t){return t.match(/\s-s/)||t.match(/\s--set\b/)?{identifier:"date",readOnly:!1}:{identifier:"date",readOnly:!0}}function VTn(t){let e=["-exec","-execdir","-ok","-okdir","-delete","-fls","-fprint","-fprint0","-fprintf"];for(let l of e)if(t.includes(l))return{identifier:"find",readOnly:!1};return{identifier:"find",readOnly:!0}}function wTn(t){return t==="git"?{identifier:t,readOnly:!0}:["git blame","git branch","git describe","git diff","git grep","git log","git ls-files","git ls-remote","git remote","git rev-parse","git shortlog","git show","git status","git tag"].includes(t)?{identifier:t,readOnly:!0}:{identifier:t,readOnly:!1}}var cFe=class t{agentKind;client;settings;logger;toolConfig;availableTools=[];callback=new GWe;executeToolsInParallel=!0;constructor(){}static async createFromOptions(e){let l=new t;return await l.initializeFromOptions(e),l}async initializeFromOptions(e){this.logger=e.logger,this.executeToolsInParallel=e.executeToolsInParallel??!0;let l=new M3;l.setProblemStatement(e.problemStatement).setInstanceId(dE(e.serviceInstanceId)).setAgentModel(dE(e.serviceAgentModel)).setCallbackUrl(dE(e.serviceCallbackUrl)).setAipSweAgentToken(dE(e.apiAipSweAgentToken)).setAnthropicApiKey(dE(e.apiAnthropicKey)).setCopilotUrl(dE(e.apiCopilotUrl)).setCopilotIntegrationId(dE(e.apiCopilotIntegrationId)).setCopilotHmacKey(dE(e.apiCopilotHmacKey)).setCopilotToken(dE(e.apiCopilotToken)).setTrajectoryOutputFile(dE(e.saveTrajectoryOutput)).setEventsLogDirectory(dE(e.saveEventLogs)).setDisableOnlineEvaluation(e.disableOnlineEvaluation).setGithubRepoName("temp-repo").setGithubRepoCommit("temp-commit").setGithubRepoReadWrite(!1);let n=l.build();Q_()?(F_(),this.settings=await jVe(n)):this.settings=await jVe(n),this.callback.addSettings(this.settings),this.settings.trajectory?.outputFile&&this.callback.addCallback(new sFe(this.logger,this.settings.trajectory.outputFile)),this.settings.logs?.eventsLogDir&&this.callback.addCallback(new rFe(this.logger,this.settings.logs.eventsLogDir));let r=this.settings.service?.agent?.model,I=Xj(r),a=I.agent;this.agentKind=a;let s=I.model?{model:I.model}:void 0;this.client=OYe(this.settings,this.logger,a,s);let o=!1,d=async p=>{if(o)return{kind:"denied-interactively-by-user",reason:"A previous tool call was rejected"};let h=await e.requestPermission(p);return h.kind==="denied-interactively-by-user"&&(o=!0),h};this.toolConfig={location:".",timeout:3e4,permissions:{requestRequired:!0,request:d},requireReasoning:!1,splitEditingTools:!0,toolPartialResultCallback:e.onToolPartialOutput,shellConfig:(process.platform==="win32"?VA.powerShell:VA.bash).withScriptSafetyAssessor(lsl)};let u=await Rje(this.toolConfig,this.logger),b=[];if(e.mcpHost)try{b=await e.mcpHost.getTools(this.settings,this.logger,this.toolConfig.permissions)}catch(p){this.logger.error(`Failed to get MCP tools: ${p}`)}this.availableTools=[...u,...b]}async*getCompletionWithTools(e,l,n){if(!this.client)throw new Error("CLI not properly initialized");let r={...n,executeToolsInParallel:this.executeToolsInParallel};for await(let I of this.client.getCompletionWithTools(e,l,this.availableTools,r))this.callback&&await this.handleEvent(I),yield I}getToolIntentionSummary(e,l){return this.availableTools.find(r=>r.name===e)?.summariseIntention?.(l)||null}getToolTitle(e){return this.availableTools.find(n=>n.name===e)?.title||null}getAvailableTools(){return this.availableTools}getModel(){return this.client?.model||"unknown"}getAgentKind(){return this.agentKind||"sweagent-capi"}getToolConfig(){return this.toolConfig}async shutdown(){for(let e of this.availableTools)e.shutdown&&await e.shutdown()}async handleEvent(e){if(this.callback)try{await this.callback.progress(e)}catch(l){this.logger?.error(`Error in callback: ${l}`)}}};c();var vme={CUSTOM_AGENTS:!1,CCA_DELEGATE:!1,COPILOT_KITTY:!0},QTn=["CUSTOM_AGENTS","CCA_DELEGATE"],nsl=t=>t in vme;function rsl(t){let e={...t},l=process.env.COPILOT_CLI_ENABLED_FEATURE_FLAGS;if(l){let n=l.split(",").map(r=>r.trim().toUpperCase());for(let r of n)nsl(r)&&(e[r]=!0)}for(let n of Object.keys(t)){let r=n,I=process.env[r];I&&(I.toLowerCase()==="true"?e[r]=!0:I.toLowerCase()==="false"&&(e[r]=!1))}return e}function Isl(t,e){let l={...e};if(t.staff)for(let n of QTn)l[n]=!0;if(t.feature_flags?.enabled)for(let n of t.feature_flags.enabled){let r=n.toUpperCase();nsl(r)&&(l[r]=!0)}return l}c();import{realpathSync as dFe}from"fs";import FTn from"path";var fme=class{static async isFolderTrusted(e){try{let n=(await Lr.load())?.trusted_folders||[],r=dFe(e);return n.some(I=>{try{let a=dFe(I);return r===a||r.startsWith(a+FTn.sep)}catch{return!1}})}catch{return!1}}static async addTrustedFolder(e){try{let l=await Lr.load()||{},n=l.trusted_folders||[],r=dFe(e);n.some(a=>{try{return dFe(a)===r}catch{return!1}})||(n.push(r),l.trusted_folders=n,await Lr.write(l))}catch(l){throw new Error(`Failed to add trusted folder: ${l instanceof Error?l.message:String(l)}`)}}};c();import{Transform as CTn}from"node:stream";var vTn=Buffer.from([10]),fTn=()=>{let t,e,l,n=!1;function r(){t=Buffer.alloc(1024),l=e=0,n=!1}return r(),new CTn({decodeStrings:!0,transform(I,a,s){let o=0,d,u,b;for(;o<I.length;){u=I.indexOf(13,o),u===-1&&!n?(b=I.subarray(o).lastIndexOf(10),b=b===-1?-1:b+o):(b=I.indexOf(10,o),n=!0),d=Math.min(u===-1?I.length-1:u,b===-1?I.length-1:b),d=d===-1?I.length-1:d;let p,h=o,Z=[13,10].includes(I[d])?d:d+1;for(;(p=Z-h)>0;)if(l+p>t.length){l>0&&this.push(t.subarray(0,l));let N=t.length-l;this.push(I.subarray(h,h+N)),h+=N,r()}else{I.copy(t,l,h,Z),l+=p,e=Math.max(l,e);break}I[d]===10?(this.push(Buffer.concat([t.subarray(0,e),vTn])),r()):I[d]===13&&(l=0),o=d+1}s()},flush(I){I(null,e>0?t.subarray(0,e):null)}})},asl=t=>{let e=fTn(),l=[];return e.on("data",n=>l.push(n)),e.write(t),e.end(),Buffer.concat(l).toString("utf-8").replaceAll("\r","")};c();var uFe=class{constructor(e,l,n,r){this.session=e;this.onStreamingResponseSizeChanged=l;this.promptMode=n;this.logger=r}streamingMessageText="";streamingMessageId=null;totalResponseSizeBytes=0;onStreamingChunk(e){this.logger.debug("StreamingChunkDisplay received chunk.");let n=e.chunk.choices[0]?.delta?.content||"";if(this.promptMode){process.stdout.write(n);return}this.streamingMessageText+=n;let r=HTn(e);r&&(this.totalResponseSizeBytes+=r,this.onStreamingResponseSizeChanged(this.totalResponseSizeBytes)),n&&(this.streamingMessageId||(this.streamingMessageId=Bu()),this.session.addEvent({type:"assistant.message",ephemeral:!0,data:{messageId:this.streamingMessageId,content:this.streamingMessageText}}))}endCurrentStreamingMessage(){this.streamingMessageText="";let e=this.streamingMessageId;return e?(this.streamingMessageId=null,e):null}toJSON(){return"StreamingChunkDisplay"}};function HTn(t){let e=[];t.chunk.choices.forEach(n=>{e.push(n.delta.content),n.delta.tool_calls?.forEach(r=>{r.function&&(e.push(r.function.name),e.push(r.function.arguments))})});let l=e.join("");return l?new TextEncoder().encode(l).length:0}c();function ssl(t){let l=t.findLastIndex(XTn)+1,n=t.slice(l).findIndex(kTn);if(n===-1)return{staticEntries:t,dynamicEntries:[]};let r=l+n;return{staticEntries:t.slice(0,r),dynamicEntries:t.slice(r)}}function XTn(t){return t.type==="copilot"&&!t.isStreaming}function kTn(t){return t.type==="tool_call_requested"||t.type==="copilot"&&t.isStreaming===!0}c();c();c();import pT from"node:process";import{spawn as KMn}from"node:child_process";import{fileURLToPath as qMn}from"node:url";import ocl from"node:path";import{format as ptt}from"node:util";c();var Lme=nt(Asl(),1);import kme from"node:path";import tUn from"node:os";c();import DTn from"os";import hFe from"path";var yL=DTn.homedir(),{env:IT}=process,Zsl=IT.XDG_DATA_HOME||(yL?hFe.join(yL,".local","share"):void 0),Xq=IT.XDG_CONFIG_HOME||(yL?hFe.join(yL,".config"):void 0),tUa=IT.XDG_STATE_HOME||(yL?hFe.join(yL,".local","state"):void 0),lUa=IT.XDG_CACHE_HOME||(yL?hFe.join(yL,".cache"):void 0),nUa=IT.XDG_RUNTIME_DIR||void 0,zTn=(IT.XDG_DATA_DIRS||"/usr/local/share/:/usr/share/").split(":");Zsl&&zTn.unshift(Zsl);var PTn=(IT.XDG_CONFIG_DIRS||"/etc/xdg").split(":");Xq&&PTn.unshift(Xq);c();import $Tn from"node:path";c();import no from"node:fs";import{promisify as Sh}from"node:util";c();var wf=(t,e)=>function(...n){return t.apply(void 0,n).catch(e)},Ow=(t,e)=>function(...n){try{return t.apply(void 0,n)}catch(r){return e(r)}};c();import gsl from"node:process";var Nsl=gsl.getuid?!gsl.getuid():!1,Wsl=1e4,cN=()=>{};c();var Hme={isChangeErrorOk:t=>{if(!Hme.isNodeError(t))return!1;let{code:e}=t;return e==="ENOSYS"||!Nsl&&(e==="EINVAL"||e==="EPERM")},isNodeError:t=>t instanceof Error,isRetriableError:t=>{if(!Hme.isNodeError(t))return!1;let{code:e}=t;return e==="EMFILE"||e==="ENFILE"||e==="EAGAIN"||e==="EBUSY"||e==="EACCESS"||e==="EACCES"||e==="EACCS"||e==="EPERM"},onChangeError:t=>{if(!Hme.isNodeError(t))throw t;if(!Hme.isChangeErrorOk(t))throw t}},am=Hme;c();c();var Aet=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=Wsl,this.queueActive=new Set,this.queueWaiting=new Set,this.init=()=>{this.intervalId||(this.intervalId=setInterval(this.tick,this.interval))},this.reset=()=>{this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId)},this.add=e=>{this.queueWaiting.add(e),this.queueActive.size<this.limit/2?this.tick():this.init()},this.remove=e=>{this.queueWaiting.delete(e),this.queueActive.delete(e)},this.schedule=()=>new Promise(e=>{let l=()=>this.remove(n),n=()=>e(l);this.add(n)}),this.tick=()=>{if(!(this.queueActive.size>=this.limit)){if(!this.queueWaiting.size)return this.reset();for(let e of this.queueWaiting){if(this.queueActive.size>=this.limit)break;this.queueWaiting.delete(e),this.queueActive.add(e),e()}}}}},ysl=new Aet;var Qf=(t,e)=>function(n){return function r(...I){return ysl.schedule().then(a=>{let s=d=>(a(),d),o=d=>{if(a(),Date.now()>=n)throw d;if(e(d)){let u=Math.round(100*Math.random());return new Promise(p=>setTimeout(p,u)).then(()=>r.apply(void 0,I))}throw d};return t.apply(void 0,I).then(s,o)})}},Ff=(t,e)=>function(n){return function r(...I){try{return t.apply(void 0,I)}catch(a){if(Date.now()>n)throw a;if(e(a))return r.apply(void 0,I);throw a}}};var jTn={attempt:{chmod:wf(Sh(no.chmod),am.onChangeError),chown:wf(Sh(no.chown),am.onChangeError),close:wf(Sh(no.close),cN),fsync:wf(Sh(no.fsync),cN),mkdir:wf(Sh(no.mkdir),cN),realpath:wf(Sh(no.realpath),cN),stat:wf(Sh(no.stat),cN),unlink:wf(Sh(no.unlink),cN),chmodSync:Ow(no.chmodSync,am.onChangeError),chownSync:Ow(no.chownSync,am.onChangeError),closeSync:Ow(no.closeSync,cN),existsSync:Ow(no.existsSync,cN),fsyncSync:Ow(no.fsync,cN),mkdirSync:Ow(no.mkdirSync,cN),realpathSync:Ow(no.realpathSync,cN),statSync:Ow(no.statSync,cN),unlinkSync:Ow(no.unlinkSync,cN)},retry:{close:Qf(Sh(no.close),am.isRetriableError),fsync:Qf(Sh(no.fsync),am.isRetriableError),open:Qf(Sh(no.open),am.isRetriableError),readFile:Qf(Sh(no.readFile),am.isRetriableError),rename:Qf(Sh(no.rename),am.isRetriableError),stat:Qf(Sh(no.stat),am.isRetriableError),write:Qf(Sh(no.write),am.isRetriableError),writeFile:Qf(Sh(no.writeFile),am.isRetriableError),closeSync:Ff(no.closeSync,am.isRetriableError),fsyncSync:Ff(no.fsyncSync,am.isRetriableError),openSync:Ff(no.openSync,am.isRetriableError),readFileSync:Ff(no.readFileSync,am.isRetriableError),renameSync:Ff(no.renameSync,am.isRetriableError),statSync:Ff(no.statSync,am.isRetriableError),writeSync:Ff(no.writeSync,am.isRetriableError),writeFileSync:Ff(no.writeFileSync,am.isRetriableError)}},XG=jTn;c();import Esl from"node:os";import Zet from"node:process";var Rsl="utf8",get=438,Ysl=511;var Vsl={},wsl=Esl.userInfo().uid,Qsl=Esl.userInfo().gid;var Fsl=1e3,Csl=!!Zet.getuid,FUa=Zet.getuid?!Zet.getuid():!1,Net=128;c();var vsl=t=>t instanceof Error&&"code"in t;var Wet=t=>typeof t=="string",AFe=t=>t===void 0;c();c();import qTn from"node:path";c();c();import kq from"node:process";c();import fsl from"node:process";var Hsl=fsl.platform==="linux",ZFe=fsl.platform==="win32";c();var yet=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];ZFe||yet.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");Hsl&&yet.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED");var Xsl=yet;var Eet=class{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=e=>{if(!this.exited){this.exited=!0;for(let l of this.callbacks)l();e&&(ZFe&&e!=="SIGINT"&&e!=="SIGTERM"&&e!=="SIGKILL"?kq.kill(kq.pid,"SIGTERM"):kq.kill(kq.pid,e))}},this.hook=()=>{kq.once("exit",()=>this.exit());for(let e of Xsl)try{kq.once(e,()=>this.exit(e))}catch{}},this.register=e=>(this.callbacks.add(e),()=>{this.callbacks.delete(e)}),this.hook()}},ksl=new Eet;var KTn=ksl.register,Lsl=KTn;var ey={store:{},create:t=>{let e=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6),r=`.tmp-${Date.now().toString().slice(-10)}${e}`;return`${t}${r}`},get:(t,e,l=!0)=>{let n=ey.truncate(e(t));return n in ey.store?ey.get(t,e,l):(ey.store[n]=l,[n,()=>delete ey.store[n]])},purge:t=>{ey.store[t]&&(delete ey.store[t],XG.attempt.unlink(t))},purgeSync:t=>{ey.store[t]&&(delete ey.store[t],XG.attempt.unlinkSync(t))},purgeSyncAll:()=>{for(let t in ey.store)ey.purgeSync(t)},truncate:t=>{let e=qTn.basename(t);if(e.length<=Net)return t;let l=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(e);if(!l)return t;let n=e.length-Net;return`${t.slice(0,-e.length)}${l[1]}${l[2].slice(0,-n)}${l[3]}`}};Lsl(ey.purgeSyncAll);var Xme=ey;function gFe(t,e,l=Vsl){if(Wet(l))return gFe(t,e,{encoding:l});let n=Date.now()+((l.timeout??Fsl)||-1),r=null,I=null,a=null;try{let s=XG.attempt.realpathSync(t),o=!!s;t=s||t,[I,r]=Xme.get(t,l.tmpCreate||Xme.create,l.tmpPurge!==!1);let d=Csl&&AFe(l.chown),u=AFe(l.mode);if(o&&(d||u)){let b=XG.attempt.statSync(t);b&&(l={...l},d&&(l.chown={uid:b.uid,gid:b.gid}),u&&(l.mode=b.mode))}if(!o){let b=$Tn.dirname(t);XG.attempt.mkdirSync(b,{mode:Ysl,recursive:!0})}a=XG.retry.openSync(n)(I,"w",l.mode||get),l.tmpCreated&&l.tmpCreated(I),Wet(e)?XG.retry.writeSync(n)(a,e,0,l.encoding||Rsl):AFe(e)||XG.retry.writeSync(n)(a,e,0,e.length,0),l.fsync!==!1&&(l.fsyncWait!==!1?XG.retry.fsyncSync(n)(a):XG.attempt.fsync(a)),XG.retry.closeSync(n)(a),a=null,l.chown&&(l.chown.uid!==wsl||l.chown.gid!==Qsl)&&XG.attempt.chownSync(I,l.chown.uid,l.chown.gid),l.mode&&l.mode!==get&&XG.attempt.chmodSync(I,l.mode);try{XG.retry.renameSync(n)(I,t)}catch(b){if(!vsl(b)||b.code!=="ENAMETOOLONG")throw b;XG.retry.renameSync(n)(I,Xme.truncate(t))}r(),I=null}finally{a&&XG.attempt.closeSync(a),I&&Xme.purge(I)}}c();var aT=t=>{let e=typeof t;return t!==null&&(e==="object"||e==="function")};var Ret=new Set(["__proto__","prototype","constructor"]),eUn=new Set("0123456789");function NFe(t){let e=[],l="",n="start",r=!1;for(let I of t)switch(I){case"\\":{if(n==="index")throw new Error("Invalid character in an index");if(n==="indexEnd")throw new Error("Invalid character after an index");r&&(l+=I),n="property",r=!r;break}case".":{if(n==="index")throw new Error("Invalid character in an index");if(n==="indexEnd"){n="property";break}if(r){r=!1,l+=I;break}if(Ret.has(l))return[];e.push(l),l="",n="property";break}case"[":{if(n==="index")throw new Error("Invalid character in an index");if(n==="indexEnd"){n="index";break}if(r){r=!1,l+=I;break}if(n==="property"){if(Ret.has(l))return[];e.push(l),l=""}n="index";break}case"]":{if(n==="index"){e.push(Number.parseInt(l,10)),l="",n="indexEnd";break}if(n==="indexEnd")throw new Error("Invalid character after an index")}default:{if(n==="index"&&!eUn.has(I))throw new Error("Invalid character in an index");if(n==="indexEnd")throw new Error("Invalid character after an index");n==="start"&&(n="property"),r&&(r=!1,l+="\\"),l+=I}}switch(r&&(l+="\\"),n){case"property":{if(Ret.has(l))return[];e.push(l);break}case"index":throw new Error("Index was not closed");case"start":{e.push("");break}}return e}function Yet(t,e){if(typeof e!="number"&&Array.isArray(t)){let l=Number.parseInt(e,10);return Number.isInteger(l)&&t[l]===t[e]}return!1}function Jsl(t,e){if(Yet(t,e))throw new Error("Cannot use string index")}function xsl(t,e,l){if(!aT(t)||typeof e!="string")return l===void 0?t:l;let n=NFe(e);if(n.length===0)return l;for(let r=0;r<n.length;r++){let I=n[r];if(Yet(t,I)?t=r===n.length-1?void 0:null:t=t[I],t==null){if(r!==n.length-1)return l;break}}return t===void 0?l:t}function Vet(t,e,l){if(!aT(t)||typeof e!="string")return t;let n=t,r=NFe(e);for(let I=0;I<r.length;I++){let a=r[I];Jsl(t,a),I===r.length-1?t[a]=l:aT(t[a])||(t[a]=typeof r[I+1]=="number"?[]:{}),t=t[a]}return n}function Ssl(t,e){if(!aT(t)||typeof e!="string")return!1;let l=NFe(e);for(let n=0;n<l.length;n++){let r=l[n];if(Jsl(t,r),n===l.length-1)return delete t[r],!0;if(t=t[r],!aT(t))return!1}}function Bsl(t,e){if(!aT(t)||typeof e!="string")return!1;let l=NFe(e);if(l.length===0)return!1;for(let n of l){if(!aT(t)||!(n in t)||Yet(t,n))return!1;t=t[n]}return!0}function lUn(t,e){let l=e?kme.join(t,"config.json"):kme.join("configstore",`${t}.json`),n=Xq??Lme.default.mkdtempSync(Lme.default.realpathSync(tUn.tmpdir())+kme.sep);return kme.join(n,l)}var Osl="You don't have access to this file.",nUn={mode:448,recursive:!0},Tsl={mode:384},Jme=class{constructor(e,l,n={}){this._path=n.configPath??lUn(e,n.globalConfigPath),l&&(this.all={...l,...this.all})}get all(){try{return JSON.parse(Lme.default.readFileSync(this._path,"utf8"))}catch(e){if(e.code==="ENOENT")return{};if(e.code==="EACCES"&&(e.message=`${e.message}
|
|
2393
2393
|
${Osl}
|
|
2394
2394
|
`),e.name==="SyntaxError")return gFe(this._path,"",Tsl),{};throw e}}set all(e){try{Lme.default.mkdirSync(kme.dirname(this._path),nUn),gFe(this._path,JSON.stringify(e,void 0," "),Tsl)}catch(l){throw l.code==="EACCES"&&(l.message=`${l.message}
|
|
2395
2395
|
${Osl}
|
|
@@ -2404,7 +2404,7 @@ Run `+Jl.cyan("{updateCommand}")+" to update",I=e.message||r;e.boxenOptions??={p
|
|
|
2404
2404
|
`).map(l=>l.trim()).filter(l=>l&&!l.startsWith("#")).map(l=>l.endsWith("/")?l.slice(0,-1)+"/**":l)}shouldIgnore(e){try{let l=dzn(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 ydl=2e4,Dtt=class extends Error{constructor(e="Search aborted"){super(e),this.name="AbortError"}};async function Edl(t,e,l,n){let r=(0,Ydl.default)(e,{dot:!0,contains:!0,nocase:!0}),I=[];for(let[a,s]of t.entries()){if(a%1e3===0&&(await new Promise(o=>setImmediate(o)),l?.aborted))throw new Dtt;if(r(s)&&I.push(s),I.length>=n)break}return I.sort((a,s)=>{let o=a.endsWith(AT),d=s.endsWith(AT);return o&&!d?-1:!o&&d?1:a<s?-1:a>s?1:0}),I}var ibe=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 obe(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 Hc}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((n,r)=>({path:n.path,score:1-r/Math.max(l.length,1),relativePath:n.relativePath}))}if(e.includes("*")){let l=await Edl(this.visiblePaths,e,void 0,this.maxResults),n=[],r=this.fileByRelative;for(let[I,a]of l.entries()){if(I%1e3===0&&await new Promise(o=>setImmediate(o)),n.length>=this.maxResults)break;if(a===".")continue;let s=r.get(a);if(s){let o=this.calculateScore(s.relativePath,e);n.push({path:s.path,score:o,relativePath:s.relativePath})}}return n.sort((I,a)=>a.score-I.score),n}else{this.fzf||(this.fzf=new aCe(this.visiblePaths,{fuzzy:this.visiblePaths.length>ydl?"v1":"v2"}));let l=[];try{l=await this.fzf.find(e)}catch{l=(await Edl(this.visiblePaths,e,void 0,this.maxResults)).map(a=>({item:a,score:1,start:0,end:0,positions:new Set}))}let n=l.slice(0,this.maxResults).map((I,a)=>({rel:I.item,idx:a})),r=[];for(let{rel:I,idx:a}of n){if(I===".")continue;let s=this.fileByRelative.get(I);s&&r.push({file:s,idx:a,bucket:this.exactBucket(s.relativePath,e),score:this.calculateScore(s.relativePath,e)})}return r.sort((I,a)=>a.bucket-I.bucket||I.idx-a.idx),r.map(I=>({path:I.file.path,relativePath:I.file.relativePath,score:I.score}))}}exactBucket(e,l){let n=e.toLowerCase(),r=l.toLowerCase();if(n===r)return 3;let I=n.lastIndexOf(AT),a=I===-1?n:n.slice(I+1);return a===r?2:a.startsWith(r)?1:0}calculateScore(e,l){let n=e.toLowerCase(),r=l.toLowerCase();if(n===r)return 1;let I=e.lastIndexOf(AT),s=(I===-1?e:e.slice(I+1)).toLowerCase();if(s===r)return .95;if(s.startsWith(r))return .85;if(n.startsWith(r))return .75;let o=n.indexOf(r);return o===-1?.5:Math.max(.1,.7-o/n.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),n=l.map(I=>({path:mzn(this.rootPath,I),relativePath:I,lastModified:0}));this.indexFileStats&&n.length&&await this.fillStatsConcurrently(n,this.maxStatConcurrency),n.sort((I,a)=>I.relativePath.localeCompare(a.relativePath)),this.fileCache=n,this.visiblePaths=l,this.fileByRelative=new Map(n.map(I=>[I.relativePath,I])),this.lastCacheUpdate=Date.now(),this.isIndexed=!0,this.strategy=this.visiblePaths.length>ydl?"v1":"v2";let r=Date.now()-e;this.onIndexingComplete?.(this.fileCache.length,r)}catch(l){this.logger.error(`Error building file index: ${l}`),this.fileCache=[],this.allFiles=[],this.visiblePaths=[],this.fileByRelative.clear(),this.isIndexed=!1;let n=Date.now()-e;this.onIndexingComplete?.(0,n)}}async fillStatsConcurrently(e,l){let n=0,r=new Array(Math.min(l,e.length)).fill(0).map(async()=>{for(;;){let I=n++;if(I>=e.length)break;let a=e[I];try{let s=await uzn(a.path);a.lastModified=s.mtime.getTime()}catch{}I%2e3===0&&await new Promise(s=>setImmediate(s))}});await Promise.all(r)}async filterFilesConcurrently(e,l=50){let n=this.ignorePatterns.getFileFilter(),r=[];for(let I=0;I<e.length;I+=l){let a=e.slice(I,I+l),s=a.map(o=>!n(o));a.forEach((o,d)=>{s[d]&&r.push(o)}),await new Promise(o=>setImmediate(o))}return r}async performCrawl(){let e=this.ignorePatterns.getDirectoryFilter(),l=new Rdl.fdir().withRelativePaths().withPathSeparator(AT).exclude((n,r)=>{let I=bzn(this.rootPath,r);if(I==="."||I==="")return!1;let a=I.endsWith(AT)?I:`${I}${AT}`;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 obe(e),this.invalidateCache()}},_tt=null;function Vdl(){return _tt||(_tt=new ibe),_tt}function wdl(t,e,l){let[n,r]=(0,QL.useState)([]),[I,a]=(0,QL.useState)(0),[s,o]=(0,QL.useState)(new Map),d=e||Vdl(),u=(0,QL.useMemo)(()=>{let{text:w,cursorPosition:H}=t,J=-1;for(let T=H-1;T>=0;T--){let U=w[T];if(U==="@"){if(T===0||w[T-1]===" "||w[T-1]===`
|
|
2405
2405
|
`||w[T-1]===" "){J=T;break}}else if(U===" "||U===`
|
|
2406
2406
|
`||U===" ")break}if(J===-1)return{isAtMention:!1,atPosition:-1,query:""};let S=w.slice(J+1,H);return S.includes(" ")||S.includes(`
|
|
2407
|
-
`)||S.includes(" ")?{isAtMention:!1,atPosition:-1,query:""}:{isAtMention:!0,atPosition:J,query:S}},[t.text,t.cursorPosition]);(0,QL.useEffect)(()=>{if(!u.isAtMention){r([]),a(0);return}let w=!1,H=async()=>{try{let S=await d.search(u.query),T=[...S];u.query===""&&l&&(T=[...l.getDirectories().map(O=>({path:O,relativePath:`[DIR] ${O}`,score:1})),...S]),w||(r(T),a(0))}catch{w||(r([]),a(0))}},J=setTimeout(()=>{H()},200);return()=>{w=!0,clearTimeout(J)}},[u.query,u.isAtMention,d]);let b=()=>{n.length!==0&&a(w=>w>0?w-1:n.length-1)},p=()=>{n.length!==0&&a(w=>w<n.length-1?w+1:0)},h=()=>{if(!u.isAtMention||n.length===0)return null;let w=n[I];if(!w)return null;let H=`@${w.relativePath}`,J=`${H} `,{text:S,cursorPosition:T}=t,U=S.slice(0,u.atPosition),j=S.slice(T),O=U+J+j,z={displayText:H,fullPath:w.path,type:w.relativePath.startsWith("[DIR]")?"directory":"file",startIndex:u.atPosition};return o(se=>{let ue=new Map(se);return ue.set(z.startIndex,z),ue}),t.setText(O),t.setCursorPosition(u.atPosition+J.length),w.relativePath},Z=()=>{r([]),a(0)},N=()=>{o(new Map)};return[{isActive:u.isAtMention&&n.length>0,query:u.query,suggestions:n,selectedIndex:I,atPosition:u.atPosition,storedMentions:s},{navigateUp:b,navigateDown:p,complete:h,reset:Z,clearStoredMentions:N}]}c();var iCe=nt(qt(),1),qdl=nt(jxe(),1);import{readdir as Szn,readFile as Bzn}from"node:fs/promises";import Ozn,{join as Kdl}from"node:path";c();function ZT(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)}`}c();var oCe=nt(qt(),1);c();var _dl=nt(Mdl(),1);function jtt(t){try{let e=(0,_dl.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 sCe(t){let e=await d_t(t);if(e.length===0)return null;if(e.length===1)return jtt(e[0]);let l=e.find(n=>n.Name==="origin");return jtt(l||e[0])}function Ddl(t){let[e,l]=(0,oCe.useState)(null);return(0,oCe.useEffect)(()=>{(async()=>{let n=await Ktt(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 Ktt(t){let e=await If(t);if(!e.found)return{kind:"plain",path:t};try{let l=await sCe(e.gitRoot);return{kind:"git",path:e.gitRoot,repo:l}}catch{return{kind:"git",path:e.gitRoot,repo:null}}}function $dl(t,e,l,n,r,I){let[a,s]=(0,iCe.useState)({selected:null,available:[],warnings:[]}),o=Ddl(I);return(0,iCe.useEffect)(()=>{if(!t)return;(async()=>{let{agents:u,warnings:b}=await qtt(e,l,n,Ozn.join(r,"agents"),o);s({selected:null,available:u,warnings:b})})()},[t,e,l,n,r,o]),{customAgents:a,selectCustomAgent:async d=>{if(!t)throw new Error("attempted to use disabled feature flagged feature");let u=a.available.find(p=>p.id===d);if(!u)throw new Error(`attempted to select unknown custom agent: ${d} from ${a.available.map(p=>p.id).join(", ")}`);let b=await u.prompt().then(p=>({kind:"success",prompt:p}),p=>({kind:"error",message:ZT("loading custom agent prompt",p)}));return b.kind==="error"?{kind:"error",message:b.message}:(s(p=>({...p,selected:{id:u.id,displayName:u.displayName,prompt:b.prompt}})),{kind:"success"})}}}function zdl(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 qtt(t,e,l,n,r){let I=await Pdl(n);if(r===null)return{agents:I.agents,warnings:I.warnings};let a=await Pdl(Kdl(r.path,".github","agents")),s=zdl([...I.agents,...a.agents]),o=[...I.warnings,...a.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,Kq(r.repo,"no authentication available")]};let d=await Tzn(t,e,l,r.repo);return{agents:zdl([...s,...d.agents]),warnings:[...o,...d.warnings]}}function Kq(t,e){return`could not load remote agents for ${t.owner}/${t.name}: ${e}`}async function Tzn(t,e,l,n){let r=D2(l,{onHMACAuthInfo:()=>$ee,onEnvAuthInfo:Z=>Z.host,onGhCliAuthInfo:Z=>Z.host,onUserAuthInfo:Z=>Z.host,onApiKeyAuthInfo:Z=>Z.host}),{host:I}=new URL(r);if(I!=="github.com")return{agents:[],warnings:[Kq(n,"auth info does not target github.com")]};let a=await jW(l);if(!a)return{agents:[],warnings:[Kq(n,"no usable token for accessing repo contents found")]};let s=await eul(()=>c0(r,a),Z=>ZT("fetching copilot URL",Z));if(s.kind==="error")return{agents:[],warnings:[Kq(n,s.message)]};let o=`${s.value}/agents/swe/custom-agents/${n.owner}/${n.name}`,d={Authorization:`Bearer ${a}`},u=await lC(o,{method:"GET",headers:d},t);if(!u.ok)return t.warning(`Failed to load custom agents for ${n.owner}/${n.name}: ${await u.text()}`),{agents:[],warnings:[Kq(n,`server returned ${u.status}: ${u.statusText}`)]};let b=await u.json(),h=La.object({agents:La.array(tul)}).safeParse(b);return h.success?{agents:h.data.agents.map(Z=>({id:Z.name,displayName:Z.display_name,prompt:async()=>{let N=await Pzn({logger:t,integrationId:e,sweAgentsEndpoint:`${s.value}/agents/swe`,token:a,repoOwner:Z.repo_owner,repoName:Z.repo_name,customAgentName:Z.name});if(!N)throw new Error(`Failed to load prompt for agent ${Z.name}`);return N.prompt}})),warnings:[]}:{agents:[],warnings:[Kq(n,ZT("parsing http response into schema",h.error))]}}async function Pdl(t){let e=await Szn(t,{withFileTypes:!0}).then(r=>({kind:"success",dirEntries:r})).catch(r=>r.code==="ENOENT"?{kind:"success",dirEntries:[]}:{kind:"error",message:ZT(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 I=Kdl(t,r.name),a=r.name.slice(0,-3),s=await jdl(I);if(s.kind==="error"){n.push(s.message);continue}l.push({id:a,displayName:s.agent.name,prompt:async()=>{let o=await jdl(I);if(o.kind==="error")throw new Error(o.message);return await o.agent.prompt()}})}return{agents:l,warnings:n}}async function jdl(t){let e=await eul(()=>Bzn(t,"utf-8"),n=>ZT(t,n));if(e.kind==="error")return{kind:"error",message:e.message};let l=Uzn(e.value);return l.kind==="error"?{kind:"error",message:`${t}: ${l.message}`}:{kind:"success",agent:l.agent}}var Uzn=t=>{let e=La.object({name:La.string(),description:La.string(),tools:La.array(La.string()).optional()}).strict(),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 I=(0,qdl.parse)(r),a=e.safeParse(I);if(!a.success)return{kind:"error",message:Mzn(a.error)};let s=t.slice(n[0].length);return{kind:"success",agent:{name:a.data.name,description:a.data.description,tools:a.data.tools||["*"],prompt:()=>Promise.resolve(s)}}}catch(I){return{kind:"error",message:ZT("failed to parse front matter",I)}}};function Mzn(t){return t.issues.map(e=>`${e.path.join(".")||"(root)"}: ${e.message}`).join(", ")}async function eul(t,e){try{return{kind:"success",value:await t()}}catch(l){return{kind:"error",message:e(l)}}}var _zn=La.object({command:La.string(),args:La.array(La.string()),env:La.record(La.string(),La.string()).optional(),tools:La.array(La.string()),type:La.enum(["local","stdio"]).optional()}),Dzn=La.object({url:La.string(),headers:La.record(La.string(),La.string()).optional(),tools:La.array(La.string()),type:La.enum(["http","sse"])}),tul=La.object({name:La.string(),repo_owner:La.string(),repo_name:La.string(),display_name:La.string(),description:La.string(),tools:La.array(La.string()),version:La.string(),mcp_servers:La.record(La.string(),La.union([_zn,Dzn])).optional().nullable()}),zzn=tul.extend({prompt:La.string()});async function Pzn(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 lC(`${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 zzn.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}}c();var ly=nt(qt(),1);function lul(t){let{cliModel:e,session:l,currentWorkingDirectory:n,customAgentName:r,stdoutColumns:I,models:a}=t,[s,o]=(0,ly.useState)({gitRoot:"",found:!1}),[d,u]=(0,ly.useState)(null);(0,ly.useEffect)(()=>{(async()=>{u(null);let w=await If(n);o(w)})()},[n]);let b=(0,ly.useCallback)(async()=>{if(!s.found){u(null);return}let Y=await m_t(s.gitRoot);if(!Y){u(null);return}let w=await u_t(s.gitRoot);u(H=>H?.branch===Y&&H?.hasChanges===w?H:{branch:Y,hasChanges:w})},[s]),p=(0,ly.useMemo)(()=>kye(n),[n]),[h,Z]=(0,ly.useState)("");(0,ly.useEffect)(()=>{(async()=>{if(!a||a.type!=="success")return;let w=await YO(e,l,a.list);w&&Z(H=>H===w?H:w)})()},[e,l,a]);let N=(0,ly.useMemo)(()=>{if(!d||!d.branch)return null;let Y=I||80,w=h.length,H=r?.length||0,J=p.length,S=d.hasChanges?6:5,U=w+J+S+4+H,O=Math.max(8,Y-U)-3;return`[\u2387 ${d.branch.length>O?d.branch.substring(0,O)+"...":d.branch}${d.hasChanges?"*":""}]`},[d,I,p,h]),y=(0,ly.useMemo)(()=>{if(!h)return h;let Y=a&&a.type==="success"?a.list:void 0,w=k8(h,Y);return`${h} (${w}x)`},[h,a]);return{displayCwd:p,gitBranchInfo:N,selectedModel:h,selectedModelDisplay:y,setSelectedModel:Z,updateGitStatus:b}}c();var gZ=nt(qt(),1),jzn=3*1e3;function nul(){let[t,e]=(0,gZ.useState)("idle"),[l,n]=(0,gZ.useState)(0),[r,I]=(0,gZ.useState)(0),[a,s]=(0,gZ.useState)(!1),o=(0,gZ.useRef)(null);(0,gZ.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]);let d=(0,gZ.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("indexing"),n(0),I(0),s(!0)},[]),u=(0,gZ.useCallback)((Z,N)=>{e("completed"),n(Z),I(N),s(!0),o.current=setTimeout(()=>{s(!1),o.current=null},jzn)},[]),b=(0,gZ.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("idle"),n(0),I(0),s(!1)},[]),p={state:t,fileCount:l,durationMs:r,isVisible:a},h=(0,gZ.useMemo)(()=>({startIndexing:d,completeIndexing:u,reset:b}),[d,u,b]);return[p,h]}c();var cCe=nt(qt(),1);function rul(t,e,l,n){let[r,I]=(0,cCe.useState)();return(0,cCe.useEffect)(()=>{async function a(){if(!l)return;let s=await $tt(t,e,l,n);I(s)}a()},[l,e,n]),{models:r}}async function $tt(t,e,l,n){if(aL())return{type:"success",list:[]};try{if(l.type==="hmac")return{type:"success",list:await S9.createWithHmac(t,$ee,n,l.hmac,e).listModels()};let r=await jW(l);if(!r)return{type:"noauth"};let I=await c0(l.host,r);return{type:"success",list:await S9.createWithOAuthToken(t,I,n,r,e).listModels()}}catch(r){return{type:"error",error:r}}}c();var Dw=nt(qt(),1);function Iul(t=3){let[e,l]=(0,Dw.useState)(!1),n=(0,Dw.useRef)(null),r=(0,Dw.useRef)(t*1e3);(0,Dw.useEffect)(()=>{r.current=t*1e3},[t]),(0,Dw.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]);let I=(0,Dw.useCallback)(a=>{n.current&&(clearTimeout(n.current),n.current=null),l(!0);let s=a!==void 0?a*1e3:r.current;n.current=setTimeout(()=>{l(!1),n.current=null},s)},[]);return[e,I]}c();var cbe=nt(qt(),1);function aul({builtInSlashCommands:t,logger:e,currentWorkingDirectory:l,setCurrentWorkingDirectory:n,fileSearch:r,authManager:I,mcpHost:a,loginStatus:s,setLoginStatus:o,addEntryToSession:d,clearSessionHistory:u,getSessionUsageOutput:b,pathManager:p,resetSessionToolApprovals:h,clearTimeline:Z,clearHeader:N,clearContextWindowMetrics:y,setThemePreference:Y,refreshStatic:w,hasAvailableCustomAgents:H,slashCommandResultActions:J}){let S=(0,cbe.useMemo)(()=>({logger:e,slashCommands:t,hasAvailableCustomAgents:H,mcp:{host:a,config:async()=>await P2.load()||{mcpServers:{}},hasServer:async j=>(await S.mcp.config())?.mcpServers[j]!==void 0,deleteServer:async j=>{let O=await S.mcp.config();delete O.mcpServers[j],await P2.write(O)}},auth:{availableAuthMethods:()=>SMt(I,s.authInfo),loginStatus:s,logout:async()=>{let j=await I.logout();return o({status:"NotLoggedIn"}),j}},session:{addTimelineEntry:d,clearHistory:u,usageOutput:b},permissions:{allowedDirs:p.getDirectories.bind(p),addAllowedDirectory:p.addDirectory.bind(p),resetSessionToolApprovals:h},process:{cwd:l,chdir:async j=>{process.chdir(j),await p.updatePrimaryDirectory(j),n(j),await r.setRootPath(j)}},ui:{getThemePreference:BVe,setThemePreference:Y,clear:()=>{Z(),N(),y(),w()}}}),[t,e,l,n,r,I,a,s,o,d,u,b,p,h,N,y,Y,w,H]),T=(0,cbe.useCallback)(async j=>{let O=Sd(()=>{let ee=j.trim();return ee==="?"?"/help":ee});if(!O.startsWith("/"))return{handled:!1};let z=O.split(" ")[0],se=t.find(ee=>ee.name===z||ee.aliases?.includes(z));if(!se)return{handled:!1};let ue=O.substring(se.name.length).trim().split(" ").filter(ee=>ee),We=await se.execute(S,ue);if(!We)return{handled:!0};switch(We.kind){case"exit":return J.exit(),{handled:!0};case"add-timeline-entry":return d(We.entry),{handled:!0};case"show-dialog":switch(We.dialog.kind){case"custom-agent-picker":J.showCustomAgentPickerDialog();break;case"feedback":J.showFeedbackDialog();break;case"login":J.showLoginDialog();break;case"mcp":J.showMCPDialog(We.dialog.mode,We.dialog.serverName);break;case"model-picker":J.showModelPickerDialog();break;case"session":J.showSessionDialog();break;case"user-switcher":J.showUserSwitcherDialog();break;default:sb(We.dialog,`Unknown dialog kind: ${We.dialog}`)}return{handled:!0};case"set-model":return J.setModel(We.model),{handled:!0};case"noop":return{handled:!0};case"start-remote-push":return J.startRemotePush(We.prompt),{handled:!0};default:sb(We,`Unknown slash command result kind: ${We}`)}},[t,d,J,S]),U=(0,cbe.useCallback)(j=>wue(t,j),[t]);return{slashCommands:t,handleSlashCommand:T,matchingSlashCommands:U}}c();var dCe=nt(qt(),1);function sul(t,e,l){let n=(0,dCe.useMemo)(()=>new Map,[]);(0,dCe.useEffect)(()=>{(async()=>{if(Object.keys(t).length===0||t.staff!==void 0||!e)return;let I=await jW(e),a=e.type==="hmac"?void 0:e.host;if(!I||a!==nL)return;let s=n.get(I)??DUt(a,I).catch(()=>!1);n.set(I,s),await s&&(await Lr.writeKey("staff",!0),await Lr.writeKey("log_level","all"),l({type:"info",text:"Staff mode activated! Restart the app to enable staff features \u2728"}))})()},[t,e,l])}c();var FL=nt(qt(),1);function oul(t,e,l){let[n,r]=(0,FL.useState)(null),I=(0,FL.useRef)("");return(0,FL.useEffect)(()=>{e.text!==I.current&&(n?.availableOptions.some(o=>e.text===o.name)||r(null),I.current=e.text)},[e.text,n]),{handleTabCompletion:(0,FL.useCallback)(()=>{let s=o=>{let d=o.indexOf(" ");return d===-1?!1:o.slice(d+1).trim().length>0};if(n){if(s(e.text)){r(null);return}let o=(n.currentIndex+1)%n.availableOptions.length,d=n.availableOptions[o];e.setText(d.name),r({...n,currentIndex:o}),l.setSlashCommandPickerIndex(o)}else{if(s(e.text))return;let o=wue(t,e.text);if(o.length===1){let d=o[0],u=d.name;for(let b=u.length-1;b>=2;b--){let p=u.slice(0,b),h=wue(t,p);if(h.length>1){let Z=h.findIndex(Y=>Y.name===d.name);r({originalInput:p,availableOptions:h,currentIndex:Z>=0?Z:0});let N=(Z+1)%h.length,y=h[N];e.setText(y.name),r({originalInput:p,availableOptions:h,currentIndex:N}),l.setSlashCommandPickerIndex(N);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}}c();var Xf=nt(qt(),1);function iul(){let[t,e]=(0,Xf.useState)({columns:process.stdout.columns,rows:process.stdout.rows}),l=(0,Xf.useRef)(()=>{}),n=(0,Xf.useCallback)(I=>{l.current=I||(()=>{})},[]),r=(0,Xf.useCallback)(()=>{let{columns:I,rows:a}=process.stdout;e({columns:I,rows:a}),l.current(I,a)},[]);return(0,Xf.useEffect)(()=>(process.stdout.on("resize",r),()=>{process.stdout.off("resize",r)}),[]),{...t,setOnResize:n}}c();var $q=nt(qt(),1);var CL=t=>/\s/.test(t);function Kzn(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&CL(t[l]);)l+=t[l].length;for(;l<t.length&&!CL(t[l]);)l+=t[l].length;return l}function cul(t,e){if(e===0)return 0;let l=e-1;for(;l>=0&&CL(t[l]);)l-=t[l].length;if(l<0)return 0;for(;l>=0&&!CL(t[l]);)l-=t[l].length;return l+1}function qzn(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&!CL(t[l]);)l+=t[l].length;for(;l<t.length&&CL(t[l]);)l+=t[l].length;return l}function gT(t,e){if(e<=0)return[t];let l=t.split(`
|
|
2407
|
+
`)||S.includes(" ")?{isAtMention:!1,atPosition:-1,query:""}:{isAtMention:!0,atPosition:J,query:S}},[t.text,t.cursorPosition]);(0,QL.useEffect)(()=>{if(!u.isAtMention){r([]),a(0);return}let w=!1,H=async()=>{try{let S=await d.search(u.query),T=[...S];u.query===""&&l&&(T=[...l.getDirectories().map(O=>({path:O,relativePath:`[DIR] ${O}`,score:1})),...S]),w||(r(T),a(0))}catch{w||(r([]),a(0))}},J=setTimeout(()=>{H()},200);return()=>{w=!0,clearTimeout(J)}},[u.query,u.isAtMention,d]);let b=()=>{n.length!==0&&a(w=>w>0?w-1:n.length-1)},p=()=>{n.length!==0&&a(w=>w<n.length-1?w+1:0)},h=()=>{if(!u.isAtMention||n.length===0)return null;let w=n[I];if(!w)return null;let H=`@${w.relativePath}`,J=`${H} `,{text:S,cursorPosition:T}=t,U=S.slice(0,u.atPosition),j=S.slice(T),O=U+J+j,z={displayText:H,fullPath:w.path,type:w.relativePath.startsWith("[DIR]")?"directory":"file",startIndex:u.atPosition};return o(se=>{let ue=new Map(se);return ue.set(z.startIndex,z),ue}),t.setText(O),t.setCursorPosition(u.atPosition+J.length),w.relativePath},Z=()=>{r([]),a(0)},N=()=>{o(new Map)};return[{isActive:u.isAtMention&&n.length>0,query:u.query,suggestions:n,selectedIndex:I,atPosition:u.atPosition,storedMentions:s},{navigateUp:b,navigateDown:p,complete:h,reset:Z,clearStoredMentions:N}]}c();var iCe=nt(qt(),1),qdl=nt(jxe(),1);import{readdir as Szn,readFile as Bzn}from"node:fs/promises";import Ozn,{join as Kdl}from"node:path";c();function ZT(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)}`}c();var oCe=nt(qt(),1);c();var _dl=nt(Mdl(),1);function jtt(t){try{let e=(0,_dl.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 sCe(t){let e=await d_t(t);if(e.length===0)return null;if(e.length===1)return jtt(e[0]);let l=e.find(n=>n.Name==="origin");return jtt(l||e[0])}function Ddl(t){let[e,l]=(0,oCe.useState)(null);return(0,oCe.useEffect)(()=>{(async()=>{let n=await Ktt(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 Ktt(t){let e=await If(t);if(!e.found)return{kind:"plain",path:t};try{let l=await sCe(e.gitRoot);return{kind:"git",path:e.gitRoot,repo:l}}catch{return{kind:"git",path:e.gitRoot,repo:null}}}function $dl(t,e,l,n,r,I){let[a,s]=(0,iCe.useState)({selected:null,available:[],warnings:[]}),o=Ddl(I);return(0,iCe.useEffect)(()=>{if(!t)return;(async()=>{let{agents:u,warnings:b}=await qtt(e,l,n,Ozn.join(r,"agents"),o);s({selected:null,available:u,warnings:b})})()},[t,e,l,n,r,o]),{customAgents:a,selectCustomAgent:async d=>{if(!t)throw new Error("attempted to use disabled feature flagged feature");let u=a.available.find(p=>p.id===d);if(!u)throw new Error(`attempted to select unknown custom agent: ${d} from ${a.available.map(p=>p.id).join(", ")}`);let b=await u.prompt().then(p=>({kind:"success",prompt:p}),p=>({kind:"error",message:ZT("loading custom agent prompt",p)}));return b.kind==="error"?{kind:"error",message:b.message}:(s(p=>({...p,selected:{id:u.id,displayName:u.displayName,prompt:b.prompt}})),{kind:"success"})}}}function zdl(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 qtt(t,e,l,n,r){let I=await Pdl(n);if(r===null)return{agents:I.agents,warnings:I.warnings};let a=await Pdl(Kdl(r.path,".github","agents")),s=zdl([...I.agents,...a.agents]),o=[...I.warnings,...a.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,Kq(r.repo,"no authentication available")]};let d=await Tzn(t,e,l,r.repo);return{agents:zdl([...s,...d.agents]),warnings:[...o,...d.warnings]}}function Kq(t,e){return`could not load remote agents for ${t.owner}/${t.name}: ${e}`}async function Tzn(t,e,l,n){let r=D2(l,{onHMACAuthInfo:()=>$ee,onEnvAuthInfo:Z=>Z.host,onGhCliAuthInfo:Z=>Z.host,onUserAuthInfo:Z=>Z.host,onApiKeyAuthInfo:Z=>Z.host}),{host:I}=new URL(r);if(I!=="github.com")return{agents:[],warnings:[Kq(n,"auth info does not target github.com")]};let a=await jW(l);if(!a)return{agents:[],warnings:[Kq(n,"no usable token for accessing repo contents found")]};let s=await eul(()=>c0(r,a),Z=>ZT("fetching copilot URL",Z));if(s.kind==="error")return{agents:[],warnings:[Kq(n,s.message)]};let o=`${s.value}/agents/swe/custom-agents/${n.owner}/${n.name}`,d={Authorization:`Bearer ${a}`},u=await lC(o,{method:"GET",headers:d},t);if(!u.ok)return t.warning(`Failed to load custom agents for ${n.owner}/${n.name}: ${await u.text()}`),{agents:[],warnings:[Kq(n,`server returned ${u.status}: ${u.statusText}`)]};let b=await u.json(),h=La.object({agents:La.array(tul)}).safeParse(b);return h.success?{agents:h.data.agents.map(Z=>({id:Z.name,displayName:Z.display_name,prompt:async()=>{let N=await Pzn({logger:t,integrationId:e,sweAgentsEndpoint:`${s.value}/agents/swe`,token:a,repoOwner:Z.repo_owner,repoName:Z.repo_name,customAgentName:Z.name});if(!N)throw new Error(`Failed to load prompt for agent ${Z.name}`);return N.prompt}})),warnings:[]}:{agents:[],warnings:[Kq(n,ZT("parsing http response into schema",h.error))]}}async function Pdl(t){let e=await Szn(t,{withFileTypes:!0}).then(r=>({kind:"success",dirEntries:r})).catch(r=>r.code==="ENOENT"?{kind:"success",dirEntries:[]}:{kind:"error",message:ZT(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 I=Kdl(t,r.name),a=r.name.slice(0,-3),s=await jdl(I);if(s.kind==="error"){n.push(s.message);continue}l.push({id:a,displayName:s.agent.name,prompt:async()=>{let o=await jdl(I);if(o.kind==="error")throw new Error(o.message);return await o.agent.prompt()}})}return{agents:l,warnings:n}}async function jdl(t){let e=await eul(()=>Bzn(t,"utf-8"),n=>ZT(t,n));if(e.kind==="error")return{kind:"error",message:e.message};let l=Uzn(e.value);return l.kind==="error"?{kind:"error",message:`${t}: ${l.message}`}:{kind:"success",agent:l.agent}}var Uzn=t=>{let e=La.object({name:La.string(),description:La.string(),tools:La.array(La.string()).optional()}).strict(),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 I=(0,qdl.parse)(r),a=e.safeParse(I);if(!a.success)return{kind:"error",message:Mzn(a.error)};let s=t.slice(n[0].length);return{kind:"success",agent:{name:a.data.name,description:a.data.description,tools:a.data.tools||["*"],prompt:()=>Promise.resolve(s)}}}catch(I){return{kind:"error",message:ZT("failed to parse front matter",I)}}};function Mzn(t){return t.issues.map(e=>`${e.path.join(".")||"(root)"}: ${e.message}`).join(", ")}async function eul(t,e){try{return{kind:"success",value:await t()}}catch(l){return{kind:"error",message:e(l)}}}var _zn=La.object({command:La.string(),args:La.array(La.string()),env:La.record(La.string(),La.string()).optional(),tools:La.array(La.string()),type:La.enum(["local","stdio"]).optional()}),Dzn=La.object({url:La.string(),headers:La.record(La.string(),La.string()).optional(),tools:La.array(La.string()),type:La.enum(["http","sse"])}),tul=La.object({name:La.string(),repo_owner:La.string(),repo_name:La.string(),display_name:La.string(),description:La.string(),tools:La.array(La.string()),version:La.string(),mcp_servers:La.record(La.string(),La.union([_zn,Dzn])).optional().nullable()}),zzn=tul.extend({prompt:La.string()});async function Pzn(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 lC(`${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 zzn.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}}c();var ly=nt(qt(),1);function lul(t){let{cliModel:e,session:l,currentWorkingDirectory:n,customAgentName:r,stdoutColumns:I,models:a}=t,[s,o]=(0,ly.useState)({gitRoot:"",found:!1}),[d,u]=(0,ly.useState)(null);(0,ly.useEffect)(()=>{(async()=>{u(null);let w=await If(n);o(w)})()},[n]);let b=(0,ly.useCallback)(async()=>{if(!s.found){u(null);return}let Y=await m_t(s.gitRoot);if(!Y){u(null);return}let w=await u_t(s.gitRoot);u(H=>H?.branch===Y&&H?.hasChanges===w?H:{branch:Y,hasChanges:w})},[s]),p=(0,ly.useMemo)(()=>kye(n),[n]),[h,Z]=(0,ly.useState)("");(0,ly.useEffect)(()=>{(async()=>{if(!a||a.type!=="success")return;let w=await YO(e,l,a.list);w&&Z(H=>H===w?H:w)})()},[e,l,a]);let N=(0,ly.useMemo)(()=>{if(!d||!d.branch)return null;let Y=I||80,w=h.length,H=r?.length||0,J=p.length,S=d.hasChanges?6:5,U=w+J+S+4+H,O=Math.max(8,Y-U)-3;return`[\u2387 ${d.branch.length>O?d.branch.substring(0,O)+"...":d.branch}${d.hasChanges?"*":""}]`},[d,I,p,h]),y=(0,ly.useMemo)(()=>{if(!h)return h;let Y=a&&a.type==="success"?a.list:void 0,w=k8(h,Y);return`${h} (${w}x)`},[h,a]);return{displayCwd:p,gitBranchInfo:N,selectedModel:h,selectedModelDisplay:y,setSelectedModel:Z,updateGitStatus:b}}c();var gZ=nt(qt(),1),jzn=3*1e3;function nul(){let[t,e]=(0,gZ.useState)("idle"),[l,n]=(0,gZ.useState)(0),[r,I]=(0,gZ.useState)(0),[a,s]=(0,gZ.useState)(!1),o=(0,gZ.useRef)(null);(0,gZ.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]);let d=(0,gZ.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("indexing"),n(0),I(0),s(!0)},[]),u=(0,gZ.useCallback)((Z,N)=>{e("completed"),n(Z),I(N),s(!0),o.current=setTimeout(()=>{s(!1),o.current=null},jzn)},[]),b=(0,gZ.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null),e("idle"),n(0),I(0),s(!1)},[]),p={state:t,fileCount:l,durationMs:r,isVisible:a},h=(0,gZ.useMemo)(()=>({startIndexing:d,completeIndexing:u,reset:b}),[d,u,b]);return[p,h]}c();var cCe=nt(qt(),1);function rul(t,e,l,n){let[r,I]=(0,cCe.useState)();return(0,cCe.useEffect)(()=>{async function a(){if(!l)return;let s=await $tt(t,e,l,n);I(s)}a()},[l,e,n]),{models:r}}async function $tt(t,e,l,n){if(aL())return{type:"success",list:[]};try{if(l.type==="hmac")return{type:"success",list:await S9.createWithHmac(t,$ee,n,l.hmac,e).listModels()};let r=await jW(l);if(!r)return{type:"noauth"};let I=await c0(l.host,r);return{type:"success",list:await S9.createWithOAuthToken(t,I,n,r,e).listModels()}}catch(r){return{type:"error",error:r}}}c();var Dw=nt(qt(),1);function Iul(t=3){let[e,l]=(0,Dw.useState)(!1),n=(0,Dw.useRef)(null),r=(0,Dw.useRef)(t*1e3);(0,Dw.useEffect)(()=>{r.current=t*1e3},[t]),(0,Dw.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]);let I=(0,Dw.useCallback)(a=>{n.current&&(clearTimeout(n.current),n.current=null),l(!0);let s=a!==void 0?a*1e3:r.current;n.current=setTimeout(()=>{l(!1),n.current=null},s)},[]);return[e,I]}c();var cbe=nt(qt(),1);function aul({builtInSlashCommands:t,logger:e,currentWorkingDirectory:l,setCurrentWorkingDirectory:n,fileSearch:r,authManager:I,mcpHost:a,loginStatus:s,setLoginStatus:o,addEntryToSession:d,clearSessionHistory:u,getSessionUsageOutput:b,pathManager:p,resetSessionToolApprovals:h,clearTimeline:Z,clearHeader:N,clearContextWindowMetrics:y,setThemePreference:Y,refreshStatic:w,hasAvailableCustomAgents:H,slashCommandResultActions:J}){let S=(0,cbe.useMemo)(()=>({logger:e,slashCommands:t,hasAvailableCustomAgents:H,mcp:{host:a,config:async()=>await P2.load()||{mcpServers:{}},hasServer:async j=>(await S.mcp.config())?.mcpServers[j]!==void 0,deleteServer:async j=>{let O=await S.mcp.config();delete O.mcpServers[j],await P2.write(O)}},auth:{availableAuthMethods:()=>SMt(I,s.authInfo),loginStatus:s,logout:async()=>{let j=await I.logout();return o({status:"NotLoggedIn"}),j}},session:{addTimelineEntry:d,clearHistory:u,usageOutput:b},permissions:{allowedDirs:p.getDirectories.bind(p),addAllowedDirectory:p.addDirectory.bind(p),resetSessionToolApprovals:h},process:{cwd:l,chdir:async j=>{process.chdir(j),await p.updatePrimaryDirectory(j),n(j),await r.setRootPath(j)}},ui:{getThemePreference:BVe,setThemePreference:Y,clear:()=>{Z(),N(),y(),w()}}}),[t,e,l,n,r,I,a,s,o,d,u,b,p,h,N,y,Y,w,H]),T=(0,cbe.useCallback)(async j=>{let O=Sd(()=>{let ee=j.trim();return ee==="?"?"/help":ee});if(!O.startsWith("/"))return{handled:!1};let z=O.split(" ")[0],se=t.find(ee=>ee.name===z||ee.aliases?.includes(z));if(!se)return{handled:!1};let ue=O.substring(se.name.length).trim().split(" ").filter(ee=>ee),We=await se.execute(S,ue);if(!We)return{handled:!0};switch(We.kind){case"exit":return J.exit(),{handled:!0};case"add-timeline-entry":return d(We.entry),{handled:!0};case"show-dialog":switch(We.dialog.kind){case"custom-agent-picker":J.showCustomAgentPickerDialog();break;case"feedback":J.showFeedbackDialog();break;case"login":J.showLoginDialog();break;case"mcp":J.showMCPDialog(We.dialog.mode,We.dialog.serverName);break;case"model-picker":J.showModelPickerDialog();break;case"session":J.showSessionDialog();break;case"user-switcher":J.showUserSwitcherDialog();break;default:sb(We.dialog,`Unknown dialog kind: ${We.dialog}`)}return{handled:!0};case"set-model":return J.setModel(We.model),{handled:!0};case"noop":return{handled:!0};case"start-remote-delegate":return J.startRemoteDelegation(We.prompt),{handled:!0};default:sb(We,`Unknown slash command result kind: ${We}`)}},[t,d,J,S]),U=(0,cbe.useCallback)(j=>wue(t,j),[t]);return{slashCommands:t,handleSlashCommand:T,matchingSlashCommands:U}}c();var dCe=nt(qt(),1);function sul(t,e,l){let n=(0,dCe.useMemo)(()=>new Map,[]);(0,dCe.useEffect)(()=>{(async()=>{if(Object.keys(t).length===0||t.staff!==void 0||!e)return;let I=await jW(e),a=e.type==="hmac"?void 0:e.host;if(!I||a!==nL)return;let s=n.get(I)??DUt(a,I).catch(()=>!1);n.set(I,s),await s&&(await Lr.writeKey("staff",!0),await Lr.writeKey("log_level","all"),l({type:"info",text:"Staff mode activated! Restart the app to enable staff features \u2728"}))})()},[t,e,l])}c();var FL=nt(qt(),1);function oul(t,e,l){let[n,r]=(0,FL.useState)(null),I=(0,FL.useRef)("");return(0,FL.useEffect)(()=>{e.text!==I.current&&(n?.availableOptions.some(o=>e.text===o.name)||r(null),I.current=e.text)},[e.text,n]),{handleTabCompletion:(0,FL.useCallback)(()=>{let s=o=>{let d=o.indexOf(" ");return d===-1?!1:o.slice(d+1).trim().length>0};if(n){if(s(e.text)){r(null);return}let o=(n.currentIndex+1)%n.availableOptions.length,d=n.availableOptions[o];e.setText(d.name),r({...n,currentIndex:o}),l.setSlashCommandPickerIndex(o)}else{if(s(e.text))return;let o=wue(t,e.text);if(o.length===1){let d=o[0],u=d.name;for(let b=u.length-1;b>=2;b--){let p=u.slice(0,b),h=wue(t,p);if(h.length>1){let Z=h.findIndex(Y=>Y.name===d.name);r({originalInput:p,availableOptions:h,currentIndex:Z>=0?Z:0});let N=(Z+1)%h.length,y=h[N];e.setText(y.name),r({originalInput:p,availableOptions:h,currentIndex:N}),l.setSlashCommandPickerIndex(N);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}}c();var Xf=nt(qt(),1);function iul(){let[t,e]=(0,Xf.useState)({columns:process.stdout.columns,rows:process.stdout.rows}),l=(0,Xf.useRef)(()=>{}),n=(0,Xf.useCallback)(I=>{l.current=I||(()=>{})},[]),r=(0,Xf.useCallback)(()=>{let{columns:I,rows:a}=process.stdout;e({columns:I,rows:a}),l.current(I,a)},[]);return(0,Xf.useEffect)(()=>(process.stdout.on("resize",r),()=>{process.stdout.off("resize",r)}),[]),{...t,setOnResize:n}}c();var $q=nt(qt(),1);var CL=t=>/\s/.test(t);function Kzn(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&CL(t[l]);)l+=t[l].length;for(;l<t.length&&!CL(t[l]);)l+=t[l].length;return l}function cul(t,e){if(e===0)return 0;let l=e-1;for(;l>=0&&CL(t[l]);)l-=t[l].length;if(l<0)return 0;for(;l>=0&&!CL(t[l]);)l-=t[l].length;return l+1}function qzn(t,e){if(e>=t.length)return t.length;let l=e;for(;l<t.length&&!CL(t[l]);)l+=t[l].length;for(;l<t.length&&CL(t[l]);)l+=t[l].length;return l}function gT(t,e){if(e<=0)return[t];let l=t.split(`
|
|
2408
2408
|
`).map(r=>r+" "),n=[];for(let r of l){if(r.length<=e){n.push(r);continue}let I=r;for(;I.length>e;){let a=e;if(CL(I.slice(0,e)))for(let o=e-1;o>=Math.max(0,e-20)&&!CL(I[o]);o--)a=o;let s=I.slice(0,a);n.push(s),I=I.slice(a)}I.length>0&&n.push(I)}return n}function e7(t,e){if(e.length===0)return{line:0,column:0};let l=0;for(let r=0;r<e.length;r++){let I=e[r],a=l+I.length;if(t<a)return{line:r,column:t-l};l=a}let n=e.length-1;return{line:n,column:e[n].length}}function qq(t,e,l,n){if(t.length===0)return 0;let r=0;for(let I=0;I<Math.min(e,t.length);I++)r+=t[I].length;return e<t.length?r+=Math.min(l,t[e].length):r=n.length,Math.min(r,n.length)}function $zn(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=gT(t.text,t.width),I=qq(r,l,n,t.text);return{...t,cursorPosition:I}}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:I}=e.payload,a=r.replace(/\r\n/g,`
|
|
2409
2409
|
`).replace(/\r/g,`
|
|
2410
2410
|
`),s=l.slice(0,n),o=l.slice(n),d=s+a+o,u=n+a.length;return I?.(d),{text:d,cursorPosition:u,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=cul(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=Kzn(l,n),I=l.slice(0,n)+l.slice(r);return{...t,text:I}}case"move_word_left":{let{text:l,cursorPosition:n}=t;if(n===0)return t;let r=cul(l,n);return{...t,cursorPosition:r}}case"move_word_right":{let{text:l,cursorPosition:n}=t;if(n>=l.length)return t;let r=qzn(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,I=gT(l,r),a=e7(n,I);if(a.line>0){let s=a.line-1,o=Math.min(a.column,I[s].length-1),d=qq(I,s,o,l);return{...t,cursorPosition:d}}return t}case"move_down":{let{text:l,cursorPosition:n,width:r}=t,I=gT(l,r),a=e7(n,I);if(a.line<I.length-1){let s=a.line+1,o=Math.min(a.column,I[s].length-1),d=qq(I,s,o,l);return{...t,cursorPosition:d}}return t}case"clear":return{text:"",cursorPosition:0,width:t.width};case"clear_before_cursor":{let{text:l,cursorPosition:n,width:r}=t,I=gT(l,r),a=e7(n,I),s=qq(I,a.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(`
|
|
@@ -2412,9 +2412,9 @@ Run `+Jl.cyan("{updateCommand}")+" to update",I=e.message||r;e.boxenOptions??={p
|
|
|
2412
2412
|
`),l=0,n=0,r;for(let I of e){if(I.startsWith("diff --git")&&!r){let a=I.match(/diff --git a\/(.+) b\//);a&&(r=a[1])}I.startsWith("+")&&!I.startsWith("+++")?l++:I.startsWith("-")&&!I.startsWith("---")&&n++}return{linesAdded:l,linesRemoved:n,filePath:r}}function mCe(t){return t===0?"0":t<1e3?t.toString():t<1e6?`${(t/1e3).toFixed(1)}k`:`${(t/1e6).toFixed(1)}m`}function mul(t){return t===0?"0":Number.isInteger(t)?t.toString():t.toFixed(2).replace(/\.?0+$/,"")}function bul(t){let e=Math.floor(t/1e3),l=Math.floor(e/60),n=Math.floor(l/60);if(n>0){let r=l%60,I=t%6e4/1e3;return`${n}h ${r}m ${I.toFixed(1)}s`}else if(l>0){let r=t%6e4/1e3;return`${l}m ${r.toFixed(1)}s`}else return`${(t/1e3).toFixed(1)}s`}function GCe(t){let e=bul(Date.now()-t.sessionStartTime),l=bul(t.totalApiDurationMs),n=mul(t.totalPremiumRequests),r=t.totalPremiumRequests===1?"Premium request":"Premium requests",I=[`Total usage est: ${n} ${r}`,`Total duration (API): ${l}`,`Total duration (wall): ${e}`,`Total code changes: ${t.codeChanges.linesAdded} lines added, ${t.codeChanges.linesRemoved} lines removed`];if(t.modelMetrics.size>0){I.push("Usage by model:");for(let[a,s]of t.modelMetrics){let{requests:o,usage:d}=s,u=mCe(d.inputTokens),b=mCe(d.outputTokens),p=mCe(d.cacheReadTokens),h=mCe(d.cacheWriteTokens),Z=mul(o.cost),N=parseFloat(o.cost.toString())===1?"Premium request":"Premium requests",Y=(a||"(unknown)").padEnd(20);I.push(` ${Y} ${u} input, ${b} output, ${p} cache read, ${h} cache write (Est. ${Z} ${N})`)}}return I.join(`
|
|
2413
2413
|
`)}c();import*as pul from"fs";function ube(t,e){return{mcpServers:{...t.mcpServers,...e.mcpServers}}}function nPn(t){try{let e=JSON.parse(t);return Y8e.parse(e)}catch(e){if(e instanceof SyntaxError)throw new Error(`Invalid JSON in --additional-mcp-config: ${e.message}`);if(e instanceof vh){let l=e.errors.map(n=>`${n.path.join(".")}: ${n.message}`).join("; ");throw new Error(`Invalid MCP server configuration in --additional-mcp-config: ${l}`)}throw e}}function hul(t){let e;if(t.startsWith("@")){let l=t.slice(1);try{e=pul.readFileSync(l,"utf-8")}catch(n){throw n instanceof Error?new Error(`Failed to read MCP config file "${l}": ${n.message}`):n}}else e=t;return nPn(e)}c();import{realpathSync as pCe}from"fs";import{isAbsolute as mbe,relative as rPn,sep as IPn}from"path";var bbe=class{directories=[];primaryDirectory;constructor(e,l=[]){this.primaryDirectory=this.resolveAndValidateDirectory(e),this.directories=[this.primaryDirectory];for(let n of l){let r=this.resolveAndValidateDirectory(n);this.directories.includes(r)||this.directories.push(r)}}getDirectories(){return[...this.directories]}getPrimaryDirectory(){return this.primaryDirectory}async updatePrimaryDirectory(e){let l=this.resolveAndValidateDirectory(e);if(!await eC(l))throw new Error(`Directory does not exist: ${e}`);this.directories=this.directories.filter(r=>r!==this.primaryDirectory),this.directories.unshift(l),this.primaryDirectory=l}async addDirectory(e){let l=this.resolveAndValidateDirectory(e);if(!await eC(l))throw new Error(`Directory does not exist: ${e}`);this.directories.includes(l)||this.directories.push(l)}isPathWithinAllowedDirectories(e){if(e==="/dev/null")return!0;try{let l=this.fullyResolvedPath(e);for(let n of this.directories)if(this.isPathWithinRoot(l,n))return!0;return!1}catch{return!1}}fullyResolvedPath(e){try{if(!mbe(e))throw new Error(`Path must be absolute: ${e}`);return pCe(e)}catch{return e}}isPathWithinRoot(e,l){let n=rPn(l,e);return!n.startsWith(`..${IPn}`)&&n!==".."&&!mbe(n)}resolveAndValidateDirectory(e){if(!e)throw new Error("Directory path cannot be empty");if(!mbe(e))throw new Error(`Directory path must be absolute: ${e}`);try{return pCe(e)}catch{throw new Error(`Directory does not exist or cannot be accessed: ${e}`)}}},Gbe=class{primaryDirectory;constructor(e){if(!e)throw new Error("Directory path cannot be empty");if(!mbe(e))throw new Error(`Directory path must be absolute: ${e}`);try{this.primaryDirectory=pCe(e)}catch{throw new Error(`Directory does not exist or cannot be accessed: ${e}`)}}getDirectories(){return[this.primaryDirectory]}getPrimaryDirectory(){return this.primaryDirectory}async updatePrimaryDirectory(e){if(!mbe(e))throw new Error(`Directory path must be absolute: ${e}`);if(!await eC(e))throw new Error(`Directory does not exist: ${e}`);try{this.primaryDirectory=pCe(e)}catch{throw new Error(`Directory does not exist or cannot be accessed: ${e}`)}}async addDirectory(e){}isPathWithinAllowedDirectories(e){return!0}};c();c();c();c();var Aul=t=>{t=1831565813+(t|=0)|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296},elt=class{constructor(e){this.dictionaries=void 0,this.length=void 0,this.separator=void 0,this.style=void 0,this.seed=void 0;let{length:l,separator:n,dictionaries:r,style:I,seed:a}=e;this.dictionaries=r,this.separator=n,this.length=l,this.style=I,this.seed=a}generate(){if(!this.dictionaries)throw new Error('Cannot find any dictionary. Please provide at least one, or leave the "dictionary" field empty in the config object');if(this.length<=0)throw new Error("Invalid length provided");if(this.length>this.dictionaries.length)throw new Error(`The length cannot be bigger than the number of dictionaries.
|
|
2414
2414
|
Length provided: ${this.length}. Number of dictionaries provided: ${this.dictionaries.length}`);let e=this.seed;return this.dictionaries.slice(0,this.length).reduce((l,n)=>{let r;e?(r=(a=>{if(typeof a=="string"){let s=a.split("").map(d=>d.charCodeAt(0)).reduce((d,u)=>d+u,1),o=Math.floor(Number(s));return Aul(o)}return Aul(a)})(e),e=4294967296*r):r=Math.random();let I=n[Math.floor(r*n.length)]||"";if(this.style==="lowerCase")I=I.toLowerCase();else if(this.style==="capital"){let[a,...s]=I.split("");I=a.toUpperCase()+s.join("")}else this.style==="upperCase"&&(I=I.toUpperCase());return l?`${l}${this.separator}${I}`:`${I}`},"")}},Zul={separator:"_",dictionaries:[]},gul=t=>{let e=[...t&&t.dictionaries||Zul.dictionaries],l={...Zul,...t,length:t&&t.length||e.length,dictionaries:e};if(!t||!t.dictionaries||!t.dictionaries.length)throw new Error('A "dictionaries" array must be provided. This is a breaking change introduced starting from Unique Name Generator v4. Read more about the breaking change here: https://github.com/andreasonny83/unique-names-generator#migration-guide');return new elt(l).generate()},Nul=["able","above","absent","absolute","abstract","abundant","academic","acceptable","accepted","accessible","accurate","accused","active","actual","acute","added","additional","adequate","adjacent","administrative","adorable","advanced","adverse","advisory","aesthetic","afraid","aggregate","aggressive","agreeable","agreed","agricultural","alert","alive","alleged","allied","alone","alright","alternative","amateur","amazing","ambitious","amused","ancient","angry","annoyed","annual","anonymous","anxious","appalling","apparent","applicable","appropriate","arbitrary","architectural","armed","arrogant","artificial","artistic","ashamed","asleep","assistant","associated","atomic","attractive","automatic","autonomous","available","average","awake","aware","awful","awkward","back","bad","balanced","bare","basic","beautiful","beneficial","better","bewildered","big","binding","biological","bitter","bizarre","blank","blonde","blushing","boiling","bold","bored","boring","bottom","brainy","brave","breakable","breezy","brief","bright","brilliant","broad","broken","bumpy","burning","busy","calm","capable","careful","casual","causal","cautious","central","certain","changing","characteristic","charming","cheap","cheerful","chemical","chief","chilly","chosen","chronic","chubby","circular","civic","civil","classic","classical","clean","clear","clever","clinical","close","closed","cloudy","clumsy","coastal","cognitive","coherent","cold","collective","colorful","colossal","coloured","colourful","combined","comfortable","commercial","common","compact","comparable","comparative","compatible","competent","competitive","complete","complex","complicated","comprehensive","compulsory","conceptual","concerned","concrete","condemned","confident","confidential","confused","conscious","conservation","considerable","consistent","constant","constitutional","contemporary","content","continental","continued","continuing","continuous","controlled","controversial","convenient","conventional","convinced","convincing","cooing","cool","cooperative","corporate","correct","corresponding","costly","courageous","creative","creepy","criminal","critical","crooked","crowded","crucial","crude","cruel","cuddly","cultural","curious","curly","current","curved","cute","daily","damaged","damp","dangerous","dark","dead","deafening","dear","decent","decisive","deep","defeated","defensive","defiant","definite","deliberate","delicate","delicious","delighted","delightful","democratic","dependent","depressed","desirable","desperate","detailed","determined","developed","developing","devoted","different","difficult","digital","diplomatic","direct","dirty","disappointed","disastrous","disciplinary","disgusted","distant","distinct","distinctive","distinguished","disturbed","disturbing","diverse","divine","dizzy","domestic","dominant","double","doubtful","drab","dramatic","dreadful","driving","dry","dual","due","dull","dusty","dutch","dying","dynamic","eager","early","eastern","easy","economic","educational","eerie","effective","efficient","elaborate","elated","elderly","eldest","electoral","electric","electrical","electronic","elegant","eligible","embarrassed","embarrassing","emotional","empirical","empty","enchanting","encouraging","endless","energetic","enormous","enthusiastic","entire","entitled","envious","environmental","equal","equivalent","essential","established","estimated","ethical","eventual","everyday","evident","evil","evolutionary","exact","excellent","exceptional","excess","excessive","excited","exciting","exclusive","existing","exotic","expected","expensive","experienced","experimental","explicit","extended","extensive","external","extra","extraordinary","extreme","exuberant","faint","fair","faithful","familiar","famous","fancy","fantastic","far","fascinating","fashionable","fast","fatal","favourable","favourite","federal","fellow","few","fierce","final","financial","fine","firm","fiscal","fit","fixed","flaky","flat","flexible","fluffy","fluttering","flying","following","fond","foolish","foreign","formal","formidable","forthcoming","fortunate","forward","fragile","frail","frantic","free","frequent","fresh","friendly","frightened","front","frozen","full","fun","functional","fundamental","funny","furious","future","fuzzy","gastric","general","generous","genetic","gentle","genuine","geographical","giant","gigantic","given","glad","glamorous","gleaming","global","glorious","golden","good","gorgeous","gothic","governing","graceful","gradual","grand","grateful","greasy","great","grieving","grim","gross","grotesque","growing","grubby","grumpy","guilty","handsome","happy","hard","harsh","head","healthy","heavy","helpful","helpless","hidden","high","hilarious","hissing","historic","historical","hollow","holy","homely","hon","honest","horizontal","horrible","hostile","hot","huge","human","hungry","hurt","hushed","husky","icy","ideal","identical","ideological","ill","illegal","imaginative","immediate","immense","implicit","important","impossible","impressed","impressive","improved","inadequate","inc","inclined","increased","increasing","incredible","independent","indirect","individual","industrial","inevitable","influential","informal","inherent","initial","injured","inland","inner","innocent","innovative","inquisitive","instant","institutional","insufficient","intact","integral","integrated","intellectual","intelligent","intense","intensive","interested","interesting","interim","interior","intermediate","internal","international","invisible","involved","irrelevant","isolated","itchy","jealous","jittery","joint","jolly","joyous","judicial","juicy","junior","just","keen","key","kind","known","labour","large","late","latin","lazy","leading","left","legal","legislative","legitimate","lengthy","lesser","level","lexical","liable","light","like","likely","limited","linear","linguistic","liquid","literary","little","live","lively","living","local","logical","lonely","long","loose","lost","loud","lovely","low","loyal","ltd","lucky","mad","magic","magnetic","magnificent","main","major","mammoth","managerial","managing","manual","many","marginal","marine","marked","married","marvellous","mass","massive","mathematical","mature","maximum","mean","meaningful","mechanical","medical","medieval","melodic","melted","mental","mere","metropolitan","mid","middle","mighty","mild","military","miniature","minimal","minimum","ministerial","minor","miserable","misleading","missing","misty","mixed","moaning","mobile","moderate","modern","modest","molecular","monetary","monthly","moral","motionless","muddy","multiple","mushy","musical","mutual","mysterious","naked","narrow","nasty","national","natural","naughty","naval","near","nearby","neat","necessary","negative","neighbouring","nervous","net","neutral","new","nice","noble","noisy","normal","northern","nosy","notable","novel","nuclear","numerous","nursing","nutritious","nutty","obedient","objective","obliged","obnoxious","obvious","occasional","occupational","odd","official","ok","okay","old","only","open","operational","opposite","optimistic","ordinary","organic","organisational","original","orthodox","other","outdoor","outer","outrageous","outside","outstanding","overall","overseas","overwhelming","painful","pale","panicky","parallel","parental","parliamentary","partial","particular","passing","passive","past","patient","payable","peaceful","peculiar","perfect","permanent","persistent","personal","petite","philosophical","physical","plain","planned","plastic","pleasant","pleased","poised","polite","poor","popular","positive","possible","potential","powerful","practical","precious","precise","preferred","pregnant","preliminary","premier","prepared","present","presidential","pretty","previous","prickly","primary","prime","principal","printed","prior","private","probable","productive","professional","profitable","profound","progressive","prominent","promising","proper","proposed","prospective","protective","proud","provincial","psychiatric","psychological","public","puny","pure","purring","puzzled","quaint","qualified","quarrelsome","querulous","quick","quickest","quiet","quintessential","quixotic","racial","radical","rainy","random","rapid","rare","raspy","rational","ratty","raw","ready","real","realistic","rear","reasonable","recent","reduced","redundant","regional","registered","regular","regulatory","related","relative","relaxed","relevant","reliable","relieved","religious","reluctant","remaining","remarkable","remote","renewed","representative","repulsive","required","resident","residential","resonant","respectable","respective","responsible","resulting","retail","retired","revolutionary","rich","ridiculous","right","rigid","ripe","rising","rival","roasted","robust","rolling","romantic","rotten","rough","round","royal","rubber","rude","ruling","running","rural","sacred","sad","safe","salty","satisfactory","satisfied","scared","scary","scattered","scientific","scornful","scrawny","screeching","secondary","secret","secure","select","selected","selective","selfish","semantic","senior","sensible","sensitive","separate","serious","severe","shaggy","shaky","shallow","shared","sharp","sheer","shiny","shivering","shocked","short","shrill","shy","sick","significant","silent","silky","silly","similar","simple","single","skilled","skinny","sleepy","slight","slim","slimy","slippery","slow","small","smart","smiling","smoggy","smooth","social","soft","solar","sole","solid","sophisticated","sore","sorry","sound","sour","southern","spare","sparkling","spatial","special","specific","specified","spectacular","spicy","spiritual","splendid","spontaneous","sporting","spotless","spotty","square","squealing","stable","stale","standard","static","statistical","statutory","steady","steep","sticky","stiff","still","stingy","stormy","straight","straightforward","strange","strategic","strict","striking","striped","strong","structural","stuck","subjective","subsequent","substantial","subtle","successful","successive","sudden","sufficient","suitable","sunny","super","superb","superior","supporting","supposed","supreme","sure","surprised","surprising","surrounding","surviving","suspicious","sweet","swift","symbolic","sympathetic","systematic","tall","tame","tart","tasteless","tasty","technical","technological","teenage","temporary","tender","tense","terrible","territorial","testy","then","theoretical","thick","thin","thorough","thoughtful","thoughtless","thundering","tight","tiny","tired","top","total","tough","toxic","traditional","tragic","tremendous","tricky","tropical","troubled","typical","ugliest","ugly","ultimate","unable","unacceptable","unaware","uncertain","unchanged","uncomfortable","unconscious","underground","underlying","unemployed","uneven","unexpected","unfair","unfortunate","unhappy","uniform","uninterested","unique","united","universal","unknown","unlikely","unnecessary","unpleasant","unsightly","unusual","unwilling","upper","upset","uptight","urban","urgent","used","useful","useless","usual","vague","valid","valuable","variable","varied","various","varying","vast","verbal","vertical","very","vicarious","vicious","victorious","violent","visible","visiting","visual","vital","vitreous","vivacious","vivid","vocal","vocational","voiceless","voluminous","voluntary","vulnerable","wandering","warm","wasteful","watery","weak","wealthy","weary","wee","weekly","weird","welcome","well","western","wet","whispering","whole","wicked","wide","widespread","wild","wilful","willing","willowy","wily","wise","wispy","wittering","witty","wonderful","wooden","working","worldwide","worried","worrying","worthwhile","worthy","written","wrong","xenacious","xenial","xenogeneic","xeric","xerothermic","yabbering","yammering","yappiest","yappy","yawning","yearling","yearning","yeasty","yelling","yelping","yielding","yodelling","young","youngest","youthful","ytterbic","yucky","yummy","zany","zealous","zeroth","zestful","zesty","zippy","zonal","zoophagous","zygomorphic","zygotic"],Wul=["aardvark","aardwolf","albatross","alligator","alpaca","amphibian","anaconda","angelfish","anglerfish","ant","anteater","antelope","antlion","ape","aphid","armadillo","asp","baboon","badger","bandicoot","barnacle","barracuda","basilisk","bass","bat","bear","beaver","bedbug","bee","beetle","bird","bison","blackbird","boa","boar","bobcat","bobolink","bonobo","bovid","bug","butterfly","buzzard","camel","canid","canidae","capybara","cardinal","caribou","carp","cat","caterpillar","catfish","catshark","cattle","centipede","cephalopod","chameleon","cheetah","chickadee","chicken","chimpanzee","chinchilla","chipmunk","cicada","clam","clownfish","cobra","cockroach","cod","condor","constrictor","coral","cougar","cow","coyote","crab","crane","crawdad","crayfish","cricket","crocodile","crow","cuckoo","damselfly","deer","dingo","dinosaur","dog","dolphin","donkey","dormouse","dove","dragon","dragonfly","duck","eagle","earthworm","earwig","echidna","eel","egret","elephant","elk","emu","ermine","falcon","felidae","ferret","finch","firefly","fish","flamingo","flea","fly","flyingfish","fowl","fox","frog","galliform","gamefowl","gayal","gazelle","gecko","gerbil","gibbon","giraffe","goat","goldfish","goose","gopher","gorilla","grasshopper","grouse","guan","guanaco","guineafowl","gull","guppy","haddock","halibut","hamster","hare","harrier","hawk","hedgehog","heron","herring","hippopotamus","hookworm","hornet","horse","hoverfly","hummingbird","hyena","iguana","impala","jackal","jaguar","jay","jellyfish","junglefowl","kangaroo","kingfisher","kite","kiwi","koala","koi","krill","ladybug","lamprey","landfowl","lark","leech","lemming","lemur","leopard","leopon","limpet","lion","lizard","llama","lobster","locust","loon","louse","lungfish","lynx","macaw","mackerel","magpie","mammal","manatee","mandrill","marlin","marmoset","marmot","marsupial","marten","mastodon","meadowlark","meerkat","mink","minnow","mite","mockingbird","mole","mollusk","mongoose","monkey","moose","mosquito","moth","mouse","mule","muskox","narwhal","newt","nightingale","ocelot","octopus","opossum","orangutan","orca","ostrich","otter","owl","ox","panda","panther","parakeet","parrot","parrotfish","partridge","peacock","peafowl","pelican","penguin","perch","pheasant","pig","pigeon","pike","pinniped","piranha","planarian","platypus","pony","porcupine","porpoise","possum","prawn","primate","ptarmigan","puffin","puma","python","quail","quelea","quokka","rabbit","raccoon","rat","rattlesnake","raven","reindeer","reptile","rhinoceros","roadrunner","rodent","rook","rooster","roundworm","sailfish","salamander","salmon","sawfish","scallop","scorpion","seahorse","shark","sheep","shrew","shrimp","silkworm","silverfish","skink","skunk","sloth","slug","smelt","snail","snake","snipe","sole","sparrow","spider","spoonbill","squid","squirrel","starfish","stingray","stoat","stork","sturgeon","swallow","swan","swift","swordfish","swordtail","tahr","takin","tapir","tarantula","tarsier","termite","tern","thrush","tick","tiger","tiglon","toad","tortoise","toucan","trout","tuna","turkey","turtle","tyrannosaurus","unicorn","urial","vicuna","viper","vole","vulture","wallaby","walrus","warbler","wasp","weasel","whale","whippet","whitefish","wildcat","wildebeest","wildfowl","wolf","wolverine","wombat","woodpecker","worm","wren","xerinae","yak","zebra"];import{execFile as aPn}from"node:child_process";import{promisify as sPn}from"node:util";function l7(t){let[e,l]=t.split("/");if(!e||!l)throw new Error(`Invalid repository format: ${t}. Expected format: owner/repo`);return{owner:e,repo:l}}var uN=sPn(aPn);async function yul(t){try{let{stdout:e}=await uN("git",["status","--porcelain"],{cwd:t,encoding:"utf8",timeout:5e3,maxBuffer:1048576}),l=e.split(`
|
|
2415
|
-
`).filter(a=>a.length>0),n=0,r=0,I=0;for(let a of l){if(a.length<2)continue;let s=a[0],o=a[1];s==="?"&&o==="?"?I++:(s!==" "&&s!=="?"&&n++,o!==" "&&o!=="?"&&r++)}return{staged:n,unstaged:r,untracked:I,hasChanges:l.length>0}}catch{return{staged:0,unstaged:0,untracked:0,hasChanges:!1}}}async function Eul(){return"Checkpoint from Copilot CLI for coding agent session"}async function Rul(t){let{stdout:e}=await uN("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:t,encoding:"utf8",timeout:5e3});return e.trim()}async function Yul(t){try{return await Rul(t)==="HEAD"}catch{return!1}}async function oPn(t){try{let{stdout:e}=await uN("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:t,encoding:"utf8",timeout:5e3}),l=e.trim();if(!l||l==="HEAD")return"origin";let{stdout:n}=await uN("git",["config",`branch.${l}.remote`],{cwd:t,encoding:"utf8",timeout:5e3});return n.trim()||"origin"}catch{return"origin"}}async function iPn(t){let e=await oPn(t);try{let{stdout:l}=await uN("git",["symbolic-ref",`refs/remotes/${e}/HEAD`],{cwd:t,encoding:"utf8",timeout:5e3}),n=l.match(new RegExp(`refs/remotes/${e}/(.+)`));if(n)return n[1].trim()}catch{}try{return await uN("git",["rev-parse","--verify",`refs/remotes/${e}/main`],{cwd:t,encoding:"utf8",timeout:5e3}),"main"}catch{}try{return await uN("git",["rev-parse","--verify",`refs/remotes/${e}/master`],{cwd:t,encoding:"utf8",timeout:5e3}),"master"}catch{return"main"}}async function cPn(t,e){try{return await uN("git",["rev-parse","--verify",`refs/heads/${e}`],{cwd:t,encoding:"utf8",timeout:5e3}),!0}catch{return!1}}async function dPn(t,e){let n=["adjectives","animals"],I=[];for(let a of n)a.toLowerCase()==="adjectives"&&I.push(Nul),a.toLowerCase()==="animals"&&I.push(Wul);if(I.length===0)return`${e}/session${Date.now()}`;for(let a=0;a<5;a++){let s=`${e}/${gul({dictionaries:I,length:I.length,separator:"-"})}`;if(!await cPn(t,s))return s}return`${e}/session${Date.now()}`}async function uPn(t){return dPn(t,"copilot")}async function tlt(t){try{let[e,l,n,r]=await Promise.all([Rul(t),sCe(t),iPn(t),uPn(t)]);if(!l)throw new Error("Could not determine GitHub repository from git remotes");return{repository:`${l.owner}/${l.name}`,baseBranch:n,headBranch:e,asyncBranch:r}}catch(e){throw new Error(`Failed to get repository info: ${e instanceof Error?e.message:String(e)}`)}}async function Vul(t,e){try{await uN("git",["add","--all"],{cwd:t,encoding:"utf8",timeout:1e4,maxBuffer:10*1024*1024});let{stdout:l}=await uN("git",["commit","-m",e],{cwd:t,encoding:"utf8",timeout:1e4,maxBuffer:10*1024*1024}),n,r=l.match(/\[[\w/-]+ ([a-f0-9]+)\]/);if(!r||!r[1]){let{stdout:I}=await uN("git",["rev-parse","--short","HEAD"],{cwd:t,encoding:"utf8",timeout:5e3});n=I.trim()}else n=r[1];return{commitHash:n,commitMessage:e}}catch(l){let n=l instanceof Error?l.message:String(l);throw n.includes("pre-commit")?new Error(`Pre-commit hook prevented the commit: ${n}`):n.includes("commit-msg")?new Error(`Commit-msg hook rejected the commit: ${n}`):n.includes("nothing to commit")||n.includes("no changes added")?new Error(`No changes to commit (possibly filtered by hooks): ${n}`):new Error(`Failed to commit changes: ${n}`)}}async function wul(t,e=process.cwd()){try{await uN("git",["checkout",t],{cwd:e,encoding:"utf8",timeout:5e3,maxBuffer:10*1024*1024})}catch(l){let n=l instanceof Error?l.message:String(l);throw new Error(`Failed to switch to branch '${t}': ${n}`)}}async function Qul(t){let{cwd:e,asyncBranch:l}=t;try{await uN("git",["checkout","-b",l],{cwd:e,encoding:"utf8",timeout:1e4,maxBuffer:10*1024*1024}),await uN("git",["push","-u","origin",l],{cwd:e,encoding:"utf8",timeout:3e4,maxBuffer:10*1024*1024})}catch(n){let r=n instanceof Error?n.message:String(n);throw r.includes("branch")&&r.includes("already exists")?new Error(`Branch '${l}' already exists: ${r}`):r.includes("Could not read from remote repository")?new Error(`Failed to push branch - repository access issue: ${r}`):r.includes("Permission denied")||r.includes("403")?new Error(`Failed to push branch - permission denied: ${r}`):r.includes("remote rejected")?new Error(`Remote rejected the push: ${r}`):new Error(`Failed to create and push branch '${l}': ${r}`)}}c();var n7=class extends Error{constructor(l,n,r){super(n);this.status=l;this.message=n;this.responseBody=r;this.name="HttpApiError"}};async function pbe(t){let e=await jW(t);if(!e)throw new Error("Failed to get authentication token");return e}async function mPn(t){let e=t.statusText||`HTTP ${t.status}`,l;try{l=await t.json(),typeof l=="object"&&l&&"message"in l&&(e=l.message)}catch{try{let n=await t.text();n&&(l=n)}catch{}}return{message:e,body:l}}async function NT(t,e,l){let{message:n,body:r}=await mPn(t),I;switch(t.status){case 400:I=`Bad request: ${n}`;break;case 401:I=`Unauthorized: ${n}`;break;case 402:I=e==="job"?"No remaining quota for premium requests":`Payment required: ${n}`;break;case 403:e==="job"||e==="agent"?I=`Coding Agent not enabled: ${n}`:I=`Forbidden: ${n}`;break;case 404:e==="job"&&l?.jobId?I=`Job not found: ${l.jobId}`:e==="session"&&l?.sessionId?I=`Session not found: ${l.sessionId}`:e==="repository"&&l?.repository?I=`Repository not found: ${l.repository}`:e==="pr"&&l?.prNumber?I=`Pull request not found: #${l.prNumber}`:I=`Not found: ${n}`;break;case 409:e==="pr"||e==="job"?I="PR already exists for these branches":I=`Conflict: ${n}`;break;case 422:e==="job"||e==="pr"?I="Branch protection or other rule prevents operation":I=`Unprocessable entity: ${n}`;break;case 500:I=`Internal server error: ${n}`;break;case 502:I=`Bad gateway: ${n}`;break;case 503:I=`Service unavailable: ${n}`;break;default:I=e?`Failed to ${e.replace(/_/g," ")}: ${n}`:n}throw new n7(t.status,I,r)}async function vL(t,e,l,n,r="API"){let I=await pbe(e),a=Oce(),s={Authorization:`Bearer ${I}`,Accept:"application/json","User-Agent":`copilot-cli/${a}`};return n?.headers&&Object.assign(s,n.headers),lC(t,{...n,headers:s},l,r)}async function Ful(t,e,l){let{owner:n,repo:r}=l7(t),I=ww(e),a=gO(I),s=new URL(`/repos/${n}/${r}`,a),o=await vL(s,e,l,{method:"GET",headers:{Accept:"application/vnd.github.v3+json"}},"GitHub Repository API");return o.ok||await NT(o,"repository",{repository:t}),!0}async function Cul(t,e){return!0}c();async function vul(t,e,l,n,r,I){let{owner:a,repo:s}=l7(t),{problemStatement:o}=cal(e,n),d=await pbe(r),u=ww(r),b=await c0(u,d),p=new URL(`/agents/swe/v1/jobs/${a}/${s}`,b),Z=await vL(p,r,I,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({problem_statement:o,pull_request:{head_ref:l,body_suffix:"Created from Copilot CLI via the copilot push command."},event_type:"cli_push_command"})},"Copilot Job API");Z.ok||await NT(Z,"job",{repository:t});let N=await Z.json();return{jobId:N.job_id,sessionId:N.session_id,actor:{id:N.actor.id,login:N.actor.login},createdAt:new Date(N.created_at),updatedAt:new Date(N.updated_at)}}async function ful(t){let{repository:e,jobId:l,authInfo:n,logger:r}=t,{owner:I,repo:a}=l7(e),s=await pbe(n),o=ww(n),d=await c0(o,s),u=new URL(`/agents/swe/v1/jobs/${I}/${a}/${l}`,d),b=await vL(u,n,r,{method:"GET"},"Copilot Job Status API");b.ok||await NT(b,"job",{jobId:l});let p=await b.json(),h;return p.pull_request?.number&&(h=`${o}/${e}/pull/${p.pull_request.number}`),{jobId:p.job_id,sessionId:p.session_id,problemStatement:p.problem_statement,status:p.status,result:p.result,actor:{id:p.actor.id,login:p.actor.login},createdAt:new Date(p.created_at),updatedAt:new Date(p.updated_at),pullRequest:p.pull_request?{id:p.pull_request.id,number:p.pull_request.number,url:h}:void 0,workflowRun:p.workflow_run?{id:p.workflow_run.id}:void 0,error:p.error?{message:p.error.message,responseStatusCode:p.error.response_status_code,service:p.error.service}:void 0}}async function llt(t){let{sessionId:e,authInfo:l,logger:n,integrationId:r}=t,I=await pbe(l),a=ww(l),s=await c0(a,I),o=new URL(`/agents/sessions/${e}`,s),d=await vL(o,l,n,{method:"GET",headers:{"Copilot-Integration-Id":r}},"Copilot Session API");d.ok||await NT(d,"session",{sessionId:e});let u=await d.json(),b=u.state;return{sessionId:u.id,state:b,createdAt:u.created_at?new Date(u.created_at):new Date,updatedAt:u.last_updated_at?new Date(u.last_updated_at):new Date,resourceGlobalId:u.resource_global_id}}async function hCe(t){let{repository:e,prNumber:l,authInfo:n,logger:r,includeFiles:I=!1,maxFiles:a=100}=t,{owner:s,repo:o}=l7(e),d=ww(n),u=gO(d),b=new URL(`/repos/${s}/${o}/pulls/${l}`,u),p=await vL(b,n,r,{method:"GET",headers:{Accept:"application/vnd.github.v3+json"}},"GitHub PR API");p.ok||await NT(p,"pr",{prNumber:l.toString()});let h=await p.json(),Z={title:h.title,draft:h.draft,createdAt:new Date(h.created_at),changedFiles:h.changed_files,totalAdditions:h.additions,totalDeletions:h.deletions};if(I){let N=new URL(`/repos/${s}/${o}/pulls/${l}/files`,u);N.searchParams.set("per_page",Math.min(a,100).toString()),N.searchParams.set("page","1");let y=await vL(N,n,r,{method:"GET",headers:{Accept:"application/vnd.github.v3+json"}},"GitHub PR Files API");if(y.ok){let Y=await y.json();Z.files=Y.slice(0,a).map(w=>({filename:w.filename,status:w.status,additions:w.additions,deletions:w.deletions}))}}return Z}var ACe=class{state=null;onStateChangeCallback=null;onSessionCompleteCallback=null;timeoutId=null;pollingIntervalId=null;initialAuthInfo;authInfo;logger;integrationId;constructor(e,l,n){this.initialAuthInfo=e,this.logger=l,this.integrationId=n}startPush(e,l,n=""){if(!this.initialAuthInfo)throw new Error("Not authenticated. Please login first.");this.authInfo=this.initialAuthInfo,this.logger.startGroup("Remote Push Started"),this.logger.info(`Prompt: "${e.substring(0,100)}${e.length>100?"...":""}"`),this.logger.info(`CLI Session ID: ${l}`),n&&this.logger.info(`Problem Context: "${n.substring(0,100)}${n.length>100?"...":""}"`),this.logger.endGroup(),this.state={stage:"uncommitted_changes_check",prompt:e,problemContext:n,cliSessionId:l,isLoading:!0},this.notifyStateChange(),this.checkUncommittedChanges()}advanceStage(){if(!this.state)return;let e=this.state.stage;switch(this.state.stage){case"uncommitted_changes_check":this.logger.info(`--- Stage transition: ${e} \u2192 ConfirmPush ---`),this.state={...this.state,stage:"confirm_push",isLoading:!0},this.notifyStateChange(),this.loadPushConfirmationData();break;case"confirm_push":this.logger.info(`--- Stage transition: ${e} \u2192 PushProcessing ---`),this.state={...this.state,stage:"push_processing",processingStartTime:new Date},this.notifyStateChange(),this.executePushOperations();break;case"push_processing":this.logger.info(`--- Stage transition: ${e} \u2192 PushTracking ---`),this.state={...this.state,stage:"push_tracking"},this.notifyStateChange(),this.startJobTracking();break;case"push_tracking":this.logger.info(`--- Stage transition: ${e} \u2192 Complete ---`),this.completePushOperation();break}}cancelPush(){let e=this.state?.stage;this.logger.info(`Remote push cancelled${e?` (was in stage: ${e})`:""}`),this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.clearPollingInterval(),this.state=null,this.notifyStateChange()}setOnStateChangeCallback(e){this.onStateChangeCallback=e,this.notifyStateChange()}onSessionComplete(e){this.onSessionCompleteCallback=e}getCurrentState(){return this.state}isActive(){return this.state!==null}async checkUncommittedChanges(){if(!this.state)return;let e=Date.now();this.logger.info("STAGE 1: UncommittedChangesCheck - Starting validation checks");try{let l=await If(process.cwd());if(!l.found)throw new Error("Not a git repository");let n=await tlt(process.cwd());this.logger.info(`Repository: ${n.repository}`),this.logger.info(`Base branch: ${n.baseBranch}, Head branch: ${n.headBranch}`),this.logger.info(`Async branch: ${n.asyncBranch}`),this.logger.info("Running parallel validation checks (detached HEAD, repo access, Copilot enabled)...");let[r,I,a]=await Promise.allSettled([Yul(process.cwd()),Ful(n.repository,this.authInfo,this.logger),Cul(n.repository,this.authInfo)]),s=[];if(r.status==="fulfilled"&&r.value===!0?s.push("Repository is in detached HEAD state. Please checkout a branch before pushing."):r.status==="rejected"&&s.push(`Failed to check HEAD state: ${r.reason}`),I.status==="fulfilled"&&I.value===!1?s.push(`Repository not found or you don't have access: ${n.repository}`):I.status==="rejected"&&s.push(I.reason?.message||"Failed to check repository access"),a.status==="rejected"&&s.push(a.reason?.message||"Failed to check Copilot status"),s.length>0){let b=s.length===1?s[0]:`Multiple errors:
|
|
2415
|
+
`).filter(a=>a.length>0),n=0,r=0,I=0;for(let a of l){if(a.length<2)continue;let s=a[0],o=a[1];s==="?"&&o==="?"?I++:(s!==" "&&s!=="?"&&n++,o!==" "&&o!=="?"&&r++)}return{staged:n,unstaged:r,untracked:I,hasChanges:l.length>0}}catch{return{staged:0,unstaged:0,untracked:0,hasChanges:!1}}}async function Eul(){return"Checkpoint from Copilot CLI for coding agent session"}async function Rul(t){let{stdout:e}=await uN("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:t,encoding:"utf8",timeout:5e3});return e.trim()}async function Yul(t){try{return await Rul(t)==="HEAD"}catch{return!1}}async function oPn(t){try{let{stdout:e}=await uN("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:t,encoding:"utf8",timeout:5e3}),l=e.trim();if(!l||l==="HEAD")return"origin";let{stdout:n}=await uN("git",["config",`branch.${l}.remote`],{cwd:t,encoding:"utf8",timeout:5e3});return n.trim()||"origin"}catch{return"origin"}}async function iPn(t){let e=await oPn(t);try{let{stdout:l}=await uN("git",["symbolic-ref",`refs/remotes/${e}/HEAD`],{cwd:t,encoding:"utf8",timeout:5e3}),n=l.match(new RegExp(`refs/remotes/${e}/(.+)`));if(n)return n[1].trim()}catch{}try{return await uN("git",["rev-parse","--verify",`refs/remotes/${e}/main`],{cwd:t,encoding:"utf8",timeout:5e3}),"main"}catch{}try{return await uN("git",["rev-parse","--verify",`refs/remotes/${e}/master`],{cwd:t,encoding:"utf8",timeout:5e3}),"master"}catch{return"main"}}async function cPn(t,e){try{return await uN("git",["rev-parse","--verify",`refs/heads/${e}`],{cwd:t,encoding:"utf8",timeout:5e3}),!0}catch{return!1}}async function dPn(t,e){let n=["adjectives","animals"],I=[];for(let a of n)a.toLowerCase()==="adjectives"&&I.push(Nul),a.toLowerCase()==="animals"&&I.push(Wul);if(I.length===0)return`${e}/session${Date.now()}`;for(let a=0;a<5;a++){let s=`${e}/${gul({dictionaries:I,length:I.length,separator:"-"})}`;if(!await cPn(t,s))return s}return`${e}/session${Date.now()}`}async function uPn(t){return dPn(t,"copilot")}async function tlt(t){try{let[e,l,n,r]=await Promise.all([Rul(t),sCe(t),iPn(t),uPn(t)]);if(!l)throw new Error("Could not determine GitHub repository from git remotes");return{repository:`${l.owner}/${l.name}`,baseBranch:n,headBranch:e,asyncBranch:r}}catch(e){throw new Error(`Failed to get repository info: ${e instanceof Error?e.message:String(e)}`)}}async function Vul(t,e){try{await uN("git",["add","--all"],{cwd:t,encoding:"utf8",timeout:1e4,maxBuffer:10*1024*1024});let{stdout:l}=await uN("git",["commit","-m",e],{cwd:t,encoding:"utf8",timeout:1e4,maxBuffer:10*1024*1024}),n,r=l.match(/\[[\w/-]+ ([a-f0-9]+)\]/);if(!r||!r[1]){let{stdout:I}=await uN("git",["rev-parse","--short","HEAD"],{cwd:t,encoding:"utf8",timeout:5e3});n=I.trim()}else n=r[1];return{commitHash:n,commitMessage:e}}catch(l){let n=l instanceof Error?l.message:String(l);throw n.includes("pre-commit")?new Error(`Pre-commit hook prevented the commit: ${n}`):n.includes("commit-msg")?new Error(`Commit-msg hook rejected the commit: ${n}`):n.includes("nothing to commit")||n.includes("no changes added")?new Error(`No changes to commit (possibly filtered by hooks): ${n}`):new Error(`Failed to commit changes: ${n}`)}}async function wul(t,e=process.cwd()){try{await uN("git",["checkout",t],{cwd:e,encoding:"utf8",timeout:5e3,maxBuffer:10*1024*1024})}catch(l){let n=l instanceof Error?l.message:String(l);throw new Error(`Failed to switch to branch '${t}': ${n}`)}}async function Qul(t){let{cwd:e,asyncBranch:l}=t;try{await uN("git",["checkout","-b",l],{cwd:e,encoding:"utf8",timeout:1e4,maxBuffer:10*1024*1024}),await uN("git",["push","-u","origin",l],{cwd:e,encoding:"utf8",timeout:3e4,maxBuffer:10*1024*1024})}catch(n){let r=n instanceof Error?n.message:String(n);throw r.includes("branch")&&r.includes("already exists")?new Error(`Branch '${l}' already exists: ${r}`):r.includes("Could not read from remote repository")?new Error(`Failed to push branch - repository access issue: ${r}`):r.includes("Permission denied")||r.includes("403")?new Error(`Failed to push branch - permission denied: ${r}`):r.includes("remote rejected")?new Error(`Remote rejected the git push: ${r}`):new Error(`Failed to create and push branch '${l}': ${r}`)}}c();var n7=class extends Error{constructor(l,n,r){super(n);this.status=l;this.message=n;this.responseBody=r;this.name="HttpApiError"}};async function pbe(t){let e=await jW(t);if(!e)throw new Error("Failed to get authentication token");return e}async function mPn(t){let e=t.statusText||`HTTP ${t.status}`,l;try{l=await t.json(),typeof l=="object"&&l&&"message"in l&&(e=l.message)}catch{try{let n=await t.text();n&&(l=n)}catch{}}return{message:e,body:l}}async function NT(t,e,l){let{message:n,body:r}=await mPn(t),I;switch(t.status){case 400:I=`Bad request: ${n}`;break;case 401:I=`Unauthorized: ${n}`;break;case 402:I=e==="job"?"No remaining quota for premium requests":`Payment required: ${n}`;break;case 403:e==="job"||e==="agent"?I=`Coding Agent not enabled: ${n}`:I=`Forbidden: ${n}`;break;case 404:e==="job"&&l?.jobId?I=`Job not found: ${l.jobId}`:e==="session"&&l?.sessionId?I=`Session not found: ${l.sessionId}`:e==="repository"&&l?.repository?I=`Repository not found: ${l.repository}`:e==="pr"&&l?.prNumber?I=`Pull request not found: #${l.prNumber}`:I=`Not found: ${n}`;break;case 409:e==="pr"||e==="job"?I="PR already exists for these branches":I=`Conflict: ${n}`;break;case 422:e==="job"||e==="pr"?I="Branch protection or other rule prevents operation":I=`Unprocessable entity: ${n}`;break;case 500:I=`Internal server error: ${n}`;break;case 502:I=`Bad gateway: ${n}`;break;case 503:I=`Service unavailable: ${n}`;break;default:I=e?`Failed to ${e.replace(/_/g," ")}: ${n}`:n}throw new n7(t.status,I,r)}async function vL(t,e,l,n,r="API"){let I=await pbe(e),a=Oce(),s={Authorization:`Bearer ${I}`,Accept:"application/json","User-Agent":`copilot-cli/${a}`};return n?.headers&&Object.assign(s,n.headers),lC(t,{...n,headers:s},l,r)}async function Ful(t,e,l){let{owner:n,repo:r}=l7(t),I=ww(e),a=gO(I),s=new URL(`/repos/${n}/${r}`,a),o=await vL(s,e,l,{method:"GET",headers:{Accept:"application/vnd.github.v3+json"}},"GitHub Repository API");return o.ok||await NT(o,"repository",{repository:t}),!0}async function Cul(t,e){return!0}c();async function vul(t,e,l,n,r,I){let{owner:a,repo:s}=l7(t),{problemStatement:o}=cal(e,n),d=await pbe(r),u=ww(r),b=await c0(u,d),p=new URL(`/agents/swe/v1/jobs/${a}/${s}`,b),Z=await vL(p,r,I,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({problem_statement:o,pull_request:{head_ref:l,body_suffix:"Created from Copilot CLI via the copilot delegate command."},event_type:"cli_delegate_command"})},"Copilot Job API");Z.ok||await NT(Z,"job",{repository:t});let N=await Z.json();return{jobId:N.job_id,sessionId:N.session_id,actor:{id:N.actor.id,login:N.actor.login},createdAt:new Date(N.created_at),updatedAt:new Date(N.updated_at)}}async function ful(t){let{repository:e,jobId:l,authInfo:n,logger:r}=t,{owner:I,repo:a}=l7(e),s=await pbe(n),o=ww(n),d=await c0(o,s),u=new URL(`/agents/swe/v1/jobs/${I}/${a}/${l}`,d),b=await vL(u,n,r,{method:"GET"},"Copilot Job Status API");b.ok||await NT(b,"job",{jobId:l});let p=await b.json(),h;return p.pull_request?.number&&(h=`${o}/${e}/pull/${p.pull_request.number}`),{jobId:p.job_id,sessionId:p.session_id,problemStatement:p.problem_statement,status:p.status,result:p.result,actor:{id:p.actor.id,login:p.actor.login},createdAt:new Date(p.created_at),updatedAt:new Date(p.updated_at),pullRequest:p.pull_request?{id:p.pull_request.id,number:p.pull_request.number,url:h}:void 0,workflowRun:p.workflow_run?{id:p.workflow_run.id}:void 0,error:p.error?{message:p.error.message,responseStatusCode:p.error.response_status_code,service:p.error.service}:void 0}}async function llt(t){let{sessionId:e,authInfo:l,logger:n,integrationId:r}=t,I=await pbe(l),a=ww(l),s=await c0(a,I),o=new URL(`/agents/sessions/${e}`,s),d=await vL(o,l,n,{method:"GET",headers:{"Copilot-Integration-Id":r}},"Copilot Session API");d.ok||await NT(d,"session",{sessionId:e});let u=await d.json(),b=u.state;return{sessionId:u.id,state:b,createdAt:u.created_at?new Date(u.created_at):new Date,updatedAt:u.last_updated_at?new Date(u.last_updated_at):new Date,resourceGlobalId:u.resource_global_id}}async function hCe(t){let{repository:e,prNumber:l,authInfo:n,logger:r,includeFiles:I=!1,maxFiles:a=100}=t,{owner:s,repo:o}=l7(e),d=ww(n),u=gO(d),b=new URL(`/repos/${s}/${o}/pulls/${l}`,u),p=await vL(b,n,r,{method:"GET",headers:{Accept:"application/vnd.github.v3+json"}},"GitHub PR API");p.ok||await NT(p,"pr",{prNumber:l.toString()});let h=await p.json(),Z={title:h.title,draft:h.draft,createdAt:new Date(h.created_at),changedFiles:h.changed_files,totalAdditions:h.additions,totalDeletions:h.deletions};if(I){let N=new URL(`/repos/${s}/${o}/pulls/${l}/files`,u);N.searchParams.set("per_page",Math.min(a,100).toString()),N.searchParams.set("page","1");let y=await vL(N,n,r,{method:"GET",headers:{Accept:"application/vnd.github.v3+json"}},"GitHub PR Files API");if(y.ok){let Y=await y.json();Z.files=Y.slice(0,a).map(w=>({filename:w.filename,status:w.status,additions:w.additions,deletions:w.deletions}))}}return Z}var ACe=class{state=null;onStateChangeCallback=null;onSessionCompleteCallback=null;timeoutId=null;pollingIntervalId=null;initialAuthInfo;authInfo;logger;integrationId;constructor(e,l,n){this.initialAuthInfo=e,this.logger=l,this.integrationId=n}startDelegation(e,l,n=""){if(!this.initialAuthInfo)throw new Error("Not authenticated. Please login first.");this.authInfo=this.initialAuthInfo,this.logger.startGroup("Remote Delegation Started"),this.logger.info(`Prompt: "${e.substring(0,100)}${e.length>100?"...":""}"`),this.logger.info(`CLI Session ID: ${l}`),n&&this.logger.info(`Problem Context: "${n.substring(0,100)}${n.length>100?"...":""}"`),this.logger.endGroup(),this.state={stage:"uncommitted_changes_check",prompt:e,problemContext:n,cliSessionId:l,isLoading:!0},this.notifyStateChange(),this.checkUncommittedChanges()}advanceStage(){if(!this.state)return;let e=this.state.stage;switch(this.state.stage){case"uncommitted_changes_check":this.logger.info(`--- Stage transition: ${e} \u2192 Confirm ---`),this.state={...this.state,stage:"confirm",isLoading:!0},this.notifyStateChange(),this.loadDelegationConfirmationData();break;case"confirm":this.logger.info(`--- Stage transition: ${e} \u2192 Processing ---`),this.state={...this.state,stage:"processing",processingStartTime:new Date},this.notifyStateChange(),this.executeDelegationOperations();break;case"processing":this.logger.info(`--- Stage transition: ${e} \u2192 Tracking ---`),this.state={...this.state,stage:"tracking"},this.notifyStateChange(),this.startJobTracking();break;case"tracking":this.logger.info(`--- Stage transition: ${e} \u2192 Complete ---`),this.completeDelegationOperation();break}}cancelDelegation(){let e=this.state?.stage;this.logger.info(`Remote delegation cancelled${e?` (was in stage: ${e})`:""}`),this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.clearPollingInterval(),this.state=null,this.notifyStateChange()}setOnStateChangeCallback(e){this.onStateChangeCallback=e,this.notifyStateChange()}onSessionComplete(e){this.onSessionCompleteCallback=e}getCurrentState(){return this.state}isActive(){return this.state!==null}async checkUncommittedChanges(){if(!this.state)return;let e=Date.now();this.logger.info("STAGE 1: UncommittedChangesCheck - Starting validation checks");try{let l=await If(process.cwd());if(!l.found)throw new Error("Not a git repository");let n=await tlt(process.cwd());this.logger.info(`Repository: ${n.repository}`),this.logger.info(`Base branch: ${n.baseBranch}, Head branch: ${n.headBranch}`),this.logger.info(`Async branch: ${n.asyncBranch}`),this.logger.info("Running parallel validation checks (detached HEAD, repo access, Copilot enabled)...");let[r,I,a]=await Promise.allSettled([Yul(process.cwd()),Ful(n.repository,this.authInfo,this.logger),Cul(n.repository,this.authInfo)]),s=[];if(r.status==="fulfilled"&&r.value===!0?s.push("Repository is in detached HEAD state. Please checkout a branch before pushing."):r.status==="rejected"&&s.push(`Failed to check HEAD state: ${r.reason}`),I.status==="fulfilled"&&I.value===!1?s.push(`Repository not found or you don't have access: ${n.repository}`):I.status==="rejected"&&s.push(I.reason?.message||"Failed to check repository access"),a.status==="rejected"&&s.push(a.reason?.message||"Failed to check Copilot status"),s.length>0){let b=s.length===1?s[0]:`Multiple errors:
|
|
2416
2416
|
\u2022 ${s.join(`
|
|
2417
|
-
\u2022 `)}`;throw new Error(b)}let o=await yul(process.cwd());o.hasChanges?this.logger.info(`Uncommitted changes detected: ${o.staged} staged, ${o.unstaged} unstaged, ${o.untracked} untracked`):this.logger.info("No uncommitted changes detected");let d=o.hasChanges?await Eul():void 0;d&&this.logger.info(`Generated checkpoint commit message: "${d}"`),this.state={...this.state,isLoading:!1,isGitRepository:l.found,hasUncommittedChanges:o.hasChanges,fileCount:o.hasChanges?{staged:o.staged,unstaged:o.unstaged,untracked:o.untracked}:void 0,commitMessage:d,repository:n.repository,baseBranch:n.baseBranch,headBranch:n.headBranch,asyncBranch:n.asyncBranch},this.notifyStateChange();let u=Date.now()-e;this.logger.info(`STAGE 1: UncommittedChangesCheck completed in ${u}ms`),o.hasChanges||(this.logger.info("Auto-advancing to ConfirmPush stage (no uncommitted changes)"),this.state={...this.state,stage:"confirm_push",isLoading:!1,isGitRepository:l.found,hasUncommittedChanges:!1},this.notifyStateChange(),await this.loadPushConfirmationData())}catch(l){this.setError(l,"Failed during uncommitted changes check")}}async loadPushConfirmationData(){if(!this.state)return;let e=Date.now();this.logger.info("STAGE 2: ConfirmPush - Loading confirmation data");try{if(this.state.repository)this.logger.info("Repository info already available from previous stage"),this.state={...this.state,isLoading:!1};else{this.logger.info("Repository info not found, fetching...");let n=await tlt(process.cwd());this.state={...this.state,isLoading:!1,repository:n.repository,baseBranch:n.baseBranch,headBranch:n.headBranch,asyncBranch:n.asyncBranch},this.logger.info(`Loaded repository info: ${n.repository}`)}this.notifyStateChange();let l=Date.now()-e;this.logger.info(`STAGE 2: ConfirmPush completed in ${l}ms - Waiting for user confirmation`)}catch(l){this.setError(l,"Failed to load push confirmation data")}}async executePushOperations(){if(!this.state)return;let e=Date.now();this.logger.info("STAGE 3: PushProcessing - Executing push operations");try{let l=this.buildOperationsList();this.state={...this.state,operations:l},this.notifyStateChange(),this.logger.info(`Operations to execute: ${l.map(n=>n.id).join(" \u2192 ")}`);for(let n of l){if(!this.state)break;let r=Date.now();this.logger.info(`Operation [${n.id}] - Starting...`),this.updateOperationStatus(n.id,"running");try{switch(n.id){case"commit":{let a=await Vul(process.cwd(),this.state.commitMessage);this.state={...this.state,commitHash:a.commitHash},this.logger.info(`Operation [${n.id}] - Commit created: ${a.commitHash}`);break}case"create-branch":{this.logger.info(`Operation [${n.id}] - Creating branch: ${this.state.asyncBranch}`),await Qul({cwd:process.cwd(),repository:this.state.repository,headBranch:this.state.headBranch,baseBranch:this.state.baseBranch,asyncBranch:this.state.asyncBranch}),this.logger.info(`Operation [${n.id}] - Branch created and pushed: ${this.state.asyncBranch}`),await wul(this.state.headBranch),this.logger.info(`Operation [${n.id}] - Switched back to: ${this.state.headBranch}`);break}case"start-job":{this.logger.info(`Operation [${n.id}] - Creating job for repository: ${this.state.repository}`);let a=await vul(this.state.repository,this.state.prompt,this.state.asyncBranch,this.state.problemContext||"",this.authInfo,this.logger);if(!a.jobId||!a.sessionId)throw new Error(`Job creation returned incomplete data: jobId=${a.jobId}, sessionId=${a.sessionId}`);this.state={...this.state,jobId:a.jobId,sessionId:a.sessionId,jobCreatedBy:a.actor.login,jobCreatedAt:a.createdAt},this.logger.info(`Operation [${n.id}] - Job created: ID=${a.jobId}, Session=${a.sessionId}, CreatedBy=${a.actor.login}`);break}case"check-job":{if(!this.state.jobId)throw new Error("No job ID available to check status");let a=1e3,s=9e4,o=Date.now(),d=!1,u=0;for(this.logger.info(`Operation [${n.id}] - Polling for PR details (max ${s}ms)...`);!d&&Date.now()-o<s;){u++;let b=await ful({repository:this.state.repository,jobId:this.state.jobId,authInfo:this.authInfo,logger:this.logger});this.state={...this.state,jobStatus:b.status,jobResult:b.result,prNumber:b.pullRequest?.number,prUrl:b.pullRequest?.url},b.pullRequest?.number?(this.logger.info(`Operation [${n.id}] - PR details received: #${b.pullRequest.number} (after ${u} polls, ${Date.now()-o}ms)`),d=!0):await new Promise(p=>setTimeout(p,a))}if(!d)throw new CO(`Timed out waiting for pull request information after ${s}ms`,"check-job",this.state.prUrl);break}case"wait-for-session":{if(!this.state.sessionId)throw new Error("No session ID available to check status");let a=1e3,s=9e4,o=Date.now(),d=!1,u=!1,b=!1,p=0;for(this.logger.info(`Operation [${n.id}] - Waiting for session to start (max ${s}ms)...`);!d&&Date.now()-o<s;){p++;let h=await llt({sessionId:this.state.sessionId,authInfo:this.authInfo,logger:this.logger,integrationId:this.integrationId});if(h.resourceGlobalId&&!this.state.jobUrl){let Z=ww(this.authInfo);this.state={...this.state,jobUrl:`${Z}/copilot/tasks/pull/${h.resourceGlobalId}?session_id=${this.state.sessionId}`},b=!0,this.logger.info(`Operation [${n.id}] - Job URL constructed: ${this.state.jobUrl}`)}if(this.state.prNumber&&!u){let Z=await hCe({repository:this.state.repository,prNumber:this.state.prNumber,authInfo:this.authInfo,logger:this.logger,includeFiles:!1});this.state={...this.state,prTitle:Z.title,prDraft:Z.draft,prCreatedAt:Z.createdAt},u=!0,this.logger.info(`Operation [${n.id}] - PR details fetched: "${Z.title}"`)}h.state==="in_progress"?(this.logger.info(`Operation [${n.id}] - Session transitioned to in_progress (after ${p} polls, ${Date.now()-o}ms)`),d=!0):h.state==="completed"||h.state==="failed"||h.state==="cancelled"||h.state==="timed_out"?(this.logger.info(`Operation [${n.id}] - Session ended with state: ${h.state} (after ${p} polls, ${Date.now()-o}ms)`),d=!0):(h.state==="waiting_for_user"||h.state==="idle")&&(this.logger.info(`Operation [${n.id}] - Session in intermediate state: ${h.state} (after ${p} polls, ${Date.now()-o}ms)`),d=!0),(!d||!u||!b)&&await new Promise(Z=>setTimeout(Z,a))}if(!d||!u||!b){let h=[];throw d||h.push("session transition"),u||h.push("PR details"),b||h.push("job URL"),new CO(`Timed out after ${s}ms waiting for: ${h.join(", ")}`,"wait-for-session",this.state.prUrl)}break}}this.updateOperationStatus(n.id,"done");let I=Date.now()-r;this.logger.info(`Operation [${n.id}] - Completed in ${I}ms`)}catch(I){this.updateOperationStatus(n.id,"error",I.message);let a=Date.now()-r;this.logger.error(`Operation [${n.id}] - Failed after ${a}ms: ${I.message}`),await new Promise(s=>setTimeout(s,3e3)),this.setError(I,`Operation '${n.id}' failed`);return}}if(this.allOperationsComplete()){let n=Date.now()-e;this.logger.info(`STAGE 3: PushProcessing completed in ${n}ms - All operations successful`),setTimeout(()=>this.advanceStage(),2e3)}}catch(l){this.setError(l,"Failed to execute push operations")}}async startJobTracking(){if(!this.state||!this.state.sessionId){this.logger.error("Cannot start job tracking: missing state or sessionId"),this.cancelPush();return}this.logger.info("STAGE 4: PushTracking - Starting job tracking"),this.logger.info(`Tracking session: ${this.state.sessionId}`),this.state.prNumber&&this.logger.info(`Tracking PR: #${this.state.prNumber}`);let e=1e3,l=null,n=async()=>{if(!this.state||!this.state.sessionId){this.clearPollingInterval();return}try{let r=await llt({sessionId:this.state.sessionId,authInfo:this.authInfo,logger:this.logger,integrationId:this.integrationId}),I=this.state.sessionState;if(this.state={...this.state,sessionState:r.state},I!==r.state&&this.logger.info(`Session state changed: ${I||"unknown"} \u2192 ${r.state}`),!this.state.jobUrl&&r.resourceGlobalId){let s=ww(this.authInfo);this.state.jobUrl=`${s}/copilot/tasks/pull/${r.resourceGlobalId}?session_id=${this.state.sessionId}`,this.logger.info(`Constructed job URL from polling: ${this.state.jobUrl}`)}if(this.state.prNumber)try{let s=await hCe({repository:this.state.repository,prNumber:this.state.prNumber,authInfo:this.authInfo,logger:this.logger,includeFiles:!1}),o=s.changedFiles!==this.state.prChangedFiles||s.totalAdditions!==this.state.prTotalAdditions||s.totalDeletions!==this.state.prTotalDeletions;if(this.state={...this.state,prTitle:s.title,prDraft:s.draft,prCreatedAt:s.createdAt,prChangedFiles:s.changedFiles,prTotalAdditions:s.totalAdditions,prTotalDeletions:s.totalDeletions},o||!this.state.prFiles){let d=await hCe({repository:this.state.repository,prNumber:this.state.prNumber,authInfo:this.authInfo,logger:this.logger,includeFiles:!0,maxFiles:10});this.state={...this.state,prFiles:d.files},this.logger.info(`PR files updated: ${s.changedFiles} files${s.changedFiles>10?" (showing first 10)":""}, +${s.totalAdditions} -${s.totalDeletions}`)}}catch(s){this.logError("Failed to fetch PR details",s,"warning")}if(this.notifyStateChange(),r.state==="completed"||r.state==="failed"||r.state==="cancelled"||r.state==="timed_out"){this.logger.info(`STAGE 4: PushTracking - Session ended with terminal state: ${r.state}`),this.clearPollingInterval(),setTimeout(()=>this.completePushOperation(),3e3);return}let a=1e3;if(r.state==="waiting_for_user"||r.state==="idle"){l===null&&(l=Date.now());let s=Date.now()-l,o=300*1e3,d=Math.floor(s/o);a=Math.min(5e3+d*5e3,3e4)}else l=null;if(a!==e){let s=e;e=a,this.clearPollingInterval(),this.pollingIntervalId=setInterval(()=>void n(),e),this.logger.info(`Polling interval adjusted: ${s}ms \u2192 ${e}ms (state: ${r.state})`)}}catch(r){this.clearPollingInterval(),this.setError(r,"Error polling session status")}};this.pollingIntervalId=setInterval(()=>void n(),e),n()}completePushOperation(){this.clearPollingInterval(),this.logger.info("STAGE 5: Complete - Push operation completed"),this.state&&(this.logger.startGroup("Push Operation Summary"),this.state.jobId&&this.logger.info(`Job ID: ${this.state.jobId}`),this.state.sessionId&&this.logger.info(`Session ID: ${this.state.sessionId}`),this.state.prNumber&&this.logger.info(`PR #${this.state.prNumber}: ${this.state.prUrl||"N/A"}`),this.state.commitHash&&this.logger.info(`Commit: ${this.state.commitHash}`),this.state.asyncBranch&&this.logger.info(`Branch: ${this.state.asyncBranch}`),this.state.sessionState&&this.logger.info(`Final session state: ${this.state.sessionState}`),this.logger.endGroup()),this.timeoutId&&clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.timeoutId=null,this.logger.info("Remote push workflow finished - Cleaning up"),this.onSessionCompleteCallback?this.onSessionCompleteCallback():(this.state=null,this.notifyStateChange())},3e3)}buildOperationsList(){if(!this.state)return[];let e=[];return this.state.hasUncommittedChanges&&e.push({id:"commit",status:"pending"}),e.push({id:"create-branch",status:"pending"},{id:"start-job",status:"pending"},{id:"check-job",status:"pending"},{id:"wait-for-session",status:"pending"}),e}updateOperationStatus(e,l,n){if(!this.state||!this.state.operations)return;let r=this.state.operations.map(I=>I.id===e?{...I,status:l,...n?{error:n}:{}}:I);this.state={...this.state,operations:r},this.notifyStateChange()}allOperationsComplete(){return!this.state||!this.state.operations?!0:this.state.operations.every(e=>e.status==="done"||e.status==="error")}setError(e,l){this.state&&(this.logError(l||"Operation failed",e,"error"),this.state={...this.state,error:e,isLoading:!1},this.notifyStateChange())}notifyStateChange(){this.onStateChangeCallback?.(this.state)}clearPollingInterval(){this.pollingIntervalId&&(clearInterval(this.pollingIntervalId),this.pollingIntervalId=null)}logError(e,l,n="error"){if(l instanceof n7){let r=l.responseBody?` | Response: ${JSON.stringify(l.responseBody)}`:"",I=`${e} - API error - Status: ${l.status} | Message: ${l.message}${r}`;n==="error"?this.logger.error(I):this.logger.warning(I)}else{let r=`${e}: ${l instanceof Error?l.message:String(l)}`;n==="error"?this.logger.error(r):this.logger.warning(r)}}};c();var r7=class{turnStartTimes=new Map;turnModelCallTimes=new Map;turnToolExecutionTimes=new Map;turnToolCallCounts=new Map;startTurn(e,l){this.turnStartTimes.set(e,l),this.turnModelCallTimes.set(e,{}),this.turnToolExecutionTimes.set(e,0),this.turnToolCallCounts.set(e,0)}recordModelCall(e,l){let n=this.turnModelCallTimes.get(e)||{};n.duration=l,this.turnModelCallTimes.set(e,n)}recordToolExecution(e,l){let n=this.turnToolExecutionTimes.get(e)||0;this.turnToolExecutionTimes.set(e,n+l);let r=this.turnToolCallCounts.get(e)||0;this.turnToolCallCounts.set(e,r+1)}finishTurn(e,l){let n=this.turnStartTimes.get(e);if(n===void 0)return this.cleanup(e),null;let r=l-n,I=this.turnModelCallTimes.get(e)||{},a=this.turnToolExecutionTimes.get(e)||0,s=this.turnToolCallCounts.get(e)||0,o=I.duration||0,d={totalDurationMs:r,llmDurationMs:o,toolExecutionMs:a,toolCallCount:s,totalDurationSeconds:(r/1e3).toFixed(2),llmDurationSeconds:(o/1e3).toFixed(2),toolExecutionSeconds:(a/1e3).toFixed(2)};return this.cleanup(e),d}cleanup(e){this.turnStartTimes.delete(e),this.turnModelCallTimes.delete(e),this.turnToolExecutionTimes.delete(e),this.turnToolCallCounts.delete(e)}static formatTimingBreakdown(e){return`LLM: ${e.llmDurationSeconds}s | Tools: ${e.toolExecutionSeconds}s (${e.toolCallCount} calls) | Total: ${e.totalDurationSeconds}s`}};c();var bPn="You are not licensed to use Copilot.",GPn="You are not authorized to use this Copilot feature, it requires an enterprise or organization policy to be enabled.",pPn="The provided personal access token (PAT) does not have Copilot Requests permission. Please generate a new Fine-Grained Access Token with Copilot Requests permission (not a Classic token), or log in using /login";function nlt(t){return t.includes("not licensed to use Copilot")?{kind:"not-licensed",message:bPn}:t.includes("not authorized to use this Copilot feature")?{kind:"not-authorized",message:GPn}:t.includes("Personal Access Token does not have Copilot Requests")?{kind:"not-authorized",message:pPn}:null}c();import{promises as hPn}from"fs";import rlt from"path";function APn(t){let e=[],l=/(?<![a-zA-Z0-9])(@[^\s@]+)/g,n;for(;(n=l.exec(t))!==null;)e.push({displayText:n[1],startIndex:n.index,endIndex:n.index+n[0].length});return e}async function ZPn(t){try{let e=await hPn.stat(t);return e.isDirectory()?"directory":e.isFile()?nse(rlt.basename(t))?"image":"file":null}catch{return null}}async function gPn(t,e=new Map,l=process.cwd()){let n=APn(t),r=[];for(let I of n){let a=e.get(I.startIndex);if(a?.startIndex===I.startIndex)r.push(a);else{let s=I.displayText.slice(1).replace(/[.,;:!?]+$/,""),o=rlt.isAbsolute(s)?s:rlt.resolve(l,s),d=await ZPn(o);if(d===null)continue;r.push({displayText:I.displayText,fullPath:o,type:d,startIndex:I.startIndex})}}return r}async function Hul(t,e=new Map,l=process.cwd(),n){let r=await gPn(t,e,l);return n.debug(`Detected mentions: ${r.map(I=>`${I.displayText} (${I.type})`).join(", ")}`),r.map(I=>({type:I.type==="image"?"file":I.type,path:I.fullPath,displayName:I.displayText,mentionIndex:I.startIndex}))}c();var ZCe=nt(qt(),1);c();import{EventEmitter as olt}from"node:events";var Ilt=class extends olt{get columns(){return 100}frames=[];_lastFrame;write=e=>{this.frames.push(e),this._lastFrame=e};lastFrame=()=>this._lastFrame},alt=class extends olt{frames=[];_lastFrame;write=e=>{this.frames.push(e),this._lastFrame=e};lastFrame=()=>this._lastFrame},slt=class extends olt{isTTY=!0;data=null;constructor(e={}){super(),this.isTTY=e.isTTY??!0}write=e=>{this.data=e,this.emit("readable"),this.emit("data",e)};setEncoding(){}setRawMode(){}resume(){}pause(){}ref(){}unref(){}read=()=>{let{data:e}=this;return this.data=null,e}},NPn=[],Xul=t=>{let e=new Ilt,l=new alt,n=new slt,r=iee(t,{stdout:e,stderr:l,stdin:n,debug:!0,exitOnCtrlC:!1,patchConsole:!1});return NPn.push(r),{rerender:r.rerender,unmount:r.unmount,cleanup:r.cleanup,stdout:e,stderr:l,stdin:n,frames:e.frames,lastFrame:e.lastFrame}};function kul(t,e=!1){let l=ZCe.default.createElement(yQe,{logger:new Hc,children:ZCe.default.createElement(VQe,{mode:"non-interactive",children:ZCe.default.createElement(Vme,{entry:t,expand:e})})}),{lastFrame:n}=Xul(l),r=n();return r?r.trim():""}var Lul=1,ilt=!1;function EPn(t){ilt=t}var zw=!1,gCe=[],Oh=null,WT=!1;async function Jul(){if(zw||gCe.length===0)return;zw=!0;let{integrationId:t,messageContent:e,permissionService:l,authInfo:n,resolve:r,reject:I,completePendingToolCall:a,setQuotaSnapshots:s,setContextWindowMetrics:o,setStreamingResponseSize:d,session:u,logger:b,pathManager:p,cliModel:h,enableStreaming:Z,trajectoryOutputFile:N,mcpHost:y,showLlmTiming:Y,timingTracker:w,noCustomInstructions:H,setAvailableTools:J,customAgentPrompt:S,modelList:T,disableParallelToolsExecution:U}=gCe.shift();try{let j=await YPn(t,e,l,n,a,s,o,d,u,b,p,h,Z,N,y,Y,w,H,J,S,T,U);r(j)}catch(j){j&&typeof j=="object"&&"name"in j&&j.name==="AbortError"||j&&typeof j=="object"&&"message"in j&&typeof j.message=="string"&&j.message.includes("Operation was cancelled")?r("Operation cancelled"):I(j)}finally{zw=!1,gCe.length>0&&setTimeout(()=>void Jul(),100)}}var RPn=UAt(c0);async function YPn(t,e,l,n,r,I,a,s,o,d,u,b,p,h,Z,N,y,Y,w,H,J,S){Oh=new AbortController,yPn(0,Oh.signal),s(0);try{let T=await Lr.load()||{},U=await jW(n),j=T.copilot_url;!j&&U&&n.type!=="hmac"&&(j=await RPn(n.host,U)),es.env.GITHUB_COPILOT_CLI_MODE="true";let O={problemStatement:e,logger:d,saveTrajectoryOutput:h||void 0,apiCopilotIntegrationId:t,apiCopilotHmacKey:n.type==="hmac"?n.hmac:void 0,apiCopilotUrl:j,apiCopilotToken:U,serviceInstanceId:o.sessionId,mcpHost:Z,saveEventLogs:es.env.COPILOT_EVENTS_LOG_DIRECTORY},z=aL()&&es.env.COPILOT_AGENT_MODEL?es.env.COPILOT_AGENT_MODEL:`sweagent-capi:${b}`,se={...O,pathManager:u,serviceAgentModel:z,requestPermission:l.request,onToolPartialOutput:(ue,We)=>{o.addEvent({type:"tool.execution_partial_result",ephemeral:!0,data:{toolCallId:ue,partialOutput:We}})},showEvents:!0,showSessionLog:!1,useSessionLogOnly:!1,abortSignal:Oh.signal,executeToolsInParallel:!S};try{let ue=await cFe.createFromOptions(se);w&&w(ue.getAvailableTools());let We=await If(es.cwd());We.found&&!Y&&await tTe(We.gitRoot,!0,es.cwd());let ee=ue.getAgentKind(),M=ue.getModel(),be=Vje()[ee]?.[M]??Yje(),ae=ue.getToolConfig?.call(ue)??{},Re=be.supports||{},Ge=await gTe(We.found?We.gitRoot:"",Oce(),es.cwd(),{},Re,ae,ue.getAvailableTools(),void 0,Y),ve=new uFe(o,s,ilt,d),Ae=await o.getChatContextMessages(),Ee=Ae.findLastIndex(dl=>dl.role==="user"),Ie=Ae[Ee];typeof Ie.content=="string"?Ie={...Ie,content:Dye({customAgentPrompt:H,problemStatement:Ie.content,capabilities:Re})}:Ie={...Ie,content:Ie.content.map(dl=>dl.type==="text"?{...dl,text:Dye({customAgentPrompt:H,problemStatement:dl.text,capabilities:Re})}:dl)};let Me=new PS(Ie,d),Je=new PK(d),$t=ue.getCompletionWithTools(Ge,Ae.map((dl,Ke)=>Ke===Ee?Ie:dl),{stream:p,failIfInitialInputsTooLong:!1,processors:{preRequest:[Me,new Kye,Je],onRequestError:[Me],onStreamingChunk:[ve]},executeToolsInParallel:!S,abortSignal:Oh.signal});for await(let dl of $t){if(Oh?.signal.aborted){let Ke=new Error("Operation was cancelled");throw Ke.name="AbortError",Ke}await fBt(dl,{onImageProcessingEvent:Ke=>{},onImageRemovalEvent:Ke=>{},onMessage:Ke=>{if(B9(Ke)){let Lt=ve.endCurrentStreamingMessage(),st=typeof Ke.message.content=="string"?Ke.message.content:null,Bt=jce(Ke)?Ke.message.tool_calls.map(zt=>({toolCallId:zt.id,name:zt.function.name,arguments:W9(zt.function.arguments)})):[];o.addEvent({type:"assistant.message",data:{messageId:Lt??Bu(),content:st||"",toolRequests:Bt}});for(let zt of Bt)o.addEvent({type:"tool.execution_start",data:{toolCallId:zt.toolCallId,toolName:zt.name,arguments:zt.arguments}})}else(Ke.message.role==="system"||Ke.message.role==="developer")&&o.addEvent({type:"system.message",data:{role:Ke.message.role,content:typeof Ke.message.content=="string"?Ke.message.content:JSON.stringify(Ke.message.content),name:"name"in Ke.message?Ke.message.name:void 0}})},onResponse:Ke=>{},onModelCallFailure:Ke=>{if(nlt(Ke.modelCall?.error||""))return;let st=Ke.modelCall?.error||"Unknown error occurred";Ke.modelCall.request_id&&(st+=` (Request ID: ${Ke.modelCall.request_id})`),o.addEvent({type:"session.error",data:{errorType:"model_call",message:`Model call failed: ${st}`}})},onModelCallSuccess:async Ke=>{I(Ke.quotaSnapshots||{});let Lt=Ke.responseChunk.model||await o.getSelectedModel(),st=Ke.modelCallDurationMs||0,Bt=Ke.responseUsage,zt=Lt?k8(Lt,J):1;o.addEvent({type:"assistant.usage",ephemeral:!0,data:{model:Lt||"unknown",tokensUsed:Bt?.total_tokens||0,cost:zt,duration:st,initiator:Ke.modelCall?.initiator}}),N&&y&&y.recordModelCall(Ke.turn,Ke.modelCallDurationMs)},onToolExecution:Ke=>{r({callId:Ke.toolCallId,resultType:Ke.toolResult.resultType,log:(Ke.toolResult.resultType==="failure"?Ke.toolResult.error:void 0)||Ke.toolResult.sessionLog||Ke.toolResult.textResultForLlm}),N&&y&&y.recordToolExecution(Ke.turn,Ke.durationMs)},onTruncationEvent:Ke=>{a(Lt=>{let st=Math.max(Lt.totalTokens,Ke.truncateResult.preTruncationTokensInMessages);return{...Lt,totalTokens:st,postTruncationTokens:Ke.truncateResult.postTruncationTokensInMessages,tokenLimit:Ke.truncateResult.tokenLimit,messagesRemoved:Ke.truncateResult.messagesRemovedDuringTruncation,tokensRemoved:Ke.truncateResult.tokensRemovedDuringTruncation}})},onTurnEvent:Ke=>{if(Ke.kind==="turn_started")N&&y&&y.startTurn(Ke.turn,Ke.timestampMs);else if(Ke.kind==="turn_ended"&&N&&y){let Lt=y.finishTurn(Ke.turn,Ke.timestampMs);if(Lt){let st=r7.formatTimingBreakdown(Lt);ilt?es.stdout.write(`
|
|
2417
|
+
\u2022 `)}`;throw new Error(b)}let o=await yul(process.cwd());o.hasChanges?this.logger.info(`Uncommitted changes detected: ${o.staged} staged, ${o.unstaged} unstaged, ${o.untracked} untracked`):this.logger.info("No uncommitted changes detected");let d=o.hasChanges?await Eul():void 0;d&&this.logger.info(`Generated checkpoint commit message: "${d}"`),this.state={...this.state,isLoading:!1,isGitRepository:l.found,hasUncommittedChanges:o.hasChanges,fileCount:o.hasChanges?{staged:o.staged,unstaged:o.unstaged,untracked:o.untracked}:void 0,commitMessage:d,repository:n.repository,baseBranch:n.baseBranch,headBranch:n.headBranch,asyncBranch:n.asyncBranch},this.notifyStateChange();let u=Date.now()-e;this.logger.info(`STAGE 1: UncommittedChangesCheck completed in ${u}ms`),o.hasChanges||(this.logger.info("Auto-advancing to Confirm stage (no uncommitted changes)"),this.state={...this.state,stage:"confirm",isLoading:!1,isGitRepository:l.found,hasUncommittedChanges:!1},this.notifyStateChange(),await this.loadDelegationConfirmationData())}catch(l){this.setError(l,"Failed during uncommitted changes check")}}async loadDelegationConfirmationData(){if(!this.state)return;let e=Date.now();this.logger.info("STAGE 2: Confirm - Loading delegation confirmation data");try{if(this.state.repository)this.logger.info("Repository info already available from previous stage"),this.state={...this.state,isLoading:!1};else{this.logger.info("Repository info not found, fetching...");let n=await tlt(process.cwd());this.state={...this.state,isLoading:!1,repository:n.repository,baseBranch:n.baseBranch,headBranch:n.headBranch,asyncBranch:n.asyncBranch},this.logger.info(`Loaded repository info: ${n.repository}`)}this.notifyStateChange();let l=Date.now()-e;this.logger.info(`STAGE 2: Confirm completed in ${l}ms - Waiting for user confirmation`)}catch(l){this.setError(l,"Failed to load delegation confirmation data")}}async executeDelegationOperations(){if(!this.state)return;let e=Date.now();this.logger.info("STAGE 3: Processing - Executing delegation operations");try{let l=this.buildOperationsList();this.state={...this.state,operations:l},this.notifyStateChange(),this.logger.info(`Operations to execute: ${l.map(n=>n.id).join(" \u2192 ")}`);for(let n of l){if(!this.state)break;let r=Date.now();this.logger.info(`Operation [${n.id}] - Starting...`),this.updateOperationStatus(n.id,"running");try{switch(n.id){case"commit":{let a=await Vul(process.cwd(),this.state.commitMessage);this.state={...this.state,commitHash:a.commitHash},this.logger.info(`Operation [${n.id}] - Commit created: ${a.commitHash}`);break}case"create-branch":{this.logger.info(`Operation [${n.id}] - Creating branch: ${this.state.asyncBranch}`),await Qul({cwd:process.cwd(),repository:this.state.repository,headBranch:this.state.headBranch,baseBranch:this.state.baseBranch,asyncBranch:this.state.asyncBranch}),this.logger.info(`Operation [${n.id}] - Branch created and pushed: ${this.state.asyncBranch}`),await wul(this.state.headBranch),this.logger.info(`Operation [${n.id}] - Switched back to: ${this.state.headBranch}`);break}case"start-job":{this.logger.info(`Operation [${n.id}] - Creating job for repository: ${this.state.repository}`);let a=await vul(this.state.repository,this.state.prompt,this.state.asyncBranch,this.state.problemContext||"",this.authInfo,this.logger);if(!a.jobId||!a.sessionId)throw new Error(`Job creation returned incomplete data: jobId=${a.jobId}, sessionId=${a.sessionId}`);this.state={...this.state,jobId:a.jobId,sessionId:a.sessionId,jobCreatedBy:a.actor.login,jobCreatedAt:a.createdAt},this.logger.info(`Operation [${n.id}] - Job created: ID=${a.jobId}, Session=${a.sessionId}, CreatedBy=${a.actor.login}`);break}case"check-job":{if(!this.state.jobId)throw new Error("No job ID available to check status");let a=1e3,s=9e4,o=Date.now(),d=!1,u=0;for(this.logger.info(`Operation [${n.id}] - Polling for PR details (max ${s}ms)...`);!d&&Date.now()-o<s;){u++;let b=await ful({repository:this.state.repository,jobId:this.state.jobId,authInfo:this.authInfo,logger:this.logger});this.state={...this.state,jobStatus:b.status,jobResult:b.result,prNumber:b.pullRequest?.number,prUrl:b.pullRequest?.url},b.pullRequest?.number?(this.logger.info(`Operation [${n.id}] - PR details received: #${b.pullRequest.number} (after ${u} polls, ${Date.now()-o}ms)`),d=!0):await new Promise(p=>setTimeout(p,a))}if(!d)throw new CO(`Timed out waiting for pull request information after ${s}ms`,"check-job",this.state.prUrl);break}case"wait-for-session":{if(!this.state.sessionId)throw new Error("No session ID available to check status");let a=1e3,s=9e4,o=Date.now(),d=!1,u=!1,b=!1,p=0;for(this.logger.info(`Operation [${n.id}] - Waiting for session to start (max ${s}ms)...`);!d&&Date.now()-o<s;){p++;let h=await llt({sessionId:this.state.sessionId,authInfo:this.authInfo,logger:this.logger,integrationId:this.integrationId});if(h.resourceGlobalId&&!this.state.jobUrl){let Z=ww(this.authInfo);this.state={...this.state,jobUrl:`${Z}/copilot/tasks/pull/${h.resourceGlobalId}?session_id=${this.state.sessionId}`},b=!0,this.logger.info(`Operation [${n.id}] - Job URL constructed: ${this.state.jobUrl}`)}if(this.state.prNumber&&!u){let Z=await hCe({repository:this.state.repository,prNumber:this.state.prNumber,authInfo:this.authInfo,logger:this.logger,includeFiles:!1});this.state={...this.state,prTitle:Z.title,prDraft:Z.draft,prCreatedAt:Z.createdAt},u=!0,this.logger.info(`Operation [${n.id}] - PR details fetched: "${Z.title}"`)}h.state==="in_progress"?(this.logger.info(`Operation [${n.id}] - Session transitioned to in_progress (after ${p} polls, ${Date.now()-o}ms)`),d=!0):h.state==="completed"||h.state==="failed"||h.state==="cancelled"||h.state==="timed_out"?(this.logger.info(`Operation [${n.id}] - Session ended with state: ${h.state} (after ${p} polls, ${Date.now()-o}ms)`),d=!0):(h.state==="waiting_for_user"||h.state==="idle")&&(this.logger.info(`Operation [${n.id}] - Session in intermediate state: ${h.state} (after ${p} polls, ${Date.now()-o}ms)`),d=!0),(!d||!u||!b)&&await new Promise(Z=>setTimeout(Z,a))}if(!d||!u||!b){let h=[];throw d||h.push("session transition"),u||h.push("PR details"),b||h.push("job URL"),new CO(`Timed out after ${s}ms waiting for: ${h.join(", ")}`,"wait-for-session",this.state.prUrl)}break}}this.updateOperationStatus(n.id,"done");let I=Date.now()-r;this.logger.info(`Operation [${n.id}] - Completed in ${I}ms`)}catch(I){this.updateOperationStatus(n.id,"error",I.message);let a=Date.now()-r;this.logger.error(`Operation [${n.id}] - Failed after ${a}ms: ${I.message}`),await new Promise(s=>setTimeout(s,3e3)),this.setError(I,`Operation '${n.id}' failed`);return}}if(this.allOperationsComplete()){let n=Date.now()-e;this.logger.info(`STAGE 3: Processing completed in ${n}ms - All operations successful`),setTimeout(()=>this.advanceStage(),2e3)}}catch(l){this.setError(l,"Failed to execute delegation operations")}}async startJobTracking(){if(!this.state||!this.state.sessionId){this.logger.error("Cannot start job tracking: missing state or sessionId"),this.cancelDelegation();return}this.logger.info("STAGE 4: Tracking - Starting job tracking"),this.logger.info(`Tracking session: ${this.state.sessionId}`),this.state.prNumber&&this.logger.info(`Tracking PR: #${this.state.prNumber}`);let e=1e3,l=null,n=async()=>{if(!this.state||!this.state.sessionId){this.clearPollingInterval();return}try{let r=await llt({sessionId:this.state.sessionId,authInfo:this.authInfo,logger:this.logger,integrationId:this.integrationId}),I=this.state.sessionState;if(this.state={...this.state,sessionState:r.state},I!==r.state&&this.logger.info(`Session state changed: ${I||"unknown"} \u2192 ${r.state}`),!this.state.jobUrl&&r.resourceGlobalId){let s=ww(this.authInfo);this.state.jobUrl=`${s}/copilot/tasks/pull/${r.resourceGlobalId}?session_id=${this.state.sessionId}`,this.logger.info(`Constructed job URL from polling: ${this.state.jobUrl}`)}if(this.state.prNumber)try{let s=await hCe({repository:this.state.repository,prNumber:this.state.prNumber,authInfo:this.authInfo,logger:this.logger,includeFiles:!1}),o=s.changedFiles!==this.state.prChangedFiles||s.totalAdditions!==this.state.prTotalAdditions||s.totalDeletions!==this.state.prTotalDeletions;if(this.state={...this.state,prTitle:s.title,prDraft:s.draft,prCreatedAt:s.createdAt,prChangedFiles:s.changedFiles,prTotalAdditions:s.totalAdditions,prTotalDeletions:s.totalDeletions},o||!this.state.prFiles){let d=await hCe({repository:this.state.repository,prNumber:this.state.prNumber,authInfo:this.authInfo,logger:this.logger,includeFiles:!0,maxFiles:10});this.state={...this.state,prFiles:d.files},this.logger.info(`PR files updated: ${s.changedFiles} files${s.changedFiles>10?" (showing first 10)":""}, +${s.totalAdditions} -${s.totalDeletions}`)}}catch(s){this.logError("Failed to fetch PR details",s,"warning")}if(this.notifyStateChange(),r.state==="completed"||r.state==="failed"||r.state==="cancelled"||r.state==="timed_out"){this.logger.info(`STAGE 4: Tracking - Session ended with terminal state: ${r.state}`),this.clearPollingInterval(),setTimeout(()=>this.completeDelegationOperation(),3e3);return}let a=1e3;if(r.state==="waiting_for_user"||r.state==="idle"){l===null&&(l=Date.now());let s=Date.now()-l,o=300*1e3,d=Math.floor(s/o);a=Math.min(5e3+d*5e3,3e4)}else l=null;if(a!==e){let s=e;e=a,this.clearPollingInterval(),this.pollingIntervalId=setInterval(()=>void n(),e),this.logger.info(`Polling interval adjusted: ${s}ms \u2192 ${e}ms (state: ${r.state})`)}}catch(r){this.clearPollingInterval(),this.setError(r,"Error polling session status")}};this.pollingIntervalId=setInterval(()=>void n(),e),n()}completeDelegationOperation(){this.clearPollingInterval(),this.logger.info("STAGE 5: Complete - Delegation operation completed"),this.state&&(this.logger.startGroup("Delegation Operation Summary"),this.state.jobId&&this.logger.info(`Job ID: ${this.state.jobId}`),this.state.sessionId&&this.logger.info(`Session ID: ${this.state.sessionId}`),this.state.prNumber&&this.logger.info(`PR #${this.state.prNumber}: ${this.state.prUrl||"N/A"}`),this.state.commitHash&&this.logger.info(`Commit: ${this.state.commitHash}`),this.state.asyncBranch&&this.logger.info(`Branch: ${this.state.asyncBranch}`),this.state.sessionState&&this.logger.info(`Final session state: ${this.state.sessionState}`),this.logger.endGroup()),this.timeoutId&&clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.timeoutId=null,this.logger.info("Remote delegation workflow finished - Cleaning up"),this.onSessionCompleteCallback?this.onSessionCompleteCallback():(this.state=null,this.notifyStateChange())},3e3)}buildOperationsList(){if(!this.state)return[];let e=[];return this.state.hasUncommittedChanges&&e.push({id:"commit",status:"pending"}),e.push({id:"create-branch",status:"pending"},{id:"start-job",status:"pending"},{id:"check-job",status:"pending"},{id:"wait-for-session",status:"pending"}),e}updateOperationStatus(e,l,n){if(!this.state||!this.state.operations)return;let r=this.state.operations.map(I=>I.id===e?{...I,status:l,...n?{error:n}:{}}:I);this.state={...this.state,operations:r},this.notifyStateChange()}allOperationsComplete(){return!this.state||!this.state.operations?!0:this.state.operations.every(e=>e.status==="done"||e.status==="error")}setError(e,l){this.state&&(this.logError(l||"Operation failed",e,"error"),this.state={...this.state,error:e,isLoading:!1},this.notifyStateChange())}notifyStateChange(){this.onStateChangeCallback?.(this.state)}clearPollingInterval(){this.pollingIntervalId&&(clearInterval(this.pollingIntervalId),this.pollingIntervalId=null)}logError(e,l,n="error"){if(l instanceof n7){let r=l.responseBody?` | Response: ${JSON.stringify(l.responseBody)}`:"",I=`${e} - API error - Status: ${l.status} | Message: ${l.message}${r}`;n==="error"?this.logger.error(I):this.logger.warning(I)}else{let r=`${e}: ${l instanceof Error?l.message:String(l)}`;n==="error"?this.logger.error(r):this.logger.warning(r)}}};c();var r7=class{turnStartTimes=new Map;turnModelCallTimes=new Map;turnToolExecutionTimes=new Map;turnToolCallCounts=new Map;startTurn(e,l){this.turnStartTimes.set(e,l),this.turnModelCallTimes.set(e,{}),this.turnToolExecutionTimes.set(e,0),this.turnToolCallCounts.set(e,0)}recordModelCall(e,l){let n=this.turnModelCallTimes.get(e)||{};n.duration=l,this.turnModelCallTimes.set(e,n)}recordToolExecution(e,l){let n=this.turnToolExecutionTimes.get(e)||0;this.turnToolExecutionTimes.set(e,n+l);let r=this.turnToolCallCounts.get(e)||0;this.turnToolCallCounts.set(e,r+1)}finishTurn(e,l){let n=this.turnStartTimes.get(e);if(n===void 0)return this.cleanup(e),null;let r=l-n,I=this.turnModelCallTimes.get(e)||{},a=this.turnToolExecutionTimes.get(e)||0,s=this.turnToolCallCounts.get(e)||0,o=I.duration||0,d={totalDurationMs:r,llmDurationMs:o,toolExecutionMs:a,toolCallCount:s,totalDurationSeconds:(r/1e3).toFixed(2),llmDurationSeconds:(o/1e3).toFixed(2),toolExecutionSeconds:(a/1e3).toFixed(2)};return this.cleanup(e),d}cleanup(e){this.turnStartTimes.delete(e),this.turnModelCallTimes.delete(e),this.turnToolExecutionTimes.delete(e),this.turnToolCallCounts.delete(e)}static formatTimingBreakdown(e){return`LLM: ${e.llmDurationSeconds}s | Tools: ${e.toolExecutionSeconds}s (${e.toolCallCount} calls) | Total: ${e.totalDurationSeconds}s`}};c();var bPn="You are not licensed to use Copilot.",GPn="You are not authorized to use this Copilot feature, it requires an enterprise or organization policy to be enabled.",pPn="The provided personal access token (PAT) does not have Copilot Requests permission. Please generate a new Fine-Grained Access Token with Copilot Requests permission (not a Classic token), or log in using /login";function nlt(t){return t.includes("not licensed to use Copilot")?{kind:"not-licensed",message:bPn}:t.includes("not authorized to use this Copilot feature")?{kind:"not-authorized",message:GPn}:t.includes("Personal Access Token does not have Copilot Requests")?{kind:"not-authorized",message:pPn}:null}c();import{promises as hPn}from"fs";import rlt from"path";function APn(t){let e=[],l=/(?<![a-zA-Z0-9])(@[^\s@]+)/g,n;for(;(n=l.exec(t))!==null;)e.push({displayText:n[1],startIndex:n.index,endIndex:n.index+n[0].length});return e}async function ZPn(t){try{let e=await hPn.stat(t);return e.isDirectory()?"directory":e.isFile()?nse(rlt.basename(t))?"image":"file":null}catch{return null}}async function gPn(t,e=new Map,l=process.cwd()){let n=APn(t),r=[];for(let I of n){let a=e.get(I.startIndex);if(a?.startIndex===I.startIndex)r.push(a);else{let s=I.displayText.slice(1).replace(/[.,;:!?]+$/,""),o=rlt.isAbsolute(s)?s:rlt.resolve(l,s),d=await ZPn(o);if(d===null)continue;r.push({displayText:I.displayText,fullPath:o,type:d,startIndex:I.startIndex})}}return r}async function Hul(t,e=new Map,l=process.cwd(),n){let r=await gPn(t,e,l);return n.debug(`Detected mentions: ${r.map(I=>`${I.displayText} (${I.type})`).join(", ")}`),r.map(I=>({type:I.type==="image"?"file":I.type,path:I.fullPath,displayName:I.displayText,mentionIndex:I.startIndex}))}c();var ZCe=nt(qt(),1);c();import{EventEmitter as olt}from"node:events";var Ilt=class extends olt{get columns(){return 100}frames=[];_lastFrame;write=e=>{this.frames.push(e),this._lastFrame=e};lastFrame=()=>this._lastFrame},alt=class extends olt{frames=[];_lastFrame;write=e=>{this.frames.push(e),this._lastFrame=e};lastFrame=()=>this._lastFrame},slt=class extends olt{isTTY=!0;data=null;constructor(e={}){super(),this.isTTY=e.isTTY??!0}write=e=>{this.data=e,this.emit("readable"),this.emit("data",e)};setEncoding(){}setRawMode(){}resume(){}pause(){}ref(){}unref(){}read=()=>{let{data:e}=this;return this.data=null,e}},NPn=[],Xul=t=>{let e=new Ilt,l=new alt,n=new slt,r=iee(t,{stdout:e,stderr:l,stdin:n,debug:!0,exitOnCtrlC:!1,patchConsole:!1});return NPn.push(r),{rerender:r.rerender,unmount:r.unmount,cleanup:r.cleanup,stdout:e,stderr:l,stdin:n,frames:e.frames,lastFrame:e.lastFrame}};function kul(t,e=!1){let l=ZCe.default.createElement(yQe,{logger:new Hc,children:ZCe.default.createElement(VQe,{mode:"non-interactive",children:ZCe.default.createElement(Vme,{entry:t,expand:e})})}),{lastFrame:n}=Xul(l),r=n();return r?r.trim():""}var Lul=1,ilt=!1;function EPn(t){ilt=t}var zw=!1,gCe=[],Oh=null,WT=!1;async function Jul(){if(zw||gCe.length===0)return;zw=!0;let{integrationId:t,messageContent:e,permissionService:l,authInfo:n,resolve:r,reject:I,completePendingToolCall:a,setQuotaSnapshots:s,setContextWindowMetrics:o,setStreamingResponseSize:d,session:u,logger:b,pathManager:p,cliModel:h,enableStreaming:Z,trajectoryOutputFile:N,mcpHost:y,showLlmTiming:Y,timingTracker:w,noCustomInstructions:H,setAvailableTools:J,customAgentPrompt:S,modelList:T,disableParallelToolsExecution:U}=gCe.shift();try{let j=await YPn(t,e,l,n,a,s,o,d,u,b,p,h,Z,N,y,Y,w,H,J,S,T,U);r(j)}catch(j){j&&typeof j=="object"&&"name"in j&&j.name==="AbortError"||j&&typeof j=="object"&&"message"in j&&typeof j.message=="string"&&j.message.includes("Operation was cancelled")?r("Operation cancelled"):I(j)}finally{zw=!1,gCe.length>0&&setTimeout(()=>void Jul(),100)}}var RPn=UAt(c0);async function YPn(t,e,l,n,r,I,a,s,o,d,u,b,p,h,Z,N,y,Y,w,H,J,S){Oh=new AbortController,yPn(0,Oh.signal),s(0);try{let T=await Lr.load()||{},U=await jW(n),j=T.copilot_url;!j&&U&&n.type!=="hmac"&&(j=await RPn(n.host,U)),es.env.GITHUB_COPILOT_CLI_MODE="true";let O={problemStatement:e,logger:d,saveTrajectoryOutput:h||void 0,apiCopilotIntegrationId:t,apiCopilotHmacKey:n.type==="hmac"?n.hmac:void 0,apiCopilotUrl:j,apiCopilotToken:U,serviceInstanceId:o.sessionId,mcpHost:Z,saveEventLogs:es.env.COPILOT_EVENTS_LOG_DIRECTORY},z=aL()&&es.env.COPILOT_AGENT_MODEL?es.env.COPILOT_AGENT_MODEL:`sweagent-capi:${b}`,se={...O,pathManager:u,serviceAgentModel:z,requestPermission:l.request,onToolPartialOutput:(ue,We)=>{o.addEvent({type:"tool.execution_partial_result",ephemeral:!0,data:{toolCallId:ue,partialOutput:We}})},showEvents:!0,showSessionLog:!1,useSessionLogOnly:!1,abortSignal:Oh.signal,executeToolsInParallel:!S};try{let ue=await cFe.createFromOptions(se);w&&w(ue.getAvailableTools());let We=await If(es.cwd());We.found&&!Y&&await tTe(We.gitRoot,!0,es.cwd());let ee=ue.getAgentKind(),M=ue.getModel(),be=Vje()[ee]?.[M]??Yje(),ae=ue.getToolConfig?.call(ue)??{},Re=be.supports||{},Ge=await gTe(We.found?We.gitRoot:"",Oce(),es.cwd(),{},Re,ae,ue.getAvailableTools(),void 0,Y),ve=new uFe(o,s,ilt,d),Ae=await o.getChatContextMessages(),Ee=Ae.findLastIndex(dl=>dl.role==="user"),Ie=Ae[Ee];typeof Ie.content=="string"?Ie={...Ie,content:Dye({customAgentPrompt:H,problemStatement:Ie.content,capabilities:Re})}:Ie={...Ie,content:Ie.content.map(dl=>dl.type==="text"?{...dl,text:Dye({customAgentPrompt:H,problemStatement:dl.text,capabilities:Re})}:dl)};let Me=new PS(Ie,d),Je=new PK(d),$t=ue.getCompletionWithTools(Ge,Ae.map((dl,Ke)=>Ke===Ee?Ie:dl),{stream:p,failIfInitialInputsTooLong:!1,processors:{preRequest:[Me,new Kye,Je],onRequestError:[Me],onStreamingChunk:[ve]},executeToolsInParallel:!S,abortSignal:Oh.signal});for await(let dl of $t){if(Oh?.signal.aborted){let Ke=new Error("Operation was cancelled");throw Ke.name="AbortError",Ke}await fBt(dl,{onImageProcessingEvent:Ke=>{},onImageRemovalEvent:Ke=>{},onMessage:Ke=>{if(B9(Ke)){let Lt=ve.endCurrentStreamingMessage(),st=typeof Ke.message.content=="string"?Ke.message.content:null,Bt=jce(Ke)?Ke.message.tool_calls.map(zt=>({toolCallId:zt.id,name:zt.function.name,arguments:W9(zt.function.arguments)})):[];o.addEvent({type:"assistant.message",data:{messageId:Lt??Bu(),content:st||"",toolRequests:Bt}});for(let zt of Bt)o.addEvent({type:"tool.execution_start",data:{toolCallId:zt.toolCallId,toolName:zt.name,arguments:zt.arguments}})}else(Ke.message.role==="system"||Ke.message.role==="developer")&&o.addEvent({type:"system.message",data:{role:Ke.message.role,content:typeof Ke.message.content=="string"?Ke.message.content:JSON.stringify(Ke.message.content),name:"name"in Ke.message?Ke.message.name:void 0}})},onResponse:Ke=>{},onModelCallFailure:Ke=>{if(nlt(Ke.modelCall?.error||""))return;let st=Ke.modelCall?.error||"Unknown error occurred";Ke.modelCall.request_id&&(st+=` (Request ID: ${Ke.modelCall.request_id})`),o.addEvent({type:"session.error",data:{errorType:"model_call",message:`Model call failed: ${st}`}})},onModelCallSuccess:async Ke=>{I(Ke.quotaSnapshots||{});let Lt=Ke.responseChunk.model||await o.getSelectedModel(),st=Ke.modelCallDurationMs||0,Bt=Ke.responseUsage,zt=Lt?k8(Lt,J):1;o.addEvent({type:"assistant.usage",ephemeral:!0,data:{model:Lt||"unknown",tokensUsed:Bt?.total_tokens||0,cost:zt,duration:st,initiator:Ke.modelCall?.initiator}}),N&&y&&y.recordModelCall(Ke.turn,Ke.modelCallDurationMs)},onToolExecution:Ke=>{r({callId:Ke.toolCallId,resultType:Ke.toolResult.resultType,log:(Ke.toolResult.resultType==="failure"?Ke.toolResult.error:void 0)||Ke.toolResult.sessionLog||Ke.toolResult.textResultForLlm}),N&&y&&y.recordToolExecution(Ke.turn,Ke.durationMs)},onTruncationEvent:Ke=>{a(Lt=>{let st=Math.max(Lt.totalTokens,Ke.truncateResult.preTruncationTokensInMessages);return{...Lt,totalTokens:st,postTruncationTokens:Ke.truncateResult.postTruncationTokensInMessages,tokenLimit:Ke.truncateResult.tokenLimit,messagesRemoved:Ke.truncateResult.messagesRemovedDuringTruncation,tokensRemoved:Ke.truncateResult.tokensRemovedDuringTruncation}})},onTurnEvent:Ke=>{if(Ke.kind==="turn_started")N&&y&&y.startTurn(Ke.turn,Ke.timestampMs);else if(Ke.kind==="turn_ended"&&N&&y){let Lt=y.finishTurn(Ke.turn,Ke.timestampMs);if(Lt){let st=r7.formatTimingBreakdown(Lt);ilt?es.stdout.write(`
|
|
2418
2418
|
\u{1F552} ${st}
|
|
2419
2419
|
|
|
2420
2420
|
`):o.addEvent({type:"session.info",ephemeral:!0,data:{infoType:"timing",message:st}})}}}})}return await ue.shutdown(),"Command completed successfully"}catch(ue){let We=ue&&typeof ue=="object"&&"name"in ue&&ue.name==="AbortError",ee=ue&&typeof ue=="object"&&"message"in ue&&typeof ue.message=="string"&&ue.message.includes("Operation was cancelled");throw!We&&!ee&&(ue instanceof Error?d.debug(`Command threw error: ${ue.message}
|
|
@@ -2429,9 +2429,9 @@ ${ae.paths.map(Ie=>` - ${Ie}`).join(`
|
|
|
2429
2429
|
|
|
2430
2430
|
Allow access to these paths? (y/n): `;Ge.question(Ee,Ie=>{Ge.close();let Me=Ie.trim().toLowerCase();ve(Me==="y"||Me==="yes"?{kind:"approve"}:{kind:"reject"})})})}}),M=()=>{};a.addEvent({type:"user.message",data:{content:e,attachments:[]}}),await xul(t,e,ee,I,ae=>{a.addEvent({type:"tool.execution_complete",data:{toolCallId:ae.callId,success:ae.resultType==="success",result:ae.resultType==="success"?{content:ae.log}:void 0,error:ae.resultType!=="success"?{message:ae.log,code:ae.resultType}:void 0}})},()=>{},M,()=>{},a,o,J,es.cwd(),ue,d,u,S,N,H,y,ae=>{T=ae},Y,se.list,w);let be=GCe(j);es.stderr.write(`
|
|
2431
2431
|
`+be+`
|
|
2432
|
-
`),await s.saveSession(a),es.exit(0)}catch(se){o.error(`Error executing prompt: ${se}`),await s.saveSession(a),es.exit(1)}finally{if(z(),S)try{await S.stopServers()}catch(se){o.error(`Error stopping MCP servers: ${se}`)}}}var VPn=({featureFlags:t=vme,integrationId:e,authManager:l,sessionManager:n,initialSession:r,needsSessionPicker:I,allowAllTools:a,allowAllPaths:s,rules:o,showBanner:d,showHeader:u,trajectoryOutputFile:b,logger:p,additionalDirs:h,disabledMcpServers:Z,additionalMcpConfig:N,errorService:y,cliModel:Y,showLlmTiming:w,cliStreaming:H,disableParallelToolsExecution:J})=>{let S=(0,Rt.useMemo)(()=>p??new Hc,[p]),{theme:T,setThemePreference:U,themeInitialized:j}=_n(),{stdout:O}=PN(),z=y3(),se=qE(),[ue,We]=(0,Rt.useState)(0),[ee,M]=(0,Rt.useState)(I??!1),[be,ae]=(0,Rt.useState)(null),Re=(0,Rt.useCallback)(()=>{es.stdout.write(KG.cursorTo(0,0)+KG.eraseScreen),We(Yt=>Yt+1)},[We,O]),Ge=iul(),ve=w?new r7:void 0;(0,Rt.useEffect)(()=>{let Yt=null,wl=Ge.columns,Jr=Ge.rows,ei=(Ns,Ad)=>{let um=Ns,wu=Ad;if(um===wl&&wu!==Jr){Jr=wu;return}um!==wl&&(wl=um,Jr=wu,Yt&&clearTimeout(Yt),Yt=setTimeout(()=>{Re()},50))};return Ge.setOnResize(ei),()=>{Ge.setOnResize(null),Yt&&clearTimeout(Yt)}},[Re,O]);let[Ae,Ee]=(0,Rt.useState)(r);(0,Rt.useEffect)(()=>{y?.addErrorHandler(Yt=>{Ae.addEvent({type:"session.error",data:{errorType:"internal",message:String(Yt)}})})},[y,Ae]);let{timeline:Ie,setAvailableTools:Me,addEphemeralEntry:Je,clearTimeline:$t}=uul(Ae),dl=Gul(Ae),[Ke,Lt]=(0,Rt.useState)({}),[st,Bt]=(0,Rt.useState)(0),[zt,Jn]=(0,Rt.useState)(!1),[ul,Fe]=(0,Rt.useState)({totalTokens:0,postTruncationTokens:0,tokenLimit:0,truncationStrategy:"truncation",messagesRemoved:0,tokensRemoved:0}),[Qt,Vl]=(0,Rt.useState)(null),Pt=()=>{if(zt){Jn(!1),Vl(null),Re();return}Jn(!0),Re()},bn=()=>{if(zt||Qt!==null){Jn(!1),Vl(null),Re();return}let ei=Ie.filter(Ns=>Ns.type==="tool_call_completed"||Ns.type==="tool_call_requested").slice(-10).at(0)?.timestamp||new Date;Vl(ei),Re()},xn=Yt=>Yt.type!=="tool_call_completed"&&Yt.type!=="tool_call_requested"?!1:zt?!0:Qt!==null&&Yt.timestamp&&Yt.timestamp.getTime()>=Qt.getTime(),[jl,Kl]=(0,Rt.useState)(!1),[ar,uI]=(0,Rt.useState)({status:"Unknown"}),[vr,gs]=(0,Rt.useState)({});e=vr.copilot_integration_id||es.env.GITHUB_COPILOT_INTEGRATION_ID||"copilot-developer-cli";let ia=(0,Rt.useMemo)(()=>new ACe(ar.status==="LoggedIn"?ar.authInfo:null,S,e),[ar.authInfo,S,e]);(0,Rt.useEffect)(()=>{switch(ar.status){case"LoggedIn":S.info(oue(ar.authInfo));break;case"NotLoggedIn":S.info("Logged out");break;default:S.info("Login status unknown");break}},[ar]),(0,Rt.useEffect)(()=>(ia.setOnStateChangeCallback(ae),()=>{ia.setOnStateChangeCallback(null)}),[ia]);let[js,po]=(0,Rt.useState)(0),[tn,Gn]=(0,Rt.useState)(!1),[qn,Wr]=(0,Rt.useState)(!1),[eI,ie]=(0,Rt.useState)(!1),[lt,cl]=(0,Rt.useState)(!1),[fl,sn]=(0,Rt.useState)(!1),[or,Ln]=(0,Rt.useState)(!1),[hr,ir]=(0,Rt.useState)(!1),[Ci,_I]=(0,Rt.useState)(!1),[Co,jm]=(0,Rt.useState)(null),[Km,Ru]=(0,Rt.useState)("list"),[vi,RZ]=(0,Rt.useState)(void 0),[YZ,Xs]=(0,Rt.useState)(!1),[Di,zi]=(0,Rt.useState)(0),[ho,on]=(0,Rt.useState)(es.cwd()),[Yu]=(0,Rt.useState)(()=>s?new Gbe(es.cwd()):new bbe(es.cwd(),h||[])),[ks,qm]=(0,Rt.useState)([]),[_c,_h]=(0,Rt.useState)(null),[LG,Hb]=(0,Rt.useState)([]),[Vn,Le]=(0,Rt.useState)(null),[Gl,un]=(0,Rt.useState)(u===!1),[Ea,Io]=(0,Rt.useState)(u??!0),[Sa,Ks]=(0,Rt.useState)(null),[vo,dm]=(0,Rt.useState)(null),[fo,wr]=Iul(1),[JG,_d]=(0,Rt.useState)(!1),[ms,Xb]=(0,Rt.useState)(!1),{models:ts}=rul(S,Ae.sessionId,ar.authInfo,e),{customAgents:hd,selectCustomAgent:kb}=$dl(t.CUSTOM_AGENTS,S,e,ar.authInfo||null,W4(),ho);(0,Rt.useEffect)(()=>{NDt().then(jm).catch(()=>{})},[]);let oe=(0,Rt.useCallback)(Yt=>{let wl=GCe(dl);Ks(Yt?{type:"error",reason:Yt,usage:wl}:{type:"routine",usage:wl}),setTimeout(()=>{es.exit(0)},300)},[dl]);(0,Rt.useEffect)(()=>{(async()=>{let wl={};try{wl=await Lr.load()||{}}catch(Jr){S.error(`Failed to load configuration: ${Jr}`)}wl.banner=wl?.banner??"once",wl.render_markdown=wl?.render_markdown??!0,gs(wl),z&&wl.screen_reader===void 0&&Wr(!0)})()},[z]),(0,Rt.useEffect)(()=>{if(_c===null&&ks.length>0){vr.beep!==!1&&es.stdout.write(KG.beep);let Yt=ks[0];_h(Yt),qm(wl=>wl.slice(1))}},[_c,ks]),(0,Rt.useEffect)(()=>{if(Vn===null&&LG.length>0){vr.beep!==!1&&es.stdout.write(KG.beep);let Yt=LG[0];Le(Yt),Hb(wl=>wl.slice(1))}},[Vn,LG]);let de=(0,Rt.useRef)(!0),xe=(0,Rt.useRef)(yLe({requestToolPermissionFromUser:Yt=>new Promise(wl=>{qm(Jr=>[{request:Yt,resolve:Ns=>{if(Ns.kind==="approve-for-session"&&Ns.approval.kind!==Yt.kind)throw new Error(`Mismatched approval kind: expected ${Yt.kind}, got ${Ns.approval.kind}`);wl(Ns)}},...Jr])}),requestPathPermissionFromUser:Yt=>new Promise(wl=>{Hb(Jr=>[...Jr,{paths:Yt.paths,resolve:wl}])}),approveAllToolPermissionRequests:a,rules:o,pathManager:Yu})),{displayCwd:je,gitBranchInfo:dt,selectedModel:Ht,selectedModelDisplay:ml,setSelectedModel:ll,updateGitStatus:Al}=lul({cliModel:Y,session:Ae,currentWorkingDirectory:ho,customAgentName:hd.selected?.displayName,stdoutColumns:O.columns,models:ts});(0,Rt.useEffect)(()=>{(async()=>{if(!ts||ts.type!=="success"||!Ht)return;let wl=ts.list.find(Jr=>Jr.id===Ht);if(wl?.capabilities?.limits){let Jr=wl.capabilities.limits.max_prompt_tokens||wl.capabilities.limits.max_context_window_tokens||2e5;Fe(ei=>({...ei,tokenLimit:Jr}))}})()},[Ht,ts]),(0,Rt.useEffect)(()=>{(async()=>{if(!Ht||!ts)return;let wl=await Ae.getChatContextMessages(),Jr=await Ae.getSystemContextMessages();if(wl.length>0||Jr.length>0){let ei=nte(wl,Ht),Ns=nte(Jr,Ht),Ad=ei+Ns;Fe(um=>({...um,totalTokens:Ad,postTruncationTokens:Ad}))}})()},[Ht,ts,Ae]);let[Il,Ll]=(0,Rt.useState)(void 0),Sn=async()=>{try{let Yt=await P2.load()||{mcpServers:{}},wl=N?ube(Yt,N):Yt,Jr=new aW(S),ei=new rf(S,JSON.stringify(wl),Jr,Z||[]);await ei.startServers(),Ll(ei)}catch(Yt){Ae.addEvent({type:"session.error",data:{errorType:"mcp",message:`Failed to start MCP Servers: ${Yt instanceof Error?Yt.message:String(Yt)}`}}),Ll(void 0)}};(0,Rt.useEffect)(()=>{let Yt=Il?Object.keys(Il.getConfig().mcpServers):[];if(Yt.length>0){let wl=`Configured MCP servers: ${Yt.join(", ")}`;Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:wl}})}return()=>{Il&&Il.stopServers().catch(wl=>{S.error(`Error shutting down MCP host on cleanup: ${wl instanceof Error?wl.message:String(wl)}`)})}},[Il]),(0,Rt.useEffect)(()=>{Sn()},[]),(0,Rt.useEffect)(()=>{if(!Il||!(Il instanceof rf))return;let Yt=async(Jr,ei)=>{try{Jr?await Il.configureGitHubAuth(Jr)&&Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:"Connected to GitHub MCP Server"}}):await Il.removeGitHubAuth()&&Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:"Disconnected from GitHub MCP Server"}})}catch(Ns){S.error(`Error configuring GitHub MCP Server: ${Ns}`)}};return l.onAuthChange(Yt),(async()=>{try{let Jr=await l.getCurrentAuthInfo();Jr&&await Yt(Jr)}catch(Jr){S.error(`Error applying existing auth to MCP host: ${Jr}`)}})(),()=>{l.removeAuthCallback(Yt)}},[Il]);let zr=dul(Yt=>{z2.updateCurrentCommand(Yt)}),[DI,Gi]=nul(),Pi=(0,Rt.useMemo)(()=>new ibe({cacheTimeout:5*6e4,includeDirsInIndex:!1,indexFileStats:!1,maxStatConcurrency:64,onIndexingStart:()=>Gi.startIndexing(),onIndexingComplete:(Yt,wl)=>Gi.completeIndexing(Yt,wl),logger:S}),[Gi]),[$o,gc]=wdl(zr,Pi,Yu);(0,Rt.useEffect)(()=>{let Yt=!1,wl=null,Jr=async()=>{await Al(),Yt||(wl=setTimeout(()=>void Jr(),15e3))};return Jr(),()=>{Yt=!0,wl&&clearTimeout(wl)}},[Al]);let VZ=(0,Rt.useCallback)(Yt=>{Ae.addEvent({type:"tool.execution_complete",data:{toolCallId:Yt.callId,success:Yt.resultType==="success",result:Yt.resultType==="success"?{content:Yt.log}:void 0,error:Yt.resultType!=="success"?{message:Yt.log,code:Yt.resultType}:void 0}});let wl=setTimeout(()=>{Al()},500);return()=>clearTimeout(wl)},[Ae,Al]);(0,Rt.useEffect)(()=>{z2.initialize()},[]),(0,Rt.useEffect)(()=>{(async()=>{try{let wl=await l.getCurrentAuthInfo();wl?(uI({status:"LoggedIn",authInfo:wl}),Ae.addEvent({type:"session.info",data:{infoType:"authentication",message:oue(wl)}})):uI({status:"NotLoggedIn"})}catch{uI({status:"NotLoggedIn"})}})()},[]),sul(vr,ar.authInfo,Je),(0,Rt.useEffect)(()=>{(async()=>{try{es.env.COPILOT_ALLOW_ALL==="true"||await fme.isFolderTrusted(ho)?po(1):(po(2),Gn(!0))}catch{es.env.COPILOT_ALLOW_ALL==="true"?po(1):(po(2),Gn(!0))}})()},[ho]),(0,Rt.useEffect)(()=>{dcl().then(Yt=>{dm(Yt)}).catch(Yt=>{S.error(`Error checking for updates: ${Yt}`)})},[]),(0,Rt.useEffect)(()=>()=>{de.current=!1},[]);let AN=(0,Rt.useMemo)(()=>rwe({customAgentsEnabled:t.CUSTOM_AGENTS,ccaPushEnabled:t.CCA_PUSH}),[t.CUSTOM_AGENTS,t.CCA_PUSH]),{slashCommands:Dh,handleSlashCommand:vp,matchingSlashCommands:fp}=aul({builtInSlashCommands:AN,logger:S,currentWorkingDirectory:ho,setCurrentWorkingDirectory:on,fileSearch:Pi,authManager:l,mcpHost:Il,loginStatus:ar,setLoginStatus:uI,addEntryToSession:Je,clearSessionHistory:async()=>{let Yt=await n.createSession({selectedModel:Y});Ee(Yt)},getSessionUsageOutput:()=>GCe(dl),pathManager:Yu,resetSessionToolApprovals:xe.current.resetSessionToolApprovals,clearTimeline:$t,clearHeader:()=>Io(!1),clearContextWindowMetrics:()=>Fe(Yt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:Yt.tokenLimit,truncationStrategy:Yt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setThemePreference:U,refreshStatic:Re,hasAvailableCustomAgents:hd.available.length>0,slashCommandResultActions:{exit:oe,showCustomAgentPickerDialog:()=>ie(!0),showFeedbackDialog:()=>Xs(!0),showLoginDialog:()=>cl(!0),showMCPDialog:(Yt,wl)=>{sn(!0),Yt&&Ru(Yt),wl&&RZ(wl)},showModelPickerDialog:()=>Ln(!0),showSessionDialog:()=>ir(!0),showUserSwitcherDialog:()=>_I(!0),startRemotePush:Yt=>{ia.startPush(Yt,Ae.sessionId)},setModel:Yt=>{if(!X8(Yt)){Ae.addEvent({type:"session.error",data:{errorType:"user.model_selection",message:`Model "${Yt}" is not supported. Please select a valid model.`}});return}F_(),Ae.addEvent({type:"session.model_change",data:{model:Yt}}),ll(Yt)}}}),{handleTabCompletion:xG,tabCyclingState:Hp}=oul(Dh,zr,{setSlashCommandPickerIndex:zi}),Dd=(0,Rt.useMemo)(()=>{let Yt=fp(zr.text);return Hp||zi(0),Yt},[fp,zr.text,Hp]),cY=(0,Rt.useMemo)(()=>{let Yt=zr.text,wl=Dd[Di];if(!wl)return{suggestion:void 0,isHint:!1};let Jr=Yt.trimEnd();return Jr===wl.name&&wl.args?{suggestion:Yt!==Jr?wl.args:` ${wl.args}`,isHint:!0}:{suggestion:(wl.name+(wl.args?" ":"")).substring(Yt.length),isHint:!1}},[zr.text,Di,Dd]),zh=(0,Rt.useCallback)(Yt=>{jl||zw||(async()=>{if(await z2.addCommand(Yt),Yt.startsWith("!")){let wu=Yt.substring(1),Xp=Bu();Ae.addEvent({type:"tool.user_requested",data:{toolCallId:Xp,toolName:lT,arguments:{command:wu,description:`Execute shell command: ${wu}`}}}),Oh=new AbortController;let lr="";try{zw=!0,Xb(!0);let hI=WPn(wu,{shell:!0,cwd:ho,env:es.env,stdio:"pipe",signal:Oh.signal}),zd=[],tI=!1,yl=jh=>{tI||(tI=jh.includes(13)),zd.push(jh);let Ba=Buffer.concat(zd).toString("utf-8");lr=tI?asl(Ba):Ba,Ae.addEvent({type:"tool.execution_partial_result",ephemeral:!0,data:{toolCallId:Xp,toolName:lT,partialOutput:lr}})};hI.stderr.on("data",yl),hI.stdout.on("data",yl),hI.stdin.end();let Zd=await new Promise((jh,Ba)=>{hI.on("error",Ba),hI.on("exit",(SG,NN)=>{NN?Ba(new Error(`Process was killed with signal: ${NN}`)):jh(SG)})});Ae.addEvent({type:"tool.execution_complete",data:{toolCallId:Xp,isUserRequested:!0,success:Zd===0,result:{content:lr}}})}catch(hI){Ae.addEvent({type:"tool.execution_complete",data:{toolCallId:Xp,isUserRequested:!0,success:!1,error:{message:`${lr?`${lr}
|
|
2432
|
+
`),await s.saveSession(a),es.exit(0)}catch(se){o.error(`Error executing prompt: ${se}`),await s.saveSession(a),es.exit(1)}finally{if(z(),S)try{await S.stopServers()}catch(se){o.error(`Error stopping MCP servers: ${se}`)}}}var VPn=({featureFlags:t=vme,integrationId:e,authManager:l,sessionManager:n,initialSession:r,needsSessionPicker:I,allowAllTools:a,allowAllPaths:s,rules:o,showBanner:d,showHeader:u,trajectoryOutputFile:b,logger:p,additionalDirs:h,disabledMcpServers:Z,additionalMcpConfig:N,errorService:y,cliModel:Y,showLlmTiming:w,cliStreaming:H,disableParallelToolsExecution:J})=>{let S=(0,Rt.useMemo)(()=>p??new Hc,[p]),{theme:T,setThemePreference:U,themeInitialized:j}=_n(),{stdout:O}=PN(),z=y3(),se=qE(),[ue,We]=(0,Rt.useState)(0),[ee,M]=(0,Rt.useState)(I??!1),[be,ae]=(0,Rt.useState)(null),Re=(0,Rt.useCallback)(()=>{es.stdout.write(KG.cursorTo(0,0)+KG.eraseScreen),We(Yt=>Yt+1)},[We,O]),Ge=iul(),ve=w?new r7:void 0;(0,Rt.useEffect)(()=>{let Yt=null,wl=Ge.columns,Jr=Ge.rows,ei=(Ns,Ad)=>{let um=Ns,wu=Ad;if(um===wl&&wu!==Jr){Jr=wu;return}um!==wl&&(wl=um,Jr=wu,Yt&&clearTimeout(Yt),Yt=setTimeout(()=>{Re()},50))};return Ge.setOnResize(ei),()=>{Ge.setOnResize(null),Yt&&clearTimeout(Yt)}},[Re,O]);let[Ae,Ee]=(0,Rt.useState)(r);(0,Rt.useEffect)(()=>{y?.addErrorHandler(Yt=>{Ae.addEvent({type:"session.error",data:{errorType:"internal",message:String(Yt)}})})},[y,Ae]);let{timeline:Ie,setAvailableTools:Me,addEphemeralEntry:Je,clearTimeline:$t}=uul(Ae),dl=Gul(Ae),[Ke,Lt]=(0,Rt.useState)({}),[st,Bt]=(0,Rt.useState)(0),[zt,Jn]=(0,Rt.useState)(!1),[ul,Fe]=(0,Rt.useState)({totalTokens:0,postTruncationTokens:0,tokenLimit:0,truncationStrategy:"truncation",messagesRemoved:0,tokensRemoved:0}),[Qt,Vl]=(0,Rt.useState)(null),Pt=()=>{if(zt){Jn(!1),Vl(null),Re();return}Jn(!0),Re()},bn=()=>{if(zt||Qt!==null){Jn(!1),Vl(null),Re();return}let ei=Ie.filter(Ns=>Ns.type==="tool_call_completed"||Ns.type==="tool_call_requested").slice(-10).at(0)?.timestamp||new Date;Vl(ei),Re()},xn=Yt=>Yt.type!=="tool_call_completed"&&Yt.type!=="tool_call_requested"?!1:zt?!0:Qt!==null&&Yt.timestamp&&Yt.timestamp.getTime()>=Qt.getTime(),[jl,Kl]=(0,Rt.useState)(!1),[ar,uI]=(0,Rt.useState)({status:"Unknown"}),[vr,gs]=(0,Rt.useState)({});e=vr.copilot_integration_id||es.env.GITHUB_COPILOT_INTEGRATION_ID||"copilot-developer-cli";let ia=(0,Rt.useMemo)(()=>new ACe(ar.status==="LoggedIn"?ar.authInfo:null,S,e),[ar.authInfo,S,e]);(0,Rt.useEffect)(()=>{switch(ar.status){case"LoggedIn":S.info(oue(ar.authInfo));break;case"NotLoggedIn":S.info("Logged out");break;default:S.info("Login status unknown");break}},[ar]),(0,Rt.useEffect)(()=>(ia.setOnStateChangeCallback(ae),()=>{ia.setOnStateChangeCallback(null)}),[ia]);let[js,po]=(0,Rt.useState)(0),[tn,Gn]=(0,Rt.useState)(!1),[qn,Wr]=(0,Rt.useState)(!1),[eI,ie]=(0,Rt.useState)(!1),[lt,cl]=(0,Rt.useState)(!1),[fl,sn]=(0,Rt.useState)(!1),[or,Ln]=(0,Rt.useState)(!1),[hr,ir]=(0,Rt.useState)(!1),[Ci,_I]=(0,Rt.useState)(!1),[Co,jm]=(0,Rt.useState)(null),[Km,Ru]=(0,Rt.useState)("list"),[vi,RZ]=(0,Rt.useState)(void 0),[YZ,Xs]=(0,Rt.useState)(!1),[Di,zi]=(0,Rt.useState)(0),[ho,on]=(0,Rt.useState)(es.cwd()),[Yu]=(0,Rt.useState)(()=>s?new Gbe(es.cwd()):new bbe(es.cwd(),h||[])),[ks,qm]=(0,Rt.useState)([]),[_c,_h]=(0,Rt.useState)(null),[LG,Hb]=(0,Rt.useState)([]),[Vn,Le]=(0,Rt.useState)(null),[Gl,un]=(0,Rt.useState)(u===!1),[Ea,Io]=(0,Rt.useState)(u??!0),[Sa,Ks]=(0,Rt.useState)(null),[vo,dm]=(0,Rt.useState)(null),[fo,wr]=Iul(1),[JG,_d]=(0,Rt.useState)(!1),[ms,Xb]=(0,Rt.useState)(!1),{models:ts}=rul(S,Ae.sessionId,ar.authInfo,e),{customAgents:hd,selectCustomAgent:kb}=$dl(t.CUSTOM_AGENTS,S,e,ar.authInfo||null,W4(),ho);(0,Rt.useEffect)(()=>{NDt().then(jm).catch(()=>{})},[]);let oe=(0,Rt.useCallback)(Yt=>{let wl=GCe(dl);Ks(Yt?{type:"error",reason:Yt,usage:wl}:{type:"routine",usage:wl}),setTimeout(()=>{es.exit(0)},300)},[dl]);(0,Rt.useEffect)(()=>{(async()=>{let wl={};try{wl=await Lr.load()||{}}catch(Jr){S.error(`Failed to load configuration: ${Jr}`)}wl.banner=wl?.banner??"once",wl.render_markdown=wl?.render_markdown??!0,gs(wl),z&&wl.screen_reader===void 0&&Wr(!0)})()},[z]),(0,Rt.useEffect)(()=>{if(_c===null&&ks.length>0){vr.beep!==!1&&es.stdout.write(KG.beep);let Yt=ks[0];_h(Yt),qm(wl=>wl.slice(1))}},[_c,ks]),(0,Rt.useEffect)(()=>{if(Vn===null&&LG.length>0){vr.beep!==!1&&es.stdout.write(KG.beep);let Yt=LG[0];Le(Yt),Hb(wl=>wl.slice(1))}},[Vn,LG]);let de=(0,Rt.useRef)(!0),xe=(0,Rt.useRef)(yLe({requestToolPermissionFromUser:Yt=>new Promise(wl=>{qm(Jr=>[{request:Yt,resolve:Ns=>{if(Ns.kind==="approve-for-session"&&Ns.approval.kind!==Yt.kind)throw new Error(`Mismatched approval kind: expected ${Yt.kind}, got ${Ns.approval.kind}`);wl(Ns)}},...Jr])}),requestPathPermissionFromUser:Yt=>new Promise(wl=>{Hb(Jr=>[...Jr,{paths:Yt.paths,resolve:wl}])}),approveAllToolPermissionRequests:a,rules:o,pathManager:Yu})),{displayCwd:je,gitBranchInfo:dt,selectedModel:Ht,selectedModelDisplay:ml,setSelectedModel:ll,updateGitStatus:Al}=lul({cliModel:Y,session:Ae,currentWorkingDirectory:ho,customAgentName:hd.selected?.displayName,stdoutColumns:O.columns,models:ts});(0,Rt.useEffect)(()=>{(async()=>{if(!ts||ts.type!=="success"||!Ht)return;let wl=ts.list.find(Jr=>Jr.id===Ht);if(wl?.capabilities?.limits){let Jr=wl.capabilities.limits.max_prompt_tokens||wl.capabilities.limits.max_context_window_tokens||2e5;Fe(ei=>({...ei,tokenLimit:Jr}))}})()},[Ht,ts]),(0,Rt.useEffect)(()=>{(async()=>{if(!Ht||!ts)return;let wl=await Ae.getChatContextMessages(),Jr=await Ae.getSystemContextMessages();if(wl.length>0||Jr.length>0){let ei=nte(wl,Ht),Ns=nte(Jr,Ht),Ad=ei+Ns;Fe(um=>({...um,totalTokens:Ad,postTruncationTokens:Ad}))}})()},[Ht,ts,Ae]);let[Il,Ll]=(0,Rt.useState)(void 0),Sn=async()=>{try{let Yt=await P2.load()||{mcpServers:{}},wl=N?ube(Yt,N):Yt,Jr=new aW(S),ei=new rf(S,JSON.stringify(wl),Jr,Z||[]);await ei.startServers(),Ll(ei)}catch(Yt){Ae.addEvent({type:"session.error",data:{errorType:"mcp",message:`Failed to start MCP Servers: ${Yt instanceof Error?Yt.message:String(Yt)}`}}),Ll(void 0)}};(0,Rt.useEffect)(()=>{let Yt=Il?Object.keys(Il.getConfig().mcpServers):[];if(Yt.length>0){let wl=`Configured MCP servers: ${Yt.join(", ")}`;Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:wl}})}return()=>{Il&&Il.stopServers().catch(wl=>{S.error(`Error shutting down MCP host on cleanup: ${wl instanceof Error?wl.message:String(wl)}`)})}},[Il]),(0,Rt.useEffect)(()=>{Sn()},[]),(0,Rt.useEffect)(()=>{if(!Il||!(Il instanceof rf))return;let Yt=async(Jr,ei)=>{try{Jr?await Il.configureGitHubAuth(Jr)&&Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:"Connected to GitHub MCP Server"}}):await Il.removeGitHubAuth()&&Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:"Disconnected from GitHub MCP Server"}})}catch(Ns){S.error(`Error configuring GitHub MCP Server: ${Ns}`)}};return l.onAuthChange(Yt),(async()=>{try{let Jr=await l.getCurrentAuthInfo();Jr&&await Yt(Jr)}catch(Jr){S.error(`Error applying existing auth to MCP host: ${Jr}`)}})(),()=>{l.removeAuthCallback(Yt)}},[Il]);let zr=dul(Yt=>{z2.updateCurrentCommand(Yt)}),[DI,Gi]=nul(),Pi=(0,Rt.useMemo)(()=>new ibe({cacheTimeout:5*6e4,includeDirsInIndex:!1,indexFileStats:!1,maxStatConcurrency:64,onIndexingStart:()=>Gi.startIndexing(),onIndexingComplete:(Yt,wl)=>Gi.completeIndexing(Yt,wl),logger:S}),[Gi]),[$o,gc]=wdl(zr,Pi,Yu);(0,Rt.useEffect)(()=>{let Yt=!1,wl=null,Jr=async()=>{await Al(),Yt||(wl=setTimeout(()=>void Jr(),15e3))};return Jr(),()=>{Yt=!0,wl&&clearTimeout(wl)}},[Al]);let VZ=(0,Rt.useCallback)(Yt=>{Ae.addEvent({type:"tool.execution_complete",data:{toolCallId:Yt.callId,success:Yt.resultType==="success",result:Yt.resultType==="success"?{content:Yt.log}:void 0,error:Yt.resultType!=="success"?{message:Yt.log,code:Yt.resultType}:void 0}});let wl=setTimeout(()=>{Al()},500);return()=>clearTimeout(wl)},[Ae,Al]);(0,Rt.useEffect)(()=>{z2.initialize()},[]),(0,Rt.useEffect)(()=>{(async()=>{try{let wl=await l.getCurrentAuthInfo();wl?(uI({status:"LoggedIn",authInfo:wl}),Ae.addEvent({type:"session.info",data:{infoType:"authentication",message:oue(wl)}})):uI({status:"NotLoggedIn"})}catch{uI({status:"NotLoggedIn"})}})()},[]),sul(vr,ar.authInfo,Je),(0,Rt.useEffect)(()=>{(async()=>{try{es.env.COPILOT_ALLOW_ALL==="true"||await fme.isFolderTrusted(ho)?po(1):(po(2),Gn(!0))}catch{es.env.COPILOT_ALLOW_ALL==="true"?po(1):(po(2),Gn(!0))}})()},[ho]),(0,Rt.useEffect)(()=>{dcl().then(Yt=>{dm(Yt)}).catch(Yt=>{S.error(`Error checking for updates: ${Yt}`)})},[]),(0,Rt.useEffect)(()=>()=>{de.current=!1},[]);let AN=(0,Rt.useMemo)(()=>rwe({customAgentsEnabled:t.CUSTOM_AGENTS,ccaDelegateEnabled:t.CCA_DELEGATE}),[t.CUSTOM_AGENTS,t.CCA_DELEGATE]),{slashCommands:Dh,handleSlashCommand:vp,matchingSlashCommands:fp}=aul({builtInSlashCommands:AN,logger:S,currentWorkingDirectory:ho,setCurrentWorkingDirectory:on,fileSearch:Pi,authManager:l,mcpHost:Il,loginStatus:ar,setLoginStatus:uI,addEntryToSession:Je,clearSessionHistory:async()=>{let Yt=await n.createSession({selectedModel:Y});Ee(Yt)},getSessionUsageOutput:()=>GCe(dl),pathManager:Yu,resetSessionToolApprovals:xe.current.resetSessionToolApprovals,clearTimeline:$t,clearHeader:()=>Io(!1),clearContextWindowMetrics:()=>Fe(Yt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:Yt.tokenLimit,truncationStrategy:Yt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setThemePreference:U,refreshStatic:Re,hasAvailableCustomAgents:hd.available.length>0,slashCommandResultActions:{exit:oe,showCustomAgentPickerDialog:()=>ie(!0),showFeedbackDialog:()=>Xs(!0),showLoginDialog:()=>cl(!0),showMCPDialog:(Yt,wl)=>{sn(!0),Yt&&Ru(Yt),wl&&RZ(wl)},showModelPickerDialog:()=>Ln(!0),showSessionDialog:()=>ir(!0),showUserSwitcherDialog:()=>_I(!0),startRemoteDelegation:Yt=>{ia.startDelegation(Yt,Ae.sessionId)},setModel:Yt=>{if(!X8(Yt)){Ae.addEvent({type:"session.error",data:{errorType:"user.model_selection",message:`Model "${Yt}" is not supported. Please select a valid model.`}});return}F_(),Ae.addEvent({type:"session.model_change",data:{model:Yt}}),ll(Yt)}}}),{handleTabCompletion:xG,tabCyclingState:Hp}=oul(Dh,zr,{setSlashCommandPickerIndex:zi}),Dd=(0,Rt.useMemo)(()=>{let Yt=fp(zr.text);return Hp||zi(0),Yt},[fp,zr.text,Hp]),cY=(0,Rt.useMemo)(()=>{let Yt=zr.text,wl=Dd[Di];if(!wl)return{suggestion:void 0,isHint:!1};let Jr=Yt.trimEnd();return Jr===wl.name&&wl.args?{suggestion:Yt!==Jr?wl.args:` ${wl.args}`,isHint:!0}:{suggestion:(wl.name+(wl.args?" ":"")).substring(Yt.length),isHint:!1}},[zr.text,Di,Dd]),zh=(0,Rt.useCallback)(Yt=>{jl||zw||(async()=>{if(await z2.addCommand(Yt),Yt.startsWith("!")){let wu=Yt.substring(1),Xp=Bu();Ae.addEvent({type:"tool.user_requested",data:{toolCallId:Xp,toolName:lT,arguments:{command:wu,description:`Execute shell command: ${wu}`}}}),Oh=new AbortController;let lr="";try{zw=!0,Xb(!0);let hI=WPn(wu,{shell:!0,cwd:ho,env:es.env,stdio:"pipe",signal:Oh.signal}),zd=[],tI=!1,yl=jh=>{tI||(tI=jh.includes(13)),zd.push(jh);let Ba=Buffer.concat(zd).toString("utf-8");lr=tI?asl(Ba):Ba,Ae.addEvent({type:"tool.execution_partial_result",ephemeral:!0,data:{toolCallId:Xp,toolName:lT,partialOutput:lr}})};hI.stderr.on("data",yl),hI.stdout.on("data",yl),hI.stdin.end();let Zd=await new Promise((jh,Ba)=>{hI.on("error",Ba),hI.on("exit",(SG,NN)=>{NN?Ba(new Error(`Process was killed with signal: ${NN}`)):jh(SG)})});Ae.addEvent({type:"tool.execution_complete",data:{toolCallId:Xp,isUserRequested:!0,success:Zd===0,result:{content:lr}}})}catch(hI){Ae.addEvent({type:"tool.execution_complete",data:{toolCallId:Xp,isUserRequested:!0,success:!1,error:{message:`${lr?`${lr}
|
|
2433
2433
|
|
|
2434
|
-
`:""}Error executing shell command: ${hI instanceof Error?hI.message:String(hI)}`}}})}finally{zw=!1,WT=!1,Oh=null,Xb(!1)}return}if((await vp(Yt)).handled)return;let Jr=null,ei="You must be logged in to send messages. Please run /login";if(ar.status==="Unknown")try{if(Jr=await l.getCurrentAuthInfo(),!Jr){Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:ei}});return}}catch{Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:ei}});return}else if(ar.status!=="LoggedIn"){Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:ei}});return}else Jr=ar.authInfo;if(js!==1){Ae.addEvent({type:"session.error",data:{errorType:"folder_trust",message:"This folder is not trusted. Please confirm folder trust to continue."}});return}let Ns=ts?.type==="success"?ts.list:void 0,Ad=await YO(Y,Ae,Ns,S);if(!Ad){Ae.addEvent({type:"session.error",data:{errorType:"model_selection",message:"No model available. Check policy enablement under GitHub Settings > Copilot"}});return}let um=await Hul(Yt,$o.storedMentions,ho,S);Ae.addEvent({type:"user.message",data:{content:Yt,attachments:um}}),Kl(!0);try{await xul(e,Yt,xe.current,Jr,VZ,Lt,Fe,Bt,Ae,S,Yu,ho,Ad,H??vr.stream??!0,b,Il,w,ve,!1,Me,hd.selected?.prompt,ts?.type==="success"?ts.list:void 0,J)}catch(wu){let Xp=wu instanceof Error?wu.message:String(wu);Ae.addEvent({type:"session.error",data:{errorType:"execution",message:`Execution failed: ${Xp}`}})}finally{de.current&&(Kl(!1),vr.beep!==!1&&es.stdout.write(KG.beep),setTimeout(()=>void Al(),1e3))}})()},[e,jl,VZ,Il,ar,js,$o.storedMentions,hd.selected?.prompt,vp]),ZN=(0,Rt.useCallback)(()=>{Ci||Co||($o.isActive?gc.navigateUp():!z2.isNavigating()&&Dd.length?zi(Yt=>Yt>0?Yt-1:Dd.length-1):z2.navigateUp(zr))},[Ci,Co,$o.isActive,gc,Dd.length,Di,zr]),wZ=(0,Rt.useCallback)(()=>{Ci||Co||($o.isActive?gc.navigateDown():!z2.isNavigating()&&Dd.length?zi(Yt=>Yt<Dd.length-1?Yt+1:0):z2.navigateDown(zr))},[Ci,Co,$o.isActive,gc,Dd.length,Di,zr]);Zc((Yt,wl)=>{if(wl.ctrl&&Yt==="d"){oe();return}if(wl.ctrl&&Yt==="c"){if((jl||zw)&&Oh&&!Oh.signal.aborted){WT=!0,Oh.abort(),Ae.addEvent({type:"abort",data:{reason:"user initiated"}}),wr();return}if(zr.text.length>0){zr.clear(),z2.resetNavigation(),wr();return}if(!fo){wr();return}oe()}if(wl.escape){(jl||zw)&&Oh&&!Oh.signal.aborted&&(WT=!0,Oh.abort(),Ae.addEvent({type:"abort",data:{reason:"user initiated"}}));return}if(wl.ctrl&&Yt==="r"){bn();return}if(wl.ctrl&&Yt==="o"){Pt();return}if(!(jl||zw||Ci||Co)){if(wl.tab||wl.return){if($o.isActive){gc.complete();return}return}!wl.leftArrow&&!wl.rightArrow&&!wl.upArrow&&!wl.downArrow&&z2.setNavigating(!1)}}),(0,Rt.useEffect)(()=>{_d(zr.text.startsWith("!"))},[zr.text]);let dY=(0,Rt.useCallback)(()=>{ia.advanceStage()},[ia]),Ph=(0,Rt.useCallback)(()=>{ia.cancelPush()},[ia]),QZ=(0,Rt.useCallback)(()=>{ia.cancelPush(),n.createSession({selectedModel:Y}).then(Yt=>{Ee(Yt)}).catch(Yt=>{S.error(`Error creating new session: ${Yt instanceof Error?Yt.message:String(Yt)}`)}),Io(!1),Fe(Yt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:Yt.tokenLimit,truncationStrategy:Yt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setTimeout(()=>{Re()},200)},[ia,n,Re]);(0,Rt.useEffect)(()=>{ia.onSessionComplete(QZ)},[ia,QZ]);let Vu=Sd(()=>{if(qn)return Gl?Rt.default.createElement(bal,{onConfirm:lr=>{(async()=>{try{lr==="yes"?(await Lr.writeKey("screen_reader",!0),Ae.addEvent({type:"session.info",data:{infoType:"configuration",message:"Enabled screen reader mode for future sessions."}})):lr==="never"&&(await Lr.writeKey("screen_reader",!1),Ae.addEvent({type:"session.info",data:{infoType:"configuration",message:"Disabled screen reader mode for future sessions."}})),Wr(!1)}catch(hI){Ae.addEvent({type:"session.error",data:{errorType:"configuration",message:`Failed to update screen reader configuration: ${hI instanceof Error?hI.message:String(hI)}`}})}})()}}):Rt.default.createElement(Rt.default.Fragment,null);if(tn)return Gl?Rt.default.createElement(erl,{folderPath:ho,onConfirm:lr=>{let hI=()=>{po(1),Gn(!1)};lr==="yes"?hI():lr==="remember"?fme.addTrustedFolder(ho).then(()=>{hI(),Ae.addEvent({type:"session.info",data:{infoType:"folder_trust",message:`Folder ${ho} has been added to trusted folders.`}})}).catch(zd=>{Ae.addEvent({type:"session.error",data:{errorType:"folder_trust",message:`Failed to add folder to trusted list: ${zd instanceof Error?zd.message:String(zd)}`}})}):es.exit(0)}}):Rt.default.createElement(Rt.default.Fragment,null);if(eI)return Rt.default.createElement(qnl,{customAgents:hd,onSubmission:lr=>{(async()=>{if(lr.kind!=="cancelled"){let hI=await kb(lr.id);if(hI.kind==="error"){Je({type:"error",text:`Failed to select custom agent: ${hI.message}`});return}Je({type:"info",text:`Selected custom agent: ${lr.id}`})}ie(!1)})()}});if(hr)return Rt.default.createElement(Gal,{sessionId:Ae.sessionId,onClose:()=>{ir(!1)}});if(lt)return Rt.default.createElement(SIl,{onLoginSuccess:(lr,hI)=>{Sd(async()=>{await l.loginUser(lr,hI),cl(!1),Ae.addEvent({type:"session.info",data:{infoType:"authentication",message:`Signed in successfully as ${sue({host:lr,login:hI})}! You can now use Copilot.`}}),uI({status:"LoggedIn",authInfo:{type:"user",host:lr,login:hI}})})},onLoginClose:()=>{cl(!1)}});if(fl)return Rt.default.createElement(UIl,{initialMode:Km,initialServerName:vi,onClose:()=>{sn(!1),Ru("list"),RZ(void 0)},onConfigSaved:()=>{Sn().then(()=>{Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:"MCP configuration saved successfully! Changes will take effect immediately."}})}).catch(lr=>{Ae.addEvent({type:"session.error",data:{errorType:"mcp",message:`Failed to reload MCP config. Error: ${lr instanceof Error?lr.message:String(lr)}`}})})}});if(or)return Rt.default.createElement(_Il,{models:ts,cliModel:Y,session:Ae,onClose:()=>{Ln(!1)},onModelSelected:lr=>{F_(),Ae.setSelectedModel(lr),(async()=>{try{let zd={...await Lr.load()||{},model:lr};await Lr.write(zd)}catch{}})(),Ae.addEvent({type:"session.info",data:{infoType:"model",message:`Model changed to: ${lr}. The new model will be used for the next conversation.`}}),ll(lr)}});if(Ci)return Rt.default.createElement(Yal,{authManager:l,initialAuth:ar.status==="LoggedIn"?ar.authInfo:null,onSelect:lr=>{uI({status:"LoggedIn",authInfo:lr.authInfo}),_I(!1),Ae.addEvent({type:"session.info",data:{infoType:"authentication",message:`Switched to ${iue(lr.authInfo)}`}}),l.switchToAuth(lr)},onCancel:()=>_I(!1),onError:lr=>{Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:`Failed to switch user. Error: ${lr}`}})}});if(Co){let{terminal:lr,terminalName:hI}=Co;return Rt.default.createElement(znl,{logger:S,terminal:lr,terminalName:hI,onConfirm:zd=>{jm(null),zd?vp("/terminal-setup"):Je({type:"info",text:`Skipped terminal setup for ${hI}. You can run /terminal-setup later to set it up manually.`})}})}if(_c){let lr=ks.length;return Rt.default.createElement(Te,{flexDirection:"column"},lr>0&&Rt.default.createElement(Te,{marginBottom:1},Rt.default.createElement(ce,{color:T.FG},"Permission request (",lr," remaining)")),Rt.default.createElement(oal,{request:_c.request,onConfirm:hI=>{_c.resolve(hI),_h(null)}}))}if(Vn){let lr=LG.length;return Rt.default.createElement(Te,{flexDirection:"column"},lr>0&&Rt.default.createElement(Te,{marginBottom:1},Rt.default.createElement(ce,{color:T.FG},"Path confirmation (",lr," remaining)")),Rt.default.createElement(DIl,{paths:Vn.paths,onConfirm:hI=>{Vn.resolve(hI),Le(null)}}))}let Yt=jl||zw,wl="Enter @ to mention files or / for commands",Jr=cY.suggestion,ei=cY.isHint,Ns=Yt||WT,Ad=!z2.isNavigating()&&Dd.length>0,um=$o.isActive,wu=!um&&!Ad,Xp=Sd(()=>WT?"cancelling":ms?"executing":"thinking");return Rt.default.createElement(Rt.default.Fragment,null,ar.status==="NotLoggedIn"&&Rt.default.createElement(ce,{bold:!0,color:T.COPILOT},"Please use /login to sign in to use Copilot"),Ns&&Rt.default.createElement(Te,{paddingBottom:1},Rt.default.createElement(Zal,{mode:Xp,streamingResponseSize:st})),Rt.default.createElement(Te,{flexDirection:"row",columnGap:1},Rt.default.createElement(Te,{flexGrow:1},Rt.default.createElement(ce,null,je),dt&&Rt.default.createElement(ce,{color:T.MUTED},dt)),Rt.default.createElement(ce,{color:T.MUTED},ml),hd.selected&&Rt.default.createElement(ce,{color:T.SELECTED,bold:!0},hd.selected?.displayName),Rt.default.createElement(Knl,{metrics:ul})),be?.stage?Rt.default.createElement(mal,{state:be,onAdvance:dY,onCancel:Ph,onStartNewSession:QZ}):Rt.default.createElement(arl,{terminalWidth:Ge.columns-Lul*2,onSubmit:zh,textCursorLocation:zr,placeholder:wl,inlineSuggestion:Jr,inlineSuggestionIsHint:ei,onTabCompletion:xG,disableEnterSubmit:Yt||WT||$o.isActive,onUpArrow:ZN,onDownArrow:wZ}),Ad&&Rt.default.createElement(Te,{paddingBottom:1},Rt.default.createElement(Aal,{options:Dd,selectedIndex:Di,maxRows:10,showScrollHints:!0})),um&&Rt.default.createElement(Te,{paddingBottom:1},Rt.default.createElement(Snl,{files:$o.suggestions.map(lr=>lr.relativePath),selectedIndex:$o.selectedIndex,maxRows:10,showScrollHints:!0,query:$o.query})),Rt.default.createElement(lrl,{indexingIndicator:DI}),wu&&!be?.stage&&Rt.default.createElement(crl,{quotaSnapshots:Ke,isRecentTimelineExpanded:Qt!==null,isAllTimelineExpanded:zt,showControlCMessage:fo,inShellExecMode:JG}))}),my=Rt.default.createElement(Te,{key:"header",flexDirection:"column"},Rt.default.createElement(Te,{flexDirection:"column"},Rt.default.createElement(Pnl,{animationComplete:()=>un(!0),completed:Gl,bannerConfig:d?"always":vr.banner,loggerOverride:S,version:se.version}),Rt.default.createElement(Te,{flexDirection:"row",paddingX:1},Rt.default.createElement(ce,{color:T.MUTED},"Version ",se.version),se.buildMetadata&&Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(ce,{color:T.MUTED}," \xB7 "),Rt.default.createElement(ce,{color:T.MUTED},"Commit ",se.buildMetadata.gitCommit)))),Rt.default.createElement(Te,{flexDirection:"column",padding:1,gap:1},Rt.default.createElement(ce,{color:T.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."))),Dc=Ie.filter(Yt=>!("isHidden"in Yt&&Yt.isHidden)),uY=ssl(Dc),L0=uY.staticEntries.map(Yt=>Rt.default.createElement(Vme,{key:Yt.id,entry:Yt,expand:xn(Yt),renderAsMarkdown:vr.render_markdown})),J0=uY.dynamicEntries.map(Yt=>Rt.default.createElement(Vme,{key:Yt.id,entry:Yt,expand:xn(Yt),renderAsMarkdown:vr.render_markdown})),gN=Gl&&j;return Rt.default.createElement(VQe,{mode:"interactive"},ee?Rt.default.createElement(Te,{flexDirection:"column",paddingX:1},Rt.default.createElement(hal,{logger:S,sessionManager:n,onSessionSelected:Yt=>{(async()=>{try{let wl=await n.getSession(Yt);if(!wl)throw new Error("Failed to get session after resuming");Ee(wl),M(!1),un(!0),Io(!1)}catch(wl){Ae.addEvent({type:"session.error",data:{errorType:"session",message:`Failed to resume session: ${wl instanceof Error?wl.message:String(wl)}`}})}})()},onCancel:()=>{(async()=>{try{es.exit(0)}catch(Yt){Ae.addEvent({type:"session.error",data:{errorType:"session",message:`Failed to restart with new session: ${Yt instanceof Error?Yt.message:String(Yt)}`}})}})()}})):Rt.default.createElement(Te,{flexDirection:"column"},gN&&Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(ehe,{key:ue,items:[...Ea?[my]:[],...L0]},Yt=>Yt),J0),!gN&&Ea&&my,!Sa&&Rt.default.createElement(Te,{flexDirection:"column",paddingX:Lul,paddingTop:Ea?0:1},YZ?Rt.default.createElement($nl,{onCancel:()=>Xs(!1)}):Vu),Sa&&Rt.default.createElement(Te,{flexDirection:"column",paddingX:1,rowGap:1},Sa.usage&&Rt.default.createElement(ce,{dimColor:!0},Sa.usage),Rt.default.createElement(Ral,{packageName:se.name,checkUpdateResponse:vo}),Sa.type==="routine"?Rt.default.createElement(ce,{color:T.ACCENT,bold:!0},"Shutting down..."):Rt.default.createElement(ce,{color:T.ERROR,bold:!0},`Shutting down: ${Sa.reason}`)),Rt.default.createElement(ce,null,ue%2?"\u200C":"\u200D")))},Bul=VPn;var FNl=nt(i6(),1);c();var D7=nt(VNl(),1);function wNl(){(0,D7.install)(),(0,D7.setGlobalDispatcher)(new D7.EnvHttpProxyAgent({allowH2:!0}))}c();var gfe=class{constructor(e){this.logger=e;this.listenToErrors()}errorHandlers=[];formatError(e,l){if(l instanceof Error)return`${e}: ${l.message}
|
|
2434
|
+
`:""}Error executing shell command: ${hI instanceof Error?hI.message:String(hI)}`}}})}finally{zw=!1,WT=!1,Oh=null,Xb(!1)}return}if((await vp(Yt)).handled)return;let Jr=null,ei="You must be logged in to send messages. Please run /login";if(ar.status==="Unknown")try{if(Jr=await l.getCurrentAuthInfo(),!Jr){Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:ei}});return}}catch{Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:ei}});return}else if(ar.status!=="LoggedIn"){Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:ei}});return}else Jr=ar.authInfo;if(js!==1){Ae.addEvent({type:"session.error",data:{errorType:"folder_trust",message:"This folder is not trusted. Please confirm folder trust to continue."}});return}let Ns=ts?.type==="success"?ts.list:void 0,Ad=await YO(Y,Ae,Ns,S);if(!Ad){Ae.addEvent({type:"session.error",data:{errorType:"model_selection",message:"No model available. Check policy enablement under GitHub Settings > Copilot"}});return}let um=await Hul(Yt,$o.storedMentions,ho,S);Ae.addEvent({type:"user.message",data:{content:Yt,attachments:um}}),Kl(!0);try{await xul(e,Yt,xe.current,Jr,VZ,Lt,Fe,Bt,Ae,S,Yu,ho,Ad,H??vr.stream??!0,b,Il,w,ve,!1,Me,hd.selected?.prompt,ts?.type==="success"?ts.list:void 0,J)}catch(wu){let Xp=wu instanceof Error?wu.message:String(wu);Ae.addEvent({type:"session.error",data:{errorType:"execution",message:`Execution failed: ${Xp}`}})}finally{de.current&&(Kl(!1),vr.beep!==!1&&es.stdout.write(KG.beep),setTimeout(()=>void Al(),1e3))}})()},[e,jl,VZ,Il,ar,js,$o.storedMentions,hd.selected?.prompt,vp]),ZN=(0,Rt.useCallback)(()=>{Ci||Co||($o.isActive?gc.navigateUp():!z2.isNavigating()&&Dd.length?zi(Yt=>Yt>0?Yt-1:Dd.length-1):z2.navigateUp(zr))},[Ci,Co,$o.isActive,gc,Dd.length,Di,zr]),wZ=(0,Rt.useCallback)(()=>{Ci||Co||($o.isActive?gc.navigateDown():!z2.isNavigating()&&Dd.length?zi(Yt=>Yt<Dd.length-1?Yt+1:0):z2.navigateDown(zr))},[Ci,Co,$o.isActive,gc,Dd.length,Di,zr]);Zc((Yt,wl)=>{if(wl.ctrl&&Yt==="d"){oe();return}if(wl.ctrl&&Yt==="c"){if((jl||zw)&&Oh&&!Oh.signal.aborted){WT=!0,Oh.abort(),Ae.addEvent({type:"abort",data:{reason:"user initiated"}}),wr();return}if(zr.text.length>0){zr.clear(),z2.resetNavigation(),wr();return}if(!fo){wr();return}oe()}if(wl.escape){(jl||zw)&&Oh&&!Oh.signal.aborted&&(WT=!0,Oh.abort(),Ae.addEvent({type:"abort",data:{reason:"user initiated"}}));return}if(wl.ctrl&&Yt==="r"){bn();return}if(wl.ctrl&&Yt==="o"){Pt();return}if(!(jl||zw||Ci||Co)){if(wl.tab||wl.return){if($o.isActive){gc.complete();return}return}!wl.leftArrow&&!wl.rightArrow&&!wl.upArrow&&!wl.downArrow&&z2.setNavigating(!1)}}),(0,Rt.useEffect)(()=>{_d(zr.text.startsWith("!"))},[zr.text]);let dY=(0,Rt.useCallback)(()=>{ia.advanceStage()},[ia]),Ph=(0,Rt.useCallback)(()=>{ia.cancelDelegation()},[ia]),QZ=(0,Rt.useCallback)(()=>{ia.cancelDelegation(),n.createSession({selectedModel:Y}).then(Yt=>{Ee(Yt)}).catch(Yt=>{S.error(`Error creating new session: ${Yt instanceof Error?Yt.message:String(Yt)}`)}),Io(!1),Fe(Yt=>({totalTokens:0,postTruncationTokens:0,tokenLimit:Yt.tokenLimit,truncationStrategy:Yt.truncationStrategy,messagesRemoved:0,tokensRemoved:0})),setTimeout(()=>{Re()},200)},[ia,n,Re]);(0,Rt.useEffect)(()=>{ia.onSessionComplete(QZ)},[ia,QZ]);let Vu=Sd(()=>{if(qn)return Gl?Rt.default.createElement(bal,{onConfirm:lr=>{(async()=>{try{lr==="yes"?(await Lr.writeKey("screen_reader",!0),Ae.addEvent({type:"session.info",data:{infoType:"configuration",message:"Enabled screen reader mode for future sessions."}})):lr==="never"&&(await Lr.writeKey("screen_reader",!1),Ae.addEvent({type:"session.info",data:{infoType:"configuration",message:"Disabled screen reader mode for future sessions."}})),Wr(!1)}catch(hI){Ae.addEvent({type:"session.error",data:{errorType:"configuration",message:`Failed to update screen reader configuration: ${hI instanceof Error?hI.message:String(hI)}`}})}})()}}):Rt.default.createElement(Rt.default.Fragment,null);if(tn)return Gl?Rt.default.createElement(erl,{folderPath:ho,onConfirm:lr=>{let hI=()=>{po(1),Gn(!1)};lr==="yes"?hI():lr==="remember"?fme.addTrustedFolder(ho).then(()=>{hI(),Ae.addEvent({type:"session.info",data:{infoType:"folder_trust",message:`Folder ${ho} has been added to trusted folders.`}})}).catch(zd=>{Ae.addEvent({type:"session.error",data:{errorType:"folder_trust",message:`Failed to add folder to trusted list: ${zd instanceof Error?zd.message:String(zd)}`}})}):es.exit(0)}}):Rt.default.createElement(Rt.default.Fragment,null);if(eI)return Rt.default.createElement(qnl,{customAgents:hd,onSubmission:lr=>{(async()=>{if(lr.kind!=="cancelled"){let hI=await kb(lr.id);if(hI.kind==="error"){Je({type:"error",text:`Failed to select custom agent: ${hI.message}`});return}Je({type:"info",text:`Selected custom agent: ${lr.id}`})}ie(!1)})()}});if(hr)return Rt.default.createElement(Gal,{sessionId:Ae.sessionId,onClose:()=>{ir(!1)}});if(lt)return Rt.default.createElement(SIl,{onLoginSuccess:(lr,hI)=>{Sd(async()=>{await l.loginUser(lr,hI),cl(!1),Ae.addEvent({type:"session.info",data:{infoType:"authentication",message:`Signed in successfully as ${sue({host:lr,login:hI})}! You can now use Copilot.`}}),uI({status:"LoggedIn",authInfo:{type:"user",host:lr,login:hI}})})},onLoginClose:()=>{cl(!1)}});if(fl)return Rt.default.createElement(UIl,{initialMode:Km,initialServerName:vi,onClose:()=>{sn(!1),Ru("list"),RZ(void 0)},onConfigSaved:()=>{Sn().then(()=>{Ae.addEvent({type:"session.info",data:{infoType:"mcp",message:"MCP configuration saved successfully! Changes will take effect immediately."}})}).catch(lr=>{Ae.addEvent({type:"session.error",data:{errorType:"mcp",message:`Failed to reload MCP config. Error: ${lr instanceof Error?lr.message:String(lr)}`}})})}});if(or)return Rt.default.createElement(_Il,{models:ts,cliModel:Y,session:Ae,onClose:()=>{Ln(!1)},onModelSelected:lr=>{F_(),Ae.setSelectedModel(lr),(async()=>{try{let zd={...await Lr.load()||{},model:lr};await Lr.write(zd)}catch{}})(),Ae.addEvent({type:"session.info",data:{infoType:"model",message:`Model changed to: ${lr}. The new model will be used for the next conversation.`}}),ll(lr)}});if(Ci)return Rt.default.createElement(Yal,{authManager:l,initialAuth:ar.status==="LoggedIn"?ar.authInfo:null,onSelect:lr=>{uI({status:"LoggedIn",authInfo:lr.authInfo}),_I(!1),Ae.addEvent({type:"session.info",data:{infoType:"authentication",message:`Switched to ${iue(lr.authInfo)}`}}),l.switchToAuth(lr)},onCancel:()=>_I(!1),onError:lr=>{Ae.addEvent({type:"session.error",data:{errorType:"authentication",message:`Failed to switch user. Error: ${lr}`}})}});if(Co){let{terminal:lr,terminalName:hI}=Co;return Rt.default.createElement(znl,{logger:S,terminal:lr,terminalName:hI,onConfirm:zd=>{jm(null),zd?vp("/terminal-setup"):Je({type:"info",text:`Skipped terminal setup for ${hI}. You can run /terminal-setup later to set it up manually.`})}})}if(_c){let lr=ks.length;return Rt.default.createElement(Te,{flexDirection:"column"},lr>0&&Rt.default.createElement(Te,{marginBottom:1},Rt.default.createElement(ce,{color:T.FG},"Permission request (",lr," remaining)")),Rt.default.createElement(oal,{request:_c.request,onConfirm:hI=>{_c.resolve(hI),_h(null)}}))}if(Vn){let lr=LG.length;return Rt.default.createElement(Te,{flexDirection:"column"},lr>0&&Rt.default.createElement(Te,{marginBottom:1},Rt.default.createElement(ce,{color:T.FG},"Path confirmation (",lr," remaining)")),Rt.default.createElement(DIl,{paths:Vn.paths,onConfirm:hI=>{Vn.resolve(hI),Le(null)}}))}let Yt=jl||zw,wl="Enter @ to mention files or / for commands",Jr=cY.suggestion,ei=cY.isHint,Ns=Yt||WT,Ad=!z2.isNavigating()&&Dd.length>0,um=$o.isActive,wu=!um&&!Ad,Xp=Sd(()=>WT?"cancelling":ms?"executing":"thinking");return Rt.default.createElement(Rt.default.Fragment,null,ar.status==="NotLoggedIn"&&Rt.default.createElement(ce,{bold:!0,color:T.COPILOT},"Please use /login to sign in to use Copilot"),Ns&&Rt.default.createElement(Te,{paddingBottom:1},Rt.default.createElement(Zal,{mode:Xp,streamingResponseSize:st})),Rt.default.createElement(Te,{flexDirection:"row",columnGap:1},Rt.default.createElement(Te,{flexGrow:1},Rt.default.createElement(ce,null,je),dt&&Rt.default.createElement(ce,{color:T.MUTED},dt)),Rt.default.createElement(ce,{color:T.MUTED},ml),hd.selected&&Rt.default.createElement(ce,{color:T.SELECTED,bold:!0},hd.selected?.displayName),Rt.default.createElement(Knl,{metrics:ul})),be?.stage?Rt.default.createElement(mal,{state:be,onAdvance:dY,onCancel:Ph,onStartNewSession:QZ}):Rt.default.createElement(arl,{terminalWidth:Ge.columns-Lul*2,onSubmit:zh,textCursorLocation:zr,placeholder:wl,inlineSuggestion:Jr,inlineSuggestionIsHint:ei,onTabCompletion:xG,disableEnterSubmit:Yt||WT||$o.isActive,onUpArrow:ZN,onDownArrow:wZ}),Ad&&Rt.default.createElement(Te,{paddingBottom:1},Rt.default.createElement(Aal,{options:Dd,selectedIndex:Di,maxRows:10,showScrollHints:!0})),um&&Rt.default.createElement(Te,{paddingBottom:1},Rt.default.createElement(Snl,{files:$o.suggestions.map(lr=>lr.relativePath),selectedIndex:$o.selectedIndex,maxRows:10,showScrollHints:!0,query:$o.query})),Rt.default.createElement(lrl,{indexingIndicator:DI}),wu&&!be?.stage&&Rt.default.createElement(crl,{quotaSnapshots:Ke,isRecentTimelineExpanded:Qt!==null,isAllTimelineExpanded:zt,showControlCMessage:fo,inShellExecMode:JG}))}),my=Rt.default.createElement(Te,{key:"header",flexDirection:"column"},Rt.default.createElement(Te,{flexDirection:"column"},Rt.default.createElement(Pnl,{animationComplete:()=>un(!0),completed:Gl,bannerConfig:d?"always":vr.banner,loggerOverride:S,version:se.version}),Rt.default.createElement(Te,{flexDirection:"row",paddingX:1},Rt.default.createElement(ce,{color:T.MUTED},"Version ",se.version),se.buildMetadata&&Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(ce,{color:T.MUTED}," \xB7 "),Rt.default.createElement(ce,{color:T.MUTED},"Commit ",se.buildMetadata.gitCommit)))),Rt.default.createElement(Te,{flexDirection:"column",padding:1,gap:1},Rt.default.createElement(ce,{color:T.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."))),Dc=Ie.filter(Yt=>!("isHidden"in Yt&&Yt.isHidden)),uY=ssl(Dc),L0=uY.staticEntries.map(Yt=>Rt.default.createElement(Vme,{key:Yt.id,entry:Yt,expand:xn(Yt),renderAsMarkdown:vr.render_markdown})),J0=uY.dynamicEntries.map(Yt=>Rt.default.createElement(Vme,{key:Yt.id,entry:Yt,expand:xn(Yt),renderAsMarkdown:vr.render_markdown})),gN=Gl&&j;return Rt.default.createElement(VQe,{mode:"interactive"},ee?Rt.default.createElement(Te,{flexDirection:"column",paddingX:1},Rt.default.createElement(hal,{logger:S,sessionManager:n,onSessionSelected:Yt=>{(async()=>{try{let wl=await n.getSession(Yt);if(!wl)throw new Error("Failed to get session after resuming");Ee(wl),M(!1),un(!0),Io(!1)}catch(wl){Ae.addEvent({type:"session.error",data:{errorType:"session",message:`Failed to resume session: ${wl instanceof Error?wl.message:String(wl)}`}})}})()},onCancel:()=>{(async()=>{try{es.exit(0)}catch(Yt){Ae.addEvent({type:"session.error",data:{errorType:"session",message:`Failed to restart with new session: ${Yt instanceof Error?Yt.message:String(Yt)}`}})}})()}})):Rt.default.createElement(Te,{flexDirection:"column"},gN&&Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(ehe,{key:ue,items:[...Ea?[my]:[],...L0]},Yt=>Yt),J0),!gN&&Ea&&my,!Sa&&Rt.default.createElement(Te,{flexDirection:"column",paddingX:Lul,paddingTop:Ea?0:1},YZ?Rt.default.createElement($nl,{onCancel:()=>Xs(!1)}):Vu),Sa&&Rt.default.createElement(Te,{flexDirection:"column",paddingX:1,rowGap:1},Sa.usage&&Rt.default.createElement(ce,{dimColor:!0},Sa.usage),Rt.default.createElement(Ral,{packageName:se.name,checkUpdateResponse:vo}),Sa.type==="routine"?Rt.default.createElement(ce,{color:T.ACCENT,bold:!0},"Shutting down..."):Rt.default.createElement(ce,{color:T.ERROR,bold:!0},`Shutting down: ${Sa.reason}`)),Rt.default.createElement(ce,null,ue%2?"\u200C":"\u200D")))},Bul=VPn;var FNl=nt(i6(),1);c();var D7=nt(VNl(),1);function wNl(){(0,D7.install)(),(0,D7.setGlobalDispatcher)(new D7.EnvHttpProxyAgent({allowH2:!0}))}c();var gfe=class{constructor(e){this.logger=e;this.listenToErrors()}errorHandlers=[];formatError(e,l){if(l instanceof Error)return`${e}: ${l.message}
|
|
2435
2435
|
${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)+`
|
|
2436
2436
|
`),process.exit(1));for(let n of this.errorHandlers)n(l)}};process.env.NODE_ENV="production";typeof global.WebSocket>"u"&&(global.WebSocket=npe);(0,FNl.satisfies)(process.versions.node,">=20")||z7(`Unsupported Node.js version ${process.versions.node}. GitHub Copilot CLI requires Node >=20 and recommends Node >=22`,new C_(aat(W4(),"logs","error.log")));function QNl(){let t=qE(),e=t.version;if(t.buildMetadata){let{gitCommit:l}=t.buildMetadata;e+=`
|
|
2437
2437
|
Commit: ${l}`}return e}var $T=await Lr.load()||{},pGe=Sd(()=>{let t={...vme};return t=Isl($T,t),t=rsl(t),t}),CNl=["none","error","warning","info","debug","all","default"],Nfe=[{name:"config",summary:"Configuration Settings",content:`Configuration Settings:
|
|
@@ -2465,7 +2465,7 @@ ${xMt(RO,4)}
|
|
|
2465
2465
|
\`trusted_folders\`: list of folders where permission to read or execute files has been granted.
|
|
2466
2466
|
`},{name:"commands",summary:"Interactive Mode Commands",content:`Interactive Mode Commands:
|
|
2467
2467
|
|
|
2468
|
-
${VDt(rwe({customAgentsEnabled:pGe.CUSTOM_AGENTS,
|
|
2468
|
+
${VDt(rwe({customAgentsEnabled:pGe.CUSTOM_AGENTS,ccaDelegateEnabled:pGe.CCA_DELEGATE}),2)}
|
|
2469
2469
|
`},{name:"environment",summary:"Environment Variables",content:'Environment Variables:\n\n `COLORFGBG`: fallback to detect dark / light backgrounds; uses form of "fg;bg" where each field is a number from 0-15 corresponding to ANSI colors.\n\n `COPILOT_ALLOW_ALL`: allow all tools to run automatically without confirmation when set to "true".\n\n `COPILOT_CUSTOM_INSTRUCTIONS_DIRS`: comma-separated list of additional directories to search for custom instructions files (in addition to git root and current working directory).\n\n `COPILOT_MODEL`: optionally set the agent model. Allowed values are "gpt-5", "claude-sonnet-4", or "claude-sonnet-4.5" (default). Can be overridden by the --model command line option or the /model command.\n\n `GH_TOKEN`, `GITHUB_TOKEN` (in order of precedence): an authentication token that takes precedence over previously stored credentials.\n\n `XDG_CONFIG_HOME`: override the directory where configuration files are stored; defaults to `$HOME/.copilot`.\n\n `XDG_STATE_HOME`: override the directory where state files are stored; defaults to `$HOME/.copilot`.'},{name:"logging",summary:"Logging",content:`Log Levels:
|
|
2470
2470
|
|
|
2471
2471
|
none No logging output
|