diff --git a/dist/artifact-C0wQlV2Q.js b/dist/artifact-_KnC6wDo.js similarity index 99% rename from dist/artifact-C0wQlV2Q.js rename to dist/artifact-_KnC6wDo.js index dc4e8c9376..26183674c5 100644 --- a/dist/artifact-C0wQlV2Q.js +++ b/dist/artifact-_KnC6wDo.js @@ -390,7 +390,7 @@ super(e,{cause:n.cause}),this.name=`HttpError`,this.status=Number.parseInt(t),Nu var mU=`(?:[a-zA-Z0-9_-]+)`,hU=`\\.`,gU=RegExp(`^${mU}${hU}${mU}${hU}${mU}$`),bce=gU.test.bind(gU);async function xce(e){let t=bce(e),n=e.startsWith(`v1.`)||e.startsWith(`ghs_`),r=e.startsWith(`ghu_`);return{type:`token`,token:e,tokenType:t?`app`:n?`installation`:r?`user-to-server`:`oauth`}}function Sce(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Cce(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=Sce(e),t(i)}var wce=function(e){if(!e)throw Error(`[@octokit/auth-token] No token passed to createTokenAuth`);if(typeof e!=`string`)throw Error(`[@octokit/auth-token] Token passed to createTokenAuth is not a string`);return e=e.replace(/^(token|bearer) +/i,``),Object.assign(xce.bind(null,e),{hook:Cce.bind(null,e)})};const _U=`7.0.8`,vU=()=>{},Tce=console.warn.bind(console),Ece=console.error.bind(console);function Dce(e={}){return typeof e.debug!=`function`&&(e.debug=vU),typeof e.info!=`function`&&(e.info=vU),typeof e.warn!=`function`&&(e.warn=Tce),typeof e.error!=`function`&&(e.error=Ece),e}const yU=`octokit-core.js/${_U} ${OH()}`;var Oce=class{static VERSION=_U;static defaults(e){return class extends this{constructor(...t){let n=t[0]||{};super(typeof e==`function`?e(n):Object.assign({},e,n,n.userAgent&&e.userAgent?{userAgent:`${n.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(e=>!t.includes(e)))}}constructor(e={}){let t=new Lse.Collection,n={baseUrl:dU.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,`request`)}),mediaType:{previews:[],format:``}};if(n.headers[`user-agent`]=e.userAgent?`${e.userAgent} ${yU}`:yU,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=dU.defaults(n),this.graphql=yce(this.request).defaults(n),this.log=Dce(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...r}=e,i=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:r},e.auth));t.wrap(`request`,i.hook),this.auth=i}else if(!e.auth)this.auth=async()=>({type:`unauthenticated`});else{let n=wce(e.auth);t.wrap(`request`,n.hook),this.auth=n}let r=this.constructor;for(let t=0;t({async next(){if(!s)return{done:!0};try{let e=Pce(await i({method:a,url:s,headers:o}));if(s=((e.headers.link||``).match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!s&&`total_commits`in e.data){let t=new URL(e.url),n=t.searchParams,r=parseInt(n.get(`page`)||`1`,10);r*parseInt(n.get(`per_page`)||`250`,10){if(i.done)return t;let a=!1;function o(){a=!0}return t=t.concat(r?r(i.value,o):i.value.data),a?t:wU(e,t,n,r)})}Object.assign(CU,{iterator:SU});function TU(e){return{paginate:Object.assign(CU.bind(null,e),{iterator:SU.bind(null,e)})}}TU.VERSION=Nce,new EH;const EU=jse(),DU={baseUrl:EU,request:{agent:Ose(EU),fetch:Ase(EU)}},Fce=Oce.plugin(xU,TU).defaults(DU);function Ice(e,t){let n=Object.assign({},t||{}),r=Dse(e,n);r&&(n.auth=r);let i=Mse(n.userAgent);return i&&(n.userAgent=i),n}const Lce=new EH;function OU(e,t,...n){return new(Fce.plugin(...n))(Ice(e,t))}function kU(e,t,n,r){let i=TH({...n,...r},wH),a={timestamp:(/* @__PURE__ */ new Date()).toISOString(),level:e,message:t,...i};if(r!=null&&`error`in r&&r.error instanceof Error){let e=r.error;a.error={message:e.message,name:e.name,stack:e.stack}}return JSON.stringify(a)}function AU(e){return{debug:(t,n)=>{W(kU(`debug`,t,e,n))},info:(t,n)=>{ns(kU(`info`,t,e,n))},warning:(t,n)=>{es(kU(`warning`,t,e,n))},error:(t,n)=>{$o(kU(`error`,t,e,n))}}}var jU=/* @__PURE__ */ a(((e,t)=>{t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:2**53-1|| /* istanbul ignore next */9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:`2.0.0`,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),MU=/* @__PURE__ */ a(((e,t)=>{t.exports=typeof process==`object`&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),NU=/* @__PURE__ */ a(((e,t)=>{let{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=jU(),a=MU();e=t.exports={};let o=e.re=[],s=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],u=e.t={},d=0,f=`[a-zA-Z0-9-]`,p=[[`\\s`,1],[`\\d`,i],[f,r]],m=e=>{for(let[t,n]of p)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},h=(e,t,n)=>{let r=m(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,l[i]=r,o[i]=new RegExp(t,n?`g`:void 0),s[i]=new RegExp(r,n?`g`:void 0)};h(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),h(`NUMERICIDENTIFIERLOOSE`,`\\d+`),h(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${f}*`),h(`MAINVERSION`,`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),h(`MAINVERSIONLOOSE`,`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASEIDENTIFIER`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIER]})`),h(`PRERELEASEIDENTIFIERLOOSE`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASE`,`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),h(`PRERELEASELOOSE`,`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),h(`BUILDIDENTIFIER`,`${f}+`),h(`BUILD`,`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),h(`FULLPLAIN`,`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),h(`FULL`,`^${c[u.FULLPLAIN]}$`),h(`LOOSEPLAIN`,`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),h(`LOOSE`,`^${c[u.LOOSEPLAIN]}$`),h(`GTLT`,`((?:<|>)?=?)`),h(`XRANGEIDENTIFIERLOOSE`,`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h(`XRANGEIDENTIFIER`,`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),h(`XRANGEPLAIN`,`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),h(`XRANGEPLAINLOOSE`,`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),h(`XRANGE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),h(`XRANGELOOSE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),h(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),h(`COERCE`,`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),h(`COERCEFULL`,c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?(?:${c[u.BUILD]})?(?:$|[^\\d])`),h(`COERCERTL`,c[u.COERCE],!0),h(`COERCERTLFULL`,c[u.COERCEFULL],!0),h(`LONETILDE`,`(?:~>?)`),h(`TILDETRIM`,`(\\s*)${c[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,h(`TILDE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),h(`TILDELOOSE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),h(`LONECARET`,`(?:\\^)`),h(`CARETTRIM`,`(\\s*)${c[u.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,h(`CARET`,`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),h(`CARETLOOSE`,`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),h(`COMPARATORLOOSE`,`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),h(`COMPARATOR`,`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),h(`COMPARATORTRIM`,`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,h(`HYPHENRANGE`,`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),h(`HYPHENRANGELOOSE`,`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),h(`STAR`,`(<|>)?=?\\s*\\*`),h(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),h(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),PU=/* @__PURE__ */ a(((e,t)=>{let n=Object.freeze({loose:!0}),r=Object.freeze({});t.exports=e=>e?typeof e==`object`?e:n:r})),FU=/* @__PURE__ */ a(((e,t)=>{let n=/^[0-9]+$/,r=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:er(t,e)}})),IU=/* @__PURE__ */ a(((e,t)=>{let n=MU(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=jU(),{safeRe:a,t:o}=NU(),s=PU(),{compareIdentifiers:c}=FU(),l=(e,t)=>{let n=t.split(`.`);if(n.length>e.length)return!1;for(let t=0;tr)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,t,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;let l=t.trim().match(c.loose?a[o.LOOSE]:a[o.FULL]);if(!l)throw TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);this.prerelease=l[4]?l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&tt.major?1:this.minort.minor?1:this.patcht.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let e=this.prerelease[r],i=t.prerelease[r];if(n(`prerelease compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e!==i)return c(e,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let e=this.build[r],i=t.build[r];if(n(`build compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e!==i)return c(e,i)}while(++r)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[o.PRERELEASELOOSE]:a[o.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=+!!Number(n);if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];if(n===!1&&(r=[t]),l(this.prerelease,t)){let e=this.prerelease[t.split(`.`).length];isNaN(e)&&(this.prerelease=r)}else this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),LU=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}}})),Rce=/* @__PURE__ */ a(((e,t)=>{let n=LU();t.exports=(e,t)=>{let r=n(e,t);return r?r.version:null}})),zce=/* @__PURE__ */ a(((e,t)=>{let n=LU();t.exports=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null}})),Bce=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t,r,i,a)=>{typeof r==`string`&&(a=i,i=r,r=void 0);try{return new n(e instanceof n?e.version:e,r).inc(t,i,a).version}catch{return null}}})),Vce=/* @__PURE__ */ a(((e,t)=>{let n=LU();t.exports=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let o=a>0,s=o?r:i,c=o?i:r,l=!!s.prerelease.length;if(c.prerelease.length&&!l){if(!c.patch&&!c.minor)return`major`;if(c.compareMain(s)===0)return c.minor&&!c.patch?`minor`:`patch`}let u=l?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:u+`patch`:u+`minor`:u+`major`}})),Hce=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t)=>new n(e,t).major})),Uce=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t)=>new n(e,t).minor})),Wce=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t)=>new n(e,t).patch})),Gce=/* @__PURE__ */ a(((e,t)=>{let n=LU();t.exports=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}})),RU=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t,r)=>new n(e,r).compare(new n(t,r))})),Kce=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(t,e,r)})),qce=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t)=>n(e,t,!0)})),zU=/* @__PURE__ */ a(((e,t)=>{let n=IU();t.exports=(e,t,r)=>{let i=new n(e,r),a=new n(t,r);return i.compare(a)||i.compareBuild(a)}})),Jce=/* @__PURE__ */ a(((e,t)=>{let n=zU();t.exports=(e,t)=>e.sort((e,r)=>n(e,r,t))})),Yce=/* @__PURE__ */ a(((e,t)=>{let n=zU();t.exports=(e,t)=>e.sort((e,r)=>n(r,e,t))})),BU=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(e,t,r)>0})),VU=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(e,t,r)<0})),HU=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(e,t,r)===0})),UU=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(e,t,r)!==0})),WU=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(e,t,r)>=0})),GU=/* @__PURE__ */ a(((e,t)=>{let n=RU();t.exports=(e,t,r)=>n(e,t,r)<=0})),KU=/* @__PURE__ */ a(((e,t)=>{let n=HU(),r=UU(),i=BU(),a=WU(),o=VU(),s=GU();t.exports=(e,t,c,l)=>{switch(t){case`===`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e===c;case`!==`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e!==c;case``:case`=`:case`==`:return n(e,c,l);case`!=`:return r(e,c,l);case`>`:return i(e,c,l);case`>=`:return a(e,c,l);case`<`:return o(e,c,l);case`<=`:return s(e,c,l);default:throw TypeError(`Invalid operator: ${t}`)}}})),Xce=/* @__PURE__ */ a(((e,t)=>{let n=IU(),r=LU(),{safeRe:i,t:a}=NU();t.exports=(e,t)=>{if(e instanceof n)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let o=null;if(!t.rtl)o=e.match(t.includePrerelease?i[a.COERCEFULL]:i[a.COERCE]);else{let n=t.includePrerelease?i[a.COERCERTLFULL]:i[a.COERCERTL],r;for(;(r=n.exec(e))&&(!o||o.index+o[0].length!==e.length);)o&&r.index+r[0].length===o.index+o[0].length||(o=r),n.lastIndex=r.index+r[1].length+r[2].length;n.lastIndex=-1}if(o===null)return null;let s=o[2],c=o[3]||`0`,l=o[4]||`0`,u=t.includePrerelease&&o[5]?`-${o[5]}`:``,d=t.includePrerelease&&o[6]?`+${o[6]}`:``;return r(`${s}.${c}.${l}${u}${d}`,t)}})),Zce=/* @__PURE__ */ a(((e,t)=>{let n=LU(),r=jU(),i=IU(),a=(e,t,n)=>{if(!r.RELEASE_TYPES.includes(t))return null;let i=o(e,n);return i&&s(i,t)},o=(e,t)=>{let r=e instanceof i?e.version:e;return n(r,t)},s=(e,t)=>{if(c(t))return e.version;switch(e.prerelease=[],t){case`major`:e.minor=0,e.patch=0;break;case`minor`:e.patch=0}return e.format()},c=e=>e.startsWith(`pre`);t.exports=a})),Qce=/* @__PURE__ */ a(((e,t)=>{t.exports=class{constructor(){this.max=1e3,this.map=/* @__PURE__ */ new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}})),qU=/* @__PURE__ */ a(((e,t)=>{let n=/\s+/g;t.exports=class e{constructor(t,r){if(r=i(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof a)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(n,` `),this.set=this.raw.split(`||`).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let e=this.set[0];if(this.set=this.set.filter(e=>!v(e[0])),this.set.length===0)this.set=[e];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&y(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted=``;for(let e=0;e0&&(this.formatted+=`||`);let t=this.set[e];for(let e=0;e0&&(this.formatted+=` `),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(g,``);let t=((this.options.includePrerelease&&m)|(this.options.loose&&h))+`:`+e,n=r.get(t);if(n)return n;let i=this.options.loose,s=i?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];e=e.replace(s,M(this.options.includePrerelease)),o(`hyphen replace`,e),e=e.replace(c[u.COMPARATORTRIM],d),o(`comparator trim`,e),e=e.replace(c[u.TILDETRIM],f),o(`tilde trim`,e),e=e.replace(c[u.CARETTRIM],p),o(`caret trim`,e);let l=e.split(` `).map(e=>x(e,this.options)).join(` `).split(/\s+/).map(e=>j(e,this.options));i&&(l=l.filter(e=>(o(`loose invalid filter`,e,this.options),!!e.match(c[u.COMPARATORLOOSE])))),o(`range list`,l);let y=/* @__PURE__ */ new Map,b=l.map(e=>new a(e,this.options));for(let e of b){if(v(e))return[e];y.set(e.value,e)}y.size>1&&y.has(``)&&y.delete(``);let S=[...y.values()];return r.set(t,S),S}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Range is required`);return this.set.some(e=>b(e,n)&&t.set.some(t=>b(t,n)&&e.every(e=>t.every(t=>e.intersects(t,n)))))}test(e){if(!e)return!1;if(typeof e==`string`)try{e=new s(e,this.options)}catch{return!1}for(let t=0;te.value===`<0.0.0-0`,y=e=>e.value===``,b=(e,t)=>{let n=!0,r=e.slice(),i=r.pop();for(;n&&r.length;)n=r.every(e=>i.intersects(e,t)),i=r.pop();return n},x=(e,t)=>(e=e.replace(c[u.BUILD],``),o(`comp`,e,t),e=E(e,t),o(`caret`,e),e=w(e,t),o(`tildes`,e),e=O(e,t),o(`xrange`,e),e=A(e,t),o(`stars`,e),e),S=e=>!e||e.toLowerCase()===`x`||e===`*`,C=(e,t,n)=>S(e)&&!S(t)||S(t)&&n&&!S(n),w=(e,t)=>e.trim().split(/\s+/).map(e=>T(e,t)).join(` `),T=(e,t)=>{let n=t.loose?c[u.TILDELOOSE]:c[u.TILDE],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`tilde`,e,t,n,i,a,s);let c;return S(n)?c=``:S(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?c=`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:s?(o(`replaceTilde pr`,s),c=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):c=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o(`tilde return`,c),c})},E=(e,t)=>e.trim().split(/\s+/).map(e=>D(e,t)).join(` `),D=(e,t)=>{o(`caret`,e,t);let n=t.loose?c[u.CARETLOOSE]:c[u.CARET],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`caret`,e,t,n,i,a,s);let c;return S(n)?c=``:S(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?c=n===`0`?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(o(`replaceCaret pr`,s),c=n===`0`?i===`0`?`>=${n}.${i}.${a}-${s} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${s} <${+n+1}.0.0-0`):(o(`no pr`),c=n===`0`?i===`0`?`>=${n}.${i}.${a} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),o(`caret return`,c),c})},O=(e,t)=>(o(`replaceXRanges`,e,t),e.split(/\s+/).map(e=>k(e,t)).join(` `)),k=(e,t)=>{e=e.trim();let n=t.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return e.replace(n,(n,r,i,a,s,c)=>{if(o(`xRange`,e,n,r,i,a,s,c),C(i,a,s))return e;let l=S(i),u=l||S(a),d=u||S(s),f=d;return r===`=`&&f&&(r=``),c=t.includePrerelease?`-0`:``,l?n=r===`>`||r===`<`?`<0.0.0-0`:`*`:r&&f?(u&&(a=0),s=0,r===`>`?(r=`>=`,u?(i=+i+1,a=0,s=0):(a=+a+1,s=0)):r===`<=`&&(r=`<`,u?i=+i+1:a=+a+1),r===`<`&&(c=`-0`),n=`${r+i}.${a}.${s}${c}`):u?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${c} <${i}.${+a+1}.0-0`),o(`xRange return`,n),n})},A=(e,t)=>(o(`replaceStars`,e,t),e.trim().replace(c[u.STAR],``)),j=(e,t)=>(o(`replaceGTE0`,e,t),e.trim().replace(c[t.includePrerelease?u.GTE0PRE:u.GTE0],``)),M=e=>(t,n,r,i,a,o,s,c,l,u,d,f)=>(n=S(r)?``:S(i)?`>=${r}.0.0${e?`-0`:``}`:S(a)?`>=${r}.${i}.0${e?`-0`:``}`:o?`>=${n}`:`>=${n}${e?`-0`:``}`,c=S(l)?``:S(u)?`<${+l+1}.0.0-0`:S(d)?`<${l}.${+u+1}.0-0`:f?`<=${l}.${u}.${d}-${f}`:e?`<${l}.${u}.${+d+1}-0`:`<=${c}`,`${n} ${c}`.trim()),N=(e,t,n)=>{for(let n=0;n0){let r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}})),JU=/* @__PURE__ */ a(((e,t)=>{let n=Symbol(`SemVer ANY`);t.exports=class e{static get ANY(){return n}constructor(t,i){if(i=r(i),t instanceof e){if(t.loose===!!i.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(` `),s(`comparator`,t,i),this.options=i,this.loose=!!i.loose,this.parse(t),this.value=this.semver===n?``:this.operator+this.semver.version,s(`comp`,this)}parse(e){let t=this.options.loose?i[a.COMPARATORLOOSE]:i[a.COMPARATOR],r=e.match(t);if(!r)throw TypeError(`Invalid comparator: ${e}`);this.operator=r[1]===void 0?``:r[1],this.operator===`=`&&(this.operator=``),this.semver=r[2]?new c(r[2],this.options.loose):n}toString(){return this.value}test(e){if(s(`Comparator.test`,e,this.options.loose),this.semver===n||e===n)return!0;if(typeof e==`string`)try{e=new c(e,this.options)}catch{return!1}return o(e,this.operator,this.semver,this.options)}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Comparator is required`);return this.operator===``?this.value===``||new l(t.value,n).test(this.value):t.operator===``?t.value===``||new l(this.value,n).test(t.semver):(n=r(n),n.includePrerelease&&(this.value===`<0.0.0-0`||t.value===`<0.0.0-0`)||!n.includePrerelease&&(this.value.startsWith(`<0.0.0`)||t.value.startsWith(`<0.0.0`))?!1:!!(this.operator.startsWith(`>`)&&t.operator.startsWith(`>`)||this.operator.startsWith(`<`)&&t.operator.startsWith(`<`)||this.semver.version===t.semver.version&&this.operator.includes(`=`)&&t.operator.includes(`=`)||o(this.semver,`<`,t.semver,n)&&this.operator.startsWith(`>`)&&t.operator.startsWith(`<`)||o(this.semver,`>`,t.semver,n)&&this.operator.startsWith(`<`)&&t.operator.startsWith(`>`)))}};let r=PU(),{safeRe:i,t:a}=NU(),o=KU(),s=MU(),c=IU(),l=qU()})),YU=/* @__PURE__ */ a(((e,t)=>{let n=qU();t.exports=(e,t,r)=>{try{t=new n(t,r)}catch{return!1}return t.test(e)}})),$ce=/* @__PURE__ */ a(((e,t)=>{let n=qU();t.exports=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `))})),ele=/* @__PURE__ */ a(((e,t)=>{let n=IU(),r=qU();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(a&&o.compare(e)!==-1||(a=e,o=new n(a,i)))}),a}})),tle=/* @__PURE__ */ a(((e,t)=>{let n=IU(),r=qU();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(a&&o.compare(e)!==1||(a=e,o=new n(a,i)))}),a}})),nle=/* @__PURE__ */ a(((e,t)=>{let n=IU(),r=qU(),i=BU();t.exports=(e,t)=>{e=new r(e,t);let a=new n(`0.0.0`);if(e.test(a)||(a=new n(`0.0.0-0`),e.test(a)))return a;a=null;for(let t=0;t{let t=new n(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!o||i(t,o))&&(o=t);break;case`<`:case`<=`:break; /* istanbul ignore next */ -default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!a||i(a,o))&&(a=o)}return a&&e.test(a)?a:null}})),rle=/* @__PURE__ */ a(((e,t)=>{let n=qU();t.exports=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}}})),XU=/* @__PURE__ */ a(((e,t)=>{let n=IU(),r=JU(),{ANY:i}=r,a=qU(),o=YU(),s=BU(),c=VU(),l=GU(),u=WU();t.exports=(e,t,d,f)=>{e=new n(e,f),t=new a(t,f);let p,m,h,g,v;switch(d){case`>`:p=s,m=l,h=c,g=`>`,v=`>=`;break;case`<`:p=c,m=u,h=s,g=`<`,v=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(o(e,t,f))return!1;for(let n=0;n{e.semver===i&&(e=new r(`>=0.0.0`)),o||=e,s||=e,p(e.semver,o.semver,f)?o=e:h(e.semver,s.semver,f)&&(s=e)}),o.operator===g||o.operator===v||(!s.operator||s.operator===g)&&m(e,s.semver)||s.operator===v&&h(e,s.semver))return!1}return!0}})),ile=/* @__PURE__ */ a(((e,t)=>{let n=XU();t.exports=(e,t,r)=>n(e,t,`>`,r)})),ale=/* @__PURE__ */ a(((e,t)=>{let n=XU();t.exports=(e,t,r)=>n(e,t,`<`,r)})),ole=/* @__PURE__ */ a(((e,t)=>{let n=qU();t.exports=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r))})),sle=/* @__PURE__ */ a(((e,t)=>{let n=YU(),r=RU();t.exports=(e,t,i)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>r(e,t,i));for(let e of c)n(e,t,i)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length{let n=qU(),r=JU(),{ANY:i}=r,a=YU(),o=RU(),s=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=u(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],u=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=/* @__PURE__ */ new Set,s,u;for(let t of e)t.operator===`>`||t.operator===`>=`?s=d(s,t,n):t.operator===`<`||t.operator===`<=`?u=f(u,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(s&&u&&(p=o(s.semver,u.semver,n),p>0||p===0&&(s.operator!==`>=`||u.operator!==`<=`)))return null;for(let e of r){if(s&&!a(e,String(s),n)||u&&!a(e,String(u),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,v,y=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1,b=s&&!n.includePrerelease&&s.semver.prerelease.length?s.semver:!1;y&&y.prerelease.length===1&&u.operator===`<`&&y.prerelease[0]===0&&(y=!1);for(let e of t){if(v=v||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,s){if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),e.operator===`>`||e.operator===`>=`){if(m=d(s,e,n),m===e&&m!==s)return!1}else if(s.operator===`>=`&&!e.test(s.semver))return!1}if(u){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`<`||e.operator===`<=`){if(h=f(u,e,n),h===e&&h!==u)return!1}else if(u.operator===`<=`&&!e.test(u.semver))return!1}if(!e.operator&&(u||s)&&p!==0)return!1}return!(s&&g&&!u&&p!==0||u&&v&&!s&&p!==0||b||y)},d=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},f=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=s})),ZU=/* @__PURE__ */ a(((e,t)=>{let n=NU(),r=jU(),i=IU(),a=FU();t.exports={parse:LU(),valid:Rce(),clean:zce(),inc:Bce(),diff:Vce(),major:Hce(),minor:Uce(),patch:Wce(),prerelease:Gce(),compare:RU(),rcompare:Kce(),compareLoose:qce(),compareBuild:zU(),sort:Jce(),rsort:Yce(),gt:BU(),lt:VU(),eq:HU(),neq:UU(),gte:WU(),lte:GU(),cmp:KU(),coerce:Xce(),truncate:Zce(),Comparator:JU(),Range:qU(),satisfies:YU(),toComparators:$ce(),maxSatisfying:ele(),minSatisfying:tle(),minVersion:nle(),validRange:rle(),outside:XU(),gtr:ile(),ltr:ale(),intersects:ole(),simplifyRange:sle(),subset:cle(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}})),lle={version:`2.2.0`,assets:{"opencode-linux-x64.tar.gz":`6d597970a8cc448f1b9a9f645532584b339dd3ab9583bb5f063f13d83e54768f`,"opencode-linux-arm64.tar.gz":`1f1ce0fc07b9245a815ffa9d652dbb80e6b0f07e5bf74ea87d2b1c0339fbac52`,"opencode-darwin-x64.zip":`cc191a1cec9b9cd0192d78dc066bbf48730639131422fa54c87c485a821ba1d5`,"opencode-darwin-arm64.zip":`c71b1cd96541539ad38e2a75377d2f43d2a27567289a14371a182e9a0800db3d`,"opencode-linux-x64-musl.tar.gz":`41779c8bb115189a2949f5638e7007c3e75a137ec72e9219dd26ae812e561623`,"opencode-linux-arm64-musl.tar.gz":`d5aa42f33abc7af1075854e9be94224219a37d98c28289cacc5544cc88f1af82`}};const QU=`opencode`,$U=`https://github.com/anomalyco/opencode/releases/download`,eW=`https://github.com/fro-bot/agent/releases/download`,tW=`+harness.`,nW=`1.19.4`,rW=lle;function ule(e){return nr.join(e,QU)}const dle=/^\d+\.\d+\.\d+(?:[.-][\w.-]+)?(?:\+[\w.-]+)?$/;function iW(e){return e.includes(tW)||e.includes(`-harness.`)}function aW(e){return e.includes(tW)?e.replace(tW,`-harness.`):e}function oW(e){return aW(e)}function sW(e){let t=/^v?(\d+)\./.exec(e)?.[1];return t!==void 0&&Number(t)>=2}function cW(e){return sW(e)&&!iW(e)}function lW(){let e=hr.platform(),t=hr.arch();if(e!==`darwin`&&e!==`linux`||t!==`x64`&&t!==`arm64`)throw Error(`Unsupported platform: ${e}/${t}. This action supports linux/darwin × x64/arm64 only (no windows).`);return{os:e,arch:t,ext:e===`darwin`?`.zip`:`.tar.gz`}}function uW(e){return(e.startsWith(`v`)?e.slice(1):e).replaceAll(`+`,`%2B`)}function dW(e){let t=e.startsWith(`v`)?e.slice(1):e;if(!dle.test(t))throw Error(`Invalid version string: "${e}". Must match semver-ish pattern (no path traversal or shell metacharacters).`)}function fle(e,t){dW(e);let n=`opencode-${t.os}-${t.arch}${t.ext}`;if(iW(e)){let t=uW(aW(e));return`${eW}/${t}/${n}`}let r=e.startsWith(`v`)?e:`v${e}`;return`${$U}/${r}/${n}`}function ple(e){if(dW(e),cW(e)){let t=e.startsWith(`v`)?e:`v${e}`;return`${$U}/${t}/SHA256SUMS`}if(!iW(e))throw Error(`buildChecksumsUrl requires a harness version (must contain +harness. or -harness.)`);let t=uW(aW(e));return`${eW}/${t}/SHA256SUMS`}async function fW(e,t,n,r,i,a){let o=ple(t);i.debug(`Downloading SHA256SUMS for release`,{url:o});let s=await r.downloadTool(o),c=fr(s,`utf8`),l=`opencode-${n.os}-${n.arch}${n.ext}`,u=c.split(` +default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!a||i(a,o))&&(a=o)}return a&&e.test(a)?a:null}})),rle=/* @__PURE__ */ a(((e,t)=>{let n=qU();t.exports=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}}})),XU=/* @__PURE__ */ a(((e,t)=>{let n=IU(),r=JU(),{ANY:i}=r,a=qU(),o=YU(),s=BU(),c=VU(),l=GU(),u=WU();t.exports=(e,t,d,f)=>{e=new n(e,f),t=new a(t,f);let p,m,h,g,v;switch(d){case`>`:p=s,m=l,h=c,g=`>`,v=`>=`;break;case`<`:p=c,m=u,h=s,g=`<`,v=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(o(e,t,f))return!1;for(let n=0;n{e.semver===i&&(e=new r(`>=0.0.0`)),o||=e,s||=e,p(e.semver,o.semver,f)?o=e:h(e.semver,s.semver,f)&&(s=e)}),o.operator===g||o.operator===v||(!s.operator||s.operator===g)&&m(e,s.semver)||s.operator===v&&h(e,s.semver))return!1}return!0}})),ile=/* @__PURE__ */ a(((e,t)=>{let n=XU();t.exports=(e,t,r)=>n(e,t,`>`,r)})),ale=/* @__PURE__ */ a(((e,t)=>{let n=XU();t.exports=(e,t,r)=>n(e,t,`<`,r)})),ole=/* @__PURE__ */ a(((e,t)=>{let n=qU();t.exports=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r))})),sle=/* @__PURE__ */ a(((e,t)=>{let n=YU(),r=RU();t.exports=(e,t,i)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>r(e,t,i));for(let e of c)n(e,t,i)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length{let n=qU(),r=JU(),{ANY:i}=r,a=YU(),o=RU(),s=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=u(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],u=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=/* @__PURE__ */ new Set,s,u;for(let t of e)t.operator===`>`||t.operator===`>=`?s=d(s,t,n):t.operator===`<`||t.operator===`<=`?u=f(u,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(s&&u&&(p=o(s.semver,u.semver,n),p>0||p===0&&(s.operator!==`>=`||u.operator!==`<=`)))return null;for(let e of r){if(s&&!a(e,String(s),n)||u&&!a(e,String(u),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,v,y=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1,b=s&&!n.includePrerelease&&s.semver.prerelease.length?s.semver:!1;y&&y.prerelease.length===1&&u.operator===`<`&&y.prerelease[0]===0&&(y=!1);for(let e of t){if(v=v||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,s){if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),e.operator===`>`||e.operator===`>=`){if(m=d(s,e,n),m===e&&m!==s)return!1}else if(s.operator===`>=`&&!e.test(s.semver))return!1}if(u){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`<`||e.operator===`<=`){if(h=f(u,e,n),h===e&&h!==u)return!1}else if(u.operator===`<=`&&!e.test(u.semver))return!1}if(!e.operator&&(u||s)&&p!==0)return!1}return!(s&&g&&!u&&p!==0||u&&v&&!s&&p!==0||b||y)},d=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},f=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=s})),ZU=/* @__PURE__ */ a(((e,t)=>{let n=NU(),r=jU(),i=IU(),a=FU();t.exports={parse:LU(),valid:Rce(),clean:zce(),inc:Bce(),diff:Vce(),major:Hce(),minor:Uce(),patch:Wce(),prerelease:Gce(),compare:RU(),rcompare:Kce(),compareLoose:qce(),compareBuild:zU(),sort:Jce(),rsort:Yce(),gt:BU(),lt:VU(),eq:HU(),neq:UU(),gte:WU(),lte:GU(),cmp:KU(),coerce:Xce(),truncate:Zce(),Comparator:JU(),Range:qU(),satisfies:YU(),toComparators:$ce(),maxSatisfying:ele(),minSatisfying:tle(),minVersion:nle(),validRange:rle(),outside:XU(),gtr:ile(),ltr:ale(),intersects:ole(),simplifyRange:sle(),subset:cle(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}})),lle={version:`2.2.5`,assets:{"opencode-linux-x64.tar.gz":`09f44302c10fd036912f59c81fd1aef5df45dd06f649197f9dfc9bbe2a79614e`,"opencode-linux-arm64.tar.gz":`5a528f42caf576c6cdece6a191eb273d3db54effa5518e0402684d8f8026aeb6`,"opencode-darwin-x64.zip":`4d4419022e6ffbd48afc97c5101bdf001d38b0499f516169b9a80a87a340fd56`,"opencode-darwin-arm64.zip":`25ba9908979fa7d764792c82589b4b5768ab1511154e0317d98aa77d216ce767`,"opencode-linux-x64-musl.tar.gz":`889389e99ffa39fa41d512b2c9c15316522d97398fb912503ef667f80e22a827`,"opencode-linux-arm64-musl.tar.gz":`bbf927e3f7a92040f25fd78436c251f41deb25cefac1c906e79c01aa572bf73b`}};const QU=`opencode`,$U=`https://github.com/anomalyco/opencode/releases/download`,eW=`https://github.com/fro-bot/agent/releases/download`,tW=`+harness.`,nW=`1.19.4`,rW=lle;function ule(e){return nr.join(e,QU)}const dle=/^\d+\.\d+\.\d+(?:[.-][\w.-]+)?(?:\+[\w.-]+)?$/;function iW(e){return e.includes(tW)||e.includes(`-harness.`)}function aW(e){return e.includes(tW)?e.replace(tW,`-harness.`):e}function oW(e){return aW(e)}function sW(e){let t=/^v?(\d+)\./.exec(e)?.[1];return t!==void 0&&Number(t)>=2}function cW(e){return sW(e)&&!iW(e)}function lW(){let e=hr.platform(),t=hr.arch();if(e!==`darwin`&&e!==`linux`||t!==`x64`&&t!==`arm64`)throw Error(`Unsupported platform: ${e}/${t}. This action supports linux/darwin × x64/arm64 only (no windows).`);return{os:e,arch:t,ext:e===`darwin`?`.zip`:`.tar.gz`}}function uW(e){return(e.startsWith(`v`)?e.slice(1):e).replaceAll(`+`,`%2B`)}function dW(e){let t=e.startsWith(`v`)?e.slice(1):e;if(!dle.test(t))throw Error(`Invalid version string: "${e}". Must match semver-ish pattern (no path traversal or shell metacharacters).`)}function fle(e,t){dW(e);let n=`opencode-${t.os}-${t.arch}${t.ext}`;if(iW(e)){let t=uW(aW(e));return`${eW}/${t}/${n}`}let r=e.startsWith(`v`)?e:`v${e}`;return`${$U}/${r}/${n}`}function ple(e){if(dW(e),cW(e)){let t=e.startsWith(`v`)?e:`v${e}`;return`${$U}/${t}/SHA256SUMS`}if(!iW(e))throw Error(`buildChecksumsUrl requires a harness version (must contain +harness. or -harness.)`);let t=uW(aW(e));return`${eW}/${t}/SHA256SUMS`}async function fW(e,t,n,r,i,a){let o=ple(t);i.debug(`Downloading SHA256SUMS for release`,{url:o});let s=await r.downloadTool(o),c=fr(s,`utf8`),l=`opencode-${n.os}-${n.arch}${n.ext}`,u=c.split(` `).map(e=>e.trim()).find(e=>{let t=e.split(/\s+/);return t.length>=2&&t.at(-1)===l});if(u===void 0)throw Error(`SHA256SUMS does not contain an entry for ${l}`);let d=u.split(/\s+/)[0];if(d===void 0||d.length===0)throw Error(`Could not parse hash from SHA256SUMS line: ${u}`);if(a!==void 0&&d.toLowerCase()!==a.toLowerCase())throw Error(`SHA256SUMS entry for ${l} disagrees with the recorded digest: SHA256SUMS has ${d}, recorded ${a}`);let f=Jn(`sha256`);await new Promise((t,n)=>{let r=dr(e);r.on(`error`,n),r.on(`data`,e=>{f.update(e)}),r.on(`end`,()=>{t()})});let p=f.digest(`hex`);if(p.toLowerCase()!==d.toLowerCase())throw Error(`SHA256 mismatch for ${l}: expected ${d}, got ${p}`);i.debug(`Archive SHA256 verified`,{filename:l,hash:p})}async function pW(e,t,n,r,i=!1){try{let{stdout:i}=await r.getExecOutput(`file`,[e],{silent:!0}),a=(t===`.zip`?[`Zip archive`,`ZIP`]:[`gzip`,`tar`,`compressed`]).some(e=>i.includes(e));return a||n.warning(`Download validation failed`,{output:i.trim()}),a}catch(e){if(i)throw Error(`Could not validate download (file command unavailable): ${os(e)}`);return n.debug(`Could not validate download (file command unavailable)`),!0}}async function mle(e,t,n,r,i=nW,a=rW){let o=lW();if(cW(e))return hle(e,o,t,n,r,a);let s=n.find(QU,oW(e),o.arch);if(s.length>0)return t.info(`OpenCode found in cache`,{version:e,path:s}),{path:s,version:e,cached:!0};try{return await hW(e,o,t,n,r)}catch(n){if(iW(e))throw Error(`Harness OpenCode download/verify failed for explicit pin "${e}": ${os(n)}. No stock fallback is attempted for an explicit harness pin (fail-closed).`);t.warning(`Primary version install failed, trying fallback`,{requestedVersion:e,fallbackVersion:i,error:os(n)})}if(e!==i)try{let e=await hW(i,o,t,n,r);return t.info(`Installed fallback version`,{version:i}),e}catch(t){throw Error(`Failed to install OpenCode (tried ${e} and ${i}): ${os(t)}`)}throw Error(`Failed to install OpenCode version ${e}`)}function mW(e,t,n){let r=e.startsWith(`v`)?e.slice(1):e;if(r!==n.version)throw Error(`OpenCode ${e} is a V2 pin with no recorded digest: only ${n.version} is pinned in opencode-v2-pin.json. Record the digests for ${r} there before using it.`);let i=`opencode-${t.os}-${t.arch}${t.ext}`,a=n.assets[i];if(a===void 0)throw Error(`OpenCode ${e} has no recorded digest for ${i} in opencode-v2-pin.json`);let o=`sha256-${a.slice(0,16).toLowerCase()}`;return{recordedDigest:a,cacheId:o,cacheVersion:`${r}-${o}`}}async function hle(e,t,n,r,i,a){let{recordedDigest:o,cacheVersion:s}=mW(e,t,a),c=r.find(QU,s,t.arch);if(c.length>0)return n.info(`OpenCode found in cache`,{version:e,path:c}),{path:c,version:e,cached:!0};try{return await hW(e,t,n,r,i,{recordedDigest:o,cacheVersion:s})}catch(t){throw Error(`Stock V2 OpenCode download/verify failed for pin "${e}": ${os(t)}. No fallback is attempted for a V2 pin (fail-closed).`)}}async function hW(e,t,n,r,i,a){n.info(`Downloading OpenCode`,{version:e});let o=fle(e,t),s=await r.downloadTool(o);if(a!==void 0){if(await fW(s,e,t,r,n,a.recordedDigest),!await pW(s,t.ext,n,i,!0))throw Error(`Downloaded archive appears corrupted`)}else if(iW(e))await fW(s,e,t,r,n);else if(!await pW(s,t.ext,n,i))throw Error(`Downloaded archive appears corrupted`);n.info(`Extracting OpenCode`);let c=t.ext===`.zip`?await r.extractZip(s):await r.extractTar(s);n.info(`Caching OpenCode`);let l=await r.cacheDir(c,QU,a?.cacheVersion??oW(e),t.arch);return n.info(`OpenCode installed`,{version:e,path:l}),{path:l,version:e,cached:!1}}async function gle(e,t){if(t!==void 0&&iW(t))return e.debug(`Skipping stock latest fetch for harness-pinned version`,{version:t}),t;let n=await fetch(`https://api.github.com/repos/anomalyco/opencode/releases/latest`);if(!n.ok)throw Error(`Failed to fetch latest OpenCode version: ${n.statusText}`);let r=(await n.json()).tag_name.replace(/^v/,``);return e.info(`Latest OpenCode version`,{version:r}),r}function gW(e){let t={followSymbolicLinks:!0,implicitDescendants:!0,matchDirectories:!0,omitBrokenSymbolicLinks:!0,excludeHiddenFiles:!1};return e&&(typeof e.followSymbolicLinks==`boolean`&&(t.followSymbolicLinks=e.followSymbolicLinks,W(`followSymbolicLinks '${t.followSymbolicLinks}'`)),typeof e.implicitDescendants==`boolean`&&(t.implicitDescendants=e.implicitDescendants,W(`implicitDescendants '${t.implicitDescendants}'`)),typeof e.matchDirectories==`boolean`&&(t.matchDirectories=e.matchDirectories,W(`matchDirectories '${t.matchDirectories}'`)),typeof e.omitBrokenSymbolicLinks==`boolean`&&(t.omitBrokenSymbolicLinks=e.omitBrokenSymbolicLinks,W(`omitBrokenSymbolicLinks '${t.omitBrokenSymbolicLinks}'`)),typeof e.excludeHiddenFiles==`boolean`&&(t.excludeHiddenFiles=e.excludeHiddenFiles,W(`excludeHiddenFiles '${t.excludeHiddenFiles}'`))),t}const _W=process.platform===`win32`;function vW(e){if(e=CW(e),_W&&/^\\\\[^\\]+(\\[^\\]+)?$/.test(e))return e;let t=An.dirname(e);return _W&&/^\\\\[^\\]+\\[^\\]+\\$/.test(t)&&(t=CW(t)),t}function yW(e,t){if(Ln(e,`ensureAbsoluteRoot parameter 'root' must not be empty`),Ln(t,`ensureAbsoluteRoot parameter 'itemPath' must not be empty`),bW(t))return t;if(_W){if(t.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)){let e=process.cwd();return Ln(e.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${e}'`),t[0].toUpperCase()===e[0].toUpperCase()?t.length===2?`${t[0]}:\\${e.substr(3)}`:(e.endsWith(`\\`)||(e+=`\\`),`${t[0]}:\\${e.substr(3)}${t.substr(2)}`):`${t[0]}:\\${t.substr(2)}`}if(SW(t).match(/^\\$|^\\[^\\]/)){let e=process.cwd();return Ln(e.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${e}'`),`${e[0]}:\\${t.substr(1)}`}}return Ln(bW(e),`ensureAbsoluteRoot parameter 'root' must have an absolute root`),e.endsWith(`/`)||_W&&e.endsWith(`\\`)||(e+=An.sep),e+t}function bW(e){return Ln(e,`hasAbsoluteRoot parameter 'itemPath' must not be empty`),e=SW(e),_W?e.startsWith(`\\\\`)||/^[A-Z]:\\/i.test(e):e.startsWith(`/`)}function xW(e){return Ln(e,`isRooted parameter 'itemPath' must not be empty`),e=SW(e),_W?e.startsWith(`\\`)||/^[A-Z]:/i.test(e):e.startsWith(`/`)}function SW(e){return e||=``,_W?(e=e.replace(/\//g,`\\`),(/^\\\\+[^\\]/.test(e)?`\\`:``)+e.replace(/\\\\+/g,`\\`)):e.replace(/\/\/+/g,`/`)}function CW(e){return e?(e=SW(e),!e.endsWith(An.sep)||e===An.sep||_W&&/^[A-Z]:\\$/i.test(e)?e:e.substr(0,e.length-1)):``}var wW;(function(e){e[e.None=0]=`None`,e[e.Directory=1]=`Directory`,e[e.File=2]=`File`,e[e.All=3]=`All`})(wW||={});const TW=process.platform===`win32`;function EW(e){e=e.filter(e=>!e.negate);let t={};for(let n of e){let e=TW?n.searchPath.toUpperCase():n.searchPath;t[e]=`candidate`}let n=[];for(let r of e){let e=TW?r.searchPath.toUpperCase():r.searchPath;if(t[e]===`included`)continue;let i=!1,a=e,o=vW(a);for(;o!==a;){if(t[o]){i=!0;break}a=o,o=vW(a)}i||(n.push(r.searchPath),t[e]=`included`)}return n}function _le(e,t){let n=wW.None;for(let r of e)r.negate?n&=~r.match(t):n|=r.match(t);return n}function vle(e,t){return e.some(e=>!e.negate&&e.partialMatch(t))}const DW=(e,t,n)=>{let r=e instanceof RegExp?OW(e,n):e,i=t instanceof RegExp?OW(t,n):t,a=r!==null&&i!=null&&yle(r,i,n);return a&&{start:a[0],end:a[1],pre:n.slice(0,a[0]),body:n.slice(a[0]+r.length,a[1]),post:n.slice(a[1]+i.length)}},OW=(e,t)=>{let n=t.match(e);return n?n[0]:null},yle=(e,t,n)=>{let r,i,a,o,s,c=n.indexOf(e),l=n.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(r=[],a=n.length;u>=0&&!s;){if(u===c)r.push(u),c=n.indexOf(e,u+1);else if(r.length===1){let e=r.pop();e!==void 0&&(s=[e,l])}else i=r.pop(),i!==void 0&&i=0?c:l}r.length&&o!==void 0&&(s=[a,o])}return s},kW=`\0SLASH`+Math.random()+`\0`,AW=`\0OPEN`+Math.random()+`\0`,jW=`\0CLOSE`+Math.random()+`\0`,MW=`\0COMMA`+Math.random()+`\0`,NW=`\0PERIOD`+Math.random()+`\0`,ble=new RegExp(kW,`g`),xle=new RegExp(AW,`g`),Sle=new RegExp(jW,`g`),Cle=new RegExp(MW,`g`),wle=new RegExp(NW,`g`),Tle=/\\\\/g,Ele=/\\{/g,Dle=/\\}/g,Ole=/\\,/g,kle=/\\\./g;function PW(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Ale(e){return e.replace(Tle,kW).replace(Ele,AW).replace(Dle,jW).replace(Ole,MW).replace(kle,NW)}function jle(e){return e.replace(ble,`\\`).replace(xle,`{`).replace(Sle,`}`).replace(Cle,`,`).replace(wle,`.`)}function FW(e,t){for(let n=0;n=t}function IW(e,t,n,r,i,a){let o=[],s=0;for(let c=0;c=r)return o;let u=e[c]+t+n[l];if(!a||u){if(s+u.length>i)return o;o.push(u),s+=u.length}}return o}function Rle(e,t,n,r){let i=e.split(/\.\./),a=[]; /* c8 ignore start */ if(i[0]===void 0||i[1]===void 0)return a; diff --git a/dist/main.js b/dist/main.js index 24e741a9e2..5711796581 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,4 +1,4 @@ -import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r,B as i,Bt as a,C as o,Ct as s,D as c,E as l,Et as u,F as d,Ft as f,G as p,Gt as m,Ht as h,I as g,It as _,J as v,Jt as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as E,Nt as D,O,Ot as k,P as A,Pt as ee,Q as j,Qt as M,R as N,Rt as P,S as te,St as F,T as ne,Tt as re,U as I,Ut as ie,V as ae,Vt as oe,W as L,Wt as se,X as ce,Xt as R,Y as le,Yt as ue,Z as de,Zt as fe,_ as pe,_t as me,a as he,an as z,at as ge,b as _e,bt as ve,c as ye,cn as be,ct as xe,d as Se,dn as Ce,dt as we,en as Te,et as Ee,fn as De,ft as Oe,g as ke,gt as Ae,h as B,hn as je,ht as Me,i as Ne,in as V,it as Pe,j as Fe,jt as Ie,k as Le,kt as Re,l as ze,ln as Be,lt as Ve,mn as He,mt as Ue,n as We,nn as Ge,nt as Ke,o as qe,on as Je,ot as Ye,p as Xe,pn as Ze,pt as Qe,q as $e,qt as H,r as et,rn as U,rt as tt,s as nt,sn as rt,st as it,t as at,tn as ot,tt as st,un as ct,ut as lt,v as ut,vt as dt,wt as ft,x as pt,xt as mt,y as ht,yt as gt,z as _t,zt as vt}from"./artifact-C0wQlV2Q.js";import W from"node:process";import*as yt from"os";import*as bt from"crypto";import*as G from"fs";import*as xt from"path";import{ok as St}from"assert";import*as Ct from"util";import{TextDecoder as wt}from"node:util";import{Buffer as Tt}from"node:buffer";import*as Et from"node:crypto";import{createHash as Dt}from"node:crypto";import{pathToFileURL as Ot}from"node:url";import*as K from"node:fs/promises";import{access as kt,chmod as At,lstat as jt,mkdir as Mt,mkdtemp as Nt,readdir as Pt,rm as Ft,stat as It,writeFile as Lt}from"node:fs/promises";import*as q from"node:path";import Rt,{dirname as zt,join as Bt,resolve as Vt,sep as Ht}from"node:path";import{constants as Ut}from"node:fs";import{spawn as Wt}from"node:child_process";import*as Gt from"node:os";import Kt,{homedir as qt,tmpdir as Jt}from"node:os";import*as Yt from"stream";const Xt={api_error:`API Error`,configuration:`Configuration Error`,context_overflow:`Context Overflow`,internal:`Internal Error`,llm_fetch_error:`LLM Fetch Error`,llm_timeout:`LLM Timeout`,model_not_found:`Model Not Found`,permission:`Permission Error`,provider_auth_error:`Provider Authentication Error`,quota_exceeded:`Quota Exceeded`,rate_limit:`Rate Limit`,validation:`Validation Error`};function Zt(e){return e.type===`rate_limit`?`:warning:`:e.type===`llm_timeout`?`:hourglass:`:e.type===`llm_fetch_error`||e.retryable?`:warning:`:`:x:`}function Qt(e){let t=Zt(e),n=Xt[e.type],r=[];return r.push(`${t} **${n}**`),r.push(``),r.push(e.message),e.details!=null&&(r.push(``),r.push(`> ${e.details}`)),e.suggestedAction!=null&&(r.push(``),r.push(`**Suggested action:** ${e.suggestedAction}`)),e.retryable&&(r.push(``),r.push(`_This error is retryable._`)),e.resetTime!=null&&(r.push(``),r.push(`_Rate limit resets at: ${e.resetTime.toISOString()}_`)),r.join(` +import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r,B as i,Bt as a,C as o,Ct as s,D as c,E as l,Et as u,F as d,Ft as f,G as p,Gt as m,Ht as h,I as g,It as _,J as v,Jt as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as E,Nt as D,O,Ot as k,P as A,Pt as ee,Q as j,Qt as M,R as N,Rt as P,S as te,St as F,T as ne,Tt as re,U as I,Ut as ie,V as ae,Vt as oe,W as L,Wt as se,X as ce,Xt as R,Y as le,Yt as ue,Z as de,Zt as fe,_ as pe,_t as me,a as he,an as z,at as ge,b as _e,bt as ve,c as ye,cn as be,ct as xe,d as Se,dn as Ce,dt as we,en as Te,et as Ee,fn as De,ft as Oe,g as ke,gt as Ae,h as B,hn as je,ht as Me,i as Ne,in as V,it as Pe,j as Fe,jt as Ie,k as Le,kt as Re,l as ze,ln as Be,lt as Ve,mn as He,mt as Ue,n as We,nn as Ge,nt as Ke,o as qe,on as Je,ot as Ye,p as Xe,pn as Ze,pt as Qe,q as $e,qt as H,r as et,rn as U,rt as tt,s as nt,sn as rt,st as it,t as at,tn as ot,tt as st,un as ct,ut as lt,v as ut,vt as dt,wt as ft,x as pt,xt as mt,y as ht,yt as gt,z as _t,zt as vt}from"./artifact-_KnC6wDo.js";import W from"node:process";import*as yt from"os";import*as bt from"crypto";import*as G from"fs";import*as xt from"path";import{ok as St}from"assert";import*as Ct from"util";import{TextDecoder as wt}from"node:util";import{Buffer as Tt}from"node:buffer";import*as Et from"node:crypto";import{createHash as Dt}from"node:crypto";import{pathToFileURL as Ot}from"node:url";import*as K from"node:fs/promises";import{access as kt,chmod as At,lstat as jt,mkdir as Mt,mkdtemp as Nt,readdir as Pt,rm as Ft,stat as It,writeFile as Lt}from"node:fs/promises";import*as q from"node:path";import Rt,{dirname as zt,join as Bt,resolve as Vt,sep as Ht}from"node:path";import{constants as Ut}from"node:fs";import{spawn as Wt}from"node:child_process";import*as Gt from"node:os";import Kt,{homedir as qt,tmpdir as Jt}from"node:os";import*as Yt from"stream";const Xt={api_error:`API Error`,configuration:`Configuration Error`,context_overflow:`Context Overflow`,internal:`Internal Error`,llm_fetch_error:`LLM Fetch Error`,llm_timeout:`LLM Timeout`,model_not_found:`Model Not Found`,permission:`Permission Error`,provider_auth_error:`Provider Authentication Error`,quota_exceeded:`Quota Exceeded`,rate_limit:`Rate Limit`,validation:`Validation Error`};function Zt(e){return e.type===`rate_limit`?`:warning:`:e.type===`llm_timeout`?`:hourglass:`:e.type===`llm_fetch_error`||e.retryable?`:warning:`:`:x:`}function Qt(e){let t=Zt(e),n=Xt[e.type],r=[];return r.push(`${t} **${n}**`),r.push(``),r.push(e.message),e.details!=null&&(r.push(``),r.push(`> ${e.details}`)),e.suggestedAction!=null&&(r.push(``),r.push(`**Suggested action:** ${e.suggestedAction}`)),e.retryable&&(r.push(``),r.push(`_This error is retryable._`)),e.resetTime!=null&&(r.push(``),r.push(`_Rate limit resets at: ${e.resetTime.toISOString()}_`)),r.join(` `)}function $t(e,t,n,r){return{type:e,message:t,retryable:n,details:r?.details,suggestedAction:r?.suggestedAction,resetTime:r?.resetTime}}const en=[/fetch failed/i,/connect\s*timeout/i,/connecttimeouterror/i,/timed?\s*out/i,/econnrefused/i,/econnreset/i,/etimedout/i,/network error/i];function tn(e){if(e==null)return!1;let t=``;if(typeof e==`string`)t=e;else if(e instanceof Error)t=e.message,`cause`in e&&typeof e.cause==`string`&&(t+=` ${e.cause}`);else if(typeof e==`object`){let n=e;typeof n.message==`string`&&(t=n.message),typeof n.cause==`string`&&(t+=` ${n.cause}`)}return en.some(e=>e.test(t))}function nn(e,t){return $t(`llm_fetch_error`,`LLM request failed: ${e}`,!0,{details:t==null?void 0:`Model: ${t}`,suggestedAction:`This is a transient network error. The request may succeed on retry, or try a different model.`})}function rn(e,t){return $t(`api_error`,`Provider request failed: ${e}`,!0,{details:t==null?void 0:`Model: ${t}`,suggestedAction:`The provider reported this failure as retryable. The request may succeed on retry.`})}function an(e,t){return $t(`configuration`,`Agent error: ${e}`,!1,{details:t==null?void 0:`Requested agent: ${t}`,suggestedAction:`Verify the agent name is correct and the agent is defined in your OpenCode config or provided by a plugin you configured.`})}const on=/Model not found: ([\w.:@+-]+\/[\w.:@+/-]+?)\.(?=\s|$)(?: Did you mean: ([^\n?]*)\?)?/,sn=/^[\w.:@+/-]{1,128}$/;function cn(e){if(typeof e.message!=`string`)return null;let t=on.exec(e.message),n=t?.[1];if(n==null)return null;let r=(t?.[2]??``).split(`,`).map(e=>e.trim()).filter(e=>sn.test(e)).slice(0,5);return $t(`model_not_found`,`Model not found: ${n}.${r.length>0?` Did you mean: ${r.join(`, `)}?`:``}`,!1,{suggestedAction:`Check that the configured model id is correct. If it is, the OpenCode model catalog may not have loaded: make sure the job can reach models.opencode.ai (egress/firewall) or define the model explicitly in the OpenCode config.`})}function ln(){return $t(`provider_auth_error`,`The model provider rejected authentication for this run.`,!1,{details:`Authentication with the configured model provider is unavailable.`,suggestedAction:`Check the model provider credentials and configuration, then try again.`})}function un(e){if(typeof e==`string`&&!(e.length===0||e.length>128))return e}function dn(e){return e.kind===`retry-status`?un(e.reason)===`auth_unavailable`?ln():null:un(e.name)===`ProviderAuthError`?ln():null}function fn(){return $t(`context_overflow`,`The model context window was exceeded while processing this run.`,!1,{details:`The current session reached the model context limit.`,suggestedAction:`Retry the run with a fresh session or reduce the prompt size.`})}function pn(e){return un(e.name)===`ContextOverflowError`?fn():null}const mn=/* @__PURE__ */ new Set([`insufficient_quota`,`usage_not_included`]),hn=[/exhausted (your|the) credits/i,/top up your available balance/i],gn=/usage limit reached\./i,_n=/enable usage from your available balance/i,vn=/[\n\r\u2028\u2029]/;function yn(e){return e.split(vn).some(e=>{let t=gn.exec(e);return t!==null&&_n.test(e.slice(t.index+t[0].length))})}function bn(e){return yn(e)||hn.some(t=>t.test(e))}function xn(e){if(e.kind===`retry-status`)return e.reason===`account_rate_limit`?Sn({resetTime:e.resetAt}):null;let t=e.status;if(t!==void 0&&Number.isFinite(t)&&t===402)return Sn();let n=e.code;if(n!==void 0&&mn.has(n))return Sn();let r=e.message;return typeof r==`string`&&r.length>0&&bn(r)?Sn():null}function Sn(e){return $t(`quota_exceeded`,`Provider quota exceeded. This run has stopped because the configured model has reached its usage limit.`,!1,{details:e?.provider==null?void 0:`Provider: ${e.provider}`,suggestedAction:`Check the provider account/billing settings, wait for the quota to reset, or switch to a different model or provider.`,resetTime:e?.resetTime})}function J(e,t){if(typeof e==`object`&&e)return Object.getOwnPropertyDescriptor(e,t)?.value}function Y(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`string`?n.value:null}function X(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`number`?n.value:null}function Cn(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`boolean`?n.value:null}function Z(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}const wn=/* @__PURE__ */ new Set([`model_not_found`,`model_not_supported`]),Tn=[/\bauth_unavailable\b/i,/\bno auth available\b/i],En=[/\bmodel_not_found\b/i,/\bmodel (?:is )?not (?:supported|found)\b/i];function Dn(e,t){return e.some(e=>e.test(t))}function On(e){if(e===void 0)return;let t=typeof e==`number`?Number.isFinite(e)?new Date(e):void 0:e;if(!(t===void 0||Number.isNaN(t.getTime())))return t}function kn(){return $t(`model_not_found`,`The configured model is not available from the provider.`,!1,{suggestedAction:`Check that the configured model id is correct and supported by the provider, or choose another.`})}function An(e,t){let n=Mn(t).errorInfo.retryable;return n===e.retryable?e:{...e,retryable:n}}function Q(e,t,n,r,i){return{kind:e,evidence:t,stop:n,errorInfo:r,classificationPath:i}}function jn(e){let t=e.reason;if(t===void 0)return null;let n=dn({kind:`retry-status`,reason:t});if(n!==null)return Q(`auth`,`structured`,!0,n,`structured`);let r=xn({kind:`retry-status`,reason:t,resetAt:On(e.resetAt)});return r===null?wn.has(t)?Q(`model-not-found`,`structured`,!0,kn(),`structured`):null:Q(`quota`,`structured`,!0,r,`structured`)}function Mn(e){let t=e.detail??`Unknown session error`;return tn(t)?{errorInfo:nn(t,e.model),classificationPath:`fallback`}:e.status===429?{errorInfo:$t(`rate_limit`,t,!0),classificationPath:`name`}:e.isRetryable===!0?{errorInfo:rn(t,e.model),classificationPath:`structured`}:e.isRetryable===!1?{errorInfo:an(t),classificationPath:`structured`}:{errorInfo:an(t),classificationPath:e.name!==void 0||e.status!==void 0||e.code!==void 0?`name`:`unclassified`}}function Nn(e){let{name:t,status:n,code:r}=e,i=e.message!==void 0&&e.message.length>0?e.message:void 0,a=dn({kind:`session-error`,name:t});if(a!==null)return Q(`auth`,`structured`,!0,a,`structured`);let o=pn({kind:`session-error`,name:t});if(o!==null)return Q(`context-overflow`,`structured`,!1,o,`structured`);if(t===`MessageAbortedError`){let t=Mn(e);return Q(`aborted`,`structured`,!1,t.errorInfo,t.classificationPath)}let s=xn({kind:`session-error`,status:n,code:r});if(s!==null)return Q(`quota`,`structured`,!0,s,`structured`);if(i!==void 0){let t=xn({kind:`session-error`,message:i});if(t!==null)return Q(`quota`,`text`,!0,t,`structured`);let n=cn({kind:`session-error`,message:i});if(n!==null)return Q(`model-not-found`,`text`,!0,n,`fallback`);let r=i.slice(0,2048);if(Dn(Tn,r))return Q(`auth`,`hint`,!1,An(ln(),e),`fallback`);if(Dn(En,r))return Q(`model-not-found`,`hint`,!1,An(kn(),e),`fallback`)}let c=Mn(e);return Q(`unclassified`,`none`,!1,c.errorInfo,c.classificationPath)}function Pn(e){return e.find(e=>typeof e==`string`&&e.length>0)}function Fn(e){return e.find(e=>typeof e==`number`)}function In(e){return e.find(e=>typeof e==`boolean`)}function Ln(e,t={}){let n=J(e,`data`),r=typeof e==`string`?e:Pn([J(n,`message`),J(e,`message`)]);return{source:`terminal-payload`,name:Pn([J(e,`name`),J(n,`name`)]),status:Fn([J(n,`status`),J(n,`statusCode`),J(e,`status`),J(e,`statusCode`)]),code:Pn([J(n,`code`),J(e,`code`)]),message:r,isRetryable:In([J(n,`isRetryable`),J(e,`isRetryable`)]),detail:t.detail,model:t.model}}function Rn(e){return J(e,`type`)===`retry`?{source:`retry-status`,reason:Pn([J(J(e,`action`),`reason`)]),resetAt:Fn([J(e,`next`)])}:null}function zn(e){return e.source===`retry-status`?jn(e):Nn(e)}function Bn(e){return q.join(e.runnerTemp,`fro-bot-attachments`,`${e.runId}-${e.runAttempt}`)}function Vn(e){return e instanceof Error&&`code`in e}async function Hn(e){try{await K.mkdir(e);return}catch(e){if(!Vn(e)||e.code!==`EEXIST`)throw e}let t=await K.lstat(e);if(t.isSymbolicLink())throw Error(`Refusing to use attachment directory ${e}: a symlink already exists at this path`);if(!t.isDirectory())throw Error(`Refusing to use attachment directory ${e}: a non-directory entry already exists at this path`)}async function Un(e){await Hn(q.dirname(e)),await Hn(e)}function Wn(){let e=/* @__PURE__ */ new Map;function t(t){let n=0;for(let r of e.values())r.state===t&&n++;return n}function n(){return t(`outstanding`)===0&&t(`unknown`)===0}return{adopt:(t,n)=>{e.has(t)!==!0&&e.set(t,{label:n,state:`outstanding`})},settle:t=>{let n=e.get(t);n!==void 0&&n.state!==`settled`&&e.set(t,{label:n.label,state:`settled`})},markUnknown:t=>{let n=e.get(t);n!==void 0&&n.state===`outstanding`&&e.set(t,{label:n.label,state:`unknown`})},release:t=>{e.delete(t)},outstanding:()=>t(`outstanding`),unknown:()=>t(`unknown`),isDrainComplete:()=>n(),isPersistenceSafe:()=>n(),snapshot:()=>Array.from(e.entries()).map(([e,t])=>({sessionId:e,label:t.label,state:t.state})),isTracked:t=>e.has(t)}}function Gn(e){return e.startsWith(`shell:`)}function $(e){return Y(e,`sessionID`)}function Kn(e){let t=Y(e,`type`);return t===`sync`?Y(e,`name`)?.replace(/\.\d+$/,``)??t:t}function qn(e){return Z(e,`properties`)??Z(e,`data`)}function Jn(e){return $(Z(e,`properties`))??$(Z(e,`data`))}const Yn=[`OWNER`,`MEMBER`,`COLLABORATOR`];async function Xn(e){let{ledger:t,adapter:n,parentSessionId:r,logger:i,signal:a}=e,o=()=>t.snapshot().filter(e=>!Gn(e.sessionId));if(o().length===0)return y({liveTrackedSessionIds:/* @__PURE__ */ new Set});let s=a===void 0?[]:[a],[c,l]=await Promise.all([n.children(r,...s),n.liveSessionIds(...s)]);if(c.success===!1||l.success===!1){let e=c.success===!1?c.error:l.error,n=o().filter(e=>e.state===`outstanding`);for(let e of n)t.markUnknown(e.sessionId);return i.warning(`Ledger reconciliation failed; marking outstanding entries unknown rather than settling them`,{source:`reconcileLedgerOnce`,parentSessionId:r,unknownCount:n.length,error:e.message}),H(e)}let u=c.data,d=l.data,f=new Set(u.map(e=>e.id)),p=[],m=[],h=/* @__PURE__ */ new Set;for(let e of o())(e.state===`outstanding`||e.state===`unknown`)&&(f.has(e.sessionId)===!1?(t.markUnknown(e.sessionId),m.push(e.sessionId)):d.has(e.sessionId)===!0?h.add(e.sessionId):(t.settle(e.sessionId),p.push(e.sessionId)));return(p.length>0||m.length>0)&&i.debug(`Ledger reconciliation adjusted ownership`,{source:`reconcileLedgerOnce`,parentSessionId:r,settled:p,downgradedToUnknown:m}),y({liveTrackedSessionIds:h})}function Zn(e){let{intervalMs:t=3e4,runPass:n,...r}=e,i=!1,a=!1,o=setInterval(()=>{i||a||(a=!0,(n===void 0?Xn(r):(async()=>n())()).catch(()=>{}).finally(()=>{a=!1}))},t);return{dispose:()=>{i||(i=!0,clearInterval(o))}}}function Qn(e,t){return{children:async(n,r)=>{try{let i=await e.session.children({path:{id:n},query:{directory:t},...r===void 0?{}:{signal:r}});return i.error!=null||i.data==null?H(m(i.error??`session.children returned no data`)):Array.isArray(i.data)?y(i.data.map(e=>({id:e.id}))):H(/* @__PURE__ */ Error(`session.children returned a non-array payload`))}catch(e){return H(m(e))}},liveSessionIds:async n=>{try{let r=await e.session.status({query:{directory:t},...n===void 0?{}:{signal:n}});return r.error!=null||r.data==null?H(m(r.error??`session.status returned no data`)):y(new Set(Object.keys(r.data)))}catch(e){return H(m(e))}}}}function $n(e){return Array.isArray(e)?e.some(e=>{if(Y(e,`type`)!==`tool`||Cn(Z(e,`metadata`),`providerExecuted`)===!0)return!1;let t=Z(e,`state`),n=Cn(Z(t,`metadata`),`interrupted`);return Y(t,`status`)!==`error`||n!==!0}):!1}function er(e,t){switch(e){case`discussion_comment`:case`issue_comment`:case`issues`:case`pull_request`:case`pull_request_review_comment`:case`unsupported`:return null;case`schedule`:case`workflow_dispatch`:switch(t){case`working-dir`:return`working-dir`;case`branch-pr`:return`branch-pr`;case`auto`:return`working-dir`;default:return t}default:return e}}async function tr(e,t,n,r=async(e,t)=>K.writeFile(e,t,`utf8`)){let i=[];for(let a of e){let e=q.join(t,a.filename);try{await r(e,a.content),i.push({type:`file`,mime:`text/plain`,url:Ot(e).toString(),filename:a.filename})}catch(t){n.warning(`Failed to materialize reference file`,{error:x(t),filename:a.filename,path:e})}}return i}function nr(e){switch(e){case`pull_request`:case`issue_comment`:case`issues`:return`affected`;case`workflow_dispatch`:case`schedule`:return`autonomous`;default:return`deferred-or-unknown`}}function rr(e){throw Error(`Unexpected value: ${String(e)}`)}function ir(e){switch(e){case`affected`:return`withhold`;case`autonomous`:case`deferred-or-unknown`:return`provision`;default:return rr(e)}}function ar(e){switch(e){case`affected`:return`file-convention`;case`autonomous`:case`deferred-or-unknown`:return`model-gh`;default:return rr(e)}}function or(e,t){let n=nr(e),r=ir(n);return t===`none`?{delivery:`none`,credential:r}:{delivery:ar(n),credential:r}}function sr(e){let t=Rt.resolve(Rt.normalize(e));return t.endsWith(Rt.sep)&&t.length>1?t.slice(0,-1):t}async function cr(e,t,n){let r=await e.project.list({query:{directory:t}});if(r.error!=null||r.data==null)return n.warning(`SDK project list failed`,{error:x(r.error)}),[];if(!Array.isArray(r.data))return n.warning(`SDK project list returned a non-array payload`,{type:typeof r.data}),[];let i=0,a=[];for(let e of r.data){if(!me(e)){i+=1;continue}let t=dt(e.id),n=dt(e.worktree);t==null||n==null?i+=1:a.push({id:t,worktree:n})}return n.debug(`Discovered projects via SDK`,{total:r.data.length,skipped:i,retained:a.length}),a}async function lr(e,t,n){let r=sr(t),i=await cr(e,t,n);for(let e of i)if(sr(e.worktree)===r)return e;return null}function ur(e,t){return{key:`${e}-${t}`,entityType:e,entityId:t}}function dr(e){return Dt(`sha256`).update(e).digest(`hex`).slice(0,8)}function fr(e,t){return t==null?e:`${e}-${t}`}function pr(e,t){if(e.eventType===`unsupported`)return null;if(e.eventType===`schedule`){let n=typeof e.raw==`object`&&e.raw!=null&&`event`in e.raw?e.raw.event:void 0,r=typeof n==`object`&&n&&`type`in n&&n.type===`schedule`&&`schedule`in n&&typeof n.schedule==`string`?n.schedule:void 0;return ur(`schedule`,fr(`${dr((r!=null&&r.trim().length>0?r:e.action)??`default`)}-${e.runId}`,t))}return e.eventType===`workflow_dispatch`?ur(`dispatch`,fr(String(e.runId),t)):e.target==null?null:e.eventType===`issue_comment`?e.target.kind===`issue`?ur(`issue`,String(e.target.number)):e.target.kind===`pr`?ur(`pr`,String(e.target.number)):null:e.eventType===`discussion_comment`?e.target.kind===`discussion`?ur(`discussion`,String(e.target.number)):null:e.eventType===`issues`?e.target.kind===`issue`?ur(`issue`,String(e.target.number)):null:(e.eventType===`pull_request`||e.eventType===`pull_request_review_comment`)&&e.target.kind===`pr`?ur(`pr`,String(e.target.number)):null}function mr(e){return`fro-bot: ${e.key}`}function hr(e,t){let n=e.filter(e=>e.title===t);return n.length===0?null:n.reduce((e,t)=>t.time.updated>e.time.updated?t:e)}function gr(e){let t=q.resolve(e);return t.endsWith(q.sep)&&t.length>1?t.slice(0,-1):t}async function _r(e,t,n,r){try{let i=await Ae(e,t,r),a=mr(n),o=gr(t),s=hr(i.filter(e=>gr(e.directory)===o).filter(e=>e.time.archived==null&&e.time.compacting==null),a);if(s==null){let e=hr(i.filter(e=>e.time.archived==null&&e.time.compacting==null),a);return e!=null&&r.warning(`Session continuity: matching session has different workspace directory, ignoring`,{sessionId:e.id,sessionDirectory:e.directory,workspacePath:t}),{status:`not-found`}}return{status:`found`,session:s}}catch(e){return{status:`error`,error:x(e)}}}const vr={maxSessions:50,maxAgeDays:30};async function yr(e,t,n,r){let{maxSessions:i,maxAgeDays:a}=n;if(r.info(`Starting session pruning`,{workspacePath:t,maxSessions:i,maxAgeDays:a}),await lr(e,t,r)==null)return r.debug(`No project found for pruning`,{workspacePath:t}),{prunedCount:0,prunedSessionIds:[],remainingCount:0,freedBytes:0};let o=await Ae(e,t,r),s=o.filter(e=>e.parentID==null);if(s.length===0)return{prunedCount:0,prunedSessionIds:[],remainingCount:0,freedBytes:0};let c=[...s].sort((e,t)=>t.time.updated-e.time.updated),l=/* @__PURE__ */ new Date;l.setDate(l.getDate()-a);let u=l.getTime(),d=/* @__PURE__ */ new Set;for(let e of c)e.time.updated>=u&&d.add(e.id);for(let e=0;e!d.has(e.id)),p=/* @__PURE__ */ new Set;for(let e of f){p.add(e.id);for(let t of o)t.parentID===e.id&&p.add(t.id)}if(p.size===0)return r.info(`No sessions to prune`),{prunedCount:0,prunedSessionIds:[],remainingCount:s.length,freedBytes:0};let m=[];for(let t of p)try{await Ue(e,t,r),m.push(t),r.debug(`Pruned session`,{sessionId:t})}catch(e){r.warning(`Failed to prune session`,{sessionId:t,error:x(e)})}let h=s.length-f.length;return r.info(`Session pruning complete`,{prunedCount:m.length,remainingCount:h}),{prunedCount:m.length,prunedSessionIds:m,remainingCount:h,freedBytes:0}}async function br(e,t,n,r,i){if(n!=null&&i?.isExpired()!==!0&&i?.remainingMs()!==0)try{let a,o=i==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`Session title re-assertion aborted`)),i.signal.addEventListener(`abort`,a,{once:!0})});try{let a=e.session.update({path:{id:t},body:{title:n},...i==null?{}:{signal:i.signal}}),s=await Promise.race([a,...o==null?[]:[o]]);if(i?.isExpired()===!0)return;s.error!=null&&r.warning(`Best-effort session title re-assertion failed`,{sessionId:t,sessionTitle:n,error:se(s.error)})}finally{i!=null&&a!=null&&i.signal.removeEventListener(`abort`,a)}}catch(e){if(i?.isExpired()===!0)return;r.warning(`Best-effort session title re-assertion failed`,{sessionId:t,sessionTitle:n,error:x(e)})}}function xr(e){let t=[`--- Fro Bot Run Summary ---`,`Event: ${e.eventType}`,`Repo: ${e.repo}`,`Ref: ${e.ref}`,`Run ID: ${e.runId}`,`Cache: ${e.cacheStatus}`,`Duration: ${e.duration}s`];return e.sessionIds.length>0&&t.push(`Sessions used: ${e.sessionIds.join(`, `)}`),e.logicalKey!=null&&t.push(`Logical Thread: ${e.logicalKey}`),e.createdPRs.length>0&&t.push(`PRs created: ${e.createdPRs.join(`, `)}`),e.createdCommits.length>0&&t.push(`Commits: ${e.createdCommits.join(`, `)}`),e.tokenUsage!=null&&t.push(`Tokens: ${e.tokenUsage.input} in / ${e.tokenUsage.output} out`),t.join(` `)}async function Sr(e,t,n,r){let i=xr(t);try{let t=await n.session.prompt({path:{id:e},body:{noReply:!0,parts:[{type:`text`,text:i}]}});if(t.error!=null){r.warning(`SDK prompt writeback failed`,{sessionId:e,error:se(t.error)});return}r.info(`Session summary written via SDK`,{sessionId:e})}catch(t){r.warning(`SDK prompt writeback failed`,{sessionId:e,error:x(t)})}}const Cr=//;function wr(e){let t=Cr.exec(e),n=t?.[1],r=t?.[2];return n===void 0||r!==`completed`&&r!==`error`?null:{childSessionId:n,state:r}}function Tr(e){if(Y(e,`type`)!==`text`||Cn(e,`synthetic`)!==!0)return null;let t=Y(e,`text`);return t===null?null:wr(t)}const Er=`agent: working`,Dr=/^\d{12}$/;function Or(e){let t=e.value?.trim();return t!=null&&t.length>0?t:void 0}function kr(e,t){return H(Ve(`${e}: ${t}`))}function Ar(e){let[t,...n]=e,r=n.pop();return r===void 0?t.source:`${[t,...n].map(e=>e.source).join(`, `)} or ${r.source}`}function jr(e){let t=Or(e);return t===void 0?y(void 0):t===`aws:kms`||t===`AES256`?y(t):kr(e.source,`must be either 'aws:kms' or 'AES256'`)}function Mr(e,n){let r=jr(e.sseEncryption);if(r.success===!1)return r;let i=r.data,a=Or(e.bucket),o=e.region.map(Or).find(e=>e!==void 0),s=Or(e.endpoint),c=Or(e.expectedBucketOwner),l=Or(e.sseKmsKeyId),u=Or(e.prefix)??`fro-bot-state`;if(e.enabled){if(a===void 0)return H(Ve(`${e.bucket.source} is required`));if(o===void 0&&n.region===`required`)return H(Ve(`${Ar(e.region)} is required`));if(s!==void 0){let t=it(s,e.allowInsecureEndpoint);if(t.success===!1)return kr(e.endpoint.source,t.error.message)}let t=xe(u);if(t.success===!1)return kr(e.prefix.source,t.error.message);if(u=t.data,c!==void 0&&Dr.test(c)===!1)return kr(e.expectedBucketOwner.source,`must be a 12-digit AWS account ID`)}let d={enabled:e.enabled,bucket:a??``,region:o??``,prefix:u,allowInsecureEndpoint:e.allowInsecureEndpoint,...s===void 0?{}:{endpoint:s},...c===void 0?{}:{expectedBucketOwner:c},...i===void 0?{}:{sseEncryption:i},...l===void 0?{}:{sseKmsKeyId:l}};return e.enabled&&l!==void 0&&t(d)!==`aws:kms`?kr(e.sseKmsKeyId.source,`requires the server-side encryption mode to be aws:kms; set ${e.sseEncryption.source} to aws:kms`):y(d)}const Nr={todowrite:[`Todo`,`\x1B[33m\x1B[1m`],todoread:[`Todo`,`\x1B[33m\x1B[1m`],bash:[`Bash`,`\x1B[31m\x1B[1m`],edit:[`Edit`,`\x1B[32m\x1B[1m`],glob:[`Glob`,`\x1B[34m\x1B[1m`],grep:[`Grep`,`\x1B[34m\x1B[1m`],list:[`List`,`\x1B[34m\x1B[1m`],read:[`Read`,`\x1B[35m\x1B[1m`],write:[`Write`,`\x1B[32m\x1B[1m`],websearch:[`Search`,`\x1B[2m\x1B[1m`]},Pr=`\x1B[0m`;function Fr(){return W.env.NO_COLOR==null}function Ir(e,t){let[n,r]=Nr[e.toLowerCase()]??[e,`\x1B[36m\x1B[1m`],i=n.padEnd(10,` `);Fr()?W.stdout.write(`\n${r}|${Pr} ${i} ${Pr}${t}\n`):W.stdout.write(`\n| ${i} ${t}\n`)}function Lr(e){W.stdout.write(`\n${e}\n`)}function Rr(e){let[t,n]=e.split(`/`);if(t==null||n==null||t.length===0||n.length===0)throw Error(`Invalid repository string: ${e}`);return{owner:t,repo:n}}async function zr(e,t,n,r,i){try{let{owner:a,repo:o}=Rr(t),{data:s}=await e.rest.reactions.createForIssueComment({owner:a,repo:o,comment_id:n,content:r});return i.debug(`Created comment reaction`,{commentId:n,content:r,reactionId:s.id}),{id:s.id}}catch(e){return i.warning(`Failed to create comment reaction`,{commentId:n,content:r,error:x(e)}),null}}async function Br(e,t,n,r){try{let{owner:r,repo:i}=Rr(t),{data:a}=await e.rest.reactions.listForIssueComment({owner:r,repo:i,comment_id:n,per_page:100});return a.map(e=>({id:e.id,content:e.content,userLogin:e.user?.login??null}))}catch(e){return r.warning(`Failed to list comment reactions`,{commentId:n,error:x(e)}),[]}}async function Vr(e,t,n,r,i){try{let{owner:a,repo:o}=Rr(t);return await e.rest.reactions.deleteForIssueComment({owner:a,repo:o,comment_id:n,reaction_id:r}),i.debug(`Deleted comment reaction`,{commentId:n,reactionId:r}),!0}catch(e){return i.warning(`Failed to delete comment reaction`,{commentId:n,reactionId:r,error:x(e)}),!1}}async function Hr(e,t,n,r,i,a){let{owner:o,repo:s}=Rr(t);try{return await e.rest.issues.createLabel({owner:o,repo:s,name:n,color:r,description:i}),a.debug(`Created label`,{name:n,color:r}),!0}catch(e){return e instanceof Error&&`status`in e&&e.status===422?(a.debug(`Label already exists`,{name:n}),!0):(a.warning(`Failed to create label`,{name:n,error:x(e)}),!1)}}async function Ur(e,t,n,r,i){try{let{owner:a,repo:o}=Rr(t);return await e.rest.issues.addLabels({owner:a,repo:o,issue_number:n,labels:[...r]}),i.debug(`Added labels to issue`,{issueNumber:n,labels:r}),!0}catch(e){return i.warning(`Failed to add labels to issue`,{issueNumber:n,labels:r,error:x(e)}),!1}}function Wr(e){return e==null?{}:{request:{signal:e}}}async function Gr(e,t,n,r,i,a){try{let{owner:o,repo:s}=Rr(t);return await e.rest.issues.removeLabel({owner:o,repo:s,issue_number:n,name:r,...Wr(a)}),i.debug(`Removed label from issue`,{issueNumber:n,label:r}),`removed`}catch(e){return e instanceof Error&&`status`in e&&e.status===404?(i.debug(`Label was not present on issue`,{issueNumber:n,label:r}),`absent`):(i.warning(`Failed to remove label from issue`,{issueNumber:n,label:r,error:x(e)}),`failed`)}}async function Kr(e,t,n,r,i,a){return await Gr(e,t,n,r,i,a)!==`failed`}async function qr(e,t,n,r,i){try{let{owner:r,repo:a}=Rr(t),{data:o}=await e.rest.issues.listLabelsOnIssue({owner:r,repo:a,issue_number:n,per_page:100,...Wr(i)});return o.map(e=>e.name)}catch(e){return r.warning(`Failed to list labels on issue`,{issueNumber:n,error:x(e)}),null}}function Jr(e){if(typeof e!=`string`)return null;for(let t of e.split(`,`)){if(t.includes(`rel="last"`)===!1)continue;let e=/[?&]page=(\d+)/.exec(t);if(e?.[1]!=null)return Number(e[1])}return null}async function Yr(e,t,n,r,i,a){try{let{owner:i,repo:o}=Rr(t),s=async t=>e.rest.issues.listEvents({owner:i,repo:o,issue_number:n,per_page:100,page:t,...Wr(a)}),c=new Map(r.map(e=>[e.toLowerCase(),e])),l=/* @__PURE__ */ new Map,u=await s(1),d=Jr(u.headers.link)??1,f=d,p=d===1?u:await s(d);for(let e=0;e<3;e++){let t=/* @__PURE__ */ new Map;for(let e of p.data){let n=e.event===`labeled`?c.get(e.label?.name.toLowerCase()??``):void 0;if(n==null)continue;let r=Date.parse(e.created_at);Number.isNaN(r)||r>(t.get(n)??-1/0)&&t.set(n,r)}for(let[e,n]of t)l.has(e)===!1&&l.set(e,n);if(l.size===c.size||f<=1||e+1>=3)break;if(a?.aborted===!0)return null;--f,p=f===1?u:await s(f)}return l}catch(e){return i.warning(`Failed to read issue events`,{issueNumber:n,labels:r,error:x(e)}),null}}async function Xr(e,t,n){try{let{owner:n,repo:r}=Rr(t),{data:i}=await e.rest.repos.get({owner:n,repo:r});return i.default_branch}catch(e){return n.warning(`Failed to get default branch`,{repo:t,error:x(e)}),`main`}}const Zr={admin:`OWNER`,maintain:`MEMBER`,write:`COLLABORATOR`,triage:`COLLABORATOR`};async function Qr(e,t,n,r,i){try{let{data:a}=await e.rest.repos.getCollaboratorPermissionLevel({owner:t,repo:n,username:r}),o=Zr[a.permission]??null;return i.debug(`Resolved sender permission`,{username:r,permission:a.permission,association:o}),o}catch(e){return i.warning(`Failed to resolve sender permission`,{username:r,error:x(e)}),null}}async function $r(e,t,n){try{let{data:n}=await e.rest.users.getByUsername({username:t});return{id:n.id,login:n.login}}catch(e){return n.debug(`Failed to get user by username`,{username:t,error:x(e)}),null}}const ei={maxComments:50,maxCommits:100,maxFiles:100,maxReviews:100,maxBodyBytes:10240,maxTotalBytes:102400},ti=`…[truncated]`;function ni(e,t){if(e.length===0)return{text:``,truncated:!1};let n=new TextEncoder,r=n.encode(e);if(r.length<=t)return{text:e,truncated:!1};let i=t-n.encode(ti).length;if(i<=0)return{text:ti,truncated:!0};let a=r.slice(0,i),o=new TextDecoder(`utf-8`,{fatal:!1}).decode(a);for(;o.length>0&&o.charCodeAt(o.length-1)===65533;)a=a.slice(0,-1),o=new TextDecoder(`utf-8`,{fatal:!1}).decode(a);return{text:o+ti,truncated:!0}}async function ri(e,t,n){let r=[];for(let t=1;t<=50;t++){let n=await e(t);if(r.push(...n),n.length<100)return r}return n.warning(`REST collection pagination limit reached`,{collection:t,maxPages:50}),r}async function ii(e,t,n,r,i,a){try{let[o,s]=await Promise.all([e.rest.issues.get({owner:t,repo:n,issue_number:r}),ri(async i=>(await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:i})).data,`issue comments`,a)]),c=o.data,l=ni(c.body??``,i.maxBodyBytes),u=s.slice(Math.max(0,s.length-i.maxComments)).map(e=>({id:e.node_id??String(e.id),author:e.user?.login??null,body:e.body??``,createdAt:e.created_at,authorAssociation:e.author_association,isMinimized:!1})),d=(c.labels??[]).filter(e=>typeof e==`object`&&!!e&&`name`in e).map(e=>({name:e.name??``,color:e.color})),f=(c.assignees??[]).map(e=>({login:e?.login??``}));return{type:`issue`,number:c.number,title:c.title,body:l.text,bodyTruncated:l.truncated,state:c.state,author:c.user?.login??null,createdAt:c.created_at,labels:d,assignees:f,comments:u,commentsTruncated:s.length>u.length,totalComments:s.length}}catch(e){return a.warning(`REST issue fallback failed`,{owner:t,repo:n,number:r,error:x(e)}),null}}async function ai(e,t,n,r,i,a){try{let o=await e.rest.pulls.get({owner:t,repo:n,pull_number:r}),[s,c,l,u]=await Promise.all([ri(async i=>(await e.rest.pulls.listCommits({owner:t,repo:n,pull_number:r,per_page:100,page:i})).data,`pull request commits`,a),e.rest.pulls.listFiles({owner:t,repo:n,pull_number:r,per_page:i.maxFiles+1}),ri(async i=>(await e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:i})).data,`pull request reviews`,a),ri(async i=>(await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:i})).data,`pull request comments`,a)]),d=await e.rest.pulls.listRequestedReviewers({owner:t,repo:n,pull_number:r}).catch(e=>(a.warning(`Failed to fetch requested reviewers, defaulting to empty`,{owner:t,repo:n,number:r,error:x(e)}),{data:{users:[],teams:[]}})),f=o.data,p=ni(f.body??``,i.maxBodyBytes),m=f.base.repo?.owner.login,h=f.head.repo?.owner.login,g=h==null||m!==h,_=u.slice(Math.max(0,u.length-i.maxComments)).map(e=>({id:e.node_id??String(e.id),author:e.user?.login??null,body:e.body??``,createdAt:e.created_at,authorAssociation:e.author_association,isMinimized:!1})),v=s.slice(Math.max(0,s.length-i.maxCommits)).map(e=>({oid:e.sha,message:e.commit.message,author:e.commit.author?.name??null})),y=c.data.slice(0,i.maxFiles).map(e=>({path:e.filename,additions:e.additions,deletions:e.deletions,status:e.status})),b=l.slice(Math.max(0,l.length-i.maxReviews)).map(e=>({author:e.user?.login??null,state:e.state,body:e.body??``,createdAt:e.submitted_at??``,comments:[]})),S=(f.labels??[]).map(e=>({name:e.name??``,color:e.color})),C=(f.assignees??[]).map(e=>({login:e?.login??``})),w=(d.data.users??[]).map(e=>e.login),T=(d.data.teams??[]).map(e=>e.name);return{type:`pull_request`,number:f.number,title:f.title,body:p.text,bodyTruncated:p.truncated,state:f.state,author:f.user?.login??null,createdAt:f.created_at,baseBranch:f.base.ref,headBranch:f.head.ref,isFork:g,labels:S,assignees:C,comments:_,commentsTruncated:u.length>_.length,totalComments:u.length,commits:v,commitsTruncated:s.length>v.length,totalCommits:s.length,files:y,filesTruncated:c.data.length>y.length,totalFiles:c.data.length,reviews:b,reviewsTruncated:l.length>b.length,totalReviews:l.length,authorAssociation:f.author_association,requestedReviewers:w,requestedReviewerTeams:T}}catch(e){return a.warning(`REST pull request fallback failed`,{owner:t,repo:n,number:r,error:x(e)}),null}}async function oi(e,t,n,r,i,a){try{return await e.graphql(` query GetIssue($owner: String!, $repo: String!, $number: Int!, $maxComments: Int!) { diff --git a/dist/post.js b/dist/post.js index 0de381a4ca..8cce96955e 100644 --- a/dist/post.js +++ b/dist/post.js @@ -1 +1 @@ -import{$t as e,G as t,H as n,J as r,K as i,Kt as a,Q as o,R as s,U as c,V as l,W as u,Z as d,c as f,et as p,f as m,g as h,h as g,m as _,n as v,q as y,t as b,tt as x,u as S,w as C}from"./artifact-C0wQlV2Q.js";import*as w from"node:path";function T(t){let n=e(t);return n.length>0?n:void 0}function E(){let e=T(g.S3_ENABLED),t=T(g.S3_BUCKET),n=T(g.S3_PREFIX);if(e==null||t==null||n==null)return;let r=T(g.S3_REGION)??``,i=T(g.S3_ENDPOINT),a=T(g.S3_EXPECTED_BUCKET_OWNER),o=T(g.S3_ALLOW_INSECURE_ENDPOINT),s=T(g.S3_SSE_ENCRYPTION),c=T(g.S3_SSE_KMS_KEY_ID);return{enabled:e===`true`,bucket:t,region:r,prefix:n,endpoint:i,expectedBucketOwner:a,allowInsecureEndpoint:o===`true`,sseEncryption:s===`aws:kms`||s===`AES256`?s:void 0,sseKmsKeyId:c}}async function D(e){try{let t=T(g.LOCK_HOLDER_ID);if(t==null)return;let r=T(g.LOCK_HOLDER_JOB),i=T(g.LOCK_ACQUISITION_TOKEN),a=E();if(a?.enabled!==!0)return;let o=n(),c=await _(async e=>m({storeConfig:a,repo:o,holderId:t,...r===void 0?{}:{holderJob:r},...i===void 0?{}:{acquisitionToken:i},signal:e,logger:s({phase:`post-lock-release`})}),S,`Lock release exceeded ${S}ms`);if(c.success===!1){e.warning(`Post-action lock release failed (non-fatal)`,{error:c.error.message,repo:o,holderId:t});return}e.info(`Post-action lock release`,{outcome:c.data,repo:o,holderId:t})}catch(t){e.warning(`Post-action lock release threw (non-fatal)`,{error:a(t)})}}async function O(e={}){let t=e.logger??s({phase:`post`});try{await k(t)}finally{await D(t)}}async function k(m){let _=e(g.SHOULD_SAVE_CACHE),S=C(e(g.CACHE_SAVED)),T=e(g.SESSION_ID)||null,D=e(g.OPENCODE_VERSION)||null,O=E();if(m.debug(`Post-action state`,{shouldSaveCache:_,cacheSaved:S,sessionId:T,opencodeVersion:D,hasStoreConfig:O!=null}),_!==`true`)m.info(`Skipping post-action: event was not processed`,{shouldSaveCache:_});else{if(S===`durable`||S===`store-only`||S===`skipped`){let e=S===`durable`?`cache saved by main action`:S===`store-only`?`state persisted to the object store by main action`:`main action skipped the save`;m.info(`Skipping post-action: ${e}`,{cacheSaved:S})}else if(S===`declined-for-safety`)m.info(`Skipping post-action: honoring persistence safety decline from main action, not retrying`,{cacheSaved:S}),await h({cachePersisted:!1,storePersisted:!1,outcome:`ownership-declined`},`post-skip-safety`,m);else{let l=String(u());try{let e=f(),n=w.join(t(),`.git`,`opencode`),a={components:e,runId:u(),logger:m,storagePath:r(),authPath:i(),projectIdPath:n,opencodeVersion:D,...O==null?{}:{storeConfig:O},objectStorePublish:`withhold`},o=O?.enabled===!0;o&&m.info(`Post-action withheld the object-store session publish: the main step has released the coordination lease, so only the Actions cache is retried`);let s=await v(a);await h(s,`post-retry`,m,void 0,o?`lease-released`:void 0),s.cachePersisted===!0?m.info(`Post-action cache saved`,{sessionId:T}):s.outcome===`skipped-empty`?m.info(`Post-action: no cache content to save`,{sessionId:T}):m.info(`Post-action cache save did not persist (${s.outcome})`,{sessionId:T,storePersisted:s.storePersisted})}catch(e){m.warning(`Post-action cache save failed (non-fatal)`,{error:a(e)})}if(O?.enabled===!0)try{let t=s({phase:`post-object-store`}),r=o(O,t),i=n(),a=c();e(g.CLEANUP_METADATA_WRITTEN)!==`true`&&await x(r,O,`github`,i,l,{runId:l,timestamp:(/* @__PURE__ */ new Date()).toISOString(),cleanupSkipped:!0,runAttempt:a},t),await p(r,O,`github`,i,l,y(),t)}catch(e){m.warning(`Post-action object store sync failed (non-fatal)`,{error:a(e)})}}if(d()&&e(g.ARTIFACT_UPLOADED)!==`true`)try{let e=s({phase:`post-artifact-upload`});await b({logPath:y(),runId:u(),runAttempt:c(),invocationIdentity:l(),logger:e})}catch(e){m.warning(`Post-action artifact upload failed (non-fatal)`,{error:a(e)})}}}await O();export{}; \ No newline at end of file +import{$t as e,G as t,H as n,J as r,K as i,Kt as a,Q as o,R as s,U as c,V as l,W as u,Z as d,c as f,et as p,f as m,g as h,h as g,m as _,n as v,q as y,t as b,tt as x,u as S,w as C}from"./artifact-_KnC6wDo.js";import*as w from"node:path";function T(t){let n=e(t);return n.length>0?n:void 0}function E(){let e=T(g.S3_ENABLED),t=T(g.S3_BUCKET),n=T(g.S3_PREFIX);if(e==null||t==null||n==null)return;let r=T(g.S3_REGION)??``,i=T(g.S3_ENDPOINT),a=T(g.S3_EXPECTED_BUCKET_OWNER),o=T(g.S3_ALLOW_INSECURE_ENDPOINT),s=T(g.S3_SSE_ENCRYPTION),c=T(g.S3_SSE_KMS_KEY_ID);return{enabled:e===`true`,bucket:t,region:r,prefix:n,endpoint:i,expectedBucketOwner:a,allowInsecureEndpoint:o===`true`,sseEncryption:s===`aws:kms`||s===`AES256`?s:void 0,sseKmsKeyId:c}}async function D(e){try{let t=T(g.LOCK_HOLDER_ID);if(t==null)return;let r=T(g.LOCK_HOLDER_JOB),i=T(g.LOCK_ACQUISITION_TOKEN),a=E();if(a?.enabled!==!0)return;let o=n(),c=await _(async e=>m({storeConfig:a,repo:o,holderId:t,...r===void 0?{}:{holderJob:r},...i===void 0?{}:{acquisitionToken:i},signal:e,logger:s({phase:`post-lock-release`})}),S,`Lock release exceeded ${S}ms`);if(c.success===!1){e.warning(`Post-action lock release failed (non-fatal)`,{error:c.error.message,repo:o,holderId:t});return}e.info(`Post-action lock release`,{outcome:c.data,repo:o,holderId:t})}catch(t){e.warning(`Post-action lock release threw (non-fatal)`,{error:a(t)})}}async function O(e={}){let t=e.logger??s({phase:`post`});try{await k(t)}finally{await D(t)}}async function k(m){let _=e(g.SHOULD_SAVE_CACHE),S=C(e(g.CACHE_SAVED)),T=e(g.SESSION_ID)||null,D=e(g.OPENCODE_VERSION)||null,O=E();if(m.debug(`Post-action state`,{shouldSaveCache:_,cacheSaved:S,sessionId:T,opencodeVersion:D,hasStoreConfig:O!=null}),_!==`true`)m.info(`Skipping post-action: event was not processed`,{shouldSaveCache:_});else{if(S===`durable`||S===`store-only`||S===`skipped`){let e=S===`durable`?`cache saved by main action`:S===`store-only`?`state persisted to the object store by main action`:`main action skipped the save`;m.info(`Skipping post-action: ${e}`,{cacheSaved:S})}else if(S===`declined-for-safety`)m.info(`Skipping post-action: honoring persistence safety decline from main action, not retrying`,{cacheSaved:S}),await h({cachePersisted:!1,storePersisted:!1,outcome:`ownership-declined`},`post-skip-safety`,m);else{let l=String(u());try{let e=f(),n=w.join(t(),`.git`,`opencode`),a={components:e,runId:u(),logger:m,storagePath:r(),authPath:i(),projectIdPath:n,opencodeVersion:D,...O==null?{}:{storeConfig:O},objectStorePublish:`withhold`},o=O?.enabled===!0;o&&m.info(`Post-action withheld the object-store session publish: the main step has released the coordination lease, so only the Actions cache is retried`);let s=await v(a);await h(s,`post-retry`,m,void 0,o?`lease-released`:void 0),s.cachePersisted===!0?m.info(`Post-action cache saved`,{sessionId:T}):s.outcome===`skipped-empty`?m.info(`Post-action: no cache content to save`,{sessionId:T}):m.info(`Post-action cache save did not persist (${s.outcome})`,{sessionId:T,storePersisted:s.storePersisted})}catch(e){m.warning(`Post-action cache save failed (non-fatal)`,{error:a(e)})}if(O?.enabled===!0)try{let t=s({phase:`post-object-store`}),r=o(O,t),i=n(),a=c();e(g.CLEANUP_METADATA_WRITTEN)!==`true`&&await x(r,O,`github`,i,l,{runId:l,timestamp:(/* @__PURE__ */ new Date()).toISOString(),cleanupSkipped:!0,runAttempt:a},t),await p(r,O,`github`,i,l,y(),t)}catch(e){m.warning(`Post-action object store sync failed (non-fatal)`,{error:a(e)})}}if(d()&&e(g.ARTIFACT_UPLOADED)!==`true`)try{let e=s({phase:`post-artifact-upload`});await b({logPath:y(),runId:u(),runAttempt:c(),invocationIdentity:l(),logger:e})}catch(e){m.warning(`Post-action artifact upload failed (non-fatal)`,{error:a(e)})}}}await O();export{}; \ No newline at end of file diff --git a/packages/runtime/src/shared/opencode-v2-pin.json b/packages/runtime/src/shared/opencode-v2-pin.json index 50f834c3de..26c043f61a 100644 --- a/packages/runtime/src/shared/opencode-v2-pin.json +++ b/packages/runtime/src/shared/opencode-v2-pin.json @@ -1,11 +1,11 @@ { - "version": "2.2.0", + "version": "2.2.5", "assets": { - "opencode-linux-x64.tar.gz": "6d597970a8cc448f1b9a9f645532584b339dd3ab9583bb5f063f13d83e54768f", - "opencode-linux-arm64.tar.gz": "1f1ce0fc07b9245a815ffa9d652dbb80e6b0f07e5bf74ea87d2b1c0339fbac52", - "opencode-darwin-x64.zip": "cc191a1cec9b9cd0192d78dc066bbf48730639131422fa54c87c485a821ba1d5", - "opencode-darwin-arm64.zip": "c71b1cd96541539ad38e2a75377d2f43d2a27567289a14371a182e9a0800db3d", - "opencode-linux-x64-musl.tar.gz": "41779c8bb115189a2949f5638e7007c3e75a137ec72e9219dd26ae812e561623", - "opencode-linux-arm64-musl.tar.gz": "d5aa42f33abc7af1075854e9be94224219a37d98c28289cacc5544cc88f1af82" + "opencode-linux-x64.tar.gz": "09f44302c10fd036912f59c81fd1aef5df45dd06f649197f9dfc9bbe2a79614e", + "opencode-linux-arm64.tar.gz": "5a528f42caf576c6cdece6a191eb273d3db54effa5518e0402684d8f8026aeb6", + "opencode-darwin-x64.zip": "4d4419022e6ffbd48afc97c5101bdf001d38b0499f516169b9a80a87a340fd56", + "opencode-darwin-arm64.zip": "25ba9908979fa7d764792c82589b4b5768ab1511154e0317d98aa77d216ce767", + "opencode-linux-x64-musl.tar.gz": "889389e99ffa39fa41d512b2c9c15316522d97398fb912503ef667f80e22a827", + "opencode-linux-arm64-musl.tar.gz": "bbf927e3f7a92040f25fd78436c251f41deb25cefac1c906e79c01aa572bf73b" } }