quantex-cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +32 -10
  2. package/README.zh-CN.md +35 -11
  3. package/dist/agent-inspection-wRTbdD0j.mjs +1 -0
  4. package/dist/agent-installation-BkHxGD5U.mjs +1 -0
  5. package/dist/agents-Dc-rbRUf.mjs +1 -0
  6. package/dist/agents-QYkiyHCD.mjs +1 -0
  7. package/dist/capabilities-Bh_eBfhw.mjs +5 -0
  8. package/dist/capabilities-ch-hI24w.mjs +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/color-nTiVIiHx.mjs +8 -0
  11. package/dist/commands-CYTtSxZf.mjs +1 -0
  12. package/dist/commands-nkGABksp.mjs +3 -0
  13. package/dist/config-EvqcZt-0.mjs +3 -0
  14. package/dist/doctor-EOCE9dy3.mjs +3 -0
  15. package/dist/ensure-D25oxWUc.mjs +1 -0
  16. package/dist/ensure-dKuczClK.mjs +1 -0
  17. package/dist/errors-BzuGM14H.mjs +1 -0
  18. package/dist/errors-DXzIacfk.mjs +1 -0
  19. package/dist/index.d.mts +128 -29
  20. package/dist/index.mjs +2 -2
  21. package/dist/info-BcXErzU4.mjs +2 -0
  22. package/dist/inspect-OWIjKOVn.mjs +1 -0
  23. package/dist/inspect-twIhr3au.mjs +3 -0
  24. package/dist/install-DQDkbPV-.mjs +1 -0
  25. package/dist/lifecycle-errors-BXlHX_YF.mjs +1 -0
  26. package/dist/lifecycle-observations-DulNFMcZ.mjs +1 -0
  27. package/dist/lifecycle-policy-a_ing0Qc.mjs +1 -0
  28. package/dist/list-DTqeDd5E.mjs +3 -0
  29. package/dist/provider-evidence-BjjRgpNG.mjs +1 -0
  30. package/dist/provider-observations-DWwL6PR0.mjs +1 -0
  31. package/dist/resolve-BOxNGmVh.mjs +1 -0
  32. package/dist/resolve-CTU1uwe8.mjs +1 -0
  33. package/dist/schema-Bl1ZPNI9.mjs +3 -0
  34. package/dist/schema-zT2KCR-F.mjs +1 -0
  35. package/dist/uninstall-DV8hdNkb.mjs +1 -0
  36. package/dist/update-BJCwO1ja.mjs +1 -0
  37. package/dist/update-planner-B74AB4_X.mjs +1 -0
  38. package/dist/upgrade-81zRKaAq.mjs +1 -0
  39. package/dist/{user-output-DV2J3Ydm.mjs → user-output-CgBsxSsM.mjs} +1 -1
  40. package/dist/version-cache-pl3cl25u.mjs +1 -0
  41. package/package.json +6 -3
  42. package/dist/agents-P3f9iWEs.mjs +0 -1
  43. package/dist/capabilities-BEDb8xQf.mjs +0 -5
  44. package/dist/capabilities-C8OrgAMi.mjs +0 -1
  45. package/dist/color-CtIn3BLf.mjs +0 -6
  46. package/dist/commands-BZLGRJch.mjs +0 -1
  47. package/dist/commands-C8Cjtqjn.mjs +0 -3
  48. package/dist/config-DAEqqWBI.mjs +0 -3
  49. package/dist/detect-D84qpua_.mjs +0 -1
  50. package/dist/doctor-C7gfJcNX.mjs +0 -3
  51. package/dist/ensure-B71EjlnR.mjs +0 -1
  52. package/dist/ensure-BgZwJ17g.mjs +0 -1
  53. package/dist/errors-DCtNasuC.mjs +0 -1
  54. package/dist/info-ZQDUs0bK.mjs +0 -2
  55. package/dist/inspect-DDe70zbR.mjs +0 -1
  56. package/dist/inspect-lI3PWPs3.mjs +0 -3
  57. package/dist/install-DOxjCx5v.mjs +0 -1
  58. package/dist/lifecycle-errors-D7JpbOsK.mjs +0 -1
  59. package/dist/list-DjgfI7DP.mjs +0 -3
  60. package/dist/resolve-BWUq-s_R.mjs +0 -1
  61. package/dist/resolve-CX8YaOEv.mjs +0 -1
  62. package/dist/schema-4dHGgkBt.mjs +0 -1
  63. package/dist/schema-DA5oEdRr.mjs +0 -3
  64. package/dist/uninstall-CyGhnH4k.mjs +0 -1
  65. package/dist/update-C34xtbDQ.mjs +0 -1
  66. package/dist/update-UeQ_F4kP.mjs +0 -1
  67. package/dist/upgrade-5uiTpWn2.mjs +0 -1
@@ -0,0 +1,8 @@
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};
@@ -0,0 +1 @@
1
+ import{t as e}from"./commands-nkGABksp.mjs";export{e as commandsCommand};
@@ -0,0 +1,3 @@
1
+ import{V as e,W as t,a as n,r,t as i}from"./color-nTiVIiHx.mjs";async function a(){return n(r({action:`commands`,data:{commands:e().map(t)},target:{kind:`system`,name:`commands`}}),o)}function o(e){if(e.data){console.log(i.bold(`
2
+ Quantex Commands
3
+ `));for(let t of e.data.commands){let e=t.flags.length>0?i.dim(` [${t.flags.join(`, `)}]`):``;console.log(` ${i.cyan(t.name)}${e}`),console.log(` ${t.summary}`),console.log(` ${i.dim(t.outputSchemaRef)}`)}console.log()}}export{a as t};
@@ -0,0 +1,3 @@
1
+ import{Bt as e,It as t,Lt as n,Rt as r,Ut as i,a,n as o,r as s,t as c,zt as l}from"./color-nTiVIiHx.mjs";async function u(c,u,f){if(!c)return a(s({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),d);switch(c){case`get`:{if(!u)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await r())[u];return a(s({action:`config`,data:{action:`get`,key:u,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!t(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!n(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!i(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let e={};try{e=await r()}catch{}return e[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?i(f):f,await l(e),a(s({action:`config`,data:{action:`set`,key:u,value:e[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await l(e),a(s({action:`config`,data:{action:`reset`,config:e},target:{kind:`config`}}),d);default:return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(c.bold(`
2
+ Current Configuration:
3
+ `)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
@@ -0,0 +1,3 @@
1
+ import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{B as n,Nt as r,Xt as i,a,c as o,d as s,r as c,t as l}from"./color-nTiVIiHx.mjs";import{n as u,t as d}from"./provider-observations-DWwL6PR0.mjs";import{n as f}from"./lifecycle-observations-DulNFMcZ.mjs";import{t as p}from"./agent-inspection-wRTbdD0j.mjs";async function m(){let n=i(),l,m,_;try{[l,m,_]=await n.run(()=>Promise.all([d({context:n.context}),o({context:n.context}),f(n.context)]))}finally{n.dispose()}let v=u(l,e=>e.availability.kind===`success`),{brew:y,bun:b,cargo:x,deno:S}=v,{mise:C,npm:w,pip:T,uv:E,winget:D}=v,O=m.latestVersion?r(m.latestVersion,m.currentVersion):!1,k=_.map(e=>({inspection:p(e),observation:e})),A=k.filter(({inspection:e})=>e.inPath).map(({inspection:e})=>({displayName:e.agent.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion),sourceLabel:e.sourceLabel})),j=[],M=`docs/runbooks/quantex-troubleshooting.md`,N=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!b&&!w&&!y&&!x&&!S&&!C&&!T&&!E&&!D&&j.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:M,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(m.installSource===`bun`&&!b||m.installSource===`npm`&&!w)&&j.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:N,message:`Quantex CLI is tracked as a ${m.installSource} install, but ${m.installSource} is not available in PATH. Reinstall that package manager or reinstall Quantex from a supported source.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`restore-self-installer`,suggestedCommands:g(m.installSource,m.updateChannel)}),m.canAutoUpdate||j.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:N,message:`Quantex CLI cannot auto-update from install source "${m.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),O&&m.recommendedUpgradeCommand){let e=s(m);j.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:N,message:e?`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[m.recommendedUpgradeCommand]})}for(let{inspection:n,observation:r}of k.filter(e=>e.inspection.inPath)){if(r.observation.drift.kind===`untracked`&&j.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:M,message:`${n.agent.displayName} is available in PATH but not tracked as a managed Quantex install. Use \`quantex inspect ${n.agent.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${n.agent.name} --json`,`quantex install ${n.agent.name}`]}),!(n.installedVersion&&n.latestVersion&&n.installedVersion!==n.latestVersion)||n.lifecycle===`managed`)continue;let i=t(n.agent,n.agent.selfUpdate?`self-update`:`manual-hint`)??e(n.agent);j.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:M,message:`${n.agent.displayName} ${n.installedVersion} is behind ${n.latestVersion}, but the current source is ${n.sourceLabel}. ${i}`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:n.agent.selfUpdate?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n.agent.selfUpdate?[n.agent.selfUpdate.command.join(` `)]:[]})}return a(c({action:`doctor`,data:{agents:A,issues:j,installers:v,self:{canAutoUpdate:m.canAutoUpdate,currentVersion:m.currentVersion,installSource:m.installSource,latestVersion:m.latestVersion,outdated:!!O,recoveryHint:O?s(m):void 0}},target:{kind:`system`,name:`doctor`}}),h)}function h(e){if(e.data){if(console.log(l.bold(`
2
+ Quantex CLI Environment Check
3
+ `)),console.log(l.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?l.green(`available`):l.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?l.green(`available`):l.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?l.green(`available`):l.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?l.green(`available`):l.red(`not found`)}`),console.log(` deno: ${e.data.installers.deno?l.green(`available`):l.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?l.green(`available`):l.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?l.green(`available`):l.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?l.green(`available`):l.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?l.green(`available`):l.red(`not found`)}`),console.log(`\n${l.bold(`Quantex CLI:`)}`),console.log(` Version: ${e.data.self.currentVersion}`),console.log(` Source: ${e.data.self.installSource}`),console.log(` Auto-update: ${e.data.self.canAutoUpdate?l.green(`supported`):l.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?l.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${l.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(l.dim(` No agents installed`));else for(let t of e.data.agents)console.log(` ${t.displayName}: ${t.installedVersion??`unknown`} [${t.lifecycle}; ${t.sourceLabel}]${t.outdated?l.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${l.bold(`Issues:`)}`),e.data.issues.length===0)console.log(l.green(` No issues found.`));else for(let t of e.data.issues)console.log(l.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(l.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function g(e,t){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}export{m as doctorCommand};
@@ -0,0 +1 @@
1
+ import{I as e,a as t,et as n,i as r,n as i,r as a,t as o}from"./color-nTiVIiHx.mjs";import{v as s}from"./provider-evidence-BjjRgpNG.mjs";import{t as c}from"./agent-installation-BkHxGD5U.mjs";import{r as l}from"./lifecycle-observations-DulNFMcZ.mjs";import{n as u}from"./agents-QYkiyHCD.mjs";import{t as d}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-CgBsxSsM.mjs";async function g(n){if(!u(n)||m())return _(n);try{return await s(()=>_(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),C);throw r}}async function _(r){let a=await l(r);if(!a)return t(i({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),C);let{agent:o}=a,s=a.pathExecutable.present,u=a.installedState,f=s&&!u?n(a.methods,a.resolvedBinaryPath??a.pathExecutable.path):void 0;if(s&&!u&&!f)return t(x(o),C);let p=u&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?b(o):y(o,p===`adopt`,!!u),C);p!==`satisfied`&&v(o);try{return t(S(o,p,await c({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:u,lifecycle:a.observation,methods:a.methods},operation:`ensure`,route:p})),C)}catch(n){if(e(n))return t(i({action:`ensure`,data:{agent:{displayName:o.displayName,name:o.name},changed:!1,installed:s},...d(n,{kind:`agent`,name:o.name})}),C);throw n}}function v(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function y(e,t,n){return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function b(e){return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function x(e){return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function S(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return b(e);let r=n.value.value.installedState;return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:n.value.changed?{installType:r.installType,packageName:r.packageName}:void 0,installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let r=n.kind===`cancelled`?{code:`CANCELLED`,message:`Ensure was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:n.kind===`failed`&&n.reason.endsWith(`-after-ensure`)||n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after ensure completed.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return i({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:r,target:{kind:`agent`,name:e.name}})}function C(e){if(e.error){h(o.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){p(o.green(t.message));continue}if(t.code===`DRY_RUN`){f(o.cyan(t.message));continue}f(o.yellow(t.message))}return}if(e.data.changed){p(o.cyan(`Installing ${e.data.agent.displayName}...`)),p(o.green(`${e.data.agent.displayName} is now installed.`));return}p(o.green(`${e.data.agent.displayName} is already installed.`))}}export{g as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./ensure-D25oxWUc.mjs";export{e as ensureCommand};
@@ -0,0 +1 @@
1
+ import{r as e}from"./errors-DXzIacfk.mjs";export{e as getExitCodeForResult};
@@ -0,0 +1 @@
1
+ const e=[`AGENT_NOT_FOUND`,`AGENT_NOT_INSTALLED`,`CANCELLED`,`INSTALL_FAILED`,`INTERACTION_REQUIRED`,`INVALID_ARGUMENT`,`MANUAL_ACTION_REQUIRED`,`NETWORK_ERROR`,`RESOURCE_LOCKED`,`STATE_READ_ERROR`,`TIMEOUT`,`UNINSTALL_FAILED`,`UNINSTALL_UNMANAGED`,`UPDATE_FAILED`,`UPGRADE_FAILED`];function t(e){switch(e){case`INVALID_ARGUMENT`:return 2;case`AGENT_NOT_FOUND`:return 3;case`AGENT_NOT_INSTALLED`:return 4;case`NETWORK_ERROR`:return 6;case`INTERACTION_REQUIRED`:return 7;case`MANUAL_ACTION_REQUIRED`:return 8;case`RESOURCE_LOCKED`:return 9;case`STATE_READ_ERROR`:return 12;case`TIMEOUT`:return 10;case`CANCELLED`:return 11;default:return 1}}function n(e){return e.exitCode===void 0?e.ok?0:e.error?t(e.error.code):1:e.exitCode}export{t as n,n as r,e as t};
package/dist/index.d.mts CHANGED
@@ -67,10 +67,14 @@ declare const devin: AgentDefinition;
67
67
  declare const droid: AgentDefinition;
68
68
  declare const gemini: AgentDefinition;
69
69
  declare const genie: AgentDefinition;
70
+ declare const grok: AgentDefinition;
71
+ declare const hermes: AgentDefinition;
70
72
  declare const jcode: AgentDefinition;
71
73
  declare const junie: AgentDefinition;
72
74
  declare const kilo: AgentDefinition;
75
+ declare const mimo: AgentDefinition;
73
76
  declare const omp: AgentDefinition;
77
+ declare const openclaw: AgentDefinition;
74
78
  declare const opencode: AgentDefinition;
75
79
  declare const openhands: AgentDefinition;
76
80
  declare const pi: AgentDefinition;
@@ -626,6 +630,82 @@ declare function getAllAgents(): AgentDefinition[];
626
630
  declare function getAgentByLookupName(name: string): AgentDefinition | undefined;
627
631
  declare function getAgentByNameOrAlias(name: string): AgentDefinition | undefined;
628
632
  //#endregion
633
+ //#region src/providers/types.d.ts
634
+ interface ProviderOperationContext {
635
+ readonly registerCleanup?: (cleanup: ProviderResourceCleanup) => () => void;
636
+ readonly signal: AbortSignal;
637
+ readonly timeoutMs?: number;
638
+ }
639
+ interface ProviderResourceCleanup {
640
+ cleanup(): Promise<void> | void;
641
+ force?(): Promise<void> | void;
642
+ }
643
+ //#endregion
644
+ //#region src/runtime/ports.d.ts
645
+ type RuntimeFailureKind = 'cancelled' | 'conflict' | 'failed' | 'invalid-data' | 'not-found' | 'timed-out' | 'unavailable';
646
+ interface RuntimeFailure {
647
+ readonly code?: string;
648
+ readonly details?: Readonly<Record<string, unknown>>;
649
+ readonly kind: RuntimeFailureKind;
650
+ readonly message: string;
651
+ readonly retryable?: boolean;
652
+ }
653
+ type RuntimeOutcome<T> = {
654
+ readonly kind: 'failure';
655
+ readonly error: RuntimeFailure;
656
+ } | {
657
+ readonly kind: 'success';
658
+ readonly value: T;
659
+ };
660
+ interface ProcessRequest {
661
+ readonly argv: readonly string[];
662
+ readonly cwd?: string;
663
+ readonly env?: Readonly<Record<string, string | undefined>>;
664
+ readonly forwardPipedOutput?: boolean;
665
+ readonly signal: AbortSignal;
666
+ readonly stdio?: readonly [ProcessStdio, ProcessStdio, ProcessStdio];
667
+ readonly timeoutMs?: number;
668
+ }
669
+ type ProcessStdio = 'ignore' | 'inherit' | 'pipe';
670
+ interface ProcessResult {
671
+ readonly exitCode: number | null;
672
+ readonly stderr?: Uint8Array;
673
+ readonly stdout?: Uint8Array;
674
+ readonly terminationSignal?: string;
675
+ }
676
+ interface ProcessPort {
677
+ run(request: ProcessRequest): Promise<RuntimeOutcome<ProcessResult>>;
678
+ }
679
+ interface NetworkRequest {
680
+ readonly body?: Uint8Array;
681
+ readonly headers?: Readonly<Record<string, string>>;
682
+ readonly method?: string;
683
+ readonly signal: AbortSignal;
684
+ readonly timeoutMs?: number;
685
+ readonly url: string;
686
+ }
687
+ interface NetworkResponse {
688
+ readonly body: Uint8Array;
689
+ readonly headers: Readonly<Record<string, string>>;
690
+ readonly status: number;
691
+ }
692
+ interface NetworkPort {
693
+ request(request: NetworkRequest): Promise<RuntimeOutcome<NetworkResponse>>;
694
+ }
695
+ interface LockAcquireRequest {
696
+ readonly resource: string;
697
+ readonly scope: readonly string[];
698
+ readonly signal: AbortSignal;
699
+ readonly timeoutMs?: number;
700
+ }
701
+ interface LockLease {
702
+ /** Idempotent cleanup that must not depend on the acquisition signal. */
703
+ release(): Promise<RuntimeOutcome<void>>;
704
+ }
705
+ interface LockPort {
706
+ acquire(request: LockAcquireRequest): Promise<RuntimeOutcome<LockLease>>;
707
+ }
708
+ //#endregion
629
709
  //#region src/self/release.d.ts
630
710
  interface BinaryReleaseAsset {
631
711
  arch: 'arm64' | 'x64';
@@ -692,7 +772,7 @@ interface SelfUpgradePlan {
692
772
  updateAvailable: boolean;
693
773
  }
694
774
  //#endregion
695
- //#region src/state/index.d.ts
775
+ //#region src/state/schema.d.ts
696
776
  interface InstalledAgentState {
697
777
  agentName: string;
698
778
  binaryName?: string;
@@ -712,6 +792,8 @@ interface QuantexState {
712
792
  installedAgents: Record<string, InstalledAgentState>;
713
793
  self: SelfState;
714
794
  }
795
+ //#endregion
796
+ //#region src/state/index.d.ts
715
797
  declare function getStateFilePath(): string;
716
798
  declare function loadState(): Promise<QuantexState>;
717
799
  declare function saveState(state: QuantexState): Promise<void>;
@@ -792,7 +874,7 @@ declare function resetCliContext(): void;
792
874
  declare function resolveCliContext(options?: CliContextOptions): CliContext;
793
875
  //#endregion
794
876
  //#region src/errors.d.ts
795
- declare const cliErrorCodes: readonly ["AGENT_NOT_FOUND", "AGENT_NOT_INSTALLED", "CANCELLED", "INSTALL_FAILED", "INTERACTION_REQUIRED", "INVALID_ARGUMENT", "MANUAL_ACTION_REQUIRED", "NETWORK_ERROR", "RESOURCE_LOCKED", "TIMEOUT", "UNINSTALL_FAILED", "UPDATE_FAILED", "UPGRADE_FAILED"];
877
+ declare const cliErrorCodes: readonly ["AGENT_NOT_FOUND", "AGENT_NOT_INSTALLED", "CANCELLED", "INSTALL_FAILED", "INTERACTION_REQUIRED", "INVALID_ARGUMENT", "MANUAL_ACTION_REQUIRED", "NETWORK_ERROR", "RESOURCE_LOCKED", "STATE_READ_ERROR", "TIMEOUT", "UNINSTALL_FAILED", "UNINSTALL_UNMANAGED", "UPDATE_FAILED", "UPGRADE_FAILED"];
796
878
  type CliErrorCode = (typeof cliErrorCodes)[number];
797
879
  declare function getExitCodeForError(code: CliErrorCode): number;
798
880
  declare function getExitCodeForResult(result: Pick<CommandResult, 'ok' | 'error' | 'exitCode'>): number;
@@ -898,16 +980,35 @@ interface CapabilitiesData {
898
980
  }
899
981
  declare function capabilitiesCommand(): Promise<CommandResult<CapabilitiesData>>;
900
982
  //#endregion
901
- //#region src/commands/commands.d.ts
902
- interface CommandDescriptor {
983
+ //#region src/command-contract/schemas.d.ts
984
+ type JsonSchemaType = 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string';
985
+ interface JsonSchema {
986
+ additionalProperties?: boolean;
987
+ items?: JsonSchema;
988
+ properties?: Record<string, JsonSchema>;
989
+ required?: string[];
990
+ type: JsonSchemaType | JsonSchemaType[];
991
+ }
992
+ interface SchemaDocument {
993
+ dataSchema: JsonSchema;
994
+ description: string;
995
+ envelopeSchema: JsonSchema;
996
+ name: string;
997
+ ndjsonEventSchema?: JsonSchema;
998
+ }
999
+ //#endregion
1000
+ //#region src/command-contract/registry.d.ts
1001
+ interface V1CommandDescriptor {
903
1002
  flags: string[];
904
1003
  name: string;
905
1004
  outputSchemaRef: string;
906
1005
  stability: 'stable';
907
1006
  summary: string;
908
1007
  }
1008
+ //#endregion
1009
+ //#region src/commands/commands.d.ts
909
1010
  interface CommandsCommandData {
910
- commands: CommandDescriptor[];
1011
+ commands: V1CommandDescriptor[];
911
1012
  }
912
1013
  declare function commandsCommand(): Promise<CommandResult<CommandsCommandData>>;
913
1014
  //#endregion
@@ -998,25 +1099,11 @@ interface ResolveCommandData {
998
1099
  declare function resolveCommand(agentName: string): Promise<CommandResult<ResolveCommandData>>;
999
1100
  //#endregion
1000
1101
  //#region src/commands/schema.d.ts
1001
- interface JsonSchema {
1002
- additionalProperties?: boolean;
1003
- items?: JsonSchema;
1004
- properties?: Record<string, JsonSchema>;
1005
- required?: string[];
1006
- type: 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string';
1007
- }
1008
- interface SchemaDocument {
1009
- dataSchema: JsonSchema;
1010
- description: string;
1011
- envelopeSchema: JsonSchema;
1012
- name: string;
1013
- ndjsonEventSchema?: JsonSchema;
1014
- }
1015
1102
  interface SchemaCommandData {
1016
- commands: SchemaDocument[];
1103
+ commands: readonly SchemaDocument[];
1017
1104
  }
1018
1105
  declare function schemaCommand(commandName?: string): Promise<CommandResult<SchemaCommandData>>;
1019
- declare function getSchemaCatalog(): SchemaDocument[];
1106
+ declare function getSchemaCatalog(): readonly SchemaDocument[];
1020
1107
  //#endregion
1021
1108
  //#region src/config/index.d.ts
1022
1109
  type DefaultPackageManager = 'bun' | 'mise' | 'npm';
@@ -1084,9 +1171,11 @@ interface ManagedInstallerUpdateOptions {
1084
1171
  npmBunUpdateStrategy?: NpmBunUpdateStrategy;
1085
1172
  packageInstallArgs?: string[];
1086
1173
  }
1174
+ type ManagedPackagePresenceProbe = 'present' | 'absent' | 'unknown';
1087
1175
  interface ManagedInstaller {
1088
1176
  type: ManagedInstallType;
1089
1177
  getInstalledVersion?: (packageName: string, packageTargetKind?: PackageTargetKind) => Promise<string | undefined>;
1178
+ probePackagePresence?: (packageName: string, packageTargetKind?: PackageTargetKind) => Promise<ManagedPackagePresenceProbe>;
1090
1179
  isAvailable: () => Promise<boolean>;
1091
1180
  install: (packageName: string, packageTargetKind?: PackageTargetKind, packageInstallArgs?: string[]) => Promise<boolean>;
1092
1181
  uninstall: (packageName: string, packageTargetKind?: PackageTargetKind, options?: ManagedInstallerUpdateOptions) => Promise<boolean>;
@@ -1189,7 +1278,15 @@ declare function getSelfUpgradeRecoveryHintForInspection(inspection: SelfInspect
1189
1278
  declare function inspectSelf(options?: {
1190
1279
  updateChannel?: SelfUpdateChannel;
1191
1280
  }): Promise<SelfInspection>;
1192
- declare function upgradeSelf(planOrInspection?: SelfInspection | SelfUpgradePlan): Promise<SelfUpdateResult>;
1281
+ interface SelfUpgradeExecutionOptions {
1282
+ readonly lockPort?: LockPort;
1283
+ readonly networkPort?: NetworkPort;
1284
+ readonly processPort?: ProcessPort;
1285
+ readonly signal?: AbortSignal;
1286
+ readonly stdio?: readonly [ProcessStdio, ProcessStdio, ProcessStdio];
1287
+ readonly timeoutMs?: number;
1288
+ }
1289
+ declare function upgradeSelf(planOrInspection?: SelfInspection | SelfUpgradePlan, options?: SelfUpgradeExecutionOptions): Promise<SelfUpdateResult>;
1193
1290
  declare function getManualSelfUpgradeCommand(installSource: SelfInstallSource, executablePath?: string): string | undefined;
1194
1291
  //#endregion
1195
1292
  //#region src/services/agents.d.ts
@@ -1233,10 +1330,10 @@ declare function planAgentUpdates(): Promise<PlannedAgentUpdates>;
1233
1330
  //#endregion
1234
1331
  //#region src/utils/detect.d.ts
1235
1332
  declare function getPlatform(): Platform;
1236
- declare function isBunAvailable(): Promise<boolean>;
1237
- declare function isNpmAvailable(): Promise<boolean>;
1238
- declare function isDenoAvailable(): Promise<boolean>;
1239
- declare function isBinaryInPath(binaryName: string): Promise<boolean>;
1333
+ declare function isBunAvailable(context?: ProviderOperationContext): Promise<boolean>;
1334
+ declare function isNpmAvailable(context?: ProviderOperationContext): Promise<boolean>;
1335
+ declare function isDenoAvailable(context?: ProviderOperationContext): Promise<boolean>;
1336
+ declare function isBinaryInPath(binaryName: string, context?: ProviderOperationContext): Promise<boolean>;
1240
1337
  //#endregion
1241
1338
  //#region src/utils/exec.d.ts
1242
1339
  declare function execCommand(command: string, args: string[]): Promise<{
@@ -1245,10 +1342,12 @@ declare function execCommand(command: string, args: string[]): Promise<{
1245
1342
  }>;
1246
1343
  //#endregion
1247
1344
  //#region src/utils/version.d.ts
1248
- declare function getInstalledVersion(binaryName: string, versionProbe?: AgentVersionProbe): Promise<string | undefined>;
1345
+ declare function getInstalledVersion(binaryName: string, versionProbe?: AgentVersionProbe, context?: ProviderOperationContext): Promise<string | undefined>;
1249
1346
  declare function getLatestVersion(packageName: string, distTag?: string, options?: {
1347
+ context?: ProviderOperationContext;
1348
+ networkPort?: NetworkPort;
1250
1349
  registry?: string;
1251
1350
  }): Promise<string | undefined>;
1252
- declare function getBinaryPath(binaryName: string): Promise<string | undefined>;
1351
+ declare function getBinaryPath(binaryName: string, context?: ProviderOperationContext): Promise<string | undefined>;
1253
1352
  //#endregion
1254
- export { type AgentCatalogData, type AgentCatalogEntry, type AgentDefinition, type AgentInspection, type AgentOperationResult, type AgentPackageMetadata, type AgentSelfUpdate, type AgentUpdateContext, type AgentUpdateProvider, type AgentUpdateStrategy, type AgentVersionProbe, type BinaryInstallMethod, type CliContext, type CliContextOptions, type CliErrorCode, type CommandError, type CommandMeta, type CommandResult, type CommandTarget, type CommandWarning, type ExecCommandOptions, type ExecInstallPolicy, type HumanRenderer, type InstallMethod, type InstallType, type InstalledAgentState, type ManagedInstallMethod, type ManagedInstallType, type ManagedInstaller, type ManagedPackageSpec, type ManagedUpdateBucket, type OutputMode, type PackageTargetKind, type PendingAgentUpdate, type PlannedAgentUpdates, type Platform, type QuantexConfig, type QuantexState, type ReleaseArtifactTarget, type ReleaseChannel, type ReleaseManifest, type ReleaseManifestAsset, type ResolvedAgentInspection, type ScriptInstallMethod, type SelfInspection, type SelfInstallSource, type SelfState, type SelfUpdateResult, type SingleAgentUpdateStatus, type UpdatePlan, type UpdatePlanEntry, agentCatalogEntrySchema, agentCatalogJsonSchema, agentCatalogSchema, agentUpdateProviders, autohand, canAutoUpdateSelf, canLookupLatestVersionForInstallType, canResolveAgentUpdate, canUninstallInstallType, canUpdateInstallType, capabilitiesCommand, claude, codebuddy, codewhale, codex, commandsCommand, copilot, createErrorResult, createReleaseManifest, createSuccessResult, createUpdatePlan, cursor, deepcode, detectSelfInstallSource, devin, droid, emitCommandResult, ensureCommand, execCommand, formatChecksums, gemini, genie, getAgentByLookupName, getAgentByNameOrAlias, getAgentUpdateFailureHint, getAgentUpdateStrategy, getAllAgents, getBinaryPath, getBinaryReleaseAssetName, getBinaryReleaseDownloadUrl, getCatalogAgent, getCatalogAgents, getCliContext, getConfigDir, getConfigFilePath, getExitCodeForError, getExitCodeForResult, getInstallLifecycle, getInstalledAgentState, getInstalledVersion, getInstallerCapabilities, getLatestVersion, getManagedInstaller, getManualAgentUpdateMessage, getManualSelfUpgradeCommand, getOrderedInstallMethods, getPlatform, getSchemaCatalog, getSelfState, getSelfUpgradeRecoveryHint, getSelfUpgradeRecoveryHintForInspection, getSelfVersion, getSingleAgentUpdateStatus, getStateFilePath, inspectAgent, inspectAllAgents, inspectCommand, inspectRegisteredAgents, inspectSelf, installAgent, isBinaryInPath, isBunAvailable, isDenoAvailable, isInspectionUpdateAvailable, isManagedInstallType, isNpmAvailable, jcode, junie, kilo, loadConfig, loadState, normalizeRepositoryUrl, omp, opencode, openhands, parseBinaryTarget, parseChecksums, pi, planAgentUpdates, qoder, reasonix, removeInstalledAgentState, resetCliContext, resolveAgent, resolveAgentInspection, resolveAgentUpdateProvider, resolveCliContext, resolveCommand, resolveReleaseChannel, saveConfig, saveState, schemaCommand, setCliContext, setInstalledAgentState, setSelfInstallSource, setSelfUpdateNoticeState, uninstallAgent, updateAgent, updateAgentsByType, upgradeSelf, validateReleaseManifest, vibe, vtcode };
1353
+ export { type AgentCatalogData, type AgentCatalogEntry, type AgentDefinition, type AgentInspection, type AgentOperationResult, type AgentPackageMetadata, type AgentSelfUpdate, type AgentUpdateContext, type AgentUpdateProvider, type AgentUpdateStrategy, type AgentVersionProbe, type BinaryInstallMethod, type CliContext, type CliContextOptions, type CliErrorCode, type CommandError, type CommandMeta, type CommandResult, type CommandTarget, type CommandWarning, type ExecCommandOptions, type ExecInstallPolicy, type HumanRenderer, type InstallMethod, type InstallType, type InstalledAgentState, type ManagedInstallMethod, type ManagedInstallType, type ManagedInstaller, type ManagedPackageSpec, type ManagedUpdateBucket, type OutputMode, type PackageTargetKind, type PendingAgentUpdate, type PlannedAgentUpdates, type Platform, type QuantexConfig, type QuantexState, type ReleaseArtifactTarget, type ReleaseChannel, type ReleaseManifest, type ReleaseManifestAsset, type ResolvedAgentInspection, type ScriptInstallMethod, type SelfInspection, type SelfInstallSource, type SelfState, type SelfUpdateResult, type SingleAgentUpdateStatus, type UpdatePlan, type UpdatePlanEntry, agentCatalogEntrySchema, agentCatalogJsonSchema, agentCatalogSchema, agentUpdateProviders, autohand, canAutoUpdateSelf, canLookupLatestVersionForInstallType, canResolveAgentUpdate, canUninstallInstallType, canUpdateInstallType, capabilitiesCommand, claude, codebuddy, codewhale, codex, commandsCommand, copilot, createErrorResult, createReleaseManifest, createSuccessResult, createUpdatePlan, cursor, deepcode, detectSelfInstallSource, devin, droid, emitCommandResult, ensureCommand, execCommand, formatChecksums, gemini, genie, getAgentByLookupName, getAgentByNameOrAlias, getAgentUpdateFailureHint, getAgentUpdateStrategy, getAllAgents, getBinaryPath, getBinaryReleaseAssetName, getBinaryReleaseDownloadUrl, getCatalogAgent, getCatalogAgents, getCliContext, getConfigDir, getConfigFilePath, getExitCodeForError, getExitCodeForResult, getInstallLifecycle, getInstalledAgentState, getInstalledVersion, getInstallerCapabilities, getLatestVersion, getManagedInstaller, getManualAgentUpdateMessage, getManualSelfUpgradeCommand, getOrderedInstallMethods, getPlatform, getSchemaCatalog, getSelfState, getSelfUpgradeRecoveryHint, getSelfUpgradeRecoveryHintForInspection, getSelfVersion, getSingleAgentUpdateStatus, getStateFilePath, grok, hermes, inspectAgent, inspectAllAgents, inspectCommand, inspectRegisteredAgents, inspectSelf, installAgent, isBinaryInPath, isBunAvailable, isDenoAvailable, isInspectionUpdateAvailable, isManagedInstallType, isNpmAvailable, jcode, junie, kilo, loadConfig, loadState, mimo, normalizeRepositoryUrl, omp, openclaw, opencode, openhands, parseBinaryTarget, parseChecksums, pi, planAgentUpdates, qoder, reasonix, removeInstalledAgentState, resetCliContext, resolveAgent, resolveAgentInspection, resolveAgentUpdateProvider, resolveCliContext, resolveCommand, resolveReleaseChannel, saveConfig, saveState, schemaCommand, setCliContext, setInstalledAgentState, setSelfInstallSource, setSelfUpdateNoticeState, uninstallAgent, updateAgent, updateAgentsByType, upgradeSelf, validateReleaseManifest, vibe, vtcode };