@github/copilot 0.0.332 → 0.0.333-0

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.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +2 -2
package/index.js CHANGED
@@ -1437,7 +1437,7 @@ https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
1437
1437
  Body doesn't contain an array property with name: ${e}`);return l??[]}function efl(t,e){if(!e.includes(t.status))throw cp(`Pagination failed with unexpected statusCode ${t.status}`,t)}c();function gM(t,e,l){return(e??l==="+")||l==="#"?VAt(t):wAt(t)}function VAt(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(e=>/%[0-9A-Fa-f]/.test(e)?e:encodeURI(e)).join("")}function wAt(t){return encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function FIe(t){return t!=null}function eke(t){return[!!t&&[";","?","&"].includes(t),t&&["?","&"].includes(t)?"=":""]}function RZe(t,e=!1){return e?!t||t==="+"?"":t:!t||t==="+"||t==="#"?",":t==="?"?"&":t}function tfl(t){let e=t.isFirst,{op:l,varName:I,varValue:n,reserved:r}=t,a=[],[s,o]=eke(l);if(Array.isArray(n))for(let d of n.filter(FIe))a.push(`${RZe(l,e)}`),s&&I&&(a.push(`${encodeURIComponent(I)}`),d===""?a.push(o):a.push("=")),a.push(gM(d,r,l)),e=!1;else if(typeof n=="object")for(let d of Object.keys(n)){let G=n[d];FIe(G)&&(a.push(`${RZe(l,e)}`),d&&(a.push(`${encodeURIComponent(d)}`),s&&G===""?a.push(o):a.push("=")),a.push(gM(G,r,l)),e=!1)}return a.join("")}function lfl(t){let{op:e,varName:l,varValue:I,isFirst:n,reserved:r}=t,a=[],s=RZe(e,n),[o,d]=eke(e);if(o&&l){if(a.push(gM(l,r,e)),I==="")return d||a.push(d),a.join("")?`${s}${a.join("")}`:void 0;a.push("=")}let G=[];if(Array.isArray(I))for(let u of I.filter(FIe))G.push(gM(u,r,e));else if(typeof I=="object")for(let u of Object.keys(I))FIe(I[u])&&(G.push(wAt(u)),G.push(gM(I[u],r,e)));return a.push(G.join(",")),a.join(",")?`${s}${a.join("")}`:void 0}function Ifl(t){let{op:e,varName:l,modifier:I,isFirst:n,reserved:r,varValue:a}=t;if(FIe(a))if(["string","number","boolean"].includes(typeof a)){let s=a.toString(),[o,d]=eke(e),G=[RZe(e,n)];return o&&l&&(G.push(l),s===""?G.push(d):G.push("=")),I&&I!=="*"&&(s=s.substring(0,parseInt(I,10))),G.push(gM(s,r,e)),G.join("")}else return I==="*"?tfl(t):lfl(t);else return}function KW(t,e,l){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,(I,n,r)=>{if(!n)return VAt(r);let a;["+","#",".","/",";","?","&"].includes(n[0])&&(a=n[0],n=n.slice(1));let s=n.split(/,/g),o=[];for(let d of s){let G=/([^:\*]*)(?::(\d+)|(\*))?/.exec(d);if(!G||!G[1])continue;let u=Ifl({isFirst:o.length===0,op:a,varValue:e[G[1]],varName:G[1],modifier:G[2]||G[3],reserved:l?.allowReserved});u&&o.push(u)}return o.join("")})}function nfl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/secrets/restore{?api%2Dversion}",{"api%2Dversion":t.apiVersion},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).post(Object.assign(Object.assign({},IN(l)),{contentType:"application/json",headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers),body:YAt(e)}))}async function rfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return WM(t.body)}async function tke(t,e,l={requestOptions:{}}){let I=await nfl(t,e,l);return rfl(I)}function afl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/secrets/{secret-name}/backup{?api%2Dversion}",{"secret-name":e,"api%2Dversion":t.apiVersion},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).post(Object.assign(Object.assign({},IN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function sfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return EAt(t.body)}async function lke(t,e,l={requestOptions:{}}){let I=await afl(t,e,l);return sfl(I)}function ofl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/deletedsecrets/{secret-name}/recover{?api%2Dversion}",{"secret-name":e,"api%2Dversion":t.apiVersion},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).post(Object.assign(Object.assign({},IN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function cfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return WM(t.body)}async function Ike(t,e,l={requestOptions:{}}){let I=await ofl(t,e,l);return cfl(I)}function ifl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/deletedsecrets/{secret-name}{?api%2Dversion}",{"secret-name":e,"api%2Dversion":t.apiVersion},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).delete(Object.assign(Object.assign({},IN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function dfl(t){if(!["204"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}}async function nke(t,e,l={requestOptions:{}}){let I=await ifl(t,e,l);return dfl(I)}function mfl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/deletedsecrets/{secret-name}{?api%2Dversion}",{"secret-name":e,"api%2Dversion":t.apiVersion},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).get(Object.assign(Object.assign({},IN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function Gfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return KJe(t.body)}async function rke(t,e,l={requestOptions:{}}){let I=await mfl(t,e,l);return Gfl(I)}function bfl(t,e={requestOptions:{}}){var l,I;let n=KW("/deletedsecrets{?api%2Dversion,maxresults}",{"api%2Dversion":t.apiVersion,maxresults:e?.maxresults},{allowReserved:(l=e?.requestOptions)===null||l===void 0?void 0:l.skipUrlEncoding});return t.path(n).get(Object.assign(Object.assign({},IN(e)),{headers:Object.assign({accept:"application/json"},(I=e.requestOptions)===null||I===void 0?void 0:I.headers)}))}async function ufl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return RAt(t.body)}function ake(t,e={requestOptions:{}}){return yZe(t,()=>bfl(t,e),ufl,["200"],{itemName:"value",nextLinkName:"nextLink"})}function pfl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/secrets/{secret-name}/versions{?api%2Dversion,maxresults}",{"secret-name":e,"api%2Dversion":t.apiVersion,maxresults:l?.maxresults},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).get(Object.assign(Object.assign({},IN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function hfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return qJe(t.body)}function ske(t,e,l={requestOptions:{}}){return yZe(t,()=>pfl(t,e,l),hfl,["200"],{itemName:"value",nextLinkName:"nextLink"})}function Zfl(t,e={requestOptions:{}}){var l,I;let n=KW("/secrets{?api%2Dversion,maxresults}",{"api%2Dversion":t.apiVersion,maxresults:e?.maxresults},{allowReserved:(l=e?.requestOptions)===null||l===void 0?void 0:l.skipUrlEncoding});return t.path(n).get(Object.assign(Object.assign({},IN(e)),{headers:Object.assign({accept:"application/json"},(I=e.requestOptions)===null||I===void 0?void 0:I.headers)}))}async function Nfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return qJe(t.body)}function oke(t,e={requestOptions:{}}){return yZe(t,()=>Zfl(t,e),Nfl,["200"],{itemName:"value",nextLinkName:"nextLink"})}function Wfl(t,e,l,I={requestOptions:{}}){var n,r;let a=KW("/secrets/{secret-name}/{secret-version}{?api%2Dversion}",{"secret-name":e,"secret-version":l,"api%2Dversion":t.apiVersion},{allowReserved:(n=I?.requestOptions)===null||n===void 0?void 0:n.skipUrlEncoding});return t.path(a).get(Object.assign(Object.assign({},IN(I)),{headers:Object.assign({accept:"application/json"},(r=I.requestOptions)===null||r===void 0?void 0:r.headers)}))}async function gfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return WM(t.body)}async function cke(t,e,l,I={requestOptions:{}}){let n=await Wfl(t,e,l,I);return gfl(n)}function Afl(t,e,l,I,n={requestOptions:{}}){var r,a;let s=KW("/secrets/{secret-name}/{secret-version}{?api%2Dversion}",{"secret-name":e,"secret-version":l,"api%2Dversion":t.apiVersion},{allowReserved:(r=n?.requestOptions)===null||r===void 0?void 0:r.skipUrlEncoding});return t.path(s).patch(Object.assign(Object.assign({},IN(n)),{contentType:"application/json",headers:Object.assign({accept:"application/json"},(a=n.requestOptions)===null||a===void 0?void 0:a.headers),body:yAt(I)}))}async function yfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return WM(t.body)}async function ike(t,e,l,I,n={requestOptions:{}}){let r=await Afl(t,e,l,I,n);return yfl(r)}function Rfl(t,e,l={requestOptions:{}}){var I,n;let r=KW("/secrets/{secret-name}{?api%2Dversion}",{"secret-name":e,"api%2Dversion":t.apiVersion},{allowReserved:(I=l?.requestOptions)===null||I===void 0?void 0:I.skipUrlEncoding});return t.path(r).delete(Object.assign(Object.assign({},IN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function Efl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return KJe(t.body)}async function dke(t,e,l={requestOptions:{}}){let I=await Rfl(t,e,l);return Efl(I)}function Yfl(t,e,l,I={requestOptions:{}}){var n,r;let a=KW("/secrets/{secret-name}{?api%2Dversion}",{"secret-name":e,"api%2Dversion":t.apiVersion},{allowReserved:(n=I?.requestOptions)===null||n===void 0?void 0:n.skipUrlEncoding});return t.path(a).put(Object.assign(Object.assign({},IN(I)),{contentType:"application/json",headers:Object.assign({accept:"application/json"},(r=I.requestOptions)===null||r===void 0?void 0:r.headers),body:WAt(l)}))}async function Vfl(t){if(!["200"].includes(t.status)){let l=cp(t);throw l.details=PW(t.body),l}return WM(t.body)}async function mke(t,e,l,I={requestOptions:{}}){let n=await Yfl(t,e,l,I);return Vfl(n)}var QIe=class{constructor(e,l,I={}){var n;let r=(n=I?.userAgentOptions)===null||n===void 0?void 0:n.userAgentPrefix,a=r?`${r} azsdk-js-client`:"azsdk-js-client";this._client=PJe(e,l,Object.assign(Object.assign({},I),{userAgentOptions:{userAgentPrefix:a}})),this.pipeline=this._client.pipeline}restoreSecret(e,l={requestOptions:{}}){return tke(this._client,e,l)}backupSecret(e,l={requestOptions:{}}){return lke(this._client,e,l)}recoverDeletedSecret(e,l={requestOptions:{}}){return Ike(this._client,e,l)}purgeDeletedSecret(e,l={requestOptions:{}}){return nke(this._client,e,l)}getDeletedSecret(e,l={requestOptions:{}}){return rke(this._client,e,l)}getDeletedSecrets(e={requestOptions:{}}){return ake(this._client,e)}getSecretVersions(e,l={requestOptions:{}}){return ske(this._client,e,l)}getSecrets(e={requestOptions:{}}){return oke(this._client,e)}getSecret(e,l,I={requestOptions:{}}){return cke(this._client,e,l,I)}updateSecret(e,l,I,n={requestOptions:{}}){return ike(this._client,e,l,I,n)}deleteSecret(e,l={requestOptions:{}}){return dke(this._client,e,l)}setSecret(e,l,I={requestOptions:{}}){return mke(this._client,e,l,I)}};c();c();c();var wfl=["authorization","authorization_url","resource","scope","tenantId","claims","error"];function Gke(t){let e=/,? +/,l=t.split(e).reduce((I,n)=>{if(n.match(/\w="/)){let[r,...a]=n.split("=");if(wfl.includes(r))return Object.assign(Object.assign({},I),{[r]:a.join("=").slice(1,-1)})}return I},{});if(l.authorization)try{let I=new URL(l.authorization).pathname.substring(1);I&&(l.tenantId=I)}catch{throw new Error(`The challenge authorization URI '${l.authorization}' is invalid.`)}return l}c();var Ffl={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function Qfl(t,e,l){async function I(){if(Date.now()<l)try{return await t()}catch{return null}else{let r=await t();if(r===null)throw new Error("Failed to refresh access token.");return r}}let n=await I();for(;n===null;)await dX(e),n=await I();return n}function FAt(t,e){let l=null,I=null,n,r=Object.assign(Object.assign({},Ffl),e),a={get isRefreshing(){return l!==null},get shouldRefresh(){var o;return a.isRefreshing?!1:I?.refreshAfterTimestamp&&I.refreshAfterTimestamp<Date.now()?!0:((o=I?.expiresOnTimestamp)!==null&&o!==void 0?o:0)-r.refreshWindowInMs<Date.now()},get mustRefresh(){return I===null||I.expiresOnTimestamp-r.forcedRefreshWindowInMs<Date.now()}};function s(o,d){var G;return a.isRefreshing||(l=Qfl(()=>t.getToken(o,d),r.retryIntervalInMs,(G=I?.expiresOnTimestamp)!==null&&G!==void 0?G:Date.now()).then(h=>(l=null,I=h,n=d.tenantId,I)).catch(h=>{throw l=null,I=null,n=void 0,h})),l}return async(o,d)=>{let G=!!d.claims,u=n!==d.tenantId;return G&&(I=null),u||G||a.mustRefresh?s(o,d):(a.shouldRefresh&&s(o,d),I)}}c();var QAt=ep("keyvault-common");function vfl(t,e){let l;try{l=new URL(t)}catch{throw new Error(`The challenge contains invalid scope '${t}'`)}if(!new URL(e.url).hostname.endsWith(`.${l.hostname}`))throw new Error(`The challenge resource '${l.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`)}var Cfl="keyVaultAuthenticationPolicy";function vAt(t,e={}){let{disableChallengeResourceVerification:l}=e,I={status:"none"},n=FAt(t);function r(G){return{abortSignal:G.abortSignal,requestOptions:{timeout:G.timeout>0?G.timeout:void 0},tracingOptions:G.tracingOptions}}async function a(G){let u=r(G);switch(I.status){case"none":I={status:"started",originalBody:G.body},G.body=null;break;case"started":break;case"complete":{let h=await n(I.scopes,Object.assign(Object.assign({},u),{enableCae:!0,tenantId:I.tenantId}));h&&G.headers.set("authorization",`Bearer ${h.token}`);break}}}async function s(G,u,h){if(u.status!==401)return u;G.body===null&&I.status==="started"&&(G.body=I.originalBody);let g=r(G),y=u.headers.get("WWW-Authenticate");if(!y)return QAt.warning("keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response."),u;let R=Gke(y),V=R.resource?R.resource+"/.default":R.scope;if(!V)return u;l||vfl(V,G);let F=await n([V],Object.assign(Object.assign({},g),{enableCae:!0,tenantId:R.tenantId}));return F?(G.headers.set("Authorization",`Bearer ${F.token}`),I={status:"complete",scopes:[V],tenantId:R.tenantId},h(G)):u}async function o(G,u,h){if(I.status!=="complete"||u.status!==401)return u;let g=r(G),y=u.headers.get("WWW-Authenticate");if(!y)return u;let{claims:R,error:V}=Gke(y);if(V!=="insufficient_claims"||R===void 0)return u;let F=atob(R),f=await n(I.scopes,Object.assign(Object.assign({},g),{enableCae:!0,tenantId:I.tenantId,claims:F}));return G.headers.set("Authorization",`Bearer ${f.token}`),h(G)}async function d(G,u){await a(G);let h=await u(G);return h=await s(G,h,u),h=await o(G,h,u),h}return{name:Cfl,sendRequest:d}}c();function CAt(t,e){if(typeof t!="string"||!(t=t.trim()))throw new Error("Invalid collection argument");if(typeof e!="string"||!(e=e.trim()))throw new Error("Invalid identifier argument");let l;try{l=new URL(e)}catch{throw new Error(`Invalid ${t} identifier: ${e}. Not a valid URI`)}let I=(l.pathname||"").split("/");if(I.length!==3&&I.length!==4)throw new Error(`Invalid ${t} identifier: ${e}. Bad number of segments: ${I.length}`);if(t!==I[1])throw new Error(`Invalid ${t} identifier: ${e}. segment [1] should be "${t}", found "${I[1]}"`);let n=`${l.protocol}//${l.host}`,r=I[2],a=I.length===4?I[3]:void 0;return{vaultUrl:n,name:r,version:a}}c();c();c();c();function bke(t){let l=t.split("/")[3];return Object.assign({sourceId:t},CAt(l,t))}c();function Xh(t){let e=t,l=t,I=bke(e.id),n=e.attributes;delete e.attributes;let r={value:e.value,name:I.name,properties:{expiresOn:n?.expires,createdOn:n?.created,updatedOn:n?.updated,enabled:n?.enabled,notBefore:n?.notBefore,recoverableDays:n?.recoverableDays,recoveryLevel:n?.recoveryLevel,id:e.id,contentType:e.contentType,tags:e.tags,managed:e.managed,vaultUrl:I.vaultUrl,version:I.version,name:I.name,certificateKeyId:e.kid}};return l.recoveryId&&(r.properties.recoveryId=l.recoveryId,r.properties.scheduledPurgeDate=l.scheduledPurgeDate,r.properties.deletedOn=l.deletedDate,r.recoveryId=l.recoveryId,r.scheduledPurgeDate=l.scheduledPurgeDate,r.deletedOn=l.deletedDate),n&&(n.vaultUrl&&delete r.properties.vaultUrl,n.expires&&delete r.properties.expires,n.created&&delete r.properties.created,n.updated&&delete r.properties.updated),r}function EZe(t,e,l){let I;return{async next(){I??(I=t(Object.assign(Object.assign({},e),{maxresults:void 0})));let n=await I.next();return Object.assign(Object.assign({},n),{value:n.value&&l(n.value)})},[Symbol.asyncIterator](){return this},byPage(n){return oX(this,arguments,function*(){var a,s,o,d;let G=t(Object.assign(Object.assign({},e),{maxresults:n?.maxPageSize})).byPage(n);try{for(var u=!0,h=Mk(G),g;g=yield qc(h.next()),a=g.done,!a;u=!0)d=g.value,u=!1,yield yield qc(d.map(l))}catch(y){s={error:y}}finally{try{!u&&!a&&(o=h.return)&&(yield qc(o.call(h)))}finally{if(s)throw s.error}}})}}}c();c();var YZe="4.10.0";var nN=jk({namespace:"Microsoft.KeyVault",packageName:"@azure/keyvault-secrets",packageVersion:YZe});c();c();c();c();c();c();c();c();var uke=ep("core-lro");c();c();c();c();c();c();var pke=class t extends Error{constructor(e){super(e),this.name="PollerStoppedError",Object.setPrototypeOf(this,t.prototype)}},hke=class t extends Error{constructor(e){super(e),this.name="PollerCancelledError",Object.setPrototypeOf(this,t.prototype)}},vIe=class{constructor(e){this.resolveOnUnsuccessful=!1,this.stopped=!0,this.pollProgressCallbacks=[],this.operation=e,this.promise=new Promise((l,I)=>{this.resolve=l,this.reject=I}),this.promise.catch(()=>{})}async startPolling(e={}){for(this.stopped&&(this.stopped=!1);!this.isStopped()&&!this.isDone();)await this.poll(e),await this.delay()}async pollOnce(e={}){this.isDone()||(this.operation=await this.operation.update({abortSignal:e.abortSignal,fireProgress:this.fireProgress.bind(this)})),this.processUpdatedState()}fireProgress(e){for(let l of this.pollProgressCallbacks)l(e)}async cancelOnce(e={}){this.operation=await this.operation.cancel(e)}poll(e={}){if(!this.pollOncePromise){this.pollOncePromise=this.pollOnce(e);let l=()=>{this.pollOncePromise=void 0};this.pollOncePromise.then(l,l).catch(this.reject)}return this.pollOncePromise}processUpdatedState(){if(this.operation.state.error&&(this.stopped=!0,!this.resolveOnUnsuccessful))throw this.reject(this.operation.state.error),this.operation.state.error;if(this.operation.state.isCancelled&&(this.stopped=!0,!this.resolveOnUnsuccessful)){let e=new hke("Operation was canceled");throw this.reject(e),e}this.isDone()&&this.resolve&&this.resolve(this.getResult())}async pollUntilDone(e={}){return this.stopped&&this.startPolling(e).catch(this.reject),this.processUpdatedState(),this.promise}onProgress(e){return this.pollProgressCallbacks.push(e),()=>{this.pollProgressCallbacks=this.pollProgressCallbacks.filter(l=>l!==e)}}isDone(){let e=this.operation.state;return!!(e.isCompleted||e.isCancelled||e.error)}stopPolling(){this.stopped||(this.stopped=!0,this.reject&&this.reject(new pke("This poller is already stopped")))}isStopped(){return this.stopped}cancelOperation(e={}){if(!this.cancelPromise)this.cancelPromise=this.cancelOnce(e);else if(e.abortSignal)throw new Error("A cancel request is currently pending");return this.cancelPromise}getOperationState(){return this.operation.state}getResult(){return this.operation.state.result}toString(){return this.operation.toString()}};c();var AM=class extends vIe{constructor(){super(...arguments),this.intervalInMs=2e3}async delay(){return dX(this.intervalInMs)}},yM=class{constructor(e,l={}){this.state=e,this.cancelMessage="",l.cancelMessage&&(this.cancelMessage=l.cancelMessage)}async update(){throw new Error("Operation not supported.")}async cancel(){throw new Error(this.cancelMessage)}toString(){return JSON.stringify({state:this.state})}};var VZe=class extends yM{constructor(e,l,I={}){super(e,{cancelMessage:"Canceling the deletion of a secret is not supported."}),this.state=e,this.client=l,this.operationOptions=I}deleteSecret(e,l={}){return nN.withSpan("DeleteSecretPoller.deleteSecret",l,async I=>{let n=await this.client.deleteSecret(e,I);return Xh(n)})}getDeletedSecret(e,l={}){return nN.withSpan("DeleteSecretPoller.getDeletedSecret",l,async I=>{let n=await this.client.getDeletedSecret(e,I);return Xh(n)})}async update(e={}){let l=this.state,{name:I}=l;if(e.abortSignal&&(this.operationOptions.abortSignal=e.abortSignal),!l.isStarted){let n=await this.deleteSecret(I,this.operationOptions);l.isStarted=!0,l.result=n,n.properties.recoveryId||(l.isCompleted=!0)}if(!l.isCompleted)try{l.result=await this.getDeletedSecret(I,this.operationOptions),l.isCompleted=!0}catch(n){if(n.statusCode===403)l.isCompleted=!0;else if(n.statusCode!==404)throw l.error=n,l.isCompleted=!0,n}return this}};var wZe=class extends AM{constructor(e){let{client:l,name:I,operationOptions:n,intervalInMs:r=2e3,resumeFrom:a}=e,s;a&&(s=JSON.parse(a).state);let o=new VZe(Object.assign(Object.assign({},s),{name:I}),l,n);super(o),this.intervalInMs=r}};c();c();var FZe=class extends yM{constructor(e,l,I={}){super(e,{cancelMessage:"Canceling the recovery of a deleted secret is not supported."}),this.state=e,this.client=l,this.options=I}getSecret(e,l={}){return nN.withSpan("RecoverDeletedSecretPoller.getSecret",l,async I=>{let n=await this.client.getSecret(e,l&&l.version?l.version:"",I);return Xh(n)})}recoverDeletedSecret(e,l={}){return nN.withSpan("RecoverDeletedSecretPoller.recoverDeletedSecret",l,async I=>{let n=await this.client.recoverDeletedSecret(e,I);return Xh(n)})}async update(e={}){let l=this.state,{name:I}=l;if(e.abortSignal&&(this.options.abortSignal=e.abortSignal),!l.isStarted){try{l.result=(await this.getSecret(I,this.options)).properties,l.isCompleted=!0}catch{}l.isCompleted||(l.result=(await this.recoverDeletedSecret(I,this.options)).properties,l.isStarted=!0)}if(!l.isCompleted)try{l.result=(await this.getSecret(I,this.options)).properties,l.isCompleted=!0}catch(n){if(n.statusCode===403)l.isCompleted=!0;else if(n.statusCode!==404)throw l.error=n,l.isCompleted=!0,n}return this}};var QZe=class extends AM{constructor(e){let{client:l,name:I,operationOptions:n,intervalInMs:r=2e3,resumeFrom:a}=e,s;a&&(s=JSON.parse(a).state);let o=new FZe(Object.assign(Object.assign({},s),{name:I}),l,n);super(o),this.intervalInMs=r}};var vZe=class{constructor(e,l,I={}){var n,r;this.vaultUrl=e;let a=Object.assign(Object.assign({},I),{userAgentOptions:{userAgentPrefix:`${(r=(n=I.userAgentOptions)===null||n===void 0?void 0:n.userAgentPrefix)!==null&&r!==void 0?r:""} azsdk-js-keyvault-secrets/${YZe}`},apiVersion:I.serviceVersion||"7.6",loggingOptions:{logger:GAt.info,additionalAllowedHeaderNames:["x-ms-keyvault-region","x-ms-keyvault-network-info","x-ms-keyvault-service-version"]}});this.client=new QIe(this.vaultUrl,l,a),this.client.pipeline.removePolicy({name:Lbe}),this.client.pipeline.addPolicy(vAt(l,I),{}),this.client.pipeline.addPolicy({name:"ContentTypePolicy",sendRequest(s,o){var d;return((d=s.headers.get("Content-Type"))!==null&&d!==void 0?d:"").startsWith("application/json")&&s.headers.set("Content-Type","application/json"),o(s)}})}setSecret(e,l,I={}){let{enabled:n,notBefore:r,expiresOn:a,tags:s}=I,o=Gee(I,["enabled","notBefore","expiresOn","tags"]);return nN.withSpan("SecretClient.setSecret",o,async d=>{let G=await this.client.setSecret(e,{value:l,secretAttributes:{enabled:n,notBefore:r,expires:a},tags:s},d);return Xh(G)})}async beginDeleteSecret(e,l={}){let I=new wZe(Object.assign(Object.assign({name:e,client:this.client},l),{operationOptions:l}));return await I.poll(),I}async updateSecretProperties(e,l,I={}){let{enabled:n,notBefore:r,expiresOn:a,tags:s}=I,o=Gee(I,["enabled","notBefore","expiresOn","tags"]);return nN.withSpan("SecretClient.updateSecretProperties",o,async d=>{let G=await this.client.updateSecret(e,l,{secretAttributes:{enabled:n,notBefore:r,expires:a},tags:s},d);return Xh(G).properties})}getSecret(e,l={}){return nN.withSpan("SecretClient.getSecret",l,async I=>{let n=await this.client.getSecret(e,l&&l.version?l.version:"",I);return Xh(n)})}getDeletedSecret(e,l={}){return nN.withSpan("SecretClient.getDeletedSecret",l,async I=>{let n=await this.client.getDeletedSecret(e,I);return Xh(n)})}purgeDeletedSecret(e,l={}){return nN.withSpan("SecretClient.purgeDeletedSecret",l,async I=>{await this.client.purgeDeletedSecret(e,I)})}async beginRecoverDeletedSecret(e,l={}){let I=new QZe(Object.assign(Object.assign({name:e,client:this.client},l),{operationOptions:l}));return await I.poll(),I}backupSecret(e,l={}){return nN.withSpan("SecretClient.backupSecret",l,async I=>(await this.client.backupSecret(e,I)).value)}restoreSecretBackup(e,l={}){return nN.withSpan("SecretClient.restoreSecretBackup",l,async I=>{let n=await this.client.restoreSecret({secretBundleBackup:e},I);return Xh(n).properties})}listPropertiesOfSecretVersions(e,l={}){return EZe(I=>this.client.getSecretVersions(e,I),l,I=>Xh(I).properties)}listPropertiesOfSecrets(e={}){return EZe(this.client.getSecrets.bind(this.client),e,l=>Xh(l).properties)}listDeletedSecrets(e={}){return EZe(this.client.getDeletedSecrets.bind(this.client),e,Xh)}};var Zke=class{client;logger;constructor(e,l){if(this.logger=l,e){this.logger.debug(`Using Azure Key Vault at ${e}`);let I=new WY;this.client=new vZe(e,I)}else this.logger.debug("No Azure Key Vault URI provided, secret provider disabled")}async getSecret(e){if(this.client)try{return(await this.client.getSecret(e)).value}catch(l){if(this.logger.warning(`Error fetching secret ${e}: ${l}`),l?.code==="SecretNotFound")return;throw l}}};function Nke(t,e){let l=t.api?.copilot?.azureKeyVaultUri;return Wke(l,e)}function Wke(t,e){return new Zke(t,e)}c();import{createHmac as Lfl}from"crypto";var CZe=class t{static encode(e){let l=t.hmacGetBytes(e),a=(Math.floor(Date.now()/1e3)+30).toString(),s=Buffer.from(a,"ascii"),G=Lfl("sha256",l).update(s).digest().toString("hex").toUpperCase();return`${a}.${G}`}static hmacGetBytes(e){return Buffer.from(e,"ascii")}};var xfl="X-GitHub-Api-Version",Sfl="2025-05-01",H3=class t extends Tn{constructor(l,I,n,r){super({baseURL:l,apiKey:"",logLevel:Zie()?"debug":"info"});this.headers=I;this.runnerLogger=n;this.hmacKey=r}static baseHeaders={"Content-Type":"application/json",Accept:"application/json","X-Interaction-Type":"conversation-agent","Openai-Intent":"conversation-agent","X-Initiator":"user",[xfl]:Sfl};hmacKey;static createWithOAuthToken(l,I,n,r,a,s){let o={...this.defaultHeaders(n,a),Authorization:`Bearer ${r}`,...s??{}};return l.debug(`Creating copilot-client for integration ID ${n} with token authentication. User-agent: ${o["User-Agent"]}`),new t(I,o,l)}static createWithHmac(l,I,n,r,a,s,o){let d={...this.defaultHeaders(n,a),Authorization:"",...o??{}};return s&&(d["X-GitHub-User"]=s),l.debug(`Creating copilot-client for integration ID ${n} with key authentication. User-agent: ${d["User-Agent"]}`),new t(I,d,l,r)}static defaultHeaders(l,I){let n=g2();return{...t.baseHeaders,"Copilot-Integration-Id":l,"User-Agent":`${n.nameNoScope}/${n.version} (${process.platform} ${process.version}) OpenAI/${fY}`,"X-Interaction-Id":I}}async prepareOptions(l){this.hmacKey&&(this.headers["Request-HMAC"]=CZe.encode(this.hmacKey)),l.headers={...this.headers,...l.headers},await super.prepareOptions(l)}setInitiatorHeader(l){this.headers["X-Initiator"]=l}async listModels(){let l={method:"get",path:""};await this.prepareOptions(l);let I={};if(l.headers)for(let[s,o]of Object.entries(l.headers))typeof o=="string"&&(I[s]=o);let n=`${this.baseURL}/models`,r=await fetch(n,{method:l.method,headers:I});if(!r.ok)return this.runnerLogger.error(`Failed to list models: ${r.statusText}`),[];let a=await r.json();return this.runnerLogger.debug(`Successfully listed ${a.data.length} models`),a.data}async prepareRequest(l,{url:I,options:n}){try{if(n.body.messages.some(s=>Array.isArray(s.content)?s.content.some(o=>o.type==="image_url"):!1)){let s=n.headers!==null?new Headers(n.headers):new Headers;s.set("Copilot-Vision-Request","true"),l.headers=s}}catch{this.runnerLogger.error("Error while preparing request headers for Copilot-Vision-Request")}await super.prepareRequest(l,{url:I,options:n})}},HZe=class{async createClient(e,l,I){l.startGroup("configured settings:",8),l.debug(JSON.stringify(e,null,2)),l.endGroup(8);let n=e.api?.copilot?.token,r=e.api?.copilot?.hmacKey,a=!!(r||n);if(!a){l.debug("No Copilot HMAC key or GitHub OAuth token provided, trying secret provider");let u=Nke(e,l);try{r=await u.getSecret("capi-hmac-key")}catch(h){l.debug(`Failed to get Copilot HMAC key from secret provider:
1438
1438
  ${h}`)}try{n=await u.getSecret("capi-token")}catch(h){l.debug(`Failed to get Copilot GitHub OAuth token from secret provider:
1439
1439
  ${h}`)}a=!!(r||n)}let s,o=$1e(e),d=fB(e),G=e.api?.copilot?.sessionId??iJ(e);if(l.debug(`Using Copilot API at ${o} with integration ID ${d}`),n&&(l.debug("Using GitHub OAuth token for Copilot API"),s=H3.createWithOAuthToken(l,o,d,n,G,I?.requestHeaders)),r){l.debug("Using Copilot HMAC key for Copilot API");let u=process.env.GITHUB_USER_ID;u?l.debug(`Using user ID ${u} for Copilot HMAC key`):l.debug("No user ID provided for Copilot HMAC key"),s=H3.createWithHmac(l,o,d,r,G,u,I?.requestHeaders)}if(s===void 0)throw new Error("No GitHub OAuth token or Copilot HMAC key provided");return s}},X3=class t extends Ki{request_id;constructor(e){super(e.status,e.error,e.message,e.headers),this.name="CAPIError",this.ghRequestId=e.headers?.get("x-github-request-id")||this.requestID,this.request_id=this.requestID}ghRequestId;static fromAPIError(e){if(!(!e||!(e instanceof Ki)))return new t(e)}};c();var gke="x-quota-snapshot-";function HAt(t){if(t)try{let e=new URLSearchParams(t),l=parseInt(e.get("ent")||"0",10),I=parseFloat(e.get("ov")||"0.0"),n=e.get("ovPerm")==="true",r=parseFloat(e.get("rem")||"0.0"),a=e.get("rst"),s;a?s=new Date(a):(s=new Date,s.setMonth(s.getMonth()+1));let o=Math.round(Math.max(0,l*(1-r/100)));return isNaN(l)||isNaN(I)||isNaN(r)?void 0:{isUnlimitedEntitlement:l===-1,entitlementRequests:l,usedRequests:o,usageAllowedWithExhaustedQuota:n,overage:I,overageAllowedWithExhaustedQuota:n,remainingPercentage:r,resetDate:s}}catch{return}}var Ake={type:"ephemeral"},RM=class t{constructor(e,l,I,n){this.settings=l;this.logger=I;this.clientOptions=t.initDefaultOptions(n),I.info(" "),I.debug(`Using model: ${this.model}`),this.clientPromise=e.createClient(l,I,n),this.modelPromise=this.clientPromise.then(async()=>{let r=await this.getModel();return I.debug(`Got model info: ${JSON.stringify(r,null,2)}`),r})}clientOptions;clientPromise;modelPromise;agent="sweagent-capi";get model(){return this.clientOptions.model}static initDefaultOptions(e){return{model:e?.model||UCe.model,toolTokenBudgetProportion:e?.toolTokenBudgetProportion??.25,retryPolicy:{maxRetries:e?.retryPolicy?.maxRetries??5,errorCodesToRetry:e?.retryPolicy?.errorCodesToRetry??[],rateLimitRetryPolicy:{defaultRetryAfterSeconds:e?.retryPolicy?.rateLimitRetryPolicy?.defaultRetryAfterSeconds??5,initialRetryBackoffExtraSeconds:e?.retryPolicy?.rateLimitRetryPolicy?.initialRetryBackoffExtraSeconds??1,retryBackoffExtraGrowth:e?.retryPolicy?.rateLimitRetryPolicy?.retryBackoffExtraGrowth??2,maxRetryAfterSeconds:e?.retryPolicy?.rateLimitRetryPolicy?.maxRetryAfterSeconds??180}},thinkingMode:e?.thinkingMode??!1,requestHeaders:e?.requestHeaders??{}}}getCompletionOptions(e,l){let I={snippy:{enabled:!1}};return{temperature:0,top_p:.95,frequency_penalty:0,presence_penalty:0,tool_choice:l?.toolChoice,...I}}makeRequest(e,l,I,n,r,a,s){return e.chat.completions.create({model:l,messages:[...I],...n,tools:r},{maxRetries:a,headers:s?.requestHeaders,signal:s?.abortSignal}).withResponse()}async*getCompletionWithTools(e,l,I,n){let r=this.model,a=await this.clientPromise,s=await this.modelPromise,o=BC(I),d=[{role:"system",content:e,copilot_cache_control:Ake},...l.map(R=>L$(R))],G=I.map((R,V)=>({type:"function",function:{name:R.name,description:R.description,parameters:R.input_schema},copilot_cache_control:V===I.length-1?Ake:void 0}));this.logger.startGroup("Completion request configuration: ",8),this.logger.debug("Client options: "),this.logger.debug(JSON.stringify(this.clientOptions,null,2)),this.logger.debug("Request options: "),this.logger.debug(JSON.stringify(n??{},null,2)),this.logger.debug("Tools: "),this.logger.debug(JSON.stringify(G,null,2)),this.logger.endGroup(8);let u=this.getCompletionOptions(I,n),h=n?.initialTurnCount!==void 0?n.initialTurnCount+1:0,g=!1,y=!1;for(;!g&&!y;){let R=Date.now();yield{kind:"turn_started",model:r,modelInfo:s,turn:h,timestampMs:R};let V=0,F=0,f=0,S=[429,503,500,400],B=this.clientOptions.retryPolicy.maxRetries,T=this.clientOptions.retryPolicy.rateLimitRetryPolicy.initialRetryBackoffExtraSeconds,q=0,le=this.clientOptions.retryPolicy.rateLimitRetryPolicy.maxRetryAfterSeconds,oe=s.capabilities.limits.max_prompt_tokens||s.capabilities.limits.max_context_window_tokens,U=1,$=.5,be=()=>oe*U,he,Re;try{if(h===0){let ue=S$e(d,r),ae=B$e(G,r);if(ue+ae>oe){if(n?.failIfInitialInputsTooLong)throw new Error(`Initial inputs exceed the model's token limit of ${oe} tokens.`);this.logger.warning(`Initial inputs exceed the model's token limit of ${oe} tokens. The model may not be able to process the inputs correctly.`)}}let re=[],j;do{f>0&&(yield{kind:"turn_retry",model:r,modelInfo:s,turn:h,timestampMs:Date.now()});try{for(let Ve of n?.processors?.preRequest||[]){let me=Ve.preRequest({turn:h,messages:d,toolDefinitions:G,modelInfo:s,tokenLimit:be()});for await(let ct of me)yield ct}if(this.logger.startGroup("Sending request to the AI model",8),So(this.settings,"copilot_swe_agent_request_logging")){let Ve=JSON.stringify(d,null,2),me=JSON.stringify(u,null,2);this.logger.debug(`Request messages: ${Ve}`),this.logger.debug(`Request options: ${me}`)}re=d.map((Ve,me)=>me===d.length-1?{...Ve,copilot_cache_control:Ake}:Ve),V=Date.now();let ue=await this.makeRequest(a,r,re,u,G,B,n);F=Date.now()-V,he=ue.data,j={model:r,api_id:he.id,request_id:ue.response.headers.get("x-github-request-id")||void 0};let ae={};ue.response.headers.forEach((Ve,me)=>{if(me.toLowerCase().startsWith(gke)){let ct=HAt(Ve);ct&&(ae[me.replace(gke,"")]=ct)}}),yield{kind:"model_call_success",turn:h,modelCallDurationMs:F,modelCall:j,responseChunk:Pct(he),responseUsage:he.usage,requestMessages:JSON.stringify(re),quotaSnapshots:ae},this.logger.debug(`response (Request-ID ${ue.request_id}):`),this.logger.debug("data:"),this.logger.debug(JSON.stringify(ue.data,null,2))}catch(ue){F=Date.now()-V;let ae=X3.fromAPIError(ue),Ve=ae?.error;if(ae){yield{kind:"model_call_failure",turn:h,modelCallDurationMs:F,requestMessages:JSON.stringify(re),modelCall:{model:r,status:ae.status,error:JSON.stringify(ae?.error||ae?.message||"unknown error"),api_id:ae.requestID||void 0,request_id:ae.headers?.get("x-github-request-id")||""}},Re=ae;let ct=ae.ghRequestId||ae.headers?.get("x-github-request-id")||ae.requestID;this.logger.error(`error (Request-ID ${ct})`),this.logger.error(JSON.stringify(ae,null,2)),this.logger.debug(`Failed to get response from the AI model: ${ae}`),Ve&&this.logger.debug(`Inner error: ${JSON.stringify(Ve,null,2)}`);for(let Ce of n?.processors?.onRequestError||[])await Ce.onRequestError(Ve);let fe=ae.status,Ee=fe?this.clientOptions.retryPolicy.errorCodesToRetry.some(Ce=>Array.isArray(Ce)?fe>=Ce[0]&&(Ce[1]===void 0||fe<=Ce[1]):fe===Ce):!1,se,Me=typeof Ve?.message=="string"?Ve.message.match(/prompt token count of (\d+) exceeds the limit of (\d+)/):void 0;if(ae.status!==402){if(ae.status===400&&Me){se=1;let Ce=parseInt(Me[2],10);Ce<oe?(oe=Ce,U=1):U=Math.max(U-$/B,$),this.logger.debug(`Adjusted model token limit to ${oe}, token limit retry buffer to ${U}`)}else if(ae.status===413){this.logger.debug("Request is too large, trying to remove images from the request");let Ce=0;for(let St=d.length-1;St>=0;St--)o_(d[St])&&(d.splice(St,1),Ce++,yield{kind:"images_removed",turn:h,imagesRemoved:1,largeImagesRemoved:1});Ce>0?(this.logger.info(`Images have been removed from the request due to size constraints. Please resize images to be smaller than ${iE(s.capabilities.limits.vision?.max_prompt_image_size||0)}.`),this.logger.debug(`Removed ${Ce} image messages from the request`),se=1):this.logger.debug("No image messages found in the request - unsure why the request is too large - will fail")}else if((typeof ae.status=="number"&&S.includes(ae.status)||Ee)&&(se=parseInt(ae.headers?.get("retry-after")||`${this.clientOptions.retryPolicy.rateLimitRetryPolicy.defaultRetryAfterSeconds}`,10)+T,T*=this.clientOptions.retryPolicy.rateLimitRetryPolicy.retryBackoffExtraGrowth,f==B-1))for(let Ce=d.length-1;Ce>=0;Ce--)o_(d[Ce])&&(this.logger.debug(`Removing image message at index ${Ce} to avoid failure`),d.splice(Ce,1),yield{kind:"images_removed",turn:h,imagesRemoved:1})}if(se!==void 0&&se<=le){let Ce=.8+Math.random()*.4,St=se*Ce;this.logger.debug(`Retrying after ${St} seconds...`),await new Promise(yl=>setTimeout(yl,St*1e3)),q+=St,this.logger.debug(`Retrying after ${se} seconds... Will try again now!`);continue}else se?this.logger.error(`Retry after ${se} seconds is too long. Giving up.`):this.logger.error("Retry after is not set. Giving up.")}let me=ae||ue;for(let ct of n?.processors?.onRequestError||[])await ct.preErrorThrow(ue);throw this.logger.error("error"),this.logger.error(JSON.stringify(me,null,2)),me}finally{this.logger.endGroup(8)}}while(!he&&f++<B);if(!he){this.logger.debug("Recent messages prior to failure:");for(let ae=Math.max(0,d.length-6);ae<d.length;ae++)this.logger.debug(`${ae}: ${JSON.stringify(d[ae],null,2)}`);let ue=new Error(`Failed to get response from the AI model; retried ${f-1} times (total retry wait time: ${q} seconds)`,{cause:Re});throw this.isRateLimitExceededError(ue)&&(this.logger.info(`Rate limit exceeded after ${f-1} retries, will fail job but skip Sentry reporting`),ue.skipReport=!0),ue}for(let ue of he.choices.map(ae=>ae.message))Bfl(ue.tool_calls||[]),d.push(ue),yield{kind:"message",modelCall:j,message:L$(s_(ue)),turn:h};if(this.isToolCallResponse(he)){let ue=be()*this.clientOptions.toolTokenBudgetProportion,ae=tIt(r,ue,this,this.settings),me=he.choices.filter(se=>se.message.tool_calls!==void 0).flatMap(se=>se.message.tool_calls||[]).filter(Mp),ct=new Map;for(let se of n?.processors?.preToolsExecution||[]){let Me=await se.preToolsExecution({turn:h,toolCalls:me,modelInfo:s});if(Me)for(let[Ce,St]of Me)ct.set(Ce,St)}let fe=me.filter(se=>!ct.has(se.id)),Ee=this.mergeToolResults(ct,me,fe,o,ae,n?.executeToolsInParallel);for await(let se of Ee){se.toolResult.resultType==="rejected"&&(y=!0);let Me={role:"tool",tool_call_id:se.originalCall.id,content:se.toolResult.textResultForLlm};d.push(Me),yield{kind:"message",modelCall:j,message:L$(Me),turn:h},yield{kind:"tool_execution",turn:h,toolCallId:se.originalCall.id,toolResult:se.toolResult,durationMs:se.durationMs};for(let Ce of n?.processors?.postToolExecution||[])await Ce.postToolExecution({toolCall:se.originalCall,toolResult:se.toolResult,turn:h,modelInfo:s})}}else for(let ue of he.choices.map(ae=>ae.message))yield{kind:"response",modelCall:{model:r,api_id:he.id},response:L$(s_(ue)),turn:h},g=!0;a.setInitiatorHeader("agent")}catch(re){let j;throw re instanceof Error&&re.cause&&re.cause instanceof X3?j=`${re} (Cause: ${re.cause})`:j=`${re}`,yield{kind:"turn_failed",model:r,modelInfo:s,turn:h,error:j,timestampMs:Date.now()},re}finally{let re=Date.now();yield{kind:"turn_ended",model:r,modelInfo:s,turn:h,timestampMs:re},h++}}}async*mergeToolResults(e,l,I,n,r,a=!1){for(let[s,o]of e){let d=l.find(G=>G.id===s);d&&(yield{durationMs:0,originalCall:d,toolResult:o})}I.length>0&&(yield*this.callTools(I,n,r,a))}async*callTools(e,l,I,n=!1){if(e.length===0)throw new Error("Tool call is missing");if(this.logger.debug(`Tool calls count: ${e.length}`),n)this.logger.debug("Running tool calls in parallel"),yield*Plt(e.map(r=>()=>this.callTool(r,l,I)));else{this.logger.debug("Running tool calls sequentially");for(let r of e)yield await this.callTool(r,l,I)}}async callTool(e,l,I){let n=0,r=e?.function.name;if(!r)throw new Error("Tool name is missing");let a=e?.function.arguments;if(!a)throw new Error("Tool call arguments are missing");let s=e?.id;if(!s)throw new Error("Tool call id is missing");let o,d=l[r];try{let G=Cz(a);if(!d||!d.callback)o={textResultForLlm:`Tool '${r}' does not exist. Available tools that can be called are ${Object.keys(l).join(", ")}.`,resultType:"failure",error:`Tool '${r}' does not exist.`,sessionLog:`<error>Tool '${r}' does not exist.</error>`,toolTelemetry:{}};else{let u=d.callback,h=Date.now(),g={...I,toolCallId:s,toolOptions:this.settings.service?.tools?.[r]},y=await u({...G},g);n=Date.now()-h,o=typeof y=="string"?{textResultForLlm:y,resultType:"success",toolTelemetry:{}}:y}}catch(G){G instanceof SyntaxError?(o={textResultForLlm:`The arguments for the tool call '${r}' were not valid JSON. The arguments have been cleared. Arguments: ${a}. JSON parse error: ${G.message}`,resultType:"failure",error:`${G.message}`,sessionLog:`<error>Failed to execute \`${r}\` tool with arguments: ${a} due to syntax error: ${G.message}</error>`,toolTelemetry:{properties:{wasSyntaxError:"true"}}},e.function.arguments="{}"):o={textResultForLlm:`Failed to execute \`${r}\` tool with arguments: ${a} due to error: ${G}`,resultType:"failure",error:G instanceof Error?G.message:`${G}`,sessionLog:`<error>Failed to execute \`${r}\` tool with arguments: ${a}</error>`,toolTelemetry:{}}}return{durationMs:n,originalCall:e,toolResult:o}}isToolCallResponse(e){return e.choices.find(l=>l.message.tool_calls!==void 0)!==void 0}isRateLimitExceededError(e){if(e instanceof Error){if(e.message?.includes("exceeded maximum number of retries")&&e.message?.includes("rate-limited requests"))return!0;if(e.message?.includes("Failed to get response from the AI model")&&e.cause instanceof X3)return e.cause.status===429}return!1}async getModel(){let e=this.clientOptions.model,l={id:e,name:e,capabilities:{supports:{vision:!1},limits:{max_prompt_tokens:9e4,max_context_window_tokens:128e3,vision:{max_prompt_image_size:3145728,max_prompt_images:1,supported_media_types:["image/jpeg","image/png","image/webp"]}}}};return(await(await this.clientPromise).listModels()).filter(a=>a.id===e).at(0)||l}};function Bfl(t){for(let e of t)e.function.name=e.function.name.replace(/[^a-zA-Z0-9_-]+/g,"_")}var CIe=class extends RM{constructor(e,l,I){let n=new HZe;super(n,e,l,I)}};c();var XZe=class extends RM{constructor(e,l,I,n){super(e,l,I,n)}getCompletionOptions(e,l){return{...this.model.startsWith("gpt-4")?{temperature:0,top_p:.95,frequency_penalty:0,presence_penalty:0,parallel_tool_calls:e?!1:void 0}:{},tool_choice:l?.toolChoice}}async*getCompletionWithTools(e,l,I,n){let r=await super.getCompletionWithTools(e,l,I,n);for await(let a of r)a.kind==="message"?yield{...a,message:s_({...a.message,reasoning_text:a.message?.cot_summary})}:yield a}};c();c();var fZe=class t{constructor(e,l,I,n){this.settings=l;this.logger=I;this.clientOptions=t.initDefaultOptions(n),this.logger.info(`Using responses with model: ${this.model}`),this.clientPromise=e.createClient(l,I,this.clientOptions)}clientOptions;clientPromise;get model(){return this.clientOptions.model}static initDefaultOptions(e){return{model:e?.model||"o4-mini",toolTokenBudgetProportion:e?.toolTokenBudgetProportion??.25,retryPolicy:{maxRetries:e?.retryPolicy?.maxRetries??5,errorCodesToRetry:e?.retryPolicy?.errorCodesToRetry??[],rateLimitRetryPolicy:{defaultRetryAfterSeconds:e?.retryPolicy?.rateLimitRetryPolicy?.defaultRetryAfterSeconds??5,initialRetryBackoffExtraSeconds:e?.retryPolicy?.rateLimitRetryPolicy?.initialRetryBackoffExtraSeconds??1,retryBackoffExtraGrowth:e?.retryPolicy?.rateLimitRetryPolicy?.retryBackoffExtraGrowth??2,maxRetryAfterSeconds:e?.retryPolicy?.rateLimitRetryPolicy?.maxRetryAfterSeconds??60}},thinkingMode:e?.thinkingMode??!0,requestHeaders:e?.requestHeaders??{}}}async*getCompletionWithTools(e,l,I,n){let r=await this.clientPromise,a=BC(I),s=I.map(V=>({name:V.name,description:V.description,parameters:V.input_schema,strict:!1,type:"function"})),o=0,d=this.clientOptions.retryPolicy.maxRetries,G=this.clientOptions.retryPolicy.rateLimitRetryPolicy.initialRetryBackoffExtraSeconds,u=0,h=this.clientOptions.retryPolicy.rateLimitRetryPolicy.maxRetryAfterSeconds,g=l.flatMap(Ofl),y,R=!1;for(;!R;){let V;do{V=void 0;try{let F=await r.responses.create({model:this.model,previous_response_id:y?.id,instructions:e,input:g,parallel_tool_calls:s.length>0?!0:void 0,tools:s,reasoning:{summary:"auto",effort:"medium"}},{maxRetries:d}).withResponse();y=F.data,this.logger.debug(`response (Request-ID ${F.request_id}):`),this.logger.debug("data:"),this.logger.debug(JSON.stringify(F.data,null,2))}catch(F){let f=F,S=f.error;if(f){V=f,this.logger.error(`error (Request-ID ${f.requestID})`),this.logger.error(JSON.stringify(f,null,2)),this.logger.debug(`Failed to get response from the AI model: ${f}`),S&&this.logger.debug(`Inner error: ${JSON.stringify(S,null,2)}`);let B=f.status,T=B?this.clientOptions.retryPolicy.errorCodesToRetry.some(le=>Array.isArray(le)?B>=le[0]&&(le[1]===void 0||B<=le[1]):B===le):!1,q;if((f.status===429||T)&&(q=parseInt(f.headers?.get("retry-after")||`${this.clientOptions.retryPolicy.rateLimitRetryPolicy.defaultRetryAfterSeconds}`,10)+G,G*=this.clientOptions.retryPolicy.rateLimitRetryPolicy.retryBackoffExtraGrowth),q!==void 0&&q<=h){this.logger.debug(`Retrying after ${q} seconds...`),await new Promise(le=>setTimeout(le,q*1e3)),u+=q,this.logger.debug(`Retrying after ${q} seconds... Will try again now!`);continue}else q?this.logger.error(`Retry after ${q} seconds is too long. Giving up.`):this.logger.error("Retry after is not set. Giving up.")}throw this.logger.error("error"),this.logger.error(JSON.stringify(F,null,2)),F}finally{this.logger.endGroup(8)}}while(V&&o++<d);if(!y||V){this.logger.debug("Recent messages prior to failure:");for(let F=Math.max(0,g.length-6);F<g.length;F++)this.logger.debug(`${F}: ${JSON.stringify(g[F],null,2)}`);throw new Error(`Failed to get response from the AI model; retried ${o-1} times (total retry wait time: ${u} seconds)`,{cause:V})}if(this.requiresToolOutput(y)){for(let f of y.output)yield{kind:"message",message:yke(f)};g=(await this.runTool(y,a)).map(f=>({type:"function_call_output",call_id:f.toolCallId,output:f.textResultForLlm}));for(let f of g)yield{kind:"message",message:yke(f)}}else{for(let F of y.output)yield{kind:"message",message:yke(F)};yield{kind:"response",response:{content:y.output_text,refusal:null,role:"assistant"}},R=!0}}}async runTool(e,l,I){let n=e.output.filter(a=>a.type==="function_call");if(!n||n.length===0)throw new Error("Tool calls in response are missing");let r=[];for(let a of n){let s=a.name;if(!s)throw new Error("Tool name is missing");let o=a.arguments;if(!o)throw new Error("Tool call arguments are missing");let d=a.call_id;if(!d)throw new Error("Tool call id is missing");let G,u=l[s];try{let h=Cz(o);if(!u||!u.callback)G={textResultForLlm:`Tool '${s}' does not exist. Available tools that can be called are ${Object.keys(l).join(", ")}.`,resultType:"failure",error:`Tool '${s}' does not exist.`,sessionLog:`<error>Tool '${s}' does not exist.</error>`,toolTelemetry:{}};else{let g=u.callback,y={...I,toolOptions:this.settings.service?.tools?.[s],settings:this.settings},R=await g({...h},y);G=typeof R=="string"?{textResultForLlm:R,resultType:"success",toolTelemetry:{}}:R}}catch(h){G={textResultForLlm:`Failed to execute \`${s}\` tool with arguments: ${o} due to error: ${h}`,resultType:"failure",error:h instanceof Error?h.message:`${h}`,sessionLog:`<error>Failed to execute \`${s}\` tool with arguments: ${o}</error>`,toolTelemetry:{properties:{wasSyntaxError:h instanceof SyntaxError?"true":"false"}}}}r.push({toolCallId:d,textResultForLlm:G.textResultForLlm,sessionLog:G.resultType=="success"?G.sessionLog:G.error?`<error>${G.error}</error>`:void 0})}return r}requiresToolOutput(e){return e.output.filter(l=>l.type==="function_call").length>0}};function Ofl(t){if(t.role==="function")throw new Error("Function role is not supported");let e=[];if(t.reasoning_opaque&&e.push({id:t.reasoning_opaque,type:"reasoning",summary:t.reasoning_text?[{text:t.reasoning_text,type:"summary_text"}]:[]}),t.role==="assistant"&&t.tool_calls&&t.tool_calls.length>0&&Mp(t.tool_calls[0])){let l=t.tool_calls[0];return[...e,{type:"function_call",id:t.id,name:l.function.name,arguments:l.function.arguments,call_id:l.id}]}return t.role==="tool"?[...e,{type:"function_call_output",call_id:t.tool_call_id,output:typeof t.content=="string"?t.content:t.content?.map(l=>l.type==="text"?l:{type:"text",text:""}).join(" ")??""}]:t.content?t.role==="assistant"?[...e,{type:"message",id:t.id,role:t.role,content:[{annotations:[],type:"output_text",text:typeof t.content=="string"?t.content:t.content?.map(l=>l.type==="text"?l.text:"").join(" ")??""}]}]:[...e,{role:t.role,content:typeof t.content=="string"?t.content:t.content?.map(l=>l.type==="text"?l.text:"").join(" ")??"",type:"message"}]:e}function yke(t){if(t.type==="reasoning")return{role:"assistant",reasoning_opaque:t.id,reasoning_text:t.summary?t.summary.map(e=>e.text).join(" "):void 0,content:""};if(t.type==="function_call")return{role:"assistant",id:t.id,tool_calls:[{id:t.call_id,type:"function",function:{name:t.name,arguments:t.arguments}}],content:""};if(t.type==="function_call_output")return{role:"tool",content:t.output,tool_call_id:t.call_id};if(t.type==="message")return{id:"id"in t?t.id:void 0,role:t.role,content:typeof t.content=="string"?t.content:t.content?.map(e=>e.type==="input_text"||e.type==="output_text"?e.text:"").join(" ")??""};throw new Error(`Unknown item type: ${t.type}`)}var JZe=class extends fZe{constructor(e,l,I,n){super(e,l,I,n)}};c();var Rke=class extends EIe{constructor(e){super(e)}setInitiatorHeader(e){}listModels(){return Promise.resolve([])}},kZe=class{async createClient(e,l,I){l.startGroup("configured settings:",8),l.debug(JSON.stringify(e,null,2)),l.endGroup(8);let n=e.api?.openai?.apiKey,r=e.api?.openai?.azureKeyVaultUri,a=e.api?.openai?.azureSecretName;if(!n&&r){l.debug("No API_KEY provided, trying secret provider");let G=Wke(r,l);try{n=await G.getSecret(a||"azure-openai-api-key")}catch(u){l.debug(`Failed to get API Key from secret provider:
1440
- ${u}`)}}let s=g$e(e);l.debug(`Using Azure Open API at ${s}`);let d={baseURL:`${new URL(s).origin}/openai`,apiVersion:e.api?.openai?.azure?.apiVersion||"2024-10-21",deployment:I?.model,defaultHeaders:I?.requestHeaders};if(n)d={...d,apiKey:n},l.debug("Using Azure OpenAI API Key");else{let G=new WY,h=C5e(G,"https://cognitiveservices.azure.com/.default");d={...d,azureADTokenProvider:h},l.debug("Using Azure Managed Identity")}return new Rke(d)}};c();var Eke=class extends Tn{constructor(e){super(e)}setInitiatorHeader(e){}listModels(){return Promise.resolve([])}},LZe=class{async createClient(e,l,I){l.startGroup("configured settings:",8),l.debug(JSON.stringify(e,null,2)),l.endGroup(8);let n=W$e(e),r=e.api?.openai?.baseUrl,a=I?.requestHeaders;return new Eke({baseURL:r,apiKey:n,defaultHeaders:a})}};function Yke(t,e,l,I){switch(I?.thinkingMode===void 0&&So(t,"copilot_swe_agent_thinking_mode")&&(I={...I,thinkingMode:!0}),l){case"sweagent-aip":return new Ape(t,e,I);case"sweagent-anthropic":return new Uhe(t,e,I);case"sweagent-capi":return new CIe(t,e,I);case"sweagent-openai":return I?.thinkingMode?new JZe(XAt(t),t,e,I):new XZe(XAt(t),t,e,I);default:return new CIe(t,e,I)}}function XAt(t){return t.api?.openai?.azure?.url?new kZe:new LZe}c();c();function EM(t){return t.kind==="message"&&t.message.role==="assistant"}function fAt(t){return t.kind==="message"&&t.message.role==="user"}function xZe(t){return t.kind==="message"&&t.message.role==="assistant"&&!!t.message.tool_calls}function SZe(t){return t.kind==="message"&&t.message.role==="tool"}function Tfl(t,e){return t.toolCalls.find(l=>l.toolCallId===e)}function Ufl(t,e){let l=e.function.name;try{let I=JSON.parse(e.function.arguments||"{}"),r=t.find(a=>a.name===l)?.safeForTelemetry||{name:!1,inputsNames:!1};return{toolCallId:e.id,toolName:l,arguments:e.function.arguments,safeForTelemetryToolName:r===!0||r.name?l:HJ(l),safeForTelemetryArguments:r===!0||r.inputsNames?dgt(I):""}}catch{return{toolCallId:e.id,toolName:l,arguments:e.function.arguments,safeForTelemetryToolName:HJ(l),safeForTelemetryArguments:""}}}var BZe=class{forAgent;turnDataCache;emittedTurns=new Set;callback;settings;toolsInUse;constructor(e,l,I,n){this.forAgent=e,this.turnDataCache=new Map,this.emittedTurns=new Set,this.callback=l,this.settings=I,this.toolsInUse=n}getTurnData(){return this.turnDataCache}async ingestEvent(e){let l,I;if("turn"in e&&typeof e.turn=="number"){if(l=e.turn+1,this.emittedTurns.has(l))return;this.turnDataCache.has(l)||this.turnDataCache.set(l,{featureFlagsAsString:D1e(this.settings),toolCalls:[],toolCallExecutions:[],turn:l}),I=this.turnDataCache.get(l)}else return;e.kind==="tool_execution"?await this.ingestToolExecutionEventAndEmitToolCallExecutedTelemetry(I,e):e.kind==="turn_started"||e.kind==="turn_failed"||e.kind==="turn_retry"||e.kind==="turn_ended"?(I={...I,model:e.model,modelInfo:JSON.stringify(e.modelInfo)},e.kind==="turn_started"?I={...I,startTimeMs:e.timestampMs}:e.kind==="turn_retry"?I={...I,endTimeMs:e.timestampMs,retriesUsed:(I.retriesUsed??0)+1}:e.kind==="turn_failed"?I={...I,endTimeMs:e.timestampMs,error:e.error}:e.kind==="turn_ended"&&(I={...I,endTimeMs:e.timestampMs})):e.kind==="history_truncated"?I={...I,truncateEvent:e}:e.kind==="image_processing"?I={...I,imageProcessingMetrics:e.imageProcessingMetrics}:e.kind==="images_removed"?I={...I,largeImagesRemoved:(I.largeImagesRemoved??0)+(e.largeImagesRemoved?1:0),imagesRemoved:(I.imagesRemoved??0)+(e.imagesRemoved?1:0)}:e.kind==="model_call_success"||e.kind==="model_call_failure"?(I={...I,modelCallDurationMs:e.modelCallDurationMs,api_call_id:e.modelCall.api_id,provider_call_id:e.modelCall.request_id,conversationStructureSummary:jct(e.requestMessages)},e.kind==="model_call_success"&&(I={...I,responsePromptTokens:e.responseUsage?.prompt_tokens,responseCompletionTokens:e.responseUsage?.completion_tokens,responseTotalTokens:e.responseUsage?.total_tokens})):fAt(e)&&e.source==="jit-instruction"?I={...I,jitInstructionsAdded:(I?.jitInstructionsAdded??0)+1}:EM(e)&&e.message.tool_calls?I={...I,toolCalls:I.toolCalls.concat(e.message.tool_calls.map(n=>({...Ufl(this.toolsInUse,n)})))}:SZe(e)&&(I={...I,toolCallExecutions:I.toolCallExecutions.concat([e.message.tool_call_id])}),this.turnDataCache.set(l,I),e.kind==="turn_ended"&&(await this.emitTurnTelemetry(l),this.emittedTurns.add(l),this.turnDataCache.delete(l))}async emitTurnTelemetry(e){let l=this.turnDataCache.get(e);if(l){let I={kind:"telemetry",telemetry:{event:"get_completion_with_tools_turn",properties:{model:l.model||"default",modelInfo:l.modelInfo||"{}",api_call_id:l.api_call_id,provider_call_id:l.provider_call_id,agent:this.forAgent,toolCalls:JSON.stringify(l.toolCalls.map(n=>({toolCallId:n.toolCallId,toolName:n.safeForTelemetryToolName}))),toolCallExecutions:JSON.stringify(l.toolCallExecutions),error:l.error,featureFlags:D1e(this.settings),conversationStructureSummary:l.conversationStructureSummary,truncationPerformedBy:l.truncateEvent?.performedBy},metrics:{turn:e,turnDurationMs:l.endTimeMs!==void 0&&l.startTimeMs!==void 0?l.endTimeMs-l.startTimeMs:0,modelCallDurationMs:l.modelCallDurationMs,retriesUsed:l.retriesUsed??0,numToolCalls:l.toolCalls.length,numToolExecutions:l.toolCallExecutions.length,largeImagesRemoved:l.largeImagesRemoved,imagesRemoved:l.imagesRemoved,responsePromptTokens:l.responsePromptTokens,responseCompletionTokens:l.responseCompletionTokens,responseTotalTokens:l.responseTotalTokens,jitInstructionsAdded:l.jitInstructionsAdded,...l.truncateEvent?.truncateResult,...l.imageProcessingMetrics},restrictedProperties:{}}};await this.callback.progress(I)}}async ingestToolExecutionEventAndEmitToolCallExecutedTelemetry(e,l){let I=l.toolCallId,n=Tfl(e,I);if(n){let r=l.toolResult,a={kind:"telemetry",telemetry:{event:"tool_call_executed",properties:{...r.toolTelemetry.properties,resultType:r.resultType,toolCallId:I,arguments:n.safeForTelemetryArguments,toolName:n.safeForTelemetryToolName,api_call_id:e.api_call_id},restrictedProperties:{...r.toolTelemetry.restrictedProperties,arguments:n.arguments,result:r.textResultForLlm,toolName:n.toolName,error:r.error},metrics:{...r.toolTelemetry.metrics,durationMs:l.durationMs}}};await this.callback.progress(a)}}};c();var HIe=class{async*preRequest(e){yield*[]}handleCallbackResponse(e){}getUserMessages(){return[]}clearUserMessages(){}canProcessUserMessages(){return!1}toJSON(){return JSON.stringify({type:"NoopUserMessageProcessor"})}};var OZe=class{constructor(e,l){this.runtimeContext=e;this.customAgentName=l;this.gitHandlers={silent:new RZ(new Ah,this.runtimeContext.exec),logging:new RZ(this.runtimeContext.logger,this.runtimeContext.exec)}}gitHandlers;async agent(e,l,I,n,r,a,s=new HIe,o){let d=async(g,y,R)=>{let V={role:"user",content:g};return await this.runtimeContext.callback?.progress({kind:"message",message:V,turn:0}),await this.runCompletionWithTools(e,l,[...y??[],V],a,r,{executeToolsInParallel:So(this.runtimeContext.settings,"copilot_swe_agent_parallel_tool_execution"),initialTurnCount:R},o,s)},G=n,u=I??[],h;for(;G;){let g=await d(G,u,h);h=g.finalTurnCount,u=g.messages,G=await o?.onResult(g.postCompletionWithToolsCommitHash)}for(let g of a)if(g.shutdown){let y=await g.shutdown();y&&await this.runtimeContext.callback?.progress(y)}return{finalTurnCount:h||0,messages:u}}async runCompletionWithTools(e,l,I,n,r,a,s,o=new HIe){let d=this.runtimeContext.callback?new BZe("sweagent-capi",this.runtimeContext.callback,this.runtimeContext.settings,n):void 0,G=this.gitHandlers.logging,u=await G.getCurrentCommitHash(e),h=I.filter(S=>S.role==="user").at(-1),g=this.createCompletionWithToolsProcessors(e,u,n,o,r,s,h),y=this.runtimeContext.client.getCompletionWithTools(l,I,n,{...a,processors:g}),R=0,V=[...I],F=[];for await(let S of y){if(So(this.runtimeContext.settings,"copilot_swe_agent_progress_commands")){let B=await this.runtimeContext.callback?.progress(S,{accepts_user_messages:o.canProcessUserMessages()});o.handleCallbackResponse(B)}else S.kind==="response"?await this.runtimeContext.callback?.progress({...S,customAgentName:this.customAgentName}):await this.runtimeContext.callback?.progress(S);d&&await d.ingestEvent(S),(S.kind==="message"||S.kind==="response")&&(S.kind==="message"&&V.push(S.message),S.kind==="response"&&F.push(S.response),R=Math.max(R,S.turn??0))}let f=await G.getCurrentCommitHash(e);return{finalTurnCount:R,messages:V,resultMessages:F,preCompletionWithToolsCommitHash:u,postCompletionWithToolsCommitHash:f}}createCompletionWithToolsProcessors(e,l,I,n,r,a,s){let o=new Ibe(this.runtimeContext.logger,this.runtimeContext.settings,I.find(g=>g.name==="github-mcp-server-get_file_contents")),d=new rbe(this.runtimeContext.settings,this.runtimeContext.logger,this.gitHandlers.silent,e,l,r),G=new c_(this.runtimeContext.logger),u=s?new i_(s,this.runtimeContext.logger):void 0,h=[d,o,G,u];return So(this.runtimeContext.settings,"copilot_swe_agent_progress_commands")&&h.push(n),{preRequest:h.filter(g=>g!==void 0),preToolsExecution:[a].filter(g=>g!==void 0),postToolExecution:[o,a].filter(g=>g!==void 0),onRequestError:[o,u].filter(g=>g!==void 0)}}};c();async function Vke(t,e,l,I,n){try{return(await I.invokeTool("blackbird-mcp-server/search_repository_with_agent",{task:t,depth:2,owner:e,repo:l,numSnippets:10},"hidden_characters")).textResultForLlm}catch(r){return n.error(`Error during Blackbird search: ${r}`),""}}var kAt=t=>So(t,"copilot_swe_agent_search")||a$e(t,"SearchAgentExperiment")==="enabled",JAt="search";function wke(t){return t!==null&&typeof t=="object"&&"question"in t&&"reason"in t&&"searchCommand"in t}var _fl=(t,e,l)=>`
1440
+ ${u}`)}}let s=g$e(e);l.debug(`Using Azure Open API at ${s}`);let d={baseURL:`${new URL(s).origin}/openai`,apiVersion:e.api?.openai?.azure?.apiVersion||"2024-10-21",deployment:I?.model,defaultHeaders:I?.requestHeaders};if(n)d={...d,apiKey:n},l.debug("Using Azure OpenAI API Key");else{let G=new WY,h=C5e(G,"https://cognitiveservices.azure.com/.default");d={...d,azureADTokenProvider:h},l.debug("Using Azure Managed Identity")}return new Rke(d)}};c();var Eke=class extends Tn{constructor(e){super(e)}setInitiatorHeader(e){}listModels(){return Promise.resolve([])}},LZe=class{async createClient(e,l,I){l.startGroup("configured settings:",8),l.debug(JSON.stringify(e,null,2)),l.endGroup(8);let n=W$e(e),r=e.api?.openai?.baseUrl,a=I?.requestHeaders;return new Eke({baseURL:r,apiKey:n,defaultHeaders:a})}};function Yke(t,e,l,I){switch(I?.thinkingMode===void 0&&So(t,"copilot_swe_agent_thinking_mode")&&(I={...I,thinkingMode:!0}),l){case"sweagent-aip":return new Ape(t,e,I);case"sweagent-anthropic":return new Uhe(t,e,I);case"sweagent-capi":return new CIe(t,e,I);case"sweagent-openai":return I?.thinkingMode?new JZe(XAt(t),t,e,I):new XZe(XAt(t),t,e,I);default:return new CIe(t,e,I)}}function XAt(t){return t.api?.openai?.azure?.url?new kZe:new LZe}c();c();function EM(t){return t.kind==="message"&&t.message.role==="assistant"}function fAt(t){return t.kind==="message"&&t.message.role==="user"}function xZe(t){return t.kind==="message"&&t.message.role==="assistant"&&!!t.message.tool_calls}function SZe(t){return t.kind==="message"&&t.message.role==="tool"}function Tfl(t,e){return t.toolCalls.find(l=>l.toolCallId===e)}function Ufl(t,e){let l=e.function.name;try{let I=JSON.parse(e.function.arguments||"{}"),r=t.find(a=>a.name===l)?.safeForTelemetry||{name:!1,inputsNames:!1};return{toolCallId:e.id,toolName:l,arguments:e.function.arguments,safeForTelemetryToolName:r===!0||r.name?l:HJ(l),safeForTelemetryArguments:r===!0||r.inputsNames?dgt(I):""}}catch{return{toolCallId:e.id,toolName:l,arguments:e.function.arguments,safeForTelemetryToolName:HJ(l),safeForTelemetryArguments:""}}}var BZe=class{forAgent;turnDataCache;emittedTurns=new Set;callback;settings;toolsInUse;constructor(e,l,I,n){this.forAgent=e,this.turnDataCache=new Map,this.emittedTurns=new Set,this.callback=l,this.settings=I,this.toolsInUse=n}getTurnData(){return this.turnDataCache}async ingestEvent(e){let l,I;if("turn"in e&&typeof e.turn=="number"){if(l=e.turn+1,this.emittedTurns.has(l))return;this.turnDataCache.has(l)||this.turnDataCache.set(l,{featureFlagsAsString:D1e(this.settings),toolCalls:[],toolCallExecutions:[],turn:l}),I=this.turnDataCache.get(l)}else return;e.kind==="tool_execution"?await this.ingestToolExecutionEventAndEmitToolCallExecutedTelemetry(I,e):e.kind==="turn_started"||e.kind==="turn_failed"||e.kind==="turn_retry"||e.kind==="turn_ended"?(I={...I,model:e.model,modelInfo:JSON.stringify(e.modelInfo)},e.kind==="turn_started"?I={...I,startTimeMs:e.timestampMs}:e.kind==="turn_retry"?I={...I,endTimeMs:e.timestampMs,retriesUsed:(I.retriesUsed??0)+1}:e.kind==="turn_failed"?I={...I,endTimeMs:e.timestampMs,error:e.error}:e.kind==="turn_ended"&&(I={...I,endTimeMs:e.timestampMs})):e.kind==="history_truncated"?I={...I,truncateEvent:e}:e.kind==="image_processing"?I={...I,imageProcessingMetrics:e.imageProcessingMetrics}:e.kind==="images_removed"?I={...I,largeImagesRemoved:(I.largeImagesRemoved??0)+(e.largeImagesRemoved?1:0),imagesRemoved:(I.imagesRemoved??0)+(e.imagesRemoved?1:0)}:e.kind==="model_call_success"||e.kind==="model_call_failure"?(I={...I,modelCallDurationMs:e.modelCallDurationMs,api_call_id:e.modelCall.api_id,provider_call_id:e.modelCall.request_id,conversationStructureSummary:jct(e.requestMessages)},e.kind==="model_call_success"&&(I={...I,responsePromptTokens:e.responseUsage?.prompt_tokens,responseCompletionTokens:e.responseUsage?.completion_tokens,responseTotalTokens:e.responseUsage?.total_tokens})):fAt(e)&&e.source==="jit-instruction"?I={...I,jitInstructionsAdded:(I?.jitInstructionsAdded??0)+1}:EM(e)&&e.message.tool_calls?I={...I,toolCalls:I.toolCalls.concat(e.message.tool_calls.map(n=>({...Ufl(this.toolsInUse,n)})))}:SZe(e)&&(I={...I,toolCallExecutions:I.toolCallExecutions.concat([e.message.tool_call_id])}),this.turnDataCache.set(l,I),e.kind==="turn_ended"&&(await this.emitTurnTelemetry(l),this.emittedTurns.add(l),this.turnDataCache.delete(l))}async emitTurnTelemetry(e){let l=this.turnDataCache.get(e);if(l){let I={kind:"telemetry",telemetry:{event:"get_completion_with_tools_turn",properties:{model:l.model||"default",modelInfo:l.modelInfo||"{}",api_call_id:l.api_call_id,provider_call_id:l.provider_call_id,agent:this.forAgent,toolCalls:JSON.stringify(l.toolCalls.map(n=>({toolCallId:n.toolCallId,toolName:n.safeForTelemetryToolName}))),toolCallExecutions:JSON.stringify(l.toolCallExecutions),error:l.error,featureFlags:D1e(this.settings),conversationStructureSummary:l.conversationStructureSummary,truncationPerformedBy:l.truncateEvent?.performedBy},metrics:{turn:e,turnDurationMs:l.endTimeMs!==void 0&&l.startTimeMs!==void 0?l.endTimeMs-l.startTimeMs:0,modelCallDurationMs:l.modelCallDurationMs,retriesUsed:l.retriesUsed??0,numToolCalls:l.toolCalls.length,numToolExecutions:l.toolCallExecutions.length,largeImagesRemoved:l.largeImagesRemoved,imagesRemoved:l.imagesRemoved,responsePromptTokens:l.responsePromptTokens,responseCompletionTokens:l.responseCompletionTokens,responseTotalTokens:l.responseTotalTokens,jitInstructionsAdded:l.jitInstructionsAdded,...l.truncateEvent?.truncateResult,...l.imageProcessingMetrics},restrictedProperties:{}}};await this.callback.progress(I)}}async ingestToolExecutionEventAndEmitToolCallExecutedTelemetry(e,l){let I=l.toolCallId,n=Tfl(e,I);if(n){let r=l.toolResult,a={kind:"telemetry",telemetry:{event:"tool_call_executed",properties:{...r.toolTelemetry.properties,resultType:r.resultType,toolCallId:I,arguments:n.safeForTelemetryArguments,toolName:n.safeForTelemetryToolName,api_call_id:e.api_call_id},restrictedProperties:{...r.toolTelemetry.restrictedProperties,arguments:n.arguments,result:r.textResultForLlm,toolName:n.toolName,error:r.error},metrics:{...r.toolTelemetry.metrics,durationMs:l.durationMs}}};await this.callback.progress(a)}}};c();var HIe=class{async*preRequest(e){yield*[]}handleCallbackResponse(e){}getUserMessages(){return[]}clearUserMessages(){}canProcessUserMessages(){return!1}toJSON(){return JSON.stringify({type:"NoopUserMessageProcessor"})}};var OZe=class{constructor(e,l){this.runtimeContext=e;this.customAgentName=l;this.gitHandlers={silent:new RZ(new Ah,this.runtimeContext.exec),logging:new RZ(this.runtimeContext.logger,this.runtimeContext.exec)}}gitHandlers;async agent(e,l,I,n,r,a,s=new HIe,o){let d=async(g,y,R)=>{let V={role:"user",content:g};return await this.runtimeContext.callback?.progress({kind:"message",message:V,turn:0}),await this.runCompletionWithTools(e,l,[...y??[],V],a,r,{executeToolsInParallel:So(this.runtimeContext.settings,"copilot_swe_agent_parallel_tool_execution"),initialTurnCount:R},o,s)},G=n,u=I??[],h;for(;G;){let g=await d(G,u,h);h=g.finalTurnCount,u=g.messages,G=await o?.onResult(g.postCompletionWithToolsCommitHash)}for(let g of a)if(g.shutdown){let y=await g.shutdown();y&&await this.runtimeContext.callback?.progress(y)}return{finalTurnCount:h||0,messages:u}}async runCompletionWithTools(e,l,I,n,r,a,s,o=new HIe){let d=this.runtimeContext.callback?new BZe("sweagent-capi",this.runtimeContext.callback,this.runtimeContext.settings,n):void 0,G=this.gitHandlers.logging,u=await G.getCurrentCommitHash(e),h=I.filter(S=>S.role==="user").at(-1),g=this.createCompletionWithToolsProcessors(e,u,n,o,r,s,h),y=this.runtimeContext.client.getCompletionWithTools(l,I,n,{...a,processors:g}),R=0,V=[...I],F=[];for await(let S of y){if(So(this.runtimeContext.settings,"copilot_swe_agent_progress_commands")){let B=await this.runtimeContext.callback?.progress(S,{accepts_user_messages:o.canProcessUserMessages()});o.handleCallbackResponse(B)}else S.kind==="response"||S.kind==="message"?await this.runtimeContext.callback?.progress({...S,customAgentName:this.customAgentName}):await this.runtimeContext.callback?.progress(S);d&&await d.ingestEvent(S),(S.kind==="message"||S.kind==="response")&&(S.kind==="message"&&V.push(S.message),S.kind==="response"&&F.push(S.response),R=Math.max(R,S.turn??0))}let f=await G.getCurrentCommitHash(e);return{finalTurnCount:R,messages:V,resultMessages:F,preCompletionWithToolsCommitHash:u,postCompletionWithToolsCommitHash:f}}createCompletionWithToolsProcessors(e,l,I,n,r,a,s){let o=new Ibe(this.runtimeContext.logger,this.runtimeContext.settings,I.find(g=>g.name==="github-mcp-server-get_file_contents")),d=new rbe(this.runtimeContext.settings,this.runtimeContext.logger,this.gitHandlers.silent,e,l,r),G=new c_(this.runtimeContext.logger),u=s?new i_(s,this.runtimeContext.logger):void 0,h=[d,o,G,u];return So(this.runtimeContext.settings,"copilot_swe_agent_progress_commands")&&h.push(n),{preRequest:h.filter(g=>g!==void 0),preToolsExecution:[a].filter(g=>g!==void 0),postToolExecution:[o,a].filter(g=>g!==void 0),onRequestError:[o,u].filter(g=>g!==void 0)}}};c();async function Vke(t,e,l,I,n){try{return(await I.invokeTool("blackbird-mcp-server/search_repository_with_agent",{task:t,depth:2,owner:e,repo:l,numSnippets:10},"hidden_characters")).textResultForLlm}catch(r){return n.error(`Error during Blackbird search: ${r}`),""}}var kAt=t=>So(t,"copilot_swe_agent_search")||a$e(t,"SearchAgentExperiment")==="enabled",JAt="search";function wke(t){return t!==null&&typeof t=="object"&&"question"in t&&"reason"in t&&"searchCommand"in t}var _fl=(t,e,l)=>`
1441
1441
  You are a question answering agent that is a component of GitHub Copilot coding agent. Your task is to take the given question
1442
1442
  and answer it using the given facts.
1443
1443
 
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.332",
4
+ "version": "0.0.333-0",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "tree-sitter-powershell.wasm"
27
27
  ],
28
28
  "buildMetadata": {
29
- "gitCommit": "ace227c"
29
+ "gitCommit": "a36d540"
30
30
  },
31
31
  "dependencies": {
32
32
  "node-pty": "npm:@devm33/node-pty@^1.0.8",