quantex-cli 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +32 -10
  2. package/README.zh-CN.md +35 -11
  3. package/dist/agent-inspection-Cw-iSnoU.mjs +1 -0
  4. package/dist/agent-installation-BiaOimkM.mjs +1 -0
  5. package/dist/agents-Dc-rbRUf.mjs +1 -0
  6. package/dist/agents-DrmnXNfn.mjs +1 -0
  7. package/dist/capabilities-DJkfliFM.mjs +5 -0
  8. package/dist/capabilities-IF9tdHJa.mjs +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/color-BrKNxICe.mjs +9 -0
  11. package/dist/commands-B-XYhmX6.mjs +3 -0
  12. package/dist/commands-D4irgBj4.mjs +1 -0
  13. package/dist/config-Dwsy-aHA.mjs +3 -0
  14. package/dist/doctor-98u2ifwx.mjs +3 -0
  15. package/dist/ensure-BH_HgqIO.mjs +1 -0
  16. package/dist/ensure-C8f1rJSV.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-cy1FacGf.mjs +2 -0
  22. package/dist/inspect-DbxzuABH.mjs +3 -0
  23. package/dist/inspect-DkknAqJ_.mjs +1 -0
  24. package/dist/install-BEZDMLmP.mjs +1 -0
  25. package/dist/lifecycle-errors-BXlHX_YF.mjs +1 -0
  26. package/dist/lifecycle-observations-DU3WbcUM.mjs +1 -0
  27. package/dist/lifecycle-policy-BeWI8sFz.mjs +1 -0
  28. package/dist/list-BpLto0Qx.mjs +3 -0
  29. package/dist/provider-evidence-CDQ6s2Da.mjs +1 -0
  30. package/dist/provider-observations-C8RmlqtY.mjs +1 -0
  31. package/dist/resolve-C51742gH.mjs +1 -0
  32. package/dist/resolve-CeeaqmwA.mjs +1 -0
  33. package/dist/schema-BO33Fvu0.mjs +3 -0
  34. package/dist/schema-Da826hmM.mjs +1 -0
  35. package/dist/uninstall-EBZrNkI3.mjs +1 -0
  36. package/dist/update-CJUu1Frs.mjs +1 -0
  37. package/dist/update-planner-Dq3XUbkO.mjs +1 -0
  38. package/dist/upgrade-D4zvZO8U.mjs +1 -0
  39. package/dist/{user-output-DV2J3Ydm.mjs → user-output-DBsy2Ysd.mjs} +1 -1
  40. package/dist/version-cache-Cpx0V074.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,9 @@
1
+ import e from"node:process";import t from"cross-spawn";import{spawn as n}from"node:child_process";import{accessSync as r,constants as i,existsSync as a,mkdirSync as o,writeFileSync as s}from"node:fs";import{basename as c,delimiter as l,dirname as u,join as d,win32 as f}from"node:path";import{text as ee}from"node:stream/consumers";import{createHash as te,randomUUID as p}from"node:crypto";import{chmod as ne,mkdir as m,mkdtemp as re,readFile as h,realpath as ie,rename as ae,rm as g,stat as oe,writeFile as se}from"node:fs/promises";import{homedir as ce}from"node:os";import{fileURLToPath as le}from"node:url";import{Buffer as ue}from"node:buffer";import de from"picocolors";function fe(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 _,v=new Set;function y(){return _??=be(),_}function pe(e){v=new Set,_={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function me(){_=void 0,v=new Set}function he(t={}){let n=e.stdin.isTTY!==!1,r=e.stdout.isTTY!==!1,i=!n||!r,a=t.json||t.output===`json`?`json`:t.output===`ndjson`?`ndjson`:t.output===`human`?`human`:i?`json`:`human`,o=t.timeout===void 0?void 0:fe(t.timeout),s=xe(t.color),c=Se(t.logLevel);if(t.timeout!==void 0&&o===void 0)throw Error(`Invalid timeout value: ${t.timeout}`);if(t.refresh&&t.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:t.yes,cacheMode:t.noCache?`no-cache`:t.refresh?`refresh`:`default`,cancelled:!1,colorMode:s,dryRun:t.dryRun,idempotencyKey:t.idempotencyKey,interactive:!t.nonInteractive&&!i&&n&&r,logLevel:c,outputMode:a,quiet:t.quiet,runId:t.runId??e.env.QUANTEX_RUN_ID??p(),timeoutMs:o}}function ge(){_&&(_.cancelled=!0)}async function _e(){ge();let e=[...v];v.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function ve(e){return v.add(e),()=>{v.delete(e)}}function ye(e){let t=y();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 be(){return he()}function xe(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 Se(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 b=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 x(e){return e instanceof b}function Ce(e,t={}){if(y().outputMode===`human`){let n=S(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:ve(()=>Pe(n)),outputDrained:Promise.resolve(),proc:n}}let n=S(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:ve(()=>Pe(n)),outputDrained:Promise.all([Oe(n.stdout),Oe(n.stderr)]).then(()=>void 0),proc:n}}async function we(e){let t=y();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function Te(e,t){let n,r=()=>n??=Fe(e.proc,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Ie(e.proc)});if(t.signal.aborted)throw await r(),e.cleanup(),i?.(),new b({kind:`cancelled`,reason:De(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 b({kind:e,timeoutMs:t.timeoutMs}):new b({kind:e,reason:De(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 S(r,i={}){let[a,...o]=r,s=a?Ee(a,i):void 0;if(!s)throw Error(`spawnCommand requires a non-empty command array.`);let c=je(s),l=i.detached||c?void 0:Me();if(l)return Ne([s,...o],{...i,env:i.env??e.env},l);let u=(c?t:n)(s,o,{...i,env:i.env??e.env});return{get exitCode(){return u.exitCode},pid:u.pid,stderr:u.stderr,stdout:u.stdout,exited:ke(u),kill:u.kill.bind(u),unref:()=>u.unref()}}function Ee(t,n){if(!n.detached||e.platform===`win32`||t.includes(`/`))return t;for(let n of(e.env.PATH??``).split(l)){let e=d(n,t);try{return r(e,i.X_OK),e}catch{}}return t}async function C(e){let[t,n,r]=await Promise.all([Ae(e.stdout),Ae(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function w(e,t){let n,r=()=>n??=Fe(e,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Ie(e)});if(t.signal.aborted)throw await r(),i?.(),new b({kind:`cancelled`,reason:De(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 b({kind:e,timeoutMs:t.timeoutMs}):new b({kind:e,reason:De(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=C(e).then(e=>c?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.()}}function De(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 Oe(t){if(!t)return;let n=await Ae(t);n&&e.stderr.write(n)}async function ke(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function Ae(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():ee(e):``}function je(t,n=e.platform){return n===`win32`?/\.(?:bat|cmd)$/i.test(t)?!0:t.includes(`/`)||t.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(t):!1}function Me(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Ne(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 Pe(e){await Fe(e)}async function Fe(t,n){e.platform===`win32`&&t.pid!==void 0&&await ze(Re(t.pid),2e3),Le(t,`SIGTERM`);let r=n===void 0?2e3:Math.max(10,Math.min(n,250));if(e.platform!==`win32`&&t.pid!==void 0)await new Promise(e=>setTimeout(e,r));else{let e=t.exited.then(()=>!0).catch(()=>!0);if(await Promise.race([e,new Promise(e=>setTimeout(()=>e(!1),r))]))return}Le(t,`SIGKILL`),await ze(t.exited.then(()=>void 0).catch(()=>void 0),250)}async function Ie(t){e.platform===`win32`&&t.pid!==void 0&&await ze(Re(t.pid),250),Le(t,`SIGKILL`),await ze(t.exited.then(()=>void 0).catch(()=>void 0),250)}function Le(t,n){if(e.platform!==`win32`&&t.pid!==void 0)try{e.kill(-t.pid,n);return}catch{}try{t.kill?.(n)}catch{}}async function Re(e,t=n){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 ze(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function Be(){let e=y(),t=new AbortController,n=new Set;e.cancelled&&t.abort(`cancelled`);let r=ve(async()=>{t.abort(`cancelled`);let e=[...n];await He(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.cleanup()))),500)||await He(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 Ve(t.signal);let n,r=new Promise((e,r)=>{n=()=>r(Ve(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 Ve(e){return new b({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 He(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 T(e,t,n){try{let r=await Te(Ce(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 x(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}: ${We(r)}`,retryable:!1}}}async function E(e,t,n){for(let r of e){let e=await T(r,t,n);if(e.kind!==`success`)return e}return{kind:`success`,value:void 0}}async function Ue(e){let t=Be();try{return(await e(t.context)).kind===`success`}finally{t.dispose()}}function We(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}function Ge(e){return e===`cask`?[`--cask`]:[]}function Ke(e){return e===`cask`?[`--cask`]:[`--formula`]}function qe(e,t,n,r){return T([`brew`,e,...Ge(n),t],r,`brew ${e} failed`)}function Je(e,t,n){return qe(`install`,e,t,n)}function Ye(e,t,n){return qe(`upgrade`,e,t,n)}function Xe(e,t){return E(e.map(e=>[`brew`,`upgrade`,...Ge(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function Ze(e,t,n){return qe(`uninstall`,e,t,n)}async function Qe(t,n,r){try{let i=S([`brew`,`list`,...Ke(n),`--versions`,t],{detached:r!==void 0&&e.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:a,stderr:o,stdout:s}=r?await w(i,r):await C(i),c=tt(s);return a===0?c?{presence:`present`,version:c}:{presence:`present`}:a===1&&nt(o)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(x(e))throw e;return{presence:`unknown`}}}async function $e(e,t,n){return(await Qe(e,t,n)).presence}async function et(e,t,n){return(await Qe(e,t,n)).version}function tt(e){let t=e.trim().split(`
2
+ `).find(e=>e.trim());if(!t)return;let n=t.trim().split(/\s+/);if(n.length<2)return;let r=n.at(-1);return r&&/^\d/.test(r)?r:void 0}function nt(e){let t=e.toLowerCase();return t.includes(`no such keg`)||t.includes(`is not installed`)}function rt(){switch(e.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function D(t,n){try{let r=S([t,`--version`],{detached:n!==void 0&&e.platform!==`win32`}),{exitCode:i}=n?await w(r,n):await C(r);return i===0}catch(e){if(x(e))throw e;return!1}}async function it(e){return D(`bun`,e)}async function at(e){return D(`npm`,e)}async function ot(e){return D(`brew`,e)}async function st(e){return D(`deno`,e)}async function ct(e){return D(`cargo`,e)}async function lt(e){return D(`mise`,e)}async function ut(e){return D(`winget`,e)}async function dt(e){return await D(`pip`,e)||await D(`pip3`,e)?!0:pt(e)}async function ft(e){return D(`uv`,e)}async function pt(t){try{let n=S([`python`,`-m`,`pip`,`--version`],{detached:t!==void 0&&e.platform!==`win32`}),{exitCode:r}=t?await w(n,t):await C(n);if(r===0)return!0}catch(e){if(x(e))throw e}try{let n=S([`python3`,`-m`,`pip`,`--version`],{detached:t!==void 0&&e.platform!==`win32`}),{exitCode:r}=t?await w(n,t):await C(n);return r===0}catch(e){if(x(e))throw e;return!1}}async function mt(t,n){try{let r=S([e.platform===`win32`?`where`:`which`,t],{detached:n!==void 0&&e.platform!==`win32`}),{exitCode:i}=n?await w(r,n):await C(r);return i===0}catch(e){if(x(e))throw e;return!1}}function O(e){return e.kind===`cancelled`||e.kind===`timed-out`}function k(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function A(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:gt(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:gt(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:_t(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 ht(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:gt(e.signal)};try{return{kind:`resolved`,value:await t()}}catch(e){return x(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:{kind:`rejected`,reason:_t(e)}}}function gt(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 _t(e){return e instanceof Error?e.message:String(e)}function j(e,t){let n=async n=>{let r=await vt(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(O(r))return k(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[Tt(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 M({evidence:[Et(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await vt(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&O(i)?k(i):M({evidence:[Et(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 vt(n,t.contextualObservation,()=>t.isAvailable(n));return O(r)?k(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:M({executable:e.executable})},id:e.id,install:n=>bt(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>bt(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>bt(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>xt(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?M({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):M({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function vt(e,t,n){return t?ht(e,n):A(e,n)}function yt(e,t,n){return t?ht(e,n):A(e,n)}async function bt(e,t,n,r,i,a){let o=await yt(t.context,i,()=>a(t.target,t.context));if(O(o))return k(o);let s=wt(e.id,r);return o.kind===`rejected`?Ct(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?M({evidence:s,target:t.target}):St(o.value,e,t.target.id,n,r,s)}async function xt(e,t,n){let r=e.commands.updateMany(n.targets),i=await yt(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(O(i))return k(i);let a=wt(e.id,r);return i.kind===`rejected`?Ct(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?M(n.targets.map(e=>({evidence:a,target:e}))):St(i.value,e,void 0,`update`,r,a)}function St(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=Ct(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 Ct(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 wt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function Tt(e,t){return{kind:`provider`,value:`${e}:${t}`}}function Et(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function M(e){return{kind:`success`,value:e}}function N(e){return e.kind===`cask`?`cask`:`package`}const Dt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>et(e.id,N(e),t),install:(e,t)=>Je(e.id,N(e),t),isAvailable:e=>ot(e),probePackagePresence:(e,t)=>$e(e.id,N(e),t),uninstall:(e,t)=>Ze(e.id,N(e),t),update:(e,t)=>Ye(e.id,N(e),t),updateMany:(e,t)=>Xe(e.map(e=>({packageName:e.id,packageTargetKind:N(e)})),t)};function Ot(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function kt(e=Dt){return j({commands:{install:e=>Ot(`install`,e),uninstall:e=>Ot(`uninstall`,e),update:e=>Ot(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>Ot(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const At=kt(),jt=`https://registry.npmjs.org`;function P(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function Mt(e,t,n){return`${P(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async function Nt(e,t,n){return Ue(r=>Pt(e,t,n,r))}function Pt(e,t,n,r){let i=t?`${e}@${t}`:e,a=P(n);return Gt([`bun`,`add`,`-g`,...a?[`--registry`,a]:[],i],[e],r)}function Ft(e,t,n,r,i){let a=n===`latest`?e:`${e}@${n}`,o=P(r);return Gt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...o?[`--registry`,o]:[],a],[e],i)}function It(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):Gt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function Lt(e,t){return T([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`)}const Rt={readGlobalManifest:()=>h(d(e.env.BUN_INSTALL_GLOBAL_DIR??d(ce(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function zt(t,n=Rt,r){try{let i=S([`bun`,`pm`,`-g`,`ls`],{detached:r!==void 0&&e.platform!==`win32`,stdio:Zt()}),{stderr:a,stdout:o}=r?await w(i,r):await C(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:Ut(await n.readGlobalManifest(),t)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let s=Wt(o,t);return s?{presence:`present`,version:s}:Ht(o,t)?{presence:`present`}:{presence:`absent`}}catch(e){if(x(e))throw e;return{presence:`unknown`}}}async function Bt(e,t=Rt,n){return(await zt(e,t,n)).presence}async function Vt(e,t){return(await zt(e,Rt,t)).version}function Ht(e,t){let n=`${t}@`;return e.split(`
3
+ `).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function Ut(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 Wt(e,t){let n=`${t}@`;for(let t of e.split(`
4
+ `)){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 Gt(e,t,n){let r=[...new Set(t)],i=e[1]===`add`,a=i?await Kt(r,n):void 0,o=await T(e,n,`bun mutation failed`);if(o.kind!==`success`)return o;let s=await Jt(r,n);return s.kind!==`success`&&i&&a&&await qt(r.filter(e=>a.get(e)===`absent`),n),s}async function Kt(e,t){let n=new Map;for(let r of e)n.set(r,await Bt(r,void 0,t));return n}async function qt(e,t){for(let n of new Set(e))await T([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function Jt(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await Yt(t);if(r.kind!==`success`)return r;let i=Xt(r.value),a=n.filter(e=>i.has(e));return a.length===0?{kind:`success`,value:void 0}:T([`bun`,`pm`,`-g`,`trust`,...a],t,`bun trust failed`)}async function Yt(t){let n=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:r,stdout:i}=await w(S(n,{detached:e.platform!==`win32`,stdio:Zt()}),t);return r===0?{kind:`success`,value:i}:{command:n,exitCode:r,kind:`failed`,reason:`bun trust inspection failed with exit code ${r}`,retryable:!1}}catch(e){return x(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??t.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:{command:n,kind:`failed`,reason:e instanceof Error&&e.message.trim()?e.message:`bun trust inspection failed`,retryable:!1}}}function Xt(e){let t=new Set;for(let n of e.split(`
5
+ `)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function Zt(){return[`ignore`,`pipe`,`pipe`]}const Qt={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function F(){return d(e.env.HOME||e.env.USERPROFILE||ce(),`.quantex`)}function $t(){return d(F(),`config.json`)}async function en(){let e={...Qt,...await an()};return{...e,defaultPackageManager:tn(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:on(e.networkRetries,2),networkTimeoutMs:on(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:on(e.versionCacheTtlHours,6)}}function tn(e){return e===`bun`||e===`mise`||e===`npm`}function nn(e){return e===`latest-major`||e===`respect-semver`}async function rn(e){await m(F(),{recursive:!0}),await se($t(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function an(){try{let e=await h($t(),`utf8`),t=JSON.parse(e);return sn(t)?t:{}}catch{return{}}}function on(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 sn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var cn=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function ln(e,t,n={}){let r=await un(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function un(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;I(i);let a=await en();I(i);let o=a.versionCacheTtlHours*60*60*1e3,s=y().cacheMode,c=s===`no-cache`?{entries:{}}:await _n();I(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return I(i),bn(l,o),l.body;let d=await dn(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),bn(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 vn(c)),I(i),xn(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(I(i),bn(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 vn(c)),I(i),xn(u,u+o),d.body}async function dn(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 fn(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof b)throw e;if(r===t.retries)return}}async function fn(e,t){let n=t.networkPort;if(n)return pn(e,{...t,networkPort:n});let r=new AbortController,i,a,o,s,c,l=new Promise((e,t)=>s=t),u=()=>c??=hn(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`?gn(t.signal):e===`invocation-timeout`?new b({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new cn(t.timeoutMs),i=o===void 0;return(i||o instanceof cn&&n instanceof b)&&(o=n),i&&(r.abort(o),u().finally(()=>s(o))),u()},f=()=>void d(`cancelled`);t.signal?.addEventListener(`abort`,f,{once:!0});let ee=t.context?.registerCleanup?.({cleanup:()=>d(`cancelled`),force:u}),te=Date.now()+t.timeoutMs,p=setTimeout(()=>void d(`network-timeout`),t.timeoutMs),ne=t.invocationDeadline===void 0?void 0:setTimeout(()=>void d(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),m=async()=>{if(o||(t.signal?.aborted?await d(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await d(`invocation-timeout`):Date.now()>=te&&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 m();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 mn(a,e=>i=e);await m();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await m(),{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(p),ne&&clearTimeout(ne),t.signal?.removeEventListener(`abort`,f),ee?.()}}async function pn(e,t){if(t.signal?.aborted)throw gn(t.signal);let n=Date.now();if(t.invocationDeadline!==void 0&&t.invocationDeadline<=n)throw new b({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`?gn(t.signal):a.error.kind===`timed-out`?t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?new b({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new cn(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 mn(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 hn(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 gn(e)}function gn(e){return e?.reason instanceof b?e.reason:new b({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 _n(){try{return JSON.parse(await h(yn(),`utf8`))}catch{return{entries:{}}}}async function vn(e){await m(d(F(),`cache`),{recursive:!0}),await se(yn(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function yn(){return d(F(),`cache`,`versions.json`)}function bn(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);ye({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function xn(e,t){ye({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Sn=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Cn(e,t){if(t)return t(e);let n=e.trim().split(`
6
+ `)[0],r=n.match(Sn);return r?r[1]:n||void 0}function wn(e,t){let n=jn(e),r=jn(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 Mn(n.prerelease,r.prerelease)}}function Tn(e,t){return wn(e,t)===1}async function En(t,n,r){let i=n?.command??[t,`--version`];try{let t=S(i,{detached:r!==void 0&&e.platform!==`win32`}),{exitCode:a,stdout:o}=r?await w(t,r):await C(t);return a===0?Cn(o,n?.parser):void 0}catch(e){if(x(e))throw e;return}}async function Dn(e,t=`latest`,n={}){try{let r=P(n.registry)??`https://registry.npmjs.org`,i=await ln(Mt(e,t,r),`npm:${r}:${e}:${t}`,{context:n.context,networkPort:n.networkPort});if(n.context?.signal.aborted)throw An(n.context.signal);return i?.version}catch(e){if(x(e))throw e;if(n.context?.signal.aborted)throw An(n.context.signal);return}}async function On(t,n){try{let r=S([e.platform===`win32`?`where`:`which`,t],{detached:n!==void 0&&e.platform!==`win32`}),{exitCode:i,stdout:a}=n?await w(r,n):await C(r);return i===0?a.trim().split(`
7
+ `)[0]:void 0}catch(e){if(x(e))throw e;return}}async function kn(e,t){if(e){if(t?.signal.aborted)throw An(t.signal);try{let n=await ie(e);if(t?.signal.aborted)throw An(t.signal);return n}catch{if(t?.signal.aborted)throw An(t.signal);return e}}}function An(e){return new b({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}function jn(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 Mn(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 Nn(e,t){let n=L(`provider`,e.id),r=async n=>{let r=await Pn(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(O(r))return k(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 Pn(n.context,t.contextualPackageObservation,()=>t.getInstalledVersion(n.target.id,n.context));if(O(i))return k(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 Pn(n,t.contextualPackageObservation,()=>t.isAvailable(n));return O(r)?k(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=Bn(n.options),i=e.commands.install(n.target,r);return Ln(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=Bn(r.options),a=await A(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return O(a)?k(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 Ln(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context))},update:n=>{let r=Bn(n.options),i=e.commands.update(n.target,r);return Ln(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>In(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 Pn(e,t,n){return t?ht(e,n):A(e,n)}function Fn(e,t,n){return t?ht(e,n):A(e,n)}async function In(e,t,n){let r=Bn(n.options),i=e.commands.updateMany(n.targets,r),a=[L(`provider`,e.id),L(`command`,i.join(` `))],o=await Fn(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return O(o)?k(o):o.kind===`rejected`?zn(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?R(n.targets.map(e=>({evidence:a,target:e}))):Rn(o.value,e,i,a,`update-many`)}async function Ln(e,t,n,r,i,a){let o=await Fn(t,i,a);if(O(o))return k(o);let s=[L(`provider`,e.id),L(`command`,r.join(` `))];return o.kind===`rejected`?zn(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?R({evidence:s,target:n}):Rn(o.value,e,r,s,r[1]??`operation`,n.id)}function Rn(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=zn(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 zn(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 Bn(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 Vn={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)]},Hn={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>Vt(e,t),install:(e,t,n,r)=>Pt(e,t,n,r),isAvailable:e=>it(e),probePackagePresence:(e,t)=>Bt(e,void 0,t),resolveLatestVersion:(e,t,n)=>Dn(e,t,{registry:n}),uninstall:(e,t)=>Lt(e,t),update:(e,t,n,r,i)=>Ft(e,t,n,r,i),updateMany:(e,t,n)=>It(e,t,n)};function Un(e=Hn){return Nn({commands:Vn,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const Wn=Un();function Gn(e,t,n,r){return T([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function Kn(e,t,n){return Gn(`install`,e,t??[],n)}function qn(e,t,n){return Kn(e,[`--force`,...t??[]],n)}function Jn(e,t){return E(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function Yn(e,t){return Gn(`uninstall`,e,[],t)}const Xn={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>Kn(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>ct(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Yn(e.id,t),update:(e,t)=>qn(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>Jn(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function Zn(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Qn(e=Xn){return j({commands:{install:e=>Zn(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Zn(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const $n=Qn();function er(e,t,n,r){let i=[`deno`,`install`,`--global`];return n.force&&i.push(`--force`),i.push(...t,e),T(i,r,`deno ${n.force?`update`:`install`} failed`)}function tr(e,t,n){return er(e,t??[],{},n)}function nr(e,t,n){return er(e,t??[],{force:!0},n)}function rr(e,t){return E(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function ir(e,t){return T([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}const ar={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>tr(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>st(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>ir(e.binaryName??e.id,t),update:(e,t)=>nr(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>rr(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},...e.binaryName?{binaryName:e.binaryName}:{},packageName:e.id})),t)};function or(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function sr(e=ar){return j({commands:{install:e=>or(e),uninstall:e=>[`deno`,`uninstall`,`--global`,e.binaryName??e.id],update:e=>or(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const cr=sr(),lr={contextualExecution:!0,execute:(e,t)=>T(fr(e,rt()),t,`install effect failed`),isExecutablePresent:mt};function ur(e,t={}){let n={...lr,...t,contextualExecution:t.execute?t.contextualExecution??!1:!0};return{availability:async e=>pr(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 dr(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(O(i))return k(i);let a=fr(r,rt()),o=mr(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 A(t.context,()=>n.isExecutablePresent(r));return O(i)?k(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 dr(e,t,n){return t?ht(e,n):A(e,n)}function fr(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function pr(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:rt()===`windows`?`powershell.exe`:`sh`}}}function mr(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const hr=ur(`script`),gr=ur(`binary`);function _r(e,t,n){return T([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function vr(e,t){return _r(e,!1,t)}function yr(e,t){return _r(e,!0,t)}function br(e,t){return E(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function xr(e,t){return T([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function Sr(t,n){try{let r=S([`mise`,`ls`,`--installed`,`--json`,t],{detached:n!==void 0&&e.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:i}=n?await w(r,n):await C(r);if(!i.trim())return{presence:`unknown`};try{let e=JSON.parse(i);if(!Dr(e))return{presence:`unknown`};let n=Er(e,t),r=n?e[n]:void 0;if(!Array.isArray(r)||r.length===0)return{presence:`absent`};let a=Tr(i,t);return a?{presence:`present`,version:a}:{presence:`present`}}catch{return{presence:`unknown`}}}catch(e){if(x(e))throw e;return{presence:`unknown`}}}async function Cr(e,t){return(await Sr(e,t)).presence}async function wr(e,t){return(await Sr(e,t)).version}function Tr(e,t){try{let n=JSON.parse(e);if(!Dr(n))return;let r=Er(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(Dr(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function Er(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 Dr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const Or={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>wr(e.id,t),install:(e,t)=>vr(e.id,t),isAvailable:e=>lt(e),probePackagePresence:(e,t)=>Cr(e.id,t),uninstall:(e,t)=>xr(e.id,t),update:(e,t)=>yr(e.id,t),updateMany:(e,t)=>br(e.map(e=>({packageName:e.id})),t)};function kr(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function Ar(e=Or){return j({commands:{install:e=>kr(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>kr(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const jr=Ar();async function Mr(e,t,n){return Ue(r=>Nr(e,t,n,r))}function Nr(e,t,n,r){let i=t?`${e}@${t}`:e,a=P(n);return T([`npm`,`install`,`-g`,i,...a?[`--registry`,a]:[]],r,`npm install failed`)}function Pr(e,t,n,r,i){let a=P(r);return T(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...a?[`--registry`,a]:[]]:[`npm`,`update`,`-g`,e,...a?[`--registry`,a]:[]],i,`npm update failed`)}function Fr(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):T(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e],n,`npm batch update failed`)}function Ir(e,t){return T([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function Lr(e,t){try{let n=S([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{detached:t!==void 0&&process.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:r}=t?await w(n,t):await C(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=Br(r,e);return t?{presence:`present`,version:t}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch(e){if(x(e))throw e;return{presence:`unknown`}}}async function Rr(e,t){return(await Lr(e,t)).presence}async function zr(e,t){return(await Lr(e,t)).version}function Br(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const Vr={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)]},Hr={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>zr(e,t),install:(e,t,n,r)=>Nr(e,t,n,r),isAvailable:e=>at(e),probePackagePresence:(e,t)=>Rr(e,t),resolveLatestVersion:(e,t,n)=>Dn(e,t,{registry:n}),uninstall:(e,t)=>Ir(e,t),update:(e,t,n,r,i)=>Pr(e,t,n,r,i),updateMany:(e,t,n)=>Fr(e,t,n)};function Ur(e=Hr){return Nn({commands:Vr,displayName:`npm`,executable:`npm`,id:`npm`},e)}const Wr=Ur();let Gr=null;async function Kr(t){if(Gr)return{kind:`success`,value:Gr};for(let n of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:r}=await w(S([...n,`--version`],{detached:e.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),t);if(r===0)return Gr=n,{kind:`success`,value:n}}catch(e){if(x(e))return e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??t.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}}return Gr=[`pip`],{kind:`success`,value:Gr}}async function qr(e,t){let n=await Kr(t);return n.kind===`success`?T([...n.value,...e],t,`pip command failed`):n}function Jr(e,t){return qr([`install`,e],t)}function Yr(e,t){return qr([`install`,`--upgrade`,e],t)}async function Xr(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await Kr(t);return n.kind===`success`?E(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function Zr(e,t){return qr([`uninstall`,`-y`,e],t)}const Qr={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>Jr(e.id,t),isAvailable:e=>dt(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Zr(e.id,t),update:(e,t)=>Yr(e.id,t),updateMany:(e,t)=>Xr(e.map(e=>({packageName:e.id})),t)};function $r(e=Qr){return j({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 ei=$r();function ti(e,t,n,r){return T([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function ni(e,t,n){return ti(`install`,e,t??[],n)}function ri(e,t,n){return ti(`upgrade`,e,t??[],n)}function ii(e,t){return E(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function ai(e,t){return T([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function oi(t,n){try{let r=S([`uv`,`tool`,`list`],{detached:n!==void 0&&e.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:i}=n?await w(r,n):await C(r);if(!i.trim())return{presence:`unknown`};let a=ui(i,t);return a?{presence:`present`,version:a}:li(i)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(x(e))throw e;return{presence:`unknown`}}}async function si(e,t){return(await oi(e,t)).presence}async function ci(e,t){return(await oi(e,t)).version}function li(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function ui(e,t){let n=di(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(di(i)===n)return a}}function di(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}const fi={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>ci(e.id,t),install:(e,t)=>ni(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>ft(e),probePackagePresence:(e,t)=>si(e.id,t),uninstall:(e,t)=>ai(e.id,t),update:(e,t)=>ri(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>ii(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function pi(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function mi(e=fi){return j({commands:{install:e=>pi(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>pi(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const hi=mi();function gi(e,t,n){return T([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function _i(e,t){return gi(`install`,e,t)}function vi(e,t){return gi(`upgrade`,e,t)}function yi(e,t){return E(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function bi(e,t){return gi(`uninstall`,e,t)}const xi={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>_i(e.id,t),isAvailable:e=>ut(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>bi(e.id,t),update:(e,t)=>vi(e.id,t),updateMany:(e,t)=>yi(e.map(e=>({packageName:e.id})),t)};function Si(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Ci(e=xi){return j({commands:{install:e=>Si(`install`,e),uninstall:e=>Si(`uninstall`,e),update:e=>Si(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const wi=Ci(),Ti=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`,`script`,`binary`]),Ei=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Di={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Oi(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,Ai(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function ki(e){return Oi(Ti.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 Ai(e){return Object.freeze(Ei.filter(t=>typeof e[Di[t]]==`function`))}const ji=ki({binary:gr,brew:At,bun:Wn,cargo:$n,deno:cr,mise:jr,npm:Wr,pip:ei,script:hr,uv:hi,winget:wi}),Mi=Object.freeze(ji.list().filter(e=>{let t=ji.getCapabilities(e.id);return t.includes(`update`)&&t.includes(`uninstall`)}).map(e=>e.id));function Ni(e){let t=ji.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 Pi(){return Mi}function z(e){return Mi.includes(e)}function Fi(e){return Ni(e).lifecycle}function Ii(e){return Ni(e).canUpdate}function Li(e){return Ni(e).canUninstall}function Ri(e){return Ni(e).canLookupLatestVersion}function zi(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 Bi(e){return e?Ii(e.installType):!1}function Vi(e,t){return Bi(t)||!!e.selfUpdate}function Hi(e){return!!e&&Ri(e.installType)}function Ui(e){return e.length>0&&e.every(e=>Ri(e.type))}function Wi(e){return z(e.type)?`${Fi(e.type)}/${e.type}${zi(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Gi(e){return e?z(e.installType)?`managed via ${e.installType}${zi(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function Ki(e,t){let n=ia({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function qi(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 Ji(e,t,n){if(t)return Hi(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!Ui(n)))return e.packages.npm}function Yi(e,t){let n=Xi(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 Xi(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(Zi(t))return`npm`}function Zi(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 Qi(e){if(e.installedState)return z(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(z(t.type)&&Ii(t.type))return t.type}const $i={strategy:`managed`,canHandle:e=>!!Qi(e),getManagedInstallerType:e=>Qi(e)},ea={strategy:`self-update`,canHandle:e=>!Bi(e.installedState)&&!!e.agent.selfUpdate},ta={strategy:`manual-hint`,canHandle:()=>!0},na=[$i,ea,ta];function ra(e){return na.find(t=>t.canHandle(e))??ta}function ia(e){return ra(e).strategy}function aa(e){return Vi(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`},oa={brew:U,bun:U,cargo:U,deno:U,mise:U,npm:U,pip:U,uv:U,winget:U},sa=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],ca=[{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:oa,required:sa,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:sa,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}],la=[{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`}],ua=new Map(la.map(e=>[e.id,e])),da=new Map(ca.map(e=>[e.name,e])),fa=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],pa=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],ma=[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:fa,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:pa,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:fa,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:fa,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:pa,name:`install`,summary:`Install one or more agents`}),W({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:fa,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:fa,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 ha(){return ma}function ga(){return la}function _a(e){let t={...e};for(let n of la){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 va(e){return{flags:xa(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function ya(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=ua.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}`);Sa(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=xa(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=ba(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:xa(n)}}function ba(e){let t=da.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function xa(e){return[...e.catalogTokens,...e.options.map(e=>G(e.flags)),...e.globalOptions.map(t=>{let n=ua.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 Sa(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 Ca=new Map(ha().map(e=>[e.name,Da(e.presenterId)]));function wa(e){return Ca.get(e)}function Ta(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)??Oa(n));return}e?e.presentHuman(n,r):r(n)}function Ea(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function Da(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:Oa}}function Oa(e){return{action:e.action,data:e,target:e.target,type:`result`}}const K=`quantex-cli`,ka=`https://github.com/Drswith/quantex-cli`,Aa=`1.1.1`;function ja(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Ma(t=e.execPath){if(c(ja(t)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(e.platform===`darwin`)return e.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(e.platform===`linux`)return e.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function Na(t=e.execPath){let n=Ma(t);if(n)return`${ka}/releases/latest/download/${n}`}function Pa(t,n,r=e.env){return t||(r.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:r.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:n===`beta`?`beta`:`stable`)}async function Fa(e,t,n){let r=await ln(await Ia(e,t,n),`self:manifest:${e}`,{context:t,networkPort:n});if(!r)throw Error(`Failed to download release manifest.`);return r}async function Ia(e,t,n){if(e===`stable`)return`${ka}/releases/latest/download/manifest.json`;let r=(await La(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 La(e,t,n){let r=za();if(!r)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let i=await ln(`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 Ra(t,n=e.execPath){let r=e.platform,i=e.arch===`arm64`?`arm64`:`x64`,a=Ma(n);return t.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function za(){return ka.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var Ba=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 Va(e){return e instanceof Ba}function Ha(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 d(F(),`locks`,...r,i)}async function q(e){let t=Ha(e.scope);return await m(u(t),{recursive:!0}),await Ua(e.resource,t),async()=>{await g(t,{force:!0,recursive:!0})}}async function Ua(e,t){try{o(t,{recursive:!1}),Wa(t);return}catch(e){if(!Ya(e))throw e}if(!await Ga(t))throw new Ba(e,t);try{o(t,{recursive:!1}),Wa(t)}catch(n){throw Ya(n)?new Ba(e,t):n}}function Wa(t){s(d(t,`owner.json`),`${JSON.stringify({pid:e.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function Ga(e){let t;try{t=await Ka(e)}catch{return!1}return t&&Ja(t.pid)?!1:(await g(e,{force:!0,recursive:!0}),!0)}async function Ka(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await qa(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await qa(e)}async function qa(e){try{let t=await h(d(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(Xa(e))return;throw e}}function Ja(t){try{return e.kill(t,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Ya(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Xa(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Za(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 Qa=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function $a(){return{installedAgents:{},lifecycleReceipts:{},schemaVersion:2,self:{}}}function Y(e){if(!Z(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:io(e.installedAgents),lifecycleReceipts:t===`current`?ro(e.lifecycleReceipts):{},schemaVersion:2,self:oo(e.self)},source:t}}function eo(e){return{installedAgents:e.installedAgents,self:e.self}}function to(e,t){let n=Y(t).document;return{installedAgents:n.installedAgents,lifecycleReceipts:e.lifecycleReceipts,schemaVersion:2,self:n.self}}function no(e,t){if(!Z(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&&!lo(t.providerTargetKind))throw new J(`lifecycle receipt "${e}" has an invalid providerTargetKind.`);if(!fo(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,...lo(t.providerTargetKind)?{providerTargetKind:t.providerTargetKind}:{},schemaVersion:1,targetId:e,verifiedAt:t.verifiedAt,...X(t.version)?{version:t.version}:{}}}function ro(e){if(!Z(e))throw new J(`lifecycleReceipts must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,no(e,t)]))}function io(e){if(e===void 0)return{};if(!Z(e))throw new J(`installedAgents must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,ao(e,t)]))}function ao(e,t){if(!Z(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(!so(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(po)&&(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 co(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function oo(e){if(!Z(e))return{};let t={...e};return uo(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 so(e){return typeof e==`string`&&Qa.has(e)}function co(e){return e===`package`||e===`cask`||e===`id`}function lo(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function uo(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function X(e){return typeof e==`string`&&e.length>0}function fo(e){return X(e)&&Number.isFinite(Date.parse(e))}function po(e){return typeof e==`string`}function Z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var mo=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}},ho=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:_o(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(_o(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),vo(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),f=!0,vo(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 mo({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(yo(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(_o(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(_o(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},go=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?$a():Y(e).document}async loadProjection(){return eo(await this.loadDocument())}async saveProjection(e){let t=to(await this.loadDocument(),e);await this.persistence.save(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=no(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=no(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 _o(e){return JSON.parse(e)}function vo(e){if(Y(_o(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function yo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}var Q=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const bo={installedAgents:{},self:{}};function xo(){return d(F(),`state.json`)}async function So(){return Io()}async function Co(e){let t=await q({resource:`state`,scope:[`state`]});try{await Lo(e)}finally{await t()}}async function wo(e){return(await So()).installedAgents[e]}async function To(e){try{return await zo().getReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to read Quantex state file.`,{cause:e})}}async function Eo(e){let t=await q({resource:`state`,scope:[`state`]});try{await zo().setReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function Do(e,t){let n=await q({resource:`state`,scope:[`state`]});try{await zo().setAgentLifecycleEvidence(e,t)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await n()}}async function Oo(e){let t=await q({resource:`state`,scope:[`state`]});try{await zo().removeReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const ko=Object.freeze({read:To,remove:Oo,write:Eo});async function Ao(e){await Vo(t=>{t.installedAgents[e.agentName]=e})}async function jo(e){await Vo(t=>{delete t.installedAgents[e]})}async function Mo(){return(await So()).self}async function No(e){await Vo(t=>{t.self.installSource=e})}async function Po(){await Vo(e=>{delete e.self.installSource})}async function Fo(e,t){await Vo(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Io(){try{return await zo().loadProjection()}catch(e){if(Bo(e))return{...bo};throw e instanceof Q?e:e instanceof J?new Q(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new Q(`Failed to read Quantex state file.`,{cause:e})}}async function Lo(e){try{await zo().saveProjection(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}}const Ro={async makeDirectory(e){await m(e,{recursive:!0})},async readText(e){return h(e,`utf8`)},async remove(e){await g(e,{force:!0})},async rename(e,t){await ae(e,t)},async writeText(e,t){await se(e,t,`utf8`)}};function zo(){let t=xo();return new go(new ho({backupFilePath:`${t}.v1.bak`,directoryPath:F(),fileSystem:Ro,stateFilePath:t,tempFileSuffix:String(e.pid)}))}function Bo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Vo(e){let t=await q({resource:`state`,scope:[`state`]});try{let t=await Io();await e(t),await Lo(t)}finally{await t()}}const Ho=`self:install-source`,Uo={clearInstallSource:Po,getSelfState:Mo,setInstallSource:No};function Wo(e=Uo){return{async load(t){let n=Go(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return qo(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return Yo(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=Go(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),qo(void 0)}catch(e){return Yo(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=Go(t.key,t.signal);if(n)return n;if(!Ko(t.value))return Jo({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),qo({})}catch(e){return Yo(`Failed to persist the self install source.`,e)}}}}function Go(e,t){if(t.aborted)return Jo({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return Jo({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function Ko(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function qo(e){return{kind:`success`,value:e}}function Jo(e){return{error:e,kind:`failure`}}function Yo(e,t){return Jo({details:{cause:t},kind:`failed`,message:e})}const Xo=K,Zo=`/node_modules/${Xo}`;async function Qo(e){return es(e,!0)}async function $o(e){return es(e,!1)}async function es(t,n){let r=await ss(),i=e.execPath,a=r.foundPackageJson?os(r.packageRoot):os(``,i),o=t?.persistence??Wo(),s=t?.signal??new AbortController().signal,c=await is(o,s),l=n?await rs(c,a,{persistence:o,signal:s}):ts(c,a),u=await en(),d=Pa(t?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:ns(l),currentVersion:r.version||`1.1.1`,executablePath:i,installSource:l,packageRoot:r.packageRoot,updateChannel:d}}function ts(e,t){return t===`unknown`?e??t:t}function ns(e){return e===`binary`||e===`bun`||e===`npm`}async function rs(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??Wo()).save({key:Ho,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&as(e.error),t}return ts(e,t)}async function is(e,t){let n=await e.load({key:Ho,signal:t});if(n.kind===`failure`&&as(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 as(e){let t=e.details?.cause;throw t instanceof Error?t:e.kind===`cancelled`?new b({kind:`cancelled`,reason:e.message}):e.kind===`timed-out`?new b({kind:`timed-out`,timeoutMs:0}):Error(e.message)}function os(t,n=e.execPath){let r=us(t);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Zo)?`npm`:r?`source`:ds(n)?`binary`:`unknown`}async function ss(e=import.meta.url){let t=fs(e),n=u(t);for(;;){let e=d(n,`package.json`),t=await ls(e);if(t?.name===Xo)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.1.1`};let r=u(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:d(u(t),`package.json`),packageRoot:u(t),version:Aa}}function cs(){return Aa}async function ls(e){try{return JSON.parse(await h(e,`utf8`))}catch{return}}function us(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function ds(e){let t=c(us(e));return t!==`bun`&&t!==`bun.exe`}function fs(t){try{return le(t)}catch{return e.execPath}}async function ps(){try{return await q({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Va(e))return;throw e}}function ms(){return{async acquire(e){if(e.signal.aborted)return hs(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return hs(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await ps();if(!t)return hs(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),hs(`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 hs(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function hs(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function gs(t,n,r=e.env,i=e.cwd()){if(t!==`bun`&&t!==`npm`)return;let a=P(r.QTX_SELF_UPDATE_REGISTRY);return a?{isOverride:!0,registry:a,source:`quantex-env`}:n.selfUpdateRegistry?{isOverride:!0,registry:n.selfUpdateRegistry,source:`quantex-config`}:await _s(t,r,i)||{isOverride:!1,registry:jt,source:`fallback`}}async function _s(e,t,n){if(e===`bun`){let e=vs(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await ys(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=vs(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await xs(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function vs(e,t){for(let n of t){let t=P(e[n]);if(t)return t}}async function ys(e,t){let n=ws(t),r=t.XDG_CONFIG_HOME,i=Cs(e,`bunfig.toml`),o=[d(n,`.bunfig.toml`),r?d(r,`.bunfig.toml`):void 0];if(i){let e=await bs(i);if(e)return e}for(let e of o){if(!e||!a(e))continue;let t=await bs(e);if(t)return t}}async function bs(e){try{return Ts(await h(e,`utf8`))}catch{return}}async function xs(e,t){let n=ws(t),r=Cs(e,`.npmrc`),i=d(n,`.npmrc`);if(r){let e=await Ss(r);if(e)return e}if(a(i))return Ss(i)}async function Ss(e){try{let t=(await h(e,`utf8`)).split(`
8
+ `).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 Cs(e,t){let n=e;for(;;){let e=d(n,t);if(a(e))return e;let r=u(n);if(r===n)return;n=r}}function ws(e){return e.HOME||e.USERPROFILE||ce()}function Ts(e){let t=Es(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(Es(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Es(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function Ds(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function Os(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function ks(e,t){if(Ms(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||wn(e.targetVersion,e.targetVersion)!==0)&&!(!Ns(e.fetchedAtMs)||!Ns(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function As(e){let t=await e.cache.read({key:Ds(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return ks(t.value.value,e)}function js(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:Ds(e.metadata),signal:e.signal,value:e.metadata})}function Ms(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ns(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function Ps(e,t,n){let r=await en();if(e.installSource===`binary`)try{let r=t?await Fa(e.updateChannel,t,n):await Fa(e.updateChannel,void 0,n),i=Ra(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(x(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 Dn(K,i,{...t?{context:t}:{},networkPort:n,registry:jt});if(e.installSource===`bun`||e.installSource===`npm`){let o=await gs(e.installSource,r);return{managedRegistry:o?.registry,managedRegistryIsOverride:o?.isOverride??!1,packageTag:i,targetVersion:await Dn(K,i,{...t?{context:t}:{},networkPort:n,registry:o?.registry}),upstreamLatestVersion:a,verificationCommand:Hs(e.packageRoot)}}return{packageTag:i,targetVersion:a,upstreamLatestVersion:a}}async function Fs(e){let t=e?.facts??await Qo({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await Ps(t,e?.context,e?.networkPort),r=n.targetVersion?Tn(n.targetVersion,t.currentVersion):!1,i={facts:t,status:zs(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await en()).versionCacheTtlHours*60*60*1e3;await js({cache:e.metadataCache,metadata:Os({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function Is(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 Ls(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await Bs(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 Rs(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:Hs(e.packageRoot)},r=e.latestVersion?Tn(e.latestVersion,e.currentVersion):!1;return{facts:t,status:zs(t,n,r),target:n,updateAvailable:r}}function zs(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Bs(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await Vs(e.target.verificationCommand,r);if(t)return t}return Vs([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await En(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return En(e.facts.executablePath)}async function Vs(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 b({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new b({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(`
9
+ `)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function Hs(t){if(t)return[e.execPath,d(t,`dist`,`cli.mjs`),`--version`]}async function Us(t,n,r,i,a=qs(n),o){let s=o?.networkPort,l=s&&o?await Ks(t,{...o,networkPort:s}):await Gs(t);if(l.kind===`failure`)return l.result;let f=l.binary;Ws(o);let ee=await re(d(u(n),`.quantex-upgrade-`)),te=d(ee,c(n)),p=`${n}.bak`,m=!1,h=!1;try{Ws(o);let s=await Js(n),c=tc(f);if(c!==nc(r))return $(`checksum`,`Checksum mismatch for ${t}. Expected ${nc(r)}, got ${c}.`);if(await se(te,f),Ws(o),e.platform===`win32`){let e=Ys(te,n,p,ee,i,a);return h=e.success,e}await ne(te,s),Ws(o),await g(p,{force:!0}),await ae(n,p),m=!0,await ae(te,n);let l=await ec(n,i,o);return l.success?(m=!1,await g(p,{force:!0}),{success:!0}):(await $s(p,n),m=!1,l)}catch(e){if(m){try{await $s(p,n)}catch{}m=!1}if(e instanceof b)throw e;return $(Qs(e),`Failed to replace the current Quantex binary.`,e)}finally{(e.platform!==`win32`||!h)&&await g(ee,{recursive:!0,force:!0})}}function Ws(e){if(e?.signal.aborted)throw new b({kind:`cancelled`,reason:e.signal.reason instanceof Error?e.signal.reason.message:String(e.signal.reason??``)})}async function Gs(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:ue.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function Ks(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 b({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new b({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:ue.from(n.value.body),kind:`success`}}function qs(t){if(e.platform!==`win32`)return;let n=f.basename(t).toLowerCase();if(n===`qtx.exe`)return f.join(f.dirname(t),`quantex.exe`);if(n===`quantex.exe`)return f.join(f.dirname(t),`qtx.exe`)}async function Js(e){try{return(await oe(e)).mode&511}catch{return 493}}function Ys(t,n,r,i,a,o){try{return S([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Xs(t,n,r,i,e.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return $(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function Xs(e,t,n,r,i,a,o){let s=Zs(e),c=Zs(t),l=Zs(n),u=Zs(r),d=Zs(a??``),f=Zs(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 Zs(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Qs(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 $s(e,t){await g(t,{force:!0}),await ae(e,t)}async function ec(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 b({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new b({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 C(S([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 b)throw e;return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function tc(e){return te(`sha256`).update(e).digest(`hex`)}function nc(e){return e.trim().toLowerCase()}const rc={source:`binary`,canHandle:e=>ic(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):Na(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=qs(e.facts.executablePath),i=t?await Us(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 Us(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 ic(e){return`facts`in e?e.facts.installSource:e.installSource}async function ac(e,t){return t.process?(await sc(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function oc(e,t,n){if(!await ac(e,n))return!1;let r=await sc([`bun`,`pm`,`-g`,`untrusted`],n,{forwardPipedOutput:!1,stdio:[`ignore`,`pipe`,`pipe`]});return!r||r.exitCode!==0?!1:Xt(r.stdout?new TextDecoder().decode(r.stdout):``).has(t)?ac([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function sc(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 b({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new b({kind:`timed-out`,timeoutMs:t.timeoutMs??0})}const cc={source:`bun`,canHandle:e=>lc(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 oc([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${K}@${n}`],K,t):await Nt(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 lc(e){return`facts`in e?e.facts.installSource:e.installSource}const uc={source:`npm`,canHandle:e=>dc(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 ac([`npm`,`install`,`-g`,`${K}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await Mr(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 dc(e){return`facts`in e?e.facts.installSource:e.installSource}const fc={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}}},pc=[cc,uc,rc,fc];function mc(e){return pc.find(t=>t.canHandle(e))??fc}function hc(e,t,n=`stable`){return mc({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function gc(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:hc(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function _c(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:mc(e).getRecoveryHint(e,t)}async function vc(e){return Is(await Fs({updateChannel:e?.updateChannel}))}async function yc(e){let t=await $o({updateChannel:e?.updateChannel});return Is(await Fs({context:e?.context,facts:t}))}async function bc(e,t={}){let n=await Cc(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await xc();if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new b({kind:`cancelled`});if(r.error.kind===`timed-out`)throw new b({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 Ls(n,await mc(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 xc(){let e=await ps();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 Sc(t,n=e.execPath){return gc(t,n)}async function Cc(e){return e?`facts`in e?e:e.installSource===`binary`?Fs({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Rs(e):Fs()}function wc(e){return Oc({...e,error:null,ok:!0})}function Tc(e){return Oc({...e,ok:!1})}function Ec(e,t,n={}){let r=y();return r.cancelled&&!n.force||Ta(wa(e.action),r.outputMode,e,t,e=>console.log(e),e=>Ac(e)),e}function Dc(e,t={}){let n=y();if(!(n.cancelled&&!t.force))return Ea(wa(e.action),n.outputMode,e,e=>Ac(e))}function Oc(e){let t=y();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:cs()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function kc(e){let t=y();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:cs()},target:e.target,type:e.type}}function Ac(e){let t=kc(e);return jc(t),t}function jc(e){console.log(JSON.stringify(e))}const{createColors:Mc,isColorSupported:Nc}=de;function Pc(){let e=y().colorMode??`auto`;return Mc(e===`always`?!0:e===`never`?!1:Nc)}const Fc=new Proxy({},{get(e,t){let n=Pc(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{Ki as $,b as $t,Co as A,En as At,K as B,Qt as Bt,To as C,gr as Ct,So as D,Wn as Dt,ko as E,$n as Et,Fo as F,$t as Ft,ya as G,rt as Gt,ga as H,Bt as Ht,Va as I,tn as It,ia as J,st as Jt,na as K,mt as Kt,Za as L,nn as Lt,Ao as M,kn as Mt,Eo as N,Tn as Nt,jo as O,wn as Ot,No as P,F as Pt,Gi as Q,Be as Qt,Ma as R,en as Rt,wo as S,Cr as St,xo as T,cr as Tt,_a as U,P as Ut,ha as V,Vt,va as W,At as Wt,qi as X,et as Xt,ra as Y,at as Yt,Wi as Z,$e as Zt,os as _,Wr as _t,Ec as a,we as an,Ii as at,Wo as b,jr as bt,yc as c,ve as cn,Pi as ct,_c as d,pe as dn,Ti as dt,x as en,Yi as et,Is as f,wi as ft,ns as g,ei as gt,ms as h,si as ht,Dc as i,Fe as in,Li as it,Do as j,Dn as jt,Oo as k,On as kt,bc as l,me as ln,z as lt,As as m,ci as mt,Tc as n,S as nn,B as nt,Sc as o,_e as on,Fi as ot,Fs as p,hi as pt,aa as q,it as qt,wc as r,Ce as rn,Ri as rt,vc as s,y as sn,Ni as st,Fc as t,C as tn,Ji as tt,gc as u,he as un,ji as ut,cs as v,zr as vt,Mo as w,hr as wt,Q as x,wr as xt,$o as y,Rr as yt,Na as z,rn as zt};
@@ -0,0 +1,3 @@
1
+ import{V as e,W as t,a as n,r,t as i}from"./color-BrKNxICe.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 @@
1
+ import{t as e}from"./commands-B-XYhmX6.mjs";export{e as commandsCommand};
@@ -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-BrKNxICe.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,Qt as i,a,c as o,d as s,r as c,t as l}from"./color-BrKNxICe.mjs";import{n as u,t as d}from"./provider-observations-C8RmlqtY.mjs";import{n as f}from"./lifecycle-observations-DU3WbcUM.mjs";import{t as p}from"./agent-inspection-Cw-iSnoU.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{t as e}from"./ensure-C8f1rJSV.mjs";export{e as ensureCommand};
@@ -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-BrKNxICe.mjs";import{v as s}from"./provider-evidence-CDQ6s2Da.mjs";import{t as c}from"./agent-installation-BiaOimkM.mjs";import{r as l}from"./lifecycle-observations-DU3WbcUM.mjs";import{n as u}from"./agents-DrmnXNfn.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-DBsy2Ysd.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{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 };