@github/copilot 0.0.337-10 → 0.0.337-12
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 +2 -2
- package/package.json +2 -2
- package/sdk/index.js +2 -2
- package/sdk/index.js.map +1 -1
package/index.js
CHANGED
|
@@ -761,7 +761,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
761
761
|
`;if(this.options.debug){I&&(this.fullStaticOutput+=n),this.options.stdout.write(this.fullStaticOutput+e);return}if(FJ){I&&this.options.stdout.write(n),this.lastOutput=e,this.lastOutputHeight=l;return}if(this.isScreenReaderEnabled){if(I){let s=this.lastOutputHeight>0?Hb.eraseLines(this.lastOutputHeight):"";this.options.stdout.write(s+n),this.lastOutputHeight=0}if(e===this.lastOutput&&!I)return;let r=this.options.stdout.columns||80,a=YH(e,r,{trim:!1,hard:!0});if(I)this.options.stdout.write(a);else{let s=this.lastOutputHeight>0?Hb.eraseLines(this.lastOutputHeight):"";this.options.stdout.write(s+a)}this.lastOutput=e,this.lastOutputHeight=a===""?0:a.split(`
|
|
762
762
|
`).length;return}if(I&&(this.fullStaticOutput+=n),this.lastOutputHeight>=this.options.stdout.rows){this.options.stdout.write(Hb.clearTerminal+this.fullStaticOutput+e),this.lastOutput=e,this.lastOutputHeight=l,this.log.sync(e);return}I&&(this.log.clear(),this.options.stdout.write(n),this.log(e)),!I&&e!==this.lastOutput&&this.throttledLog(e),this.lastOutput=e,this.lastOutputHeight=l};render(e){let l=Uve.default.createElement(Tw.Provider,{value:{isScreenReaderEnabled:this.isScreenReaderEnabled}},Uve.default.createElement(w7,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e));Ow.updateContainerSync(l,this.container,null,Xat),Ow.flushSyncWork()}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(FJ){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(FJ){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.calculateLayout(),this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),FJ?this.options.stdout.write(this.lastOutput+`
|
|
763
763
|
`):this.options.debug||this.log.done(),this.isUnmounted=!0,Ow.updateContainerSync(null,this.container,null,Xat),Ow.flushSyncWork(),WU.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}async waitUntilExit(){return this.exitPromise||=new Promise((e,l)=>{this.resolveExitPromise=e,this.rejectExitPromise=l}),this.exitPromise}clear(){!FJ&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=eGe((e,l)=>{e==="stdout"&&this.writeToStdout(l),e==="stderr"&&(l.startsWith("The above error occurred")||this.writeToStderr(l))}))}};var qhl=(t,e)=>{let l={stdout:LGe.stdout,stdin:LGe.stdin,stderr:LGe.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,maxFps:30,...$hl(e)},n=eAl(l.stdout,()=>new F7(l));return n.render(t),{rerender:n.render,unmount(){n.unmount()},waitUntilExit:n.waitUntilExit,cleanup:()=>WU.delete(l.stdout),clear:n.clear}},C7=qhl,$hl=(t={})=>t instanceof Khl?{stdout:t,stdin:LGe.stdin}:t,eAl=(t,e)=>{let l=WU.get(t);return l||(l=e(),WU.set(t,l)),l};c();var Mw=dt(bl(),1);function JGe(t){let{items:e,children:l,style:n}=t,[I,r]=(0,Mw.useState)(0),a=(0,Mw.useMemo)(()=>e.slice(I),[e,I]);(0,Mw.useLayoutEffect)(()=>{r(e.length)},[e.length]);let s=a.map((d,u)=>l(d,I+u)),o=(0,Mw.useMemo)(()=>({position:"absolute",flexDirection:"column",...n}),[n]);return Mw.default.createElement("ink-box",{internal_static:!0,style:o},s)}c();var Jat=dt(bl(),1);c();var tAl=dt(bl(),1);c();var lAl=dt(bl(),1);c();var Mve=dt(bl(),1);c();import{Buffer as nAl}from"node:buffer";var IAl=/^(?:\x1b)([a-zA-Z0-9])$/,rAl=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Bat={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},xat=[...Object.values(Bat),"backspace"],aAl=t=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t),sAl=t=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t),oAl=(t="")=>{let e;nAl.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t="");let l={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t};if(l.sequence=l.sequence||t||l.name,t==="\r")l.raw=void 0,l.name="return";else if(t===`
|
|
764
|
-
`)l.name="enter";else if(t===" ")l.name="tab";else if(t==="\b"||t==="\x1B\b")l.name="backspace",l.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")l.name="delete",l.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")l.name="escape",l.meta=t.length===2;else if(t===" "||t==="\x1B ")l.name="space",l.meta=t.length===2;else if(t.length===1&&t<="")l.name=String.fromCharCode(t.charCodeAt(0)+97-1),l.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")l.name="number";else if(t.length===1&&t>="a"&&t<="z")l.name=t;else if(t.length===1&&t>="A"&&t<="Z")l.name=t.toLowerCase(),l.shift=!0;else if(e=IAl.exec(t))l.meta=!0,l.shift=/^[A-Z]$/.test(e[1]);else if(e=rAl.exec(t)){let n=[...t];n[0]==="\x1B"&&n[1]==="\x1B"&&(l.option=!0);let I=[e[1],e[2],e[4],e[6]].filter(Boolean).join(""),r=(e[3]||e[5]||1)-1;l.ctrl=!!(r&4),l.meta=!!(r&10),l.shift=!!(r&1),l.code=I,l.name=Bat[I],l.shift=aAl(I)||l.shift,l.ctrl=sAl(I)||l.ctrl}return l},Sat=oAl;c();var Oat=dt(bl(),1);var iAl=()=>(0,Oat.useContext)(vGe),yU=iAl;var cAl=(t,e={})=>{let{stdin:l,setRawMode:n,internal_exitOnCtrlC:I,internal_eventEmitter:r}=yU();(0,Mve.useEffect)(()=>{if(e.isActive!==!1)return n(!0),()=>{n(!1)}},[e.isActive,n]),(0,Mve.useEffect)(()=>{if(e.isActive===!1)return;let a=s=>{let o=Sat(s),d={upArrow:o.name==="up",downArrow:o.name==="down",leftArrow:o.name==="left",rightArrow:o.name==="right",pageDown:o.name==="pagedown",pageUp:o.name==="pageup",return:o.name==="return",escape:o.name==="escape",ctrl:o.ctrl,shift:o.shift,tab:o.name==="tab",backspace:o.name==="backspace",delete:o.name==="delete",meta:o.meta||o.name==="escape"||o.option},u=o.ctrl?o.name:o.sequence;xat.includes(o.name)&&(u=""),u.startsWith("\x1B")&&(u=u.slice(1)),u.length===1&&typeof u[0]=="string"&&/[A-Z]/.test(u[0])&&(d.shift=!0),(!(u==="c"&&d.ctrl)||!I)&&Ow.batchedUpdates(()=>{t(u,d)})};return r?.on("input",a),()=>{r?.removeListener("input",a)}},[e.isActive,l,I,t])},EY=cAl;c();var dAl=dt(bl(),1);c();var Tat=dt(bl(),1);var uAl=()=>(0,Tat.useContext)(fGe),WN=uAl;c();var mAl=dt(bl(),1);c();var _ve=dt(bl(),1);c();var GAl=dt(bl(),1);c();var Uat=dt(bl(),1);var bAl=()=>{let{isScreenReaderEnabled:t}=(0,Uat.useContext)(Tw);return t},XJ=bAl;c();import{homedir as FPn}from"os";var hlt=dt(bl(),1);import{join as VFe}from"path";import{text as CPn}from"stream/consumers";c();c();var jGt=dt(hM(),1);c();c();c();c();var Bb=[];for(let t=0;t<256;++t)Bb.push((t+256).toString(16).slice(1));function WGt(t,e=0){return(Bb[t[e+0]]+Bb[t[e+1]]+Bb[t[e+2]]+Bb[t[e+3]]+"-"+Bb[t[e+4]]+Bb[t[e+5]]+"-"+Bb[t[e+6]]+Bb[t[e+7]]+"-"+Bb[t[e+8]]+Bb[t[e+9]]+"-"+Bb[t[e+10]]+Bb[t[e+11]]+Bb[t[e+12]]+Bb[t[e+13]]+Bb[t[e+14]]+Bb[t[e+15]]).toLowerCase()}c();import{randomFillSync as IQl}from"crypto";var Bpe=new Uint8Array(256),Jpe=Bpe.length;function g5e(){return Jpe>Bpe.length-16&&(IQl(Bpe),Jpe=0),Bpe.slice(Jpe,Jpe+=16)}c();c();import{randomUUID as rQl}from"crypto";var N5e={randomUUID:rQl};function aQl(t,e,l){if(N5e.randomUUID&&!e&&!t)return N5e.randomUUID();t=t||{};let n=t.random??t.rng?.()??g5e();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){if(l=l||0,l<0||l+16>e.length)throw new RangeError(`UUID byte range ${l}:${l+15} is out of buffer bounds`);for(let I=0;I<16;++I)e[l+I]=n[I];return e}return WGt(n)}var Ey=aQl;var gM=class{settings={};mergePartial(e,l){return{...e,...l}}setBlackbirdMode(e){return e!==void 0&&(e=="tool"||e=="initial-search")&&(this.settings.blackbird=this.mergePartial(this.settings.blackbird,{mode:e})),this}setSwebenchBaseCommit(e){return e!==void 0&&(this.settings.swebench_base_commit=e),this}setGithubUserName(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,name:e}})}return this}setGithubUserEmail(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,email:e}})}return this}setGithubToken(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{token:e})),this}setGithubServerUrl(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{serverUrl:e??"https://github.com"}),(!this.settings.github.host||!this.settings.github.hostProtocol)&&(this.settings.github=this.mergePartial(this.settings.github,new URL(e)))),this}setGithubHost(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{host:e})),this}setGithubHostProtocol(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{hostProtocol:e})),this}setGithubActorId(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,actorId:e}})}return this}setGithubActorLogin(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,actorLogin:e}})}return this}setGithubRepoName(e){if(e!==void 0){let l=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,name:e}})}return this}setGithubRepoId(e){if(e!==void 0){let l=this.settings.github?.repo||{},n=Number(e);isNaN(n)||(this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,id:n}}))}return this}setGithubRepoOwnerName(e){if(e!==void 0){let l=this.settings.github?.owner||{};this.settings.github=this.mergePartial(this.settings.github,{owner:{...l,name:e}})}return this}setGithubRepoOwnerId(e){if(e!==void 0){let l=this.settings.github?.owner||{},n=Number(e);isNaN(n)||(this.settings.github=this.mergePartial(this.settings.github,{owner:{...l,id:n}}))}return this}setGithubRepoBranch(e){if(e){let l=e.replace(/^refs\/heads\//,"");if(l.length===0)return this;let n=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...n,branch:l}})}return this}setGithubRepoCommit(e){if(e!==void 0){let l=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,commit:e}})}return this}setGithubRepoReadWrite(e){if(e!==void 0){let l=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,readWrite:e}})}return this}setProblemStatement(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{statement:e})),this}setProblemContentFilterMode(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{contentFilterMode:e})),this}setProblemAction(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{action:e})),this}setGithubIssueNumber(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{issue:{number:e}})),this}setGithubPRCommitCount(e){if(e!==void 0){let l=this.settings.github?.pr||{};this.settings.github=this.mergePartial(this.settings.github,{pr:{...l,commitCount:e}})}return this}setInstanceId(e){return this.settings.service=this.mergePartial(this.settings.service,{instance:{id:e??Ey()}}),this}setAgentModel(e){if(e!==void 0){let l=this.settings.service?.agent||{};this.settings.service=this.mergePartial(this.settings.service,{agent:{...l,model:e}})}return this}setRequestHeaders(e){if(e!==void 0){let l=this.settings.service?.agent||{};this.settings.service=this.mergePartial(this.settings.service,{agent:{...l,requestHeaders:e}})}return this}setRetryPolicy(e){if(e!==void 0){let l=this.settings.service?.agent||{};this.settings.service=this.mergePartial(this.settings.service,{agent:{...l,retryPolicy:e}})}return this}setCallbackUrl(e){return e!==void 0&&(this.settings.service=this.mergePartial(this.settings.service,{callback:{url:e}})),this}setGitHubUploadsUrl(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{uploadsUrl:e})),this}setGitHubDownloadsUrl(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{downloadsUrl:e})),this}setAipSweAgentToken(e){return e!==void 0&&(this.settings.api=this.mergePartial(this.settings.api,{aipSweAgent:{token:e}})),this}setAnthropicApiKey(e){return e!==void 0&&(this.settings.api=this.mergePartial(this.settings.api,{anthropic:{key:e}})),this}setOpenAiApiKey(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,apiKey:e}})}return this}setOpenAiBaseUrl(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,baseUrl:e}})}return this}setAzureOpenAiUrl(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azure:{...l.azure,url:e}}})}return this}setAzureOpenAiApiVersion(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azure:{...l.azure,apiVersion:e}}})}return this}setAzureOpenAiKeyVaultUri(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azureKeyVaultUri:e}})}return this}setAzureOpenAiSecretName(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azureSecretName:e}})}return this}setCopilotUrl(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,url:e}})}return this}setCopilotIntegrationId(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,integrationId:e}})}return this}setCopilotHmacKey(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,hmacKey:e}})}return this}setCopilotToken(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,token:e}})}return this}setCopilotAzureKeyVaultUri(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,azureKeyVaultUri:e}})}return this}setCopilotSessionId(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,sessionId:e}})}return this}setCopilotPreviousSessionIds(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,previousSessionIds:e.split(",").map(n=>n.trim()).filter(n=>n.length>0)}})}return this}setCopilotUseSessions(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,useSessions:e}})}return this}setCopilotJobNonce(e){return e!==void 0&&(this.settings.job=this.mergePartial(this.settings.job,{nonce:e})),this}setTrajectoryOutputFile(e){return e!==void 0&&(this.settings.trajectory=this.mergePartial(this.settings.trajectory,{outputFile:e})),this}setEventsLogDirectory(e){return e!==void 0&&(this.settings.logs=this.mergePartial(this.settings.logs,{eventsLogDir:e})),this}setDisableOnlineEvaluation(e){return e==!0&&this.settings.onlineEvaluation?.disableOnlineEvaluation!==!0&&(this.settings.onlineEvaluation=this.mergePartial(this.settings.onlineEvaluation,{disableOnlineEvaluation:e})),this}setEnableOnlineEvaluationOutputFile(e){return e==!0&&this.settings.onlineEvaluation?.enableOnlineEvaluationOutputFile!==!0&&(this.settings.onlineEvaluation=this.mergePartial(this.settings.onlineEvaluation,{enableOnlineEvaluationOutputFile:e})),this}setGitHubMCPServerToken(e){return e!==void 0&&(this.settings.api=this.mergePartial(this.settings.api,{github:{mcpServerToken:e}})),this}setFeatureFlagEnabled(e){return this.settings.featureFlags=this.mergePartial(this.settings.featureFlags,{[e]:!0}),this}setExperiment(e,l){return this.settings.experiments=this.mergePartial(this.settings.experiments,{[e]:l}),this}setTimeoutMs(e){return e!==void 0&&(this.settings.timeoutMs=e),this}setStartTimeMs(e){return e!==void 0&&(this.settings.startTimeMs=e),this}build(){return this.settings}};var xpe=["GITHUB_TOKEN","GITHUB_COPILOT_API_TOKEN","CAPI_HMAC_KEY","CAPI_HMAC_KEY_OVERRIDE","ANTHROPIC_API_KEY","AIP_SWE_AGENT_TOKEN","CAPI_AZURE_KEY_VAULT_URI","COPILOT_JOB_NONCE","GITHUB_MCP_SERVER_TOKEN","OPENAI_BASE_URL","OPENAI_API_KEY","COPILOT_AGENT_REQUEST_HEADERS","AZURE_OPENAI_API_KEY","AZURE_OPENAI_API_ENDPOINT","AZURE_OPENAI_KEY_VAULT_URI","AZURE_OPENAI_KEY_VAULT_SECRET_NAME","BLACKBIRD_AUTH_METIS_API_KEY","BLACKBIRD_AUTH_MODEL_BASED_RETRIEVAL_TOKEN"],yGt=["COPILOT_CALLBACK_URL","COPILOT_AGENT_MODEL","COPILOT_AGENT_JOB_ID","COPILOT_AGENT_PROMPT","COPILOT_AGENT_PUSH","COPILOT_FIREWALL_ENABLED","COPILOT_FIREWALL_ALLOW_LIST","GITHUB_COPILOT_INTEGRATION_ID","COPILOT_INTEGRATION_ID_OVERRIDE","COPILOT_AGENT_SESSION_ID","COPILOT_AGENT_PREVIOUS_SESSION_IDS","COPILOT_AGENT_EVENT_URL","COPILOT_AGENT_EVENT_TYPE","COPILOT_AGENT_ACTOR","COPILOT_AGENT_ACTOR_ID",...xpe];async function EGt(){let t=new gM;t.setGithubServerUrl(process.env.GITHUB_SERVER_URL).setGithubHost(process.env.GITHUB_HOST).setGithubHostProtocol(process.env.GITHUB_HOST_PROTOCOL).setGithubToken(process.env.GITHUB_TOKEN).setGithubUserName(process.env.COPILOT_AGENT_COMMIT_LOGIN).setGithubUserEmail(process.env.COPILOT_AGENT_COMMIT_EMAIL).setGithubRepoOwnerId(process.env.GITHUB_REPOSITORY_OWNER_ID).setGithubRepoOwnerName(process.env.GITHUB_REPOSITORY_OWNER).setGithubRepoId(process.env.GITHUB_REPOSITORY_ID).setGithubRepoName(process.env.GITHUB_REPOSITORY).setGithubRepoBranch(process.env.COPILOT_AGENT_BRANCH_NAME).setGithubRepoCommit(process.env.COPILOT_AGENT_BASE_COMMIT),process.env.COPILOT_AGENT_PUSH!==void 0&&t.setGithubRepoReadWrite(process.env.COPILOT_AGENT_PUSH==="true");let e=process.env.COPILOT_AGENT_ISSUE_NUMBER?parseInt(process.env.COPILOT_AGENT_ISSUE_NUMBER,10):void 0;isNaN(e)||t.setGithubIssueNumber(e),t.setGithubPRCommitCount(process.env.COPILOT_AGENT_PR_COMMIT_COUNT?parseInt(process.env.COPILOT_AGENT_PR_COMMIT_COUNT,10):void 0),t.setProblemStatement(process.env.COPILOT_AGENT_PROMPT).setProblemContentFilterMode(process.env.COPILOT_AGENT_CONTENT_FILTER_MODE);let l=process.env.COPILOT_AGENT_ACTION;if(l&&["fix","fix-pr-comment"].includes(l)&&t.setProblemAction(l),process.env.COPILOT_AGENT_ACTOR_ID&&t.setGithubActorId(parseInt(process.env.COPILOT_AGENT_ACTOR_ID,10)),process.env.COPILOT_AGENT_ACTOR&&t.setGithubActorLogin(process.env.COPILOT_AGENT_ACTOR),t.setInstanceId(process.env.COPILOT_AGENT_JOB_ID).setCopilotJobNonce(process.env.COPILOT_JOB_NONCE).setAgentModel(process.env.COPILOT_AGENT_MODEL).setCallbackUrl(process.env.COPILOT_AGENT_CALLBACK_URL).setGitHubUploadsUrl(process.env.GITHUB_UPLOADS_URL).setGitHubDownloadsUrl(process.env.GITHUB_DOWNLOADS_URL),t.setAipSweAgentToken(process.env.AIP_SWE_AGENT_TOKEN).setAnthropicApiKey(process.env.ANTHROPIC_API_KEY).setCopilotUrl(process.env.COPILOT_API_URL).setCopilotIntegrationId(process.env.GITHUB_COPILOT_INTEGRATION_ID).setCopilotHmacKey(process.env.CAPI_HMAC_KEY).setCopilotToken(process.env.GITHUB_COPILOT_API_TOKEN).setCopilotAzureKeyVaultUri(process.env.CAPI_AZURE_KEY_VAULT_URI).setBlackbirdMode(process.env.BLACKBIRD_MODE||"initial-search").setCopilotSessionId(process.env.COPILOT_AGENT_SESSION_ID).setCopilotPreviousSessionIds(process.env.COPILOT_AGENT_PREVIOUS_SESSION_IDS).setSwebenchBaseCommit(process.env.SWEBENCH_BASE_COMMIT).setGitHubMCPServerToken(process.env.GITHUB_MCP_SERVER_TOKEN).setAzureOpenAiKeyVaultUri(process.env.AZURE_OPENAI_KEY_VAULT_URI).setAzureOpenAiSecretName(process.env.AZURE_OPENAI_KEY_VAULT_SECRET_NAME).setOpenAiBaseUrl(process.env.OPENAI_BASE_URL).setOpenAiApiKey(process.env.AZURE_OPENAI_API_KEY||process.env.OPENAI_API_KEY).setAzureOpenAiUrl(process.env.AZURE_OPENAI_API_ENDPOINT).setAzureOpenAiApiVersion(process.env.AZURE_OPENAI_API_VERSION),process.env.COPILOT_USE_SESSIONS!==void 0&&t.setCopilotUseSessions(process.env.COPILOT_USE_SESSIONS==="true"),t.setTrajectoryOutputFile(process.env.CPD_SAVE_TRAJECTORY_OUTPUT),t.setEventsLogDirectory(process.env.COPILOT_EVENTS_LOG_DIRECTORY),process.env.COPILOT_AGENT_ONLINE_EVALUATION_DISABLED!==void 0&&t.setDisableOnlineEvaluation(process.env.COPILOT_AGENT_ONLINE_EVALUATION_DISABLED==="true"),process.env.COPILOT_AGENT_ONLINE_EVALUATION_OUTPUT_FILE!==void 0&&t.setEnableOnlineEvaluationOutputFile(process.env.COPILOT_AGENT_ONLINE_EVALUATION_OUTPUT_FILE==="true"),process.env.COPILOT_FEATURE_FLAGS&&process.env.COPILOT_FEATURE_FLAGS.split(",").map(r=>r.trim()).filter(r=>r.length>0).forEach(r=>t.setFeatureFlagEnabled(r)),process.env.COPILOT_EXPERIMENTS&&process.env.COPILOT_EXPERIMENTS.split(",").map(r=>{let[a,s]=r.split(":");t.setExperiment(a,s)}),process.env.COPILOT_AGENT_ERROR_CODES_TO_RETRY){let r=process.env.COPILOT_AGENT_ERROR_CODES_TO_RETRY.split(",").map(a=>parseInt(a.trim(),10));t.setRetryPolicy({errorCodesToRetry:r})}if(process.env.COPILOT_AGENT_REQUEST_HEADERS)try{let r=JSON.parse(process.env.COPILOT_AGENT_REQUEST_HEADERS);t.setRequestHeaders(r)}catch{}let n=process.env.COPILOT_AGENT_TIMEOUT_MIN?parseInt(process.env.COPILOT_AGENT_TIMEOUT_MIN,10):void 0;n!==void 0&&!Number.isNaN(n)&&t.setTimeoutMs(n*60*1e3);let I=process.env.COPILOT_AGENT_START_TIME_SEC?parseInt(process.env.COPILOT_AGENT_START_TIME_SEC,10):void 0;return I!==void 0&&!Number.isNaN(I)&&t.setStartTimeMs(I*1e3),t.build()}c();c();var fGt=dt(YGt(),1);import{exec as vGt,execFile as cQl}from"child_process";c();c();c();var Z$=null;function NM(){return!!Z$}function W5e(){if(!Z$)throw new Error("Settings have not been initialized");return Z$}function VGt(t){return Z$=t,t}function g$(){Z$=null}c();function Ii(t,e){return t?.featureFlags?.[e]??!1}function QGt(t,e){return t?.experiments?.[e]}function y5e(t){return Object.keys(t.featureFlags??{}).filter(e=>t.featureFlags?.[e]).join(",")}var oQl=["token","secret","key","hmacKey","modelBasedRetrievalToken","metisApiKey"];function E5e(t,e=[]){for(let[l,n]of Object.entries(t))if(n!==null)switch(typeof n){case"object":E5e(n,e);break;case"undefined":break;default:if(oQl.includes(l)){let I=n.toString().trim();I!=""&&e.push(I)}break}return e}function wGt(t,e){if(isNaN(e)||!isFinite(e)||e<=0)return{isWithin:!1,withinMs:e};if(e>1)return{isWithin:!1,withinMs:e};if(!t.timeoutMs)return{isWithin:!1,withinMs:e};let l=t.timeoutMs*e;return t.startTimeMs?{isWithin:Date.now()-t.startTimeMs>=t.timeoutMs-l,withinMs:l}:{isWithin:!1,withinMs:l}}c();import*as FGt from"process";function R5e(t){let e=FGt.env[t];if(e&&e.trim()!=="")return e}var iQl=[/\b(?:eyJ0eXAiOi|eyJhbGciOi|eyJ4NXQiOi|eyJraWQiOi)[^\s'";]+/g,/\bBearer\s+[^\s'";]+/g,/\b(?:Password|Pwd)=(?:[^\s'";]+|"[^"]+")/gi,/\s+-(?:Password|Pwd)\s+(?:[^\s'";]+|"[^"]+")/gi,/\bv1\.[0-9A-Fa-f]{40}\b/g,/\bgh[pousr]{1}_[A-Za-z0-9]{36}\b/g,/\bgithub_pat_[0-9][A-Za-z0-9]{21}_[A-Za-z0-9]{59}\b/g,/(?:[a-zA-Z][a-zA-Z\d+-.]*):\/\/([a-zA-Z\d\-._~!$&'()*+,;=%]+):([a-zA-Z\d\-._~!$&'()*+,;=:%]*)@/g,/\b[0-9A-Za-z-_~.]{3}7Q~[0-9A-Za-z-_~.]{31}\b|\b[0-9A-Za-z-_~.]{3}8Q~[0-9A-Za-z-_~.]{34}\b/g,/\b[0-9A-Za-z+/]{76}(APIM|ACDb|\+(ABa|AMC|ASt))[0-9A-Za-z+/]{5}[AQgw]==/g,/\b[0-9A-Za-z+/]{33}(AIoT|\+(ASb|AEh|ARm))[A-P][0-9A-Za-z+/]{5}=/g,/\b[0-9A-Za-z_-]{44}AzFu[0-9A-Za-z\-_]{5}[AQgw]==/g,/\b[0-9A-Za-z]{42}AzSe[A-D][0-9A-Za-z]{5}\b/g,/\b[0-9A-Za-z+/]{42}\+ACR[A-D][0-9A-Za-z+/]{5}\b/g,/\b[0-9A-Za-z]{33}AzCa[A-P][0-9A-Za-z]{5}=/g,/\boy2[a-p][0-9a-z]{15}[aq][0-9a-z]{11}[eu][bdfhjlnprtvxz357][a-p][0-9a-z]{11}[aeimquy4]\b/g,/\bnpm_[0-9A-Za-z]{36}\b/g,/\bx-ghcr-signature=[^&]+/g],CGt="******",BY=class t{static singleton;static getInstance(){return t.singleton||(t.singleton=new t),t.singleton}secretValuesToFilter;runner;logger;constructor(){}setRunner(e){this.runner=e,this.logger=e.logger,this.secretValuesToFilter=void 0}filterSecrets(e){let l=typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"message"),n=l?e.message??e.toString():e,I=this.getSecretValues();for(let r of I)n=n.replaceAll(r,CGt);for(let r of iQl)n=n.replaceAll(r,CGt);return l?(e.message=n,e):n}filterSecretsFromJsonString(e){try{let l=JSON.parse(e),n=this.filterSecretsFromObj(l);return JSON.stringify(n)}catch{return this.filterSecrets(e)}}filterSecretsFromObj(e){if(e==null)return e;if(typeof e=="string")return this.filterSecrets(e);if(typeof e=="number"){let l=this.filterSecrets(e.toString()),n=Number(l);return isNaN(n)?l:n}if(Array.isArray(e))return e.map(l=>this.filterSecretsFromObj(l));if(typeof e=="object"){let l={};for(let[n,I]of Object.entries(e))l[n]=this.filterSecretsFromObj(I);return l}return e}getSecretValues(){if(this.secretValuesToFilter)return this.secretValuesToFilter;let e={secretEnvVars:!1,runner:!1,settings:!1},l=new Set;for(let n of xpe){let I=R5e(n);I&&Y5e(l,I)}if(e.secretEnvVars=!0,this.runner){for(let n of this.runner.sensitiveKeys){let I=R5e(n);I&&Y5e(l,I)}e.runner=!0}if(NM()){let n=E5e(W5e());for(let I of n)Y5e(l,I);e.settings=!0}return Object.values(e).every(n=>n)&&(this.secretValuesToFilter=l,this.logger?.debug("Caching secret values to filter from all sources.")),l}};function Y5e(t,e){t.add(e),t.add(Buffer.from(e,"utf8").toString("base64"))}function Spe(...t){let e=new Set(["DEBUG","COPILOT_AGENT_DEBUG",...t]);for(let l of e)if(process.env[l]==="1"||process.env[l]?.toLocaleLowerCase()==="true")return!0;return!1}var UH=class{logLevel;debugEnvironmentVariables;secretFilter=BY.getInstance();constructor(e,l){e===void 0?Spe(...l??[])?this.logLevel=15:this.logLevel=7:this.logLevel=e,this.debugEnvironmentVariables=l}filterSecrets(e){return typeof e=="string"?this.secretFilter.filterSecrets(e):this.secretFilter.filterSecrets(e)}shouldLog(e){return this.logLevel===void 0||(this.logLevel&e)===e}isDebug(){return Spe(...this.debugEnvironmentVariables??[])}};var K0=class{logger;constructor(e){this.logger=e}async exec(e,l,n,I=[]){let r=n?.silent??!1,a=n?.silentDebugLogging??!0;try{let s=(n?.isDirectAgentCommand?"Copilot: ":"")+(l?`${e} ${l.join(" ")}`:e);this.logger.startGroup(s,r?8:void 0);let o=await this._exec(e,l,n,I);if(o.error)throw o.error;return o.stdout&&(r?a&&this.logger.debug(o.stdout):this.logger.info(o.stdout)),o.stderr&&this.logger.error(o.stderr),0}catch(s){throw this.logger.error(s),s}finally{this.logger.endGroup(r?8:void 0)}}async execReturn(e,l,n,I=[]){let r=n?.silent??!1,a=n?.silentDebugLogging??!0;try{let s=(n?.isDirectAgentCommand?"Copilot: ":"")+(l?`${e} ${l.join(" ")}`:e);this.logger.startGroup(s,r?8:void 0);let o=await this._exec(e,l,n,I);if(o.error)throw o.error;return o.stdout&&(r?a&&this.logger.debug(o.stdout):this.logger.info(o.stdout)),o.stderr&&this.logger.error(o.stderr),{exitCode:o.exitCode,stdout:o.stdout,stderr:o.stderr}}catch(s){throw this.logger.error(s),s}finally{this.logger.endGroup(r?8:void 0)}}_exec(e,l,n,I=[]){n||(n={}),n.timeout||(n.timeout=9e5),l||(l=[]);let r={cwd:n.cwd,env:n.env,shell:n.shell,timeout:n.timeout};return new Promise((a,s)=>{let o=n.shell&&l?.length===0?vGt(e,r):n.shell?vGt(`${e} ${(0,fGt.default)(l)}`,r):cQl(e,l,r),d="",u="";o.stdout?.on("data",G=>{d+=G}),o.stderr?.on("data",G=>{u+=G}),o.on("close",(G,p)=>{if(G!==0&&!n?.ignoreReturnCode){let h=this.filterCommand(e,l,I),W=new Error(`Command failed with exit code ${G}: ${h}`);W.cmd=h,W.code=G,W.stdout=d,W.stderr=u,W.signal=p,s(W)}else a({error:null,stdout:d,stderr:u,exitCode:G})}),o.on("error",G=>{G.stdout=d,G.stderr=u,G.cmd=this.filterCommand(e,l,I),s(G)}),n.input&&(o.stdin?.write(n.input),o.stdin?.end())})}filterCommand(e,l=[],n){let I=l.reduce((r,a)=>(n.includes(a)?r.push("REDACTED"):r.push(a),r),[]);return`${e} ${I.join(" ")}`}};c();import{randomUUID as dQl}from"crypto";import{cpSync as uQl,existsSync as zGt,mkdtempSync as mQl,rmSync as GQl}from"fs";import{homedir as PGt,tmpdir as bQl}from"os";import{join as y$}from"path";c();var n3=class t extends Error{cmd;killed;code;signal;stdout="";stderr="";errorType;skipReport;constructor(e,l,n=!1){if(!l){let I=e.code,r=e.message;"stdout"in e&&"stderr"in e&&(r+=`
|
|
764
|
+
`)l.name="enter";else if(t===" ")l.name="tab";else if(t==="\b"||t==="\x1B\b")l.name="backspace",l.meta=t.charAt(0)==="\x1B";else if(t==="\x7F"||t==="\x1B\x7F")l.name="delete",l.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")l.name="escape",l.meta=t.length===2;else if(t===" "||t==="\x1B ")l.name="space",l.meta=t.length===2;else if(t.length===1&&t<="")l.name=String.fromCharCode(t.charCodeAt(0)+97-1),l.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")l.name="number";else if(t.length===1&&t>="a"&&t<="z")l.name=t;else if(t.length===1&&t>="A"&&t<="Z")l.name=t.toLowerCase(),l.shift=!0;else if(e=IAl.exec(t))l.meta=!0,l.shift=/^[A-Z]$/.test(e[1]);else if(e=rAl.exec(t)){let n=[...t];n[0]==="\x1B"&&n[1]==="\x1B"&&(l.option=!0);let I=[e[1],e[2],e[4],e[6]].filter(Boolean).join(""),r=(e[3]||e[5]||1)-1;l.ctrl=!!(r&4),l.meta=!!(r&10),l.shift=!!(r&1),l.code=I,l.name=Bat[I],l.shift=aAl(I)||l.shift,l.ctrl=sAl(I)||l.ctrl}return l},Sat=oAl;c();var Oat=dt(bl(),1);var iAl=()=>(0,Oat.useContext)(vGe),yU=iAl;var cAl=(t,e={})=>{let{stdin:l,setRawMode:n,internal_exitOnCtrlC:I,internal_eventEmitter:r}=yU();(0,Mve.useEffect)(()=>{if(e.isActive!==!1)return n(!0),()=>{n(!1)}},[e.isActive,n]),(0,Mve.useEffect)(()=>{if(e.isActive===!1)return;let a=s=>{let o=Sat(s),d={upArrow:o.name==="up",downArrow:o.name==="down",leftArrow:o.name==="left",rightArrow:o.name==="right",pageDown:o.name==="pagedown",pageUp:o.name==="pageup",return:o.name==="return",escape:o.name==="escape",ctrl:o.ctrl,shift:o.shift,tab:o.name==="tab",backspace:o.name==="backspace",delete:o.name==="delete",meta:o.meta||o.name==="escape"||o.option},u=o.ctrl?o.name:o.sequence;xat.includes(o.name)&&(u=""),u.startsWith("\x1B")&&(u=u.slice(1)),u.length===1&&typeof u[0]=="string"&&/[A-Z]/.test(u[0])&&(d.shift=!0),(!(u==="c"&&d.ctrl)||!I)&&Ow.batchedUpdates(()=>{t(u,d)})};return r?.on("input",a),()=>{r?.removeListener("input",a)}},[e.isActive,l,I,t])},EY=cAl;c();var dAl=dt(bl(),1);c();var Tat=dt(bl(),1);var uAl=()=>(0,Tat.useContext)(fGe),WN=uAl;c();var mAl=dt(bl(),1);c();var _ve=dt(bl(),1);c();var GAl=dt(bl(),1);c();var Uat=dt(bl(),1);var bAl=()=>{let{isScreenReaderEnabled:t}=(0,Uat.useContext)(Tw);return t},XJ=bAl;c();import{homedir as FPn}from"os";var hlt=dt(bl(),1);import{join as VFe}from"path";import{text as CPn}from"stream/consumers";c();c();var jGt=dt(hM(),1);c();c();c();c();var Bb=[];for(let t=0;t<256;++t)Bb.push((t+256).toString(16).slice(1));function WGt(t,e=0){return(Bb[t[e+0]]+Bb[t[e+1]]+Bb[t[e+2]]+Bb[t[e+3]]+"-"+Bb[t[e+4]]+Bb[t[e+5]]+"-"+Bb[t[e+6]]+Bb[t[e+7]]+"-"+Bb[t[e+8]]+Bb[t[e+9]]+"-"+Bb[t[e+10]]+Bb[t[e+11]]+Bb[t[e+12]]+Bb[t[e+13]]+Bb[t[e+14]]+Bb[t[e+15]]).toLowerCase()}c();import{randomFillSync as IQl}from"crypto";var Bpe=new Uint8Array(256),Jpe=Bpe.length;function g5e(){return Jpe>Bpe.length-16&&(IQl(Bpe),Jpe=0),Bpe.slice(Jpe,Jpe+=16)}c();c();import{randomUUID as rQl}from"crypto";var N5e={randomUUID:rQl};function aQl(t,e,l){if(N5e.randomUUID&&!e&&!t)return N5e.randomUUID();t=t||{};let n=t.random??t.rng?.()??g5e();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){if(l=l||0,l<0||l+16>e.length)throw new RangeError(`UUID byte range ${l}:${l+15} is out of buffer bounds`);for(let I=0;I<16;++I)e[l+I]=n[I];return e}return WGt(n)}var Ey=aQl;var gM=class{settings={};mergePartial(e,l){return{...e,...l}}setBlackbirdMode(e){return e!==void 0&&(e=="tool"||e=="initial-search")&&(this.settings.blackbird=this.mergePartial(this.settings.blackbird,{mode:e})),this}setSwebenchBaseCommit(e){return e!==void 0&&(this.settings.swebench_base_commit=e),this}setGithubUserName(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,name:e}})}return this}setGithubUserEmail(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,email:e}})}return this}setGithubToken(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{token:e})),this}setGithubServerUrl(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{serverUrl:e??"https://github.com"}),(!this.settings.github.host||!this.settings.github.hostProtocol)&&(this.settings.github=this.mergePartial(this.settings.github,new URL(e)))),this}setGithubHost(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{host:e})),this}setGithubHostProtocol(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{hostProtocol:e})),this}setGithubActorId(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,actorId:e}})}return this}setGithubActorLogin(e){if(e!==void 0){let l=this.settings.github?.user||{};this.settings.github=this.mergePartial(this.settings.github,{user:{...l,actorLogin:e}})}return this}setGithubRepoName(e){if(e!==void 0){let l=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,name:e}})}return this}setGithubRepoId(e){if(e!==void 0){let l=this.settings.github?.repo||{},n=Number(e);isNaN(n)||(this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,id:n}}))}return this}setGithubRepoOwnerName(e){if(e!==void 0){let l=this.settings.github?.owner||{};this.settings.github=this.mergePartial(this.settings.github,{owner:{...l,name:e}})}return this}setGithubRepoOwnerId(e){if(e!==void 0){let l=this.settings.github?.owner||{},n=Number(e);isNaN(n)||(this.settings.github=this.mergePartial(this.settings.github,{owner:{...l,id:n}}))}return this}setGithubRepoBranch(e){if(e){let l=e.replace(/^refs\/heads\//,"");if(l.length===0)return this;let n=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...n,branch:l}})}return this}setGithubRepoCommit(e){if(e!==void 0){let l=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,commit:e}})}return this}setGithubRepoReadWrite(e){if(e!==void 0){let l=this.settings.github?.repo||{};this.settings.github=this.mergePartial(this.settings.github,{repo:{...l,readWrite:e}})}return this}setProblemStatement(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{statement:e})),this}setProblemContentFilterMode(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{contentFilterMode:e})),this}setProblemAction(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{action:e})),this}setCustomAgentName(e){return e!==void 0&&(this.settings.problem=this.mergePartial(this.settings.problem,{customAgentName:e})),this}setGithubIssueNumber(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{issue:{number:e}})),this}setGithubPRCommitCount(e){if(e!==void 0){let l=this.settings.github?.pr||{};this.settings.github=this.mergePartial(this.settings.github,{pr:{...l,commitCount:e}})}return this}setInstanceId(e){return this.settings.service=this.mergePartial(this.settings.service,{instance:{id:e??Ey()}}),this}setAgentModel(e){if(e!==void 0){let l=this.settings.service?.agent||{};this.settings.service=this.mergePartial(this.settings.service,{agent:{...l,model:e}})}return this}setRequestHeaders(e){if(e!==void 0){let l=this.settings.service?.agent||{};this.settings.service=this.mergePartial(this.settings.service,{agent:{...l,requestHeaders:e}})}return this}setRetryPolicy(e){if(e!==void 0){let l=this.settings.service?.agent||{};this.settings.service=this.mergePartial(this.settings.service,{agent:{...l,retryPolicy:e}})}return this}setCallbackUrl(e){return e!==void 0&&(this.settings.service=this.mergePartial(this.settings.service,{callback:{url:e}})),this}setGitHubUploadsUrl(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{uploadsUrl:e})),this}setGitHubDownloadsUrl(e){return e!==void 0&&(this.settings.github=this.mergePartial(this.settings.github,{downloadsUrl:e})),this}setAipSweAgentToken(e){return e!==void 0&&(this.settings.api=this.mergePartial(this.settings.api,{aipSweAgent:{token:e}})),this}setAnthropicApiKey(e){return e!==void 0&&(this.settings.api=this.mergePartial(this.settings.api,{anthropic:{key:e}})),this}setOpenAiApiKey(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,apiKey:e}})}return this}setOpenAiBaseUrl(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,baseUrl:e}})}return this}setAzureOpenAiUrl(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azure:{...l.azure,url:e}}})}return this}setAzureOpenAiApiVersion(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azure:{...l.azure,apiVersion:e}}})}return this}setAzureOpenAiKeyVaultUri(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azureKeyVaultUri:e}})}return this}setAzureOpenAiSecretName(e){if(e!==void 0){let l=this.settings.api?.openai||{};this.settings.api=this.mergePartial(this.settings.api,{openai:{...l,azureSecretName:e}})}return this}setCopilotUrl(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,url:e}})}return this}setCopilotIntegrationId(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,integrationId:e}})}return this}setCopilotHmacKey(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,hmacKey:e}})}return this}setCopilotToken(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,token:e}})}return this}setCopilotAzureKeyVaultUri(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,azureKeyVaultUri:e}})}return this}setCopilotSessionId(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,sessionId:e}})}return this}setCopilotPreviousSessionIds(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,previousSessionIds:e.split(",").map(n=>n.trim()).filter(n=>n.length>0)}})}return this}setCopilotUseSessions(e){if(e!==void 0){let l=this.settings.api?.copilot||{};this.settings.api=this.mergePartial(this.settings.api,{copilot:{...l,useSessions:e}})}return this}setCopilotJobNonce(e){return e!==void 0&&(this.settings.job=this.mergePartial(this.settings.job,{nonce:e})),this}setTrajectoryOutputFile(e){return e!==void 0&&(this.settings.trajectory=this.mergePartial(this.settings.trajectory,{outputFile:e})),this}setEventsLogDirectory(e){return e!==void 0&&(this.settings.logs=this.mergePartial(this.settings.logs,{eventsLogDir:e})),this}setDisableOnlineEvaluation(e){return e==!0&&this.settings.onlineEvaluation?.disableOnlineEvaluation!==!0&&(this.settings.onlineEvaluation=this.mergePartial(this.settings.onlineEvaluation,{disableOnlineEvaluation:e})),this}setEnableOnlineEvaluationOutputFile(e){return e==!0&&this.settings.onlineEvaluation?.enableOnlineEvaluationOutputFile!==!0&&(this.settings.onlineEvaluation=this.mergePartial(this.settings.onlineEvaluation,{enableOnlineEvaluationOutputFile:e})),this}setGitHubMCPServerToken(e){return e!==void 0&&(this.settings.api=this.mergePartial(this.settings.api,{github:{mcpServerToken:e}})),this}setFeatureFlagEnabled(e){return this.settings.featureFlags=this.mergePartial(this.settings.featureFlags,{[e]:!0}),this}setExperiment(e,l){return this.settings.experiments=this.mergePartial(this.settings.experiments,{[e]:l}),this}setTimeoutMs(e){return e!==void 0&&(this.settings.timeoutMs=e),this}setStartTimeMs(e){return e!==void 0&&(this.settings.startTimeMs=e),this}build(){return this.settings}};var xpe=["GITHUB_TOKEN","GITHUB_COPILOT_API_TOKEN","CAPI_HMAC_KEY","CAPI_HMAC_KEY_OVERRIDE","ANTHROPIC_API_KEY","AIP_SWE_AGENT_TOKEN","CAPI_AZURE_KEY_VAULT_URI","COPILOT_JOB_NONCE","GITHUB_MCP_SERVER_TOKEN","OPENAI_BASE_URL","OPENAI_API_KEY","COPILOT_AGENT_REQUEST_HEADERS","AZURE_OPENAI_API_KEY","AZURE_OPENAI_API_ENDPOINT","AZURE_OPENAI_KEY_VAULT_URI","AZURE_OPENAI_KEY_VAULT_SECRET_NAME","BLACKBIRD_AUTH_METIS_API_KEY","BLACKBIRD_AUTH_MODEL_BASED_RETRIEVAL_TOKEN"],yGt=["COPILOT_CALLBACK_URL","COPILOT_AGENT_MODEL","COPILOT_AGENT_JOB_ID","COPILOT_AGENT_PROMPT","COPILOT_AGENT_PUSH","COPILOT_FIREWALL_ENABLED","COPILOT_FIREWALL_ALLOW_LIST","GITHUB_COPILOT_INTEGRATION_ID","COPILOT_INTEGRATION_ID_OVERRIDE","COPILOT_AGENT_SESSION_ID","COPILOT_AGENT_PREVIOUS_SESSION_IDS","COPILOT_AGENT_EVENT_URL","COPILOT_AGENT_EVENT_TYPE","COPILOT_AGENT_ACTOR","COPILOT_AGENT_ACTOR_ID",...xpe];async function EGt(){let t=new gM;t.setGithubServerUrl(process.env.GITHUB_SERVER_URL).setGithubHost(process.env.GITHUB_HOST).setGithubHostProtocol(process.env.GITHUB_HOST_PROTOCOL).setGithubToken(process.env.GITHUB_TOKEN).setGithubUserName(process.env.COPILOT_AGENT_COMMIT_LOGIN).setGithubUserEmail(process.env.COPILOT_AGENT_COMMIT_EMAIL).setGithubRepoOwnerId(process.env.GITHUB_REPOSITORY_OWNER_ID).setGithubRepoOwnerName(process.env.GITHUB_REPOSITORY_OWNER).setGithubRepoId(process.env.GITHUB_REPOSITORY_ID).setGithubRepoName(process.env.GITHUB_REPOSITORY).setGithubRepoBranch(process.env.COPILOT_AGENT_BRANCH_NAME).setGithubRepoCommit(process.env.COPILOT_AGENT_BASE_COMMIT),process.env.COPILOT_AGENT_PUSH!==void 0&&t.setGithubRepoReadWrite(process.env.COPILOT_AGENT_PUSH==="true");let e=process.env.COPILOT_AGENT_ISSUE_NUMBER?parseInt(process.env.COPILOT_AGENT_ISSUE_NUMBER,10):void 0;isNaN(e)||t.setGithubIssueNumber(e),t.setGithubPRCommitCount(process.env.COPILOT_AGENT_PR_COMMIT_COUNT?parseInt(process.env.COPILOT_AGENT_PR_COMMIT_COUNT,10):void 0),t.setProblemStatement(process.env.COPILOT_AGENT_PROMPT).setProblemContentFilterMode(process.env.COPILOT_AGENT_CONTENT_FILTER_MODE).setCustomAgentName(process.env.COPILOT_CUSTOM_AGENT);let l=process.env.COPILOT_AGENT_ACTION;if(l&&["fix","fix-pr-comment"].includes(l)&&t.setProblemAction(l),process.env.COPILOT_AGENT_ACTOR_ID&&t.setGithubActorId(parseInt(process.env.COPILOT_AGENT_ACTOR_ID,10)),process.env.COPILOT_AGENT_ACTOR&&t.setGithubActorLogin(process.env.COPILOT_AGENT_ACTOR),t.setInstanceId(process.env.COPILOT_AGENT_JOB_ID).setCopilotJobNonce(process.env.COPILOT_JOB_NONCE).setAgentModel(process.env.COPILOT_AGENT_MODEL).setCallbackUrl(process.env.COPILOT_AGENT_CALLBACK_URL).setGitHubUploadsUrl(process.env.GITHUB_UPLOADS_URL).setGitHubDownloadsUrl(process.env.GITHUB_DOWNLOADS_URL),t.setAipSweAgentToken(process.env.AIP_SWE_AGENT_TOKEN).setAnthropicApiKey(process.env.ANTHROPIC_API_KEY).setCopilotUrl(process.env.COPILOT_API_URL).setCopilotIntegrationId(process.env.GITHUB_COPILOT_INTEGRATION_ID).setCopilotHmacKey(process.env.CAPI_HMAC_KEY).setCopilotToken(process.env.GITHUB_COPILOT_API_TOKEN).setCopilotAzureKeyVaultUri(process.env.CAPI_AZURE_KEY_VAULT_URI).setBlackbirdMode(process.env.BLACKBIRD_MODE||"initial-search").setCopilotSessionId(process.env.COPILOT_AGENT_SESSION_ID).setCopilotPreviousSessionIds(process.env.COPILOT_AGENT_PREVIOUS_SESSION_IDS).setSwebenchBaseCommit(process.env.SWEBENCH_BASE_COMMIT).setGitHubMCPServerToken(process.env.GITHUB_MCP_SERVER_TOKEN).setAzureOpenAiKeyVaultUri(process.env.AZURE_OPENAI_KEY_VAULT_URI).setAzureOpenAiSecretName(process.env.AZURE_OPENAI_KEY_VAULT_SECRET_NAME).setOpenAiBaseUrl(process.env.OPENAI_BASE_URL).setOpenAiApiKey(process.env.AZURE_OPENAI_API_KEY||process.env.OPENAI_API_KEY).setAzureOpenAiUrl(process.env.AZURE_OPENAI_API_ENDPOINT).setAzureOpenAiApiVersion(process.env.AZURE_OPENAI_API_VERSION),process.env.COPILOT_USE_SESSIONS!==void 0&&t.setCopilotUseSessions(process.env.COPILOT_USE_SESSIONS==="true"),t.setTrajectoryOutputFile(process.env.CPD_SAVE_TRAJECTORY_OUTPUT),t.setEventsLogDirectory(process.env.COPILOT_EVENTS_LOG_DIRECTORY),process.env.COPILOT_AGENT_ONLINE_EVALUATION_DISABLED!==void 0&&t.setDisableOnlineEvaluation(process.env.COPILOT_AGENT_ONLINE_EVALUATION_DISABLED==="true"),process.env.COPILOT_AGENT_ONLINE_EVALUATION_OUTPUT_FILE!==void 0&&t.setEnableOnlineEvaluationOutputFile(process.env.COPILOT_AGENT_ONLINE_EVALUATION_OUTPUT_FILE==="true"),process.env.COPILOT_FEATURE_FLAGS&&process.env.COPILOT_FEATURE_FLAGS.split(",").map(r=>r.trim()).filter(r=>r.length>0).forEach(r=>t.setFeatureFlagEnabled(r)),process.env.COPILOT_EXPERIMENTS&&process.env.COPILOT_EXPERIMENTS.split(",").map(r=>{let[a,s]=r.split(":");t.setExperiment(a,s)}),process.env.COPILOT_AGENT_ERROR_CODES_TO_RETRY){let r=process.env.COPILOT_AGENT_ERROR_CODES_TO_RETRY.split(",").map(a=>parseInt(a.trim(),10));t.setRetryPolicy({errorCodesToRetry:r})}if(process.env.COPILOT_AGENT_REQUEST_HEADERS)try{let r=JSON.parse(process.env.COPILOT_AGENT_REQUEST_HEADERS);t.setRequestHeaders(r)}catch{}let n=process.env.COPILOT_AGENT_TIMEOUT_MIN?parseInt(process.env.COPILOT_AGENT_TIMEOUT_MIN,10):void 0;n!==void 0&&!Number.isNaN(n)&&t.setTimeoutMs(n*60*1e3);let I=process.env.COPILOT_AGENT_START_TIME_SEC?parseInt(process.env.COPILOT_AGENT_START_TIME_SEC,10):void 0;return I!==void 0&&!Number.isNaN(I)&&t.setStartTimeMs(I*1e3),t.build()}c();c();var fGt=dt(YGt(),1);import{exec as vGt,execFile as cQl}from"child_process";c();c();c();var Z$=null;function NM(){return!!Z$}function W5e(){if(!Z$)throw new Error("Settings have not been initialized");return Z$}function VGt(t){return Z$=t,t}function g$(){Z$=null}c();function Ii(t,e){return t?.featureFlags?.[e]??!1}function QGt(t,e){return t?.experiments?.[e]}function y5e(t){return Object.keys(t.featureFlags??{}).filter(e=>t.featureFlags?.[e]).join(",")}var oQl=["token","secret","key","hmacKey","modelBasedRetrievalToken","metisApiKey"];function E5e(t,e=[]){for(let[l,n]of Object.entries(t))if(n!==null)switch(typeof n){case"object":E5e(n,e);break;case"undefined":break;default:if(oQl.includes(l)){let I=n.toString().trim();I!=""&&e.push(I)}break}return e}function wGt(t,e){if(isNaN(e)||!isFinite(e)||e<=0)return{isWithin:!1,withinMs:e};if(e>1)return{isWithin:!1,withinMs:e};if(!t.timeoutMs)return{isWithin:!1,withinMs:e};let l=t.timeoutMs*e;return t.startTimeMs?{isWithin:Date.now()-t.startTimeMs>=t.timeoutMs-l,withinMs:l}:{isWithin:!1,withinMs:l}}c();import*as FGt from"process";function R5e(t){let e=FGt.env[t];if(e&&e.trim()!=="")return e}var iQl=[/\b(?:eyJ0eXAiOi|eyJhbGciOi|eyJ4NXQiOi|eyJraWQiOi)[^\s'";]+/g,/\bBearer\s+[^\s'";]+/g,/\b(?:Password|Pwd)=(?:[^\s'";]+|"[^"]+")/gi,/\s+-(?:Password|Pwd)\s+(?:[^\s'";]+|"[^"]+")/gi,/\bv1\.[0-9A-Fa-f]{40}\b/g,/\bgh[pousr]{1}_[A-Za-z0-9]{36}\b/g,/\bgithub_pat_[0-9][A-Za-z0-9]{21}_[A-Za-z0-9]{59}\b/g,/(?:[a-zA-Z][a-zA-Z\d+-.]*):\/\/([a-zA-Z\d\-._~!$&'()*+,;=%]+):([a-zA-Z\d\-._~!$&'()*+,;=:%]*)@/g,/\b[0-9A-Za-z-_~.]{3}7Q~[0-9A-Za-z-_~.]{31}\b|\b[0-9A-Za-z-_~.]{3}8Q~[0-9A-Za-z-_~.]{34}\b/g,/\b[0-9A-Za-z+/]{76}(APIM|ACDb|\+(ABa|AMC|ASt))[0-9A-Za-z+/]{5}[AQgw]==/g,/\b[0-9A-Za-z+/]{33}(AIoT|\+(ASb|AEh|ARm))[A-P][0-9A-Za-z+/]{5}=/g,/\b[0-9A-Za-z_-]{44}AzFu[0-9A-Za-z\-_]{5}[AQgw]==/g,/\b[0-9A-Za-z]{42}AzSe[A-D][0-9A-Za-z]{5}\b/g,/\b[0-9A-Za-z+/]{42}\+ACR[A-D][0-9A-Za-z+/]{5}\b/g,/\b[0-9A-Za-z]{33}AzCa[A-P][0-9A-Za-z]{5}=/g,/\boy2[a-p][0-9a-z]{15}[aq][0-9a-z]{11}[eu][bdfhjlnprtvxz357][a-p][0-9a-z]{11}[aeimquy4]\b/g,/\bnpm_[0-9A-Za-z]{36}\b/g,/\bx-ghcr-signature=[^&]+/g],CGt="******",BY=class t{static singleton;static getInstance(){return t.singleton||(t.singleton=new t),t.singleton}secretValuesToFilter;runner;logger;constructor(){}setRunner(e){this.runner=e,this.logger=e.logger,this.secretValuesToFilter=void 0}filterSecrets(e){let l=typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"message"),n=l?e.message??e.toString():e,I=this.getSecretValues();for(let r of I)n=n.replaceAll(r,CGt);for(let r of iQl)n=n.replaceAll(r,CGt);return l?(e.message=n,e):n}filterSecretsFromJsonString(e){try{let l=JSON.parse(e),n=this.filterSecretsFromObj(l);return JSON.stringify(n)}catch{return this.filterSecrets(e)}}filterSecretsFromObj(e){if(e==null)return e;if(typeof e=="string")return this.filterSecrets(e);if(typeof e=="number"){let l=this.filterSecrets(e.toString()),n=Number(l);return isNaN(n)?l:n}if(Array.isArray(e))return e.map(l=>this.filterSecretsFromObj(l));if(typeof e=="object"){let l={};for(let[n,I]of Object.entries(e))l[n]=this.filterSecretsFromObj(I);return l}return e}getSecretValues(){if(this.secretValuesToFilter)return this.secretValuesToFilter;let e={secretEnvVars:!1,runner:!1,settings:!1},l=new Set;for(let n of xpe){let I=R5e(n);I&&Y5e(l,I)}if(e.secretEnvVars=!0,this.runner){for(let n of this.runner.sensitiveKeys){let I=R5e(n);I&&Y5e(l,I)}e.runner=!0}if(NM()){let n=E5e(W5e());for(let I of n)Y5e(l,I);e.settings=!0}return Object.values(e).every(n=>n)&&(this.secretValuesToFilter=l,this.logger?.debug("Caching secret values to filter from all sources.")),l}};function Y5e(t,e){t.add(e),t.add(Buffer.from(e,"utf8").toString("base64"))}function Spe(...t){let e=new Set(["DEBUG","COPILOT_AGENT_DEBUG",...t]);for(let l of e)if(process.env[l]==="1"||process.env[l]?.toLocaleLowerCase()==="true")return!0;return!1}var UH=class{logLevel;debugEnvironmentVariables;secretFilter=BY.getInstance();constructor(e,l){e===void 0?Spe(...l??[])?this.logLevel=15:this.logLevel=7:this.logLevel=e,this.debugEnvironmentVariables=l}filterSecrets(e){return typeof e=="string"?this.secretFilter.filterSecrets(e):this.secretFilter.filterSecrets(e)}shouldLog(e){return this.logLevel===void 0||(this.logLevel&e)===e}isDebug(){return Spe(...this.debugEnvironmentVariables??[])}};var K0=class{logger;constructor(e){this.logger=e}async exec(e,l,n,I=[]){let r=n?.silent??!1,a=n?.silentDebugLogging??!0;try{let s=(n?.isDirectAgentCommand?"Copilot: ":"")+(l?`${e} ${l.join(" ")}`:e);this.logger.startGroup(s,r?8:void 0);let o=await this._exec(e,l,n,I);if(o.error)throw o.error;return o.stdout&&(r?a&&this.logger.debug(o.stdout):this.logger.info(o.stdout)),o.stderr&&this.logger.error(o.stderr),0}catch(s){throw this.logger.error(s),s}finally{this.logger.endGroup(r?8:void 0)}}async execReturn(e,l,n,I=[]){let r=n?.silent??!1,a=n?.silentDebugLogging??!0;try{let s=(n?.isDirectAgentCommand?"Copilot: ":"")+(l?`${e} ${l.join(" ")}`:e);this.logger.startGroup(s,r?8:void 0);let o=await this._exec(e,l,n,I);if(o.error)throw o.error;return o.stdout&&(r?a&&this.logger.debug(o.stdout):this.logger.info(o.stdout)),o.stderr&&this.logger.error(o.stderr),{exitCode:o.exitCode,stdout:o.stdout,stderr:o.stderr}}catch(s){throw this.logger.error(s),s}finally{this.logger.endGroup(r?8:void 0)}}_exec(e,l,n,I=[]){n||(n={}),n.timeout||(n.timeout=9e5),l||(l=[]);let r={cwd:n.cwd,env:n.env,shell:n.shell,timeout:n.timeout};return new Promise((a,s)=>{let o=n.shell&&l?.length===0?vGt(e,r):n.shell?vGt(`${e} ${(0,fGt.default)(l)}`,r):cQl(e,l,r),d="",u="";o.stdout?.on("data",G=>{d+=G}),o.stderr?.on("data",G=>{u+=G}),o.on("close",(G,p)=>{if(G!==0&&!n?.ignoreReturnCode){let h=this.filterCommand(e,l,I),W=new Error(`Command failed with exit code ${G}: ${h}`);W.cmd=h,W.code=G,W.stdout=d,W.stderr=u,W.signal=p,s(W)}else a({error:null,stdout:d,stderr:u,exitCode:G})}),o.on("error",G=>{G.stdout=d,G.stderr=u,G.cmd=this.filterCommand(e,l,I),s(G)}),n.input&&(o.stdin?.write(n.input),o.stdin?.end())})}filterCommand(e,l=[],n){let I=l.reduce((r,a)=>(n.includes(a)?r.push("REDACTED"):r.push(a),r),[]);return`${e} ${I.join(" ")}`}};c();import{randomUUID as dQl}from"crypto";import{cpSync as uQl,existsSync as zGt,mkdtempSync as mQl,rmSync as GQl}from"fs";import{homedir as PGt,tmpdir as bQl}from"os";import{join as y$}from"path";c();var n3=class t extends Error{cmd;killed;code;signal;stdout="";stderr="";errorType;skipReport;constructor(e,l,n=!1){if(!l){let I=e.code,r=e.message;"stdout"in e&&"stderr"in e&&(r+=`
|
|
765
765
|
`+e.stderr?.trim()+`
|
|
766
766
|
`+e.stdout?.trim()),r.includes("GH013: Repository rule violations found")||r.includes("unknown revision or path not in the working tree")?(l="protection rule",n=!0):r.includes("You may want to try Git Large File Storage")||r.includes("GH001: Large files detected")?(l="LFS",n=!0):I===1&&(r.includes("hook failed")||r.includes("husky -")||r.includes("hook declined")||r.includes("hook exited")||r.includes("vite ")||r.includes("eslint "))?(l="hook",n=!0):r.includes("use 'git pull' before pushing again")?(l="pull first",n=!0):r.includes("fetch first")?(l="fetch first",n=!0):r.includes("The requested URL returned error: 403")?(l="access denied",n=!1):r.includes("unexpected disconnect")?(l="disconnect",n=!1):(l="unknown",n=!(I==="ENOENT"||I===127||I===128||r.includes("fatal: ")))}super(`${l} git error: ${e.message}`);for(let I of Object.keys(e))this[I]=e[I];this.errorType=l??"unknown",this.skipReport=n,this.cause=e,Object.setPrototypeOf(this,t.prototype),this.name="GitError"}};c();var V5e="https://api.githubcopilot.com";function HGt(t){if(!t.github?.user?.name)throw new Error("GitHub user name is required");return t.github.user.name}function XGt(t){if(!t.github?.user?.email)throw new Error("GitHub user email is required");return t.github.user.email}function kGt(t){let e=t.github?.user?.actorLogin,l=t.github?.user?.actorId;if(!(!e||!l))return{login:e,id:l}}function LGt(t){if(!t.github?.serverUrl)throw new Error("GitHub server URL is required");return t.github.serverUrl}function JGt(t){if(!t.github?.host)throw new Error("GitHub host is required");return t.github.host}function BGt(t){if(!t.github?.hostProtocol)throw new Error("GitHub host protocol is required");return t.github.hostProtocol}function I3(t){if(!t.github?.token)throw new Error("GitHub token is required");return t.github.token}function Ope(t){if(!t.github?.repo?.name)throw new Error("GitHub repository name is required");return t.github.repo.name}function r3(t){if(!t.service?.instance?.id)throw new Error("Instance ID is required");return t.service.instance.id}function xGt(t){if(!t.service?.callback?.url)throw new Error("Callback URL is required");return t.service.callback.url}function SGt(t){if(!t.api?.anthropic?.key)throw new Error("Anthropic API key is required");return t.api.anthropic.key}function OGt(t){if(!t.api?.openai?.apiKey)throw new Error("OpenAI API key is required");return t.api.openai.apiKey}function TGt(t){if(!t.api?.openai?.azure?.url)throw new Error("Azure OpenAI deployment URL is required");return t.api.openai.azure.url}function UGt(t,e=V5e){let l=t.api?.copilot?.url||e;if(!l)throw new Error("Copilot URL is required");return l}function N$(t){if(!t.api?.copilot?.integrationId)throw new Error("Copilot integration ID is required");return t.api.copilot.integrationId}function W$(t){if(!t.api?.copilot?.token)throw new Error("Copilot token is required");return t.api.copilot.token}function MGt(t){if(!t.github?.uploadsUrl)throw new Error("GitHub uploads URL is required");return t.github.uploadsUrl}function _Gt(t){if(!t.github?.downloadsUrl)throw new Error("GitHub downloads URL is required");return t.github.downloadsUrl}c();function DGt(t){return t.startsWith('"')&&t.endsWith('"')?(t=t.substring(1,t.length-1),t.replace(/\\([abfnrtv\\"]|[0-7]{1,3})/g,(e,l)=>{switch(l[0]){case"a":return"\x07";case"b":return"\b";case"f":return"\f";case"n":return`
|
|
767
767
|
`;case"r":return"\r";case"t":return" ";case"v":return"\v";case"\\":return"\\";case'"':return'"';default:return String.fromCharCode(parseInt(l,8))}})):t}var Q5e='!f() { test "$1" = get && echo "password=$GITHUB_TOKEN"; }; f',BZ=class{constructor(e,l){this.logger=e;this.exec=l}resolveGitUrl(e,l){let n=null,I="";try{I=LGt(e),n=new URL(I)}catch(r){this.logger.warning(`Failed to parse GITHUB_SERVER_URL "${I}". Falling back to GITHUB_HOST and GITHUB_GIT_HOST_PROTOCOL. Error: ${r.message??r}`);let a=BGt(e),s=JGt(e);try{n=URL.parse(`${a}://${s}`)}catch(o){this.logger.warning(`Unable to determine GITHUB_SERVER_URL. Falling back to "https://github.com". Error: ${o.message??o}`),n=URL.parse("https://github.com")}}if(!n)throw new Error("Could not determine the Git URL");return l&&(n.pathname=l),this.logger.info(`Using Git URL: ${n.href}`),n}async cloneRepo(e,l,n,I,r,a){process.env.GITHUB_TOKEN=process.env.GITHUB_TOKEN??I3(e);let o=this.resolveGitUrl(e,l).href;if(r=r??1,r+=1,r<2&&(r=2),zGt(y$(n,".git"))){let E={cwd:n,silent:!0};if(this.logger.debug(`Repo ${l} already cloned to ${n}`),this.logger.debug(`Configuring git credential helper for ${l}`),await this.setGitConfig(e,E,!1),await this.execGit(["remote","set-url","origin",o],E,[o]),(await this.execGit(["rev-parse","--abbrev-ref","HEAD"],E)).stdout.toString().trim()===I){this.logger.debug(`Already on branch ${I} in repo ${l}`);return}if((await this.execGit(["branch","--list",I],E,[I])).stdout.toString().trim().length>0){this.logger.debug(`Local branch ${I} already exists in repo ${l}`),this.logger.debug(`Checking out branch ${I}`),await this.execGit(["checkout",I],E,[I]);return}if(await this.hasRemoteBranch(I,n)){this.logger.debug(`Remote branch ${I} exists in repo ${l}`);let{stdout:C}=await this.execGit(["rev-parse","--is-shallow-repository"],E);C.trim()==="true"?await this.execGit(["fetch","--unshallow","--update-head-ok","origin","+refs/heads/*:refs/heads/*"],E):await this.execGit(["fetch","origin"],E),this.logger.debug(`Pulling branch ${I} with depth ${r}`),await this.execGit(["pull","--depth",r.toString(),"origin",I],E,[r.toString(),I]),this.logger.debug(`Checking out branch ${I}`),await this.execGit(["checkout",I],E,[I]);return}if(a){this.logger.debug(`Base commit ${a} provided for branch ${I} in repo ${l}`),this.logger.debug(`Checking out branch ${I}`),await this.execGit(["checkout","-b",I,a],E,[I,a]);return}throw new Error(`Branch ${I} does not exist in repo ${l} and no base commit was provided.`)}this.logger.debug(`Repo ${l} not cloned to ${n} yet`);let u=process.env.HOME||PGt(),G=mQl(y$(bQl(),`cpd-${dQl()}`));zGt(y$(u,".gitconfig"))&&uQl(y$(u,".gitconfig"),y$(G,".gitconfig"));let p={...process.env,HOME:G},h={silent:!0,env:p},W={cwd:n,silent:!0,env:p};await this.setGitConfig(e,h,!0);try{this.logger.debug(`Cloning repo ${l} to ${n} with branch ${I} and depth ${r}`),await this.execGit(["clone","-b",I,"--single-branch","--depth",r.toString(),o,n],h,[o,n,I,r.toString()])}catch(E){if(this.logger.debug(`Error cloning repo ${l} to ${n}: ${E}`),a)this.logger.debug(`Base commit ${a} provided. Checking out branch ${I}`),await this.execGit(["clone",o,n],h,[o,n]),await this.execGit(["checkout","-b",I,a],W,[I,a]);else throw new Error(`Branch ${I} does not exist in repo ${l} and no base commit was provided.`)}finally{await this.cleanGitConfig(h,!0,!0)}await this.setGitConfig(e,W,!1)}async commitChanges(e,l,n,I,r=!1,a=!1){process.env.HOME||(process.env.HOME=PGt());let s={cwd:n,silent:!0},o=kGt(e);if(o){let G=`Co-authored-by: ${o.login} <${o.id}+${o.login}@users.noreply.github.com>`;I=I.trim()+`
|
|
@@ -1619,7 +1619,7 @@ ${IYt()}
|
|
|
1619
1619
|
<reminder>
|
|
1620
1620
|
The user may have mentioned images, if so these will have been attached to this message, in the order they were mentioned
|
|
1621
1621
|
</reminder>`),l.trim()},NNe={completeAsSoonAsPossible:"You will soon run out of iterations. Begin making your final code changes. Complete any code changes that are still pending instead of performing validations.",commitNow:"You are imminently out of iterations. Call **report_progress** detailing your current progress. After doing so, provide a final answer as soon as possible.",finalAnswerNeeded:"You have reached the maximum number of iterations. Consider your work completed. I no longer need more changes. Please provide a final answer."},rYt=t=>`<reminder>You haven't committed any changes yet. Any code changes not meant to be temporary must be made in ${rre(t)}. Commit changes by using the **report_progress** tool.</reminder>`;c();function aYt(t){try{if(t)typeof t=="string"&&(t=JSON.parse(t));else return"no_messages";let e=t.map(l=>{let n="?";switch(l.role){case"system":n="s";break;case"assistant":n="a";break;case"user":n="u";break;case"tool":n="t";break}return{type:n,tool_call_id:l.role!=="tool"?void 0:l.tool_call_id,reasoning_text:l.role!=="assistant"?void 0:!!l.reasoning_text,content:typeof l.content=="string"?["text"]:l.content?.map(I=>I.type),tool_calls:l.role!=="assistant"?void 0:l.tool_calls?l.tool_calls.map(I=>I.id):[]}});return JSON.stringify(e,null,2)}catch{return"failed_to_summarize"}}function aP(t){let e=t.reasoning_text?.replace(/<\|im_sep\|>(\*\*.*?\*\*)?/g,`
|
|
1622
|
-
`)?.trim();return{...t,reasoning_text:e}}function sre(t){return structuredClone(t)}function sYt(t){return{...t,choices:t.choices.map(e=>{let l=aP(e.message);return{delta:{role:l.role,content:l.content,reasoning_opaque:l.reasoning_opaque,reasoning_text:l.reasoning_text,tool_calls:e.message.tool_calls?.map(n=>({...n,index:0}))},finish_reason:e.finish_reason,index:e.index}}),object:"chat.completion.chunk"}}function jB(t){return t.role==="user"&&Array.isArray(t.content)&&t.content.some(e=>e.type==="image_url")}function oYt(t,e){let l=e.indexOf(t);if(l!==-1)return l;let n=s=>(typeof s.content=="string"?[{type:"text",text:s.content}]:s.content).filter(o=>o.type==="text").map(o=>o.text).join("").trim(),I=n(t),r=e.map((s,o)=>s.role==="user"&&n(s)===I?o:-1).filter(s=>s!==-1),a=r.at(0)??-1;return r.length===1?a:-1}c();var eSe="/tmp/playwright-logs",kMl="0.0.40",tSe=[`@playwright/mcp@${kMl}`,"--viewport-size","1280, 720","--output-dir",eSe],Kir=[...tSe,"--isolated"];var lSe=class t extends Error{constructor(e){super(e),this.name="ImageSizeError",Object.setPrototypeOf(this,t.prototype)}},ore=2e3;async function JMl(t,e,l,n){let I={"Content-Type":"application/octet-stream",Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28",Authorization:"Bearer "+e},r=`${_Gt(n)}/${t}`;l.info(`Downloading image from ${r}`);try{let a=await fetch(r,{method:"GET",headers:I});if(l.info(`Response status: ${a.status} ${a.statusText}`),l.debug(`Download Response URL: ${a.url}`),!a.ok){l.info(`Failed to download image, status: ${a.status}, statusText: ${a.statusText}`);try{let p=await a.text();l.info(`Error response body: ${p}`)}catch(p){l.info(`Could not read error response body: ${p}`)}return{size:0}}let o=(await a.json()).url;if(!o)return l.error(`No asset URL found in response for image GUID: ${t}`),{size:0};let d=await fetch(o,{method:"GET"});if(!d.ok)return l.error(`Failed to download image: ${d.status} ${d.statusText}`),{size:0};let u=await d.arrayBuffer(),G=u.byteLength;return l.info(`Downloaded content size: ${e1(G)}`),{size:G,buffer:Buffer.from(u),mimeType:d.headers.get("content-type")||void 0}}catch(a){return l.error("Network error downloading image"),a instanceof Error&&(l.info(`Error message: ${a.message}`),l.info(`Error stack: ${a.stack}`)),{size:0}}}function nSe(t,e,l,n){let I=/<img\b[^>]*\bsrc="([^"]+)"[^>]*>/g,r=/!\[.*?\]\((.*?)\)/g,a=[];return a.push(...iYt(t,e,I,l,n)),a.push(...iYt(t,e,r,l,n)),a}function iYt(t,e,l,n,I){let r=t.matchAll(l),a=[],s=/\/([a-f0-9-]+)$/;for(let o of r){let d=OMl(o[1],e),u=TMl(o[1],e,I);if(d||u){let G=o[1].match(s),p={url:o[1],guid:"",kind:u?"legacy_attachment":"attachment"};G&&G.length>1&&(p.guid=G[1]),a.push(p)}else if(n){let G={url:o[1],guid:"",kind:"committed_attachment"};a.push(G)}}return a}function BMl(t){return!t.startsWith("http://")&&!t.startsWith("https://")&&ure(t)}function ure(t){return/\.(png|jpe?g|gif|svg|webp|bmp|tiff?|ico|heic|avif)$/i.test(t)}function xMl(t){try{let e=/Here are relevant code snippets from the repository that might help with this task:\s*(\[[\s\S]*?\])(?=\n|$)/,l=t.match(e);if(!l?.[1]||l[1].length<=1)return null;let n=l[1].trim();return JSON.parse(n)}catch{return null}}function SMl(t,e,l){if(!t?.url||!t?.ref||!t?.path)throw new Error("Invalid repository insight: missing required fields");if(!e||e.trim()==="")throw new Error("Invalid image path: path cannot be empty");let n=t.url.split("/").slice(3,5).join("/"),I=t.ref.split("/")[2],r;if(e.startsWith("/"))r=e.slice(1);else{let s=t.path,o=ire.dirname(s);r=ire.resolve("/",o,e).slice(1)}return`${l}/${n}/blob/${I}/${r}`}function OMl(t,e){return e?!!t.startsWith(`${e}/user-attachments/assets`):!1}function TMl(t,e,l){return e&&new RegExp(`^${e}/[\\w.-]+/[\\w.-]+/assets/\\d+/[^.]+$`).test(t)?(l.debug(`Legacy GitHub asset URL detected: ${t}`),!0):!1}async function rSe(t){let{width:e,height:l}=jRt(t);if(e===void 0||l===void 0)throw new Error("Unable to determine image dimensions.");return{width:e,height:l}}async function WNe(t,e,l,n,I,r){t.debug(`Checking if image is valid size and dimensions. Max size: ${l}, Max dimension: ${n}`);let{exceedsSizeLimit:a,exceedsDimensionLimit:s}=await cre(l,n,r);if(!s&&!a)return t.debug("Image is within size and dimension limits."),r;if(s){t.debug(`Image x or y dimension exceeds the maximum limit of ${n}, attempting to resize`);let[o,d]=await _Ml(t,r,n,l,I);if(!o){t.debug("Failed to resize image to fit within the maximum dimensions limits, skipping"),e.imagesRemovedDueToDimensions++,e.imagesFailedToResize++,d==="unsupported_mime_type"?e.resizeErrorsUnsupportedMimeType++:e.resizeErrorsUnknown++;return}let{exceedsDimensionLimit:u}=await cre(l,n,o);if(u){e.imagesRemovedDueToDimensions++,t.debug("Image dimensions exceed the maximum dimensions limits, skipping");return}return e.imagesResized++,t.debug("Image resized successfully."),o}if(a){t.debug(`Image size ${e1(r.length)} is larger than the maximum size of ${e1(l)}, attempting to reduce image quality`);let o=await DMl(t,r,n,l,I);if(!o){t.debug("Failed to reduce image quality to fit within the maximum size, skipping"),e.imagesFailedToReduceQuality++,e.imagesRemovedDueToSize++;return}return e.imagesWithLoweredQuality++,t.debug("Image quality successfully reduced."),o}}async function cre(t,e,l){let n=await rSe(l),I=l.length;return!n.width||!n.height?{exceedsSizeLimit:I>t,exceedsDimensionLimit:!1}:{exceedsSizeLimit:await MMl(t,l),exceedsDimensionLimit:await UMl(e,l)}}async function UMl(t,e){let l=await rSe(e);return!l.width||!l.height?!1:l.width>t||l.height>t}async function MMl(t,e){return e.length>t}async function _Ml(t,e,l,n,I){try{if(!dYt(t,I))return[void 0,"unsupported_mime_type"];let r=await rSe(e);if(!r.width||!r.height)return t.error("Failed to determine size of uploaded image"),[void 0,"determine_dimensions_failed"];let a=async(R,w)=>{let C=cYt(e).resize(R,w,{fit:"inside",withoutEnlargement:!0});return ISe(t,await C.toBuffer(),void 0,I)},s=Math.min(l,r.width),o=Math.min(l,r.height),d=await a(s,o);if(d&&d.length<=n)return[d,void 0];let u=Math.max(s,o),G=1,p=u-1,h,W=0,E=10;for(;G<=p&&W<E;){let R=Math.floor((G+p)/2),w=await a(R,R);if(!w)break;let{exceedsSizeLimit:C,exceedsDimensionLimit:L}=await cre(n,l,w);!C&&!L?(h=w,G=R+1):p=R-1,W++}return[h,void 0]}catch(r){return t.error(`Failed to resize image for upload: ${r instanceof Error?r.message:String(r)}`),[void 0,"unknown"]}}async function DMl(t,e,l,n,I){try{let r=I==="image/png"?80:100,a=I==="image/png"?Math.floor(r*.4):20,s=await ISe(t,e,a,I);if(!s||s.length>n)return;let o=a,d=r,u,G=0,p=10,h=o,W=d-1;for(;h<=W&&G<p;){let E=Math.floor((h+W)/2),R=await ISe(t,e,E,I);if(!R)return u;let{exceedsSizeLimit:w,exceedsDimensionLimit:C}=await cre(n,l,R);!w&&!C?(u=R,h=E+1):W=E-1,G++}return u}catch(r){t.error(`Failed to reduce image quality: ${r instanceof Error?r.message:String(r)}`);return}}async function ISe(t,e,l,n){let I=cYt(e);switch(n){case"image/png":return l?I.png({quality:l}).toBuffer():I.png().toBuffer();case"image/jpeg":return l?I.jpeg({quality:l}).toBuffer():I.jpeg().toBuffer();default:t.debug(`Unsupported image format: ${n}`);return}}var dre=class{imagesRemovedDueToSize=0;imagesRemovedDueToDimensions=0;imagesResized=0;imagesWithLoweredQuality=0;imagesFailedToResize=0;imagesFailedToReduceQuality=0;base64ImagesSize=[];resizedBase64ImagesSize=[];extractedImagesSize=[];imagesResolvedFromGitHubMCPSize=[];resizeErrorsUnsupportedMimeType=0;resizeErrorsUnknown=0};function zMl(t,e,l,n){if(e<=0)return[];let I=[];for(let r of t){if(r.role!=="user"||I.length>=e)continue;let a=typeof r.content=="string"?r.content:JSON.stringify(r.content),s=xMl(a);if(s)for(let o in s){if(I.length>=e)break;let d=s[o].contents,u=nSe(d,l,!0,n);for(let G of u){if(I.length>=e)break;let p=G.url,h="",W=!1;if(G.kind==="attachment"||G.kind==="legacy_attachment"?I.push(G):BMl(p)?(W=!0,h=SMl(s[o],p,l),I.push({url:h,guid:G.guid,kind:"committed_attachment"})):ure(p)&&p.startsWith(l)&&(W=!0,I.push({...G,kind:"committed_attachment"})),W){let E=I[I.length-1],R=new RegExp(`^${l}/([^/]+)/([^/]+)/blob/([^/]+)/(.+)$`),w=E.url.match(R);if(n.info(`Blob match for ${E.url}: ${JSON.stringify(w)}`),w&&w.length===5){let[,C,L,S,U]=w;E.owner=C,E.repo=L,E.branch=S,E.path=U,n.info(`Repository metadata extracted: owner=${C}, repo=${L}, branch=${S}, path=${U}`)}else n.info(`Failed to extract repository metadata from URL: ${E.url}`)}}}}return I}function PMl(t,e){let l=e.flatMap(I=>jB(I)?I.content.flatMap(r=>r.type==="image_url"?r.image_url.url:[]):[]),n=new Set(l);return t.filter(I=>!n.has(I.url))}var yNe=class{async resolveRepositoryImages(e,l,n,I,r,a){if(l<=0)return[];let s=zMl(e,l,n,I);this.logger.debug(`Found ${s.length} repository image URLs to process`);let o=PMl(s,e),d=await this.processImageReferences(o,r,a);return this.logger.debug(`Processed ${d.addedImages.length} repository image URLs`),d.addedImages}async*preRequest(e){let l=e.modelInfo;if(!l.capabilities?.limits){this.logger.debug("Model limits not defined, skipping image processing");return}if(!l.capabilities?.supports?.vision||!this.settings.featureFlags?.copilot_swe_agent_vision){this.logger.debug("Vision not supported or enabled, skipping image processing");return}if(!this.gitHubServerUrl){this.logger.debug("GitHub server URL is not set, skipping image processing");return}for(let G of this.messagesToInsertOnNextPreRequest)e.messages.push(G),yield{kind:"message",message:G,turn:e.turn};this.messagesToInsertOnNextPreRequest.splice(0);let n=[],I=l.capabilities.limits.vision?.max_prompt_images??1,r=l.capabilities.limits.vision?.max_prompt_image_size??3145728,a=0,s=[],o=new dre,d=new Map;for(let G of e.messages)if(G.role=="user")if(typeof G.content=="string"){let p=nSe(G.content,this.gitHubServerUrl,!1,this.logger).filter(W=>!this.processedImageUrls.has(W.url)),h=await this.processImageReferences(p,r,o);s.push(...h.addedImages)}else{let p=[];for(let[h,W]of G.content.entries()){if(W.type==="text"){let E=nSe(W.text,this.gitHubServerUrl,!1,this.logger).filter(w=>!this.processedImageUrls.has(w.url)),R=await this.processImageReferences(E,r,o);s.push(...R.addedImages)}else if(W.type==="image_url"){if(W.image_url.url.startsWith("data:")){let[E,R]=await this.extractAndUploadImageData(W,r,o);if(E===""){this.logger.debug("Skipping image upload for empty image data");continue}if(s.push(E),h>=1&&p.length>0){let w=p.at(-1);w&&w.type==="text"&&w.text&&w.text.includes("screenshot")&&d.set(E,nYt(E))}p.pop();continue}a++}p.push(W)}G.content=p}for(this.logger.debug(`Found ${s.length} image urls in the messages`),this.logger.debug(`Allowed number of images: ${I}`);a<I&&s.length>0;){let G=s.shift();if(!G){this.logger.debug("Skipping empty image url");continue}if(this.processedImageUrls.has(G)){this.logger.debug(`Skipping already processed image url: ${G}`);continue}this.processedImageUrls.add(G);let p=`Here is the image url: ${G}`;d.has(G)&&(p=d.get(G)||p),this.logger.debug(`Adding image url: ${G}`),n.push({role:"user",content:[{type:"text",text:p},{type:"image_url",image_url:{url:G}}]}),a++}if(this.settings.featureFlags?.copilot_swe_agent_resolve_repo_images&&(this.logger.debug("Resolving repository images..."),a<I)){let G=await this.resolveRepositoryImages(e.messages,I-a,this.settings.github?.serverUrl||"",this.logger,r,o);this.logger.debug(`Resolved ${G.length} repository image URLs`);for(let p of G){if(a>=I)break;if(this.processedImageUrls.has(p)){this.logger.debug(`Skipping already processed repository image url: ${p}`);continue}n.push({role:"user",content:[{type:"text",text:"Here is the image url:"},{type:"image_url",image_url:{url:p}}]}),this.processedImageUrls.add(p),a++}}let u={imagesExtractedCount:o.extractedImagesSize.length,base64ImagesCount:o.base64ImagesSize.length,imagesRemovedDueToSize:o.imagesRemovedDueToSize,imagesRemovedDueToDimensions:o.imagesRemovedDueToDimensions,imagesResized:o.imagesResized,imagesResolvedFromGitHubMCPCount:o.imagesResolvedFromGitHubMCPSize.length};for(let G=0;G<o.base64ImagesSize.length;G++)u[`base64ImageSize_${G}`]=o.base64ImagesSize[G];for(let G=0;G<o.resizedBase64ImagesSize.length;G++)u[`resizedBase64ImageSize_${G}`]=o.resizedBase64ImagesSize[G];for(let G=0;G<o.extractedImagesSize.length;G++)u[`extractedImageSize_${G}`]=o.extractedImagesSize[G];for(let G=0;G<o.imagesResolvedFromGitHubMCPSize.length;G++)u[`imagesResolvedFromGitHubMCPSize_${G}`]=o.imagesResolvedFromGitHubMCPSize[G];n.length>0&&this.logger.debug(`Using ${n.length} image messages`);for(let G of n)yield{kind:"message",message:G,turn:e.turn},e.messages.push(G);u.allImagesSendToLlm=e.messages.filter(jB).length,yield{kind:"image_processing",turn:e.turn,imageProcessingMetrics:u},e.messages.some(G=>jB(G))&&(e.additionalRequestHeaders["Copilot-Vision-Request"]="true")}async extractAndUploadImageData(e,l,n){let I=W$(this.settings);if(!I)return this.logger.debug("No user token available, skipping image upload"),[""];this.logger.debug("Found base64 image data, uploading...");let r=e.image_url.url.match(/^data:(.*?);base64,(.*)$/);if(!r||r.length<3)return this.logger.debug("Invalid base64 image data format, skipping"),[""];let a=r[1];if(!dYt(this.logger,a))return[""];let s=r[2];if(s.length===0)return this.logger.debug("Empty base64 image data, skipping"),[""];let o=Buffer.from(s,"base64");if(n.base64ImagesSize.push(o.length),o=await WNe(this.logger,n,l,ore,a,o),n.resizedBase64ImagesSize.push(o?.length??-1),!o)return["",new lSe(`Image size exceeds maximum size of ${e1(l)}`)];s=o.toString("base64");try{let d=await this.uploadBase64ImageData(s,a,I);return d?(this.logger.debug(`Uploaded image url: ${d}`),e.image_url.url=d,[d]):(this.logger.debug("Failed to upload image, skipping"),[""])}catch(d){let u=d instanceof Error?d.message:String(d);return this.logger.debug(`Error during image upload: ${u}`),[""]}}async uploadBase64ImageData(e,l,n){try{let I=MGt(this.settings),r=l.split("/").at(1),a=`image-${Date.now()}.${r}`;if(!e||e.trim()==="")return this.logger.error("Empty image data provided for upload"),null;let s=Buffer.from(e,"base64");if(s.length===0)return this.logger.error("Converted image data has zero length"),null;let o=this.settings.github?.repo?.id;if(!o)return this.logger.error("GitHub repository ID is not configured, cannot upload image"),null;let d=`${I}?name=${encodeURIComponent(a)}&content_type=${encodeURIComponent(l)}&repository_id=${o}`;this.logger.debug(`Uploading image data (${e1(s.length)}) to ${I} with name ${encodeURIComponent(a)} and content type ${encodeURIComponent(l)}`);let u={"Content-Type":"application/octet-stream",Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28",Authorization:"Bearer "+n},G=await fetch(d,{method:"POST",headers:u,body:s}).catch(h=>{throw h instanceof Error?(this.logger.error(`Failed to upload image: ${h.message}`),h.code==="ECONNREFUSED"?this.logger.error("Connection refused. The server might be down or blocked."):h.code==="ETIMEDOUT"?this.logger.error("Connection timed out. Check network conditions or server load."):(h.message.includes("request entity too large")||h.message.includes("payload too large"))&&this.logger.error("Request payload too large. Try reducing the image size.")):typeof h=="object"&&h!==null&&"code"in h&&"message"in h?(this.logger.error(`Failed to upload image: ${h.message}`),h.code==="ECONNREFUSED"?this.logger.error("Connection refused. The server might be down or blocked."):h.code==="ETIMEDOUT"?this.logger.error("Connection timed out. Check network conditions or server load."):(h.message.includes("request entity too large")||h.message.includes("payload too large"))&&this.logger.error("Request payload too large. Try reducing the image size.")):this.logger.error(`Failed to upload image: ${String(h)}`),this.logger.debug(`Complete error details: ${JSON.stringify({code:h?.code,message:h?.message,stack:h?.stack,name:h?.name,cause:h?.cause},null,2)}`),h});if(!G.ok){let h=await G.text().catch(()=>"Unable to read error response");return this.logger.error(`Failed to upload image: ${G.status} ${G.statusText} - ${h}`),null}let p=await G.json();return this.logger.debug(`Upload result: ${JSON.stringify(p,null,2)}`),p.url||null}catch(I){return this.logger.error(`Error handling image upload: ${I instanceof Error?I.message:String(I)}`),I instanceof Error&&I.stack&&this.logger.debug(`Stack trace: ${I.stack}`),null}}async getRepositoryImageViaTools(e){if(this.logger.debug(`Attempting to retrieve repository image: ${e.owner}/${e.repo}/${e.path}@${e.branch}`),this.githubGetFileContentsTool){this.logger.debug(`GitHub MCP tool found, calling with image reference: ${JSON.stringify(e)}`);try{let l=await this.githubGetFileContentsTool.callback({owner:e.owner,repo:e.repo,path:e.path,branch:e.branch},{settings:this.settings});if(this.logger.debug(`GitHub tool call completed. Result type: ${typeof l}`),this.logger.debug(`GitHub tool call result structure: ${typeof l=="object"&&l!==null?Object.keys(l).join(", "):typeof l}`),typeof l=="object"&&l!==null&&"binaryResultForLlm"in l&&Array.isArray(l.binaryResultForLlm)){this.logger.debug(`Tool result has binaryResultForLlm array with ${l.binaryResultForLlm.length} items`);try{for(let n of l.binaryResultForLlm)if(n.data&&n.mimeType){let I=Buffer.from(n.data,"base64"),r=n.mimeType;return{buffer:I,mimeType:r}}}catch(n){this.logger.error(`Failed to parse GitHub tool response: ${n}`),this.logger.debug(`binaryResultForLlm length: ${l.binaryResultForLlm?.length||0}`)}}else typeof l=="string"?this.logger.debug(`GitHub tool returned string result: ${l}`):this.logger.debug(`GitHub tool call failed or returned unexpected format. Result structure: ${typeof l=="object"&&l!==null?Object.keys(l).join(", "):typeof l}`)}catch(l){this.logger.error(`Error calling GitHub MCP tool: ${l}`)}}else this.logger.debug("GitHub MCP tool 'github-mcp-server-get_file_contents' not available");return this.logger.debug("Failed to retrieve repository image, returning null"),null}async getImgRefsSmallerThanMaxSize(e,l,n){let I=[],r=await Promise.all(e);for(let{imgRef:a,attachment:s}of r)if(this.logger.debug(`Processing attachment for ${a.url}, has buffer: ${!!s.buffer}, buffer size: ${s.buffer?.length||0}`),s.buffer)if(l.extractedImagesSize.push(s.buffer.length),Ii(this.settings,"copilot_swe_agent_resize_image_references")){if(!await WNe(this.logger,l,n,ore,s.mimeType,s.buffer)){this.logger.info("Unable to resize image to be within limits, skipping");continue}I.push(a.url)}else{let o=await cre(n,ore,s.buffer);if(this.logger.debug(`Image size check for ${a.url}: size=${s.buffer.length}, maxSize=${n}, exceedsSize=${o.exceedsSizeLimit}, exceedsDimensions=${o.exceedsDimensionLimit}`),o.exceedsSizeLimit?(l.imagesRemovedDueToSize++,this.logger.debug(`Image ${a.url} removed due to size (${s.buffer.length} > ${n})`)):o.exceedsDimensionLimit&&(l.imagesRemovedDueToDimensions++,this.logger.debug(`Image ${a.url} removed due to dimensions`)),o.exceedsSizeLimit||o.exceedsDimensionLimit){this.processedImageUrls.add(a.url),this.logger.info(`Image has been removed from the request due to size constraints. Please resize images to be smaller than ${e1(n)}.`);continue}I.push(a.url),this.logger.debug(`Image ${a.url} passed size checks and added to results`)}else this.processedImageUrls.add(a.url),this.logger.debug(`Skipping image ${a.url} - could not fetch image data`);return I}async processImageReferences(e,l,n){let I=this.settings.github?.serverUrl||"";this.logger.debug(`Processing ${e.length} image references`),this.logger.debug(`GitHub server URL: ${I}`),this.logger.debug(`Image references: ${e.map(s=>s.url).join(", ")}`);let r=e.filter(s=>!this.processedImageUrls.has(s.url)).map(async s=>{if(this.logger.debug(`Processing image reference: ${JSON.stringify(s,null,2)}`),s.kind==="committed_attachment"){this.logger.debug(`Detected repository image - Owner: ${s.owner}, Repo: ${s.repo}, Branch: ${s.branch}, Path: ${s.path}`);let o=await this.getRepositoryImageViaTools(s);return o?.buffer?(this.logger.debug(`Successfully fetched repository image buffer, size: ${o.buffer.length} bytes`),n.imagesResolvedFromGitHubMCPSize.push(o.buffer.length)):this.logger.debug("Failed to fetch repository image buffer"),{imgRef:s,attachment:{size:o?.buffer?.length||0,mimeType:o?.mimeType||"",buffer:o?.buffer||null}}}else return this.logger.debug(`Non-repository image, using getAttachmentFromGuid for: ${s.url}`),{imgRef:s,attachment:await JMl(s.guid,W$(this.settings),this.logger,this.settings)}}),a=await this.getImgRefsSmallerThanMaxSize(r,n,l);return this.logger.debug(`Processed image references, found ${a.length} attachments smaller than max size of ${e1(l)}`),{addedImages:a}}logger;settings;gitHubServerUrl;processedImageUrls;messagesToInsertOnNextPreRequest;githubGetFileContentsTool;constructor(e,l,n){this.logger=e,this.settings=l,this.gitHubServerUrl=l.github?.serverUrl,this.githubGetFileContentsTool=n,this.processedImageUrls=new Set,this.messagesToInsertOnNextPreRequest=[]}toJSON(){return"CAPIImageProcessor"}async onRequestError(e){}async preErrorThrow(e){this.processedImageUrls.size>0&&(e.isVisionFlow=!0)}async postToolExecution(e){let l=e.modelInfo,n=e.toolCall.function.name,I=e.toolResult;if(l?.capabilities?.supports?.vision){let r=Array.from(jMl(I,n));if(r.length===0){let a=await $Ml(e.toolCall,this.logger);a&&r.push(a)}this.insertImageUrlMessages(r)}}insertImageUrlMessages(e){this.logger.info(`Inserted ${e.length} image URLs from tools into chat history.`);for(let l of e)this.messagesToInsertOnNextPreRequest.push({role:"user",content:[{type:"text",text:l.isScreenshot?"Here is a screenshot:":"Here is an image:"},{type:"image_url",image_url:{url:l.url}}]})}};function*jMl(t,e){for(let l of t.binaryResultForLlm??[])l.type==="image"&&(yield{url:`data:${l.mimeType};base64,${l.data}`,isScreenshot:e.toLowerCase().includes("screenshot")})}var KMl="playwright-browser_take_screenshot";function qMl(t){return typeof t=="object"&&t!==null&&typeof t.filename=="string"}async function $Ml(t,e){if(t.function.name!==KMl)return;e.debug("Adding images using Playwright params fallback strategy");let l=JSON.parse(t.function.arguments);if(qMl(l)){let n=ire.isAbsolute(l.filename)?l.filename:ire.join(eSe,l.filename);e.debug(`Image from Playwright params: ${l.filename}. Updated to ${n}.`);let I=await t_l(n,e);if(I){let r=I.buffer.toString("base64");return{url:`data:${I.mimeType};base64,${r}`,isScreenshot:!0}}}}function e_l(t){switch(ire.extname(t).toLowerCase()){case".png":return"image/png";case".jpg":case".jpeg":return"image/jpeg";default:return null}}function dYt(t,e){return e!=="image/png"&&e!=="image/jpeg"?(t.debug(`Unsupported content type: ${e}, only image / png and image / jpeg are supported`),!1):!0}async function t_l(t,e){try{if(!ure(t))return e.debug(`Image ${t} does not have a valid image extension, skipping read`),null;let l=e_l(t);return l?{buffer:await LMl.readFile(t),mimeType:l}:(e.debug(`Image ${t} is not a mime type supported for file -> data URI flow`),null)}catch(l){return e.error(`Failed to read image from disk: ${l instanceof Error?l.message:String(l)}`),null}}c();var sP=class{logger;constructor(e){this.logger=e}toJSON(){return"BasicTruncator"}async*preRequest(e){let l=await uYt(e.messages,e.toolDefinitions,e.modelInfo.name,e.tokenLimit);l.tokensRemovedDuringTruncation>0&&this.logger.debug(`BasicTruncator truncated: ${JSON.stringify(l)}`),yield{kind:"history_truncated",turn:e.turn,performedBy:"BasicTruncator",truncateResult:l}}},oP=class{truncateOnNextRequest=!1;userMessageToTruncateUpTo;logger;constructor(e,l){this.userMessageToTruncateUpTo=e,this.logger=l,this.logger.debug(`AnthropicTokenLimitErrorTruncator will truncate up to message: ${JSON.stringify(e)}`)}async*preRequest(e){if(this.truncateOnNextRequest){this.truncateOnNextRequest=!1;let l=oYt(this.userMessageToTruncateUpTo,e.messages);if(l===-1){this.logger.debug(`Failed to find user message to truncate up to: ${JSON.stringify(this.userMessageToTruncateUpTo)}`),this.logger.debug(`Current messages: ${JSON.stringify(e.messages)}`);return}let n=await uYt(e.messages,e.toolDefinitions,e.modelInfo.name,e.tokenLimit,l);n.tokensRemovedDuringTruncation>0&&this.logger.debug(`AnthropicTokenLimitErrorTruncator truncated: ${JSON.stringify(n)}`),yield{kind:"history_truncated",turn:e.turn,performedBy:"AnthropicTokenLimitErrorTruncator",truncateResult:n}}}async preErrorThrow(e){}async onRequestError(e){if(e){if(typeof e=="object"&&"code"in e&&e.code==="model_max_prompt_tokens_exceeded"){this.truncateOnNextRequest=!0;return}let l=[JSON.stringify(e)];e instanceof Error&&(l.push(e.message),e.cause instanceof Error?l.push(e.cause.message):e.cause&&l.push(JSON.stringify(e.cause)));let n="Input length and `max_tokens` exceed context limit";this.logger.debug(`Looking for error amongst: ${l.join(", ")}`),l.some(I=>I.includes(n))&&(this.truncateOnNextRequest=!0)}}toJSON(){return"AnthropicTokenLimitErrorTruncator"}},l_l=.95;function uYt(t,e,l,n,I){let r=t.length;if(r===0)return{tokenLimit:n,preTruncationTokensInMessages:0,preTruncationMessagesLength:r,postTruncationTokensInMessages:0,postTruncationMessagesLength:r,tokensRemovedDuringTruncation:0,messagesRemovedDuringTruncation:0};let a=t.map(h=>Dpe(h,l)),s=sF(JSON.stringify(e),l),o=n*l_l,d=a.reduce((h,W)=>h+W,0)+s;if(d<=o)return{tokenLimit:n,preTruncationTokensInMessages:d,preTruncationMessagesLength:r,postTruncationTokensInMessages:d,postTruncationMessagesLength:r,tokensRemovedDuringTruncation:0,messagesRemovedDuringTruncation:0};let u=new Set,G=0,p=Math.min(I??t.length,t.length);for(let h=0;h<p;h++){let W=t[h];if(W.role!=="system"&&W.role!=="tool"&&W.role!=="user"){if(W.role==="assistant"){let E=W.tool_calls||[],R=E.filter(nA).filter(S=>S.function.name===xee),w=E.filter(nA).filter(S=>S.function.name!==xee),C=R.length===0,L=new Set(w.map(S=>S.id));if(w.length>0&&(W.tool_calls=R,a[h]=Dpe(W,l)),C&&(u.add(h),G+=a[h]),L.size>0)for(let S=h+1;S<t.length;S++){let U=t[S];if(U.role==="tool"&&L.has(U.tool_call_id)&&(u.add(S),G+=a[S],L.delete(U.tool_call_id),L.size===0))break}}if(d-G<o)break}}for(let h=t.length-1;h>=0;h--)u.has(h)&&t.splice(h,1);return{tokenLimit:n,preTruncationTokensInMessages:d,preTruncationMessagesLength:r,postTruncationTokensInMessages:d-G,postTruncationMessagesLength:t.length,tokensRemovedDuringTruncation:G,messagesRemovedDuringTruncation:r-t.length}}c();var HA=class extends UH{constructor(){super()}debug(e){}log(e){}info(e){}notice(e){}warning(e){}error(e){}startGroup(e,l){}endGroup(e){}};c();c();var mYt={fetch:{tools:[{toolName:"fetch"}]},time:{tools:[{toolName:"get_current_time"},{toolName:"convert_time"}]},sequentialthinking:{tools:[{toolName:"sequentialthinking"}]},"github-mcp-server":{tools:[{toolName:"get_code_scanning_alert"},{toolName:"get_commit"},{toolName:"get_file_contents"},{toolName:"get_issue"},{toolName:"get_issue_comments"},{toolName:"get_me"},{toolName:"get_copilot_space"},{toolName:"get_pull_request"},{toolName:"get_pull_request_comments"},{toolName:"get_pull_request_files"},{toolName:"get_pull_request_reviews"},{toolName:"get_pull_request_status"},{toolName:"get_secret_scanning_alert"},{toolName:"get_tag"},{toolName:"list_branches"},{toolName:"list_code_scanning_alerts"},{toolName:"list_commits"},{toolName:"list_issues"},{toolName:"list_pull_requests"},{toolName:"list_secret_scanning_alerts"},{toolName:"list_tags"},{toolName:"search_code"},{toolName:"search_issues"},{toolName:"search_repositories"},{toolName:"search_users"},{toolName:"get_job_logs"},{toolName:"get_workflow_run"},{toolName:"get_workflow_run_logs"},{toolName:"list_workflow_jobs"},{toolName:"list_workflow_runs"},{toolName:"list_workflow_run_artifacts"},{toolName:"list_workflows"}]},playwright:{tools:[{toolName:"browser_close"},{toolName:"browser_resize"},{toolName:"browser_console_messages"},{toolName:"browser_handle_dialog"},{toolName:"browser_file_upload"},{toolName:"browser_install"},{toolName:"browser_press_key"},{toolName:"browser_navigate"},{toolName:"browser_navigate_back"},{toolName:"browser_navigate_forward"},{toolName:"browser_network_requests"},{toolName:"browser_pdf_save"},{toolName:"browser_take_screenshot"},{toolName:"browser_snapshot"},{toolName:"browser_click"},{toolName:"browser_drag"},{toolName:"browser_hover"},{toolName:"browser_type"},{toolName:"browser_select_option"},{toolName:"browser_tab_list"},{toolName:"browser_tab_new"},{toolName:"browser_tab_select"},{toolName:"browser_tab_close"},{toolName:"browser_generate_playwright_test"},{toolName:"browser_wait_for"}]},primer:{tools:[{toolName:"init"},{toolName:"list_components"},{toolName:"get_component"},{toolName:"get_component_examples"},{toolName:"get_component_usage_guidelines"},{toolName:"get_component_accessibility_guidelines"},{toolName:"list_patterns"},{toolName:"get_pattern"},{toolName:"list_tokens"},{toolName:"get_color_usage"},{toolName:"get_typography_usage"},{toolName:"list_icons"},{toolName:"get_icon"}]},azure:"azure-mcp-server","azure-azmcp":"azure-mcp-server","azure-mcp-server-azmcp":"azure-mcp-server","azure-mcp-server":{tools:[{toolName:"aks"},{toolName:"appconfig"},{toolName:"azureterraformbestpractices"},{toolName:"bestpractices"},{toolName:"bicepschema"},{toolName:"cosmos"},{toolName:"datadog"},{toolName:"documentation"},{toolName:"extension_az"},{toolName:"extension_azd"},{toolName:"extension_azqr"},{toolName:"foundry"},{toolName:"grafana"},{toolName:"group"},{toolName:"keyvault"},{toolName:"kusto"},{toolName:"loadtesting"},{toolName:"marketplace"},{toolName:"monitor"},{toolName:"postgres"},{toolName:"redis"},{toolName:"role"},{toolName:"search"},{toolName:"servicebus"},{toolName:"sql"},{toolName:"storage"},{toolName:"subscription"},{toolName:"workbooks"}]}};function ENe(t,e,l){let n=(l||mYt)[t.toLowerCase()],I=new Set;for(;typeof n=="string";){if(I.has(n))return!1;I.add(n),n=mYt[n]}if(!n)return!1;let r=e.toLowerCase();return n.tools.some(a=>a.toolName===r)}var n_l="image";var I_l="resource",r_l=60*1e3*2,a_l={timeout:r_l};var aSe=class{constructor(e,l,n){this.settings=e;this.logger=l;this.permissions=n}async invokeTool(e,l,n="hidden_characters"){let I=await this.doInvokeTool(e,l);return this.invokeToolResponseToToolResult(I,n)}invokeToolResponseToToolResult(e,l){let n=e.content||[],I="",r=[];for(let d of n)if(d.type==="text")I+=d.text||"";else if(d.type==="resource"){let u=d.resource;u&&u.blob?r.push({type:I_l,data:u.blob,mimeType:u.mimeType||"application/octet-stream"}):u&&u.text&&(I+=u.text)}else d.type==="image"&&r.push({type:n_l,data:d.data,mimeType:d.mimeType});let a=I;if(I==="")this.logger.debug("Tool invocation result is empty or undefined, skipping content filtering."),a=I;else try{let d=JSON.parse(I),u=gxe(d,l);a=JSON.stringify(u)}catch(d){this.logger.debug(`Unable to parse tool invocation as JSON. Treating it as a string for filtering: ${d}`),a=Axe(I,l)}this.logger.debug(`Tool invocation result: ${a}`);let s={},o=a?yc(a,"output"):"";return e.isToolError?{textResultForLlm:a,resultType:"failure",error:a,sessionLog:o,toolTelemetry:s}:{textResultForLlm:a,binaryResultForLlm:r,resultType:"success",sessionLog:o,toolTelemetry:s}}async loadTools(e){let l=await this.loadToolsFromProvider(e),n={};for(let[I,r]of Object.entries(l)){let a=r.filterMode||"hidden_characters";n[I]={name:r.name,title:r.title||r.name,description:r.description,input_schema:r.input_schema,callback:async s=>{let o=l[I].serverName,d=l[I].name,u=l[I].title;if(!this.permissions.requestRequired)return this.invokeTool(I,s,a);let G=await this.permissions.request({kind:"mcp",serverName:o,toolName:d,toolTitle:u,args:s,readOnly:!!r.readOnly});switch(G.kind){case"approved":return this.invokeTool(I,s,a);case"denied-by-rules":return AZe(G.rules);case"denied-no-approval-rule-and-could-not-request-from-user":return ZZe;case"denied-interactively-by-user":return hZe;default:fN(G,`Unhandled permission result kind: ${G}`)}},safeForTelemetry:r.safeForTelemetry}}return Object.values(n)}};var mre=class t extends aSe{toolIdToClientInfo=new Map;constructor(e,l,n={requestRequired:!1}){super(e,l,n)}async doInvokeTool(e,l){let n=this.toolIdToClientInfo.get(e);if(!n)throw new Error(`No MCP client found for tool ID: ${e}`);let I=n.mcpClient,r=t.getToolNameFromIdAndClientName(e,n.clientName),a=await I.callTool({name:r,arguments:l},void 0,{...a_l,onprogress:s=>{this.logger.info(`Tool ${e} progress: ${JSON.stringify(s)}`)},resetTimeoutOnProgress:!0});if(!Array.isArray(a.content))throw new Error("Expected array of results");return{content:a.content,isToolError:a.error!==void 0&&a.error!==null||a.isError===!0}}async loadToolsFromProvider(e){let l={};this.logger.debug(`Loading tools for client: ${e.clientName}`);for(let n of(await e.mcpClient.listTools()).tools){if(!e.tools.includes("*")&&!e.tools.includes(n.name)){this.logger.debug(`Skipping tool ${n.name} for client ${e.clientName}`);continue}let I=t.getToolIdFromClientAndToolName(e.clientName,n.name);this.toolIdToClientInfo.set(I,e);let r;e.safeForTelemetry===!0?r={name:!0,inputsNames:!0}:e.safeForTelemetry&&typeof e.safeForTelemetry=="object"?r=e.safeForTelemetry:r={name:ENe(e.clientName,n.name),inputsNames:!1},this.logger.debug(`Adding tool: ${I}`);let a;e.filterMapping===void 0?a="hidden_characters":typeof e.filterMapping=="object"?a=e.filterMapping[n.name]||"hidden_characters":a=e.filterMapping,l[I]={serverName:e.clientName,name:I,title:n.title||n.annotations?.title||n.name,description:n.description||"",input_schema:n.inputSchema,readOnly:n.annotations?.readOnlyHint,safeForTelemetry:r,filterMode:a}}return l}static getToolIdFromClientAndToolName(e,l){return`${e}-${l}`}static getToolNameFromIdAndClientName(e,l){return e.substring(l.length+1)}};c();var RNe=class{settings;logger;gitHandler;location;commitPriorToCompletionWithTools;jitInstructions;emittedJitInstructions;constructor(e,l,n,I,r,a){this.settings=e,this.logger=l,this.gitHandler=n,this.location=I,this.commitPriorToCompletionWithTools=r,this.jitInstructions=a||{},this.emittedJitInstructions=new Set}toJSON(){return"JitInstructionsProcessor"}async*preRequest(e){if(this.jitInstructions&&Object.keys(this.jitInstructions).length>0){let l,n=async()=>{if(l===void 0)try{l=(await this.gitHandler.getChangedPaths(this.location,"HEAD",this.commitPriorToCompletionWithTools)).length}catch(a){this.logger.error(`Failed to get changed paths, err: ${a}`),l=1}return l},I;for(let[a,s]of Object.entries(this.jitInstructions)){let o=wGt(this.settings,s.percentRemainingOfTimeout);o.isWithin&&(!s.whenNoPathsChanged||await n()===0)&&(!I||o.withinMs<I[0])&&(I=[o.withinMs,s.instruction])}let r=I?.[1];if(typeof r=="function"&&(r=r(this.location)),r&&!this.emittedJitInstructions.has(r)){this.logger.debug(`Adding JIT instructions to the history: ${r}`),this.emittedJitInstructions.add(r);let a={role:"user",content:r};e.messages.push(a),yield{kind:"message",message:a,turn:e.turn,source:"jit-instruction"}}}}},sSe={remindWhereToDoWork:{instruction:rYt,percentRemainingOfTimeout:1/2,whenNoPathsChanged:!0},completeAsSoonAsPossible:{instruction:NNe.completeAsSoonAsPossible,percentRemainingOfTimeout:1/6},commitNow:{instruction:NNe.commitNow,percentRemainingOfTimeout:2/15},finalAnswerNeeded:{instruction:NNe.finalAnswerNeeded,percentRemainingOfTimeout:1/10}};c();c();c();var oSe={agent:"sweagent-capi",model:"claude-sonnet-4"},GYt=oSe;function iSe(t){if(!t)return GYt;let[e,...l]=t?.split(":")??[t,void 0],n=l.join(":")||void 0;return{agent:e||void 0,model:n||void 0}}c();c();c();import Dvt from"path";c();c();c();c();var VNe="4.12.0",KB="04b07795-8ddb-461a-bbee-02f9e1bf7b46",bYt="common",YNe;(function(t){t.AzureChina="https://login.chinacloudapi.cn",t.AzureGermany="https://login.microsoftonline.de",t.AzureGovernment="https://login.microsoftonline.us",t.AzurePublicCloud="https://login.microsoftonline.com"})(YNe||(YNe={}));var bre=YNe.AzurePublicCloud,pYt="login.microsoftonline.com",hYt=["*"],AYt="cae",ZYt="nocae",gYt="msal.cache";var cSe;var s_l,QNe,WYt;function yYt(){return QNe!==void 0&&WYt!==void 0}function o_l(t){let e={cache:{},broker:{...t.brokerOptions,isEnabled:t.brokerOptions?.enabled??!1,enableMsaPassthrough:t.brokerOptions?.legacyEnableMsaPassthrough??!1}};if(t.tokenCachePersistenceOptions?.enabled){if(cSe===void 0)throw new Error(["Persistent token caching was requested, but no persistence provider was configured.","You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)","and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling","`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`."].join(" "));let l=t.tokenCachePersistenceOptions.name||gYt;e.cache.cachePlugin=cSe({name:`${l}.${ZYt}`,...t.tokenCachePersistenceOptions}),e.cache.cachePluginCae=cSe({name:`${l}.${AYt}`,...t.tokenCachePersistenceOptions})}return t.brokerOptions?.enabled&&(e.broker.nativeBrokerPlugin=c_l(t.isVSCodeCredential||!1)),e}var NYt={missing:(t,e,l)=>[`${t} was requested, but no plugin was configured or no authentication record was found.`,`You must install the ${e} plugin package (npm install --save ${e})`,"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling",`useIdentityPlugin(${l}) before using enableBroker.`].join(" "),unavailable:(t,e)=>[`${t} was requested, and the plugin is configured, but the broker is unavailable.`,`Ensure the ${t} plugin is properly installed and configured.`,"Check for missing native dependencies and ensure the package is properly installed.",`See the README for prerequisites on installing and using ${e}.`].join(" ")},i_l={vsCode:{credentialName:"Visual Studio Code Credential",packageName:"@azure/identity-vscode",pluginVar:"vsCodePlugin",get brokerInfo(){return WYt}},native:{credentialName:"Broker for WAM",packageName:"@azure/identity-broker",pluginVar:"nativeBrokerPlugin",get brokerInfo(){return s_l}}};function c_l(t){let{credentialName:e,packageName:l,pluginVar:n,brokerInfo:I}=i_l[t?"vsCode":"native"];if(I===void 0)throw new Error(NYt.missing(e,l,n));if(I.broker.isBrokerAvailable===!1)throw new Error(NYt.unavailable(e,l));return I.broker}var EYt={generatePluginConfiguration:o_l};c();c();c();function d_l(t){return t&&typeof t.error=="string"&&typeof t.error_description=="string"}var YYt="CredentialUnavailableError",qn=class extends Error{constructor(e,l){super(e,l),this.name=YYt}},wNe="AuthenticationError",J5=class extends Error{statusCode;errorResponse;constructor(e,l,n){let I={error:"unknown",errorDescription:"An unknown error occurred and no additional details are available."};if(d_l(l))I=RYt(l);else if(typeof l=="string")try{let r=JSON.parse(l);I=RYt(r)}catch{e===400?I={error:"invalid_request",errorDescription:`The service indicated that the request was invalid.
|
|
1622
|
+
`)?.trim();return{...t,reasoning_text:e}}function sre(t){return structuredClone(t)}function sYt(t){return{...t,choices:t.choices.map(e=>{let l=aP(e.message);return{delta:{role:l.role,content:l.content,reasoning_opaque:l.reasoning_opaque,reasoning_text:l.reasoning_text,tool_calls:e.message.tool_calls?.map(n=>({...n,index:0}))},finish_reason:e.finish_reason,index:e.index}}),object:"chat.completion.chunk"}}function jB(t){return t.role==="user"&&Array.isArray(t.content)&&t.content.some(e=>e.type==="image_url")}function oYt(t,e){let l=e.indexOf(t);if(l!==-1)return l;let n=s=>(typeof s.content=="string"?[{type:"text",text:s.content}]:s.content).filter(o=>o.type==="text").map(o=>o.text).join("").trim(),I=n(t),r=e.map((s,o)=>s.role==="user"&&n(s)===I?o:-1).filter(s=>s!==-1),a=r.at(0)??-1;return r.length===1?a:-1}c();var eSe="/tmp/playwright-logs",kMl="0.0.40",tSe=[`@playwright/mcp@${kMl}`,"--viewport-size","1280, 720","--output-dir",eSe],Kir=[...tSe,"--isolated"];var lSe=class t extends Error{constructor(e){super(e),this.name="ImageSizeError",Object.setPrototypeOf(this,t.prototype)}},ore=2e3;async function JMl(t,e,l,n){let I={"Content-Type":"application/octet-stream",Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28",Authorization:"Bearer "+e},r=`${_Gt(n)}/${t}`;l.info(`Downloading image from ${r}`);try{let a=await fetch(r,{method:"GET",headers:I});if(l.info(`Response status: ${a.status} ${a.statusText}`),l.debug(`Download Response URL: ${a.url}`),!a.ok){l.info(`Failed to download image, status: ${a.status}, statusText: ${a.statusText}`);try{let p=await a.text();l.info(`Error response body: ${p}`)}catch(p){l.info(`Could not read error response body: ${p}`)}return{size:0}}let o=(await a.json()).url;if(!o)return l.error(`No asset URL found in response for image GUID: ${t}`),{size:0};let d=await fetch(o,{method:"GET"});if(!d.ok)return l.error(`Failed to download image: ${d.status} ${d.statusText}`),{size:0};let u=await d.arrayBuffer(),G=u.byteLength;return l.info(`Downloaded content size: ${e1(G)}`),{size:G,buffer:Buffer.from(u),mimeType:d.headers.get("content-type")||void 0}}catch(a){return l.error("Network error downloading image"),a instanceof Error&&(l.info(`Error message: ${a.message}`),l.info(`Error stack: ${a.stack}`)),{size:0}}}function nSe(t,e,l,n){let I=/<img\b[^>]*\bsrc="([^"]+)"[^>]*>/g,r=/!\[.*?\]\((.*?)\)/g,a=[];return a.push(...iYt(t,e,I,l,n)),a.push(...iYt(t,e,r,l,n)),a}function iYt(t,e,l,n,I){let r=t.matchAll(l),a=[],s=/\/([a-f0-9-]+)$/;for(let o of r){let d=OMl(o[1],e),u=TMl(o[1],e,I);if(d||u){let G=o[1].match(s),p={url:o[1],guid:"",kind:u?"legacy_attachment":"attachment"};G&&G.length>1&&(p.guid=G[1]),a.push(p)}else if(n){let G={url:o[1],guid:"",kind:"committed_attachment"};a.push(G)}}return a}function BMl(t){return!t.startsWith("http://")&&!t.startsWith("https://")&&ure(t)}function ure(t){return/\.(png|jpe?g|gif|svg|webp|bmp|tiff?|ico|heic|avif)$/i.test(t)}function xMl(t){try{let e=/Here are relevant code snippets from the repository that might help with this task:\s*(\[[\s\S]*?\])(?=\n|$)/,l=t.match(e);if(!l?.[1]||l[1].length<=1)return null;let n=l[1].trim();return JSON.parse(n)}catch{return null}}function SMl(t,e,l){if(!t?.url||!t?.ref||!t?.path)throw new Error("Invalid repository insight: missing required fields");if(!e||e.trim()==="")throw new Error("Invalid image path: path cannot be empty");let n=t.url.split("/").slice(3,5).join("/"),I=t.ref.split("/")[2],r;if(e.startsWith("/"))r=e.slice(1);else{let s=t.path,o=ire.dirname(s);r=ire.resolve("/",o,e).slice(1)}return`${l}/${n}/blob/${I}/${r}`}function OMl(t,e){return e?!!t.startsWith(`${e}/user-attachments/assets`):!1}function TMl(t,e,l){return e&&new RegExp(`^${e}/[\\w.-]+/[\\w.-]+/assets/\\d+/[^.]+$`).test(t)?(l.debug(`Legacy GitHub asset URL detected: ${t}`),!0):!1}async function rSe(t){let{width:e,height:l}=jRt(t);if(e===void 0||l===void 0)throw new Error("Unable to determine image dimensions.");return{width:e,height:l}}async function WNe(t,e,l,n,I,r){t.debug(`Checking if image is valid size and dimensions. Max size: ${l}, Max dimension: ${n}`);let{exceedsSizeLimit:a,exceedsDimensionLimit:s}=await cre(l,n,r);if(!s&&!a)return t.debug("Image is within size and dimension limits."),r;if(s){t.debug(`Image x or y dimension exceeds the maximum limit of ${n}, attempting to resize`);let[o,d]=await _Ml(t,r,n,l,I);if(!o){t.debug("Failed to resize image to fit within the maximum dimensions limits, skipping"),e.imagesRemovedDueToDimensions++,e.imagesFailedToResize++,d==="unsupported_mime_type"?e.resizeErrorsUnsupportedMimeType++:e.resizeErrorsUnknown++;return}let{exceedsDimensionLimit:u}=await cre(l,n,o);if(u){e.imagesRemovedDueToDimensions++,t.debug("Image dimensions exceed the maximum dimensions limits, skipping");return}return e.imagesResized++,t.debug("Image resized successfully."),o}if(a){t.debug(`Image size ${e1(r.length)} is larger than the maximum size of ${e1(l)}, attempting to reduce image quality`);let o=await DMl(t,r,n,l,I);if(!o){t.debug("Failed to reduce image quality to fit within the maximum size, skipping"),e.imagesFailedToReduceQuality++,e.imagesRemovedDueToSize++;return}return e.imagesWithLoweredQuality++,t.debug("Image quality successfully reduced."),o}}async function cre(t,e,l){let n=await rSe(l),I=l.length;return!n.width||!n.height?{exceedsSizeLimit:I>t,exceedsDimensionLimit:!1}:{exceedsSizeLimit:await MMl(t,l),exceedsDimensionLimit:await UMl(e,l)}}async function UMl(t,e){let l=await rSe(e);return!l.width||!l.height?!1:l.width>t||l.height>t}async function MMl(t,e){return e.length>t}async function _Ml(t,e,l,n,I){try{if(!dYt(t,I))return[void 0,"unsupported_mime_type"];let r=await rSe(e);if(!r.width||!r.height)return t.error("Failed to determine size of uploaded image"),[void 0,"determine_dimensions_failed"];let a=async(R,w)=>{let C=cYt(e).resize(R,w,{fit:"inside",withoutEnlargement:!0});return ISe(t,await C.toBuffer(),void 0,I)},s=Math.min(l,r.width),o=Math.min(l,r.height),d=await a(s,o);if(d&&d.length<=n)return[d,void 0];let u=Math.max(s,o),G=1,p=u-1,h,W=0,E=10;for(;G<=p&&W<E;){let R=Math.floor((G+p)/2),w=await a(R,R);if(!w)break;let{exceedsSizeLimit:C,exceedsDimensionLimit:L}=await cre(n,l,w);!C&&!L?(h=w,G=R+1):p=R-1,W++}return[h,void 0]}catch(r){return t.error(`Failed to resize image for upload: ${r instanceof Error?r.message:String(r)}`),[void 0,"unknown"]}}async function DMl(t,e,l,n,I){try{let r=I==="image/png"?80:100,a=I==="image/png"?Math.floor(r*.4):20,s=await ISe(t,e,a,I);if(!s||s.length>n)return;let o=a,d=r,u,G=0,p=10,h=o,W=d-1;for(;h<=W&&G<p;){let E=Math.floor((h+W)/2),R=await ISe(t,e,E,I);if(!R)return u;let{exceedsSizeLimit:w,exceedsDimensionLimit:C}=await cre(n,l,R);!w&&!C?(u=R,h=E+1):W=E-1,G++}return u}catch(r){t.error(`Failed to reduce image quality: ${r instanceof Error?r.message:String(r)}`);return}}async function ISe(t,e,l,n){let I=cYt(e);switch(n){case"image/png":return l?I.png({quality:l}).toBuffer():I.png().toBuffer();case"image/jpeg":return l?I.jpeg({quality:l}).toBuffer():I.jpeg().toBuffer();default:t.debug(`Unsupported image format: ${n}`);return}}var dre=class{imagesRemovedDueToSize=0;imagesRemovedDueToDimensions=0;imagesResized=0;imagesWithLoweredQuality=0;imagesFailedToResize=0;imagesFailedToReduceQuality=0;base64ImagesSize=[];resizedBase64ImagesSize=[];extractedImagesSize=[];imagesResolvedFromGitHubMCPSize=[];resizeErrorsUnsupportedMimeType=0;resizeErrorsUnknown=0};function zMl(t,e,l,n){if(e<=0)return[];let I=[];for(let r of t){if(r.role!=="user"||I.length>=e)continue;let a=typeof r.content=="string"?r.content:JSON.stringify(r.content),s=xMl(a);if(s)for(let o in s){if(I.length>=e)break;let d=s[o].contents,u=nSe(d,l,!0,n);for(let G of u){if(I.length>=e)break;let p=G.url,h="",W=!1;if(G.kind==="attachment"||G.kind==="legacy_attachment"?I.push(G):BMl(p)?(W=!0,h=SMl(s[o],p,l),I.push({url:h,guid:G.guid,kind:"committed_attachment"})):ure(p)&&p.startsWith(l)&&(W=!0,I.push({...G,kind:"committed_attachment"})),W){let E=I[I.length-1],R=new RegExp(`^${l}/([^/]+)/([^/]+)/blob/([^/]+)/(.+)$`),w=E.url.match(R);if(n.info(`Blob match for ${E.url}: ${JSON.stringify(w)}`),w&&w.length===5){let[,C,L,S,U]=w;E.owner=C,E.repo=L,E.branch=S,E.path=U,n.info(`Repository metadata extracted: owner=${C}, repo=${L}, branch=${S}, path=${U}`)}else n.info(`Failed to extract repository metadata from URL: ${E.url}`)}}}}return I}function PMl(t,e){let l=e.flatMap(I=>jB(I)?I.content.flatMap(r=>r.type==="image_url"?r.image_url.url:[]):[]),n=new Set(l);return t.filter(I=>!n.has(I.url))}var yNe=class{async resolveRepositoryImages(e,l,n,I,r,a){if(l<=0)return[];let s=zMl(e,l,n,I);this.logger.debug(`Found ${s.length} repository image URLs to process`);let o=PMl(s,e),d=await this.processImageReferences(o,r,a);return this.logger.debug(`Processed ${d.addedImages.length} repository image URLs`),d.addedImages}async*preRequest(e){let l=e.modelInfo;if(!l.capabilities?.limits){this.logger.debug("Model limits not defined, skipping image processing");return}if(!l.capabilities?.supports?.vision||!this.settings.featureFlags?.copilot_swe_agent_vision){this.logger.debug("Vision not supported or enabled, skipping image processing");return}if(!this.gitHubServerUrl){this.logger.debug("GitHub server URL is not set, skipping image processing");return}for(let G of this.messagesToInsertOnNextPreRequest)e.messages.push(G),yield{kind:"message",message:G,turn:e.turn};this.messagesToInsertOnNextPreRequest.splice(0);let n=[],I=l.capabilities.limits.vision?.max_prompt_images??1,r=l.capabilities.limits.vision?.max_prompt_image_size??3145728,a=0,s=[],o=new dre,d=new Map;for(let G of e.messages)if(G.role=="user")if(typeof G.content=="string"){let p=nSe(G.content,this.gitHubServerUrl,!1,this.logger).filter(W=>!this.processedImageUrls.has(W.url)),h=await this.processImageReferences(p,r,o);s.push(...h.addedImages)}else{let p=[];for(let[h,W]of G.content.entries()){if(W.type==="text"){let E=nSe(W.text,this.gitHubServerUrl,!1,this.logger).filter(w=>!this.processedImageUrls.has(w.url)),R=await this.processImageReferences(E,r,o);s.push(...R.addedImages)}else if(W.type==="image_url"){if(W.image_url.url.startsWith("data:")){let[E,R]=await this.extractAndUploadImageData(W,r,o);if(E===""){this.logger.debug("Skipping image upload for empty image data");continue}if(s.push(E),h>=1&&p.length>0){let w=p.at(-1);w&&w.type==="text"&&w.text&&w.text.includes("screenshot")&&d.set(E,nYt(E))}p.pop();continue}a++}p.push(W)}G.content=p}for(this.logger.debug(`Found ${s.length} image urls in the messages`),this.logger.debug(`Allowed number of images: ${I}`);a<I&&s.length>0;){let G=s.shift();if(!G){this.logger.debug("Skipping empty image url");continue}if(this.processedImageUrls.has(G)){this.logger.debug(`Skipping already processed image url: ${G}`);continue}this.processedImageUrls.add(G);let p=`Here is the image url: ${G}`;d.has(G)&&(p=d.get(G)||p),this.logger.debug(`Adding image url: ${G}`),n.push({role:"user",content:[{type:"text",text:p},{type:"image_url",image_url:{url:G}}]}),a++}if(this.settings.featureFlags?.copilot_swe_agent_resolve_repo_images&&(this.logger.debug("Resolving repository images..."),a<I)){let G=await this.resolveRepositoryImages(e.messages,I-a,this.settings.github?.serverUrl||"",this.logger,r,o);this.logger.debug(`Resolved ${G.length} repository image URLs`);for(let p of G){if(a>=I)break;if(this.processedImageUrls.has(p)){this.logger.debug(`Skipping already processed repository image url: ${p}`);continue}n.push({role:"user",content:[{type:"text",text:"Here is the image url:"},{type:"image_url",image_url:{url:p}}]}),this.processedImageUrls.add(p),a++}}let u={imagesExtractedCount:o.extractedImagesSize.length,base64ImagesCount:o.base64ImagesSize.length,imagesRemovedDueToSize:o.imagesRemovedDueToSize,imagesRemovedDueToDimensions:o.imagesRemovedDueToDimensions,imagesResized:o.imagesResized,imagesResolvedFromGitHubMCPCount:o.imagesResolvedFromGitHubMCPSize.length};for(let G=0;G<o.base64ImagesSize.length;G++)u[`base64ImageSize_${G}`]=o.base64ImagesSize[G];for(let G=0;G<o.resizedBase64ImagesSize.length;G++)u[`resizedBase64ImageSize_${G}`]=o.resizedBase64ImagesSize[G];for(let G=0;G<o.extractedImagesSize.length;G++)u[`extractedImageSize_${G}`]=o.extractedImagesSize[G];for(let G=0;G<o.imagesResolvedFromGitHubMCPSize.length;G++)u[`imagesResolvedFromGitHubMCPSize_${G}`]=o.imagesResolvedFromGitHubMCPSize[G];n.length>0&&this.logger.debug(`Using ${n.length} image messages`);for(let G of n)yield{kind:"message",message:G,turn:e.turn},e.messages.push(G);u.allImagesSendToLlm=e.messages.filter(jB).length,yield{kind:"image_processing",turn:e.turn,imageProcessingMetrics:u},e.messages.some(G=>jB(G))&&(e.additionalRequestHeaders["Copilot-Vision-Request"]="true")}async extractAndUploadImageData(e,l,n){let I=W$(this.settings);if(!I)return this.logger.debug("No user token available, skipping image upload"),[""];this.logger.debug("Found base64 image data, uploading...");let r=e.image_url.url.match(/^data:(.*?);base64,(.*)$/);if(!r||r.length<3)return this.logger.debug("Invalid base64 image data format, skipping"),[""];let a=r[1];if(!dYt(this.logger,a))return[""];let s=r[2];if(s.length===0)return this.logger.debug("Empty base64 image data, skipping"),[""];let o=Buffer.from(s,"base64");if(n.base64ImagesSize.push(o.length),o=await WNe(this.logger,n,l,ore,a,o),n.resizedBase64ImagesSize.push(o?.length??-1),!o)return["",new lSe(`Image size exceeds maximum size of ${e1(l)}`)];s=o.toString("base64");try{let d=await this.uploadBase64ImageData(s,a,I);return d?(this.logger.debug(`Uploaded image url: ${d}`),e.image_url.url=d,[d]):(this.logger.debug("Failed to upload image, skipping"),[""])}catch(d){let u=d instanceof Error?d.message:String(d);return this.logger.debug(`Error during image upload: ${u}`),[""]}}async uploadBase64ImageData(e,l,n){try{let I=MGt(this.settings),r=l.split("/").at(1),a=`image-${Date.now()}.${r}`;if(!e||e.trim()==="")return this.logger.error("Empty image data provided for upload"),null;let s=Buffer.from(e,"base64");if(s.length===0)return this.logger.error("Converted image data has zero length"),null;let o=this.settings.github?.repo?.id;if(!o)return this.logger.error("GitHub repository ID is not configured, cannot upload image"),null;let d=`${I}?name=${encodeURIComponent(a)}&content_type=${encodeURIComponent(l)}&repository_id=${o}`;this.logger.debug(`Uploading image data (${e1(s.length)}) to ${I} with name ${encodeURIComponent(a)} and content type ${encodeURIComponent(l)}`);let u={"Content-Type":"application/octet-stream",Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28",Authorization:"Bearer "+n},G=await fetch(d,{method:"POST",headers:u,body:s}).catch(h=>{throw h instanceof Error?(this.logger.error(`Failed to upload image: ${h.message}`),h.code==="ECONNREFUSED"?this.logger.error("Connection refused. The server might be down or blocked."):h.code==="ETIMEDOUT"?this.logger.error("Connection timed out. Check network conditions or server load."):(h.message.includes("request entity too large")||h.message.includes("payload too large"))&&this.logger.error("Request payload too large. Try reducing the image size.")):typeof h=="object"&&h!==null&&"code"in h&&"message"in h?(this.logger.error(`Failed to upload image: ${h.message}`),h.code==="ECONNREFUSED"?this.logger.error("Connection refused. The server might be down or blocked."):h.code==="ETIMEDOUT"?this.logger.error("Connection timed out. Check network conditions or server load."):(h.message.includes("request entity too large")||h.message.includes("payload too large"))&&this.logger.error("Request payload too large. Try reducing the image size.")):this.logger.error(`Failed to upload image: ${String(h)}`),this.logger.debug(`Complete error details: ${JSON.stringify({code:h?.code,message:h?.message,stack:h?.stack,name:h?.name,cause:h?.cause},null,2)}`),h});if(!G.ok){let h=await G.text().catch(()=>"Unable to read error response");return this.logger.error(`Failed to upload image: ${G.status} ${G.statusText} - ${h}`),null}let p=await G.json();return this.logger.debug(`Upload result: ${JSON.stringify(p,null,2)}`),p.url||null}catch(I){return this.logger.error(`Error handling image upload: ${I instanceof Error?I.message:String(I)}`),I instanceof Error&&I.stack&&this.logger.debug(`Stack trace: ${I.stack}`),null}}async getRepositoryImageViaTools(e){if(this.logger.debug(`Attempting to retrieve repository image: ${e.owner}/${e.repo}/${e.path}@${e.branch}`),this.githubGetFileContentsTool){this.logger.debug(`GitHub MCP tool found, calling with image reference: ${JSON.stringify(e)}`);try{let l=await this.githubGetFileContentsTool.callback({owner:e.owner,repo:e.repo,path:e.path,branch:e.branch},{settings:this.settings});if(this.logger.debug(`GitHub tool call completed. Result type: ${typeof l}`),this.logger.debug(`GitHub tool call result structure: ${typeof l=="object"&&l!==null?Object.keys(l).join(", "):typeof l}`),typeof l=="object"&&l!==null&&"binaryResultForLlm"in l&&Array.isArray(l.binaryResultForLlm)){this.logger.debug(`Tool result has binaryResultForLlm array with ${l.binaryResultForLlm.length} items`);try{for(let n of l.binaryResultForLlm)if(n.data&&n.mimeType){let I=Buffer.from(n.data,"base64"),r=n.mimeType;return{buffer:I,mimeType:r}}}catch(n){this.logger.error(`Failed to parse GitHub tool response: ${n}`),this.logger.debug(`binaryResultForLlm length: ${l.binaryResultForLlm?.length||0}`)}}else typeof l=="string"?this.logger.debug(`GitHub tool returned string result: ${l}`):this.logger.debug(`GitHub tool call failed or returned unexpected format. Result structure: ${typeof l=="object"&&l!==null?Object.keys(l).join(", "):typeof l}`)}catch(l){this.logger.error(`Error calling GitHub MCP tool: ${l}`)}}else this.logger.debug("GitHub MCP tool 'github-mcp-server-get_file_contents' not available");return this.logger.debug("Failed to retrieve repository image, returning null"),null}async getImgRefsSmallerThanMaxSize(e,l,n){let I=[],r=await Promise.all(e);for(let{imgRef:a,attachment:s}of r)if(this.logger.debug(`Processing attachment for ${a.url}, has buffer: ${!!s.buffer}, buffer size: ${s.buffer?.length||0}`),s.buffer)if(l.extractedImagesSize.push(s.buffer.length),Ii(this.settings,"copilot_swe_agent_resize_image_references")){if(!await WNe(this.logger,l,n,ore,s.mimeType,s.buffer)){this.logger.info("Unable to resize image to be within limits, skipping");continue}I.push(a.url)}else{let o=await cre(n,ore,s.buffer);if(this.logger.debug(`Image size check for ${a.url}: size=${s.buffer.length}, maxSize=${n}, exceedsSize=${o.exceedsSizeLimit}, exceedsDimensions=${o.exceedsDimensionLimit}`),o.exceedsSizeLimit?(l.imagesRemovedDueToSize++,this.logger.debug(`Image ${a.url} removed due to size (${s.buffer.length} > ${n})`)):o.exceedsDimensionLimit&&(l.imagesRemovedDueToDimensions++,this.logger.debug(`Image ${a.url} removed due to dimensions`)),o.exceedsSizeLimit||o.exceedsDimensionLimit){this.processedImageUrls.add(a.url),this.logger.info(`Image has been removed from the request due to size constraints. Please resize images to be smaller than ${e1(n)}.`);continue}I.push(a.url),this.logger.debug(`Image ${a.url} passed size checks and added to results`)}else this.processedImageUrls.add(a.url),this.logger.debug(`Skipping image ${a.url} - could not fetch image data`);return I}async processImageReferences(e,l,n){let I=this.settings.github?.serverUrl||"";this.logger.debug(`Processing ${e.length} image references`),this.logger.debug(`GitHub server URL: ${I}`),this.logger.debug(`Image references: ${e.map(s=>s.url).join(", ")}`);let r=e.filter(s=>!this.processedImageUrls.has(s.url)).map(async s=>{if(this.logger.debug(`Processing image reference: ${JSON.stringify(s,null,2)}`),s.kind==="committed_attachment"){this.logger.debug(`Detected repository image - Owner: ${s.owner}, Repo: ${s.repo}, Branch: ${s.branch}, Path: ${s.path}`);let o=await this.getRepositoryImageViaTools(s);return o?.buffer?(this.logger.debug(`Successfully fetched repository image buffer, size: ${o.buffer.length} bytes`),n.imagesResolvedFromGitHubMCPSize.push(o.buffer.length)):this.logger.debug("Failed to fetch repository image buffer"),{imgRef:s,attachment:{size:o?.buffer?.length||0,mimeType:o?.mimeType||"",buffer:o?.buffer||null}}}else return this.logger.debug(`Non-repository image, using getAttachmentFromGuid for: ${s.url}`),{imgRef:s,attachment:await JMl(s.guid,W$(this.settings),this.logger,this.settings)}}),a=await this.getImgRefsSmallerThanMaxSize(r,n,l);return this.logger.debug(`Processed image references, found ${a.length} attachments smaller than max size of ${e1(l)}`),{addedImages:a}}logger;settings;gitHubServerUrl;processedImageUrls;messagesToInsertOnNextPreRequest;githubGetFileContentsTool;constructor(e,l,n){this.logger=e,this.settings=l,this.gitHubServerUrl=l.github?.serverUrl,this.githubGetFileContentsTool=n,this.processedImageUrls=new Set,this.messagesToInsertOnNextPreRequest=[]}toJSON(){return"CAPIImageProcessor"}async onRequestError(e){}async preErrorThrow(e){this.processedImageUrls.size>0&&(e.isVisionFlow=!0)}async postToolExecution(e){let l=e.modelInfo,n=e.toolCall.function.name,I=e.toolResult;if(l?.capabilities?.supports?.vision){let r=Array.from(jMl(I,n));if(r.length===0){let a=await $Ml(e.toolCall,this.logger);a&&r.push(a)}this.insertImageUrlMessages(r)}}insertImageUrlMessages(e){this.logger.info(`Inserted ${e.length} image URLs from tools into chat history.`);for(let l of e)this.messagesToInsertOnNextPreRequest.push({role:"user",content:[{type:"text",text:l.isScreenshot?"Here is a screenshot:":"Here is an image:"},{type:"image_url",image_url:{url:l.url}}]})}};function*jMl(t,e){for(let l of t.binaryResultForLlm??[])l.type==="image"&&(yield{url:`data:${l.mimeType};base64,${l.data}`,isScreenshot:e.toLowerCase().includes("screenshot")})}var KMl="playwright-browser_take_screenshot";function qMl(t){return typeof t=="object"&&t!==null&&typeof t.filename=="string"}async function $Ml(t,e){if(t.function.name!==KMl)return;e.debug("Adding images using Playwright params fallback strategy");let l=JSON.parse(t.function.arguments);if(qMl(l)){let n=ire.isAbsolute(l.filename)?l.filename:ire.join(eSe,l.filename);e.debug(`Image from Playwright params: ${l.filename}. Updated to ${n}.`);let I=await t_l(n,e);if(I){let r=I.buffer.toString("base64");return{url:`data:${I.mimeType};base64,${r}`,isScreenshot:!0}}}}function e_l(t){switch(ire.extname(t).toLowerCase()){case".png":return"image/png";case".jpg":case".jpeg":return"image/jpeg";default:return null}}function dYt(t,e){return e!=="image/png"&&e!=="image/jpeg"?(t.debug(`Unsupported content type: ${e}, only image / png and image / jpeg are supported`),!1):!0}async function t_l(t,e){try{if(!ure(t))return e.debug(`Image ${t} does not have a valid image extension, skipping read`),null;let l=e_l(t);return l?{buffer:await LMl.readFile(t),mimeType:l}:(e.debug(`Image ${t} is not a mime type supported for file -> data URI flow`),null)}catch(l){return e.error(`Failed to read image from disk: ${l instanceof Error?l.message:String(l)}`),null}}c();var sP=class{logger;constructor(e){this.logger=e}toJSON(){return"BasicTruncator"}async*preRequest(e){let l=await uYt(e.messages,e.toolDefinitions,e.modelInfo.name,e.tokenLimit);l.tokensRemovedDuringTruncation>0&&this.logger.debug(`BasicTruncator truncated: ${JSON.stringify(l)}`),yield{kind:"history_truncated",turn:e.turn,performedBy:"BasicTruncator",truncateResult:l}}},oP=class{truncateOnNextRequest=!1;userMessageToTruncateUpTo;logger;constructor(e,l){this.userMessageToTruncateUpTo=e,this.logger=l,this.logger.debug(`AnthropicTokenLimitErrorTruncator will truncate up to message: ${JSON.stringify(e)}`)}async*preRequest(e){if(this.truncateOnNextRequest){this.truncateOnNextRequest=!1;let l=oYt(this.userMessageToTruncateUpTo,e.messages);if(l===-1){this.logger.debug(`Failed to find user message to truncate up to: ${JSON.stringify(this.userMessageToTruncateUpTo)}`),this.logger.debug(`Current messages: ${JSON.stringify(e.messages)}`);return}let n=await uYt(e.messages,e.toolDefinitions,e.modelInfo.name,e.tokenLimit,l);n.tokensRemovedDuringTruncation>0&&this.logger.debug(`AnthropicTokenLimitErrorTruncator truncated: ${JSON.stringify(n)}`),yield{kind:"history_truncated",turn:e.turn,performedBy:"AnthropicTokenLimitErrorTruncator",truncateResult:n}}}async preErrorThrow(e){}async onRequestError(e){if(e){if(typeof e=="object"&&"code"in e&&e.code==="model_max_prompt_tokens_exceeded"){this.truncateOnNextRequest=!0;return}let l=[JSON.stringify(e)];e instanceof Error&&(l.push(e.message),e.cause instanceof Error?l.push(e.cause.message):e.cause&&l.push(JSON.stringify(e.cause)));let n="Input length and `max_tokens` exceed context limit";this.logger.debug(`Looking for error amongst: ${l.join(", ")}`),l.some(I=>I.includes(n))&&(this.truncateOnNextRequest=!0)}}toJSON(){return"AnthropicTokenLimitErrorTruncator"}},l_l=.95;function uYt(t,e,l,n,I){let r=t.length;if(r===0)return{tokenLimit:n,preTruncationTokensInMessages:0,preTruncationMessagesLength:r,postTruncationTokensInMessages:0,postTruncationMessagesLength:r,tokensRemovedDuringTruncation:0,messagesRemovedDuringTruncation:0};let a=t.map(h=>Dpe(h,l)),s=sF(JSON.stringify(e),l),o=n*l_l,d=a.reduce((h,W)=>h+W,0)+s;if(d<=o)return{tokenLimit:n,preTruncationTokensInMessages:d,preTruncationMessagesLength:r,postTruncationTokensInMessages:d,postTruncationMessagesLength:r,tokensRemovedDuringTruncation:0,messagesRemovedDuringTruncation:0};let u=new Set,G=0,p=Math.min(I??t.length,t.length);for(let h=0;h<p;h++){let W=t[h];if(W.role!=="system"&&W.role!=="tool"&&W.role!=="user"){if(W.role==="assistant"){let E=W.tool_calls||[],R=E.filter(nA).filter(S=>S.function.name===xee),w=E.filter(nA).filter(S=>S.function.name!==xee),C=R.length===0,L=new Set(w.map(S=>S.id));if(w.length>0&&(W.tool_calls=R,a[h]=Dpe(W,l)),C&&(u.add(h),G+=a[h]),L.size>0)for(let S=h+1;S<t.length;S++){let U=t[S];if(U.role==="tool"&&L.has(U.tool_call_id)&&(u.add(S),G+=a[S],L.delete(U.tool_call_id),L.size===0))break}}if(d-G<o)break}}for(let h=t.length-1;h>=0;h--)u.has(h)&&t.splice(h,1);return{tokenLimit:n,preTruncationTokensInMessages:d,preTruncationMessagesLength:r,postTruncationTokensInMessages:d-G,postTruncationMessagesLength:t.length,tokensRemovedDuringTruncation:G,messagesRemovedDuringTruncation:r-t.length}}c();var HA=class extends UH{constructor(){super()}debug(e){}log(e){}info(e){}notice(e){}warning(e){}error(e){}startGroup(e,l){}endGroup(e){}};c();c();var mYt={fetch:{tools:[{toolName:"fetch"}]},time:{tools:[{toolName:"get_current_time"},{toolName:"convert_time"}]},sequentialthinking:{tools:[{toolName:"sequentialthinking"}]},"github-mcp-server":{tools:[{toolName:"get_code_scanning_alert"},{toolName:"get_commit"},{toolName:"get_file_contents"},{toolName:"get_issue"},{toolName:"get_issue_comments"},{toolName:"get_me"},{toolName:"get_copilot_space"},{toolName:"get_pull_request"},{toolName:"get_pull_request_comments"},{toolName:"get_pull_request_files"},{toolName:"get_pull_request_reviews"},{toolName:"get_pull_request_status"},{toolName:"get_secret_scanning_alert"},{toolName:"get_tag"},{toolName:"list_branches"},{toolName:"list_code_scanning_alerts"},{toolName:"list_commits"},{toolName:"list_issues"},{toolName:"list_pull_requests"},{toolName:"list_secret_scanning_alerts"},{toolName:"list_tags"},{toolName:"search_code"},{toolName:"search_issues"},{toolName:"search_repositories"},{toolName:"search_users"},{toolName:"get_job_logs"},{toolName:"get_workflow_run"},{toolName:"get_workflow_run_logs"},{toolName:"list_workflow_jobs"},{toolName:"list_workflow_runs"},{toolName:"list_workflow_run_artifacts"},{toolName:"list_workflows"},{toolName:"summarize_job_log_failures"}]},playwright:{tools:[{toolName:"browser_close"},{toolName:"browser_resize"},{toolName:"browser_console_messages"},{toolName:"browser_handle_dialog"},{toolName:"browser_file_upload"},{toolName:"browser_install"},{toolName:"browser_press_key"},{toolName:"browser_navigate"},{toolName:"browser_navigate_back"},{toolName:"browser_navigate_forward"},{toolName:"browser_network_requests"},{toolName:"browser_pdf_save"},{toolName:"browser_take_screenshot"},{toolName:"browser_snapshot"},{toolName:"browser_click"},{toolName:"browser_drag"},{toolName:"browser_hover"},{toolName:"browser_type"},{toolName:"browser_select_option"},{toolName:"browser_tab_list"},{toolName:"browser_tab_new"},{toolName:"browser_tab_select"},{toolName:"browser_tab_close"},{toolName:"browser_generate_playwright_test"},{toolName:"browser_wait_for"}]},primer:{tools:[{toolName:"init"},{toolName:"list_components"},{toolName:"get_component"},{toolName:"get_component_examples"},{toolName:"get_component_usage_guidelines"},{toolName:"get_component_accessibility_guidelines"},{toolName:"list_patterns"},{toolName:"get_pattern"},{toolName:"list_tokens"},{toolName:"get_color_usage"},{toolName:"get_typography_usage"},{toolName:"list_icons"},{toolName:"get_icon"}]},azure:"azure-mcp-server","azure-azmcp":"azure-mcp-server","azure-mcp-server-azmcp":"azure-mcp-server","azure-mcp-server":{tools:[{toolName:"aks"},{toolName:"appconfig"},{toolName:"azureterraformbestpractices"},{toolName:"bestpractices"},{toolName:"bicepschema"},{toolName:"cosmos"},{toolName:"datadog"},{toolName:"documentation"},{toolName:"extension_az"},{toolName:"extension_azd"},{toolName:"extension_azqr"},{toolName:"foundry"},{toolName:"grafana"},{toolName:"group"},{toolName:"keyvault"},{toolName:"kusto"},{toolName:"loadtesting"},{toolName:"marketplace"},{toolName:"monitor"},{toolName:"postgres"},{toolName:"redis"},{toolName:"role"},{toolName:"search"},{toolName:"servicebus"},{toolName:"sql"},{toolName:"storage"},{toolName:"subscription"},{toolName:"workbooks"}]}};function ENe(t,e,l){let n=(l||mYt)[t.toLowerCase()],I=new Set;for(;typeof n=="string";){if(I.has(n))return!1;I.add(n),n=mYt[n]}if(!n)return!1;let r=e.toLowerCase();return n.tools.some(a=>a.toolName===r)}var n_l="image";var I_l="resource",r_l=60*1e3*2,a_l={timeout:r_l};var aSe=class{constructor(e,l,n){this.settings=e;this.logger=l;this.permissions=n}async invokeTool(e,l,n="hidden_characters"){let I=await this.doInvokeTool(e,l);return this.invokeToolResponseToToolResult(I,n)}invokeToolResponseToToolResult(e,l){let n=e.content||[],I="",r=[];for(let d of n)if(d.type==="text")I+=d.text||"";else if(d.type==="resource"){let u=d.resource;u&&u.blob?r.push({type:I_l,data:u.blob,mimeType:u.mimeType||"application/octet-stream"}):u&&u.text&&(I+=u.text)}else d.type==="image"&&r.push({type:n_l,data:d.data,mimeType:d.mimeType});let a=I;if(I==="")this.logger.debug("Tool invocation result is empty or undefined, skipping content filtering."),a=I;else try{let d=JSON.parse(I),u=gxe(d,l);a=JSON.stringify(u)}catch(d){this.logger.debug(`Unable to parse tool invocation as JSON. Treating it as a string for filtering: ${d}`),a=Axe(I,l)}this.logger.debug(`Tool invocation result: ${a}`);let s={},o=a?yc(a,"output"):"";return e.isToolError?{textResultForLlm:a,resultType:"failure",error:a,sessionLog:o,toolTelemetry:s}:{textResultForLlm:a,binaryResultForLlm:r,resultType:"success",sessionLog:o,toolTelemetry:s}}async loadTools(e){let l=await this.loadToolsFromProvider(e),n={};for(let[I,r]of Object.entries(l)){let a=r.filterMode||"hidden_characters";n[I]={name:r.name,title:r.title||r.name,description:r.description,input_schema:r.input_schema,callback:async s=>{let o=l[I].serverName,d=l[I].name,u=l[I].title;if(!this.permissions.requestRequired)return this.invokeTool(I,s,a);let G=await this.permissions.request({kind:"mcp",serverName:o,toolName:d,toolTitle:u,args:s,readOnly:!!r.readOnly});switch(G.kind){case"approved":return this.invokeTool(I,s,a);case"denied-by-rules":return AZe(G.rules);case"denied-no-approval-rule-and-could-not-request-from-user":return ZZe;case"denied-interactively-by-user":return hZe;default:fN(G,`Unhandled permission result kind: ${G}`)}},safeForTelemetry:r.safeForTelemetry}}return Object.values(n)}};var mre=class t extends aSe{toolIdToClientInfo=new Map;constructor(e,l,n={requestRequired:!1}){super(e,l,n)}async doInvokeTool(e,l){let n=this.toolIdToClientInfo.get(e);if(!n)throw new Error(`No MCP client found for tool ID: ${e}`);let I=n.mcpClient,r=t.getToolNameFromIdAndClientName(e,n.clientName),a=await I.callTool({name:r,arguments:l},void 0,{...a_l,onprogress:s=>{this.logger.info(`Tool ${e} progress: ${JSON.stringify(s)}`)},resetTimeoutOnProgress:!0});if(!Array.isArray(a.content))throw new Error("Expected array of results");return{content:a.content,isToolError:a.error!==void 0&&a.error!==null||a.isError===!0}}async loadToolsFromProvider(e){let l={};this.logger.debug(`Loading tools for client: ${e.clientName}`);for(let n of(await e.mcpClient.listTools()).tools){if(!e.tools.includes("*")&&!e.tools.includes(n.name)){this.logger.debug(`Skipping tool ${n.name} for client ${e.clientName}`);continue}let I=t.getToolIdFromClientAndToolName(e.clientName,n.name);this.toolIdToClientInfo.set(I,e);let r;e.safeForTelemetry===!0?r={name:!0,inputsNames:!0}:e.safeForTelemetry&&typeof e.safeForTelemetry=="object"?r=e.safeForTelemetry:r={name:ENe(e.clientName,n.name),inputsNames:!1},this.logger.debug(`Adding tool: ${I}`);let a;e.filterMapping===void 0?a="hidden_characters":typeof e.filterMapping=="object"?a=e.filterMapping[n.name]||"hidden_characters":a=e.filterMapping,l[I]={serverName:e.clientName,name:I,title:n.title||n.annotations?.title||n.name,description:n.description||"",input_schema:n.inputSchema,readOnly:n.annotations?.readOnlyHint,safeForTelemetry:r,filterMode:a}}return l}static getToolIdFromClientAndToolName(e,l){return`${e}-${l}`}static getToolNameFromIdAndClientName(e,l){return e.substring(l.length+1)}};c();var RNe=class{settings;logger;gitHandler;location;commitPriorToCompletionWithTools;jitInstructions;emittedJitInstructions;constructor(e,l,n,I,r,a){this.settings=e,this.logger=l,this.gitHandler=n,this.location=I,this.commitPriorToCompletionWithTools=r,this.jitInstructions=a||{},this.emittedJitInstructions=new Set}toJSON(){return"JitInstructionsProcessor"}async*preRequest(e){if(this.jitInstructions&&Object.keys(this.jitInstructions).length>0){let l,n=async()=>{if(l===void 0)try{l=(await this.gitHandler.getChangedPaths(this.location,"HEAD",this.commitPriorToCompletionWithTools)).length}catch(a){this.logger.error(`Failed to get changed paths, err: ${a}`),l=1}return l},I;for(let[a,s]of Object.entries(this.jitInstructions)){let o=wGt(this.settings,s.percentRemainingOfTimeout);o.isWithin&&(!s.whenNoPathsChanged||await n()===0)&&(!I||o.withinMs<I[0])&&(I=[o.withinMs,s.instruction])}let r=I?.[1];if(typeof r=="function"&&(r=r(this.location)),r&&!this.emittedJitInstructions.has(r)){this.logger.debug(`Adding JIT instructions to the history: ${r}`),this.emittedJitInstructions.add(r);let a={role:"user",content:r};e.messages.push(a),yield{kind:"message",message:a,turn:e.turn,source:"jit-instruction"}}}}},sSe={remindWhereToDoWork:{instruction:rYt,percentRemainingOfTimeout:1/2,whenNoPathsChanged:!0},completeAsSoonAsPossible:{instruction:NNe.completeAsSoonAsPossible,percentRemainingOfTimeout:1/6},commitNow:{instruction:NNe.commitNow,percentRemainingOfTimeout:2/15},finalAnswerNeeded:{instruction:NNe.finalAnswerNeeded,percentRemainingOfTimeout:1/10}};c();c();c();var oSe={agent:"sweagent-capi",model:"claude-sonnet-4"},GYt=oSe;function iSe(t){if(!t)return GYt;let[e,...l]=t?.split(":")??[t,void 0],n=l.join(":")||void 0;return{agent:e||void 0,model:n||void 0}}c();c();c();import Dvt from"path";c();c();c();c();var VNe="4.12.0",KB="04b07795-8ddb-461a-bbee-02f9e1bf7b46",bYt="common",YNe;(function(t){t.AzureChina="https://login.chinacloudapi.cn",t.AzureGermany="https://login.microsoftonline.de",t.AzureGovernment="https://login.microsoftonline.us",t.AzurePublicCloud="https://login.microsoftonline.com"})(YNe||(YNe={}));var bre=YNe.AzurePublicCloud,pYt="login.microsoftonline.com",hYt=["*"],AYt="cae",ZYt="nocae",gYt="msal.cache";var cSe;var s_l,QNe,WYt;function yYt(){return QNe!==void 0&&WYt!==void 0}function o_l(t){let e={cache:{},broker:{...t.brokerOptions,isEnabled:t.brokerOptions?.enabled??!1,enableMsaPassthrough:t.brokerOptions?.legacyEnableMsaPassthrough??!1}};if(t.tokenCachePersistenceOptions?.enabled){if(cSe===void 0)throw new Error(["Persistent token caching was requested, but no persistence provider was configured.","You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)","and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling","`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`."].join(" "));let l=t.tokenCachePersistenceOptions.name||gYt;e.cache.cachePlugin=cSe({name:`${l}.${ZYt}`,...t.tokenCachePersistenceOptions}),e.cache.cachePluginCae=cSe({name:`${l}.${AYt}`,...t.tokenCachePersistenceOptions})}return t.brokerOptions?.enabled&&(e.broker.nativeBrokerPlugin=c_l(t.isVSCodeCredential||!1)),e}var NYt={missing:(t,e,l)=>[`${t} was requested, but no plugin was configured or no authentication record was found.`,`You must install the ${e} plugin package (npm install --save ${e})`,"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling",`useIdentityPlugin(${l}) before using enableBroker.`].join(" "),unavailable:(t,e)=>[`${t} was requested, and the plugin is configured, but the broker is unavailable.`,`Ensure the ${t} plugin is properly installed and configured.`,"Check for missing native dependencies and ensure the package is properly installed.",`See the README for prerequisites on installing and using ${e}.`].join(" ")},i_l={vsCode:{credentialName:"Visual Studio Code Credential",packageName:"@azure/identity-vscode",pluginVar:"vsCodePlugin",get brokerInfo(){return WYt}},native:{credentialName:"Broker for WAM",packageName:"@azure/identity-broker",pluginVar:"nativeBrokerPlugin",get brokerInfo(){return s_l}}};function c_l(t){let{credentialName:e,packageName:l,pluginVar:n,brokerInfo:I}=i_l[t?"vsCode":"native"];if(I===void 0)throw new Error(NYt.missing(e,l,n));if(I.broker.isBrokerAvailable===!1)throw new Error(NYt.unavailable(e,l));return I.broker}var EYt={generatePluginConfiguration:o_l};c();c();c();function d_l(t){return t&&typeof t.error=="string"&&typeof t.error_description=="string"}var YYt="CredentialUnavailableError",qn=class extends Error{constructor(e,l){super(e,l),this.name=YYt}},wNe="AuthenticationError",J5=class extends Error{statusCode;errorResponse;constructor(e,l,n){let I={error:"unknown",errorDescription:"An unknown error occurred and no additional details are available."};if(d_l(l))I=RYt(l);else if(typeof l=="string")try{let r=JSON.parse(l);I=RYt(r)}catch{e===400?I={error:"invalid_request",errorDescription:`The service indicated that the request was invalid.
|
|
1623
1623
|
|
|
1624
1624
|
${l}`}:I={error:"unknown_error",errorDescription:`An unknown error has occurred. Response body:
|
|
1625
1625
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@github/copilot",
|
|
3
3
|
"description": "GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal.",
|
|
4
|
-
"version": "0.0.337-
|
|
4
|
+
"version": "0.0.337-12",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"sdk/**/*"
|
|
34
34
|
],
|
|
35
35
|
"buildMetadata": {
|
|
36
|
-
"gitCommit": "
|
|
36
|
+
"gitCommit": "ec29c2a"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"node-pty": "npm:@devm33/node-pty@^1.0.8",
|