quantex-cli 0.22.1 → 0.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agents-BJxw6H8z.mjs → agents-TeKrx6Oe.mjs} +1 -1
- package/dist/capabilities-1cZfSZJy.mjs +1 -0
- package/dist/{capabilities-Ca4AW4j2.mjs → capabilities-C1DHqSxt.mjs} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/color-C7AeBSMJ.mjs +6 -0
- package/dist/{commands-CGrftlaW.mjs → commands-BlsHkgXm.mjs} +1 -1
- package/dist/commands-CLzOXb4I.mjs +1 -0
- package/dist/{config-D0Trhtbh.mjs → config-BiD-pUZL.mjs} +1 -1
- package/dist/{detect-xFbR4Cp3.mjs → detect-BULZSyIJ.mjs} +1 -1
- package/dist/{doctor-CQxoy4f0.mjs → doctor-IZLXV7PU.mjs} +1 -1
- package/dist/ensure-BMZ8rXjg.mjs +1 -0
- package/dist/{ensure-B6085E6m.mjs → ensure-CBy1tx3t.mjs} +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{info-DB4lTEgE.mjs → info-DzVckUR0.mjs} +1 -1
- package/dist/inspect-BrQqJNWt.mjs +1 -0
- package/dist/{inspect-Z4NpHi7m.mjs → inspect-NfNRR5tA.mjs} +1 -1
- package/dist/{install-CMavF4FY.mjs → install-1LDiIDZ-.mjs} +1 -1
- package/dist/{list-DTV1Exgj.mjs → list-Br8UC1CX.mjs} +1 -1
- package/dist/resolve-CNzO98Ml.mjs +1 -0
- package/dist/{resolve-CEz05GWa.mjs → resolve-DmMXWXNl.mjs} +1 -1
- package/dist/{schema-qEjrDZ4V.mjs → schema-7XXRDi11.mjs} +1 -1
- package/dist/schema-CtDHvWIe.mjs +1 -0
- package/dist/{uninstall-BqamUkiD.mjs → uninstall-CGWrtwrb.mjs} +1 -1
- package/dist/{update-CmYP8r04.mjs → update-D8AckgdR.mjs} +1 -1
- package/dist/{update-B3ZTFK6z.mjs → update-DeHXz9FE.mjs} +1 -1
- package/dist/{upgrade-c9A4e3y7.mjs → upgrade-DPc2NMyr.mjs} +1 -1
- package/dist/{user-output-CzfAYlzT.mjs → user-output-DJnMtfzB.mjs} +1 -1
- package/package.json +1 -1
- package/dist/capabilities-DPiY_7tn.mjs +0 -1
- package/dist/color-DxHedKnS.mjs +0 -6
- package/dist/commands-W0qBjreV.mjs +0 -1
- package/dist/ensure-BaglVUzo.mjs +0 -1
- package/dist/inspect-CxEmhz_M.mjs +0 -1
- package/dist/resolve-BJfyOtez.mjs +0 -1
- package/dist/schema-BfnadmgP.mjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,i as r,l as i,m as a,n as o,o as s,p as ee,r as te,s as ne,t as c,u as re}from"./detect-xFbR4Cp3.mjs";import{B as ie,G as l,K as u,M as ae,O as d,P as f,R as oe,U as p,V as se,W as m,Y as h,_ as ce,b as le,d as ue,et as de,f as fe,g as pe,h as me,m as he,p as ge,v as _e,y as ve,z as ye}from"./color-DxHedKnS.mjs";import be from"node:process";const xe={binary:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},brew:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},bun:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},cargo:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},deno:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},mise:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},npm:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},pip:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},uv:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},script:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},winget:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`}};function g(e){return xe[e]}function _(e){return g(e).lifecycle===`managed`}function v(e){return g(e).lifecycle}function y(e){return g(e).canUpdate}function Se(e){return g(e).canUninstall}function b(e){return g(e).canLookupLatestVersion}function x(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function S(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 C(e){return e?y(e.installType):!1}function w(e,t){return C(t)||!!e.selfUpdate}function Ce(e){return!!e&&b(e.installType)}function we(e){return e.length>0&&e.every(e=>b(e.type))}function Te(e){return _(e.type)?`${v(e.type)}/${e.type}${x(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Ee(e){return e?_(e.installType)?`managed via ${e.installType}${x(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function De(e,t){let n=Fe({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function Oe(e,t){if(t.type===`bun`){let n=S(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=S(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=S(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=S(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=S(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=S(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=S(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 ke(e,t,n){if(t)return Ce(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!we(n)))return e.packages.npm}function Ae(e,t){let n=je(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 je(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(t.includes(`/node_modules/.bin/`)||t.includes(`/node_modules/`))return`npm`}function T(e){if(e.installedState)return _(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(_(t.type)&&y(t.type))return t.type}const Me={strategy:`managed`,canHandle:e=>!!T(e),getManagedInstallerType:e=>T(e)},Ne={strategy:`self-update`,canHandle:e=>!C(e.installedState)&&!!e.agent.selfUpdate},E={strategy:`manual-hint`,canHandle:()=>!0},D=[Me,Ne,E];function Pe(e){return D.find(t=>t.canHandle(e))??E}function Fe(e){return Pe(e).strategy}function Ie(e){return w(e.agent,e.installedState)}async function O(e){let t=c(),n=typeof e==`function`?e(t):e;try{return be.platform===`win32`?await u(l([`powershell.exe`,`-Command`,n]))===0:await u(l([`sh`,`-c`,n]))===0}catch{return!1}}function Le(e){return e===`cask`?[`--cask`]:[]}async function k(e,t,n){try{return await u(l([`brew`,e,...Le(n),t]))===0}catch{return!1}}async function Re(e,t){return k(`install`,e,t)}async function A(e,t){return k(`upgrade`,e,t)}async function ze(e){for(let t of e)if(!await A(t.packageName,t.packageTargetKind))return!1;return!0}async function Be(e,t){return k(`uninstall`,e,t)}async function j(e,t,n=[]){try{return await u(l([`cargo`,e,t,...n]))===0}catch{return!1}}async function M(e,t){return j(`install`,e,t)}async function N(e,t){return M(e,[`--force`,...t??[]])}async function Ve(e){for(let t of e)if(!await N(t.packageName,t.packageInstallArgs))return!1;return!0}async function He(e){return j(`uninstall`,e)}async function P(e,t=[],n={}){let r=[`deno`,`install`,`--global`];n.force&&r.push(`--force`),r.push(...t,e);try{return await u(l(r))===0}catch{return!1}}async function Ue(e,t){return P(e,t)}async function F(e,t){return P(e,t,{force:!0})}async function We(e){for(let t of e)if(!await F(t.packageName,t.packageInstallArgs))return!1;return!0}async function Ge(e){try{return await u(l([`deno`,`uninstall`,`--global`,e]))===0}catch{return!1}}async function I(e,t=!1){try{return await u(l([`mise`,`use`,`--global`,...t?[`--force`]:[],e]))===0}catch{return!1}}async function Ke(e){return I(e)}async function L(e){return I(e,!0)}async function qe(e){for(let t of e)if(!await L(t.packageName))return!1;return!0}async function Je(e){try{return await u(l([`mise`,`unuse`,`--global`,e]))===0}catch{return!1}}async function Ye(e){try{let{exitCode:t,stdout:n}=await p(m([`mise`,`ls`,`--installed`,`--json`,e],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?Xe(n,e):void 0}catch{return}}function Xe(e,t){try{let n=JSON.parse(e);if(!R(n))return;let r=Ze(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(R(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function Ze(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 R(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let z=null;async function Qe(){if(z)return z;for(let e of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await p(m([...e,`--version`]));if(t===0)return z=e,e}catch{}return z=[`pip`],z}async function B(e){try{return await u(l([...await Qe(),...e]))===0}catch{return!1}}async function $e(e){return B([`install`,e])}async function V(e){return B([`install`,`--upgrade`,e])}async function et(e){if(e.length===0)return!0;for(let t of e)if(!await V(t.packageName))return!1;return!0}async function tt(e){return B([`uninstall`,`-y`,e])}async function H(e,t,n=[]){try{return await u(l([`uv`,`tool`,e,t,...n]))===0}catch{return!1}}async function nt(e,t){return H(`install`,e,t)}async function U(e,t){return H(`upgrade`,e,t)}async function rt(e){for(let t of e)if(!await U(t.packageName,t.packageInstallArgs))return!1;return!0}async function it(e){try{return await u(l([`uv`,`tool`,`uninstall`,e]))===0}catch{return!1}}async function at(e){try{let{exitCode:t,stdout:n}=await p(m([`uv`,`tool`,`list`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?ot(n,e):void 0}catch{return}}function ot(e,t){let n=W(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(W(i)===n)return a}}function W(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}async function G(e,t){try{return await u(l([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function st(e){return G(`install`,e)}async function K(e){return G(`upgrade`,e)}async function ct(e){for(let t of e)if(!await K(t.packageName))return!1;return!0}async function lt(e){return G(`uninstall`,e)}const ut={brew:{type:`brew`,isAvailable:async()=>te(),install:async(e,t)=>Re(e,t),uninstall:async(e,t)=>Be(e,t),update:async(e,t)=>A(e,t),updateMany:async e=>ze(e)},bun:{type:`bun`,getInstalledVersion:async e=>pe(e),isAvailable:async()=>r(),install:async e=>ce(e),uninstall:async e=>_e(e),update:async(e,t,n)=>ve(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>le(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},cargo:{type:`cargo`,isAvailable:async()=>e(),install:async(e,t,n)=>M(e,n),uninstall:async e=>He(e),update:async(e,t,n)=>N(e,n?.packageInstallArgs),updateMany:async e=>Ve(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},deno:{type:`deno`,isAvailable:async()=>s(),install:async(e,t,n)=>Ue(e,n),uninstall:async(e,t,n)=>Ge(n?.binaryName??e),update:async(e,t,n)=>F(e,n?.packageInstallArgs),updateMany:async e=>We(e.map(e=>({binaryName:e.binaryName,packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},mise:{type:`mise`,getInstalledVersion:async e=>Ye(e),isAvailable:async()=>ne(),install:async e=>Ke(e),uninstall:async e=>Je(e),update:async e=>L(e),updateMany:async e=>qe(e.map(e=>({packageName:e.packageName})))},npm:{type:`npm`,getInstalledVersion:async e=>ue(e),isAvailable:async()=>t(),install:async e=>fe(e),uninstall:async e=>ge(e),update:async(e,t,n)=>he(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>me(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},pip:{type:`pip`,isAvailable:async()=>i(),install:async e=>$e(e),uninstall:async e=>tt(e),update:async e=>V(e),updateMany:async e=>et(e.map(e=>({packageName:e.packageName})))},uv:{type:`uv`,getInstalledVersion:async e=>at(e),isAvailable:async()=>re(),install:async(e,t,n)=>nt(e,n),uninstall:async e=>it(e),update:async(e,t,n)=>U(e,n?.packageInstallArgs),updateMany:async e=>rt(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},winget:{type:`winget`,isAvailable:async()=>n(),install:async e=>st(e),uninstall:async e=>lt(e),update:async e=>K(e),updateMany:async e=>ct(e.map(e=>({packageName:e.packageName})))}};function q(e){return ut[e]}const J={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function dt(){return(await de()).defaultPackageManager}async function Y(){return{npmBunUpdateStrategy:(await de()).npmBunUpdateStrategy}}async function X(e){let t=c(),n=e.platforms[t];if(!n)return[];let r=await dt();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function Z(e,t,n,r,i,a,o){let s=q(e);return await s.isAvailable()?a===`install`?s.install(t,i,r):a===`update`?s.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r}):s.uninstall(t,i,{binaryName:n}):!1}async function ft(e,t,n,r){if(_(t.type)){let i=S(e,t);return i?Z(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):!1}return n===`update`&&!y(t.type)||!t.command?!1:O(t.command)}async function pt(e,t,n){return _(e.installType)?e.packageName?Z(e.installType,e.packageName,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:O(e.command)}async function mt(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await O(e.join(` `)))return!0;return!1}async function Q(e,t){let n={agentName:e.name,installType:t.type,packageName:S(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),await f(n),n}async function ht(e,t){return h(J,async()=>Q(e,t))}async function gt(e){return h(J,async()=>{let t=await X(e);for(let n of t)if(await ft(e,n,`install`))return{success:!0,installedState:await Q(e,n)};return{success:!1}})}async function _t(e,t){return h(J,async()=>{let{npmBunUpdateStrategy:n}=await Y(),r=await X(e);if(t&&await pt(t,`update`,n))return await f(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await ft(e,t,`update`,n))return{success:!0,installedState:await Q(e,t)}}return await mt(e)?{success:!0}:{success:!1}})}async function vt(e,t){return h(J,async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=q(e);return await r.isAvailable()?r.updateMany(n,await Y()):!1})}async function yt(e,t,n){let r=q(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function bt(e){return h(J,async()=>{let t=await d(e.name);if(!t)return!1;let n=await pt(t,`uninstall`);return n&&await ae(e.name),n})}async function $(e){let[t,n,r]=await Promise.all([X(e),d(e.name),o(e.binaryName)]),[i,a,s]=await Promise.all([r?St(e,n):Promise.resolve(void 0),r?oe(e.binaryName):Promise.resolve(void 0),Ct(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:s,binaryPath:a,resolvedBinaryPath:await se(a),sourceLabel:Ee(n),updateLabel:De(e,n),lifecycle:n?v(n.installType):`unmanaged`}}async function xt(e){return Promise.all(e.map($))}async function St(e,t){if(t&&_(t.installType)&&t.packageName){let e=await yt(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ye(e.binaryName,e.versionProbe)}async function Ct(e,t,n){let r=ke(e,t,n);if(r)return ie(r)}function wt(e){return ee(e)}async function Tt(e){let t=wt(e);if(t)return{agent:t,inspection:await $(t)}}async function Et(){return xt(a())}export{Se as C,_ as D,g as E,b as S,v as T,w as _,xt as a,Ae as b,ht as c,vt as d,q as f,Pe as g,Fe as h,$ as i,bt as l,Ie as m,wt as n,X as o,D as p,Tt as r,gt as s,Et as t,_t as u,Oe as v,y as w,S as x,Te as y};
|
|
1
|
+
import{a as e,c as t,d as n,i as r,l as i,m as a,n as o,o as s,p as ee,r as te,s as ne,t as c,u as re}from"./detect-BULZSyIJ.mjs";import{B as ie,G as l,K as u,M as ae,O as d,P as f,R as oe,U as p,V as se,W as m,Y as h,_ as ce,b as le,d as ue,et as de,f as fe,g as pe,h as me,m as he,p as ge,v as _e,y as ve,z as ye}from"./color-C7AeBSMJ.mjs";import be from"node:process";const xe={binary:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},brew:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},bun:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},cargo:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},deno:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},mise:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},npm:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},pip:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},uv:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},script:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},winget:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`}};function g(e){return xe[e]}function _(e){return g(e).lifecycle===`managed`}function v(e){return g(e).lifecycle}function y(e){return g(e).canUpdate}function Se(e){return g(e).canUninstall}function b(e){return g(e).canLookupLatestVersion}function x(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function S(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 C(e){return e?y(e.installType):!1}function w(e,t){return C(t)||!!e.selfUpdate}function Ce(e){return!!e&&b(e.installType)}function we(e){return e.length>0&&e.every(e=>b(e.type))}function Te(e){return _(e.type)?`${v(e.type)}/${e.type}${x(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Ee(e){return e?_(e.installType)?`managed via ${e.installType}${x(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function De(e,t){let n=Fe({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function Oe(e,t){if(t.type===`bun`){let n=S(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=S(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=S(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=S(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=S(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=S(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=S(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 ke(e,t,n){if(t)return Ce(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!we(n)))return e.packages.npm}function Ae(e,t){let n=je(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 je(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(t.includes(`/node_modules/.bin/`)||t.includes(`/node_modules/`))return`npm`}function T(e){if(e.installedState)return _(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(_(t.type)&&y(t.type))return t.type}const Me={strategy:`managed`,canHandle:e=>!!T(e),getManagedInstallerType:e=>T(e)},Ne={strategy:`self-update`,canHandle:e=>!C(e.installedState)&&!!e.agent.selfUpdate},E={strategy:`manual-hint`,canHandle:()=>!0},D=[Me,Ne,E];function Pe(e){return D.find(t=>t.canHandle(e))??E}function Fe(e){return Pe(e).strategy}function Ie(e){return w(e.agent,e.installedState)}async function O(e){let t=c(),n=typeof e==`function`?e(t):e;try{return be.platform===`win32`?await u(l([`powershell.exe`,`-Command`,n]))===0:await u(l([`sh`,`-c`,n]))===0}catch{return!1}}function Le(e){return e===`cask`?[`--cask`]:[]}async function k(e,t,n){try{return await u(l([`brew`,e,...Le(n),t]))===0}catch{return!1}}async function Re(e,t){return k(`install`,e,t)}async function A(e,t){return k(`upgrade`,e,t)}async function ze(e){for(let t of e)if(!await A(t.packageName,t.packageTargetKind))return!1;return!0}async function Be(e,t){return k(`uninstall`,e,t)}async function j(e,t,n=[]){try{return await u(l([`cargo`,e,t,...n]))===0}catch{return!1}}async function M(e,t){return j(`install`,e,t)}async function N(e,t){return M(e,[`--force`,...t??[]])}async function Ve(e){for(let t of e)if(!await N(t.packageName,t.packageInstallArgs))return!1;return!0}async function He(e){return j(`uninstall`,e)}async function P(e,t=[],n={}){let r=[`deno`,`install`,`--global`];n.force&&r.push(`--force`),r.push(...t,e);try{return await u(l(r))===0}catch{return!1}}async function Ue(e,t){return P(e,t)}async function F(e,t){return P(e,t,{force:!0})}async function We(e){for(let t of e)if(!await F(t.packageName,t.packageInstallArgs))return!1;return!0}async function Ge(e){try{return await u(l([`deno`,`uninstall`,`--global`,e]))===0}catch{return!1}}async function I(e,t=!1){try{return await u(l([`mise`,`use`,`--global`,...t?[`--force`]:[],e]))===0}catch{return!1}}async function Ke(e){return I(e)}async function L(e){return I(e,!0)}async function qe(e){for(let t of e)if(!await L(t.packageName))return!1;return!0}async function Je(e){try{return await u(l([`mise`,`unuse`,`--global`,e]))===0}catch{return!1}}async function Ye(e){try{let{exitCode:t,stdout:n}=await p(m([`mise`,`ls`,`--installed`,`--json`,e],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?Xe(n,e):void 0}catch{return}}function Xe(e,t){try{let n=JSON.parse(e);if(!R(n))return;let r=Ze(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(R(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function Ze(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 R(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let z=null;async function Qe(){if(z)return z;for(let e of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await p(m([...e,`--version`]));if(t===0)return z=e,e}catch{}return z=[`pip`],z}async function B(e){try{return await u(l([...await Qe(),...e]))===0}catch{return!1}}async function $e(e){return B([`install`,e])}async function V(e){return B([`install`,`--upgrade`,e])}async function et(e){if(e.length===0)return!0;for(let t of e)if(!await V(t.packageName))return!1;return!0}async function tt(e){return B([`uninstall`,`-y`,e])}async function H(e,t,n=[]){try{return await u(l([`uv`,`tool`,e,t,...n]))===0}catch{return!1}}async function nt(e,t){return H(`install`,e,t)}async function U(e,t){return H(`upgrade`,e,t)}async function rt(e){for(let t of e)if(!await U(t.packageName,t.packageInstallArgs))return!1;return!0}async function it(e){try{return await u(l([`uv`,`tool`,`uninstall`,e]))===0}catch{return!1}}async function at(e){try{let{exitCode:t,stdout:n}=await p(m([`uv`,`tool`,`list`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?ot(n,e):void 0}catch{return}}function ot(e,t){let n=W(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(W(i)===n)return a}}function W(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}async function G(e,t){try{return await u(l([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function st(e){return G(`install`,e)}async function K(e){return G(`upgrade`,e)}async function ct(e){for(let t of e)if(!await K(t.packageName))return!1;return!0}async function lt(e){return G(`uninstall`,e)}const ut={brew:{type:`brew`,isAvailable:async()=>te(),install:async(e,t)=>Re(e,t),uninstall:async(e,t)=>Be(e,t),update:async(e,t)=>A(e,t),updateMany:async e=>ze(e)},bun:{type:`bun`,getInstalledVersion:async e=>pe(e),isAvailable:async()=>r(),install:async e=>ce(e),uninstall:async e=>_e(e),update:async(e,t,n)=>ve(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>le(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},cargo:{type:`cargo`,isAvailable:async()=>e(),install:async(e,t,n)=>M(e,n),uninstall:async e=>He(e),update:async(e,t,n)=>N(e,n?.packageInstallArgs),updateMany:async e=>Ve(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},deno:{type:`deno`,isAvailable:async()=>s(),install:async(e,t,n)=>Ue(e,n),uninstall:async(e,t,n)=>Ge(n?.binaryName??e),update:async(e,t,n)=>F(e,n?.packageInstallArgs),updateMany:async e=>We(e.map(e=>({binaryName:e.binaryName,packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},mise:{type:`mise`,getInstalledVersion:async e=>Ye(e),isAvailable:async()=>ne(),install:async e=>Ke(e),uninstall:async e=>Je(e),update:async e=>L(e),updateMany:async e=>qe(e.map(e=>({packageName:e.packageName})))},npm:{type:`npm`,getInstalledVersion:async e=>ue(e),isAvailable:async()=>t(),install:async e=>fe(e),uninstall:async e=>ge(e),update:async(e,t,n)=>he(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>me(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},pip:{type:`pip`,isAvailable:async()=>i(),install:async e=>$e(e),uninstall:async e=>tt(e),update:async e=>V(e),updateMany:async e=>et(e.map(e=>({packageName:e.packageName})))},uv:{type:`uv`,getInstalledVersion:async e=>at(e),isAvailable:async()=>re(),install:async(e,t,n)=>nt(e,n),uninstall:async e=>it(e),update:async(e,t,n)=>U(e,n?.packageInstallArgs),updateMany:async e=>rt(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},winget:{type:`winget`,isAvailable:async()=>n(),install:async e=>st(e),uninstall:async e=>lt(e),update:async e=>K(e),updateMany:async e=>ct(e.map(e=>({packageName:e.packageName})))}};function q(e){return ut[e]}const J={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function dt(){return(await de()).defaultPackageManager}async function Y(){return{npmBunUpdateStrategy:(await de()).npmBunUpdateStrategy}}async function X(e){let t=c(),n=e.platforms[t];if(!n)return[];let r=await dt();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function Z(e,t,n,r,i,a,o){let s=q(e);return await s.isAvailable()?a===`install`?s.install(t,i,r):a===`update`?s.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r}):s.uninstall(t,i,{binaryName:n}):!1}async function ft(e,t,n,r){if(_(t.type)){let i=S(e,t);return i?Z(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):!1}return n===`update`&&!y(t.type)||!t.command?!1:O(t.command)}async function pt(e,t,n){return _(e.installType)?e.packageName?Z(e.installType,e.packageName,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:O(e.command)}async function mt(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await O(e.join(` `)))return!0;return!1}async function Q(e,t){let n={agentName:e.name,installType:t.type,packageName:S(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),await f(n),n}async function ht(e,t){return h(J,async()=>Q(e,t))}async function gt(e){return h(J,async()=>{let t=await X(e);for(let n of t)if(await ft(e,n,`install`))return{success:!0,installedState:await Q(e,n)};return{success:!1}})}async function _t(e,t){return h(J,async()=>{let{npmBunUpdateStrategy:n}=await Y(),r=await X(e);if(t&&await pt(t,`update`,n))return await f(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await ft(e,t,`update`,n))return{success:!0,installedState:await Q(e,t)}}return await mt(e)?{success:!0}:{success:!1}})}async function vt(e,t){return h(J,async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=q(e);return await r.isAvailable()?r.updateMany(n,await Y()):!1})}async function yt(e,t,n){let r=q(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function bt(e){return h(J,async()=>{let t=await d(e.name);if(!t)return!1;let n=await pt(t,`uninstall`);return n&&await ae(e.name),n})}async function $(e){let[t,n,r]=await Promise.all([X(e),d(e.name),o(e.binaryName)]),[i,a,s]=await Promise.all([r?St(e,n):Promise.resolve(void 0),r?oe(e.binaryName):Promise.resolve(void 0),Ct(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:s,binaryPath:a,resolvedBinaryPath:await se(a),sourceLabel:Ee(n),updateLabel:De(e,n),lifecycle:n?v(n.installType):`unmanaged`}}async function xt(e){return Promise.all(e.map($))}async function St(e,t){if(t&&_(t.installType)&&t.packageName){let e=await yt(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ye(e.binaryName,e.versionProbe)}async function Ct(e,t,n){let r=ke(e,t,n);if(r)return ie(r)}function wt(e){return ee(e)}async function Tt(e){let t=wt(e);if(t)return{agent:t,inspection:await $(t)}}async function Et(){return xt(a())}export{Se as C,_ as D,g as E,b as S,v as T,w as _,xt as a,Ae as b,ht as c,vt as d,q as f,Pe as g,Fe as h,$ as i,bt as l,Ie as m,wt as n,X as o,D as p,Tt as r,gt as s,Et as t,_t as u,Oe as v,y as w,S as x,Te as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./capabilities-C1DHqSxt.mjs";export{e as capabilitiesCommand};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,i as r,l as i,m as a,o,r as s,s as c,t as l,u}from"./detect-
|
|
1
|
+
import{a as e,c as t,d as n,i as r,l as i,m as a,o,r as s,s as c,t as l,u}from"./detect-BULZSyIJ.mjs";import{a as d,r as f,s as p,t as m}from"./color-C7AeBSMJ.mjs";import h from"node:process";async function g(){let[m,g,y,b,x,S,C,w,T,E]=await Promise.all([r(),t(),s(),e(),o(),c(),i(),u(),n(),p()]);return d(f({action:`capabilities`,data:{agents:a().map(e=>e.name),features:{assumeYes:!0,cacheBypass:!0,cacheRefresh:!0,channels:[`stable`,`beta`],colorModes:[`auto`,`always`,`never`],dryRun:!0,execInstallPolicies:[`never`,`if-missing`,`always`],freshnessMetadata:!0,idempotencyKey:!0,logLevels:[`silent`,`error`,`warn`,`info`,`debug`],quietLogs:!0,selfUpgrade:E.canAutoUpdate,timeout:!0},installers:{brew:{available:y,reason:y?void 0:_(`brew`)},bun:{available:m,reason:m?void 0:_(`bun`)},cargo:{available:b,reason:b?void 0:_(`cargo`)},deno:{available:x,reason:x?void 0:_(`deno`)},mise:{available:S,reason:S?void 0:_(`mise`)},npm:{available:g,reason:g?void 0:_(`npm`)},pip:{available:C,reason:C?void 0:_(`pip`)},uv:{available:w,reason:w?void 0:_(`uv`)},winget:{available:T,reason:T?void 0:_(`winget`)}},outputModes:[`human`,`json`,`ndjson`],platform:{arch:h.arch,os:l()}},target:{kind:`system`,name:`capabilities`}}),v)}function _(e){return e===`winget`&&h.platform!==`win32`||e===`brew`&&h.platform===`win32`?`not-on-platform`:`not-found`}function v(e){e.data&&(console.log(m.bold(`
|
|
2
2
|
Quantex Capabilities
|
|
3
3
|
`)),console.log(` Platform: ${e.data.platform.os}/${e.data.platform.arch}`),console.log(` Output Modes: ${e.data.outputModes.join(`, `)}`),console.log(` Agents: ${e.data.agents.join(`, `)}`),console.log(m.bold(`
|
|
4
4
|
Installers:`)),console.log(` bun: ${y(e.data.installers.bun)}`),console.log(` npm: ${y(e.data.installers.npm)}`),console.log(` brew: ${y(e.data.installers.brew)}`),console.log(` cargo: ${y(e.data.installers.cargo)}`),console.log(` deno: ${y(e.data.installers.deno)}`),console.log(` mise: ${y(e.data.installers.mise)}`),console.log(` pip: ${y(e.data.installers.pip)}`),console.log(` uv: ${y(e.data.installers.uv)}`),console.log(` winget: ${y(e.data.installers.winget)}`),console.log(m.bold(`
|
package/dist/cli.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{r as e,s as t,v as n,y as r}from"./agents-BJxw6H8z.mjs";import{p as i}from"./detect-xFbR4Cp3.mjs";import{G as a,H as o,I as s,J as c,K as l,T as u,X as d,a as f,at as p,ct as m,i as h,it as g,k as _,n as v,ot as y,r as ee,s as te,st as b,t as x}from"./color-DxHedKnS.mjs";import{a as S,i as C,n as w,o as T,r as E,t as ne}from"./user-output-CzfAYlzT.mjs";import{n as re,t as D}from"./errors-DCtNasuC.mjs";import O from"node:process";import{mkdir as k,readFile as A,rm as ie,writeFile as ae}from"node:fs/promises";import{join as j}from"node:path";import{program as M}from"commander";import oe from"prompts";function N(){return j(d(),`idempotency`)}function P(e){return j(N(),`${L(e)}.json`)}async function F(e){try{let t=JSON.parse(await A(P(e),`utf8`));if(Date.parse(t.expiresAt)<=Date.now()){await ie(P(e),{force:!0});return}return t}catch{return}}async function I(e,t){await k(N(),{recursive:!0});let n=new Date().toISOString(),r=new Date(Date.now()+864e5).toISOString(),i={action:t.action,createdAt:n,expiresAt:r,result:t.result,target:t.target};await ae(P(e),`${JSON.stringify(i,null,2)}\n`,`utf8`)}function L(e){return e.replace(/[^\w.-]/g,`_`)}const R=new Set([`doctor`,`upgrade`]);async function z(e){if(!e.ok||R.has(e.action))return;let t=p();if(t.outputMode!==`human`||t.quiet)return;let n=await te();if(!n.latestVersion||!o(n.latestVersion,n.currentVersion))return;let r=await _(),i=Date.now();if(B(r.updateNoticeVersion,r.updateNoticeAt,n.latestVersion,i))return;let a=n.canAutoUpdate?"Run `quantex upgrade`.":"Run `quantex doctor` for source-specific update steps.";C(x.yellow(`Quantex CLI ${n.latestVersion} is available (current ${n.currentVersion}). ${a}`)),await s(n.latestVersion,new Date(i).toISOString())}function B(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}async function V(e){let t=await W(e.action,e.target);if(t)return t;let n=p().timeoutMs;if(n===void 0)return K(e,()=>e.run().then(t=>H(e.action,e.target,t)));let r;try{let t=new Promise(t=>{r=setTimeout(()=>{le(e,n).then(t)},n)});return await K(e,async()=>{let n=await Promise.race([se(e.run,()=>t),t]);return r!==void 0&&(clearTimeout(r),r=void 0),H(e.action,e.target,n)})}finally{r&&clearTimeout(r)}}async function H(e,t,n){let r=await G(e,t,n);try{await z({action:e,ok:r.ok})}catch{}return r}function U(e){e.error&&console.error(x.red(e.error.message))}async function W(e,t){let n=p();if(!n.idempotencyKey)return;let r=await F(n.idempotencyKey);if(!r)return;if(r.action!==e)return f(v({action:e,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.action,idempotencyKey:n.idempotencyKey},message:`Idempotency key ${n.idempotencyKey} was already used for ${r.action}.`},target:t}),U,{force:!0});let i={...r.result,meta:{...r.result.meta,mode:n.outputMode,runId:n.runId,timestamp:new Date().toISOString()}};return f(i,U,{force:!0}),i}async function G(e,t,n){let r=p();return r.idempotencyKey&&await I(r.idempotencyKey,{action:e,result:n,target:t}),n}async function K(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=ue(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);O.once(`SIGINT`,a),O.once(`SIGTERM`,o),r=()=>{O.off(`SIGINT`,a),O.off(`SIGTERM`,o)}});return await Promise.race([ce(t,()=>n),i])}finally{r?.()}}async function se(e,t){try{let n=await e();return p().cancelled?t():n}catch(e){if(p().cancelled)return t();throw e}}async function ce(e,t){try{let n=await e(),r=t();return p().cancelled&&r?r:n}catch(e){let n=t();if(p().cancelled&&n)return n;throw e}}async function le(e,t){return await g(),h({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),f(v({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target}),U,{force:!0})}async function ue(e,t){return await g(),h({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),f(v({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),U,{force:!0})}async function q(t,n,r={}){let i=await e(t);if(!i)return Y({agent:{name:t},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t}`,execution:{args:n,installPolicy:r.install??`prompt`,installed:!1,interactive:!1,launched:!1}}),D(`AGENT_NOT_FOUND`);let{agent:o,inspection:s}=i,c=r.nonInteractive?!1:p().interactive,l=r.assumeYes??ne(),u=r.dryRun??w(),d=r.install??`prompt`;if(!s.inPath){if(d===`never`)return Y({agent:{binaryName:o.binaryName,displayName:o.displayName,name:o.name},errorCode:`AGENT_NOT_INSTALLED`,errorMessage:`${o.displayName} is not installed.`,execution:{args:n,installGuidance:J(o,s.methods,n),installPolicy:d,installed:!1,interactive:c,launched:!1}}),D(`AGENT_NOT_INSTALLED`);if(d===`if-missing`||d===`always`){if(u?T(x.cyan(`Dry run: would install ${o.displayName}.`)):C(x.cyan(`Installing ${o.displayName}...`)),!(await X(o,u)).success)return E(x.red(`Failed to install ${o.displayName}.`)),1}else if(c){if(!(l||u?{install:!0}:await oe({type:`confirm`,name:`install`,message:`${o.displayName} is not installed. Would you like to install it?`,initial:!0})).install)return S(x.yellow(`Installation cancelled.`)),1;if(u?T(x.cyan(`Dry run: would install ${o.displayName}.`)):C(x.cyan(`Installing ${o.displayName}...`)),!(await X(o,u)).success)return E(x.red(`Failed to install ${o.displayName}.`)),1}else return Y({agent:{binaryName:o.binaryName,displayName:o.displayName,name:o.name},errorCode:`INTERACTION_REQUIRED`,errorMessage:`${o.displayName} is not installed and interactive installation is disabled.`,execution:{args:n,installGuidance:J(o,s.methods,n),installPolicy:d,installed:!1,interactive:c,launched:!1}}),D(`INTERACTION_REQUIRED`)}if(u)return de({agent:{binaryName:o.binaryName,displayName:o.displayName,name:o.name},execution:{args:n,installPolicy:d,installed:!0,interactive:c,launched:!1},message:`Dry run: would run ${[o.binaryName,...n].join(` `)}`}),0;try{return await Z(a([o.binaryName,...n]),o.displayName)}catch(e){return E(x.red(`Failed to launch ${o.displayName}: ${e instanceof Error?e.message:String(e)}`)),1}}function J(e,t,i){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:n(e,t),label:r(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...i].join(` `)}}function Y(e){if(p().outputMode===`human`){E(x.red(e.errorMessage));let t=e.execution.installGuidance;t&&(T(x.dim(`Try: ${t.suggestedEnsureCommand}`)),T(x.dim(`Or: ${t.suggestedExecCommand}`)));return}f(v({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function de(e){if(p().outputMode===`human`){T(x.cyan(e.message));return}f(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}async function X(e,n=w()){if(n)return{success:!0};try{return await t(e)}catch(t){return c(t)?(E(x.red(t.message)),{success:!1}):(E(x.red(`Failed to install ${e.displayName}: ${t instanceof Error?t.message:String(t)}`)),{success:!1})}}async function Z(e,t){let{timeoutMs:n}=p(),r,i,a;try{let o=new Promise(e=>{let n=n=>{r??=(async()=>(await g(),E(x.red(`${t} was cancelled by ${n}.`)),D(`CANCELLED`)))(),r.then(e)},a=()=>n(`SIGINT`),o=()=>n(`SIGTERM`);O.once(`SIGINT`,a),O.once(`SIGTERM`,o),i=()=>{O.off(`SIGINT`,a),O.off(`SIGTERM`,o)}}),s=n===void 0?void 0:new Promise(e=>{a=setTimeout(()=>{r??=(async()=>(await g(),E(x.red(`${t} timed out after ${n}ms.`)),D(`TIMEOUT`)))(),r.then(e)},n)});return await Promise.race([fe(e,()=>r),o,...s?[s]:[]])}finally{a&&clearTimeout(a),i?.()}}async function fe(e,t){try{let n=await l(e),r=t();return p().cancelled&&r?r:n}catch(e){let n=t();if(p().cancelled&&n)return n;throw e}}M.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`).option(`--json`,`Output structured JSON`).option(`--output <mode>`,`Output mode: human, json, or ndjson`).option(`--non-interactive`,`Disable interactive prompts and confirmations`).option(`--yes`,`Automatically accept safe default confirmations`).option(`--quiet`,`Suppress non-essential human logs`).option(`--color <mode>`,`Color mode: auto, always, or never`).option(`--log-level <level>`,`Log level: silent, error, warn, info, or debug`).option(`--dry-run`,`Show what would happen without making changes`).option(`--refresh`,`Refresh cached version metadata before returning results`).option(`--no-cache`,`Bypass the local version cache for this command`).option(`--run-id <id>`,`Attach a run id to structured output and logs`).option(`--idempotency-key <key>`,`Deduplicate repeated mutating requests by client-supplied key`).option(`--timeout <duration>`,`Abort a command after the given duration, e.g. 500ms, 30s, 5m`).version(u()),M.hook(`preAction`,(e,t)=>{try{m(b(t.optsWithGlobals()))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}}),M.hook(`postAction`,()=>{y()}),M.command(`schema`).argument(`[command]`,`Optional command name`).description(`查看结构化输出 schema`).action(async e=>{let{schemaCommand:t}=await import(`./schema-BfnadmgP.mjs`);O.exitCode=await $({action:`schema`,run:()=>t(e),target:{kind:`system`,name:`schema`}})}),M.command(`commands`).description(`查看命令目录与稳定能力`).action(async()=>{let{commandsCommand:e}=await import(`./commands-W0qBjreV.mjs`);O.exitCode=await $({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})}),M.command(`capabilities`).description(`查看当前环境与 surface 能力`).action(async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-DPiY_7tn.mjs`);O.exitCode=await $({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})}),M.command(`inspect <agent>`).description(`查看 agent 结构化状态`).action(async e=>{let{inspectCommand:t}=await import(`./inspect-CxEmhz_M.mjs`);O.exitCode=await $({action:`inspect`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`resolve <agent>`).description(`解析 agent 可执行入口`).action(async e=>{let{resolveCommand:t}=await import(`./resolve-BJfyOtez.mjs`);O.exitCode=await $({action:`resolve`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`install <agents...>`).alias(`i`).description(`安装指定 agent`).action(async e=>{let{installCommand:t}=await import(`./install-CMavF4FY.mjs`);O.exitCode=await $({action:`install`,run:()=>t(e),target:e.length===1?{kind:`agent`,name:e[0]}:{kind:`agent`}})}),M.command(`ensure <agent>`).description(`确保指定 agent 已安装`).action(async e=>{let{ensureCommand:t}=await import(`./ensure-BaglVUzo.mjs`);O.exitCode=await $({action:`ensure`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`exec <agent>`).description(`以显式策略启动 agent`).allowUnknownOption().option(`--install <policy>`,`Install policy: never, if-missing, always`,`never`).argument(`[args...]`,`Arguments passed through to the agent`).action(async(e,t,n,r)=>{let i=n.install;if(i!==`never`&&i!==`if-missing`&&i!==`always`){console.log(x.red(`Unknown install policy: ${i}`)),O.exitCode=2;return}let a=me(r);O.exitCode=await q(e,a.length>0?a:t,{install:i,nonInteractive:r.optsWithGlobals().nonInteractive})}),M.command(`update`).argument(`[agent]`,`Agent name or alias`).option(`--all`,`更新所有已安装的 agent`).alias(`u`).description(`更新指定 agent`).action(async(e,t)=>{let{updateCommand:n}=await import(`./update-B3ZTFK6z.mjs`);O.exitCode=await $({action:`update`,run:()=>n(e,t.all??!1),target:{kind:`agent`,name:e}})}),M.command(`uninstall <agent>`).alias(`rm`).description(`卸载指定 agent`).action(async e=>{let{uninstallCommand:t}=await import(`./uninstall-BqamUkiD.mjs`);O.exitCode=await $({action:`uninstall`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`list`).alias(`ls`).description(`列出所有支持的 agent`).action(async()=>{let{listCommand:e}=await import(`./list-DTV1Exgj.mjs`);O.exitCode=await $({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})}),M.command(`info <agent>`).description(`查看 agent 详细信息`).action(async e=>{let{infoCommand:t}=await import(`./info-DB4lTEgE.mjs`);O.exitCode=await $({action:`info`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`config`).argument(`[action]`,`Action: get, set, reset`).argument(`[key]`,`Config key`).argument(`[value]`,`Config value`).description(`配置管理`).action(async(e,t,n)=>{let{configCommand:r}=await import(`./config-D0Trhtbh.mjs`);O.exitCode=await $({action:`config`,run:()=>r(e,t,n),target:{kind:`config`,name:t}})}),M.command(`upgrade`).description(`升级 Quantex CLI`).option(`--channel <channel>`,`Update channel: stable or beta`).option(`--check`,`Only check whether an update is available`).action(async e=>{let{upgradeCommand:t}=await import(`./upgrade-c9A4e3y7.mjs`);O.exitCode=await $({action:`upgrade`,run:()=>t({channel:e.channel===`beta`?`beta`:void 0,check:e.check??!1}),target:{kind:`self`,name:`quantex`}})}),M.command(`doctor`).description(`检查环境`).action(async()=>{let{doctorCommand:e}=await import(`./doctor-CQxoy4f0.mjs`);O.exitCode=await $({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})});const pe=new Set([...M.commands.map(e=>e.name()),...M.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),Q=he(O.argv.slice(2),pe);if(Q?.error&&(console.log(x.red(Q.error)),O.exit(2)),Q&&i(Q.agentName)){try{m(b({color:Q.color,dryRun:Q.dryRun,idempotencyKey:Q.idempotencyKey,logLevel:Q.logLevel,noCache:Q.noCache,nonInteractive:Q.nonInteractive,quiet:Q.quiet,refresh:Q.refresh,runId:Q.runId,timeout:Q.timeout,yes:Q.yes}))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}try{let e=await q(Q.agentName,Q.agentArgs,{assumeYes:Q.yes,dryRun:Q.dryRun,nonInteractive:Q.nonInteractive});O.exit(e)}finally{y()}}M.parse();function me(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}function he(e,t){let n=O.stdin.isTTY===!1||O.stdout.isTTY===!1,r,i=!1,a=0,o,s=!1,c,l=!1,u=!1,d,f=!1,p=!1,m,h,g=!1;for(;a<e.length;){let _=e[a];if(_===`--json`){s=!0,a+=1;continue}if(_===`--output`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--output requires a value`};d=t,a+=2;continue}if(_===`--non-interactive`){u=!0,a+=1;continue}if(_===`--yes`){g=!0,a+=1;continue}if(_===`--quiet`){f=!0,a+=1;continue}if(_===`--color`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--color requires a value`};r=t,a+=2;continue}if(_===`--log-level`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--log-level requires a value`};c=t,a+=2;continue}if(_===`--dry-run`){i=!0,a+=1;continue}if(_===`--refresh`){p=!0,a+=1;continue}if(_===`--no-cache`){l=!0,a+=1;continue}if(_===`--idempotency-key`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--idempotency-key requires a value`};o=t,a+=2;continue}if(_===`--run-id`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--run-id requires a value`};m=t,a+=2;continue}if(_===`--timeout`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--timeout requires a value`};h=t,a+=2;continue}return _.startsWith(`-`)||t.has(_)?void 0:s||d===`json`||d===`ndjson`||n&&d!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(a+1),agentName:_,color:r,dryRun:i,idempotencyKey:o,logLevel:c,noCache:l,nonInteractive:u,quiet:f,refresh:p,runId:m,timeout:h,yes:g}}}async function $(e){return re(await V(e))}export{};
|
|
2
|
+
import{r as e,s as t,v as n,y as r}from"./agents-TeKrx6Oe.mjs";import{p as i}from"./detect-BULZSyIJ.mjs";import{G as a,H as o,I as s,J as c,K as l,T as u,X as d,a as f,at as p,ct as m,i as h,it as g,k as _,n as v,ot as y,r as ee,s as te,st as b,t as x}from"./color-C7AeBSMJ.mjs";import{a as S,i as C,n as w,o as T,r as E,t as ne}from"./user-output-DJnMtfzB.mjs";import{n as re,t as D}from"./errors-DCtNasuC.mjs";import O from"node:process";import{mkdir as k,readFile as A,rm as ie,writeFile as ae}from"node:fs/promises";import{join as j}from"node:path";import{program as M}from"commander";import oe from"prompts";function N(){return j(d(),`idempotency`)}function P(e){return j(N(),`${L(e)}.json`)}async function F(e){try{let t=JSON.parse(await A(P(e),`utf8`));if(Date.parse(t.expiresAt)<=Date.now()){await ie(P(e),{force:!0});return}return t}catch{return}}async function I(e,t){await k(N(),{recursive:!0});let n=new Date().toISOString(),r=new Date(Date.now()+864e5).toISOString(),i={action:t.action,createdAt:n,expiresAt:r,result:t.result,target:t.target};await ae(P(e),`${JSON.stringify(i,null,2)}\n`,`utf8`)}function L(e){return e.replace(/[^\w.-]/g,`_`)}const R=new Set([`doctor`,`upgrade`]);async function z(e){if(!e.ok||R.has(e.action))return;let t=p();if(t.outputMode!==`human`||t.quiet)return;let n=await te();if(!n.latestVersion||!o(n.latestVersion,n.currentVersion))return;let r=await _(),i=Date.now();if(B(r.updateNoticeVersion,r.updateNoticeAt,n.latestVersion,i))return;let a=n.canAutoUpdate?"Run `quantex upgrade`.":"Run `quantex doctor` for source-specific update steps.";C(x.yellow(`Quantex CLI ${n.latestVersion} is available (current ${n.currentVersion}). ${a}`)),await s(n.latestVersion,new Date(i).toISOString())}function B(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}async function V(e){let t=await W(e.action,e.target);if(t)return t;let n=p().timeoutMs;if(n===void 0)return K(e,()=>e.run().then(t=>H(e.action,e.target,t)));let r;try{let t=new Promise(t=>{r=setTimeout(()=>{le(e,n).then(t)},n)});return await K(e,async()=>{let n=await Promise.race([se(e.run,()=>t),t]);return r!==void 0&&(clearTimeout(r),r=void 0),H(e.action,e.target,n)})}finally{r&&clearTimeout(r)}}async function H(e,t,n){let r=await G(e,t,n);try{await z({action:e,ok:r.ok})}catch{}return r}function U(e){e.error&&console.error(x.red(e.error.message))}async function W(e,t){let n=p();if(!n.idempotencyKey)return;let r=await F(n.idempotencyKey);if(!r)return;if(r.action!==e)return f(v({action:e,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.action,idempotencyKey:n.idempotencyKey},message:`Idempotency key ${n.idempotencyKey} was already used for ${r.action}.`},target:t}),U,{force:!0});let i={...r.result,meta:{...r.result.meta,mode:n.outputMode,runId:n.runId,timestamp:new Date().toISOString()}};return f(i,U,{force:!0}),i}async function G(e,t,n){let r=p();return r.idempotencyKey&&await I(r.idempotencyKey,{action:e,result:n,target:t}),n}async function K(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=ue(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);O.once(`SIGINT`,a),O.once(`SIGTERM`,o),r=()=>{O.off(`SIGINT`,a),O.off(`SIGTERM`,o)}});return await Promise.race([ce(t,()=>n),i])}finally{r?.()}}async function se(e,t){try{let n=await e();return p().cancelled?t():n}catch(e){if(p().cancelled)return t();throw e}}async function ce(e,t){try{let n=await e(),r=t();return p().cancelled&&r?r:n}catch(e){let n=t();if(p().cancelled&&n)return n;throw e}}async function le(e,t){return await g(),h({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),f(v({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target}),U,{force:!0})}async function ue(e,t){return await g(),h({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),f(v({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),U,{force:!0})}async function q(t,n,r={}){let i=await e(t);if(!i)return Y({agent:{name:t},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t}`,execution:{args:n,installPolicy:r.install??`prompt`,installed:!1,interactive:!1,launched:!1}}),D(`AGENT_NOT_FOUND`);let{agent:o,inspection:s}=i,c=r.nonInteractive?!1:p().interactive,l=r.assumeYes??ne(),u=r.dryRun??w(),d=r.install??`prompt`;if(!s.inPath){if(d===`never`)return Y({agent:{binaryName:o.binaryName,displayName:o.displayName,name:o.name},errorCode:`AGENT_NOT_INSTALLED`,errorMessage:`${o.displayName} is not installed.`,execution:{args:n,installGuidance:J(o,s.methods,n),installPolicy:d,installed:!1,interactive:c,launched:!1}}),D(`AGENT_NOT_INSTALLED`);if(d===`if-missing`||d===`always`){if(u?T(x.cyan(`Dry run: would install ${o.displayName}.`)):C(x.cyan(`Installing ${o.displayName}...`)),!(await X(o,u)).success)return E(x.red(`Failed to install ${o.displayName}.`)),1}else if(c){if(!(l||u?{install:!0}:await oe({type:`confirm`,name:`install`,message:`${o.displayName} is not installed. Would you like to install it?`,initial:!0})).install)return S(x.yellow(`Installation cancelled.`)),1;if(u?T(x.cyan(`Dry run: would install ${o.displayName}.`)):C(x.cyan(`Installing ${o.displayName}...`)),!(await X(o,u)).success)return E(x.red(`Failed to install ${o.displayName}.`)),1}else return Y({agent:{binaryName:o.binaryName,displayName:o.displayName,name:o.name},errorCode:`INTERACTION_REQUIRED`,errorMessage:`${o.displayName} is not installed and interactive installation is disabled.`,execution:{args:n,installGuidance:J(o,s.methods,n),installPolicy:d,installed:!1,interactive:c,launched:!1}}),D(`INTERACTION_REQUIRED`)}if(u)return de({agent:{binaryName:o.binaryName,displayName:o.displayName,name:o.name},execution:{args:n,installPolicy:d,installed:!0,interactive:c,launched:!1},message:`Dry run: would run ${[o.binaryName,...n].join(` `)}`}),0;try{return await Z(a([o.binaryName,...n]),o.displayName)}catch(e){return E(x.red(`Failed to launch ${o.displayName}: ${e instanceof Error?e.message:String(e)}`)),1}}function J(e,t,i){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:n(e,t),label:r(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...i].join(` `)}}function Y(e){if(p().outputMode===`human`){E(x.red(e.errorMessage));let t=e.execution.installGuidance;t&&(T(x.dim(`Try: ${t.suggestedEnsureCommand}`)),T(x.dim(`Or: ${t.suggestedExecCommand}`)));return}f(v({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function de(e){if(p().outputMode===`human`){T(x.cyan(e.message));return}f(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}async function X(e,n=w()){if(n)return{success:!0};try{return await t(e)}catch(t){return c(t)?(E(x.red(t.message)),{success:!1}):(E(x.red(`Failed to install ${e.displayName}: ${t instanceof Error?t.message:String(t)}`)),{success:!1})}}async function Z(e,t){let{timeoutMs:n}=p(),r,i,a;try{let o=new Promise(e=>{let n=n=>{r??=(async()=>(await g(),E(x.red(`${t} was cancelled by ${n}.`)),D(`CANCELLED`)))(),r.then(e)},a=()=>n(`SIGINT`),o=()=>n(`SIGTERM`);O.once(`SIGINT`,a),O.once(`SIGTERM`,o),i=()=>{O.off(`SIGINT`,a),O.off(`SIGTERM`,o)}}),s=n===void 0?void 0:new Promise(e=>{a=setTimeout(()=>{r??=(async()=>(await g(),E(x.red(`${t} timed out after ${n}ms.`)),D(`TIMEOUT`)))(),r.then(e)},n)});return await Promise.race([fe(e,()=>r),o,...s?[s]:[]])}finally{a&&clearTimeout(a),i?.()}}async function fe(e,t){try{let n=await l(e),r=t();return p().cancelled&&r?r:n}catch(e){let n=t();if(p().cancelled&&n)return n;throw e}}M.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`).option(`--json`,`Output structured JSON`).option(`--output <mode>`,`Output mode: human, json, or ndjson`).option(`--non-interactive`,`Disable interactive prompts and confirmations`).option(`--yes`,`Automatically accept safe default confirmations`).option(`--quiet`,`Suppress non-essential human logs`).option(`--color <mode>`,`Color mode: auto, always, or never`).option(`--log-level <level>`,`Log level: silent, error, warn, info, or debug`).option(`--dry-run`,`Show what would happen without making changes`).option(`--refresh`,`Refresh cached version metadata before returning results`).option(`--no-cache`,`Bypass the local version cache for this command`).option(`--run-id <id>`,`Attach a run id to structured output and logs`).option(`--idempotency-key <key>`,`Deduplicate repeated mutating requests by client-supplied key`).option(`--timeout <duration>`,`Abort a command after the given duration, e.g. 500ms, 30s, 5m`).version(u()),M.hook(`preAction`,(e,t)=>{try{m(b(t.optsWithGlobals()))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}}),M.hook(`postAction`,()=>{y()}),M.command(`schema`).argument(`[command]`,`Optional command name`).description(`查看结构化输出 schema`).action(async e=>{let{schemaCommand:t}=await import(`./schema-CtDHvWIe.mjs`);O.exitCode=await $({action:`schema`,run:()=>t(e),target:{kind:`system`,name:`schema`}})}),M.command(`commands`).description(`查看命令目录与稳定能力`).action(async()=>{let{commandsCommand:e}=await import(`./commands-CLzOXb4I.mjs`);O.exitCode=await $({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})}),M.command(`capabilities`).description(`查看当前环境与 surface 能力`).action(async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-1cZfSZJy.mjs`);O.exitCode=await $({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})}),M.command(`inspect <agent>`).description(`查看 agent 结构化状态`).action(async e=>{let{inspectCommand:t}=await import(`./inspect-BrQqJNWt.mjs`);O.exitCode=await $({action:`inspect`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`resolve <agent>`).description(`解析 agent 可执行入口`).action(async e=>{let{resolveCommand:t}=await import(`./resolve-CNzO98Ml.mjs`);O.exitCode=await $({action:`resolve`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`install <agents...>`).alias(`i`).description(`安装指定 agent`).action(async e=>{let{installCommand:t}=await import(`./install-1LDiIDZ-.mjs`);O.exitCode=await $({action:`install`,run:()=>t(e),target:e.length===1?{kind:`agent`,name:e[0]}:{kind:`agent`}})}),M.command(`ensure <agent>`).description(`确保指定 agent 已安装`).action(async e=>{let{ensureCommand:t}=await import(`./ensure-BMZ8rXjg.mjs`);O.exitCode=await $({action:`ensure`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`exec <agent>`).description(`以显式策略启动 agent`).allowUnknownOption().option(`--install <policy>`,`Install policy: never, if-missing, always`,`never`).argument(`[args...]`,`Arguments passed through to the agent`).action(async(e,t,n,r)=>{let i=n.install;if(i!==`never`&&i!==`if-missing`&&i!==`always`){console.log(x.red(`Unknown install policy: ${i}`)),O.exitCode=2;return}let a=me(r);O.exitCode=await q(e,a.length>0?a:t,{install:i,nonInteractive:r.optsWithGlobals().nonInteractive})}),M.command(`update`).argument(`[agent]`,`Agent name or alias`).option(`--all`,`更新所有已安装的 agent`).alias(`u`).description(`更新指定 agent`).action(async(e,t)=>{let{updateCommand:n}=await import(`./update-DeHXz9FE.mjs`);O.exitCode=await $({action:`update`,run:()=>n(e,t.all??!1),target:{kind:`agent`,name:e}})}),M.command(`uninstall <agent>`).alias(`rm`).description(`卸载指定 agent`).action(async e=>{let{uninstallCommand:t}=await import(`./uninstall-CGWrtwrb.mjs`);O.exitCode=await $({action:`uninstall`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`list`).alias(`ls`).description(`列出所有支持的 agent`).action(async()=>{let{listCommand:e}=await import(`./list-Br8UC1CX.mjs`);O.exitCode=await $({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})}),M.command(`info <agent>`).description(`查看 agent 详细信息`).action(async e=>{let{infoCommand:t}=await import(`./info-DzVckUR0.mjs`);O.exitCode=await $({action:`info`,run:()=>t(e),target:{kind:`agent`,name:e}})}),M.command(`config`).argument(`[action]`,`Action: get, set, reset`).argument(`[key]`,`Config key`).argument(`[value]`,`Config value`).description(`配置管理`).action(async(e,t,n)=>{let{configCommand:r}=await import(`./config-BiD-pUZL.mjs`);O.exitCode=await $({action:`config`,run:()=>r(e,t,n),target:{kind:`config`,name:t}})}),M.command(`upgrade`).description(`升级 Quantex CLI`).option(`--channel <channel>`,`Update channel: stable or beta`).option(`--check`,`Only check whether an update is available`).action(async e=>{let{upgradeCommand:t}=await import(`./upgrade-DPc2NMyr.mjs`);O.exitCode=await $({action:`upgrade`,run:()=>t({channel:e.channel===`beta`?`beta`:void 0,check:e.check??!1}),target:{kind:`self`,name:`quantex`}})}),M.command(`doctor`).description(`检查环境`).action(async()=>{let{doctorCommand:e}=await import(`./doctor-IZLXV7PU.mjs`);O.exitCode=await $({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})});const pe=new Set([...M.commands.map(e=>e.name()),...M.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),Q=he(O.argv.slice(2),pe);if(Q?.error&&(console.log(x.red(Q.error)),O.exit(2)),Q&&i(Q.agentName)){try{m(b({color:Q.color,dryRun:Q.dryRun,idempotencyKey:Q.idempotencyKey,logLevel:Q.logLevel,noCache:Q.noCache,nonInteractive:Q.nonInteractive,quiet:Q.quiet,refresh:Q.refresh,runId:Q.runId,timeout:Q.timeout,yes:Q.yes}))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}try{let e=await q(Q.agentName,Q.agentArgs,{assumeYes:Q.yes,dryRun:Q.dryRun,nonInteractive:Q.nonInteractive});O.exit(e)}finally{y()}}M.parse();function me(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}function he(e,t){let n=O.stdin.isTTY===!1||O.stdout.isTTY===!1,r,i=!1,a=0,o,s=!1,c,l=!1,u=!1,d,f=!1,p=!1,m,h,g=!1;for(;a<e.length;){let _=e[a];if(_===`--json`){s=!0,a+=1;continue}if(_===`--output`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--output requires a value`};d=t,a+=2;continue}if(_===`--non-interactive`){u=!0,a+=1;continue}if(_===`--yes`){g=!0,a+=1;continue}if(_===`--quiet`){f=!0,a+=1;continue}if(_===`--color`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--color requires a value`};r=t,a+=2;continue}if(_===`--log-level`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--log-level requires a value`};c=t,a+=2;continue}if(_===`--dry-run`){i=!0,a+=1;continue}if(_===`--refresh`){p=!0,a+=1;continue}if(_===`--no-cache`){l=!0,a+=1;continue}if(_===`--idempotency-key`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--idempotency-key requires a value`};o=t,a+=2;continue}if(_===`--run-id`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--run-id requires a value`};m=t,a+=2;continue}if(_===`--timeout`){let t=e[a+1];if(!t)return{agentArgs:[],agentName:``,error:`--timeout requires a value`};h=t,a+=2;continue}return _.startsWith(`-`)||t.has(_)?void 0:s||d===`json`||d===`ndjson`||n&&d!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(a+1),agentName:_,color:r,dryRun:i,idempotencyKey:o,logLevel:c,noCache:l,nonInteractive:u,quiet:f,refresh:p,runId:m,timeout:h,yes:g}}}async function $(e){return re(await V(e))}export{};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import{existsSync as r,mkdirSync as i,writeFileSync as a}from"node:fs";import{chmod as o,mkdir as s,mkdtemp as c,readFile as l,realpath as u,rename as d,rm as f,stat as p,writeFile as m}from"node:fs/promises";import{basename as h,dirname as g,join as _,win32 as v}from"node:path";import{homedir as ee}from"node:os";import{spawn as te}from"node:child_process";import{text as ne}from"node:stream/consumers";import{fileURLToPath as re}from"node:url";import{Buffer as ie}from"node:buffer";import ae from"picocolors";function oe(e){let t=e.trim().match(/^(\d+)(ms|[smh])?$/);if(!t)return;let n=Number.parseInt(t[1],10),r=t[2]??`ms`;if(Number.isFinite(n))switch(r){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*60*1e3;case`h`:return n*60*60*1e3;default:return}}let y,b=new Set;function x(){return y??=me(),y}function se(e){b=new Set,y={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function ce(){y=void 0,b=new Set}function le(e={}){let r=n.stdin.isTTY!==!1,i=n.stdout.isTTY!==!1,a=!r||!i,o=e.json||e.output===`json`?`json`:e.output===`ndjson`?`ndjson`:e.output===`human`?`human`:a?`json`:`human`,s=e.timeout===void 0?void 0:oe(e.timeout),c=he(e.color),l=ge(e.logLevel);if(e.timeout!==void 0&&s===void 0)throw Error(`Invalid timeout value: ${e.timeout}`);if(e.refresh&&e.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:e.yes,cacheMode:e.noCache?`no-cache`:e.refresh?`refresh`:`default`,cancelled:!1,colorMode:c,dryRun:e.dryRun,idempotencyKey:e.idempotencyKey,interactive:!e.nonInteractive&&!a&&r&&i,logLevel:l,outputMode:o,quiet:e.quiet,runId:e.runId??n.env.QUANTEX_RUN_ID??t(),timeoutMs:s}}function ue(){y&&(y.cancelled=!0)}async function de(){ue();let e=[...b];b.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function fe(e){return b.add(e),()=>{b.delete(e)}}function pe(e){let t=x();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 me(){return le()}function he(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 ge(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}`)}const _e=`https://registry.npmjs.org`;function S(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function ve(e,t,n){return`${S(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const ye={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function C(){return _(n.env.HOME||n.env.USERPROFILE||ee(),`.quantex`)}function w(){return _(C(),`config.json`)}async function T(){let e={...ye,...await Ce()};return{...e,defaultPackageManager:be(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:E(e.networkRetries,2),networkTimeoutMs:E(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?S(e.selfUpdateRegistry):void 0,versionCacheTtlHours:E(e.versionCacheTtlHours,6)}}function be(e){return e===`bun`||e===`mise`||e===`npm`}function xe(e){return e===`latest-major`||e===`respect-semver`}async function Se(e){await s(C(),{recursive:!0}),await m(w(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Ce(){try{let e=await l(w(),`utf8`),t=JSON.parse(e);return we(t)?t:{}}catch{return{}}}function E(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 we(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var D=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 Te(e){return e instanceof D}function Ee(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 _(C(),`locks`,...r,i)}async function O(e){let t=Ee(e.scope);return await s(g(t),{recursive:!0}),await De(e.resource,t),async()=>{await f(t,{force:!0,recursive:!0})}}async function De(e,t){try{i(t,{recursive:!1}),Oe(t);return}catch(e){if(!Ne(e))throw e}if(!await ke(t))throw new D(e,t);try{i(t,{recursive:!1}),Oe(t)}catch(n){throw Ne(n)?new D(e,t):n}}function Oe(e){a(_(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function ke(e){let t;try{t=await Ae(e)}catch{return!1}return t&&Me(t.pid)?!1:(await f(e,{force:!0,recursive:!0}),!0)}async function Ae(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await je(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await je(e)}async function je(e){try{let t=await l(_(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(Pe(e))return;throw e}}function Me(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Ne(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Pe(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Fe(e,t){let n=await O(e);try{return await t()}finally{await n()}}async function Ie(){try{return await O({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Te(e))return;throw e}}const k=`quantex-cli`,A=`https://github.com/Drswith/quantex-cli`,Le=`0.22.2`;function j(e,t={}){if(x().outputMode===`human`){let n=N(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:fe(()=>Ue(n)),outputDrained:Promise.resolve(),proc:n}}let n=N(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:fe(()=>Ue(n)),outputDrained:Promise.all([Re(n.stdout),Re(n.stderr)]).then(()=>void 0),proc:n}}async function M(e){let t=x();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}function N(e,t={}){let n=Ve();if(n)return He(e,t,n);let[r,...i]=e;if(!r)throw Error(`spawnCommand requires a non-empty command array.`);let a=te(r,i,{...t,shell:t.shell??Be(r)});return{get exitCode(){return a.exitCode},pid:a.pid,stderr:a.stderr,stdout:a.stdout,exited:ze(a),kill:a.kill.bind(a),unref:()=>a.unref()}}async function P(e){let[t,n,r]=await Promise.all([F(e.stdout),F(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function Re(e){if(!e)return;let t=await F(e);t&&n.stderr.write(t)}async function ze(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function F(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():ne(e):``}function Be(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function Ve(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function He(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 Ue(e){n.platform===`win32`&&e.pid!==void 0&&await Ge(We(e.pid),2e3);try{e.kill?.(`SIGTERM`)}catch{}await Ge(e.exited.then(()=>void 0).catch(()=>void 0),2e3)}async function We(e){await new Promise(t=>{let n=te(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});n.once(`error`,()=>t()),n.once(`close`,()=>t())})}async function Ge(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}async function I(e,t){let n=await Ke(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function Ke(e,t,n=`text`){let r=await T(),i=r.versionCacheTtlHours*60*60*1e3,a=x().cacheMode,o=a===`no-cache`?{entries:{}}:await Je(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return L(s,i),s.body;let l=await qe(e,{headers:a!==`no-cache`&&s?.etag?{"If-None-Match":s.etag}:void 0,retries:r.networkRetries,timeoutMs:r.networkTimeoutMs});if(!l)return s&&L(s,i),s?.body;if(l.status===304&&s)return o.entries[t]={...s,expiresAt:c+i,fetchedAt:c},a!==`no-cache`&&await Ye(o),Ze(c,c+i),s.body;if(!l.ok)return s&&L(s,i),s?.body;let u=await l.text();if(n===`json`)try{JSON.parse(u)}catch{return s&&L(s,i),s?.body}let d={body:u,etag:l.headers.get(`etag`)??void 0,expiresAt:c+i,fetchedAt:c};return a!==`no-cache`&&(o.entries[t]=d,await Ye(o)),Ze(c,c+i),u}async function qe(e,t){for(let n=0;n<=t.retries;n++){let r=new AbortController,i=setTimeout(()=>r.abort(),t.timeoutMs);try{return await fetch(e,{headers:t.headers,signal:r.signal})}catch{if(n===t.retries)return}finally{clearTimeout(i)}}}async function Je(){try{return JSON.parse(await l(Xe(),`utf8`))}catch{return{entries:{}}}}async function Ye(e){await s(_(C(),`cache`),{recursive:!0}),await m(Xe(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Xe(){return _(C(),`cache`,`versions.json`)}function L(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);pe({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Ze(e,t){pe({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Qe=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function $e(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
2
|
+
`)[0],r=n.match(Qe);return r?r[1]:n||void 0}function et(e,t){let n=rt(e),r=rt(t);if(!(!n||!r)){for(let e=0;e<3;e+=1){let t=n.core[e]-r.core[e];if(t!==0)return t>0?1:-1}return it(n.prerelease,r.prerelease)}}function R(e,t){return et(e,t)===1}async function z(e,t){let n=t?.command??[e,`--version`];try{let{exitCode:e,stdout:r}=await P(N(n));return e===0?$e(r,t?.parser):void 0}catch{return}}async function B(e,t=`latest`,n={}){try{let r=S(n.registry)??`https://registry.npmjs.org`;return(await I(ve(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function tt(e){try{let{exitCode:t,stdout:r}=await P(N([n.platform===`win32`?`where`:`which`,e]));return t===0?r.trim().split(`
|
|
3
|
+
`)[0]:void 0}catch{return}}async function nt(e){if(e)try{return await u(e)}catch{return e}}function rt(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/i);if(t)return{core:[Number(t[1]),Number(t[2]),Number(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function it(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);return a&&o?Number(n)>Number(i)?1:-1:a?-1:o||n>i?1:-1}return 0}var V=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const at={installedAgents:{},self:{}};function H(){return _(C(),`state.json`)}async function U(){return pt()}async function ot(e){let t=await O({resource:`state`,scope:[`state`]});try{await St(e)}finally{await t()}}async function st(e){return(await U()).installedAgents[e]}async function ct(e){await G(t=>{t.installedAgents[e.agentName]=e})}async function lt(e){await G(t=>{delete t.installedAgents[e]})}async function ut(){return(await U()).self}async function dt(e){await G(t=>{t.self.installSource=e})}async function ft(e,t){await G(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function pt(){try{let e=JSON.parse(await l(H(),`utf8`)),t=bt(e.self);return{installedAgents:ht(e.installedAgents),self:t}}catch(e){if(Ct(e))return{...at};throw e instanceof V?e:new V(`Failed to read Quantex state file.`,{cause:e})}}const mt=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function ht(e){if(e===void 0)return{};if(!W(e))throw new V(`Failed to read Quantex state file: installedAgents must be an object.`);let t={};for(let[n,r]of Object.entries(e))t[n]=gt(n,r);return t}function gt(e,t){if(!W(t))throw new V(`Failed to read Quantex state file: installed agent "${e}" must be an object.`);if(typeof t.agentName!=`string`||t.agentName!==e)throw new V(`Failed to read Quantex state file: installed agent "${e}" has an invalid agentName.`);if(!_t(t.installType))throw new V(`Failed to read Quantex state file: installed agent "${e}" has an invalid installType.`);let n={agentName:e,installType:t.installType};return typeof t.binaryName==`string`&&(n.binaryName=t.binaryName),Array.isArray(t.packageInstallArgs)&&t.packageInstallArgs.every(yt)&&(n.packageInstallArgs=t.packageInstallArgs),typeof t.packageName==`string`&&(n.packageName=t.packageName),vt(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function _t(e){return typeof e==`string`&&mt.has(e)}function vt(e){return e===`package`||e===`cask`||e===`id`}function yt(e){return typeof e==`string`}function bt(e){if(!W(e))return{};let t={...e};return xt(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 xt(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function St(e){await s(C(),{recursive:!0});let t=H(),r=`${t}.tmp-${n.pid}`,i=`${JSON.stringify(e,null,2)}\n`;try{await m(r,i,`utf8`),await d(r,t)}catch(e){throw await f(r,{force:!0}),e}}function Ct(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function G(e){let t=await O({resource:`state`,scope:[`state`]});try{let t=await pt();await e(t),await St(t)}finally{await t()}}function wt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function K(e=n.execPath){if(h(wt(e)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(n.platform===`darwin`)return n.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(n.platform===`linux`)return n.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function Tt(e=n.execPath){let t=K(e);if(t)return`${A}/releases/latest/download/${t}`}function Et(e,t,r=n.env){return e||(r.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:r.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:t===`beta`?`beta`:`stable`)}async function Dt(e){let t=await I(await Ot(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function Ot(e){if(e===`stable`)return`${A}/releases/latest/download/manifest.json`;let t=(await kt(e)).assets.find(e=>e.name===`manifest.json`);if(!t?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return t.browser_download_url}async function kt(e){let t=jt();if(!t)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let n=await I(`https://api.github.com/repos/${t}/releases?per_page=20`,`self:github-releases`);if(!n)throw Error(`Failed to query GitHub releases.`);let r=n.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!r)throw Error(`No GitHub release was found for the ${e} channel.`);return r}function At(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=K(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function jt(){return A.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const Mt=k,Nt=`/node_modules/${Mt}`;async function Pt(e){let t=await Lt(),r=n.execPath,i=t.foundPackageJson?q(t.packageRoot):q(``,r),a=await It((await ut()).installSource,i),o=await T(),s=Et(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:Ft(a),currentVersion:t.version||`0.22.2`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function Ft(e){return e===`binary`||e===`bun`||e===`npm`}async function It(e,t){return t!==`unknown`&&e!==t?(await dt(t),t):e??t}function q(e,t=n.execPath){let r=zt(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Nt)?`npm`:r?`source`:Bt(t)?`binary`:`unknown`}async function Lt(e=import.meta.url){let t=Vt(e),n=g(t);for(;;){let e=_(n,`package.json`),t=await Rt(e);if(t?.name===Mt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.22.2`};let r=g(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:_(g(t),`package.json`),packageRoot:g(t),version:Le}}function J(){return Le}async function Rt(e){try{return JSON.parse(await l(e,`utf8`))}catch{return}}function zt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Bt(e){let t=h(zt(e));return t!==`bun`&&t!==`bun.exe`}function Vt(e){try{return re(e)}catch{return n.execPath}}async function Ht(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=S(r.QTX_SELF_UPDATE_REGISTRY);return a?{isOverride:!0,registry:a,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await Ut(e,r,i)||{isOverride:!1,registry:_e,source:`fallback`}}async function Ut(e,t,n){if(e===`bun`){let e=Wt(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Gt(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=Wt(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await qt(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function Wt(e,t){for(let n of t){let t=S(e[n]);if(t)return t}}async function Gt(e,t){let n=Xt(t),i=t.XDG_CONFIG_HOME,a=Yt(e,`bunfig.toml`),o=[_(n,`.bunfig.toml`),i?_(i,`.bunfig.toml`):void 0];if(a){let e=await Kt(a);if(e)return e}for(let e of o){if(!e||!r(e))continue;let t=await Kt(e);if(t)return t}}async function Kt(e){try{return Zt(await l(e,`utf8`))}catch{return}}async function qt(e,t){let n=Xt(t),i=Yt(e,`.npmrc`),a=_(n,`.npmrc`);if(i){let e=await Jt(i);if(e)return e}if(r(a))return Jt(a)}async function Jt(e){try{let t=(await l(e,`utf8`)).split(`
|
|
4
|
+
`).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=S(r[1]);if(i)return i}}catch{}}function Yt(e,t){let n=e;for(;;){let e=_(n,t);if(r(e))return e;let i=g(n);if(i===n)return;n=i}}function Xt(e){return e.HOME||e.USERPROFILE||ee()}function Zt(e){let t=Qt(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 S(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return S(Qt(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Qt(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function $t(e){let t=await T();if(e.installSource===`binary`)try{let t=await Dt(e.updateChannel),n=At(t,e.executablePath);return n?{binaryAsset:n,targetVersion:t.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch{return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let n=e.updateChannel===`beta`?`beta`:`latest`,r=await B(k,n,{registry:_e});if(e.installSource===`bun`||e.installSource===`npm`){let i=await Ht(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await B(k,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:on(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function Y(e){let t=e?.facts??await Pt({updateChannel:e?.updateChannel}),n=e?.target??await $t(t),r=n.targetVersion?R(n.targetVersion,t.currentVersion):!1;return{facts:t,status:rn(t,n,r),target:n,updateAvailable:r}}function en(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 tn(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await an(e);if(!n)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 r=t.newVersion??e.target.targetVersion;return r&&n!==r?{error:{detail:{expectedVersion:r,observedVersion:n},kind:`verify`,message:`Managed self-upgrade installed version ${n}, but expected ${r}.`},installSource:e.facts.installSource,success:!1}:!r&&n===e.facts.currentVersion&&e.target.targetVersion!==void 0?{error:{detail:{observedVersion:n},kind:`verify`,message:`Managed self-upgrade completed without changing the installed Quantex version.`},installSource:e.facts.installSource,success:!1}:{...t,newVersion:n}}function nn(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:on(e.packageRoot)},r=e.latestVersion?R(e.latestVersion,e.currentVersion):!1;return{facts:t,status:rn(t,n,r),target:n,updateAvailable:r}}function rn(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function an(e){if(e.target.verificationCommand){let t=await z(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return z(e.facts.executablePath)}function on(e){if(e)return[n.execPath,_(e,`dist`,`cli.mjs`),`--version`]}async function sn(e,t,r,i,a=cn(t)){let s;try{s=await fetch(e)}catch(t){return Z(`network`,`Failed to download ${e}.`,t)}if(!s.ok)return Z(`network`,`Failed to download ${e}: HTTP ${s.status}.`);let l=await c(_(g(t),`.quantex-upgrade-`)),u=_(l,h(t)),p=`${t}.bak`,v=!1;try{let c=ie.from(await s.arrayBuffer()),h=await ln(t),g=hn(c);if(g!==gn(r))return Z(`checksum`,`Checksum mismatch for ${e}. Expected ${gn(r)}, got ${g}.`);if(await m(u,c),n.platform===`win32`)return un(u,t,p,l,i,a);await o(u,h),await f(p,{force:!0}),await d(t,p),v=!0,await d(u,t);let _=await mn(t,i);return _.success?(v=!1,await f(p,{force:!0}),{success:!0}):(await pn(p,t),v=!1,_)}catch(e){if(v){try{await pn(p,t)}catch{}v=!1}return Z(fn(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await f(l,{recursive:!0,force:!0})}}function cn(e){if(n.platform!==`win32`)return;let t=v.basename(e).toLowerCase();if(t===`qtx.exe`)return v.join(v.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return v.join(v.dirname(e),`qtx.exe`)}async function ln(e){try{return(await p(e)).mode&511}catch{return 493}}function un(e,t,r,i,a,o){try{return N([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,dn(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return Z(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function dn(e,t,n,r,i,a,o){let s=X(e),c=X(t),l=X(n),u=X(r),d=X(a??``),f=X(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 }`,`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`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`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 X(e){return e.replaceAll(`'`,`''`)}function Z(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function fn(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 pn(e,t){await f(t,{force:!0}),await d(e,t)}async function mn(e,t){if(!t)return{success:!0};try{let{exitCode:n,stdout:r}=await P(N([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return n===0?r.includes(t)?{success:!0}:Z(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):Z(`verify`,`The upgraded Quantex binary exited with code ${n} during verification.`)}catch(e){return Z(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function hn(t){return e(`sha256`).update(t).digest(`hex`)}function gn(e){return e.trim().toLowerCase()}const _n={source:`binary`,canHandle:e=>vn(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):Tt(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){let t=e.target.binaryAsset;if(!t)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 n=await sn(t.downloadUrl,e.facts.executablePath,t.checksum,e.target.targetVersion??`latest`,cn(e.facts.executablePath));return{...!n.success&&n.error?{...n,error:{...n.error,detail:{...typeof n.error.detail==`object`&&n.error.detail?n.error.detail:{},downloadUrl:t.downloadUrl}}}:n,installSource:e.facts.installSource,newVersion:n.success?e.target.targetVersion:void 0}}};function vn(e){return`facts`in e?e.facts.installSource:e.installSource}async function yn(e,t,n){try{let r=t?`${e}@${t}`:e,i=S(n);return await Q([`bun`,`add`,`-g`,...i?[`--registry`,i]:[],r],[e])}catch{return!1}}async function bn(e,t=`latest-major`,n=`latest`,r){try{let i=n===`latest`?e:`${e}@${n}`,a=S(r);return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...a?[`--registry`,a]:[],i],[e])}catch{return!1}}async function xn(e,t=`latest-major`){if(e.length===0)return!0;try{return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e)}catch{return!1}}async function Sn(e){try{return await M(j([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function Cn(e){try{let{exitCode:t,stdout:n}=await P(N([`bun`,`pm`,`-g`,`ls`],{stdio:On()}));return t===0?wn(n,e):void 0}catch{return}}function wn(e,t){let n=`${t}@`;for(let t of e.split(`
|
|
5
|
+
`)){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 Q(e,t){return await M(j(e))===0?Tn(t):!1}async function Tn(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await En();if(!n)return!0;let r=Dn(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await M(j([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function En(){try{let{exitCode:e,stdout:t}=await P(N([`bun`,`pm`,`-g`,`untrusted`],{stdio:On()}));return e===0?t:void 0}catch{return}}function Dn(e){let t=new Set;for(let n of e.split(`
|
|
6
|
+
`)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function On(){return[`ignore`,`pipe`,`ignore`]}const kn={source:`bun`,canHandle:e=>An(e)===`bun`,getRecoveryHint:e=>`bun add -g ${k}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await yn(k,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${k} through Bun.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function An(e){return`facts`in e?e.facts.installSource:e.installSource}async function jn(e,t,n){try{let r=t?`${e}@${t}`:e,i=S(n);return await M(j([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function Mn(e,t=`latest-major`,n=`latest`,r){try{let i=S(r);return await M(j(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...i?[`--registry`,i]:[]]:[`npm`,`update`,`-g`,e,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function Nn(e,t=`latest-major`){if(e.length===0)return!0;try{return await M(j(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e]))===0}catch{return!1}}async function Pn(e){try{return await M(j([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function Fn(e){try{let{exitCode:t,stdout:n}=await P(N([`npm`,`list`,`-g`,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?In(n,e):void 0}catch{return}}function In(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const Ln={source:`npm`,canHandle:e=>Rn(e)===`npm`,getRecoveryHint:e=>`npm install -g ${k}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await jn(k,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${k} through npm.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function Rn(e){return`facts`in e?e.facts.installSource:e.installSource}const zn={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}}},Bn=[kn,Ln,_n,zn];function $(e){return Bn.find(t=>t.canHandle(e))??zn}function Vn(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function Hn(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Vn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Un(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:$(e).getRecoveryHint(e,t)}async function Wn(e){return en(await Y({updateChannel:e?.updateChannel}))}async function Gn(e){let t=await qn(e),n=await Ie();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return tn(t,await $(t).upgrade(t))}finally{await n()}}function Kn(e,t=n.execPath){return Hn(e,t)}async function qn(e){return e?`facts`in e?e:e.installSource===`binary`?Y({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):nn(e):Y()}function Jn(e){return Qn({...e,error:null,ok:!0})}function Yn(e){return Qn({...e,ok:!1})}function Xn(e,t,n={}){let r=x();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?er({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Zn(e,t={}){let n=x();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return er(e)}function Qn(e){let t=x();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:J()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function $n(e){let t=x();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:J()},target:e.target,type:e.type}}function er(e){let t=$n(e);return console.log(JSON.stringify(t)),t}const{createColors:tr,isColorSupported:nr}=ae;function rr(){let e=x().colorMode??`auto`;return tr(e===`always`?!0:e===`never`?!1:nr)}const ir=new Proxy({},{get(e,t){let n=rr(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{xe as $,H as A,B,Ft as C,Tt as D,K as E,dt as F,j as G,R as H,ft as I,Te as J,M as K,et as L,lt as M,ot as N,st as O,ct as P,be as Q,tt as R,Y as S,J as T,P as U,nt as V,N as W,C as X,Fe as Y,w as Z,yn as _,Xn as a,x as at,xn as b,Gn as c,se as ct,Fn as d,T as et,jn as f,Cn as g,Nn as h,Zn as i,de as it,U as j,ut as k,Hn as l,Mn as m,Yn as n,ye as nt,Kn as o,ce as ot,Pn as p,k as q,Jn as r,S as rt,Wn as s,le as st,ir as t,Se as tt,Un as u,Sn as v,q as w,en as x,bn as y,z};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as e,r as t,t as n}from"./color-
|
|
1
|
+
import{a as e,r as t,t as n}from"./color-C7AeBSMJ.mjs";const r=[{flags:[`--json`,`--output`,`--non-interactive`,`--quiet`,`--color`,`--log-level`,`--refresh`,`--no-cache`,`--timeout`],name:`capabilities`,outputSchemaRef:`#/commands/capabilities`,stability:`stable`,summary:`Return environment and surface capabilities`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--timeout`],name:`commands`,outputSchemaRef:`#/commands/commands`,stability:`stable`,summary:`Return the stable command catalog`},{flags:[`get`,`set`,`reset`,`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--timeout`],name:`config`,outputSchemaRef:`#/commands/config`,stability:`stable`,summary:`Read and modify Quantex configuration`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--refresh`,`--no-cache`,`--timeout`],name:`doctor`,outputSchemaRef:`#/commands/doctor`,stability:`stable`,summary:`Diagnose the current environment and installed tools`},{flags:[`--install`,`--non-interactive`,`--yes`,`--quiet`,`--color`,`--log-level`,`--dry-run`,`--output`],name:`exec`,outputSchemaRef:`#/commands/exec`,stability:`stable`,summary:`Run an agent with explicit install policy`},{flags:[`--json`,`--output`,`--yes`,`--quiet`,`--color`,`--log-level`,`--dry-run`,`--timeout`,`--idempotency-key`],name:`ensure`,outputSchemaRef:`#/commands/ensure`,stability:`stable`,summary:`Ensure an agent is installed`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--refresh`,`--no-cache`,`--timeout`],name:`info`,outputSchemaRef:`#/commands/info`,stability:`stable`,summary:`Show human-friendly agent details`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--refresh`,`--no-cache`,`--timeout`],name:`inspect`,outputSchemaRef:`#/commands/inspect`,stability:`stable`,summary:`Return structured agent state`},{flags:[`--json`,`--output`,`--yes`,`--quiet`,`--color`,`--log-level`,`--dry-run`,`--timeout`,`--idempotency-key`],name:`install`,outputSchemaRef:`#/commands/install`,stability:`stable`,summary:`Install one or more agents`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--refresh`,`--no-cache`,`--timeout`],name:`list`,outputSchemaRef:`#/commands/list`,stability:`stable`,summary:`List supported agents`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--refresh`,`--no-cache`,`--timeout`],name:`resolve`,outputSchemaRef:`#/commands/resolve`,stability:`stable`,summary:`Resolve an agent executable entrypoint`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--timeout`],name:`schema`,outputSchemaRef:`#/commands/schema`,stability:`stable`,summary:`Return structured output schemas`},{flags:[`--all`,`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--dry-run`,`--refresh`,`--no-cache`,`--timeout`,`--idempotency-key`],name:`update`,outputSchemaRef:`#/commands/update`,stability:`stable`,summary:`Update one or all agents`},{flags:[`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--dry-run`,`--timeout`,`--idempotency-key`],name:`uninstall`,outputSchemaRef:`#/commands/uninstall`,stability:`stable`,summary:`Uninstall an agent`},{flags:[`--check`,`--channel`,`--json`,`--output`,`--quiet`,`--color`,`--log-level`,`--dry-run`,`--refresh`,`--no-cache`,`--timeout`,`--idempotency-key`],name:`upgrade`,outputSchemaRef:`#/commands/upgrade`,stability:`stable`,summary:`Upgrade Quantex CLI itself`}];async function i(){return e(t({action:`commands`,data:{commands:r},target:{kind:`system`,name:`commands`}}),a)}function a(e){if(e.data){console.log(n.bold(`
|
|
2
2
|
Quantex Commands
|
|
3
3
|
`));for(let t of e.data.commands){let e=t.flags.length>0?n.dim(` [${t.flags.join(`, `)}]`):``;console.log(` ${n.cyan(t.name)}${e}`),console.log(` ${t.summary}`),console.log(` ${n.dim(t.outputSchemaRef)}`)}console.log()}}export{i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./commands-BlsHkgXm.mjs";export{e as commandsCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{$ as e,Q as t,a as n,et as r,n as i,nt as a,r as o,rt as s,t as c,tt as l}from"./color-
|
|
1
|
+
import{$ as e,Q as t,a as n,et as r,n as i,nt as a,r as o,rt as s,t as c,tt as l}from"./color-C7AeBSMJ.mjs";async function u(c,u,f){if(!c)return n(o({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),d);switch(c){case`get`:{if(!u)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await r())[u];return n(o({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 n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!t(f))return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!e(f))return n(i({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 n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!s(f))return n(i({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 n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let a={};try{a=await r()}catch{}return a[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?s(f):f,await l(a),n(o({action:`config`,data:{action:`set`,key:u,value:a[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await l(a),n(o({action:`config`,data:{action:`reset`,config:a},target:{kind:`config`}}),d);default:return n(i({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
2
|
Current Configuration:
|
|
3
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{U as e,W as t}from"./color-DxHedKnS.mjs";import{toJSONSchema as n,z as r}from"zod";import i from"node:process";const a=[{name:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,packages:{npm:`@sourcegraph/amp`},binaryName:`amp`,selfUpdate:{command:[`amp`,`update`]},versionProbe:{command:[`amp`,`version`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,packages:{npm:`@augmentcode/auggie`},binaryName:`auggie`,selfUpdate:{command:[`auggie`,`upgrade`]},versionProbe:{command:[`auggie`,`--version`]},platforms:{macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`autohand`,lookupAliases:[`autohand-cli`],displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,packages:{npm:`autohand-cli`},binaryName:`autohand`,versionProbe:{command:[`autohand`,`--version`]},platforms:{windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}],linux:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}]}},{name:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,packages:{npm:`@anthropic-ai/claude-code`},binaryName:`claude`,selfUpdate:{command:[`claude`,`update`],fallbackCommands:[[`claude`,`upgrade`]]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://claude.ai/install.ps1 | iex`,type:`script`},{packageName:`Anthropic.ClaudeCode`,packageTargetKind:`id`,type:`winget`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}]}},{name:`codebuddy`,lookupAliases:[`codebuddy-code`],displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,packages:{npm:`@tencent-ai/codebuddy-code`},binaryName:`codebuddy`,selfUpdate:{command:[`codebuddy`,`update`]},versionProbe:{command:[`codebuddy`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}]}},{name:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,packages:{cargo:`codewhale-cli`,npm:`codewhale`},binaryName:`codewhale`,selfUpdate:{command:[`codewhale`,`update`]},versionProbe:{command:[`codewhale`,`--version`]},platforms:{windows:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],macos:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],linux:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}]}},{name:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,packages:{mise:`npm:@openai/codex`,npm:`@openai/codex`},binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`},{type:`mise`}],macos:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}]}},{name:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,packages:{npm:`@github/copilot`},binaryName:`copilot`,platforms:{windows:[{packageName:`GitHub.Copilot`,packageTargetKind:`id`,type:`winget`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}]}},{name:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,packages:{npm:`@charmland/crush`},binaryName:`crush`,selfUpdate:{command:[`crush`,`update`]},versionProbe:{command:[`crush`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet.crush`,packageTargetKind:`id`,type:`winget`}],macos:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}]}},{name:`cursor`,lookupAliases:[`agent`],displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,binaryName:`agent`,selfUpdate:{command:[`agent`,`update`]},versionProbe:{command:[`agent`,`--version`]},platforms:{windows:[{command:`irm 'https://cursor.com/install?win32=true' | iex`,type:`script`}],macos:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],linux:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}]}},{name:`deepcode`,displayName:`Deep Code CLI`,homepage:`https://github.com/lessweb/deepcode-cli`,packages:{npm:`@vegamo/deepcode-cli`},binaryName:`deepcode`,versionProbe:{command:[`deepcode`,`--version`]},platforms:{windows:[{type:`npm`}],macos:[{type:`npm`}],linux:[{type:`npm`}]}},{name:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,binaryName:`devin`,selfUpdate:{command:[`devin`,`update`]},versionProbe:{command:[`devin`,`version`]},platforms:{windows:[{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,type:`script`}],macos:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],linux:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}]}},{name:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,packages:{npm:`droid`},binaryName:`droid`,selfUpdate:{command:[`droid`,`update`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://app.factory.ai/cli/windows | iex`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}]}},{name:`forgecode`,lookupAliases:[`forge`],displayName:`ForgeCode`,homepage:`https://forgecode.dev`,packages:{npm:`forgecode`},binaryName:`forge`,selfUpdate:{command:[`forge`,`update`]},versionProbe:{command:[`forge`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://forgecode.dev/cli | iex`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}]}},{name:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,packages:{npm:`@google/gemini-cli`},binaryName:`gemini`,platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}]}},{name:`genie`,displayName:`Genie`,homepage:`https://jsr.io/@nicorio/genie`,packages:{deno:`jsr:@nicorio/genie`},binaryName:`genie`,platforms:{windows:[{packageInstallArgs:[`-A`],type:`deno`}],macos:[{packageInstallArgs:[`-A`],type:`deno`}],linux:[{packageInstallArgs:[`-A`],type:`deno`}]}},{name:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,binaryName:`goose`,selfUpdate:{command:[`goose`,`update`]},versionProbe:{command:[`goose`,`--version`]},platforms:{windows:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,type:`script`}],macos:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],linux:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}]}},{name:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,binaryName:`jcode`,versionProbe:{command:[`jcode`,`--version`]},platforms:{windows:[{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,type:`script`}],macos:[{packageName:`1jehuang/jcode/jcode`,type:`brew`},{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}],linux:[{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}]}},{name:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,packages:{npm:`@jetbrains/junie`},binaryName:`junie`,versionProbe:{command:[`junie`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}]}},{name:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,packages:{npm:`@kilocode/cli`},binaryName:`kilo`,selfUpdate:{command:[`kilo`,`upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`kimi`,lookupAliases:[`kimi-code`,`kimi-cli`],displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-cli/`,binaryName:`kimi`,packages:{uv:`kimi-cli`},selfUpdate:{command:[`uv`,`tool`,`upgrade`,`kimi-cli`,`--no-cache`]},versionProbe:{command:[`kimi`,`--version`]},platforms:{windows:[{command:`irm https://code.kimi.com/install.ps1 | iex`,type:`script`}],macos:[{packageInstallArgs:[`--python`,`3.13`],type:`uv`},{command:`curl -LsSf https://code.kimi.com/install.sh | bash`,type:`script`}],linux:[{packageInstallArgs:[`--python`,`3.13`],type:`uv`},{command:`curl -LsSf https://code.kimi.com/install.sh | bash`,type:`script`}]}},{name:`kiro`,lookupAliases:[`kiro-cli`],displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,binaryName:`kiro-cli`,versionProbe:{command:[`kiro-cli`,`--version`]},platforms:{windows:[{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,type:`script`}],macos:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],linux:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}]}},{name:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,packages:{npm:`@oh-my-pi/pi-coding-agent`},binaryName:`omp`,versionProbe:{command:[`omp`,`--version`]},platforms:{windows:[{type:`bun`},{command:`irm https://omp.sh/install.ps1 | iex`,type:`script`}],macos:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],linux:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}]}},{name:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,packages:{npm:`opencode-ai`},binaryName:`opencode`,selfUpdate:{command:[`opencode`,`upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}]}},{name:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,binaryName:`openhands`,packages:{uv:`openhands`},selfUpdate:{command:[`uv`,`tool`,`upgrade`,`openhands`,`--python`,`3.12`]},versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}],linux:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}]}},{name:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,packages:{npm:`@mariozechner/pi-coding-agent`},binaryName:`pi`,selfUpdate:{command:[`pi`,`update`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`qoder`,lookupAliases:[`qodercli`],displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,packages:{npm:`@qoder-ai/qodercli`},binaryName:`qodercli`,selfUpdate:{command:[`qodercli`,`update`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}]}},{name:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,packages:{npm:`@qwen-code/qwen-code`},binaryName:`qwen`,platforms:{windows:[{command:`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`,type:`script`},{type:`bun`},{type:`npm`}],macos:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],linux:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}]}},{name:`reasonix`,lookupAliases:[`deepseek-reasonix`],displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,packages:{npm:`reasonix`},binaryName:`reasonix`,selfUpdate:{command:[`reasonix`,`update`]},versionProbe:{command:[`reasonix`,`--version`]},platforms:{windows:[{type:`npm`}],macos:[{type:`npm`}],linux:[{type:`npm`}]}},{name:`vibe`,lookupAliases:[`mistral-vibe`],displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,binaryName:`vibe`,packages:{pip:`mistral-vibe`,uv:`mistral-vibe`},versionProbe:{command:[`vibe`,`--version`]},platforms:{windows:[{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],macos:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],linux:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}]}},{name:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,packages:{cargo:`vtcode`},binaryName:`vtcode`,selfUpdate:{command:[`vtcode`,`update`]},versionProbe:{command:[`vtcode`,`--version`]},platforms:{windows:[{type:`cargo`},{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,type:`script`}],macos:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}],linux:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}]}}],o=r.string().min(1),s=r.array(o).min(1);r.enum([`windows`,`macos`,`linux`]);const c=r.enum([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]),l=r.enum([`package`,`cask`,`id`]),u={binaryName:o.optional(),packageInstallArgs:r.array(o).min(1).optional(),packageName:o.optional(),packageTargetKind:l.optional()},d=r.object({...u,type:c}).strict(),f=r.object({...u,command:o,type:r.literal(`script`)}).strict(),p=r.object({...u,command:o,type:r.literal(`binary`)}).strict(),m=r.discriminatedUnion(`type`,[d,f,p]),h=r.object({cargo:o.optional(),deno:o.optional(),mise:o.optional(),npm:o.optional(),pip:o.optional(),uv:o.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`packages must include at least one package identifier`}),ee=r.object({command:s,fallbackCommands:r.array(s).min(1).optional(),versionAfter:r.enum([`same-process`,`respawn`]).optional()}).strict(),te=r.object({command:s.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),g=r.object({linux:r.array(m).min(1).optional(),macos:r.array(m).min(1).optional(),windows:r.array(m).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),_=r.object({binaryName:o,displayName:o,homepage:r.url().startsWith(`https://`),lookupAliases:r.array(o).min(1).optional(),name:o.regex(/^[a-z0-9][a-z0-9-]*$/),packages:h.optional(),platforms:g,selfUpdate:ee.optional(),versionProbe:te.optional()}).strict(),v=r.array(_).min(1),y={...n(v),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},b={},x=v.parse(a).map(T),S=new Map(x.map(e=>[e.name,e]));function C(){return x}function w(e){let t=S.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function T(e){let t=b[e.name],n=E(e.versionProbe,t);return{...e,versionProbe:n}}function E(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}w(`amp`),w(`auggie`);const D=w(`autohand`),O=w(`claude`),k=w(`codebuddy`),A=w(`codewhale`),j=w(`codex`),M=w(`copilot`);w(`crush`);const N=w(`cursor`),P=w(`deepcode`),F=w(`devin`),I=w(`droid`);w(`forgecode`);const L=w(`gemini`),R=w(`genie`);w(`goose`);const z=w(`jcode`),ne=w(`junie`),B=w(`kilo`);w(`kimi`),w(`kiro`);const V=w(`omp`),H=w(`opencode`),U=w(`openhands`),W=w(`pi`),G=w(`qoder`);w(`qwen`);const K=w(`reasonix`),q=w(`vibe`),J=w(`vtcode`),Y=C();function X(){return Y}function Z(e){return Y.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1))}function re(e){return Z(e)}function ie(){switch(i.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function Q(n){try{let{exitCode:r}=await e(t([n,`--version`]));return r===0}catch{return!1}}async function ae(){return Q(`bun`)}async function oe(){return Q(`npm`)}async function $(){return Q(`brew`)}async function se(){return Q(`deno`)}async function ce(){return Q(`cargo`)}async function le(){return Q(`mise`)}async function ue(){return Q(`winget`)}async function de(){return await Q(`pip`)||await Q(`pip3`)?!0:pe()}async function fe(){return Q(`uv`)}async function pe(){try{let{exitCode:n}=await e(t([`python`,`-m`,`pip`,`--version`]));if(n===0)return!0}catch{}try{let{exitCode:n}=await e(t([`python3`,`-m`,`pip`,`--version`]));return n===0}catch{return!1}}async function me(n){try{let{exitCode:r}=await e(t([i.platform===`win32`?`where`:`which`,n]));return r===0}catch{return!1}}export{V as A,_ as B,F as C,z as D,R as E,K as F,v as H,q as I,J as L,U as M,W as N,ne as O,G as P,w as R,P as S,L as T,y as V,k as _,ce as a,M as b,oe as c,ue as d,Z as f,O as g,D as h,ae as i,H as j,B as k,de as l,X as m,me as n,se as o,re as p,$ as r,le as s,ie as t,fe as u,A as v,I as w,N as x,j as y,C as z};
|
|
1
|
+
import{U as e,W as t}from"./color-C7AeBSMJ.mjs";import{toJSONSchema as n,z as r}from"zod";import i from"node:process";const a=[{name:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,packages:{npm:`@sourcegraph/amp`},binaryName:`amp`,selfUpdate:{command:[`amp`,`update`]},versionProbe:{command:[`amp`,`version`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,packages:{npm:`@augmentcode/auggie`},binaryName:`auggie`,selfUpdate:{command:[`auggie`,`upgrade`]},versionProbe:{command:[`auggie`,`--version`]},platforms:{macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`autohand`,lookupAliases:[`autohand-cli`],displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,packages:{npm:`autohand-cli`},binaryName:`autohand`,versionProbe:{command:[`autohand`,`--version`]},platforms:{windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}],linux:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}]}},{name:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,packages:{npm:`@anthropic-ai/claude-code`},binaryName:`claude`,selfUpdate:{command:[`claude`,`update`],fallbackCommands:[[`claude`,`upgrade`]]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://claude.ai/install.ps1 | iex`,type:`script`},{packageName:`Anthropic.ClaudeCode`,packageTargetKind:`id`,type:`winget`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}]}},{name:`codebuddy`,lookupAliases:[`codebuddy-code`],displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,packages:{npm:`@tencent-ai/codebuddy-code`},binaryName:`codebuddy`,selfUpdate:{command:[`codebuddy`,`update`]},versionProbe:{command:[`codebuddy`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}]}},{name:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,packages:{cargo:`codewhale-cli`,npm:`codewhale`},binaryName:`codewhale`,selfUpdate:{command:[`codewhale`,`update`]},versionProbe:{command:[`codewhale`,`--version`]},platforms:{windows:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],macos:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],linux:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}]}},{name:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,packages:{mise:`npm:@openai/codex`,npm:`@openai/codex`},binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`},{type:`mise`}],macos:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}]}},{name:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,packages:{npm:`@github/copilot`},binaryName:`copilot`,platforms:{windows:[{packageName:`GitHub.Copilot`,packageTargetKind:`id`,type:`winget`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}]}},{name:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,packages:{npm:`@charmland/crush`},binaryName:`crush`,selfUpdate:{command:[`crush`,`update`]},versionProbe:{command:[`crush`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet.crush`,packageTargetKind:`id`,type:`winget`}],macos:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}]}},{name:`cursor`,lookupAliases:[`agent`],displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,binaryName:`agent`,selfUpdate:{command:[`agent`,`update`]},versionProbe:{command:[`agent`,`--version`]},platforms:{windows:[{command:`irm 'https://cursor.com/install?win32=true' | iex`,type:`script`}],macos:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],linux:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}]}},{name:`deepcode`,displayName:`Deep Code CLI`,homepage:`https://github.com/lessweb/deepcode-cli`,packages:{npm:`@vegamo/deepcode-cli`},binaryName:`deepcode`,versionProbe:{command:[`deepcode`,`--version`]},platforms:{windows:[{type:`npm`}],macos:[{type:`npm`}],linux:[{type:`npm`}]}},{name:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,binaryName:`devin`,selfUpdate:{command:[`devin`,`update`]},versionProbe:{command:[`devin`,`version`]},platforms:{windows:[{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,type:`script`}],macos:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],linux:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}]}},{name:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,packages:{npm:`droid`},binaryName:`droid`,selfUpdate:{command:[`droid`,`update`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://app.factory.ai/cli/windows | iex`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}]}},{name:`forgecode`,lookupAliases:[`forge`],displayName:`ForgeCode`,homepage:`https://forgecode.dev`,packages:{npm:`forgecode`},binaryName:`forge`,selfUpdate:{command:[`forge`,`update`]},versionProbe:{command:[`forge`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`irm https://forgecode.dev/cli | iex`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}]}},{name:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,packages:{npm:`@google/gemini-cli`},binaryName:`gemini`,platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}]}},{name:`genie`,displayName:`Genie`,homepage:`https://jsr.io/@nicorio/genie`,packages:{deno:`jsr:@nicorio/genie`},binaryName:`genie`,platforms:{windows:[{packageInstallArgs:[`-A`],type:`deno`}],macos:[{packageInstallArgs:[`-A`],type:`deno`}],linux:[{packageInstallArgs:[`-A`],type:`deno`}]}},{name:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,binaryName:`goose`,selfUpdate:{command:[`goose`,`update`]},versionProbe:{command:[`goose`,`--version`]},platforms:{windows:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,type:`script`}],macos:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],linux:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}]}},{name:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,binaryName:`jcode`,versionProbe:{command:[`jcode`,`--version`]},platforms:{windows:[{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,type:`script`}],macos:[{packageName:`1jehuang/jcode/jcode`,type:`brew`},{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}],linux:[{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}]}},{name:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,packages:{npm:`@jetbrains/junie`},binaryName:`junie`,versionProbe:{command:[`junie`,`--version`]},platforms:{windows:[{type:`bun`},{type:`npm`},{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}]}},{name:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,packages:{npm:`@kilocode/cli`},binaryName:`kilo`,selfUpdate:{command:[`kilo`,`upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`kimi`,lookupAliases:[`kimi-code`,`kimi-cli`],displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-cli/`,binaryName:`kimi`,packages:{uv:`kimi-cli`},selfUpdate:{command:[`uv`,`tool`,`upgrade`,`kimi-cli`,`--no-cache`]},versionProbe:{command:[`kimi`,`--version`]},platforms:{windows:[{command:`irm https://code.kimi.com/install.ps1 | iex`,type:`script`}],macos:[{packageInstallArgs:[`--python`,`3.13`],type:`uv`},{command:`curl -LsSf https://code.kimi.com/install.sh | bash`,type:`script`}],linux:[{packageInstallArgs:[`--python`,`3.13`],type:`uv`},{command:`curl -LsSf https://code.kimi.com/install.sh | bash`,type:`script`}]}},{name:`kiro`,lookupAliases:[`kiro-cli`],displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,binaryName:`kiro-cli`,versionProbe:{command:[`kiro-cli`,`--version`]},platforms:{windows:[{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,type:`script`}],macos:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],linux:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}]}},{name:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,packages:{npm:`@oh-my-pi/pi-coding-agent`},binaryName:`omp`,versionProbe:{command:[`omp`,`--version`]},platforms:{windows:[{type:`bun`},{command:`irm https://omp.sh/install.ps1 | iex`,type:`script`}],macos:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],linux:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}]}},{name:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,packages:{npm:`opencode-ai`},binaryName:`opencode`,selfUpdate:{command:[`opencode`,`upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}]}},{name:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,binaryName:`openhands`,packages:{uv:`openhands`},selfUpdate:{command:[`uv`,`tool`,`upgrade`,`openhands`,`--python`,`3.12`]},versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}],linux:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}]}},{name:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,packages:{npm:`@mariozechner/pi-coding-agent`},binaryName:`pi`,selfUpdate:{command:[`pi`,`update`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],linux:[{type:`bun`},{type:`npm`}]}},{name:`qoder`,lookupAliases:[`qodercli`],displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,packages:{npm:`@qoder-ai/qodercli`},binaryName:`qodercli`,selfUpdate:{command:[`qodercli`,`update`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}]}},{name:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,packages:{npm:`@qwen-code/qwen-code`},binaryName:`qwen`,platforms:{windows:[{command:`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`,type:`script`},{type:`bun`},{type:`npm`}],macos:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],linux:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}]}},{name:`reasonix`,lookupAliases:[`deepseek-reasonix`],displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,packages:{npm:`reasonix`},binaryName:`reasonix`,selfUpdate:{command:[`reasonix`,`update`]},versionProbe:{command:[`reasonix`,`--version`]},platforms:{windows:[{type:`npm`}],macos:[{type:`npm`}],linux:[{type:`npm`}]}},{name:`vibe`,lookupAliases:[`mistral-vibe`],displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,binaryName:`vibe`,packages:{pip:`mistral-vibe`,uv:`mistral-vibe`},versionProbe:{command:[`vibe`,`--version`]},platforms:{windows:[{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],macos:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],linux:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}]}},{name:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,packages:{cargo:`vtcode`},binaryName:`vtcode`,selfUpdate:{command:[`vtcode`,`update`]},versionProbe:{command:[`vtcode`,`--version`]},platforms:{windows:[{type:`cargo`},{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,type:`script`}],macos:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}],linux:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}]}}],o=r.string().min(1),s=r.array(o).min(1);r.enum([`windows`,`macos`,`linux`]);const c=r.enum([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]),l=r.enum([`package`,`cask`,`id`]),u={binaryName:o.optional(),packageInstallArgs:r.array(o).min(1).optional(),packageName:o.optional(),packageTargetKind:l.optional()},d=r.object({...u,type:c}).strict(),f=r.object({...u,command:o,type:r.literal(`script`)}).strict(),p=r.object({...u,command:o,type:r.literal(`binary`)}).strict(),m=r.discriminatedUnion(`type`,[d,f,p]),h=r.object({cargo:o.optional(),deno:o.optional(),mise:o.optional(),npm:o.optional(),pip:o.optional(),uv:o.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`packages must include at least one package identifier`}),ee=r.object({command:s,fallbackCommands:r.array(s).min(1).optional(),versionAfter:r.enum([`same-process`,`respawn`]).optional()}).strict(),te=r.object({command:s.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),g=r.object({linux:r.array(m).min(1).optional(),macos:r.array(m).min(1).optional(),windows:r.array(m).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),_=r.object({binaryName:o,displayName:o,homepage:r.url().startsWith(`https://`),lookupAliases:r.array(o).min(1).optional(),name:o.regex(/^[a-z0-9][a-z0-9-]*$/),packages:h.optional(),platforms:g,selfUpdate:ee.optional(),versionProbe:te.optional()}).strict(),v=r.array(_).min(1),y={...n(v),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},b={},x=v.parse(a).map(T),S=new Map(x.map(e=>[e.name,e]));function C(){return x}function w(e){let t=S.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function T(e){let t=b[e.name],n=E(e.versionProbe,t);return{...e,versionProbe:n}}function E(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}w(`amp`),w(`auggie`);const D=w(`autohand`),O=w(`claude`),k=w(`codebuddy`),A=w(`codewhale`),j=w(`codex`),M=w(`copilot`);w(`crush`);const N=w(`cursor`),P=w(`deepcode`),F=w(`devin`),I=w(`droid`);w(`forgecode`);const L=w(`gemini`),R=w(`genie`);w(`goose`);const z=w(`jcode`),ne=w(`junie`),B=w(`kilo`);w(`kimi`),w(`kiro`);const V=w(`omp`),H=w(`opencode`),U=w(`openhands`),W=w(`pi`),G=w(`qoder`);w(`qwen`);const K=w(`reasonix`),q=w(`vibe`),J=w(`vtcode`),Y=C();function X(){return Y}function Z(e){return Y.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1))}function re(e){return Z(e)}function ie(){switch(i.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function Q(n){try{let{exitCode:r}=await e(t([n,`--version`]));return r===0}catch{return!1}}async function ae(){return Q(`bun`)}async function oe(){return Q(`npm`)}async function $(){return Q(`brew`)}async function se(){return Q(`deno`)}async function ce(){return Q(`cargo`)}async function le(){return Q(`mise`)}async function ue(){return Q(`winget`)}async function de(){return await Q(`pip`)||await Q(`pip3`)?!0:pe()}async function fe(){return Q(`uv`)}async function pe(){try{let{exitCode:n}=await e(t([`python`,`-m`,`pip`,`--version`]));if(n===0)return!0}catch{}try{let{exitCode:n}=await e(t([`python3`,`-m`,`pip`,`--version`]));return n===0}catch{return!1}}async function me(n){try{let{exitCode:r}=await e(t([i.platform===`win32`?`where`:`which`,n]));return r===0}catch{return!1}}export{V as A,_ as B,F as C,z as D,R as E,K as F,v as H,q as I,J as L,U as M,W as N,ne as O,G as P,w as R,P as S,L as T,y as V,k as _,ce as a,M as b,oe as c,ue as d,Z as f,O as g,D as h,ae as i,H as j,B as k,de as l,X as m,me as n,se as o,re as p,$ as r,le as s,ie as t,fe as u,A as v,I as w,N as x,j as y,C as z};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{t as n}from"./agents-
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{t as n}from"./agents-TeKrx6Oe.mjs";import{a as r,c as i,d as a,i as o,l as s,o as c,r as l,s as u,u as d}from"./detect-BULZSyIJ.mjs";import{H as f,a as p,q as m,r as h,s as g,t as _,u as v}from"./color-C7AeBSMJ.mjs";async function y(){let m=await o(),_=await i(),y=await l(),S=await r(),C=await c(),w=await u(),T=await s(),E=await d(),D=await a(),O=await g(),k=O.latestVersion?f(O.latestVersion,O.currentVersion):!1,A=await n(),j=A.filter(e=>e.inPath).map(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})),M=[],N=`docs/runbooks/quantex-troubleshooting.md`,P=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!m&&!_&&!y&&!S&&!C&&!w&&!T&&!E&&!D&&M.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:N,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:[]}),(O.installSource===`bun`&&!m||O.installSource===`npm`&&!_)&&M.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:P,message:`Quantex CLI is tracked as a ${O.installSource} install, but ${O.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:x(O.installSource,O.updateChannel)}),O.canAutoUpdate||M.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:P,message:`Quantex CLI cannot auto-update from install source "${O.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:[]}),k&&O.recommendedUpgradeCommand){let e=v(O);M.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:P,message:e?`Quantex CLI ${O.currentVersion} is behind ${O.latestVersion}. Run ${O.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${O.currentVersion} is behind ${O.latestVersion}. Run ${O.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[O.recommendedUpgradeCommand]})}for(let n of A.filter(e=>e.inPath)){if(n.installedState||M.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:N,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 r=t(n.agent,n.agent.selfUpdate?`self-update`:`manual-hint`)??e(n.agent);M.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:N,message:`${n.agent.displayName} ${n.installedVersion} is behind ${n.latestVersion}, but the current source is ${n.sourceLabel}. ${r}`,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 p(h({action:`doctor`,data:{agents:j,issues:M,installers:{brew:y,bun:m,cargo:S,deno:C,mise:w,npm:_,pip:T,uv:E,winget:D},self:{canAutoUpdate:O.canAutoUpdate,currentVersion:O.currentVersion,installSource:O.installSource,latestVersion:O.latestVersion,outdated:!!k,recoveryHint:k?v(O):void 0}},target:{kind:`system`,name:`doctor`}}),b)}function b(e){if(e.data){if(console.log(_.bold(`
|
|
2
2
|
Quantex CLI Environment Check
|
|
3
3
|
`)),console.log(_.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?_.green(`available`):_.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?_.green(`available`):_.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?_.green(`available`):_.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?_.green(`available`):_.red(`not found`)}`),console.log(` deno: ${e.data.installers.deno?_.green(`available`):_.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?_.green(`available`):_.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?_.green(`available`):_.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?_.green(`available`):_.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?_.green(`available`):_.red(`not found`)}`),console.log(`\n${_.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?_.green(`supported`):_.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?_.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${_.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(_.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?_.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${_.bold(`Issues:`)}`),e.data.issues.length===0)console.log(_.green(` No issues found.`));else for(let t of e.data.issues)console.log(_.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(_.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function x(e,t){let n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${m}@${n}`]:e===`npm`?[`npm install -g ${m}@${n}`]:[]}export{y as doctorCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./ensure-CBy1tx3t.mjs";export{e as ensureCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as e,c as t,r as n,s as r}from"./agents-
|
|
1
|
+
import{b as e,c as t,r as n,s as r}from"./agents-TeKrx6Oe.mjs";import{J as i,a,i as o,n as s,r as c,t as l}from"./color-C7AeBSMJ.mjs";import{t as u}from"./lifecycle-errors-D7JpbOsK.mjs";import{a as d,i as f,n as p,r as m}from"./user-output-DJnMtfzB.mjs";async function h(l){let d=await n(l);if(!d)return a(s({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:l},message:`Unknown agent: ${l}`},target:{kind:`agent`,name:l}}),g);let{agent:f,inspection:m}=d;if(m.inPath){if(m.installedState)return a(c({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!0},target:{kind:`agent`,name:f.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${f.displayName} is already installed.`}]}),g);let n=e(m.methods,m.resolvedBinaryPath??m.binaryPath);if(n){if(p())return a(c({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!0},target:{kind:`agent`,name:f.name},warnings:[{code:`DRY_RUN`,message:`Dry run: would record the existing ${f.displayName} install in Quantex state.`}]}),g);o({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name}},target:{kind:`agent`,name:f.name},type:`started`});try{let e=await t(f,n);return a(c({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!0,installState:{installType:e.installType,packageName:e.packageName},installed:!0},target:{kind:`agent`,name:f.name},warnings:[{code:`TRACKED_EXISTING_INSTALL`,message:`${f.displayName} is already installed. Quantex is now tracking the existing install.`}]}),g)}catch(e){if(i(e))return a(s({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!0},...u(e,{kind:`agent`,name:f.name})}),g);throw e}}return a(c({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!0},target:{kind:`agent`,name:f.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${f.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]}),g)}if(p())return a(c({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!1},target:{kind:`agent`,name:f.name},warnings:[{code:`DRY_RUN`,message:`Dry run: would install ${f.displayName}.`}]}),g);o({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name}},target:{kind:`agent`,name:f.name},type:`started`});let h;try{h=await r(f)}catch(e){if(i(e))return a(s({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!1},...u(e,{kind:`agent`,name:f.name})}),g);throw e}return h.success?a(c({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!0,installState:h.installedState?{installType:h.installedState.installType,packageName:h.installedState.packageName}:void 0,installed:!0},target:{kind:`agent`,name:f.name}}),g):a(s({action:`ensure`,data:{agent:{displayName:f.displayName,name:f.name},changed:!1,installed:!1},error:{code:`INSTALL_FAILED`,message:`Failed to install ${f.displayName}.`},target:{kind:`agent`,name:f.name}}),g)}function g(e){if(e.error){m(l.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`){f(l.green(t.message));continue}if(t.code===`DRY_RUN`){d(l.cyan(t.message));continue}d(l.yellow(t.message))}return}if(e.data.changed){f(l.cyan(`Installing ${e.data.agent.displayName}...`)),f(l.green(`${e.data.agent.displayName} is now installed.`));return}f(l.green(`${e.data.agent.displayName} is already installed.`))}}export{h as t};
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{C as n,D as r,E as i,S as a,T as ee,a as te,d as ne,f as re,g as ie,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,w as _}from"./agents-
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{C as n,D as r,E as i,S as a,T as ee,a as te,d as ne,f as re,g as ie,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,w as _}from"./agents-TeKrx6Oe.mjs";import{A as v,B as y,C as b,D as x,E as S,F as C,H as w,I as T,L as E,M as D,N as O,O as k,P as A,R as j,S as M,T as N,V as P,_ as F,b as I,c as L,f as R,g as z,h as B,i as V,j as H,k as U,m as W,n as G,o as K,p as q,t as J,v as Y,w as ae,x as oe,y as se,z as ce}from"./detect-BULZSyIJ.mjs";import{A as le,B as ue,C as de,D as fe,E as pe,F as me,G as he,I as ge,K as _e,M as ve,N as ye,O as be,P as xe,R as Se,T as Ce,X as we,Z as Te,a as Ee,at as De,c as Oe,ct as ke,et as Ae,j as je,k as Me,l as Ne,n as Pe,o as Fe,ot as Ie,r as Le,s as Re,st as ze,tt as Be,u as Ve,w as He,z as Ue}from"./color-C7AeBSMJ.mjs";import{t as We}from"./capabilities-C1DHqSxt.mjs";import{t as Ge}from"./commands-BlsHkgXm.mjs";import{t as Ke}from"./ensure-CBy1tx3t.mjs";import{t as qe}from"./inspect-NfNRR5tA.mjs";import{t as Je}from"./resolve-DmMXWXNl.mjs";import{n as Ye,t as Xe}from"./schema-7XXRDi11.mjs";import{n as Ze,t as X}from"./errors-DCtNasuC.mjs";import{a as Qe,i as $e,n as et,t as tt}from"./update-D8AckgdR.mjs";const nt=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function rt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
|
|
2
2
|
`)}\n`}function it(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function Z(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function Q(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function $(e){return e.includes(`beta`)?`beta`:`stable`}function at(e){let t=Q(e.repositoryUrl),n=$(e.version),r=e.files.map(n=>{let r=Z(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function ot(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of nt)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!Z(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}async function st(e,t){try{let n=await _e(he([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{y as agentCatalogEntrySchema,P as agentCatalogJsonSchema,w as agentCatalogSchema,f as agentUpdateProviders,B as autohand,de as canAutoUpdateSelf,a as canLookupLatestVersionForInstallType,l as canResolveAgentUpdate,n as canUninstallInstallType,_ as canUpdateInstallType,We as capabilitiesCommand,z as claude,F as codebuddy,Y as codewhale,se as codex,Ge as commandsCommand,I as copilot,Pe as createErrorResult,at as createReleaseManifest,Le as createSuccessResult,$e as createUpdatePlan,oe as cursor,M as deepcode,He as detectSelfInstallSource,b as devin,ae as droid,Ee as emitCommandResult,Ke as ensureCommand,st as execCommand,rt as formatChecksums,N as gemini,S as genie,R as getAgentByLookupName,q as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,o as getAgentUpdateStrategy,W as getAllAgents,Se as getBinaryPath,pe as getBinaryReleaseAssetName,fe as getBinaryReleaseDownloadUrl,j as getCatalogAgent,ce as getCatalogAgents,De as getCliContext,we as getConfigDir,Te as getConfigFilePath,X as getExitCodeForError,Ze as getExitCodeForResult,ee as getInstallLifecycle,be as getInstalledAgentState,Ue as getInstalledVersion,i as getInstallerCapabilities,ue as getLatestVersion,re as getManagedInstaller,e as getManualAgentUpdateMessage,Fe as getManualSelfUpgradeCommand,d as getOrderedInstallMethods,J as getPlatform,Xe as getSchemaCatalog,Me as getSelfState,Ne as getSelfUpgradeRecoveryHint,Ve as getSelfUpgradeRecoveryHintForInspection,Ce as getSelfVersion,tt as getSingleAgentUpdateStatus,le as getStateFilePath,s as inspectAgent,te as inspectAllAgents,qe as inspectCommand,h as inspectRegisteredAgents,Re as inspectSelf,m as installAgent,G as isBinaryInPath,V as isBunAvailable,K as isDenoAvailable,Qe as isInspectionUpdateAvailable,r as isManagedInstallType,L as isNpmAvailable,x as jcode,k as junie,U as kilo,Ae as loadConfig,je as loadState,Q as normalizeRepositoryUrl,v as omp,H as opencode,D as openhands,Z as parseBinaryTarget,it as parseChecksums,O as pi,et as planAgentUpdates,A as qoder,C as reasonix,ve as removeInstalledAgentState,Ie as resetCliContext,u as resolveAgent,p as resolveAgentInspection,ie as resolveAgentUpdateProvider,ze as resolveCliContext,Je as resolveCommand,$ as resolveReleaseChannel,Be as saveConfig,ye as saveState,Ye as schemaCommand,ke as setCliContext,xe as setInstalledAgentState,me as setSelfInstallSource,ge as setSelfUpdateNoticeState,c as uninstallAgent,g as updateAgent,ne as updateAgentsByType,Oe as upgradeSelf,ot as validateReleaseManifest,T as vibe,E as vtcode};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,v as t,y as n}from"./agents-
|
|
1
|
+
import{r as e,v as t,y as n}from"./agents-TeKrx6Oe.mjs";import{a as r,n as i,r as a,t as o}from"./color-C7AeBSMJ.mjs";async function s(o){let s=await e(o);if(!s)return r(i({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:o},message:`Unknown agent: ${o}`},target:{kind:`agent`,name:o}}),c);let{agent:l,inspection:u}=s,d=l.selfUpdate?[l.selfUpdate.command,...l.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return r(a({action:`info`,data:{agent:{aliases:l.lookupAliases??[],binaryName:l.binaryName,displayName:l.displayName,installMethods:u.methods.map(e=>({command:t(l,e),label:n(e),type:e.type})),name:l.name,packageName:l.packages?.npm,selfUpdateCommands:d},inspection:{binaryPath:u.binaryPath,installed:u.inPath,installedVersion:u.installedVersion,latestVersion:u.latestVersion,lifecycle:u.lifecycle,sourceLabel:u.inPath?u.sourceLabel:void 0}},target:{kind:`agent`,name:l.name}}),c)}function c(e){if(e.error){console.log(o.red(e.error.message));return}if(e.data){console.log(o.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),console.log(` Installed: ${e.data.inspection.installed?o.green(`Yes`):o.red(`No`)}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installed&&console.log(` Lifecycle: ${e.data.inspection.lifecycle}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(o.bold(`
|
|
2
2
|
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${o.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{s as infoCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./inspect-NfNRR5tA.mjs";export{e as inspectCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e,v as t,y as n}from"./agents-
|
|
1
|
+
import{r as e,v as t,y as n}from"./agents-TeKrx6Oe.mjs";import{a as r,n as i,r as a,t as o}from"./color-C7AeBSMJ.mjs";async function s(o){let s=await e(o);if(!s)return r(i({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:o},message:`Unknown agent: ${o}`},target:{kind:`agent`,name:o}}),c);let{agent:l,inspection:u}=s,d=l.selfUpdate?[l.selfUpdate.command,...l.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return r(a({action:`inspect`,data:{agent:{aliases:l.lookupAliases??[],binaryName:l.binaryName,displayName:l.displayName,installMethods:u.methods.map(e=>({command:t(l,e),label:n(e),type:e.type})),name:l.name,packageName:l.packages?.npm,selfUpdateCommands:d},capabilities:{canAutoInstall:u.methods.length>0,canAutoUninstall:u.inPath&&u.lifecycle===`managed`,canRun:u.inPath,canSelfUpdate:d.length>0},inspection:{binaryPath:u.binaryPath,installed:u.inPath,installedVersion:u.installedVersion,latestVersion:u.latestVersion,lifecycle:u.lifecycle,sourceLabel:u.inPath?u.sourceLabel:void 0,updateLabel:u.updateLabel}},target:{kind:`agent`,name:l.name}}),c)}function c(e){if(e.error){console.log(o.red(e.error.message));return}if(e.data){console.log(o.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Installed: ${e.data.inspection.installed?o.green(`Yes`):o.red(`No`)}`),console.log(` Update Mode: ${e.data.inspection.updateLabel}`),console.log(` Self Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(o.bold(`
|
|
2
2
|
Capabilities:`)),console.log(` auto-install: ${e.data.capabilities.canAutoInstall?`yes`:`no`}`),console.log(` self-update: ${e.data.capabilities.canSelfUpdate?`yes`:`no`}`),console.log(` auto-uninstall: ${e.data.capabilities.canAutoUninstall?`yes`:`no`}`),console.log(` runnable: ${e.data.capabilities.canRun?`yes`:`no`}`),console.log(o.bold(`
|
|
3
3
|
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${o.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as e,c as t,r as n,s as r}from"./agents-
|
|
1
|
+
import{b as e,c as t,r as n,s as r}from"./agents-TeKrx6Oe.mjs";import{J as i,a,i as o,n as s,r as c,t as l}from"./color-C7AeBSMJ.mjs";import{t as u}from"./lifecycle-errors-D7JpbOsK.mjs";import{a as d,i as f,n as p,r as m}from"./user-output-DJnMtfzB.mjs";async function h(e){let t=Array.isArray(e)?e:[e];if(t.length<=1)return a(await g(t[0],{emitStartedEvent:!0}),S);o({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let n=[];for(let e of t){let t=v(e,await g(e));n.push(t),o({action:`install`,data:t,target:{kind:`agent`,name:t.agent.name},type:`progress`})}let r={results:n,scope:`batch`,summary:b(n)};return a(n.some(e=>!e.ok)?s({action:`install`,data:r,error:x(n),target:{kind:`agent`}}):c({action:`install`,data:r,target:{kind:`agent`}}),C)}async function g(a,o={}){let l=await n(a);if(!l)return s({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}});let{agent:d,inspection:f}=l;if(f.inPath){if(f.installedState)return c({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!0},target:{kind:`agent`,name:d.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${d.displayName} is already installed.`}]});let n=e(f.methods,f.resolvedBinaryPath??f.binaryPath);if(n){if(p())return c({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!0},target:{kind:`agent`,name:d.name},warnings:[{code:`DRY_RUN`,message:`Dry run: would record the existing ${d.displayName} install in Quantex state.`}]});_(d,o.emitStartedEvent);try{let e=await t(d,n);return c({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!0,installState:{installType:e.installType,packageName:e.packageName},installed:!0},target:{kind:`agent`,name:d.name},warnings:[{code:`TRACKED_EXISTING_INSTALL`,message:`${d.displayName} is already installed. Quantex is now tracking the existing install.`}]})}catch(e){if(i(e))return s({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!0},...u(e,{kind:`agent`,name:d.name})});throw e}}return c({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!0},target:{kind:`agent`,name:d.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${d.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}if(p())return c({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!1},target:{kind:`agent`,name:d.name},warnings:[{code:`DRY_RUN`,message:`Dry run: would install ${d.displayName}.`}]});_(d,o.emitStartedEvent);let m;try{m=await r(d)}catch(e){if(i(e))return s({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!1},...u(e,{kind:`agent`,name:d.name})});throw e}return m.success?c({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!0,installState:m.installedState?{installType:m.installedState.installType,packageName:m.installedState.packageName}:void 0,installed:!0},target:{kind:`agent`,name:d.name}}):s({action:`install`,data:{agent:{displayName:d.displayName,name:d.name},changed:!1,installed:!1},error:{code:`INSTALL_FAILED`,message:`Failed to install ${d.displayName}.`},target:{kind:`agent`,name:d.name}})}function _(e,t=!1){t&&o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function v(e,t){let n=t.data,r=t.warnings.map(e=>({code:e.code,message:e.message}));return{agent:n?.agent??{displayName:e,name:t.target?.name??e},changed:n?.changed??!1,error:t.error?{code:t.error.code,message:t.error.message}:void 0,input:e,installState:n?.installState,installed:n?.installed??!1,ok:t.ok,status:y(t),warnings:r}}function y(e){return e.ok?e.warnings.some(e=>e.code===`TRACKED_EXISTING_INSTALL`)?`tracked-existing-install`:e.warnings.some(e=>e.code===`UNTRACKED_EXISTING_INSTALL`)?`untracked-existing-install`:e.warnings.some(e=>e.code===`ALREADY_INSTALLED`)?`already-installed`:e.warnings.some(e=>e.code===`DRY_RUN`)?`planned`:`installed`:e.error?.code===`RESOURCE_LOCKED`?`locked`:`failed`}function b(e){let t={alreadyInstalled:0,failed:0,installed:0,locked:0,planned:0,trackedExistingInstall:0,untrackedExistingInstall:0};for(let n of e)switch(n.status){case`already-installed`:t.alreadyInstalled+=1;break;case`failed`:t.failed+=1;break;case`installed`:t.installed+=1;break;case`locked`:t.locked+=1;break;case`planned`:t.planned+=1;break;case`tracked-existing-install`:t.trackedExistingInstall+=1;break;case`untracked-existing-install`:t.untrackedExistingInstall+=1;break}return t}function x(e){let t=e.filter(e=>!e.ok),n=new Set(t.map(e=>e.error?.code));return n.size===1&&n.has(`RESOURCE_LOCKED`)?{code:`RESOURCE_LOCKED`,details:{failedAgents:t.map(e=>e.input)},message:`One or more agents could not be installed because another Quantex process is already using the agent lifecycle lock.`}:{code:`INSTALL_FAILED`,details:{failedAgents:t.map(e=>e.input)},message:`One or more agents failed to install.`}}function S(e){if(e.error){m(l.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`){f(l.green(t.message));continue}if(t.code===`DRY_RUN`){d(l.cyan(t.message));continue}d(l.yellow(t.message))}return}f(l.cyan(`Installing ${e.data.agent.displayName}...`)),f(l.green(`${e.data.agent.displayName} installed successfully!`))}}function C(e){if(!e.data){e.error&&m(l.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:f(l.cyan(`Installing ${t.agent.displayName}...`)),f(l.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:f(l.green(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:d(l.yellow(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:d(l.cyan(w(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:d(l.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:m(l.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}T(e.data.summary)}function w(e,t){return e[0]?.message??t}function T(e){let t=[e.installed?`installed ${e.installed}`:void 0,e.alreadyInstalled?`already installed ${e.alreadyInstalled}`:void 0,e.trackedExistingInstall?`tracked existing ${e.trackedExistingInstall}`:void 0,e.untrackedExistingInstall?`untracked existing ${e.untrackedExistingInstall}`:void 0,e.failed?`failed ${e.failed}`:void 0,e.locked?`locked ${e.locked}`:void 0,e.planned?`planned ${e.planned}`:void 0].filter(Boolean);t.length>0&&f(l.bold(`Summary: ${t.join(`, `)}`))}export{h as installCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./agents-
|
|
1
|
+
import{t as e}from"./agents-TeKrx6Oe.mjs";import{a as t,r as n,t as r}from"./color-C7AeBSMJ.mjs";async function i(){return t(n({action:`list`,data:{agents:(await e()).map(e=>({binaryName:e.agent.binaryName,displayName:e.agent.displayName,installed:e.inPath,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,name:e.agent.name,sourceLabel:e.sourceLabel,updateLabel:e.updateLabel}))},target:{kind:`system`,name:`agents`}}),a)}function a(e){console.log(r.bold(`
|
|
2
2
|
AI Agents:
|
|
3
3
|
`));for(let t of e.data?.agents??[]){let e=t.displayName.padEnd(18),n=t.installed?r.green(`installed`):r.gray(`not installed`),i=t.installed?r.dim(t.installedVersion??`unknown version`):``,a=t.installed?r.cyan(t.updateLabel):``,o=t.installed?r.dim(t.sourceLabel):``;console.log(` ${e} ${n} ${i}${a?` ${a}`:``}${o?` ${o}`:``}`)}console.log()}export{i as listCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./resolve-DmMXWXNl.mjs";export{e as resolveCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,v as t,y as n}from"./agents-
|
|
1
|
+
import{r as e,v as t,y as n}from"./agents-TeKrx6Oe.mjs";import{a as r,n as i,r as a,t as o}from"./color-C7AeBSMJ.mjs";async function s(o){let s=await e(o);if(!s)return r(i({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:o},message:`Unknown agent: ${o}`},target:{kind:`agent`,name:o}}),c);let{agent:l,inspection:u}=s;if(!u.inPath||!u.binaryPath){let e=u.methods.map(e=>({command:t(l,e),label:n(e),type:e.type})).filter(e=>e.command);return r(i({action:`resolve`,data:{agent:{binaryName:l.binaryName,displayName:l.displayName,name:l.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:e,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${l.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:e,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${l.name}`},message:`${l.displayName} is not installed.`},target:{kind:`agent`,name:l.name}}),c)}return r(a({action:`resolve`,data:{agent:{binaryName:l.binaryName,displayName:l.displayName,name:l.name},resolution:{binaryPath:u.binaryPath,installed:!0,installSource:u.installedState?.installType??`detected-in-path`,installedVersion:u.installedVersion,lifecycle:u.lifecycle,sourceLabel:u.sourceLabel,suggestedLaunchCommand:[u.binaryPath]}},target:{kind:`agent`,name:l.name}}),c)}function c(e){if(e.error){console.log(o.red(e.error.message));let t=e.data?.resolution.installGuidance;if(t){console.log(o.dim(`Try: ${t.suggestedEnsureCommand}`));for(let e of t.installMethods)console.log(o.dim(`Install: [${e.label}] ${e.command}`))}return}e.data&&(console.log(o.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Path: ${e.data.resolution.binaryPath}`),console.log(` Source: ${e.data.resolution.sourceLabel}`),console.log(` Lifecycle: ${e.data.resolution.lifecycle}`),console.log(` Install Type: ${e.data.resolution.installSource}`),e.data.resolution.installedVersion&&console.log(` Version: ${e.data.resolution.installedVersion}`),console.log(` Launch: ${e.data.resolution.suggestedLaunchCommand.join(` `)}`),console.log())}export{s as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as e,n as t,r as n,t as r}from"./color-
|
|
1
|
+
import{a as e,n as t,r as n,t as r}from"./color-C7AeBSMJ.mjs";const i={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`},a={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`},o={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},s={brew:o,bun:o,cargo:o,deno:o,mise:o,npm:o,pip:o,uv:o,winget:o},c=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],l=[{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:s,required:c,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:i,name:`capabilities`,ndjsonEventSchema:a},{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:i,name:`commands`,ndjsonEventSchema:a},{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:c,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:i,name:`doctor`,ndjsonEventSchema:a},{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:i,name:`exec`,ndjsonEventSchema:a},{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:i,name:`install`,ndjsonEventSchema:a},{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:i,name:`ensure`,ndjsonEventSchema:a},{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:i,name:`inspect`,ndjsonEventSchema:a},{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:i,name:`resolve`,ndjsonEventSchema:a},{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:i,name:`schema`,ndjsonEventSchema:a}];async function u(r){let i=r?l.filter(e=>e.name===r):l;return r&&i.length===0?e(t({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:r},message:`Unknown schema target: ${r}`},target:{kind:`system`,name:`schema`}}),d):e(n({action:`schema`,data:{commands:i},target:{kind:`system`,name:`schema`}}),d)}function d(e){if(e.error){console.log(r.red(e.error.message));return}if(e.data){console.log(r.bold(`
|
|
2
2
|
Quantex Schemas
|
|
3
3
|
`));for(let t of e.data.commands)console.log(` ${r.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function f(){return l}export{u as n,f as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./schema-7XXRDi11.mjs";export{e as schemaCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e,n as t}from"./agents-
|
|
1
|
+
import{l as e,n as t}from"./agents-TeKrx6Oe.mjs";import{J as n,O as r,a as i,n as a,r as o,t as s}from"./color-C7AeBSMJ.mjs";import{t as c}from"./lifecycle-errors-D7JpbOsK.mjs";import{a as l,i as u,n as d,r as f}from"./user-output-DJnMtfzB.mjs";async function p(s){let l=t(s);if(!l)return i(a({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:s},message:`Unknown agent: ${s}`},target:{kind:`agent`,name:s}}),m);if(d())return await r(l.name)?i(o({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!1},target:{kind:`agent`,name:l.name},warnings:[{code:`DRY_RUN`,message:`Dry run: would uninstall ${l.displayName}.`}]}),m):i(a({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!1},error:{code:`UNINSTALL_FAILED`,message:`Failed to uninstall ${l.displayName}.`},target:{kind:`agent`,name:l.name}}),m);let u;try{u=await e(l)}catch(e){if(n(e))return i(a({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!1},...c(e,{kind:`agent`,name:l.name})}),m);throw e}return i(u?o({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!0},target:{kind:`agent`,name:l.name}}):a({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!1},error:{code:`UNINSTALL_FAILED`,message:`Failed to uninstall ${l.displayName}.`},target:{kind:`agent`,name:l.name}}),m)}function m(e){if(e.error){f(s.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)l(s.yellow(t.message));return}u(s.cyan(`Uninstalling ${e.data.agent.displayName}...`)),u(s.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{p as uninstallCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,g as t,i as n,t as r,x as i}from"./agents-
|
|
1
|
+
import{_ as e,g as t,i as n,t as r,x as i}from"./agents-TeKrx6Oe.mjs";function a(e,n={}){let r={bun:[],npm:[],brew:[],cargo:[],deno:[],mise:[],pip:[],uv:[],winget:[]},i=[],a=[],c=[],l=[];for(let u of e){if(!u.inPath)continue;if(n.skipUntrackedInPath&&!u.installedState){c.push(u);continue}if(s(u)){a.push(u);continue}if(!o(u)){l.push(u);continue}let e=t({agent:u.agent,installedState:u.installedState,methods:u.methods}),d=e.strategy===`managed`?e.getManagedInstallerType?.({agent:u.agent,installedState:u.installedState,methods:u.methods}):void 0;if(d){let e={inspection:u,installerType:d,strategy:`grouped`};r[d].push(e);continue}i.push({inspection:u,strategy:e.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...r.bun,...r.npm,...r.brew,...r.cargo,...r.deno,...r.mise,...r.pip,...r.uv,...r.winget,...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:c,upToDate:l}}function o(e){return e.installedVersion&&e.latestVersion?e.installedVersion!==e.latestVersion:!0}function s(t){return!t.latestVersion&&!e(t.agent,t.installedState)}const c=[`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`];async function l(e){let t=await n(e);return{agent:e,inspection:t,updateAvailable:o(t)}}async function u(){return f(await r(),{skipUntrackedInPath:!0})}async function d(e){let t=await n(e);return{inspection:t,plan:f([t])}}function f(e,t={}){let n=a(e,t),r=[],i=c.map(e=>p(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>h(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>h(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function p(e,t,n){if(t.length===0)return;let r=t.map(e=>h(e.inspection)),i=r.filter(m);if(n.push(...r.filter(e=>!m(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function m(e){return!!e.package?.packageName}function h(e){let n=t({agent:e.agent,installedState:e.installedState,methods:e.methods}),r=n.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:r,package:r?g(e.agent,e.installedState,e.methods,r):void 0,state:e.installedState,strategy:n.strategy}}function g(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let a=n.find(e=>e.type===r);if(!a)return;let o=i(e,a);if(o)return{packageName:o,binaryName:a.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:a.packageInstallArgs,packageTargetKind:a.packageTargetKind}}export{o as a,a as i,u as n,d as r,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{_ as r,d as i,h as a,n as o,u as s}from"./agents-
|
|
1
|
+
import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{_ as r,d as i,h as a,n as o,u as s}from"./agents-TeKrx6Oe.mjs";import{J as c,a as l,i as u,n as d,r as f,t as p,z as m}from"./color-C7AeBSMJ.mjs";import{a as h,i as g,n as _,r as v}from"./user-output-DJnMtfzB.mjs";import{n as y,r as b}from"./update-D8AckgdR.mjs";async function x(e,t){if(t)return S();if(!e)return l(d({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),k);let n=o(e);return n?C(n):l(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),k)}async function S(){u({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let e=await w(await y());return e.hasFailures?l(d({action:`update`,data:{results:e.results,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`}}),k):l(f({action:`update`,data:{results:e.results,scope:`all`},target:{kind:`agent`}}),k)}async function C(e){u({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let{inspection:t,plan:n}=await b(e);if(!t.inPath)return l(d({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name}}),k);let r=await w(n),i=O(r.results);return i?l(d({action:`update`,data:{results:r.results,scope:`single`},error:{code:`RESOURCE_LOCKED`,details:i.resource?{resource:i.resource}:void 0,message:i.message??`Another quantex process is already updating ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),k):r.hasFailures?l(d({action:`update`,data:{results:r.results,scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),k):l(f({action:`update`,data:{results:r.results,scope:`single`},target:{kind:`agent`,name:e.name}}),k)}async function w(n){let r=[];for(let e of n.upToDate)T(r,{displayName:e.agent.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,name:e.agent.name,status:`up-to-date`});for(let t of n.skippedManualCheck)T(r,{displayName:t.agent.displayName,message:e(t.agent),name:t.agent.name,status:`manual-required`});for(let e of n.untrackedInPath)T(r,{displayName:e.agent.displayName,message:t(e.agent),name:e.agent.name,status:`manual-required`});for(let e of n.grouped){let t=await E(e.type,e.packages,e.updates);for(let e of t)T(r,e)}for(let e of n.manual)T(r,await D(e.agent,e.state,e.inspection.methods,e.inspection));return{hasFailures:r.some(e=>e.status===`failed`||e.status===`locked`),results:r}}function T(e,t){e.push(t),u({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}async function E(e,t,n){if(n.length===0)return[];if(_())return n.map(({agent:t,inspection:n,strategy:r})=>({displayName:t.displayName,installedVersion:n.installedVersion,latestVersion:n.latestVersion,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:r===`managed`?`managed/${e}`:r}));try{if(await i(e,t))return n.map(({agent:t,inspection:n,strategy:r})=>({displayName:t.displayName,installedVersion:n.installedVersion,latestVersion:n.latestVersion,name:t.name,status:`updated`,strategy:r===`managed`?`managed/${e}`:r}));let r=[];for(let{agent:e,inspection:t,state:i}of n)r.push(await D(e,i,t.methods,t));return r}catch(t){if(!c(t))throw t;return n.map(({agent:n,inspection:r,strategy:i})=>({displayName:n.displayName,installedVersion:r.installedVersion,latestVersion:r.latestVersion,message:t.message,name:n.name,resource:t.resource,status:`locked`,strategy:i===`managed`?`managed/${e}`:i}))}}async function D(t,i,o,l){let u=a({agent:t,installedState:i,methods:o??l?.methods??[]}),d=l?.installedVersion,f=l?.latestVersion;if(u===`manual-hint`&&!r(t,i))return{displayName:t.displayName,installedVersion:d,latestVersion:f,message:e(t),name:t.name,status:`manual-required`,strategy:u};if(_())return{displayName:t.displayName,installedVersion:d,latestVersion:f,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:u};let p;try{p=await s(t,i)}catch(e){if(c(e))return{displayName:t.displayName,installedVersion:d,latestVersion:f,message:e.message,name:t.name,resource:e.resource,status:`locked`,strategy:u};throw e}if(p.success){if(u===`self-update`){let e=await m(t.binaryName,t.versionProbe);if(d&&e)return e===d?{displayName:t.displayName,installedVersion:e,latestVersion:e,name:t.name,status:`up-to-date`,strategy:u}:{displayName:t.displayName,installedVersion:d,latestVersion:e,name:t.name,status:`updated`,strategy:u}}return{displayName:t.displayName,installedVersion:d,latestVersion:f,name:t.name,status:`updated`,strategy:u}}return{displayName:t.displayName,hint:n(t,u),installedVersion:d,latestVersion:f,name:t.name,status:`failed`,strategy:u}}function O(e){if(e.length===1)return e[0]?.status===`locked`?e[0]:void 0}function k(e){if(!e.data){e.error&&v(p.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`up-to-date`:g(p.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:h(p.yellow(`${t.displayName}: manual action required.`)),t.message&&h(p.cyan(`Next step: ${t.message}`));break;case`planned`:h(p.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${A(t.installedVersion,t.latestVersion)}`));break;case`updated`:g(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${A(t.installedVersion,t.latestVersion)}`)),g(p.green(`${t.displayName} updated successfully!`));break;case`failed`:g(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${A(t.installedVersion,t.latestVersion)}`)),v(p.red(`Failed to update ${t.displayName}.`)),t.hint&&h(p.cyan(`Next step: ${t.hint}`));break;case`locked`:h(p.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&j(e.data.results),!e.data.results.length&&e.error&&v(p.red(e.error.message))}function A(e,t){return e?` (${e} -> ${t??`latest`})`:``}function j(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&g(p.bold(`Summary: ${n.join(`, `)}`))}export{x as updateCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as e,S as t,a as n,c as r,n as i,r as a,t as o,u as s,x as c}from"./color-
|
|
1
|
+
import{L as e,S as t,a as n,c as r,n as i,r as a,t as o,u as s,x as c}from"./color-C7AeBSMJ.mjs";import{a as l,i as u,n as d,r as f}from"./user-output-DJnMtfzB.mjs";async function p(e={}){let o=await t({updateChannel:e.channel}),l=c(o),u=d(),f=h(l),p=_(l);if(o.status===`up-to-date`)return n(a({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...f,...p?[p]:[]]}),m);if(e.check||u)return o.status===`update-available`?n(a({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`update-available`},exitCode:e.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...f,...p?[p]:[],...u?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),m):n(i({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,status:`check-unavailable`},error:{code:`NETWORK_ERROR`,message:`Unable to determine the latest Quantex CLI version.`},target:{kind:`self`,name:`quantex`},warnings:[...f,...p?[p]:[]]}),m);if(o.status===`manual-required`){let e=s(l);return n(i({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:e,status:`manual-required`},error:{code:`MANUAL_ACTION_REQUIRED`,message:`Quantex CLI cannot auto-update from the current install source: ${l.installSource}.`},target:{kind:`self`,name:`quantex`},warnings:[...f,...p?[p]:[]]}),m)}let g=await r(o);if(g.success)return n(a({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`updated`},target:{kind:`self`,name:`quantex`},warnings:[...f,...p?[p]:[]]}),m);let v=s(l,g);return n(i({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:v,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:g.error?.kind?{kind:g.error.kind}:void 0,message:g.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...f,...v?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${v}`}]:[]]}),m)}function m(e){if(!e.data){e.error&&f(o.red(e.error.message));return}if(e.data.status===`up-to-date`){u(o.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),g(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;l(o.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),g(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&l(o.yellow(e.error.message)),g(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){l(o.yellow(e.error.message)),e.data.recoveryHint&&l(o.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(u(o.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){u(o.green(`Quantex CLI upgraded successfully.`)),g(e.warnings);return}f(o.red(`Failed to upgrade Quantex CLI.`)),l(o.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)l(o.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function h(e){return!e.latestVersion||!e.upstreamLatestVersion||e.latestVersion===e.upstreamLatestVersion||e.installSource!==`bun`&&e.installSource!==`npm`?[]:[{code:`MIRROR_LAG`,details:{installableLatestVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion},message:`The selected registry currently installs ${e.latestVersion}, while upstream npm has ${e.upstreamLatestVersion}. Retry later or set selfUpdateRegistry / QTX_SELF_UPDATE_REGISTRY to another registry if you need the upstream release now.`}]}function g(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||l(o.yellow(t.message))}function _(t){if(!t.latestVersion)return;let n=e(t.latestVersion,t.currentVersion);if(!(n===void 0||n>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:t.currentVersion,latestVersion:t.latestVersion},message:`The resolved latest version ${t.latestVersion} is older than the installed Quantex CLI ${t.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{p as upgradeCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{at as e}from"./color-
|
|
1
|
+
import{at as e}from"./color-C7AeBSMJ.mjs";import t from"node:process";const n={debug:4,error:1,info:3,silent:0,warn:2};function r(e){o(`info`)&&t.stdout.write(`${e}\n`)}function i(e){o(`warn`)&&t.stdout.write(`${e}\n`)}function a(e){o(`error`)&&t.stdout.write(`${e}\n`)}function o(t){let r=e();return r.outputMode===`human`?r.quiet&&t===`info`?!1:n[r.logLevel??`info`]>=n[t]:!0}function s(){return!!e().assumeYes}function c(){return!!e().dryRun}function l(e){t.stdout.write(`${e}\n`)}export{i as a,r as i,c as n,l as o,a as r,s as t};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quantex-cli",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.2",
|
|
4
4
|
"description": "Agent-friendly lifecycle CLI for AI coding assistant CLIs: install, inspect, update, uninstall, run, and automate Codex, Claude Code, Gemini, Cursor, OpenCode, and more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-cli",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capabilities-Ca4AW4j2.mjs";export{e as capabilitiesCommand};
|
package/dist/color-DxHedKnS.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import{existsSync as r,mkdirSync as i,writeFileSync as a}from"node:fs";import{chmod as o,mkdir as s,mkdtemp as c,readFile as l,realpath as u,rename as d,rm as f,stat as p,writeFile as m}from"node:fs/promises";import{basename as h,dirname as g,join as _,win32 as v}from"node:path";import{homedir as ee}from"node:os";import{spawn as y}from"node:child_process";import{text as te}from"node:stream/consumers";import{fileURLToPath as ne}from"node:url";import{Buffer as re}from"node:buffer";import ie from"picocolors";function ae(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 b,x=new Set;function S(){return b??=pe(),b}function oe(e){x=new Set,b={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function se(){b=void 0,x=new Set}function ce(e={}){let r=n.stdin.isTTY!==!1,i=n.stdout.isTTY!==!1,a=!r||!i,o=e.json||e.output===`json`?`json`:e.output===`ndjson`?`ndjson`:e.output===`human`?`human`:a?`json`:`human`,s=e.timeout===void 0?void 0:ae(e.timeout),c=me(e.color),l=he(e.logLevel);if(e.timeout!==void 0&&s===void 0)throw Error(`Invalid timeout value: ${e.timeout}`);if(e.refresh&&e.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:e.yes,cacheMode:e.noCache?`no-cache`:e.refresh?`refresh`:`default`,cancelled:!1,colorMode:c,dryRun:e.dryRun,idempotencyKey:e.idempotencyKey,interactive:!e.nonInteractive&&!a&&r&&i,logLevel:l,outputMode:o,quiet:e.quiet,runId:e.runId??n.env.QUANTEX_RUN_ID??t(),timeoutMs:s}}function le(){b&&(b.cancelled=!0)}async function ue(){le();let e=[...x];x.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function de(e){return x.add(e),()=>{x.delete(e)}}function fe(e){let t=S();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 pe(){return ce()}function me(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 he(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}`)}const ge=`https://registry.npmjs.org`;function C(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function _e(e,t,n){return`${C(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const ve={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function w(){return _(n.env.HOME||n.env.USERPROFILE||ee(),`.quantex`)}function T(){return _(w(),`config.json`)}async function E(){let e={...ve,...await Se()};return{...e,defaultPackageManager:ye(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:D(e.networkRetries,2),networkTimeoutMs:D(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?C(e.selfUpdateRegistry):void 0,versionCacheTtlHours:D(e.versionCacheTtlHours,6)}}function ye(e){return e===`bun`||e===`mise`||e===`npm`}function be(e){return e===`latest-major`||e===`respect-semver`}async function xe(e){await s(w(),{recursive:!0}),await m(T(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Se(){try{let e=await l(T(),`utf8`),t=JSON.parse(e);return Ce(t)?t:{}}catch{return{}}}function D(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 Ce(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var O=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 we(e){return e instanceof O}function Te(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 _(w(),`locks`,...r,i)}async function k(e){let t=Te(e.scope);return await s(g(t),{recursive:!0}),await Ee(e.resource,t),async()=>{await f(t,{force:!0,recursive:!0})}}async function Ee(e,t){try{i(t,{recursive:!1}),De(t);return}catch(e){if(!Me(e))throw e}if(!await Oe(t))throw new O(e,t);try{i(t,{recursive:!1}),De(t)}catch(n){throw Me(n)?new O(e,t):n}}function De(e){a(_(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function Oe(e){let t;try{t=await ke(e)}catch{return!1}return t&&je(t.pid)?!1:(await f(e,{force:!0,recursive:!0}),!0)}async function ke(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await Ae(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await Ae(e)}async function Ae(e){try{let t=await l(_(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(Ne(e))return;throw e}}function je(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Me(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Ne(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Pe(e,t){let n=await k(e);try{return await t()}finally{await n()}}async function Fe(){try{return await k({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(we(e))return;throw e}}const A=`quantex-cli`,j=`https://github.com/Drswith/quantex-cli`,Ie=`0.22.1`;function M(e,t={}){if(S().outputMode===`human`){let n=P(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:de(()=>He(n)),outputDrained:Promise.resolve(),proc:n}}let n=P(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:de(()=>He(n)),outputDrained:Promise.all([Le(n.stdout),Le(n.stderr)]).then(()=>void 0),proc:n}}async function N(e){let t=S();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}function P(e,t={}){let n=Be();if(n)return Ve(e,t,n);let[r,...i]=e;if(!r)throw Error(`spawnCommand requires a non-empty command array.`);let a=y(r,i,{...t,shell:t.shell??ze(r)});return{get exitCode(){return a.exitCode},pid:a.pid,stderr:a.stderr,stdout:a.stdout,exited:Re(a),kill:a.kill.bind(a),unref:()=>a.unref()}}async function F(e){let[t,n,r]=await Promise.all([I(e.stdout),I(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function Le(e){if(!e)return;let t=await I(e);t&&n.stderr.write(t)}async function Re(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function I(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():te(e):``}function ze(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function Be(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Ve(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 He(e){n.platform===`win32`&&e.pid!==void 0&&await We(Ue(e.pid),2e3);try{e.kill?.(`SIGTERM`)}catch{}await We(e.exited.then(()=>void 0).catch(()=>void 0),2e3)}async function Ue(e){await new Promise(t=>{let n=y(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});n.once(`error`,()=>t()),n.once(`close`,()=>t())})}async function We(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}async function L(e,t){let n=await Ge(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function Ge(e,t,n=`text`){let r=await E(),i=r.versionCacheTtlHours*60*60*1e3,a=S().cacheMode,o=a===`no-cache`?{entries:{}}:await qe(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return R(s,i),s.body;let l=await Ke(e,{headers:a!==`no-cache`&&s?.etag?{"If-None-Match":s.etag}:void 0,retries:r.networkRetries,timeoutMs:r.networkTimeoutMs});if(!l)return s&&R(s,i),s?.body;if(l.status===304&&s)return o.entries[t]={...s,expiresAt:c+i,fetchedAt:c},a!==`no-cache`&&await Je(o),Xe(c,c+i),s.body;if(!l.ok)return s&&R(s,i),s?.body;let u=await l.text();if(n===`json`)try{JSON.parse(u)}catch{return s&&R(s,i),s?.body}let d={body:u,etag:l.headers.get(`etag`)??void 0,expiresAt:c+i,fetchedAt:c};return a!==`no-cache`&&(o.entries[t]=d,await Je(o)),Xe(c,c+i),u}async function Ke(e,t){for(let n=0;n<=t.retries;n++){let r=new AbortController,i=setTimeout(()=>r.abort(),t.timeoutMs);try{return await fetch(e,{headers:t.headers,signal:r.signal})}catch{if(n===t.retries)return}finally{clearTimeout(i)}}}async function qe(){try{return JSON.parse(await l(Ye(),`utf8`))}catch{return{entries:{}}}}async function Je(e){await s(_(w(),`cache`),{recursive:!0}),await m(Ye(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Ye(){return _(w(),`cache`,`versions.json`)}function R(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);fe({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Xe(e,t){fe({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Ze=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Qe(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
2
|
-
`)[0],r=n.match(Ze);return r?r[1]:n||void 0}function $e(e,t){let n=nt(e),r=nt(t);if(!(!n||!r)){for(let e=0;e<3;e+=1){let t=n.core[e]-r.core[e];if(t!==0)return t>0?1:-1}return rt(n.prerelease,r.prerelease)}}function z(e,t){return $e(e,t)===1}async function B(e,t){let n=t?.command??[e,`--version`];try{let{exitCode:e,stdout:r}=await F(P(n));return e===0?Qe(r,t?.parser):void 0}catch{return}}async function V(e,t=`latest`,n={}){try{let r=C(n.registry)??`https://registry.npmjs.org`;return(await L(_e(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function et(e){try{let{exitCode:t,stdout:r}=await F(P([n.platform===`win32`?`where`:`which`,e]));return t===0?r.trim().split(`
|
|
3
|
-
`)[0]:void 0}catch{return}}async function tt(e){if(e)try{return await u(e)}catch{return e}}function nt(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/i);if(t)return{core:[Number(t[1]),Number(t[2]),Number(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function rt(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);return a&&o?Number(n)>Number(i)?1:-1:a?-1:o||n>i?1:-1}return 0}var it=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const at={installedAgents:{},self:{}};function H(){return _(w(),`state.json`)}async function U(){return pt()}async function ot(e){let t=await k({resource:`state`,scope:[`state`]});try{await _t(e)}finally{await t()}}async function st(e){return(await U()).installedAgents[e]}async function ct(e){await W(t=>{t.installedAgents[e.agentName]=e})}async function lt(e){await W(t=>{delete t.installedAgents[e]})}async function ut(){return(await U()).self}async function dt(e){await W(t=>{t.self.installSource=e})}async function ft(e,t){await W(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function pt(){try{let e=JSON.parse(await l(H(),`utf8`)),t=mt(e.self);return{installedAgents:e.installedAgents??{},self:t}}catch(e){if(vt(e))return{...at};throw new it(`Failed to read Quantex state file.`,{cause:e})}}function mt(e){if(!gt(e))return{};let t={...e};return ht(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 ht(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function gt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function _t(e){await s(w(),{recursive:!0});let t=H(),r=`${t}.tmp-${n.pid}`,i=`${JSON.stringify(e,null,2)}\n`;try{await m(r,i,`utf8`),await d(r,t)}catch(e){throw await f(r,{force:!0}),e}}function vt(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function W(e){let t=await k({resource:`state`,scope:[`state`]});try{let t=await pt();await e(t),await _t(t)}finally{await t()}}function yt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function G(e=n.execPath){if(h(yt(e)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(n.platform===`darwin`)return n.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(n.platform===`linux`)return n.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function bt(e=n.execPath){let t=G(e);if(t)return`${j}/releases/latest/download/${t}`}function xt(e,t,r=n.env){return e||(r.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:r.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:t===`beta`?`beta`:`stable`)}async function St(e){let t=await L(await Ct(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function Ct(e){if(e===`stable`)return`${j}/releases/latest/download/manifest.json`;let t=(await wt(e)).assets.find(e=>e.name===`manifest.json`);if(!t?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return t.browser_download_url}async function wt(e){let t=Et();if(!t)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let n=await L(`https://api.github.com/repos/${t}/releases?per_page=20`,`self:github-releases`);if(!n)throw Error(`Failed to query GitHub releases.`);let r=n.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!r)throw Error(`No GitHub release was found for the ${e} channel.`);return r}function Tt(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=G(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function Et(){return j.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const Dt=A,Ot=`/node_modules/${Dt}`;async function kt(e){let t=await Mt(),r=n.execPath,i=t.foundPackageJson?K(t.packageRoot):K(``,r),a=await jt((await ut()).installSource,i),o=await E(),s=xt(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:At(a),currentVersion:t.version||`0.22.1`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function At(e){return e===`binary`||e===`bun`||e===`npm`}async function jt(e,t){return t!==`unknown`&&e!==t?(await dt(t),t):e??t}function K(e,t=n.execPath){let r=Pt(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Ot)?`npm`:r?`source`:Ft(t)?`binary`:`unknown`}async function Mt(e=import.meta.url){let t=It(e),n=g(t);for(;;){let e=_(n,`package.json`),t=await Nt(e);if(t?.name===Dt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.22.1`};let r=g(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:_(g(t),`package.json`),packageRoot:g(t),version:Ie}}function q(){return Ie}async function Nt(e){try{return JSON.parse(await l(e,`utf8`))}catch{return}}function Pt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Ft(e){let t=h(Pt(e));return t!==`bun`&&t!==`bun.exe`}function It(e){try{return ne(e)}catch{return n.execPath}}async function Lt(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=C(r.QTX_SELF_UPDATE_REGISTRY);return a?{isOverride:!0,registry:a,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await Rt(e,r,i)||{isOverride:!1,registry:ge,source:`fallback`}}async function Rt(e,t,n){if(e===`bun`){let e=zt(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Bt(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=zt(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Ht(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function zt(e,t){for(let n of t){let t=C(e[n]);if(t)return t}}async function Bt(e,t){let n=Gt(t),i=t.XDG_CONFIG_HOME,a=Wt(e,`bunfig.toml`),o=[_(n,`.bunfig.toml`),i?_(i,`.bunfig.toml`):void 0];if(a){let e=await Vt(a);if(e)return e}for(let e of o){if(!e||!r(e))continue;let t=await Vt(e);if(t)return t}}async function Vt(e){try{return Kt(await l(e,`utf8`))}catch{return}}async function Ht(e,t){let n=Gt(t),i=Wt(e,`.npmrc`),a=_(n,`.npmrc`);if(i){let e=await Ut(i);if(e)return e}if(r(a))return Ut(a)}async function Ut(e){try{let t=(await l(e,`utf8`)).split(`
|
|
4
|
-
`).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=C(r[1]);if(i)return i}}catch{}}function Wt(e,t){let n=e;for(;;){let e=_(n,t);if(r(e))return e;let i=g(n);if(i===n)return;n=i}}function Gt(e){return e.HOME||e.USERPROFILE||ee()}function Kt(e){let t=qt(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 C(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return C(qt(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function qt(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function Jt(e){let t=await E();if(e.installSource===`binary`)try{let t=await St(e.updateChannel),n=Tt(t,e.executablePath);return n?{binaryAsset:n,targetVersion:t.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch{return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let n=e.updateChannel===`beta`?`beta`:`latest`,r=await V(A,n,{registry:ge});if(e.installSource===`bun`||e.installSource===`npm`){let i=await Lt(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await V(A,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:en(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function J(e){let t=e?.facts??await kt({updateChannel:e?.updateChannel}),n=e?.target??await Jt(t),r=n.targetVersion?z(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Qt(t,n,r),target:n,updateAvailable:r}}function Yt(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 Xt(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await $t(e);if(!n)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 r=t.newVersion??e.target.targetVersion;return r&&n!==r?{error:{detail:{expectedVersion:r,observedVersion:n},kind:`verify`,message:`Managed self-upgrade installed version ${n}, but expected ${r}.`},installSource:e.facts.installSource,success:!1}:!r&&n===e.facts.currentVersion&&e.target.targetVersion!==void 0?{error:{detail:{observedVersion:n},kind:`verify`,message:`Managed self-upgrade completed without changing the installed Quantex version.`},installSource:e.facts.installSource,success:!1}:{...t,newVersion:n}}function Zt(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:en(e.packageRoot)},r=e.latestVersion?z(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Qt(t,n,r),target:n,updateAvailable:r}}function Qt(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function $t(e){if(e.target.verificationCommand){let t=await B(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return B(e.facts.executablePath)}function en(e){if(e)return[n.execPath,_(e,`dist`,`cli.mjs`),`--version`]}async function tn(e,t,r,i,a=nn(t)){let s;try{s=await fetch(e)}catch(t){return X(`network`,`Failed to download ${e}.`,t)}if(!s.ok)return X(`network`,`Failed to download ${e}: HTTP ${s.status}.`);let l=await c(_(g(t),`.quantex-upgrade-`)),u=_(l,h(t)),p=`${t}.bak`,v=!1;try{let c=re.from(await s.arrayBuffer()),h=await rn(t),g=ln(c);if(g!==un(r))return X(`checksum`,`Checksum mismatch for ${e}. Expected ${un(r)}, got ${g}.`);if(await m(u,c),n.platform===`win32`)return an(u,t,p,l,i,a);await o(u,h),await f(p,{force:!0}),await d(t,p),v=!0,await d(u,t);let _=await cn(t,i);return _.success?(v=!1,await f(p,{force:!0}),{success:!0}):(await Z(p,t),v=!1,_)}catch(e){if(v){try{await Z(p,t)}catch{}v=!1}return X(sn(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await f(l,{recursive:!0,force:!0})}}function nn(e){if(n.platform!==`win32`)return;let t=v.basename(e).toLowerCase();if(t===`qtx.exe`)return v.join(v.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return v.join(v.dirname(e),`qtx.exe`)}async function rn(e){try{return(await p(e)).mode&511}catch{return 493}}function an(e,t,r,i,a,o){try{return P([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,on(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return X(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function on(e,t,n,r,i,a,o){let s=Y(e),c=Y(t),l=Y(n),u=Y(r),d=Y(a??``),f=Y(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 }`,`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`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`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 Y(e){return e.replaceAll(`'`,`''`)}function X(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function sn(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 Z(e,t){await f(t,{force:!0}),await d(e,t)}async function cn(e,t){if(!t)return{success:!0};try{let{exitCode:n,stdout:r}=await F(P([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return n===0?r.includes(t)?{success:!0}:X(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):X(`verify`,`The upgraded Quantex binary exited with code ${n} during verification.`)}catch(e){return X(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function ln(t){return e(`sha256`).update(t).digest(`hex`)}function un(e){return e.trim().toLowerCase()}const dn={source:`binary`,canHandle:e=>fn(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):bt(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){let t=e.target.binaryAsset;if(!t)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 n=await tn(t.downloadUrl,e.facts.executablePath,t.checksum,e.target.targetVersion??`latest`,nn(e.facts.executablePath));return{...!n.success&&n.error?{...n,error:{...n.error,detail:{...typeof n.error.detail==`object`&&n.error.detail?n.error.detail:{},downloadUrl:t.downloadUrl}}}:n,installSource:e.facts.installSource,newVersion:n.success?e.target.targetVersion:void 0}}};function fn(e){return`facts`in e?e.facts.installSource:e.installSource}async function pn(e,t,n){try{let r=t?`${e}@${t}`:e,i=C(n);return await Q([`bun`,`add`,`-g`,...i?[`--registry`,i]:[],r],[e])}catch{return!1}}async function mn(e,t=`latest-major`,n=`latest`,r){try{let i=n===`latest`?e:`${e}@${n}`,a=C(r);return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...a?[`--registry`,a]:[],i],[e])}catch{return!1}}async function hn(e,t=`latest-major`){if(e.length===0)return!0;try{return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e)}catch{return!1}}async function gn(e){try{return await N(M([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function _n(e){try{let{exitCode:t,stdout:n}=await F(P([`bun`,`pm`,`-g`,`ls`],{stdio:Sn()}));return t===0?vn(n,e):void 0}catch{return}}function vn(e,t){let n=`${t}@`;for(let t of e.split(`
|
|
5
|
-
`)){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 Q(e,t){return await N(M(e))===0?yn(t):!1}async function yn(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await bn();if(!n)return!0;let r=xn(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await N(M([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function bn(){try{let{exitCode:e,stdout:t}=await F(P([`bun`,`pm`,`-g`,`untrusted`],{stdio:Sn()}));return e===0?t:void 0}catch{return}}function xn(e){let t=new Set;for(let n of e.split(`
|
|
6
|
-
`)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function Sn(){return[`ignore`,`pipe`,`ignore`]}const Cn={source:`bun`,canHandle:e=>wn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${A}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await pn(A,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${A} through Bun.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function wn(e){return`facts`in e?e.facts.installSource:e.installSource}async function Tn(e,t,n){try{let r=t?`${e}@${t}`:e,i=C(n);return await N(M([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function En(e,t=`latest-major`,n=`latest`,r){try{let i=C(r);return await N(M(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...i?[`--registry`,i]:[]]:[`npm`,`update`,`-g`,e,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function Dn(e,t=`latest-major`){if(e.length===0)return!0;try{return await N(M(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e]))===0}catch{return!1}}async function On(e){try{return await N(M([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function kn(e){try{let{exitCode:t,stdout:n}=await F(P([`npm`,`list`,`-g`,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?An(n,e):void 0}catch{return}}function An(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const jn={source:`npm`,canHandle:e=>Mn(e)===`npm`,getRecoveryHint:e=>`npm install -g ${A}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await Tn(A,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${A} through npm.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function Mn(e){return`facts`in e?e.facts.installSource:e.installSource}const Nn={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}}},Pn=[Cn,jn,dn,Nn];function $(e){return Pn.find(t=>t.canHandle(e))??Nn}function Fn(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function In(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Fn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Ln(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:$(e).getRecoveryHint(e,t)}async function Rn(e){return Yt(await J({updateChannel:e?.updateChannel}))}async function zn(e){let t=await Vn(e),n=await Fe();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return Xt(t,await $(t).upgrade(t))}finally{await n()}}function Bn(e,t=n.execPath){return In(e,t)}async function Vn(e){return e?`facts`in e?e:e.installSource===`binary`?J({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Zt(e):J()}function Hn(e){return Kn({...e,error:null,ok:!0})}function Un(e){return Kn({...e,ok:!1})}function Wn(e,t,n={}){let r=S();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?Jn({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Gn(e,t={}){let n=S();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return Jn(e)}function Kn(e){let t=S();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:q()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function qn(e){let t=S();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:q()},target:e.target,type:e.type}}function Jn(e){let t=qn(e);return console.log(JSON.stringify(t)),t}const{createColors:Yn,isColorSupported:Xn}=ie;function Zn(){let e=S().colorMode??`auto`;return Yn(e===`always`?!0:e===`never`?!1:Xn)}const Qn=new Proxy({},{get(e,t){let n=Zn(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{be as $,H as A,V as B,At as C,bt as D,G as E,dt as F,M as G,z as H,ft as I,we as J,N as K,$e as L,lt as M,ot as N,st as O,ct as P,ye as Q,et as R,J as S,q as T,F as U,tt as V,P as W,w as X,Pe as Y,T as Z,pn as _,Wn as a,S as at,hn as b,zn as c,oe as ct,kn as d,E as et,Tn as f,_n as g,Dn as h,Gn as i,ue as it,U as j,ut as k,In as l,En as m,Un as n,ve as nt,Bn as o,se as ot,On as p,A as q,Hn as r,C as rt,Rn as s,ce as st,Qn as t,xe as tt,Ln as u,gn as v,K as w,Yt as x,mn as y,B as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-CGrftlaW.mjs";export{e as commandsCommand};
|
package/dist/ensure-BaglVUzo.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./ensure-B6085E6m.mjs";export{e as ensureCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./inspect-Z4NpHi7m.mjs";export{e as inspectCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./resolve-CEz05GWa.mjs";export{e as resolveCommand};
|
package/dist/schema-BfnadmgP.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./schema-qEjrDZ4V.mjs";export{e as schemaCommand};
|