@github/copilot 0.0.331-0 → 0.0.331-1
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 +1 -1
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -1433,7 +1433,7 @@ https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
|
|
|
1433
1433
|
Body doesn't contain an array property with name: ${e}`);return l??[]}function BJl(t,e){if(!e.includes(t.status))throw pp(`Pagination failed with unexpected statusCode ${t.status}`,t)}c();function sD(t,e,l){return(e??l==="+")||l==="#"?Byt(t):Oyt(t)}function Byt(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(e=>/%[0-9A-Fa-f]/.test(e)?e:encodeURI(e)).join("")}function Oyt(t){return encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function sne(t){return t!=null}function nLe(t){return[!!t&&[";","?","&"].includes(t),t&&["?","&"].includes(t)?"=":""]}function sNe(t,e=!1){return e?!t||t==="+"?"":t:!t||t==="+"||t==="#"?",":t==="?"?"&":t}function OJl(t){let e=t.isFirst,{op:l,varName:I,varValue:n,reserved:r}=t,a=[],[s,o]=nLe(l);if(Array.isArray(n))for(let d of n.filter(sne))a.push(`${sNe(l,e)}`),s&&I&&(a.push(`${encodeURIComponent(I)}`),d===""?a.push(o):a.push("=")),a.push(sD(d,r,l)),e=!1;else if(typeof n=="object")for(let d of Object.keys(n)){let G=n[d];sne(G)&&(a.push(`${sNe(l,e)}`),d&&(a.push(`${encodeURIComponent(d)}`),s&&G===""?a.push(o):a.push("=")),a.push(sD(G,r,l)),e=!1)}return a.join("")}function TJl(t){let{op:e,varName:l,varValue:I,isFirst:n,reserved:r}=t,a=[],s=sNe(e,n),[o,d]=nLe(e);if(o&&l){if(a.push(sD(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(sne))G.push(sD(u,r,e));else if(typeof I=="object")for(let u of Object.keys(I))sne(I[u])&&(G.push(Oyt(u)),G.push(sD(I[u],r,e)));return a.push(G.join(",")),a.join(",")?`${s}${a.join("")}`:void 0}function UJl(t){let{op:e,varName:l,modifier:I,isFirst:n,reserved:r,varValue:a}=t;if(sne(a))if(["string","number","boolean"].includes(typeof a)){let s=a.toString(),[o,d]=nLe(e),G=[sNe(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(sD(s,r,e)),G.join("")}else return I==="*"?OJl(t):TJl(t);else return}function ig(t,e,l){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,(I,n,r)=>{if(!n)return Byt(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=UJl({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 _Jl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{contentType:"application/json",headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers),body:Syt(e)}))}async function zJl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return aD(t.body)}async function rLe(t,e,l={requestOptions:{}}){let I=await _Jl(t,e,l);return zJl(I)}function MJl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function DJl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return xyt(t.body)}async function aLe(t,e,l={requestOptions:{}}){let I=await MJl(t,e,l);return DJl(I)}function jJl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function PJl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return aD(t.body)}async function sLe(t,e,l={requestOptions:{}}){let I=await jJl(t,e,l);return PJl(I)}function KJl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function qJl(t){if(!["204"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}}async function oLe(t,e,l={requestOptions:{}}){let I=await KJl(t,e,l);return qJl(I)}function $Jl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function ekl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return tLe(t.body)}async function cLe(t,e,l={requestOptions:{}}){let I=await $Jl(t,e,l);return ekl(I)}function tkl(t,e={requestOptions:{}}){var l,I;let n=ig("/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({},mN(e)),{headers:Object.assign({accept:"application/json"},(I=e.requestOptions)===null||I===void 0?void 0:I.headers)}))}async function lkl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return Lyt(t.body)}function iLe(t,e={requestOptions:{}}){return aNe(t,()=>tkl(t,e),lkl,["200"],{itemName:"value",nextLinkName:"nextLink"})}function Ikl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function nkl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return lLe(t.body)}function dLe(t,e,l={requestOptions:{}}){return aNe(t,()=>Ikl(t,e,l),nkl,["200"],{itemName:"value",nextLinkName:"nextLink"})}function rkl(t,e={requestOptions:{}}){var l,I;let n=ig("/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({},mN(e)),{headers:Object.assign({accept:"application/json"},(I=e.requestOptions)===null||I===void 0?void 0:I.headers)}))}async function akl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return lLe(t.body)}function mLe(t,e={requestOptions:{}}){return aNe(t,()=>rkl(t,e),akl,["200"],{itemName:"value",nextLinkName:"nextLink"})}function skl(t,e,l,I={requestOptions:{}}){var n,r;let a=ig("/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({},mN(I)),{headers:Object.assign({accept:"application/json"},(r=I.requestOptions)===null||r===void 0?void 0:r.headers)}))}async function okl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return aD(t.body)}async function GLe(t,e,l,I={requestOptions:{}}){let n=await skl(t,e,l,I);return okl(n)}function ckl(t,e,l,I,n={requestOptions:{}}){var r,a;let s=ig("/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({},mN(n)),{contentType:"application/json",headers:Object.assign({accept:"application/json"},(a=n.requestOptions)===null||a===void 0?void 0:a.headers),body:kyt(I)}))}async function ikl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return aD(t.body)}async function bLe(t,e,l,I,n={requestOptions:{}}){let r=await ckl(t,e,l,I,n);return ikl(r)}function dkl(t,e,l={requestOptions:{}}){var I,n;let r=ig("/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({},mN(l)),{headers:Object.assign({accept:"application/json"},(n=l.requestOptions)===null||n===void 0?void 0:n.headers)}))}async function mkl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return tLe(t.body)}async function uLe(t,e,l={requestOptions:{}}){let I=await dkl(t,e,l);return mkl(I)}function Gkl(t,e,l,I={requestOptions:{}}){var n,r;let a=ig("/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({},mN(I)),{contentType:"application/json",headers:Object.assign({accept:"application/json"},(r=I.requestOptions)===null||r===void 0?void 0:r.headers),body:Xyt(l)}))}async function bkl(t){if(!["200"].includes(t.status)){let l=pp(t);throw l.details=cg(t.body),l}return aD(t.body)}async function pLe(t,e,l,I={requestOptions:{}}){let n=await Gkl(t,e,l,I);return bkl(n)}var one=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=eLe(e,l,Object.assign(Object.assign({},I),{userAgentOptions:{userAgentPrefix:a}})),this.pipeline=this._client.pipeline}restoreSecret(e,l={requestOptions:{}}){return rLe(this._client,e,l)}backupSecret(e,l={requestOptions:{}}){return aLe(this._client,e,l)}recoverDeletedSecret(e,l={requestOptions:{}}){return sLe(this._client,e,l)}purgeDeletedSecret(e,l={requestOptions:{}}){return oLe(this._client,e,l)}getDeletedSecret(e,l={requestOptions:{}}){return cLe(this._client,e,l)}getDeletedSecrets(e={requestOptions:{}}){return iLe(this._client,e)}getSecretVersions(e,l={requestOptions:{}}){return dLe(this._client,e,l)}getSecrets(e={requestOptions:{}}){return mLe(this._client,e)}getSecret(e,l,I={requestOptions:{}}){return GLe(this._client,e,l,I)}updateSecret(e,l,I,n={requestOptions:{}}){return bLe(this._client,e,l,I,n)}deleteSecret(e,l={requestOptions:{}}){return uLe(this._client,e,l)}setSecret(e,l,I={requestOptions:{}}){return pLe(this._client,e,l,I)}};c();c();c();var ukl=["authorization","authorization_url","resource","scope","tenantId","claims","error"];function hLe(t){let e=/,? +/,l=t.split(e).reduce((I,n)=>{if(n.match(/\w="/)){let[r,...a]=n.split("=");if(ukl.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 pkl={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function hkl(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 CX(e),n=await I();return n}function Tyt(t,e){let l=null,I=null,n,r=Object.assign(Object.assign({},pkl),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=hkl(()=>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 Uyt=sp("keyvault-common");function Zkl(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 Nkl="keyVaultAuthenticationPolicy";function _yt(t,e={}){let{disableChallengeResourceVerification:l}=e,I={status:"none"},n=Tyt(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 W=r(G),y=u.headers.get("WWW-Authenticate");if(!y)return Uyt.warning("keyVaultAuthentication policy encountered a 401 response without a corresponding WWW-Authenticate header. This is unexpected. Not handling the 401 response."),u;let R=hLe(y),V=R.resource?R.resource+"/.default":R.scope;if(!V)return u;l||Zkl(V,G);let Q=await n([V],Object.assign(Object.assign({},W),{enableCae:!0,tenantId:R.tenantId}));return Q?(G.headers.set("Authorization",`Bearer ${Q.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 W=r(G),y=u.headers.get("WWW-Authenticate");if(!y)return u;let{claims:R,error:V}=hLe(y);if(V!=="insufficient_claims"||R===void 0)return u;let Q=atob(R),f=await n(I.scopes,Object.assign(Object.assign({},W),{enableCae:!0,tenantId:I.tenantId,claims:Q}));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:Nkl,sendRequest:d}}c();function zyt(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 ZLe(t){let l=t.split("/")[3];return Object.assign({sourceId:t},zyt(l,t))}c();function Sh(t){let e=t,l=t,I=ZLe(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 oNe(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 FX(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=yL(G),W;W=yield ri(h.next()),a=W.done,!a;u=!0)d=W.value,u=!1,yield yield ri(d.map(l))}catch(y){s={error:y}}finally{try{!u&&!a&&(o=h.return)&&(yield ri(o.call(h)))}finally{if(s)throw s.error}}})}}}c();c();var cNe="4.10.0";var GN=EL({namespace:"Microsoft.KeyVault",packageName:"@azure/keyvault-secrets",packageVersion:cNe});c();c();c();c();c();c();c();c();var NLe=sp("core-lro");c();c();c();c();c();c();var WLe=class t extends Error{constructor(e){super(e),this.name="PollerStoppedError",Object.setPrototypeOf(this,t.prototype)}},gLe=class t extends Error{constructor(e){super(e),this.name="PollerCancelledError",Object.setPrototypeOf(this,t.prototype)}},cne=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 gLe("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 WLe("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 oD=class extends cne{constructor(){super(...arguments),this.intervalInMs=2e3}async delay(){return CX(this.intervalInMs)}},cD=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 iNe=class extends cD{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 GN.withSpan("DeleteSecretPoller.deleteSecret",l,async I=>{let n=await this.client.deleteSecret(e,I);return Sh(n)})}getDeletedSecret(e,l={}){return GN.withSpan("DeleteSecretPoller.getDeletedSecret",l,async I=>{let n=await this.client.getDeletedSecret(e,I);return Sh(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 dNe=class extends oD{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 iNe(Object.assign(Object.assign({},s),{name:I}),l,n);super(o),this.intervalInMs=r}};c();c();var mNe=class extends cD{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 GN.withSpan("RecoverDeletedSecretPoller.getSecret",l,async I=>{let n=await this.client.getSecret(e,l&&l.version?l.version:"",I);return Sh(n)})}recoverDeletedSecret(e,l={}){return GN.withSpan("RecoverDeletedSecretPoller.recoverDeletedSecret",l,async I=>{let n=await this.client.recoverDeletedSecret(e,I);return Sh(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 GNe=class extends oD{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 mNe(Object.assign(Object.assign({},s),{name:I}),l,n);super(o),this.intervalInMs=r}};var bNe=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/${cNe}`},apiVersion:I.serviceVersion||"7.6",loggingOptions:{logger:Vyt.info,additionalAllowedHeaderNames:["x-ms-keyvault-region","x-ms-keyvault-network-info","x-ms-keyvault-service-version"]}});this.client=new one(this.vaultUrl,l,a),this.client.pipeline.removePolicy({name:Wue}),this.client.pipeline.addPolicy(_yt(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=qee(I,["enabled","notBefore","expiresOn","tags"]);return GN.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 Sh(G)})}async beginDeleteSecret(e,l={}){let I=new dNe(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=qee(I,["enabled","notBefore","expiresOn","tags"]);return GN.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 Sh(G).properties})}getSecret(e,l={}){return GN.withSpan("SecretClient.getSecret",l,async I=>{let n=await this.client.getSecret(e,l&&l.version?l.version:"",I);return Sh(n)})}getDeletedSecret(e,l={}){return GN.withSpan("SecretClient.getDeletedSecret",l,async I=>{let n=await this.client.getDeletedSecret(e,I);return Sh(n)})}purgeDeletedSecret(e,l={}){return GN.withSpan("SecretClient.purgeDeletedSecret",l,async I=>{await this.client.purgeDeletedSecret(e,I)})}async beginRecoverDeletedSecret(e,l={}){let I=new GNe(Object.assign(Object.assign({name:e,client:this.client},l),{operationOptions:l}));return await I.poll(),I}backupSecret(e,l={}){return GN.withSpan("SecretClient.backupSecret",l,async I=>(await this.client.backupSecret(e,I)).value)}restoreSecretBackup(e,l={}){return GN.withSpan("SecretClient.restoreSecretBackup",l,async I=>{let n=await this.client.restoreSecret({secretBundleBackup:e},I);return Sh(n).properties})}listPropertiesOfSecretVersions(e,l={}){return oNe(I=>this.client.getSecretVersions(e,I),l,I=>Sh(I).properties)}listPropertiesOfSecrets(e={}){return oNe(this.client.getSecrets.bind(this.client),e,l=>Sh(l).properties)}listDeletedSecrets(e={}){return oNe(this.client.getDeletedSecrets.bind(this.client),e,Sh)}};var ALe=class{client;logger;constructor(e,l){if(this.logger=l,e){this.logger.debug(`Using Azure Key Vault at ${e}`);let I=new XY;this.client=new bNe(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 yLe(t,e){let l=t.api?.copilot?.azureKeyVaultUri;return RLe(l,e)}function RLe(t,e){return new ALe(t,e)}c();import{createHmac as Ekl}from"crypto";var uNe=class t{static encode(e){let l=t.hmacGetBytes(e),a=(Math.floor(Date.now()/1e3)+30).toString(),s=Buffer.from(a,"ascii"),G=Ekl("sha256",l).update(s).digest().toString("hex").toUpperCase();return`${a}.${G}`}static hmacGetBytes(e){return Buffer.from(e,"ascii")}};var Ykl="X-GitHub-Api-Version",Vkl="2025-05-01",dx=class t extends lNe{constructor(l,I,n,r){super({baseURL:l,apiKey:""});this.headers=I;this.logger=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",[Ykl]:Vkl};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=dN();return{...t.baseHeaders,"Copilot-Integration-Id":l,"User-Agent":`${n.nameNoScope}/${n.version} (${process.platform} ${process.version}) OpenAI/${cQ}`,"X-Interaction-Id":I}}async prepareOptions(l){this.hmacKey&&(this.headers["Request-HMAC"]=uNe.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.logger.error(`Failed to list models: ${r.statusText}`),[];let a=await r.json();return this.logger.debug(`Successfully listed ${a.data.length} models`),a.data}async prepareRequest(l,{url:I,options:n}){try{n.body.messages.some(s=>Array.isArray(s.content)?s.content.some(o=>o.type==="image_url"):!1)&&(l.headers={...n.headers,"Copilot-Vision-Request":"true"})}catch{this.logger.error("Error while preparing request headers for Copilot-Vision-Request")}await super.prepareRequest(l,{url:I,options:n})}},pNe=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=yLe(e,l);try{r=await u.getSecret("capi-hmac-key")}catch(h){l.debug(`Failed to get Copilot HMAC key from secret provider:
|
|
1434
1434
|
${h}`)}try{n=await u.getSecret("capi-token")}catch(h){l.debug(`Failed to get Copilot GitHub OAuth token from secret provider:
|
|
1435
1435
|
${h}`)}a=!!(r||n)}let s,o=jVe(e),d=uO(e),G=e.api?.copilot?.sessionId??SJ(e);if(l.debug(`Using Copilot API at ${o} with integration ID ${d}`),n&&(l.debug("Using GitHub OAuth token for Copilot API"),s=dx.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=dx.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}},mx=class t extends rd{constructor(e){super(e.status,e.error,e.message,e.headers),this.name="CAPIError",this.ghRequestId=e.headers?.["x-github-request-id"]||this.request_id}ghRequestId;static fromAPIError(e){if(!(!e||!(e instanceof rd)))return new t(e)}};c();var ELe="x-quota-snapshot-";function Myt(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 YLe={type:"ephemeral"},iD=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||SHe.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=oH(I),d=[{role:"system",content:e,copilot_cache_control:YLe},...l.map(R=>yee(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?YLe: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,W=!1,y=!1;for(;!W&&!y;){let R=Date.now();yield{kind:"turn_started",model:r,modelInfo:s,turn:h,timestampMs:R};let V=0,Q=0,f=0,S=[429,503,500,400],B=this.clientOptions.retryPolicy.maxRetries,T=this.clientOptions.retryPolicy.rateLimitRetryPolicy.initialRetryBackoffExtraSeconds,q=0,te=this.clientOptions.retryPolicy.rateLimitRetryPolicy.maxRetryAfterSeconds,ae=s.capabilities.limits.max_prompt_tokens||s.capabilities.limits.max_context_window_tokens,U=1,$=.5,ue=()=>ae*U,pe,ye;try{if(h===0){let me=dtt(d,r),ce=mtt(G,r);if(me+ce>ae){if(n?.failIfInitialInputsTooLong)throw new Error(`Initial inputs exceed the model's token limit of ${ae} tokens.`);this.logger.warning(`Initial inputs exceed the model's token limit of ${ae} tokens. The model may not be able to process the inputs correctly.`)}}let ne=[],j;do{f>0&&(yield{kind:"turn_retry",model:r,modelInfo:s,turn:h,timestampMs:Date.now()});try{for(let we of n?.processors?.preRequest||[]){let Ge=we.preRequest({turn:h,messages:d,toolDefinitions:G,modelInfo:s,tokenLimit:ue()});for await(let ct of Ge)yield ct}if(this.logger.startGroup("Sending request to the AI model",8),Mo(this.settings,"copilot_swe_agent_request_logging")){let we=JSON.stringify(d,null,2),Ge=JSON.stringify(u,null,2);this.logger.debug(`Request messages: ${we}`),this.logger.debug(`Request options: ${Ge}`)}ne=d.map((we,Ge)=>Ge===d.length-1?{...we,copilot_cache_control:YLe}:we),V=Date.now();let me=await this.makeRequest(a,r,ne,u,G,B,n);Q=Date.now()-V,pe=me.data,j={model:r,api_id:pe.id,request_id:me.response.headers.get("x-github-request-id")||void 0};let ce={};me.response.headers.forEach((we,Ge)=>{if(Ge.toLowerCase().startsWith(ELe)){let ct=Myt(we);ct&&(ce[Ge.replace(ELe,"")]=ct)}}),yield{kind:"model_call_success",turn:h,modelCallDurationMs:Q,modelCall:j,responseChunk:Ndt(pe),responseUsage:pe.usage,requestMessages:JSON.stringify(ne),quotaSnapshots:ce},this.logger.debug(`response (Request-ID ${me.request_id}):`),this.logger.debug("data:"),this.logger.debug(JSON.stringify(me.data,null,2))}catch(me){Q=Date.now()-V;let ce=mx.fromAPIError(me),we=ce?.error;if(ce){yield{kind:"model_call_failure",turn:h,modelCallDurationMs:Q,requestMessages:JSON.stringify(ne),modelCall:{model:r,status:ce.status,error:JSON.stringify(ce?.error||ce?.message||"unknown error"),api_id:ce.request_id||void 0,request_id:ce.headers?.["x-github-request-id"]||""}},ye=ce;let ct=ce.ghRequestId||ce.headers?.["x-github-request-id"]||ce.request_id;this.logger.error(`error (Request-ID ${ct})`),this.logger.error(JSON.stringify(ce,null,2)),this.logger.debug(`Failed to get response from the AI model: ${ce}`),we&&this.logger.debug(`Inner error: ${JSON.stringify(we,null,2)}`);for(let Ce of n?.processors?.onRequestError||[])await Ce.onRequestError(we);let fe=ce.status,Re=fe?this.clientOptions.retryPolicy.errorCodesToRetry.some(Ce=>Array.isArray(Ce)?fe>=Ce[0]&&(Ce[1]===void 0||fe<=Ce[1]):fe===Ce):!1,se,_e=typeof we?.message=="string"?we.message.match(/prompt token count of (\d+) exceeds the limit of (\d+)/):void 0;if(ce.status!==402){if(ce.status===400&&_e){se=1;let Ce=parseInt(_e[2],10);Ce<ae?(ae=Ce,U=1):U=Math.max(U-$/B,$),this.logger.debug(`Adjusted model token limit to ${ae}, token limit retry buffer to ${U}`)}else if(ce.status===413){this.logger.debug("Request is too large, trying to remove images from the request");let Ce=0;for(let kt=d.length-1;kt>=0;kt--)T_(d[kt])&&(d.splice(kt,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 ${RE(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 ce.status=="number"&&S.includes(ce.status)||Re)&&(se=parseInt(ce.headers?.["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--)T_(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<=te){let Ce=.8+Math.random()*.4,kt=se*Ce;this.logger.debug(`Retrying after ${kt} seconds...`),await new Promise(El=>setTimeout(El,kt*1e3)),q+=kt,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 Ge=ce||me;for(let ct of n?.processors?.onRequestError||[])await ct.preErrorThrow(me);throw this.logger.error("error"),this.logger.error(JSON.stringify(Ge,null,2)),Ge}finally{this.logger.endGroup(8)}}while(!pe&&f++<B);if(!pe){this.logger.debug("Recent messages prior to failure:");for(let ce=Math.max(0,d.length-6);ce<d.length;ce++)this.logger.debug(`${ce}: ${JSON.stringify(d[ce],null,2)}`);let me=new Error(`Failed to get response from the AI model; retried ${f-1} times (total retry wait time: ${q} seconds)`,{cause:ye});throw this.isRateLimitExceededError(me)&&(this.logger.info(`Rate limit exceeded after ${f-1} retries, will fail job but skip Sentry reporting`),me.skipReport=!0),me}for(let me of pe.choices.map(ce=>ce.message))wkl(me.tool_calls||[]),d.push(me),yield{kind:"message",modelCall:j,message:yee(O_(me)),turn:h};if(this.isToolCallResponse(pe)){let me=ue()*this.clientOptions.toolTokenBudgetProportion,ce=Rnt(r,me,this,this.settings),Ge=pe.choices.filter(se=>se.message.tool_calls!==void 0).flatMap(se=>se.message.tool_calls||[]),ct=new Map;for(let se of n?.processors?.preToolsExecution||[]){let _e=await se.preToolsExecution({turn:h,toolCalls:Ge,modelInfo:s});if(_e)for(let[Ce,kt]of _e)ct.set(Ce,kt)}let fe=Ge.filter(se=>!ct.has(se.id)),Re=this.mergeToolResults(ct,Ge,fe,o,ce,n?.executeToolsInParallel);for await(let se of Re){se.toolResult.resultType==="rejected"&&(y=!0);let _e={role:"tool",tool_call_id:se.originalCall.id,content:se.toolResult.textResultForLlm};d.push(_e),yield{kind:"message",modelCall:j,message:yee(_e),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 me of pe.choices.map(ce=>ce.message))yield{kind:"response",modelCall:{model:r,api_id:pe.id},response:yee(O_(me)),turn:h},W=!0;a.setInitiatorHeader("agent")}catch(ne){let j;throw ne instanceof Error&&ne.cause&&ne.cause instanceof mx?j=`${ne} (Cause: ${ne.cause})`:j=`${ne}`,yield{kind:"turn_failed",model:r,modelInfo:s,turn:h,error:j,timestampMs:Date.now()},ne}finally{let ne=Date.now();yield{kind:"turn_ended",model:r,modelInfo:s,turn:h,timestampMs:ne},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*Nnt(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=bM(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(),W={...I,toolCallId:s,toolOptions:this.settings.service?.tools?.[r]},y=await u({...G},W);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 mx)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 wkl(t){for(let e of t)e.function.name=e.function.name.replace(/[^a-zA-Z0-9_-]+/g,"_")}var ine=class extends iD{constructor(e,l,I){let n=new pNe;super(n,e,l,I)}};c();var hNe=class extends iD{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:O_({...a.message,reasoning_text:a.message?.cot_summary})}:yield a}};c();c();var ZNe=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=oH(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,W=l.flatMap(Fkl),y,R=!1;for(;!R;){let V;do{V=void 0;try{let Q=await r.responses.create({model:this.model,previous_response_id:y?.id,instructions:e,input:W,parallel_tool_calls:s.length>0?!0:void 0,tools:s,reasoning:{summary:"auto",effort:"medium"}},{maxRetries:d}).withResponse();y=Q.data,this.logger.debug(`response (Request-ID ${Q.request_id}):`),this.logger.debug("data:"),this.logger.debug(JSON.stringify(Q.data,null,2))}catch(Q){let f=Q,S=f.error;if(f){V=f,this.logger.error(`error (Request-ID ${f.request_id})`),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(te=>Array.isArray(te)?B>=te[0]&&(te[1]===void 0||B<=te[1]):B===te):!1,q;if((f.status===429||T)&&(q=parseInt(f.headers?.["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(te=>setTimeout(te,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(Q,null,2)),Q}finally{this.logger.endGroup(8)}}while(V&&o++<d);if(!y||V){this.logger.debug("Recent messages prior to failure:");for(let Q=Math.max(0,W.length-6);Q<W.length;Q++)this.logger.debug(`${Q}: ${JSON.stringify(W[Q],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:VLe(f)};W=(await this.runTool(y,a)).map(f=>({type:"function_call_output",call_id:f.toolCallId,output:f.textResultForLlm}));for(let f of W)yield{kind:"message",message:VLe(f)}}else{for(let Q of y.output)yield{kind:"message",message:VLe(Q)};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=bM(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 W=u.callback,y={...I,toolOptions:this.settings.service?.tools?.[s],settings:this.settings},R=await W({...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 Fkl(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){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 VLe(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 NNe=class extends ZNe{constructor(e,l,I,n){super(e,l,I,n)}};c();var wLe=class extends tNe{constructor(e){super(e)}setInitiatorHeader(e){}listModels(){return Promise.resolve([])}},WNe=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=RLe(r,l);try{n=await G.getSecret(a||"azure-openai-api-key")}catch(u){l.debug(`Failed to get API Key from secret provider:
|
|
1436
|
-
${u}`)}}let s=zet(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 XY,h=V4e(G,"https://cognitiveservices.azure.com/.default");d={...d,azureADTokenProvider:h},l.debug("Using Azure Managed Identity")}return new wLe(d)}};c();var FLe=class extends lNe{constructor(e){super(e)}setInitiatorHeader(e){}listModels(){return Promise.resolve([])}},gNe=class{async createClient(e,l,I){l.startGroup("configured settings:",8),l.debug(JSON.stringify(e,null,2)),l.endGroup(8);let n=_et(e),r=e.api?.openai?.baseUrl,a=I?.requestHeaders;return new FLe({baseURL:r,apiKey:n,defaultHeaders:a})}};function QLe(t,e,l,I){switch(I?.thinkingMode===void 0&&Mo(t,"copilot_swe_agent_thinking_mode")&&(I={...I,thinkingMode:!0}),l){case"sweagent-aip":return new rhe(t,e,I);case"sweagent-anthropic":return new EZe(t,e,I);case"sweagent-capi":return new ine(t,e,I);case"sweagent-openai":return I?.thinkingMode?new NNe(Dyt(t),t,e,I):new hNe(Dyt(t),t,e,I);default:return new ine(t,e,I)}}function Dyt(t){return t.api?.openai?.azure?.url?new WNe:new gNe}c();c();function dD(t){return t.kind==="message"&&t.message.role==="assistant"}function jyt(t){return t.kind==="message"&&t.message.role==="user"}function ANe(t){return t.kind==="message"&&t.message.role==="assistant"&&!!t.message.tool_calls}function yNe(t){return t.kind==="message"&&t.message.role==="tool"}function Qkl(t,e){return t.toolCalls.find(l=>l.toolCallId===e)}function vkl(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:ck(l),safeForTelemetryArguments:r===!0||r.inputsNames?vAt(I):""}}catch{return{toolCallId:e.id,toolName:l,arguments:e.function.arguments,safeForTelemetryToolName:ck(l),safeForTelemetryArguments:""}}}var RNe=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:UVe(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:Zdt(e.requestMessages)},e.kind==="model_call_success"&&(I={...I,responsePromptTokens:e.responseUsage?.prompt_tokens,responseCompletionTokens:e.responseUsage?.completion_tokens,responseTotalTokens:e.responseUsage?.total_tokens})):jyt(e)&&e.source==="jit-instruction"?I={...I,jitInstructionsAdded:(I?.jitInstructionsAdded??0)+1}:dD(e)&&e.message.tool_calls?I={...I,toolCalls:I.toolCalls.concat(e.message.tool_calls.map(n=>({...vkl(this.toolsInUse,n)})))}:yNe(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:UVe(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=Qkl(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,toolName:n.toolName,error:r.error},metrics:{...r.toolTelemetry.metrics,durationMs:l.durationMs}}};await this.callback.progress(a)}}};c();var dne=class{async*preRequest(e){yield*[]}handleCallbackResponse(e){}getUserMessages(){return[]}clearUserMessages(){}canProcessUserMessages(){return!1}toJSON(){return JSON.stringify({type:"NoopUserMessageProcessor"})}};var ENe=class{constructor(e,l){this.runtimeContext=e;this.customAgentName=l;this.gitHandlers={silent:new QZ(new Fh,this.runtimeContext.exec),logging:new QZ(this.runtimeContext.logger,this.runtimeContext.exec)}}gitHandlers;async agent(e,l,I,n,r,a,s=new dne,o){let d=async(W,y,R)=>{let V={role:"user",content:W};return await this.runtimeContext.callback?.progress({kind:"message",message:V,turn:0}),await this.runCompletionWithTools(e,l,[...y??[],V],a,r,{executeToolsInParallel:Mo(this.runtimeContext.settings,"copilot_swe_agent_parallel_tool_execution"),initialTurnCount:R},o,s)},G=n,u=I??[],h;for(;G;){let W=await d(G,u,h);h=W.finalTurnCount,u=W.messages,G=await o?.onResult(W.postCompletionWithToolsCommitHash)}for(let W of a)if(W.shutdown){let y=await W.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 dne){let d=this.runtimeContext.callback?new RNe("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),W=this.createCompletionWithToolsProcessors(e,u,n,o,r,s,h),y=this.runtimeContext.client.getCompletionWithTools(l,I,n,{...a,processors:W}),R=0,V=[...I],Q=[];for await(let S of y){if(Mo(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"&&Q.push(S.response),R=Math.max(R,S.turn??0))}let f=await G.getCurrentCommitHash(e);return{finalTurnCount:R,messages:V,resultMessages:Q,preCompletionWithToolsCommitHash:u,postCompletionWithToolsCommitHash:f}}createCompletionWithToolsProcessors(e,l,I,n,r,a,s){let o=new xbe(this.runtimeContext.logger,this.runtimeContext.settings,I.find(W=>W.name==="github-mcp-server-get_file_contents")),d=new Bbe(this.runtimeContext.settings,this.runtimeContext.logger,this.gitHandlers.silent,e,l,r),G=new U_(this.runtimeContext.logger),u=s?new __(s,this.runtimeContext.logger):void 0,h=[d,o,G,u];return Mo(this.runtimeContext.settings,"copilot_swe_agent_progress_commands")&&h.push(n),{preRequest:h.filter(W=>W!==void 0),preToolsExecution:[a].filter(W=>W!==void 0),postToolExecution:[o,a].filter(W=>W!==void 0),onRequestError:[o,u].filter(W=>W!==void 0)}}};c();async function vLe(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 Kyt=t=>Mo(t,"copilot_swe_agent_search")||Fet(t,"SearchAgentExperiment")==="enabled",Pyt="search";function CLe(t){return t!==null&&typeof t=="object"&&"question"in t&&"reason"in t&&"searchCommand"in t}var Ckl=(t,e,l)=>`
|
|
1436
|
+
${u}`)}}let s=zet(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 XY,h=V4e(G,"https://cognitiveservices.azure.com/.default");d={...d,azureADTokenProvider:h},l.debug("Using Azure Managed Identity")}return new wLe(d)}};c();var FLe=class extends lNe{constructor(e){super(e)}setInitiatorHeader(e){}listModels(){return Promise.resolve([])}},gNe=class{async createClient(e,l,I){l.startGroup("configured settings:",8),l.debug(JSON.stringify(e,null,2)),l.endGroup(8);let n=_et(e),r=e.api?.openai?.baseUrl,a=I?.requestHeaders;return new FLe({baseURL:r,apiKey:n,defaultHeaders:a})}};function QLe(t,e,l,I){switch(I?.thinkingMode===void 0&&Mo(t,"copilot_swe_agent_thinking_mode")&&(I={...I,thinkingMode:!0}),l){case"sweagent-aip":return new rhe(t,e,I);case"sweagent-anthropic":return new EZe(t,e,I);case"sweagent-capi":return new ine(t,e,I);case"sweagent-openai":return I?.thinkingMode?new NNe(Dyt(t),t,e,I):new hNe(Dyt(t),t,e,I);default:return new ine(t,e,I)}}function Dyt(t){return t.api?.openai?.azure?.url?new WNe:new gNe}c();c();function dD(t){return t.kind==="message"&&t.message.role==="assistant"}function jyt(t){return t.kind==="message"&&t.message.role==="user"}function ANe(t){return t.kind==="message"&&t.message.role==="assistant"&&!!t.message.tool_calls}function yNe(t){return t.kind==="message"&&t.message.role==="tool"}function Qkl(t,e){return t.toolCalls.find(l=>l.toolCallId===e)}function vkl(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:ck(l),safeForTelemetryArguments:r===!0||r.inputsNames?vAt(I):""}}catch{return{toolCallId:e.id,toolName:l,arguments:e.function.arguments,safeForTelemetryToolName:ck(l),safeForTelemetryArguments:""}}}var RNe=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:UVe(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:Zdt(e.requestMessages)},e.kind==="model_call_success"&&(I={...I,responsePromptTokens:e.responseUsage?.prompt_tokens,responseCompletionTokens:e.responseUsage?.completion_tokens,responseTotalTokens:e.responseUsage?.total_tokens})):jyt(e)&&e.source==="jit-instruction"?I={...I,jitInstructionsAdded:(I?.jitInstructionsAdded??0)+1}:dD(e)&&e.message.tool_calls?I={...I,toolCalls:I.toolCalls.concat(e.message.tool_calls.map(n=>({...vkl(this.toolsInUse,n)})))}:yNe(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:UVe(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=Qkl(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 dne=class{async*preRequest(e){yield*[]}handleCallbackResponse(e){}getUserMessages(){return[]}clearUserMessages(){}canProcessUserMessages(){return!1}toJSON(){return JSON.stringify({type:"NoopUserMessageProcessor"})}};var ENe=class{constructor(e,l){this.runtimeContext=e;this.customAgentName=l;this.gitHandlers={silent:new QZ(new Fh,this.runtimeContext.exec),logging:new QZ(this.runtimeContext.logger,this.runtimeContext.exec)}}gitHandlers;async agent(e,l,I,n,r,a,s=new dne,o){let d=async(W,y,R)=>{let V={role:"user",content:W};return await this.runtimeContext.callback?.progress({kind:"message",message:V,turn:0}),await this.runCompletionWithTools(e,l,[...y??[],V],a,r,{executeToolsInParallel:Mo(this.runtimeContext.settings,"copilot_swe_agent_parallel_tool_execution"),initialTurnCount:R},o,s)},G=n,u=I??[],h;for(;G;){let W=await d(G,u,h);h=W.finalTurnCount,u=W.messages,G=await o?.onResult(W.postCompletionWithToolsCommitHash)}for(let W of a)if(W.shutdown){let y=await W.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 dne){let d=this.runtimeContext.callback?new RNe("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),W=this.createCompletionWithToolsProcessors(e,u,n,o,r,s,h),y=this.runtimeContext.client.getCompletionWithTools(l,I,n,{...a,processors:W}),R=0,V=[...I],Q=[];for await(let S of y){if(Mo(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"&&Q.push(S.response),R=Math.max(R,S.turn??0))}let f=await G.getCurrentCommitHash(e);return{finalTurnCount:R,messages:V,resultMessages:Q,preCompletionWithToolsCommitHash:u,postCompletionWithToolsCommitHash:f}}createCompletionWithToolsProcessors(e,l,I,n,r,a,s){let o=new xbe(this.runtimeContext.logger,this.runtimeContext.settings,I.find(W=>W.name==="github-mcp-server-get_file_contents")),d=new Bbe(this.runtimeContext.settings,this.runtimeContext.logger,this.gitHandlers.silent,e,l,r),G=new U_(this.runtimeContext.logger),u=s?new __(s,this.runtimeContext.logger):void 0,h=[d,o,G,u];return Mo(this.runtimeContext.settings,"copilot_swe_agent_progress_commands")&&h.push(n),{preRequest:h.filter(W=>W!==void 0),preToolsExecution:[a].filter(W=>W!==void 0),postToolExecution:[o,a].filter(W=>W!==void 0),onRequestError:[o,u].filter(W=>W!==void 0)}}};c();async function vLe(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 Kyt=t=>Mo(t,"copilot_swe_agent_search")||Fet(t,"SearchAgentExperiment")==="enabled",Pyt="search";function CLe(t){return t!==null&&typeof t=="object"&&"question"in t&&"reason"in t&&"searchCommand"in t}var Ckl=(t,e,l)=>`
|
|
1437
1437
|
You are a question answering agent that is a component of GitHub Copilot coding agent. Your task is to take the given question
|
|
1438
1438
|
and answer it using the given facts.
|
|
1439
1439
|
|
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.331-
|
|
4
|
+
"version": "0.0.331-1",
|
|
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": "
|
|
29
|
+
"gitCommit": "673bd1b"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"node-pty": "npm:@devm33/node-pty@^1.0.8",
|