quantex-cli 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/{agent-inspection-wRTbdD0j.mjs → agent-inspection-PCTn6Nc6.mjs} +1 -1
  2. package/dist/{agent-installation-BkHxGD5U.mjs → agent-installation-Dp03CAn2.mjs} +1 -1
  3. package/dist/{agents-QYkiyHCD.mjs → agents-BrJ8oEkB.mjs} +1 -1
  4. package/dist/capabilities-DywtqYKA.mjs +1 -0
  5. package/dist/{capabilities-Bh_eBfhw.mjs → capabilities-hjF4kpxs.mjs} +1 -1
  6. package/dist/cli.mjs +1 -1
  7. package/dist/color-BGZ_5A6s.mjs +9 -0
  8. package/dist/{commands-nkGABksp.mjs → commands-DjMechiz.mjs} +1 -1
  9. package/dist/commands-J8gAQ8RH.mjs +1 -0
  10. package/dist/{config-EvqcZt-0.mjs → config-Cs1_DPwP.mjs} +1 -1
  11. package/dist/{doctor-EOCE9dy3.mjs → doctor-D8y0PQ7s.mjs} +2 -2
  12. package/dist/ensure-CGipmEmc.mjs +1 -0
  13. package/dist/{ensure-D25oxWUc.mjs → ensure-NxyYe2vm.mjs} +1 -1
  14. package/dist/index.mjs +2 -2
  15. package/dist/{info-BcXErzU4.mjs → info-C4-95Kjx.mjs} +1 -1
  16. package/dist/{inspect-twIhr3au.mjs → inspect-Bzu6BDS6.mjs} +1 -1
  17. package/dist/inspect-FAr4x7oh.mjs +1 -0
  18. package/dist/{install-DQDkbPV-.mjs → install-CGHSS_yl.mjs} +1 -1
  19. package/dist/{lifecycle-observations-DulNFMcZ.mjs → lifecycle-observations-C1OLPUAV.mjs} +1 -1
  20. package/dist/lifecycle-policy-emF59xDd.mjs +1 -0
  21. package/dist/{list-DTqeDd5E.mjs → list-BwTYgNzc.mjs} +1 -1
  22. package/dist/provider-evidence-D7aplCd6.mjs +1 -0
  23. package/dist/{provider-observations-DWwL6PR0.mjs → provider-observations-BG3wn0dF.mjs} +1 -1
  24. package/dist/{resolve-BOxNGmVh.mjs → resolve-D-NvixQn.mjs} +1 -1
  25. package/dist/resolve-DLrskjPy.mjs +1 -0
  26. package/dist/{schema-Bl1ZPNI9.mjs → schema-DuUjt16u.mjs} +1 -1
  27. package/dist/schema-xUwSt_FZ.mjs +1 -0
  28. package/dist/{uninstall-DV8hdNkb.mjs → uninstall-DLAzYf0i.mjs} +1 -1
  29. package/dist/update-l5KnwT41.mjs +1 -0
  30. package/dist/{update-planner-B74AB4_X.mjs → update-planner-9xPfJpjp.mjs} +1 -1
  31. package/dist/upgrade-DP2QHsnb.mjs +1 -0
  32. package/dist/{user-output-CgBsxSsM.mjs → user-output-C1JWMNEt.mjs} +1 -1
  33. package/dist/{version-cache-pl3cl25u.mjs → version-cache-D0_L2X5L.mjs} +1 -1
  34. package/package.json +1 -1
  35. package/dist/capabilities-ch-hI24w.mjs +0 -1
  36. package/dist/color-nTiVIiHx.mjs +0 -8
  37. package/dist/commands-CYTtSxZf.mjs +0 -1
  38. package/dist/ensure-dKuczClK.mjs +0 -1
  39. package/dist/inspect-OWIjKOVn.mjs +0 -1
  40. package/dist/lifecycle-policy-a_ing0Qc.mjs +0 -1
  41. package/dist/provider-evidence-BjjRgpNG.mjs +0 -1
  42. package/dist/resolve-CTU1uwe8.mjs +0 -1
  43. package/dist/schema-zT2KCR-F.mjs +0 -1
  44. package/dist/update-BJCwO1ja.mjs +0 -1
  45. package/dist/upgrade-81zRKaAq.mjs +0 -1
@@ -1,8 +0,0 @@
1
- import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import r from"cross-spawn";import{spawn as i}from"node:child_process";import{accessSync as a,constants as o,existsSync as s,mkdirSync as c,writeFileSync as l}from"node:fs";import{basename as u,delimiter as d,dirname as f,join as p,win32 as m}from"node:path";import{text as h}from"node:stream/consumers";import{chmod as ee,mkdir as g,mkdtemp as te,readFile as _,realpath as ne,rename as re,rm as v,stat as ie,writeFile as ae}from"node:fs/promises";import{homedir as oe}from"node:os";import{fileURLToPath as se}from"node:url";import{Buffer as ce}from"node:buffer";import le from"picocolors";function ue(e){let t=e.trim().match(/^(\d+)(ms|[smh])?$/);if(!t)return;let n=Number.parseInt(t[1],10),r=t[2]??`ms`;if(Number.isFinite(n))switch(r){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*60*1e3;case`h`:return n*60*60*1e3;default:return}}let y,de=new Set;function b(){return y??=ye(),y}function fe(e){de=new Set,y={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function pe(){y=void 0,de=new Set}function me(e={}){let r=n.stdin.isTTY!==!1,i=n.stdout.isTTY!==!1,a=!r||!i,o=e.json||e.output===`json`?`json`:e.output===`ndjson`?`ndjson`:e.output===`human`?`human`:a?`json`:`human`,s=e.timeout===void 0?void 0:ue(e.timeout),c=be(e.color),l=xe(e.logLevel);if(e.timeout!==void 0&&s===void 0)throw Error(`Invalid timeout value: ${e.timeout}`);if(e.refresh&&e.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:e.yes,cacheMode:e.noCache?`no-cache`:e.refresh?`refresh`:`default`,cancelled:!1,colorMode:c,dryRun:e.dryRun,idempotencyKey:e.idempotencyKey,interactive:!e.nonInteractive&&!a&&r&&i,logLevel:l,outputMode:o,quiet:e.quiet,runId:e.runId??n.env.QUANTEX_RUN_ID??t(),timeoutMs:s}}function he(){y&&(y.cancelled=!0)}async function ge(){he();let e=[...de];de.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function _e(e){return de.add(e),()=>{de.delete(e)}}function ve(e){let t=b();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function ye(){return me()}function be(e){if(e===void 0||e===`auto`)return`auto`;if(e===`always`)return`always`;if(e===`never`)return`never`;throw Error(`Invalid color mode: ${e}`)}function xe(e){if(e===void 0||e===`info`)return`info`;if(e===`silent`||e===`error`||e===`warn`||e===`debug`)return e;throw Error(`Invalid log level: ${e}`)}var x=class extends Error{kind;reason;timeoutMs;constructor(e){super(e.kind===`timed-out`?`Process timed out after ${e.timeoutMs}ms.`:`Process was cancelled.`),this.name=`ProcessInterruptionError`,this.kind=e.kind,e.kind===`timed-out`?this.timeoutMs=e.timeoutMs:this.reason=e.reason}};function S(e){return e instanceof x}function Se(e,t={}){if(b().outputMode===`human`){let n=C(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:_e(()=>Ne(n)),outputDrained:Promise.resolve(),proc:n}}let n=C(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:_e(()=>Ne(n)),outputDrained:Promise.all([De(n.stdout),De(n.stderr)]).then(()=>void 0),proc:n}}async function Ce(e){let t=b();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function we(e,t){let n,r=()=>n??=Pe(e.proc,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Fe(e.proc)});if(t.signal.aborted)throw await r(),e.cleanup(),i?.(),new x({kind:`cancelled`,reason:Ee(t.signal)});let a,o,s,c=!1,l=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>n(e===`timed-out`?new x({kind:e,timeoutMs:t.timeoutMs}):new x({kind:e,reason:Ee(t.signal)}))))},o=()=>s(`cancelled`),t.signal.addEventListener(`abort`,o,{once:!0}),t.timeoutMs!==void 0&&(a=setTimeout(()=>s(`timed-out`),t.timeoutMs))});try{let t=Promise.all([e.proc.exited,e.outputDrained]).then(([e])=>c?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.(),e.cleanup()}}function C(e,t={}){let[a,...o]=e,s=a?Te(a,t):void 0;if(!s)throw Error(`spawnCommand requires a non-empty command array.`);let c=Ae(s),l=t.detached||c?void 0:je();if(l)return Me([s,...o],{...t,env:t.env??n.env},l);let u=(c?r:i)(s,o,{...t,env:t.env??n.env});return{get exitCode(){return u.exitCode},pid:u.pid,stderr:u.stderr,stdout:u.stdout,exited:Oe(u),kill:u.kill.bind(u),unref:()=>u.unref()}}function Te(e,t){if(!t.detached||n.platform===`win32`||e.includes(`/`))return e;for(let t of(n.env.PATH??``).split(d)){let n=p(t,e);try{return a(n,o.X_OK),n}catch{}}return e}async function w(e){let[t,n,r]=await Promise.all([ke(e.stdout),ke(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function T(e,t){let n,r=()=>n??=Pe(e,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Fe(e)});if(t.signal.aborted)throw await r(),i?.(),new x({kind:`cancelled`,reason:Ee(t.signal)});let a,o,s,c=!1,l=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>setTimeout(()=>n(e===`timed-out`?new x({kind:e,timeoutMs:t.timeoutMs}):new x({kind:e,reason:Ee(t.signal)})),10)))},o=()=>s(`cancelled`),t.signal.addEventListener(`abort`,o,{once:!0}),t.timeoutMs!==void 0&&(a=setTimeout(()=>s(`timed-out`),t.timeoutMs))});try{let t=w(e).then(e=>c?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.()}}function Ee(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}async function De(e){if(!e)return;let t=await ke(e);t&&n.stderr.write(t)}async function Oe(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function ke(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():h(e):``}function Ae(e,t=n.platform){return t===`win32`?/\.(?:bat|cmd)$/i.test(e)?!0:e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e):!1}function je(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Me(e,t,n){let r=n([...e],t);return{get exitCode(){return r.exitCode},pid:r.pid,stderr:r.stderr,stdout:r.stdout,exited:r.exited.then(()=>typeof r.exitCode==`number`?r.exitCode:1),kill:e=>r.kill?.(e)??!1,unref:()=>r.unref?.()}}async function Ne(e){await Pe(e)}async function Pe(e,t){n.platform===`win32`&&e.pid!==void 0&&await Re(Le(e.pid),2e3),Ie(e,`SIGTERM`);let r=t===void 0?2e3:Math.max(10,Math.min(t,250));if(n.platform!==`win32`&&e.pid!==void 0)await new Promise(e=>setTimeout(e,r));else{let t=e.exited.then(()=>!0).catch(()=>!0);if(await Promise.race([t,new Promise(e=>setTimeout(()=>e(!1),r))]))return}Ie(e,`SIGKILL`),await Re(e.exited.then(()=>void 0).catch(()=>void 0),250)}async function Fe(e){n.platform===`win32`&&e.pid!==void 0&&await Re(Le(e.pid),250),Ie(e,`SIGKILL`),await Re(e.exited.then(()=>void 0).catch(()=>void 0),250)}function Ie(e,t){if(n.platform!==`win32`&&e.pid!==void 0)try{n.kill(-e.pid,t);return}catch{}try{e.kill?.(t)}catch{}}async function Le(e,t=i){await new Promise(n=>{let r=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});r.once(`error`,()=>n()),r.once(`close`,()=>n())})}async function Re(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function ze(){let e=b(),t=new AbortController,n=new Set;e.cancelled&&t.abort(`cancelled`);let r=_e(async()=>{t.abort(`cancelled`);let e=[...n];await Ve(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.cleanup()))),500)||await Ve(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.force?.()))),250)});return{context:{registerCleanup(e){return n.add(e),()=>n.delete(e)},signal:t.signal,timeoutMs:e.timeoutMs},dispose(){r(),n.clear()},async run(e){if(t.signal.aborted)throw Be(t.signal);let n,r=new Promise((e,r)=>{n=()=>r(Be(t.signal)),t.signal.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([Promise.resolve().then(e),r])}finally{t.signal.removeEventListener(`abort`,n)}}}}function Be(e){return new x({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)})}async function Ve(e,t){let n;try{return await Promise.race([e.then(()=>!0),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}async function E(e,t,n){try{let r=await we(Se(e,{detached:process.platform!==`win32`}),t);return r===0?{kind:`success`,value:void 0}:{command:e,exitCode:r,kind:`failed`,reason:`${n} with exit code ${r}`,retryable:!1}}catch(r){return S(r)?r.kind===`timed-out`?{kind:`timed-out`,timeoutMs:r.timeoutMs??t.timeoutMs??0}:{kind:`cancelled`,...r.reason?{reason:r.reason}:{}}:{command:e,kind:`failed`,reason:`${n}: ${Ue(r)}`,retryable:!1}}}async function D(e,t,n){for(let r of e){let e=await E(r,t,n);if(e.kind!==`success`)return e}return{kind:`success`,value:void 0}}async function He(e){let t=ze();try{return(await e(t.context)).kind===`success`}finally{t.dispose()}}function Ue(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}function We(e){return e===`cask`?[`--cask`]:[]}function Ge(e,t,n,r){return E([`brew`,e,...We(n),t],r,`brew ${e} failed`)}function Ke(e,t,n){return Ge(`install`,e,t,n)}function qe(e,t,n){return Ge(`upgrade`,e,t,n)}function Je(e,t){return D(e.map(e=>[`brew`,`upgrade`,...We(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function Ye(e,t,n){return Ge(`uninstall`,e,t,n)}function Xe(){switch(n.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function O(e,t){try{let r=C([e,`--version`],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i}=t?await T(r,t):await w(r);return i===0}catch(e){if(S(e))throw e;return!1}}async function Ze(e){return O(`bun`,e)}async function Qe(e){return O(`npm`,e)}async function $e(e){return O(`brew`,e)}async function et(e){return O(`deno`,e)}async function tt(e){return O(`cargo`,e)}async function nt(e){return O(`mise`,e)}async function rt(e){return O(`winget`,e)}async function it(e){return await O(`pip`,e)||await O(`pip3`,e)?!0:ot(e)}async function at(e){return O(`uv`,e)}async function ot(e){try{let t=C([`python`,`-m`,`pip`,`--version`],{detached:e!==void 0&&n.platform!==`win32`}),{exitCode:r}=e?await T(t,e):await w(t);if(r===0)return!0}catch(e){if(S(e))throw e}try{let t=C([`python3`,`-m`,`pip`,`--version`],{detached:e!==void 0&&n.platform!==`win32`}),{exitCode:r}=e?await T(t,e):await w(t);return r===0}catch(e){if(S(e))throw e;return!1}}async function st(e,t){try{let r=C([n.platform===`win32`?`where`:`which`,e],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i}=t?await T(r,t):await w(r);return i===0}catch(e){if(S(e))throw e;return!1}}function k(e){return e.kind===`cancelled`||e.kind===`timed-out`}function A(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function j(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:lt(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:lt(e.signal)}),e.signal.addEventListener(`abort`,r,{once:!0})}),a=[Promise.resolve().then(t).then(e=>({kind:`resolved`,value:e})).catch(e=>({kind:`rejected`,reason:ut(e)})),i];e.timeoutMs!==void 0&&a.push(new Promise(t=>{n=setTimeout(()=>t({kind:`timed-out`,timeoutMs:e.timeoutMs}),e.timeoutMs)}));let o=await Promise.race(a);return n&&clearTimeout(n),e.signal.removeEventListener(`abort`,r),o}async function ct(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:lt(e.signal)};try{return{kind:`resolved`,value:await t()}}catch(e){return S(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:{kind:`rejected`,reason:ut(e)}}}function lt(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}function ut(e){return e instanceof Error?e.message:String(e)}function M(e,t){let n=async n=>{let r=await dt(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(k(r))return A(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[vt(e.id,`${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return N({evidence:[yt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await dt(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&k(i)?A(i):N({evidence:[yt(e.id,n.target.id,`present`)],kind:`present`,target:n.target,...i?.kind===`resolved`&&i.value?{version:i.value}:{}})};return{availability:async n=>{let r=await dt(n,t.contextualObservation,()=>t.isAvailable(n));return k(r)?A(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:N({executable:e.executable})},id:e.id,install:n=>pt(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>pt(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>pt(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>mt(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?N({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):N({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function dt(e,t,n){return t?ct(e,n):j(e,n)}function ft(e,t,n){return t?ct(e,n):j(e,n)}async function pt(e,t,n,r,i,a){let o=await ft(t.context,i,()=>a(t.target,t.context));if(k(o))return A(o);let s=_t(e.id,r);return o.kind===`rejected`?gt(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?N({evidence:s,target:t.target}):ht(o.value,e,t.target.id,n,r,s)}async function mt(e,t,n){let r=e.commands.updateMany(n.targets),i=await ft(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(k(i))return A(i);let a=_t(e.id,r);return i.kind===`rejected`?gt(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?N(n.targets.map(e=>({evidence:a,target:e}))):ht(i.value,e,void 0,`update`,r,a)}function ht(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=gt(t,n,r,i,a);return{...o,...e,command:e.command??i,evidence:e.evidence??a,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function gt(e,t,n,r,i,a){return{command:r,evidence:i,kind:`failed`,reason:`${e.id} ${n} failed${t?` for ${t}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function _t(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function vt(e,t){return{kind:`provider`,value:`${e}:${t}`}}function yt(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function N(e){return{kind:`success`,value:e}}const bt={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>Ke(e.id,e.kind===`cask`?`cask`:`package`,t),isAvailable:e=>$e(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Ye(e.id,e.kind===`cask`?`cask`:`package`,t),update:(e,t)=>qe(e.id,e.kind===`cask`?`cask`:`package`,t),updateMany:(e,t)=>Je(e.map(e=>({packageName:e.id,packageTargetKind:e.kind===`cask`?`cask`:`package`})),t)};function xt(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function St(e=bt){return M({commands:{install:e=>xt(`install`,e),uninstall:e=>xt(`uninstall`,e),update:e=>xt(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>xt(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const Ct=St(),wt=`https://registry.npmjs.org`;function P(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function Tt(e,t,n){return`${P(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async function Et(e,t,n){return He(r=>Dt(e,t,n,r))}function Dt(e,t,n,r){let i=t?`${e}@${t}`:e,a=P(n);return Rt([`bun`,`add`,`-g`,...a?[`--registry`,a]:[],i],[e],r)}function Ot(e,t,n,r,i){let a=n===`latest`?e:`${e}@${n}`,o=P(r);return Rt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...o?[`--registry`,o]:[],a],[e],i)}function kt(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):Rt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function At(e,t){return E([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`)}const jt={readGlobalManifest:()=>_(p(n.env.BUN_INSTALL_GLOBAL_DIR??p(oe(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function Mt(e,t=jt,r){try{let i=C([`bun`,`pm`,`-g`,`ls`],{detached:r!==void 0&&n.platform!==`win32`,stdio:Ut()}),{stderr:a,stdout:o}=r?await T(i,r):await w(i);if(!o.trim()){if(a.includes(`No package.json was found for directory`))return{presence:`absent`};if(a.includes(`Lockfile not found`))try{return{presence:It(await t.readGlobalManifest(),e)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let s=Lt(o,e);return s?{presence:`present`,version:s}:Ft(o,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Nt(e,t=jt,n){return(await Mt(e,t,n)).presence}async function Pt(e,t){return(await Mt(e,jt,t)).version}function Ft(e,t){let n=`${t}@`;return e.split(`
2
- `).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function It(e,t){let n=JSON.parse(e);if(typeof n!=`object`||!n||Array.isArray(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(typeof r!=`object`||!r||Array.isArray(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}function Lt(e,t){let n=`${t}@`;for(let t of e.split(`
3
- `)){let e=t.trim().split(/\s+/).at(-1);if(!e?.startsWith(n))continue;let r=e.slice(n.length);if(r)return r}}async function Rt(e,t,n){let r=await E(e,n,`bun mutation failed`);if(r.kind!==`success`)return r;let i=await Bt(t,n);return i.kind!==`success`&&e[1]===`add`&&await zt(t,n),i}async function zt(e,t){for(let n of new Set(e))await E([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function Bt(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await Vt(t);if(r.kind!==`success`)return r;let i=Ht(r.value),a=n.filter(e=>i.has(e));return a.length===0?{kind:`success`,value:void 0}:E([`bun`,`pm`,`-g`,`trust`,...a],t,`bun trust failed`)}async function Vt(e){let t=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:r,stdout:i}=await T(C(t,{detached:n.platform!==`win32`,stdio:Ut()}),e);return r===0?{kind:`success`,value:i}:{command:t,exitCode:r,kind:`failed`,reason:`bun trust inspection failed with exit code ${r}`,retryable:!1}}catch(n){return S(n)?n.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...n.reason?{reason:n.reason}:{}}:{command:t,kind:`failed`,reason:n instanceof Error&&n.message.trim()?n.message:`bun trust inspection failed`,retryable:!1}}}function Ht(e){let t=new Set;for(let n of e.split(`
4
- `)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function Ut(){return[`ignore`,`pipe`,`pipe`]}const Wt={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function F(){return p(n.env.HOME||n.env.USERPROFILE||oe(),`.quantex`)}function Gt(){return p(F(),`config.json`)}async function Kt(){let e={...Wt,...await Xt()};return{...e,defaultPackageManager:qt(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:Zt(e.networkRetries,2),networkTimeoutMs:Zt(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?P(e.selfUpdateRegistry):void 0,versionCacheTtlHours:Zt(e.versionCacheTtlHours,6)}}function qt(e){return e===`bun`||e===`mise`||e===`npm`}function Jt(e){return e===`latest-major`||e===`respect-semver`}async function Yt(e){await g(F(),{recursive:!0}),await ae(Gt(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Xt(){try{let e=await _(Gt(),`utf8`),t=JSON.parse(e);return Qt(t)?t:{}}catch{return{}}}function Zt(e,t){if(typeof e==`number`&&Number.isInteger(e)&&e>0)return e;if(typeof e==`string`){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>0)return t}return t}function Qt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var $t=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function en(e,t,n={}){let r=await tn(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function tn(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;I(i);let a=await Kt();I(i);let o=a.versionCacheTtlHours*60*60*1e3,s=b().cacheMode,c=s===`no-cache`?{entries:{}}:await ln();I(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return I(i),fn(l,o),l.body;let d=await nn(e,{context:r.context,headers:s!==`no-cache`&&l?.etag?{"If-None-Match":l.etag}:void 0,mode:n,networkPort:r.networkPort,retries:a.networkRetries,signal:i,timeoutMs:a.networkTimeoutMs});if(I(i),!d)return l&&(I(i),fn(l,o)),l?.body;if(d.status===304&&l)return I(i),c.entries[t]={...l,expiresAt:u+o,fetchedAt:u},s!==`no-cache`&&(I(i),await un(c)),I(i),pn(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(I(i),fn(l,o)),l?.body;I(i);let f={body:d.body,etag:d.etag,expiresAt:u+o,fetchedAt:u};return s!==`no-cache`&&(c.entries[t]=f,I(i),await un(c)),I(i),pn(u,u+o),d.body}async function nn(e,t){let n=t.context?.timeoutMs===void 0?void 0:Date.now()+t.context.timeoutMs;for(let r=0;r<=t.retries;r++)try{return await rn(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof x)throw e;if(r===t.retries)return}}async function rn(e,t){let n=t.networkPort;if(n)return an(e,{...t,networkPort:n});let r=new AbortController,i,a,o,s,c,l=new Promise((e,t)=>s=t),u=()=>c??=sn(Promise.resolve().then(async()=>{i?await i.cancel(o):a?.body&&!a.body.locked&&await a.body.cancel(o)}).then(()=>void 0).catch(()=>void 0),250),d=e=>{let n=e===`cancelled`?cn(t.signal):e===`invocation-timeout`?new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new $t(t.timeoutMs),i=o===void 0;return(i||o instanceof $t&&n instanceof x)&&(o=n),i&&(r.abort(o),u().finally(()=>s(o))),u()},f=()=>void d(`cancelled`);t.signal?.addEventListener(`abort`,f,{once:!0});let p=t.context?.registerCleanup?.({cleanup:()=>d(`cancelled`),force:u}),m=Date.now()+t.timeoutMs,h=setTimeout(()=>void d(`network-timeout`),t.timeoutMs),ee=t.invocationDeadline===void 0?void 0:setTimeout(()=>void d(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),g=async()=>{if(o||(t.signal?.aborted?await d(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await d(`invocation-timeout`):Date.now()>=m&&await d(`network-timeout`),o))throw o};try{t.signal?.aborted&&await d(`cancelled`);let n=(async()=>{a=await fetch(e,{headers:t.headers,signal:r.signal}),await g();let n=a.status,o=a.headers?.get?.(`etag`)??void 0;if(!a.ok)return await u(),{etag:o,ok:!1,status:n,valid:!0};let s=await on(a,e=>i=e);await g();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await g(),{body:s,etag:o,ok:!0,status:n,valid:c}})();try{return await Promise.race([n,l])}catch(e){throw o?(await u(),o):e}}finally{clearTimeout(h),ee&&clearTimeout(ee),t.signal?.removeEventListener(`abort`,f),p?.()}}async function an(e,t){if(t.signal?.aborted)throw cn(t.signal);let n=Date.now();if(t.invocationDeadline!==void 0&&t.invocationDeadline<=n)throw new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0});let r=t.invocationDeadline===void 0?t.timeoutMs:Math.max(1,Math.min(t.timeoutMs,t.invocationDeadline-n)),i=t.signal??new AbortController().signal,a=await t.networkPort.request({headers:t.headers,signal:i,timeoutMs:r,url:e});if(a.kind===`failure`)throw t.signal?.aborted||a.error.kind===`cancelled`?cn(t.signal):a.error.kind===`timed-out`?t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new $t(t.timeoutMs):Error(a.error.message);let o=new TextDecoder().decode(a.value.body),s=!0;if(t.mode===`json`&&a.value.status>=200&&a.value.status<300)try{JSON.parse(o)}catch{s=!1}return{body:a.value.status>=200&&a.value.status<300?o:void 0,etag:a.value.headers.etag,ok:a.value.status>=200&&a.value.status<300,status:a.value.status,valid:s}}async function on(e,t){if(!e.body)return``;let n=e.body.getReader();t(n);let r=new TextDecoder,i=``;for(;;){let e=await n.read();if(e.done)break;i+=r.decode(e.value,{stream:!0})}return i+r.decode()}async function sn(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function I(e){if(e?.aborted)throw cn(e)}function cn(e){return e?.reason instanceof x?e.reason:new x({kind:`cancelled`,reason:typeof e?.reason==`string`?e.reason:e?.reason instanceof Error?e.reason.message:e?.reason===void 0?void 0:String(e.reason)})}async function ln(){try{return JSON.parse(await _(dn(),`utf8`))}catch{return{entries:{}}}}async function un(e){await g(p(F(),`cache`),{recursive:!0}),await ae(dn(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function dn(){return p(F(),`cache`,`versions.json`)}function fn(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);ve({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function pn(e,t){ve({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const mn=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function hn(e,t){if(t)return t(e);let n=e.trim().split(`
5
- `)[0],r=n.match(mn);return r?r[1]:n||void 0}function gn(e,t){let n=Cn(e),r=Cn(t);if(!(!n||!r)){for(let e=0;e<3;e+=1){let t=n.core[e],i=r.core[e];if(t!==i)return t>i?1:-1}return wn(n.prerelease,r.prerelease)}}function _n(e,t){return gn(e,t)===1}async function vn(e,t,r){let i=t?.command??[e,`--version`];try{let e=C(i,{detached:r!==void 0&&n.platform!==`win32`}),{exitCode:a,stdout:o}=r?await T(e,r):await w(e);return a===0?hn(o,t?.parser):void 0}catch(e){if(S(e))throw e;return}}async function yn(e,t=`latest`,n={}){try{let r=P(n.registry)??`https://registry.npmjs.org`,i=await en(Tt(e,t,r),`npm:${r}:${e}:${t}`,{context:n.context,networkPort:n.networkPort});if(n.context?.signal.aborted)throw Sn(n.context.signal);return i?.version}catch(e){if(S(e))throw e;if(n.context?.signal.aborted)throw Sn(n.context.signal);return}}async function bn(e,t){try{let r=C([n.platform===`win32`?`where`:`which`,e],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i,stdout:a}=t?await T(r,t):await w(r);return i===0?a.trim().split(`
6
- `)[0]:void 0}catch(e){if(S(e))throw e;return}}async function xn(e,t){if(e){if(t?.signal.aborted)throw Sn(t.signal);try{let n=await ne(e);if(t?.signal.aborted)throw Sn(t.signal);return n}catch{if(t?.signal.aborted)throw Sn(t.signal);return e}}}function Sn(e){return new x({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}function Cn(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/i);if(t)return{core:[BigInt(t[1]),BigInt(t[2]),BigInt(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function wn(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;if(n===i)continue;let a=/^\d+$/.test(n),o=/^\d+$/.test(i);if(a&&o){let e=BigInt(n),t=BigInt(i);if(e===t)continue;return e>t?1:-1}return a?-1:o||n>i?1:-1}return 0}function Tn(e,t){let n=L(`provider`,e.id),r=async n=>{let r=await En(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(k(r))return A(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[L(`provider`,`${e.id}:${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return R({evidence:[L(`package`,`${e.id}:${n.target.id}:absent`)],kind:`absent`,target:n.target});let i=await En(n.context,t.contextualPackageObservation,()=>t.getInstalledVersion(n.target.id,n.context));if(k(i))return A(i);let a=i.kind===`resolved`?i.value:void 0;return R({evidence:[L(`package`,a?`${e.id}:${n.target.id}@${a}`:`${e.id}:${n.target.id}:present`)],kind:`present`,target:n.target,...a?{version:a}:{}})};return{availability:async n=>{let r=await En(n,t.contextualPackageObservation,()=>t.isAvailable(n));return k(r)?A(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:R({executable:e.executable})},id:e.id,install:n=>{let r=Mn(n.options),i=e.commands.install(n.target,r);return kn(e,n.context,n.target,i,t.contextualMutation,()=>t.install(n.target.id,n.options?.distTag,r.registry,n.context))},observe:r,resolveLatestVersion:async r=>{let i=Mn(r.options),a=await j(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return k(a)?A(a):a.kind===`rejected`||!a.value?{evidence:[n],kind:`indeterminate`,reason:`${e.id} could not resolve the ${i.distTag} version for ${r.target.id}`}:R({evidence:[n,L(`package`,`${e.id}:${r.target.id}@${i.distTag}=${a.value}`)],version:a.value})},uninstall:n=>{let r=e.commands.uninstall(n.target);return kn(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context))},update:n=>{let r=Mn(n.options),i=e.commands.update(n.target,r);return kn(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>On(e,t,n),verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?R({evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):R({evidence:n.value.evidence??[],kind:`satisfied`}):n}}}function En(e,t,n){return t?ct(e,n):j(e,n)}function Dn(e,t,n){return t?ct(e,n):j(e,n)}async function On(e,t,n){let r=Mn(n.options),i=e.commands.updateMany(n.targets,r),a=[L(`provider`,e.id),L(`command`,i.join(` `))],o=await Dn(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return k(o)?A(o):o.kind===`rejected`?jn(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?R(n.targets.map(e=>({evidence:a,target:e}))):An(o.value,e,i,a,`update-many`)}async function kn(e,t,n,r,i,a){let o=await Dn(t,i,a);if(k(o))return A(o);let s=[L(`provider`,e.id),L(`command`,r.join(` `))];return o.kind===`rejected`?jn(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?R({evidence:s,target:n}):An(o.value,e,r,s,r[1]??`operation`,n.id)}function An(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=jn(t,n,r,i,a);return{...o,...e,command:e.command??n,evidence:e.evidence??r,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function jn(e,t,n,r,i,a){let o=r===`add`?`install`:r===`remove`?`uninstall`:r;return{command:t,evidence:n,kind:`failed`,reason:`${e.id} ${o} failed${i?` for ${i}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function Mn(e){return{distTag:e?.distTag??`latest`,distTagExplicit:e?.distTag!==void 0,registry:P(e?.registry),updateStrategy:e?.updateStrategy??`latest-major`}}function L(e,t){return{kind:e,value:t}}function R(e){return{kind:`success`,value:e}}const Nn={install:(e,t)=>[`bun`,`add`,`-g`,...t.registry?[`--registry`,t.registry]:[],t.distTagExplicit?`${e.id}@${t.distTag}`:e.id],uninstall:e=>[`bun`,`remove`,`-g`,e.id],update:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...t.registry?[`--registry`,t.registry]:[],t.distTag===`latest`?e.id:`${e.id}@${t.distTag}`],updateMany:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...e.map(e=>e.id)]},Pn={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>Pt(e,t),install:(e,t,n,r)=>Dt(e,t,n,r),isAvailable:e=>Ze(e),probePackagePresence:(e,t)=>Nt(e,void 0,t),resolveLatestVersion:(e,t,n)=>yn(e,t,{registry:n}),uninstall:(e,t)=>At(e,t),update:(e,t,n,r,i)=>Ot(e,t,n,r,i),updateMany:(e,t,n)=>kt(e,t,n)};function Fn(e=Pn){return Tn({commands:Nn,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const In=Fn();function Ln(e,t,n,r){return E([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function Rn(e,t,n){return Ln(`install`,e,t??[],n)}function zn(e,t,n){return Rn(e,[`--force`,...t??[]],n)}function Bn(e,t){return D(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function Vn(e,t){return Ln(`uninstall`,e,[],t)}const Hn={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>Rn(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>tt(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Vn(e.id,t),update:(e,t)=>zn(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>Bn(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function Un(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Wn(e=Hn){return M({commands:{install:e=>Un(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Un(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const Gn=Wn();function Kn(e,t,n,r){let i=[`deno`,`install`,`--global`];return n.force&&i.push(`--force`),i.push(...t,e),E(i,r,`deno ${n.force?`update`:`install`} failed`)}function qn(e,t,n){return Kn(e,t??[],{},n)}function Jn(e,t,n){return Kn(e,t??[],{force:!0},n)}function Yn(e,t){return D(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function Xn(e,t){return E([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}const Zn={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>qn(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>et(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Xn(e.binaryName??e.id,t),update:(e,t)=>Jn(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>Yn(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},...e.binaryName?{binaryName:e.binaryName}:{},packageName:e.id})),t)};function Qn(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function $n(e=Zn){return M({commands:{install:e=>Qn(e),uninstall:e=>[`deno`,`uninstall`,`--global`,e.binaryName??e.id],update:e=>Qn(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const er=$n(),tr={contextualExecution:!0,execute:(e,t)=>E(ir(e,Xe()),t,`install effect failed`),isExecutablePresent:st};function nr(e,t={}){let n={...tr,...t,contextualExecution:t.execute?t.contextualExecution??!1:!0};return{availability:async e=>ar(e),id:e,install:async t=>{let r=t.target.effect;if(!r)return{kind:`failed`,reason:`${e} install target ${t.target.id} has no execution effect`,remediation:`Select a candidate with an explicit shell-script or executable effect.`,retryable:!1};let i=await rr(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(k(i))return A(i);let a=ir(r,Xe()),o=or(e,a);if(i.kind===`rejected`)return{command:a,evidence:o,kind:`failed`,reason:`${e} install failed for ${t.target.id}: ${i.reason}`,remediation:`Review the installer output and upstream installation instructions.`,retryable:!1};let s=i.value;return s.kind===`success`?{kind:`success`,value:{evidence:o,target:t.target}}:s.kind===`failed`?{...s,command:s.command??a,evidence:s.evidence??o,remediation:s.remediation??`Review the installer output and upstream installation instructions.`}:s},observe:async t=>{let r=t.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await j(t.context,()=>n.isExecutablePresent(r));return k(i)?A(i):i.kind===`rejected`?{kind:`failed`,reason:`${e} executable probe failed for ${t.target.id}: ${i.reason}`,retryable:!0}:{kind:`success`,value:{evidence:[{kind:`executable`,value:r}],kind:i.value?`present`:`absent`,target:t.target}}}}}function rr(e,t,n){return t?ct(e,n):j(e,n)}function ir(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function ar(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:Xe()===`windows`?`powershell.exe`:`sh`}}}function or(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const sr=nr(`script`),cr=nr(`binary`);function lr(e,t,n){return E([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function ur(e,t){return lr(e,!1,t)}function dr(e,t){return lr(e,!0,t)}function fr(e,t){return D(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function pr(e,t){return E([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function mr(e,t){try{let r=C([`mise`,`ls`,`--installed`,`--json`,e],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:i}=t?await T(r,t):await w(r);if(!i.trim())return{presence:`unknown`};try{let t=JSON.parse(i);if(!yr(t))return{presence:`unknown`};let n=vr(t,e),r=n?t[n]:void 0;if(!Array.isArray(r)||r.length===0)return{presence:`absent`};let a=_r(i,e);return a?{presence:`present`,version:a}:{presence:`present`}}catch{return{presence:`unknown`}}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function hr(e,t){return(await mr(e,t)).presence}async function gr(e,t){return(await mr(e,t)).version}function _r(e,t){try{let n=JSON.parse(e);if(!yr(n))return;let r=vr(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(yr(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function vr(e,t){if(Array.isArray(e[t]))return t;let n=t.split(`:`).pop()?.split(`/`).pop();if(n)return Object.keys(e).find(t=>t===n&&Array.isArray(e[t]))}function yr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const br={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>gr(e.id,t),install:(e,t)=>ur(e.id,t),isAvailable:e=>nt(e),probePackagePresence:(e,t)=>hr(e.id,t),uninstall:(e,t)=>pr(e.id,t),update:(e,t)=>dr(e.id,t),updateMany:(e,t)=>fr(e.map(e=>({packageName:e.id})),t)};function xr(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function Sr(e=br){return M({commands:{install:e=>xr(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>xr(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const Cr=Sr();async function wr(e,t,n){return He(r=>Tr(e,t,n,r))}function Tr(e,t,n,r){let i=t?`${e}@${t}`:e,a=P(n);return E([`npm`,`install`,`-g`,i,...a?[`--registry`,a]:[]],r,`npm install failed`)}function Er(e,t,n,r,i){let a=P(r);return E(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...a?[`--registry`,a]:[]]:[`npm`,`update`,`-g`,e,...a?[`--registry`,a]:[]],i,`npm update failed`)}function Dr(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):E(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e],n,`npm batch update failed`)}function Or(e,t){return E([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function kr(e,t){try{let n=C([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{detached:t!==void 0&&process.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:r}=t?await T(n,t):await w(n);if(!r.trim())return{presence:`unknown`};try{let t=JSON.parse(r);if(!t||typeof t!=`object`||Array.isArray(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};if(t.dependencies&&Object.hasOwn(t.dependencies,e)){let t=Mr(r,e);return t?{presence:`present`,version:t}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Ar(e,t){return(await kr(e,t)).presence}async function jr(e,t){return(await kr(e,t)).version}function Mr(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const Nr={install:(e,t)=>[`npm`,`install`,`-g`,t.distTagExplicit?`${e.id}@${t.distTag}`:e.id,...t.registry?[`--registry`,t.registry]:[]],uninstall:e=>[`npm`,`uninstall`,`-g`,e.id],update:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,`${e.id}@${t.distTag}`,...t.registry?[`--registry`,t.registry]:[]]:[`npm`,`update`,`-g`,e.id,...t.registry?[`--registry`,t.registry]:[]],updateMany:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e.id}@latest`)]:[`npm`,`update`,`-g`,...e.map(e=>e.id)]},Pr={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>jr(e,t),install:(e,t,n,r)=>Tr(e,t,n,r),isAvailable:e=>Qe(e),probePackagePresence:(e,t)=>Ar(e,t),resolveLatestVersion:(e,t,n)=>yn(e,t,{registry:n}),uninstall:(e,t)=>Or(e,t),update:(e,t,n,r,i)=>Er(e,t,n,r,i),updateMany:(e,t,n)=>Dr(e,t,n)};function Fr(e=Pr){return Tn({commands:Nr,displayName:`npm`,executable:`npm`,id:`npm`},e)}const Ir=Fr();let Lr=null;async function Rr(e){if(Lr)return{kind:`success`,value:Lr};for(let t of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:r}=await T(C([...t,`--version`],{detached:n.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),e);if(r===0)return Lr=t,{kind:`success`,value:t}}catch(t){if(S(t))return t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...t.reason?{reason:t.reason}:{}}}return Lr=[`pip`],{kind:`success`,value:Lr}}async function zr(e,t){let n=await Rr(t);return n.kind===`success`?E([...n.value,...e],t,`pip command failed`):n}function Br(e,t){return zr([`install`,e],t)}function Vr(e,t){return zr([`install`,`--upgrade`,e],t)}async function Hr(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await Rr(t);return n.kind===`success`?D(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function Ur(e,t){return zr([`uninstall`,`-y`,e],t)}const Wr={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>Br(e.id,t),isAvailable:e=>it(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Ur(e.id,t),update:(e,t)=>Vr(e.id,t),updateMany:(e,t)=>Hr(e.map(e=>({packageName:e.id})),t)};function Gr(e=Wr){return M({commands:{install:e=>[`pip`,`install`,e.id],uninstall:e=>[`pip`,`uninstall`,`-y`,e.id],update:e=>[`pip`,`install`,`--upgrade`,e.id],updateMany:e=>[`pip`,`install`,`--upgrade`,...e.map(e=>e.id)]},displayName:`pip`,executable:`pip`,id:`pip`},e)}const Kr=Gr();function qr(e,t,n,r){return E([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function Jr(e,t,n){return qr(`install`,e,t??[],n)}function Yr(e,t,n){return qr(`upgrade`,e,t??[],n)}function Xr(e,t){return D(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function Zr(e,t){return E([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function Qr(e,t){try{let r=C([`uv`,`tool`,`list`],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:i}=t?await T(r,t):await w(r);if(!i.trim())return{presence:`unknown`};let a=ni(i,e);return a?{presence:`present`,version:a}:ti(i)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function $r(e,t){return(await Qr(e,t)).presence}async function ei(e,t){return(await Qr(e,t)).version}function ti(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function ni(e,t){let n=ri(t);for(let t of e.split(/\r?\n/)){let e=t.trim(),r=/^(\S+)\s+v([^\s]+)/.exec(e);if(!r)continue;let[,i,a]=r;if(ri(i)===n)return a}}function ri(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}const ii={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>ei(e.id,t),install:(e,t)=>Jr(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>at(e),probePackagePresence:(e,t)=>$r(e.id,t),uninstall:(e,t)=>Zr(e.id,t),update:(e,t)=>Yr(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>Xr(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function ai(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function oi(e=ii){return M({commands:{install:e=>ai(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>ai(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const si=oi();function ci(e,t,n){return E([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function li(e,t){return ci(`install`,e,t)}function ui(e,t){return ci(`upgrade`,e,t)}function di(e,t){return D(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function fi(e,t){return ci(`uninstall`,e,t)}const pi={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>li(e.id,t),isAvailable:e=>rt(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>fi(e.id,t),update:(e,t)=>ui(e.id,t),updateMany:(e,t)=>di(e.map(e=>({packageName:e.id})),t)};function mi(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function hi(e=pi){return M({commands:{install:e=>mi(`install`,e),uninstall:e=>mi(`uninstall`,e),update:e=>mi(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const gi=hi(),_i=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`,`script`,`binary`]),vi=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),yi={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function bi(e){let t=new Map;for(let n of e){if(t.has(n.id))throw Error(`Duplicate provider adapter id: ${n.id}`);t.set(n.id,n)}let n=Object.freeze([...e]),r=new Map(n.map(e=>[e.id,Si(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function xi(e){return bi(_i.map(t=>{let n=e[t];if(n.id!==t)throw Error(`Provider registry key ${t} does not match adapter id ${n.id}`);return n}))}function Si(e){return Object.freeze(vi.filter(t=>typeof e[yi[t]]==`function`))}const Ci=xi({binary:cr,brew:Ct,bun:In,cargo:Gn,deno:er,mise:Cr,npm:Ir,pip:Kr,script:sr,uv:si,winget:gi}),wi=Object.freeze(Ci.list().filter(e=>{let t=Ci.getCapabilities(e.id);return t.includes(`update`)&&t.includes(`uninstall`)}).map(e=>e.id));function Ti(e){let t=Ci.getCapabilities(e);if(!t.includes(`install`))throw Error(`First-party provider ${e} must implement install`);let n=t.includes(`update`),r=t.includes(`uninstall`);return{canInstall:!0,canLookupLatestVersion:t.includes(`resolve-latest-version`),canUninstall:r,canUpdate:n,lifecycle:n&&r?`managed`:`unmanaged`}}function Ei(){return wi}function z(e){return wi.includes(e)}function Di(e){return Ti(e).lifecycle}function Oi(e){return Ti(e).canUpdate}function ki(e){return Ti(e).canUninstall}function Ai(e){return Ti(e).canLookupLatestVersion}function ji(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function B(e,t){if(t.packageName)return t.packageName;if(t.type===`cargo`)return e.packages?.cargo;if(t.type===`deno`)return e.packages?.deno;if(t.type===`mise`)return e.packages?.mise;if(t.type===`pip`)return e.packages?.pip;if(t.type===`uv`)return e.packages?.uv;if(t.type===`bun`||t.type===`npm`)return e.packages?.npm}function Mi(e){return e?Oi(e.installType):!1}function Ni(e,t){return Mi(t)||!!e.selfUpdate}function Pi(e){return!!e&&Ai(e.installType)}function Fi(e){return e.length>0&&e.every(e=>Ai(e.type))}function Ii(e){return z(e.type)?`${Di(e.type)}/${e.type}${ji(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Li(e){return e?z(e.installType)?`managed via ${e.installType}${ji(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function Ri(e,t){let n=Xi({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function zi(e,t){if(t.type===`bun`){let n=B(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=B(e,t);return n?`npm i -g ${n}`:``}if(t.type===`brew`)return t.packageName?t.packageTargetKind===`cask`?`brew install --cask ${t.packageName}`:`brew install ${t.packageName}`:``;if(t.type===`cargo`){let n=B(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=B(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=B(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=B(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=B(e,t);return n?[`uv`,`tool`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}return t.type===`winget`?t.packageName?`winget install --id ${t.packageName} -e`:``:t.command??``}function Bi(e,t,n){if(t)return Pi(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!Fi(n)))return e.packages.npm}function Vi(e,t){let n=Hi(t);if(n){let t=e.find(e=>e.type===n);if(t)return t}if(e.length!==1)return;let[r]=e;if(!(r.type!==`script`&&r.type!==`binary`))return r}function Hi(e){if(!e)return;let t=e.replaceAll(`\\`,`/`);if(t.includes(`/.bun/bin/`)||t.includes(`/.bun/install/global/`))return`bun`;if(t.includes(`/.local/share/mise/shims/`)||t.includes(`/.mise/shims/`))return`mise`;if(Ui(t))return`npm`}function Ui(e){return e.includes(`/node_modules/.bin/`)?!1:e.includes(`/lib/node_modules/`)||e.includes(`/AppData/Roaming/npm/`)||e.includes(`/.nvm/versions/node/`)||e.includes(`/.fnm/node-versions/`)||e.includes(`/.volta/tools/image/node/`)}function Wi(e){if(e.installedState)return z(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(z(t.type)&&Oi(t.type))return t.type}const Gi={strategy:`managed`,canHandle:e=>!!Wi(e),getManagedInstallerType:e=>Wi(e)},Ki={strategy:`self-update`,canHandle:e=>!Mi(e.installedState)&&!!e.agent.selfUpdate},qi={strategy:`manual-hint`,canHandle:()=>!0},Ji=[Gi,Ki,qi];function Yi(e){return Ji.find(t=>t.canHandle(e))??qi}function Xi(e){return Yi(e).strategy}function Zi(e){return Ni(e.agent,e.installedState)}const V={additionalProperties:!1,properties:{action:{type:`string`},data:{type:`object`},error:{additionalProperties:!1,properties:{code:{type:`string`},message:{type:`string`}},required:[`code`,`message`],type:`object`},exitCode:{type:`integer`},meta:{additionalProperties:!1,properties:{mode:{type:`string`},runId:{type:`string`},schemaVersion:{type:`string`},source:{type:`string`},fetchedAt:{type:`string`},staleAfter:{type:`string`},timestamp:{type:`string`},version:{type:`string`}},required:[`mode`,`runId`,`schemaVersion`,`timestamp`,`version`],type:`object`},ok:{type:`boolean`},target:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},warnings:{items:{additionalProperties:!1,properties:{code:{type:`string`},message:{type:`string`}},required:[`code`,`message`],type:`object`},type:`array`}},required:[`action`,`error`,`meta`,`ok`,`warnings`],type:`object`},H={additionalProperties:!1,properties:{action:{type:`string`},data:{type:`object`},meta:{additionalProperties:!1,properties:{mode:{type:`string`},runId:{type:`string`},schemaVersion:{type:`string`},source:{type:`string`},fetchedAt:{type:`string`},staleAfter:{type:`string`},timestamp:{type:`string`},version:{type:`string`}},required:[`mode`,`runId`,`schemaVersion`,`timestamp`,`version`],type:`object`},target:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},type:{type:`string`}},required:[`action`,`meta`,`type`],type:`object`},U={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},Qi={brew:U,bun:U,cargo:U,deno:U,mise:U,npm:U,pip:U,uv:U,winget:U},$i=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],ea=[{dataSchema:{additionalProperties:!1,properties:{agents:{items:{type:`string`},type:`array`},features:{additionalProperties:!1,properties:{assumeYes:{type:`boolean`},cacheBypass:{type:`boolean`},cacheRefresh:{type:`boolean`},channels:{items:{type:`string`},type:`array`},colorModes:{items:{type:`string`},type:`array`},dryRun:{type:`boolean`},execInstallPolicies:{items:{type:`string`},type:`array`},freshnessMetadata:{type:`boolean`},idempotencyKey:{type:`boolean`},logLevels:{items:{type:`string`},type:`array`},quietLogs:{type:`boolean`},selfUpgrade:{type:`boolean`},timeout:{type:`boolean`}},required:[`assumeYes`,`cacheBypass`,`cacheRefresh`,`channels`,`colorModes`,`dryRun`,`execInstallPolicies`,`freshnessMetadata`,`idempotencyKey`,`logLevels`,`quietLogs`,`selfUpgrade`,`timeout`],type:`object`},installers:{additionalProperties:!1,properties:Qi,required:$i,type:`object`},outputModes:{items:{type:`string`},type:`array`},platform:{additionalProperties:!1,properties:{arch:{type:`string`},os:{type:`string`}},required:[`arch`,`os`],type:`object`}},required:[`agents`,`features`,`installers`,`outputModes`,`platform`],type:`object`},description:`Environment and surface capabilities`,envelopeSchema:V,name:`capabilities`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{commands:{items:{additionalProperties:!1,properties:{flags:{items:{type:`string`},type:`array`},name:{type:`string`},outputSchemaRef:{type:`string`},stability:{type:`string`},summary:{type:`string`}},required:[`flags`,`name`,`outputSchemaRef`,`stability`,`summary`],type:`object`},type:`array`}},required:[`commands`],type:`object`},description:`Stable command catalog`,envelopeSchema:V,name:`commands`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{action:{type:`string`},config:{type:`object`},key:{type:`string`},value:{type:[`number`,`string`]}},required:[`action`],type:`object`},description:`Configuration read or mutation result`,envelopeSchema:V,name:`config`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agents:{items:{additionalProperties:!1,properties:{displayName:{type:`string`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},outdated:{type:`boolean`},sourceLabel:{type:`string`}},required:[`displayName`,`lifecycle`,`outdated`,`sourceLabel`],type:`object`},type:`array`},installers:{additionalProperties:!1,properties:{brew:{type:`boolean`},bun:{type:`boolean`},cargo:{type:`boolean`},deno:{type:`boolean`},mise:{type:`boolean`},npm:{type:`boolean`},pip:{type:`boolean`},uv:{type:`boolean`},winget:{type:`boolean`}},required:$i,type:`object`},issues:{items:{additionalProperties:!1,properties:{blocking:{type:`boolean`},category:{type:`string`},code:{type:`string`},docsRef:{type:`string`},message:{type:`string`},severity:{type:`string`},subject:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},suggestedAction:{type:`string`},suggestedCommands:{items:{type:`string`},type:`array`}},required:[`blocking`,`category`,`code`,`message`,`severity`,`subject`,`suggestedAction`,`suggestedCommands`],type:`object`},type:`array`},self:{additionalProperties:!1,properties:{canAutoUpdate:{type:`boolean`},currentVersion:{type:`string`},installSource:{type:`string`},latestVersion:{type:`string`},outdated:{type:`boolean`},recoveryHint:{type:`string`}},required:[`canAutoUpdate`,`currentVersion`,`installSource`,`outdated`],type:`object`}},required:[`agents`,`installers`,`issues`,`self`],type:`object`},description:`Diagnostic state and remediation guidance for the current environment`,envelopeSchema:V,name:`doctor`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{binaryName:{type:`string`},displayName:{type:`string`},name:{type:`string`}},required:[`name`],type:`object`},execution:{additionalProperties:!1,properties:{args:{items:{type:`string`},type:`array`},installGuidance:{additionalProperties:!1,properties:{docsRef:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},suggestedAction:{type:`string`},suggestedEnsureCommand:{type:`string`},suggestedExecCommand:{type:`string`}},required:[`docsRef`,`installMethods`,`suggestedAction`,`suggestedEnsureCommand`,`suggestedExecCommand`],type:`object`},installPolicy:{type:`string`},installed:{type:`boolean`},interactive:{type:`boolean`},launched:{type:`boolean`}},required:[`args`,`installPolicy`,`installed`,`interactive`,`launched`],type:`object`}},required:[`agent`,`execution`],type:`object`},description:`Preflight contract for managed agent execution`,envelopeSchema:V,name:`exec`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},installState:{type:`object`},installed:{type:`boolean`}},required:[`agent`,`changed`,`installed`],type:`object`},description:`Ensure result for an agent`,envelopeSchema:V,name:`ensure`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{aliases:{items:{type:`string`},type:`array`},binaryName:{type:`string`},displayName:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},name:{type:`string`},packageName:{type:`string`},selfUpdateCommands:{items:{type:`string`},type:`array`}},required:[`aliases`,`binaryName`,`displayName`,`installMethods`,`name`,`selfUpdateCommands`],type:`object`},inspection:{additionalProperties:!1,properties:{binaryPath:{type:`string`},installed:{type:`boolean`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},sourceLabel:{type:`string`}},required:[`installed`,`lifecycle`],type:`object`}},required:[`agent`,`inspection`],type:`object`},description:`Human-friendly details for an agent`,envelopeSchema:V,name:`info`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},capabilities:{type:`object`},inspection:{type:`object`}},required:[`agent`,`capabilities`,`inspection`],type:`object`},description:`Structured inspection result for an agent`,envelopeSchema:V,name:`inspect`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},installState:{type:`object`},installed:{type:`boolean`},results:{items:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},error:{type:`object`},input:{type:`string`},installState:{type:`object`},installed:{type:`boolean`},ok:{type:`boolean`},status:{type:`string`},warnings:{items:{type:`object`},type:`array`}},required:[`agent`,`changed`,`input`,`installed`,`ok`,`status`,`warnings`],type:`object`},type:`array`},scope:{type:`string`},summary:{type:`object`}},type:`object`},description:`Install result for one or more agents`,envelopeSchema:V,name:`install`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agents:{items:{additionalProperties:!1,properties:{binaryName:{type:`string`},displayName:{type:`string`},installed:{type:`boolean`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},name:{type:`string`},sourceLabel:{type:`string`},updateLabel:{type:`string`}},required:[`binaryName`,`displayName`,`installed`,`lifecycle`,`name`,`sourceLabel`,`updateLabel`],type:`object`},type:`array`}},required:[`agents`],type:`object`},description:`Supported agent catalog`,envelopeSchema:V,name:`list`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},resolution:{additionalProperties:!1,properties:{binaryPath:{type:`string`},installGuidance:{additionalProperties:!1,properties:{docsRef:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},suggestedAction:{type:`string`},suggestedEnsureCommand:{type:`string`}},required:[`docsRef`,`installMethods`,`suggestedAction`,`suggestedEnsureCommand`],type:`object`},installed:{type:`boolean`},installSource:{type:`string`},installedVersion:{type:`string`},lifecycle:{type:`string`},sourceLabel:{type:`string`},suggestedLaunchCommand:{items:{type:`string`},type:`array`}},required:[`binaryPath`,`installed`,`installSource`,`lifecycle`,`sourceLabel`,`suggestedLaunchCommand`],type:`object`}},required:[`agent`,`resolution`],type:`object`},description:`Resolved executable entrypoint for an agent`,envelopeSchema:V,name:`resolve`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{commands:{items:{additionalProperties:!1,properties:{dataSchema:{type:`object`},description:{type:`string`},envelopeSchema:{type:`object`},name:{type:`string`},ndjsonEventSchema:{type:`object`}},required:[`dataSchema`,`description`,`envelopeSchema`,`name`],type:`object`},type:`array`}},required:[`commands`],type:`object`},description:`Structured schema catalog`,envelopeSchema:V,name:`schema`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{results:{items:{additionalProperties:!1,properties:{displayName:{type:`string`},hint:{type:`string`},installedVersion:{type:`string`},latestVersion:{type:`string`},message:{type:`string`},name:{type:`string`},resource:{type:`string`},status:{type:`string`},strategy:{type:`string`}},required:[`displayName`,`name`,`status`],type:`object`},type:`array`},scope:{type:`string`}},required:[`results`,`scope`],type:`object`},description:`Update result for one or all agents`,envelopeSchema:V,name:`update`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{displayName:{type:`string`},name:{type:`string`}},required:[`displayName`,`name`],type:`object`},changed:{type:`boolean`}},required:[`agent`,`changed`],type:`object`},description:`Uninstall result for an agent`,envelopeSchema:V,name:`uninstall`,ndjsonEventSchema:H},{dataSchema:{additionalProperties:!1,properties:{canAutoUpdate:{type:`boolean`},channel:{type:`string`},currentVersion:{type:`string`},installSource:{type:`string`},latestVersion:{type:`string`},recoveryHint:{type:`string`},status:{type:`string`}},required:[`canAutoUpdate`,`channel`,`currentVersion`,`installSource`,`status`],type:`object`},description:`Quantex self-upgrade status`,envelopeSchema:V,name:`upgrade`,ndjsonEventSchema:H}],ta=[{description:`Output structured JSON`,flags:`--json`,id:`json`,value:`boolean`},{description:`Output mode: human, json, or ndjson`,flags:`--output <mode>`,id:`output`,value:`string`},{description:`Disable interactive prompts and confirmations`,flags:`--non-interactive`,id:`nonInteractive`,value:`boolean`},{description:`Automatically accept safe default confirmations`,flags:`--yes`,id:`yes`,value:`boolean`},{description:`Suppress non-essential human logs`,flags:`--quiet`,id:`quiet`,value:`boolean`},{description:`Color mode: auto, always, or never`,flags:`--color <mode>`,id:`color`,value:`string`},{description:`Log level: silent, error, warn, info, or debug`,flags:`--log-level <level>`,id:`logLevel`,value:`string`},{description:`Show what would happen without making changes`,flags:`--dry-run`,id:`dryRun`,value:`boolean`},{description:`Refresh cached version metadata before returning results`,flags:`--refresh`,id:`refresh`,value:`boolean`},{commanderProperty:`cache`,description:`Bypass the local version cache for this command`,flags:`--no-cache`,id:`noCache`,negateCommanderValue:!0,value:`boolean`},{description:`Attach a run id to structured output and logs`,flags:`--run-id <id>`,id:`runId`,value:`string`},{description:`Deduplicate repeated mutating requests by client-supplied key`,flags:`--idempotency-key <key>`,id:`idempotencyKey`,value:`string`},{description:`Abort a command after the given duration, e.g. 500ms, 30s, 5m`,flags:`--timeout <duration>`,id:`timeout`,value:`string`}],na=new Map(ta.map(e=>[e.id,e])),ra=new Map(ea.map(e=>[e.name,e])),ia=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],aa=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],oa=[W({aliases:[],description:`查看当前环境与 surface 能力`,effects:[`filesystem`,`network`,`process`],globalOptions:[`json`,`output`,`nonInteractive`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],name:`capabilities`,summary:`Return environment and surface capabilities`}),W({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),W({aliases:[],arguments:[{description:`Action: get, set, reset`,name:`action`,syntax:`[action]`},{description:`Config key`,name:`key`,syntax:`[key]`},{description:`Config value`,name:`value`,syntax:`[value]`}],catalogTokens:[`get`,`set`,`reset`],description:`配置管理`,effects:[`filesystem`,`mutation`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`config`,summary:`Read and modify Quantex configuration`}),W({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:ia,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),W({aliases:[],allowUnknownOptions:!0,arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`},{description:`Arguments passed through to the agent`,name:`args`,syntax:`[args...]`}],description:`以显式策略启动 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:[`nonInteractive`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`output`],name:`exec`,options:[{defaultValue:`never`,description:`Install policy: never, if-missing, always`,flags:`--install <policy>`,id:`install`,value:`string`}],summary:`Run an agent with explicit install policy`}),W({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:aa,name:`ensure`,summary:`Ensure an agent is installed`}),W({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:ia,name:`info`,summary:`Show human-friendly agent details`}),W({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:ia,name:`inspect`,summary:`Return structured agent state`}),W({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:aa,name:`install`,summary:`Install one or more agents`}),W({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:ia,name:`list`,summary:`List supported agents`}),W({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:ia,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),W({aliases:[],arguments:[{description:`Optional command name`,name:`command`,syntax:`[command]`}],description:`查看结构化输出 schema`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`schema`,summary:`Return structured output schemas`}),W({aliases:[`u`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`[agent]`}],description:`更新指定 agent`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`update`,options:[{description:`Update all installed agents`,flags:`--all`,id:`all`,value:`boolean`}],summary:`Update one or all agents`}),W({aliases:[`rm`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`卸载指定 agent`,effects:[`filesystem`,`mutation`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],name:`uninstall`,summary:`Uninstall an agent`}),W({aliases:[],description:`升级 Quantex CLI`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`upgrade`,options:[{description:`Only check whether an update is available`,flags:`--check`,id:`check`,value:`boolean`},{description:`Update channel: stable or beta`,flags:`--channel <channel>`,id:`channel`,value:`string`}],summary:`Upgrade Quantex CLI itself`})];function sa(){return oa}function ca(){return ta}function la(e){let t={...e};for(let n of ta){let r=n.commanderProperty??n.id;r in e&&(t[n.id]=n.negateCommanderValue?e[r]===!1:e[r],r!==n.id&&delete t[r])}return t}function ua(e){return{flags:pa(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function da(e,t){let n=new Set,r=new Set;for(let t of e){if(n.has(t.name))throw Error(`Duplicate command name: ${t.name}`);n.add(t.name)}for(let t of e){let e=new Set,i=new Set,a=new Set,o=new Set;for(let e of t.aliases){if(n.has(e))throw Error(`Command alias collides with command name: ${e}`);if(r.has(e))throw Error(`Duplicate command alias: ${e}`);r.add(e)}for(let n of t.effects){if(e.has(n))throw Error(`Duplicate command effect: ${n}`);e.add(n)}for(let[e,n]of t.arguments.entries()){if(i.has(n.name))throw Error(`Duplicate command argument: ${t.name} ${n.name}`);if(i.add(n.name),n.syntax.includes(`...`)&&e!==t.arguments.length-1)throw Error(`Variadic command argument must be last: ${t.name} ${n.name}`)}let s=new Set;for(let e of t.globalOptions){let n=na.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=G(n.flags);if(s.has(r))throw Error(`Duplicate command global option: ${t.name} ${r}`);s.add(r)}for(let e of t.options){let n=G(e.flags);if(a.has(n))throw Error(`Duplicate command option: ${t.name} ${n}`);if(o.has(e.id))throw Error(`Duplicate command option id: ${t.name} ${e.id}`);if(s.has(n))throw Error(`Command option duplicates global option: ${t.name} ${n}`);ma(e,t.name),a.add(n),o.add(e.id)}if((t.globalOptions.includes(`dryRun`)||t.globalOptions.includes(`idempotencyKey`)||t.options.some(e=>e.id===`dryRun`||e.id===`idempotencyKey`))&&!e.has(`mutation`)){let e=t.globalOptions.includes(`dryRun`)?`--dry-run`:`--idempotency-key`;throw Error(`Command effect mismatch: ${t.name} exposes ${e} without mutation`)}let c=pa(t);if(c.length!==t.flags.length||c.some((e,n)=>e!==t.flags[n]))throw Error(`Command discovery option mismatch: ${t.name}`)}for(let t of e){if(!n.has(t.handlerId))throw Error(`Unresolved command handler: ${t.handlerId}`);if(!n.has(t.presenterId))throw Error(`Unresolved command presenter: ${t.presenterId}`)}let i=new Set(t);for(let t of e){if(!i.has(t.schemaName))throw Error(`Missing command schema: ${t.schemaName}`);if(t.schema.name!==t.schemaName)throw Error(`Command schema mismatch: ${t.name} ${t.schema.name}`)}}function W(e){let t=fa(e.name),n={...e,arguments:e.arguments??[],catalogTokens:e.catalogTokens??[],flags:[],handlerId:e.name,options:e.options??[],presenterId:e.name,schema:t,schemaName:e.name,stability:`stable`};return{...n,flags:pa(n)}}function fa(e){let t=ra.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function pa(e){return[...e.catalogTokens,...e.options.map(e=>G(e.flags)),...e.globalOptions.map(t=>{let n=na.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return G(n.flags)})]}function G(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function ma(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${G(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${G(e.flags)}`)}const ha=new Map(sa().map(e=>[e.name,ya(e.presenterId)]));function ga(e){return ha.get(e)}function _a(e,t,n,r,i,a){if(t===`json`){i(e?.serializeJson(n)??JSON.stringify(n,null,2));return}if(t===`ndjson`){a(e?.toResultEvent(n)??ba(n));return}e?e.presentHuman(n,r):r(n)}function va(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function ya(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:ba}}function ba(e){return{action:e.action,data:e,target:e.target,type:`result`}}const K=`quantex-cli`,xa=`https://github.com/Drswith/quantex-cli`,Sa=`1.1.0`;function Ca(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function wa(e=n.execPath){if(u(Ca(e)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(n.platform===`darwin`)return n.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(n.platform===`linux`)return n.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function Ta(e=n.execPath){let t=wa(e);if(t)return`${xa}/releases/latest/download/${t}`}function Ea(e,t,r=n.env){return e||(r.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:r.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:t===`beta`?`beta`:`stable`)}async function Da(e,t,n){let r=await en(await Oa(e,t,n),`self:manifest:${e}`,{context:t,networkPort:n});if(!r)throw Error(`Failed to download release manifest.`);return r}async function Oa(e,t,n){if(e===`stable`)return`${xa}/releases/latest/download/manifest.json`;let r=(await ka(e,t,n)).assets.find(e=>e.name===`manifest.json`);if(!r?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return r.browser_download_url}async function ka(e,t,n){let r=ja();if(!r)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let i=await en(`https://api.github.com/repos/${r}/releases?per_page=20`,`self:github-releases`,{context:t,networkPort:n});if(!i)throw Error(`Failed to query GitHub releases.`);let a=i.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!a)throw Error(`No GitHub release was found for the ${e} channel.`);return a}function Aa(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=wa(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function ja(){return xa.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var Ma=class extends Error{lockPath;resource;constructor(e,t){super(`Another quantex process is already using the ${e} lock.`),this.name=`ResourceLockError`,this.lockPath=t,this.resource=e}};function Na(e){return e instanceof Ma}function Pa(e){let t=e.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),n=t.length>0?t:[`default`],r=n.slice(0,-1),i=`${n.at(-1)}.lock`;return p(F(),`locks`,...r,i)}async function q(e){let t=Pa(e.scope);return await g(f(t),{recursive:!0}),await Fa(e.resource,t),async()=>{await v(t,{force:!0,recursive:!0})}}async function Fa(e,t){try{c(t,{recursive:!1}),Ia(t);return}catch(e){if(!Va(e))throw e}if(!await La(t))throw new Ma(e,t);try{c(t,{recursive:!1}),Ia(t)}catch(n){throw Va(n)?new Ma(e,t):n}}function Ia(e){l(p(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function La(e){let t;try{t=await Ra(e)}catch{return!1}return t&&Ba(t.pid)?!1:(await v(e,{force:!0,recursive:!0}),!0)}async function Ra(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await za(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await za(e)}async function za(e){try{let t=await _(p(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(Ha(e))return;throw e}}function Ba(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Va(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Ha(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Ua(e,t){let n=await q(e);try{return await t()}finally{await n()}}var J=class extends Error{constructor(e){super(e),this.name=`StateSchemaError`}};const Wa=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function Ga(){return{installedAgents:{},lifecycleReceipts:{},schemaVersion:2,self:{}}}function Y(e){if(!ao(e))throw new J(`root value must be an object.`);let t=e.schemaVersion===void 0?`legacy`:`current`;if(t===`current`&&e.schemaVersion!==2)throw new J(`unsupported schemaVersion "${String(e.schemaVersion)}".`);return{document:{installedAgents:Xa(e.installedAgents),lifecycleReceipts:t===`current`?Ya(e.lifecycleReceipts):{},schemaVersion:2,self:Qa(e.self)},source:t}}function Ka(e){return{installedAgents:e.installedAgents,self:e.self}}function qa(e,t){let n=Y(t).document;return{installedAgents:n.installedAgents,lifecycleReceipts:e.lifecycleReceipts,schemaVersion:2,self:n.self}}function Ja(e,t){if(!ao(t))throw new J(`lifecycle receipt "${e}" must be an object.`);if(t.kind!==`lifecycle-receipt`)throw new J(`lifecycle receipt "${e}" has an invalid kind.`);if(t.schemaVersion!==1)throw new J(`lifecycle receipt "${e}" has an unsupported schemaVersion.`);if(!X(t.targetId)||t.targetId!==e)throw new J(`lifecycle receipt "${e}" has an invalid targetId.`);if(!X(t.providerId))throw new J(`lifecycle receipt "${e}" has an invalid providerId.`);if(!X(t.providerTargetId))throw new J(`lifecycle receipt "${e}" has an invalid providerTargetId.`);if(t.providerTargetKind!==void 0&&!to(t.providerTargetKind))throw new J(`lifecycle receipt "${e}" has an invalid providerTargetKind.`);if(!ro(t.verifiedAt))throw new J(`lifecycle receipt "${e}" has an invalid verifiedAt.`);return{...X(t.executableName)?{executableName:t.executableName}:{},...X(t.executablePath)?{executablePath:t.executablePath}:{},kind:`lifecycle-receipt`,providerId:t.providerId,providerTargetId:t.providerTargetId,...to(t.providerTargetKind)?{providerTargetKind:t.providerTargetKind}:{},schemaVersion:1,targetId:e,verifiedAt:t.verifiedAt,...X(t.version)?{version:t.version}:{}}}function Ya(e){if(!ao(e))throw new J(`lifecycleReceipts must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Ja(e,t)]))}function Xa(e){if(e===void 0)return{};if(!ao(e))throw new J(`installedAgents must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Za(e,t)]))}function Za(e,t){if(!ao(t))throw new J(`installed agent "${e}" must be an object.`);if(t.agentName!==e)throw new J(`installed agent "${e}" has an invalid agentName.`);if(!$a(t.installType))throw new J(`installed agent "${e}" has an invalid installType.`);let n={agentName:e,installType:t.installType};if(typeof t.binaryName==`string`&&(n.binaryName=t.binaryName),Array.isArray(t.packageInstallArgs)&&t.packageInstallArgs.every(io)&&(n.packageInstallArgs=t.packageInstallArgs),typeof t.packageName==`string`){if(t.packageName.length===0&&z(t.installType))throw new J(`installed agent "${e}" has an empty packageName.`);n.packageName=t.packageName}return eo(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function Qa(e){if(!ao(e))return{};let t={...e};return no(e.installSource)?t.installSource=e.installSource:delete t.installSource,typeof e.updateNoticeAt==`string`?t.updateNoticeAt=e.updateNoticeAt:delete t.updateNoticeAt,typeof e.updateNoticeVersion==`string`?t.updateNoticeVersion=e.updateNoticeVersion:delete t.updateNoticeVersion,t}function $a(e){return typeof e==`string`&&Wa.has(e)}function eo(e){return e===`package`||e===`cask`||e===`id`}function to(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function no(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function X(e){return typeof e==`string`&&e.length>0}function ro(e){return X(e)&&Number.isFinite(Date.parse(e))}function io(e){return typeof e==`string`}function ao(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var oo=class extends Error{backupFilePath;primaryError;recoveryError;constructor(e){super(`Failed to restore the original Quantex state after a persistence failure.`,{cause:e.recoveryError}),this.name=`StateRecoveryError`,this.backupFilePath=e.backupFilePath,this.primaryError=e.primaryError,this.recoveryError=e.recoveryError}},so=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:lo(e)}async save(e){let t=Y(e);if(t.source!==`current`)throw Error(`Refusing to persist an unversioned state document.`);let{backupFilePath:n,directoryPath:r,stateFilePath:i,tempFileSuffix:a}=this.options,o=`${n}.tmp-${a}`,s=`${i}.tmp-${a}`,c=`${i}.restore-${a}`,l=await this.readOptional(i),u=l===void 0?void 0:Y(lo(l)),d=`${JSON.stringify(t.document,null,2)}\n`,f=!1;await this.options.fileSystem.makeDirectory(r);try{l!==void 0&&u?.source===`legacy`&&(await this.options.fileSystem.writeText(o,l),await this.validateBackup(o,l),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,l)),await this.options.fileSystem.writeText(s,d),uo(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),f=!0,uo(await this.options.fileSystem.readText(i))}catch(e){let t;try{f&&await this.restoreOriginal(l,c,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,s,c)}throw t===void 0?e:new oo({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,s,c)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(fo(e))return;throw e}}async validateBackup(e,t){let n=await this.options.fileSystem.readText(e);if(n!==t)throw Error(`State migration backup does not match the original state.`);Y(lo(n))}async restoreOriginal(e,t,n){if(e===void 0){if(await this.options.fileSystem.remove(n),await this.readOptional(n)!==void 0)throw Error(`New state remained after rollback removal.`);return}await this.options.fileSystem.writeText(t,e),await this.options.fileSystem.rename(t,n);let r=await this.options.fileSystem.readText(n);if(r!==e)throw Error(`Restored state does not match the original state.`);Y(lo(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},co=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?Ga():Y(e).document}async loadProjection(){return Ka(await this.loadDocument())}async saveProjection(e){let t=qa(await this.loadDocument(),e);await this.persistence.save(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=Ja(e.targetId,e),n=await this.loadDocument(),r=Y({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.persistence.save(r.document)}async setAgentLifecycleEvidence(e,t){let n=Ja(t.targetId,t);if(e.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let r=await this.loadDocument(),i=Y({...r,installedAgents:{...r.installedAgents,[e.agentName]:e},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}});if(i.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.persistence.save(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.persistence.save({...t,lifecycleReceipts:n})}};function lo(e){return JSON.parse(e)}function uo(e){if(Y(lo(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function fo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}var Z=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const po={installedAgents:{},self:{}};function mo(){return p(F(),`state.json`)}async function ho(){return ko()}async function go(e){let t=await q({resource:`state`,scope:[`state`]});try{await Ao(e)}finally{await t()}}async function _o(e){return(await ho()).installedAgents[e]}async function vo(e){try{return await Q().getReceipt(e)}catch(e){throw e instanceof Z?e:new Z(`Failed to read Quantex state file.`,{cause:e})}}async function yo(e){let t=await q({resource:`state`,scope:[`state`]});try{await Q().setReceipt(e)}catch(e){throw e instanceof Z?e:new Z(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function bo(e,t){let n=await q({resource:`state`,scope:[`state`]});try{await Q().setAgentLifecycleEvidence(e,t)}catch(e){throw e instanceof Z?e:new Z(`Failed to write Quantex state file.`,{cause:e})}finally{await n()}}async function xo(e){let t=await q({resource:`state`,scope:[`state`]});try{await Q().removeReceipt(e)}catch(e){throw e instanceof Z?e:new Z(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const So=Object.freeze({read:vo,remove:xo,write:yo});async function Co(e){await No(t=>{t.installedAgents[e.agentName]=e})}async function wo(e){await No(t=>{delete t.installedAgents[e]})}async function To(){return(await ho()).self}async function Eo(e){await No(t=>{t.self.installSource=e})}async function Do(){await No(e=>{delete e.self.installSource})}async function Oo(e,t){await No(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function ko(){try{return await Q().loadProjection()}catch(e){if(Mo(e))return{...po};throw e instanceof Z?e:e instanceof J?new Z(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new Z(`Failed to read Quantex state file.`,{cause:e})}}async function Ao(e){try{await Q().saveProjection(e)}catch(e){throw e instanceof Z?e:new Z(`Failed to write Quantex state file.`,{cause:e})}}const jo={async makeDirectory(e){await g(e,{recursive:!0})},async readText(e){return _(e,`utf8`)},async remove(e){await v(e,{force:!0})},async rename(e,t){await re(e,t)},async writeText(e,t){await ae(e,t,`utf8`)}};function Q(){let e=mo();return new co(new so({backupFilePath:`${e}.v1.bak`,directoryPath:F(),fileSystem:jo,stateFilePath:e,tempFileSuffix:String(n.pid)}))}function Mo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function No(e){let t=await q({resource:`state`,scope:[`state`]});try{let t=await ko();await e(t),await Ao(t)}finally{await t()}}const Po=`self:install-source`,Fo={clearInstallSource:Do,getSelfState:To,setInstallSource:Eo};function Io(e=Fo){return{async load(t){let n=Lo(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return zo(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return Vo(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=Lo(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),zo(void 0)}catch(e){return Vo(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=Lo(t.key,t.signal);if(n)return n;if(!Ro(t.value))return Bo({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),zo({})}catch(e){return Vo(`Failed to persist the self install source.`,e)}}}}function Lo(e,t){if(t.aborted)return Bo({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return Bo({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function Ro(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function zo(e){return{kind:`success`,value:e}}function Bo(e){return{error:e,kind:`failure`}}function Vo(e,t){return Bo({details:{cause:t},kind:`failed`,message:e})}const Ho=K,Uo=`/node_modules/${Ho}`;async function Wo(e){return Ko(e,!0)}async function Go(e){return Ko(e,!1)}async function Ko(e,t){let r=await $o(),i=n.execPath,a=r.foundPackageJson?Qo(r.packageRoot):Qo(``,i),o=e?.persistence??Io(),s=e?.signal??new AbortController().signal,c=await Xo(o,s),l=t?await Yo(c,a,{persistence:o,signal:s}):qo(c,a),u=await Kt(),d=Ea(e?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:Jo(l),currentVersion:r.version||`1.1.0`,executablePath:i,installSource:l,packageRoot:r.packageRoot,updateChannel:d}}function qo(e,t){return t===`unknown`?e??t:t}function Jo(e){return e===`binary`||e===`bun`||e===`npm`}async function Yo(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??Io()).save({key:Po,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&Zo(e.error),t}return qo(e,t)}async function Xo(e,t){let n=await e.load({key:Po,signal:t});if(n.kind===`failure`&&Zo(n.error),n.value.kind===`missing`)return;let r=n.value.snapshot.value;if(r===`binary`||r===`bun`||r===`npm`||r===`source`||r===`unknown`)return r;throw Error(`The persisted self install source is invalid.`)}function Zo(e){let t=e.details?.cause;throw t instanceof Error?t:e.kind===`cancelled`?new x({kind:`cancelled`,reason:e.message}):e.kind===`timed-out`?new x({kind:`timed-out`,timeoutMs:0}):Error(e.message)}function Qo(e,t=n.execPath){let r=ns(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Uo)?`npm`:r?`source`:rs(t)?`binary`:`unknown`}async function $o(e=import.meta.url){let t=is(e),n=f(t);for(;;){let e=p(n,`package.json`),t=await ts(e);if(t?.name===Ho)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.1.0`};let r=f(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:p(f(t),`package.json`),packageRoot:f(t),version:Sa}}function es(){return Sa}async function ts(e){try{return JSON.parse(await _(e,`utf8`))}catch{return}}function ns(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function rs(e){let t=u(ns(e));return t!==`bun`&&t!==`bun.exe`}function is(e){try{return se(e)}catch{return n.execPath}}async function as(){try{return await q({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Na(e))return;throw e}}function os(){return{async acquire(e){if(e.signal.aborted)return ss(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return ss(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await as();if(!t)return ss(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),ss(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);let n=!1;return{kind:`success`,value:{async release(){if(n)return{kind:`success`,value:void 0};n=!0;try{return await t(),{kind:`success`,value:void 0}}catch(e){return ss(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function ss(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function cs(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=P(r.QTX_SELF_UPDATE_REGISTRY);return a?{isOverride:!0,registry:a,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await ls(e,r,i)||{isOverride:!1,registry:wt,source:`fallback`}}async function ls(e,t,n){if(e===`bun`){let e=us(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await ds(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=us(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await ps(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function us(e,t){for(let n of t){let t=P(e[n]);if(t)return t}}async function ds(e,t){let n=gs(t),r=t.XDG_CONFIG_HOME,i=hs(e,`bunfig.toml`),a=[p(n,`.bunfig.toml`),r?p(r,`.bunfig.toml`):void 0];if(i){let e=await fs(i);if(e)return e}for(let e of a){if(!e||!s(e))continue;let t=await fs(e);if(t)return t}}async function fs(e){try{return _s(await _(e,`utf8`))}catch{return}}async function ps(e,t){let n=gs(t),r=hs(e,`.npmrc`),i=p(n,`.npmrc`);if(r){let e=await ms(r);if(e)return e}if(s(i))return ms(i)}async function ms(e){try{let t=(await _(e,`utf8`)).split(`
7
- `).map(e=>e.trim());for(let e=t.length-1;e>=0;--e){let n=t[e];if(!n||n.startsWith(`#`)||n.startsWith(`;`))continue;let r=n.match(/^registry\s*=\s*(.+)$/);if(!r?.[1])continue;let i=P(r[1]);if(i)return i}}catch{}}function hs(e,t){let n=e;for(;;){let e=p(n,t);if(s(e))return e;let r=f(n);if(r===n)return;n=r}}function gs(e){return e.HOME||e.USERPROFILE||oe()}function _s(e){let t=vs(e,[/(?:^|\n)\s*install\.registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*install\.registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*install\s*=\s*\{[\s\S]*?\bregistry\s*=\s*["']([^"'#\n]+)["'][\s\S]*?\}/,/(?:^|\n)\s*install\s*=\s*\{[\s\S]*?\bregistry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["'][\s\S]*?\}[\s\S]*?\}/]);if(t)return P(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return P(vs(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function vs(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function ys(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function bs(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function xs(e,t){if(ws(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||gn(e.targetVersion,e.targetVersion)!==0)&&!(!Ts(e.fetchedAtMs)||!Ts(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function Ss(e){let t=await e.cache.read({key:ys(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return xs(t.value.value,e)}function Cs(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:ys(e.metadata),signal:e.signal,value:e.metadata})}function ws(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ts(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function Es(e,t,n){let r=await Kt();if(e.installSource===`binary`)try{let r=t?await Da(e.updateChannel,t,n):await Da(e.updateChannel,void 0,n),i=Aa(r,e.executablePath);return i?{binaryAsset:i,targetVersion:r.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch(t){if(S(t))throw t;return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let i=e.updateChannel===`beta`?`beta`:`latest`,a=await yn(K,i,{...t?{context:t}:{},networkPort:n,registry:wt});if(e.installSource===`bun`||e.installSource===`npm`){let o=await cs(e.installSource,r);return{managedRegistry:o?.registry,managedRegistryIsOverride:o?.isOverride??!1,packageTag:i,targetVersion:await yn(K,i,{...t?{context:t}:{},networkPort:n,registry:o?.registry}),upstreamLatestVersion:a,verificationCommand:Ps(e.packageRoot)}}return{packageTag:i,targetVersion:a,upstreamLatestVersion:a}}async function Ds(e){let t=e?.facts??await Wo({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await Es(t,e?.context,e?.networkPort),r=n.targetVersion?_n(n.targetVersion,t.currentVersion):!1,i={facts:t,status:js(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await Kt()).versionCacheTtlHours*60*60*1e3;await Cs({cache:e.metadataCache,metadata:bs({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function Os(e){return{canAutoUpdate:e.facts.canAutoUpdate,currentVersion:e.facts.currentVersion,executablePath:e.facts.executablePath,installSource:e.facts.installSource,latestVersion:e.target.targetVersion,managedRegistry:e.target.managedRegistry,managedRegistryIsOverride:e.target.managedRegistryIsOverride,packageRoot:e.facts.packageRoot,recommendedUpgradeCommand:e.facts.canAutoUpdate?`quantex upgrade`:void 0,upstreamLatestVersion:e.target.upstreamLatestVersion,updateChannel:e.facts.updateChannel}}async function ks(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await Ms(e,n);if(!r)return{error:{kind:`verify`,message:`Managed self-upgrade finished but Quantex could not verify the installed version afterwards.`},installSource:e.facts.installSource,success:!1};let i=t.newVersion??e.target.targetVersion;return i&&r!==i?{error:{detail:{expectedVersion:i,observedVersion:r},kind:`verify`,message:`Managed self-upgrade installed version ${r}, but expected ${i}.`},installSource:e.facts.installSource,success:!1}:!i&&r===e.facts.currentVersion&&e.target.targetVersion!==void 0?{error:{detail:{observedVersion:r},kind:`verify`,message:`Managed self-upgrade completed without changing the installed Quantex version.`},installSource:e.facts.installSource,success:!1}:{...t,newVersion:r}}function As(e){let t={canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel},n={managedRegistry:e.managedRegistry,managedRegistryIsOverride:e.managedRegistryIsOverride,packageTag:e.updateChannel===`beta`?`beta`:`latest`,targetVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion,verificationCommand:Ps(e.packageRoot)},r=e.latestVersion?_n(e.latestVersion,e.currentVersion):!1;return{facts:t,status:js(t,n,r),target:n,updateAvailable:r}}function js(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Ms(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await Ns(e.target.verificationCommand,r);if(t)return t}return Ns([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await vn(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return vn(e.facts.executablePath)}async function Ns(e,t){let n=await t.process.run({argv:e,signal:t.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:t.timeoutMs});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return}if(n.value.exitCode!==0||!n.value.stdout)return;let r=new TextDecoder().decode(n.value.stdout).trim().split(`
8
- `)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function Ps(e){if(e)return[n.execPath,p(e,`dist`,`cli.mjs`),`--version`]}async function Fs(e,t,r,i,a=zs(t),o){let s=o?.networkPort,c=s&&o?await Rs(e,{...o,networkPort:s}):await Ls(e);if(c.kind===`failure`)return c.result;let l=c.binary;Is(o);let d=await te(p(f(t),`.quantex-upgrade-`)),m=p(d,u(t)),h=`${t}.bak`,g=!1,_=!1;try{Is(o);let s=await Bs(t),c=qs(l);if(c!==Js(r))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${Js(r)}, got ${c}.`);if(await ae(m,l),Is(o),n.platform===`win32`){let e=Vs(m,t,h,d,i,a);return _=e.success,e}await ee(m,s),Is(o),await v(h,{force:!0}),await re(t,h),g=!0,await re(m,t);let u=await Ks(t,i,o);return u.success?(g=!1,await v(h,{force:!0}),{success:!0}):(await Gs(h,t),g=!1,u)}catch(e){if(g){try{await Gs(h,t)}catch{}g=!1}if(e instanceof x)throw e;return $(Ws(e),`Failed to replace the current Quantex binary.`,e)}finally{(n.platform!==`win32`||!_)&&await v(d,{recursive:!0,force:!0})}}function Is(e){if(e?.signal.aborted)throw new x({kind:`cancelled`,reason:e.signal.reason instanceof Error?e.signal.reason.message:String(e.signal.reason??``)})}async function Ls(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:ce.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function Rs(e,t){let n=await t.networkPort.request({signal:t.signal,timeoutMs:t.timeoutMs,url:e});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,n.error)}}return n.value.status<200||n.value.status>=300?{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${n.value.status}.`)}:{binary:ce.from(n.value.body),kind:`success`}}function zs(e){if(n.platform!==`win32`)return;let t=m.basename(e).toLowerCase();if(t===`qtx.exe`)return m.join(m.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return m.join(m.dirname(e),`qtx.exe`)}async function Bs(e){try{return(await ie(e)).mode&511}catch{return 493}}function Vs(e,t,r,i,a,o){try{return C([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Hs(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return $(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function Hs(e,t,n,r,i,a,o){let s=Us(e),c=Us(t),l=Us(n),u=Us(r),d=Us(a??``),f=Us(o??``);return[`$ErrorActionPreference = 'Stop'`,`$pidToWait = ${i}`,`$tempPath = '${s}'`,`$targetPath = '${c}'`,`$backupPath = '${l}'`,`$tempDir = '${u}'`,`$expectedVersion = '${d}'`,`$peerPath = '${f}'`,`while (Get-Process -Id $pidToWait -ErrorAction SilentlyContinue) { Start-Sleep -Milliseconds 200 }`,`$backupReady = $false`,`for ($attempt = 0; $attempt -lt 50; $attempt++) {`,` try {`,` if (Test-Path -LiteralPath $backupPath) { Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue }`,` Move-Item -LiteralPath $targetPath -Destination $backupPath -Force -ErrorAction Stop`,` $backupReady = $true`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`if (-not $backupReady) {`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`try {`,` Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`}`,`catch {`,` if (Test-Path -LiteralPath $backupPath) {`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force -ErrorAction SilentlyContinue`,` }`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`if ($expectedVersion -ne '') {`,` $output = & $targetPath --version 2>$null`,` if ($LASTEXITCODE -ne 0 -or ($output -notmatch [regex]::Escape($expectedVersion))) {`,` Remove-Item -LiteralPath $targetPath -Force -ErrorAction SilentlyContinue`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,` }`,`}`,`if ($peerPath -ne '') {`,` Copy-Item -LiteralPath $targetPath -Destination $peerPath -Force`,`}`,`Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue`,`Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`].join(`; `)}function Us(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Ws(e){let t=typeof e==`object`&&e&&`code`in e?String(e.code):``;return t===`EACCES`||t===`EPERM`?`permission`:t===`EBUSY`?`locked`:`unknown`}async function Gs(e,t){await v(t,{force:!0}),await re(e,t)}async function Ks(e,t,n){if(!t)return{success:!0};try{if(n?.processPort){let r=await n.processPort.run({argv:[e,`--version`],signal:n.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:n.timeoutMs});if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:n.timeoutMs??0});return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,r.error)}let i=r.value.stdout?new TextDecoder().decode(r.value.stdout):``;return r.value.exitCode===0?i.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${r.value.exitCode} during verification.`)}let{exitCode:r,stdout:i}=await w(C([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return r===0?i.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${r} during verification.`)}catch(e){if(e instanceof x)throw e;return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function qs(t){return e(`sha256`).update(t).digest(`hex`)}function Js(e){return e.trim().toLowerCase()}const Ys={source:`binary`,canHandle:e=>Xs(e)===`binary`,getRecoveryHint:(e,t)=>{let n=t?.error?.detail&&typeof t.error.detail==`object`&&`downloadUrl`in t.error.detail?String(t.error.detail.downloadUrl):Ta(e.executablePath);if(n)return t?.error?.kind===`locked`?`close other qtx processes and retry, or download and replace the binary from ${n}`:t?.error?.kind===`permission`?`check write permission for the current binary path, or download and replace the binary from ${n}`:t?.error?.kind===`network`?`check network access and retry, or download and replace the binary from ${n}`:`download and replace the binary from ${n}`},async upgrade(e,t){let n=e.target.binaryAsset;if(!n)return{error:e.target.resolutionError??{kind:`unsupported`,message:`No release artifact is available for the current platform and architecture.`},installSource:e.facts.installSource,success:!1};let r=zs(e.facts.executablePath),i=t?await Fs(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r,{networkPort:t.network,processPort:t.process,signal:t.signal,timeoutMs:t.timeoutMs}):await Fs(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r);return{...!i.success&&i.error?{...i,error:{...i.error,detail:{...typeof i.error.detail==`object`&&i.error.detail?i.error.detail:{},downloadUrl:n.downloadUrl}}}:i,installSource:e.facts.installSource,newVersion:i.success?e.target.targetVersion:void 0}}};function Xs(e){return`facts`in e?e.facts.installSource:e.installSource}async function Zs(e,t){return t.process?(await $s(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function Qs(e,t,n){if(!await Zs(e,n))return!1;try{let e=await $s([`bun`,`pm`,`-g`,`untrusted`],n,{forwardPipedOutput:!1,stdio:[`ignore`,`pipe`,`pipe`]});return!e||e.exitCode!==0?(await ec(t,n),!1):!Ht(e.stdout?new TextDecoder().decode(e.stdout):``).has(t)||await Zs([`bun`,`pm`,`-g`,`trust`,t],n)?!0:(await ec(t,n),!1)}catch(e){throw await ec(t,n),e}}async function $s(e,t,n){if(!t.process)return;let r=await t.process.run({argv:e,forwardPipedOutput:n.forwardPipedOutput,signal:t.signal,stdio:n.stdio,timeoutMs:t.timeoutMs});if(r.kind===`success`)return r.value;if(r.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0})}async function ec(e,t){try{await Zs([`bun`,`remove`,`-g`,e],{...t,signal:new AbortController().signal})}catch{}}const tc={source:`bun`,canHandle:e=>nc(e)===`bun`,getRecoveryHint:e=>`bun add -g ${K}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await Qs([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${K}@${n}`],K,t):await Et(K,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${K} through Bun.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function nc(e){return`facts`in e?e.facts.installSource:e.installSource}const rc={source:`npm`,canHandle:e=>ic(e)===`npm`,getRecoveryHint:e=>`npm install -g ${K}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await Zs([`npm`,`install`,`-g`,`${K}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await wr(K,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${K} through npm.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function ic(e){return`facts`in e?e.facts.installSource:e.installSource}const ac={source:`source`,canHandle:e=>{let t=`facts`in e?e.facts.installSource:e.installSource;return t===`source`||t===`unknown`},getRecoveryHint:()=>void 0,async upgrade(e){return{error:{kind:`unsupported`,message:`Install source "${e.facts.installSource}" does not support auto-update.`},installSource:e.facts.installSource,success:!1}}},oc=[tc,rc,Ys,ac];function sc(e){return oc.find(t=>t.canHandle(e))??ac}function cc(e,t,n=`stable`){return sc({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function lc(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:cc(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function uc(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:sc(e).getRecoveryHint(e,t)}async function dc(e){return Os(await Ds({updateChannel:e?.updateChannel}))}async function fc(e){let t=await Go({updateChannel:e?.updateChannel});return Os(await Ds({context:e?.context,facts:t}))}async function pc(e,t={}){let n=await gc(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await mc();if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new x({kind:`cancelled`});if(r.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return{error:{kind:r.error.kind===`conflict`?`locked`:`unknown`,message:r.error.message},installSource:n.facts.installSource,success:!1}}let i;try{let e=t.networkPort!==void 0||t.processPort!==void 0,r=t.signal??new AbortController().signal;i=await ks(n,await sc(n).upgrade(n,e?{network:t.networkPort,process:t.processPort,signal:r,stdio:t.stdio,timeoutMs:t.timeoutMs}:void 0),t.processPort?{process:t.processPort,signal:r,timeoutMs:t.timeoutMs}:void 0)}catch(e){let t=await r.value.release();throw t.kind===`failure`?Error(`Self-upgrade failed and its lock could not be released: ${t.error.message}`,{cause:e}):e}let a=await r.value.release();if(a.kind===`failure`)throw Error(a.error.message);return i}async function mc(){let e=await as();return e?{kind:`success`,value:{async release(){return await e(),{kind:`success`,value:void 0}}}}:{error:{kind:`conflict`,message:`Another qtx upgrade is already running.`},kind:`failure`}}function hc(e,t=n.execPath){return lc(e,t)}async function gc(e){return e?`facts`in e?e:e.installSource===`binary`?Ds({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):As(e):Ds()}function _c(e){return xc({...e,error:null,ok:!0})}function vc(e){return xc({...e,ok:!1})}function yc(e,t,n={}){let r=b();return r.cancelled&&!n.force||_a(ga(e.action),r.outputMode,e,t,e=>console.log(e),e=>Cc(e)),e}function bc(e,t={}){let n=b();if(!(n.cancelled&&!t.force))return va(ga(e.action),n.outputMode,e,e=>Cc(e))}function xc(e){let t=b();return{action:e.action,data:e.data,error:e.error??null,exitCode:e.exitCode,meta:{fetchedAt:t.freshness?.fetchedAt,mode:t.outputMode,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:es()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Sc(e){let t=b();return{action:e.action,data:e.data,meta:{fetchedAt:t.freshness?.fetchedAt,mode:`ndjson`,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:es()},target:e.target,type:e.type}}function Cc(e){let t=Sc(e);return wc(t),t}function wc(e){console.log(JSON.stringify(e))}const{createColors:Tc,isColorSupported:Ec}=le;function Dc(){let e=b().colorMode??`auto`;return Tc(e===`always`?!0:e===`never`?!1:Ec)}const Oc=new Proxy({},{get(e,t){let n=Dc(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{Ri as $,w as $t,go as A,vn as At,K as B,Wt as Bt,vo as C,cr as Ct,ho as D,In as Dt,So as E,Gn as Et,Oo as F,Gt as Ft,da as G,Xe as Gt,ca as H,Nt as Ht,Na as I,qt as It,Xi as J,et as Jt,Ji as K,st as Kt,Ua as L,Jt as Lt,Co as M,xn as Mt,yo as N,_n as Nt,wo as O,gn as Ot,Eo as P,F as Pt,Li as Q,S as Qt,wa as R,Kt as Rt,_o as S,hr as St,mo as T,er as Tt,la as U,P as Ut,sa as V,Pt as Vt,ua as W,Ct as Wt,zi as X,ze as Xt,Yi as Y,Qe as Yt,Ii as Z,x as Zt,Qo as _,Ir as _t,yc as a,b as an,Oi as at,Io as b,Cr as bt,fc as c,me as cn,Ei as ct,uc as d,_i as dt,C as en,Vi as et,Os as f,gi as ft,Jo as g,Kr as gt,os as h,$r as ht,bc as i,ge as in,ki as it,bo as j,yn as jt,xo as k,bn as kt,pc as l,fe as ln,z as lt,Ss as m,ei as mt,vc as n,Pe as nn,B as nt,hc as o,_e as on,Di as ot,Ds as p,si as pt,Zi as q,Ze as qt,_c as r,Ce as rn,Ai as rt,dc as s,pe as sn,Ti as st,Oc as t,Se as tn,Bi as tt,lc as u,Ci as ut,es as v,jr as vt,To as w,sr as wt,Z as x,gr as xt,Go as y,Ar as yt,Ta as z,Yt as zt};
@@ -1 +0,0 @@
1
- import{t as e}from"./commands-nkGABksp.mjs";export{e as commandsCommand};
@@ -1 +0,0 @@
1
- import{t as e}from"./ensure-D25oxWUc.mjs";export{e as ensureCommand};
@@ -1 +0,0 @@
1
- import{t as e}from"./inspect-twIhr3au.mjs";export{e as inspectCommand};
@@ -1 +0,0 @@
1
- import{Kt as e,Ot as t,Xt as n,dt as r}from"./color-nTiVIiHx.mjs";import{a as i,n as a,t as o}from"./provider-evidence-BjjRgpNG.mjs";import{r as s}from"./lifecycle-observations-DulNFMcZ.mjs";import{n as c}from"./agents-QYkiyHCD.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:B(t.signal)});continue}let a;try{a=await j(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:Te(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`updated`}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(R),n=[];for(let r of t){let t=await A(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Ce(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind!==`blocked`||e.category!==`unsafe-source`)return!1;let t=e.before;return t.observation.kind===`absent`&&t.observation.drift.kind===`none`&&!t.executable.present&&t.binding===void 0&&t.persistedBinding===void 0&&t.installedState===void 0&&t.receipt===void 0}async function A(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:B(t.signal)};let r=ve(n);if(!r)return{before:n,category:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:`The recorded update source does not match live provider evidence.`};let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return xe(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions}}}async function j(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:B(t.signal)};let n=()=>_e(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function _e(e,t){let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let a=ye(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=be(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:we(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}function ve(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function ye(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function be(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function xe(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${L(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,plannedTargetVersion:r,planning:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${i.decision};plan=${L(i.plan.id)};version=${L(r)};${I(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${Se(t.providerOutcome)}`}function Se(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${L(e.reason)}`}}function P(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function Ce(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;return`provider=${L(t.binding.providerId)};${I(t.providerOptions)}`}function I(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function R(e,t){return e<t?-1:e>t?1:0}function z(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function we(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Te(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ee(e,t=e=>c(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function De(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:c(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`){let t=K(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Le(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Oe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`)a=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Re(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function ke(e,t={}){let n=t.observe??s,r=Ee(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Me((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ae(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ae(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!je(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function je(e){try{return d(g(e.items))===d(e)}catch{return!1}}function V(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Me(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=Ne(n[e],r[e]);if(t!==0)return t}return 0})}function Ne(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Pe(t,n={}){let r=n.observe??s,i=await r(t),a=i?.agent.name??t,o=i?ze(i):void 0,c=n.observeProviderTarget??He,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Ge(await Ue(c,o.binding),o.binding)&&await We(l,o.executableName)===!1)return Ve(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Be({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=Fe(n.observation);if(i!==`clear`)return{kind:i};let o=await Ue(c,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let s=await We(l,t.executableName);return s===void 0?{kind:`inconclusive`}:s?{kind:`drifted`}:{kind:`satisfied`}}}}function Fe(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function Ie(e,t,n={}){let r=await(n.observe??s)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??s)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??s)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Le(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ke(c)||!qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Re(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!je(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=Le({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(e,t,n=e.receipt){let r={agentTargetId:t.before.agent.name,expectedVersion:t.plannedTargetVersion,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},i=q(e,r,n);if(i!==`satisfied`)return{kind:i};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let a=e.observation,o=W([e.executable.version,a.version])[0];return{evidence:{postcondition:{agentTargetId:r.agentTargetId,expectedVersion:r.expectedVersion,kind:`version-satisfies`,providerId:r.providerId,providerTargetKind:r.providerTargetKind,targetId:r.providerTargetId},receipt:{agentTargetId:r.agentTargetId,executableName:n.executableName??e.agent.binaryName,...a.executablePath?{executablePath:a.executablePath}:{},providerId:r.providerId,providerTargetKind:r.providerTargetKind,schemaVersion:n.schemaVersion,targetId:r.providerTargetId,version:o}},kind:`compatible`}}function q(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!a(i,e.binding,e.agent.binaryName)||!a(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let o=W([e.executable.version,e.observation.version]);if(o.length===0)return`inconclusive`;if(o.length>1)return`drifted`;let s=t(o[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function ze(e){let t=e.receipt?i(e.receipt):void 0;if(!(!t||!e.binding||!a(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Be(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ke(o)||!qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Ve(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function He(e){let t=n();try{return await t.run(()=>o(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Ue(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function We(e,t){try{return await e(t)}catch{return}}function Ge(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ke(e){return r.includes(e)}function qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{De as a,j as c,re as d,d as f,Ie as i,he as l,ke as n,Ee as o,Oe as r,pe as s,Pe as t,A as u};
@@ -1 +0,0 @@
1
- import{Ct as e,Dt as t,Et as n,Gt as r,Ht as i,L as a,M as o,O as s,Rt as c,S as ee,St as te,Tt as ne,Vt as re,Wt as ie,Xt as l,_t as ae,an as u,at as d,bt as f,dt as p,ft as oe,gt as se,ht as ce,it as m,lt as h,mt as le,nt as g,pt as ue,rn as _,tn as v,ut as de,vt as fe,wt as pe,xt as me,yt as y}from"./color-nTiVIiHx.mjs";import b from"node:process";import{AsyncLocalStorage as he}from"node:async_hooks";async function x(e){let t=r(),n=typeof e==`function`?e(t):e;try{return b.platform===`win32`?await _(v([`powershell.exe`,`-Command`,n]))===0:await _(v([`sh`,`-c`,n]))===0}catch{return!1}}function S(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>C(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?C(i,i=>t.install({context:i,target:w(e,n,void 0,r)})):k(`install`),uninstall:async(e,n,r,i)=>t.uninstall?C(i,i=>t.uninstall({context:i,target:w(e,n,r?.binaryName)})):k(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return k(`update`);let a=T(r);return C(i,i=>t.update({context:i,...a?{options:a}:{},target:w(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return k(`update-many`);let i=T(n);return C(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>w(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function C(e,t){if(e)return t(e);let n=l();try{return await t(n.context)}finally{n.dispose()}}function w(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function T(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function E(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>C(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?C(a,a=>t.install({context:a,target:i(e,n,r)})):k(`install`),uninstall:async(e,n,r,a)=>t.uninstall?C(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):k(`uninstall`),update:async(e,n,r,a)=>t.update?C(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):k(`update`),updateMany:async(e,n,r)=>t.updateMany?C(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):k(`update-many`)}}const D={brew:E(`brew`,ie,e=>e===`cask`?`cask`:`formula`),bun:S(`bun`,t,{getInstalledVersion:e=>re(e),probePackagePresence:e=>i(e)}),cargo:E(`cargo`,n,()=>`package`),deno:E(`deno`,ne,()=>`tool`),mise:E(`mise`,f,()=>`tool`,{getInstalledVersion:e=>me(e),probePackagePresence:e=>te(e)}),npm:S(`npm`,ae,{getInstalledVersion:e=>fe(e),probePackagePresence:e=>y(e)}),pip:E(`pip`,se,()=>`package`),uv:E(`uv`,ue,()=>`tool`,{getInstalledVersion:e=>le(e),probePackagePresence:e=>ce(e)}),winget:E(`winget`,oe,()=>`id`)},ge=Object.fromEntries(Object.entries(D).map(([e,t])=>[e,ve(t)]));function _e(e){return ge[e]}function O(e){return D[e]}function ve(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function k(e){return{kind:`unsupported`,operation:e}}const A={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},j=new he;function M(e){return j.getStore()?e():a(A,()=>j.run(!0,e))}async function N(){return(await c()).defaultPackageManager}async function P(){return{npmBunUpdateStrategy:(await c()).npmBunUpdateStrategy}}async function F(e){let t=r(),n=e.platforms[t];if(!n)return[];let i=await N();return i?[...n.filter(e=>e.type===i),...n.filter(e=>e.type!==i)]:[...n]}async function I(e,t,n,r,i,a,o,s){if(!s){let s=l();try{return await I(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=O(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function L(t,n,r,i){if(h(n.type)){let e=g(t,n);return e?I(n.type,e,n.binaryName??t.binaryName,n.packageInstallArgs,n.packageTargetKind,r,i):{kind:`failed`,reason:`package target is missing for ${t.name}`,retryable:!1}}if(r===`update`&&!d(n.type))return{kind:`unsupported`,operation:`update`};if(!n.command)return{kind:`failed`,reason:`install effect is missing for ${t.name}`,retryable:!1};let a=n.type===`script`?pe:e,o=l();try{return await a.install?.({context:o.context,target:{binaryName:n.binaryName??t.binaryName,effect:{command:n.command,kind:`shell-script`},id:t.name,kind:n.type}})??{kind:`unsupported`,operation:r}}finally{o.dispose()}}function R(e,t){if(e.packageName)return e.packageName;if(!(!t||!h(e.installType)))return g(t,{type:e.installType})}async function z(e,t,n){if(h(e.installType)){let r=R(e,n?.agent);return r?I(e.installType,r,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await x(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function B(e,t){if(!h(t.type))return;let n=g(e,t);n&&await I(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}async function ye(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await x(e.join(` `)))return!0;return!1}function V(e,t){let n={agentName:e.name,installType:t.type,packageName:g(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function be(e,t){if(u().cancelled)return null;let n=V(e,t);return u().cancelled?null:(await o(n),u().cancelled?(await s(e.name),null):n)}async function H(e,t){return M(async()=>{let n=t?[...t]:await F(e),r;for(let t of n){if(u().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await L(e,t,`install`);if(n.kind===`success`)return u().cancelled?(await B(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:V(e,t)}};let i=J(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,u().cancelled)return await B(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function xe(e){return M(async()=>{let t=await H(e);if(t.kind!==`success`||!t.value.installedState)return q(t);try{return u().cancelled?(await G(e,t.value.installedState),{success:!1}):(await o(t.value.installedState),u().cancelled?(await s(e.name),await G(e,t.value.installedState),{success:!1}):q(t))}catch(n){throw await G(e,t.value.installedState),n}})}async function Se(e,t){return M(async()=>{let{npmBunUpdateStrategy:n}=await P(),r=await F(e),i=t&&h(t.installType)?R(t,e):void 0,a=t?await z(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return u().cancelled||(await o(t),u().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return J(a);if(!t)for(let t of r){let r=await L(e,t,`update`,n);if(r.kind===`success`){let n=await be(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return J(r)}return(!t||!h(t.installType)||i)&&await ye(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function U(e,t){return q(await Se(e,t))}async function Ce(e,t){return M(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=O(e);return await r.isAvailable()?(await r.updateMany(n,await P())).kind===`success`:!1})}async function we(e,t,n){let r=O(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function Te(e,t){if(!h(e.installType))return!1;let n=O(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=R(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Ee(e){return(await M(async()=>{let t=await ee(e.name);return t?W(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function W(e,t){if(!m(t.installType))return await s(e.name),{kind:`success`,value:{installedState:t}};let n=await z(t,`uninstall`,{agent:e});return n.kind===`success`||await Te(t,e)?(await s(e.name),{kind:`success`,value:{installedState:t}}):J(n)}async function De(e,t){let n=await z(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:J(n)}async function G(e,t){if(!m(t.installType)||!h(t.installType))return;let n=R(t,e);n&&await I(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}function K(){let e=u().timeoutMs;return{signal:new AbortController().signal,timeoutMs:e===void 0?5e3:Math.max(10,Math.min(e,5e3))}}function q(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function J(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}function Y(e,t){let n=$(t.installType);if(!n)return;let r=je(e,t);if(r)return{providerId:n,target:{...t.packageInstallArgs?.length?{arguments:t.packageInstallArgs}:{},...t.binaryName||n===`binary`||n===`script`?{binaryName:t.binaryName??e.binaryName}:{},id:r,kind:Q(n,t.packageTargetKind)}}}function Oe(e){let t=$(e.providerId);if(!(!t||e.providerTargetId.length===0)&&!(t===`brew`&&e.providerTargetKind!==`cask`&&e.providerTargetKind!==`formula`))return{providerId:t,target:{...e.executableName?{binaryName:e.executableName}:{},id:e.providerTargetId,kind:e.providerTargetKind??Q(t)}}}async function ke(e,t){let n=(t.registry??de).get(e.providerId);return n?n.observe({context:{signal:t.signal,timeoutMs:t.timeoutMs},target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}function X(e,t){return Y(e,{agentName:e.name,...t.binaryName?{binaryName:t.binaryName}:{},...t.command?{command:t.command}:{},installType:t.type,...t.packageInstallArgs?{packageInstallArgs:t.packageInstallArgs}:{},...t.packageName?{packageName:t.packageName}:{},...t.packageTargetKind?{packageTargetKind:t.packageTargetKind}:{}})}function Ae(e,t){let n=(e.platforms[t]??[]).map(t=>({binding:X(e,t),method:t})),r=n.map(e=>e.binding).filter(e=>e!==void 0);return{bindings:r.filter((t,n)=>r.findIndex(n=>Z(n,t,e.binaryName))===n),unresolvedCandidates:n.filter(e=>e.binding===void 0).map(e=>e.method)}}function Z(e,t,n){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&(e.target.binaryName??n)===(t.target.binaryName??n)}function je(e,t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;switch(t.installType){case`bun`:case`npm`:return e.packages?.npm;case`cargo`:return e.packages?.cargo;case`deno`:return e.packages?.deno;case`mise`:return e.packages?.mise;case`pip`:return e.packages?.pip;case`uv`:return e.packages?.uv;case`binary`:case`script`:return e.binaryName;case`brew`:case`winget`:return}}function Q(e,t){switch(e){case`binary`:return`binary`;case`brew`:return t===`cask`?`cask`:`formula`;case`deno`:case`mise`:case`uv`:return`tool`;case`script`:return`script`;case`winget`:return`id`;case`bun`:case`cargo`:case`npm`:case`pip`:return`package`}}function $(e){return p.includes(e)?e:void 0}export{Ce as _,Oe as a,we as c,H as d,De as f,U as g,W as h,X as i,F as l,Ee as m,Z as n,Y as o,G as p,Ae as r,V as s,ke as t,xe as u,M as v,_e as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./resolve-BOxNGmVh.mjs";export{e as resolveCommand};
@@ -1 +0,0 @@
1
- import{n as e}from"./schema-Bl1ZPNI9.mjs";export{e as schemaCommand};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{E as r,I as i,J as a,Rt as o,Xt as s,a as c,an as l,i as u,n as d,r as f,t as p,ut as m}from"./color-nTiVIiHx.mjs";import{r as h}from"./agents-Dc-rbRUf.mjs";import{v as g}from"./provider-evidence-BjjRgpNG.mjs";import{t as _}from"./update-planner-B74AB4_X.mjs";import{t as v}from"./lifecycle-observations-DulNFMcZ.mjs";import{n as y}from"./agents-QYkiyHCD.mjs";import{a as b,i as x,n as S,r as C}from"./user-output-CgBsxSsM.mjs";import{a as w,c as T,l as E,r as D,s as O,u as k}from"./lifecycle-policy-a_ing0Qc.mjs";async function A(){let e=j();try{return await e.run()}finally{e.dispose()}}function j(){let e=s(),t=0,n=!1,a=!1,c,l,u,d,f=()=>{!n||a||t>0||(a=!0,e.dispose())},p=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,f()}},y=()=>(u??=o().then(t=>{let n=v(e.context);return{classifyMutationLockError:e=>i(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:S(),listRegisteredAgentNames:()=>h().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:_,providerRegistry:m,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:g,writeReceipt:r.write}}),u),b=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(l??=p(async()=>E(await y())),l);return{dispose(){n||(n=!0,f())},getOutcome:()=>c,async observe(e){return p(async()=>(await y()).observe(e))},prepare:b,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(d??=(async()=>{let e=await b();return c=await p(async()=>O(e,await y())),c})(),d)}}}async function M(e){let t=N(e);try{return await t.run()}finally{t.dispose()}}function N(e){let t=s(),n=0,i=!1,a=!1,c,l,u,d,f=()=>{!i||a||n>0||(a=!0,t.dispose())},p=async e=>{if(i)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},h=()=>(u??=o().then(e=>{let n=v(t.context);return{clock:()=>new Date().toISOString(),dryRun:S(),observe:n.resolveAgentObservation,planLifecycleUpdate:_,providerRegistry:m,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:g,writeReceipt:r.write}}),u),y=()=>i?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(l??=p(async()=>k(e,await h())),l);return{dispose(){i||(i=!0,f())},getOutcome:()=>c,async observe(e){return p(async()=>(await h()).observe(e))},prepare:y,run(){return i?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(d??=(async()=>{let e=await y();return c=e.kind===`planned`?await p(async()=>T(e.planned,await h())):e,c})(),d)}}}async function P(e,t,n={runBatch:A,runSingle:M}){if(t)return I(n);if(!e)return c(d({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),G);let r=y(e);return r?L(r,n):c(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),G)}function F(e,t){if(t){let t=j();return{dispose:t.dispose,idempotencyPolicy:()=>D(t),run:()=>P(e,!0,{runBatch:()=>t.run(),runSingle:M})}}if(!e)return{dispose(){},run:()=>P(e,t)};let n=N(e);return{dispose:n.dispose,idempotencyPolicy:()=>w(e,n),run:()=>P(e,!1,{runBatch:A,runSingle:()=>n.run()})}}async function I(e){u({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=B(t);return U(t)?c(d({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`}}),G):n.some(e=>e.status===`failed`||e.status===`locked`)?c(d({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`}}),G):c(f({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`}}),G)}async function L(e,t){u({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!i(t))throw t;return c(d({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),G)}let r=z(n);if(n.kind===`unknown-agent`)return c(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),G);if(r?.observation.kind===`absent`)return c(d({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name}}),G);let a=R(e,n);return W([],a),n.kind===`cancelled`?c(d({action:`update`,data:{results:[a],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),G):a.status===`failed`||a.status===`locked`?c(d({action:`update`,data:{results:[a],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),G):c(f({action:`update`,data:{results:[a],scope:`single`},target:{kind:`agent`,name:e.name}}),G)}function R(t,n){let r=z(n),i=`plan`in n?n.plan:void 0,a=r?.observation.kind===`present`?r.observation.version:void 0,o=i?.plannedTargetVersion,s=i?`managed/${i.binding.providerId}`:r?.binding?.providerId;switch(n.kind){case`updated`:return{displayName:t.displayName,installedVersion:a,latestVersion:n.receipt.version??o,name:t.name,status:`updated`,strategy:s};case`dry-run`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:s};case`not-executed`:return n.plan.planning.decision===`up-to-date`?{displayName:t.displayName,installedVersion:a,latestVersion:o,name:t.name,status:`up-to-date`}:{displayName:t.displayName,installedVersion:a,latestVersion:o,message:e(t),name:t.name,status:`manual-required`};case`blocked`:return{displayName:t.displayName,installedVersion:a,message:n.reason,name:t.name,status:`failed`};case`cancelled`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:n.reason??`Update was cancelled before it could complete.`,name:t.name,status:`failed`,strategy:s};case`timed-out`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:`Update timed out after ${n.timeoutMs}ms.`,name:t.name,status:`failed`,strategy:s};case`provider-failed`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,name:t.name,status:`failed`,strategy:s};case`verification-failed`:case`receipt-failed`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:n.kind===`receipt-failed`?n.reason:n.verification.reason,name:t.name,status:`failed`,strategy:s};case`unknown-agent`:return{displayName:t.displayName,name:t.name,status:`failed`}}}function z(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function B(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);e?W(r,V(e)):a&&W(r,H(a))}return r}function V(r){let i=r.planning.kind===`unknown-agent`?void 0:r.planning.kind===`planned`?r.planning.planned.before:r.planning.before,o=y(r.agentName);if(!o)return{displayName:i?.agent.displayName??r.agentName,name:r.agentName,status:`failed`};let s=r.execution;if(r.planning.kind===`blocked`&&r.planning.category===`untracked`)return{displayName:o.displayName,installedVersion:r.planning.before.observation.kind===`present`?r.planning.before.observation.version:void 0,message:t(o),name:o.name,status:`manual-required`};if(r.planning.kind===`blocked`&&r.planning.category===`manual-required`)return{displayName:o.displayName,installedVersion:r.planning.before.observation.kind===`present`?r.planning.before.observation.version:void 0,message:e(o),name:o.name,status:`manual-required`};if(s?.kind===`locked`)return{displayName:o.displayName,installedVersion:s.plan.before.observation.kind===`present`?s.plan.before.observation.version:void 0,latestVersion:s.plan.plannedTargetVersion,message:s.reason,name:o.name,resource:s.resource,status:`locked`,strategy:`managed/${s.plan.binding.providerId}`};if(s?.kind===`unexpected-failure`)return{displayName:o.displayName,installedVersion:s.plan.before.observation.kind===`present`?s.plan.before.observation.version:void 0,latestVersion:s.plan.plannedTargetVersion,message:s.reason,name:o.name,status:`failed`,strategy:`managed/${s.plan.binding.providerId}`};let c=s??(r.planning.kind===`planned`?{kind:`not-executed`,plan:r.planning.planned}:r.planning),l=R(o,c);return l.status===`failed`&&c.kind===`provider-failed`&&(l.hint=n(o,a({agent:o,installedState:i?.installedState,methods:[...i?.methods??[]]}))),l}function H(e){let t=y(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:e.planning.planned.plannedTargetVersion,message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:`managed/${e.planning.planned.binding.providerId}`}}function U(e){return l().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function W(e,t){e.push(t),u({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function G(e){if(!e.data){e.error&&C(p.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`up-to-date`:x(p.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:b(p.yellow(`${t.displayName}: manual action required.`)),t.message&&b(p.cyan(`Next step: ${t.message}`));break;case`planned`:b(p.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${K(t.installedVersion,t.latestVersion)}`));break;case`updated`:x(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${K(t.installedVersion,t.latestVersion)}`)),x(p.green(`${t.displayName} updated successfully!`));break;case`failed`:x(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${K(t.installedVersion,t.latestVersion)}`)),C(p.red(`Failed to update ${t.displayName}.`)),t.hint&&b(p.cyan(`Next step: ${t.hint}`));break;case`locked`:b(p.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&q(e.data.results),!e.data.results.length&&e.error&&C(p.red(e.error.message))}function K(e,t){return e?` (${e} -> ${t??`latest`})`:``}function q(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&x(p.bold(`Summary: ${n.join(`, `)}`))}export{F as createUpdateCommandInvocation};
@@ -1 +0,0 @@
1
- import{Ot as e,Zt as t,a as n,an as r,b as i,d as a,en as o,f as s,h as c,l,n as u,nn as d,on as f,p,r as m,t as h}from"./color-nTiVIiHx.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-CgBsxSsM.mjs";import{n as b,t as x}from"./version-cache-pl3cl25u.mjs";const S={platform:process.platform,spawn:(e,t)=>o(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:d,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=r(),t=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&t.cancel(`cancelled`);let n=f(()=>t.cancel(`cancelled`)),i=!1,a={plan:e=>p({context:e.context,metadataCache:e.metadataCache,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>l(e,t)};return{dispose(){i||(i=!0,n())},run:e=>k(e,t,a)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:c(),network:T(),persistence:i(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}async function P(e={}){let r=v(),i=j(),o=await i.run({check:e.check??!1,dryRun:r,updateChannel:e.channel}).finally(()=>i.dispose());if(o.kind===`interrupted`)throw new t({kind:`cancelled`,reason:o.error.message});let c=o.plan,l=s(c),d=I(l),f=R(l);if(c.status===`up-to-date`)return n(m({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F);if(e.check||r)return c.status===`update-available`?n(m({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`update-available`},exitCode:e.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[],...r?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),F):n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,status:`check-unavailable`},error:{code:`NETWORK_ERROR`,message:`Unable to determine the latest Quantex CLI version.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F);if(c.status===`manual-required`){let e=a(l);return n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:e,status:`manual-required`},error:{code:`MANUAL_ACTION_REQUIRED`,message:`Quantex CLI cannot auto-update from the current install source: ${l.installSource}.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F)}if(o.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let p=o.result;if(p.success)return n(m({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`updated`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F);let h=a(l,p);return n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:h,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:p.error?.kind?{kind:p.error.kind}:void 0,message:p.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...h?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${h}`}]:[]]}),F)}function F(e){if(!e.data){e.error&&y(h.red(e.error.message));return}if(e.data.status===`up-to-date`){_(h.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),L(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;g(h.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),L(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(h.yellow(e.error.message)),L(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){g(h.yellow(e.error.message)),e.data.recoveryHint&&g(h.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(_(h.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){_(h.green(`Quantex CLI upgraded successfully.`)),L(e.warnings);return}y(h.red(`Failed to upgrade Quantex CLI.`)),g(h.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)g(h.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function I(e){return!e.latestVersion||!e.upstreamLatestVersion||e.latestVersion===e.upstreamLatestVersion||e.installSource!==`bun`&&e.installSource!==`npm`?[]:[{code:`MIRROR_LAG`,details:{installableLatestVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion},message:`The selected registry currently installs ${e.latestVersion}, while upstream npm has ${e.upstreamLatestVersion}. Retry later or set selfUpdateRegistry / QTX_SELF_UPDATE_REGISTRY to another registry if you need the upstream release now.`}]}function L(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(h.yellow(t.message))}function R(t){if(!t.latestVersion)return;let n=e(t.latestVersion,t.currentVersion);if(!(n===void 0||n>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:t.currentVersion,latestVersion:t.latestVersion},message:`The resolved latest version ${t.latestVersion} is older than the installed Quantex CLI ${t.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{P as upgradeCommand};