quantex-cli 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/agents-Egq0RCta.mjs +1 -0
- package/dist/capabilities-DVYVq0Kb.mjs +1 -0
- package/dist/capabilities-LjMH_zbA.mjs +5 -0
- package/dist/cli.mjs +1 -1
- package/dist/color-DEbCq7kh.mjs +6 -0
- package/dist/{commands-TfkZ40FQ.mjs → commands-B_Hju0lq.mjs} +1 -1
- package/dist/commands-CBYZqBF0.mjs +1 -0
- package/dist/config-CFYt99os.mjs +3 -0
- package/dist/detect-DWabXMgY.mjs +1 -0
- package/dist/doctor-Dp9VEmRS.mjs +3 -0
- package/dist/ensure-B-zpnaT-.mjs +1 -0
- package/dist/{ensure-Bsodatwu.mjs → ensure-DpX11qbo.mjs} +1 -1
- package/dist/index.d.mts +21 -41
- package/dist/index.mjs +2 -2
- package/dist/{info-L1EKkDNs.mjs → info-BUsquCrf.mjs} +1 -1
- package/dist/{inspect-DOELzVla.mjs → inspect-CihiIfvE.mjs} +1 -1
- package/dist/inspect-DO3c51A6.mjs +1 -0
- package/dist/{install-BA0iWXm3.mjs → install-YLaojYug.mjs} +1 -1
- package/dist/{list-BzfNq_Hq.mjs → list-D79BiyLS.mjs} +1 -1
- package/dist/{resolve-DD2lh-Rl.mjs → resolve-BhJphfVN.mjs} +1 -1
- package/dist/resolve-D3cko00u.mjs +1 -0
- package/dist/schema-1VaAQRYe.mjs +1 -0
- package/dist/schema-C7v-CajU.mjs +3 -0
- package/dist/{uninstall-SefKbL8a.mjs → uninstall-C0IfMGxA.mjs} +1 -1
- package/dist/{update-BNzZDPvJ.mjs → update-DNz98nPV.mjs} +1 -1
- package/dist/update-DgZD1TXs.mjs +1 -0
- package/dist/{upgrade-CVxQ8XFg.mjs → upgrade-C60CHTun.mjs} +1 -1
- package/dist/{user-output-C9oDB7iF.mjs → user-output-DoYIFFWA.mjs} +1 -1
- package/package.json +3 -1
- package/dist/agents-ZNosvpri.mjs +0 -1
- package/dist/capabilities-CH1g9Wyv.mjs +0 -1
- package/dist/capabilities-CKB3soqZ.mjs +0 -5
- package/dist/color-BgHjt9pg.mjs +0 -6
- package/dist/commands-DW43XU0t.mjs +0 -1
- package/dist/config-BviiWqlK.mjs +0 -3
- package/dist/detect-Q1nnDcca.mjs +0 -1
- package/dist/doctor-C_dl2rTA.mjs +0 -3
- package/dist/ensure-C6muP4LG.mjs +0 -1
- package/dist/inspect-VWWSSGk4.mjs +0 -1
- package/dist/resolve-BbcQHghj.mjs +0 -1
- package/dist/schema-CH18r4wk.mjs +0 -1
- package/dist/schema-Dh6SqSrc.mjs +0 -3
- package/dist/update-Gat4pKeS.mjs +0 -1
package/README.md
CHANGED
|
@@ -243,6 +243,8 @@ User configuration lives at `~/.quantex/config.json`:
|
|
|
243
243
|
}
|
|
244
244
|
```
|
|
245
245
|
|
|
246
|
+
`defaultPackageManager` can be `bun`, `npm`, or `mise`. It only changes agent install-method ordering when the selected agent exposes that managed installer; it does not make Quantex install missing package managers for you.
|
|
247
|
+
|
|
246
248
|
`selfUpdateRegistry` only affects the registry used when Quantex upgrades itself through Bun/npm. It does not change the default install source for your other projects. For a one-off override, use the `QTX_SELF_UPDATE_REGISTRY` environment variable.
|
|
247
249
|
|
|
248
250
|
Runtime state lives at `~/.quantex/state.json`. Quantex records the actual install source for agents and itself, which powers grouped `update --all` execution, `doctor` recovery guidance, and self-upgrade source detection.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,c as t,f as n,i as r,l as i,n as a,o,p as s,r as ee,s as te,t as c,u as ne}from"./detect-DWabXMgY.mjs";import{B as re,G as l,K as u,M as ie,O as d,P as f,R as ae,U as p,V as oe,W as m,Y as h,_ as se,b as ce,d as le,et as ue,f as de,g as fe,h as pe,m as me,p as he,v as ge,y as _e,z as ve}from"./color-DEbCq7kh.mjs";import ye from"node:process";const be={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`},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 be[e]}function _(e){return g(e).lifecycle===`managed`}function v(e){return g(e).lifecycle}function y(e){return g(e).canUpdate}function xe(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===`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 Se(e){return!!e&&b(e.installType)}function Ce(e){return e.length>0&&e.every(e=>b(e.type))}function we(e){return _(e.type)?`${v(e.type)}/${e.type}${x(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Te(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 Ee(e,t){let n=k({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function De(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===`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 Oe(e,t,n){if(t)return Se(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!Ce(n)))return e.packages.npm}function ke(e,t){let n=Ae(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 Ae(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 je={strategy:`managed`,canHandle:e=>!!T(e),getManagedInstallerType:e=>T(e)},Me={strategy:`self-update`,canHandle:e=>!C(e.installedState)&&!!e.agent.selfUpdate},E={strategy:`manual-hint`,canHandle:()=>!0},D=[je,Me,E];function O(e){return D.find(t=>t.canHandle(e))??E}function k(e){return O(e).strategy}function Ne(e){return w(e.agent,e.installedState)}async function A(e){let t=c(),n=typeof e==`function`?e(t):e;try{return ye.platform===`win32`?await u(l([`powershell.exe`,`-Command`,n]))===0:await u(l([`sh`,`-c`,n]))===0}catch{return!1}}function Pe(e){return e===`cask`?[`--cask`]:[]}async function j(e,t,n){try{return await u(l([`brew`,e,...Pe(n),t]))===0}catch{return!1}}async function Fe(e,t){return j(`install`,e,t)}async function M(e,t){return j(`upgrade`,e,t)}async function Ie(e){for(let t of e)if(!await M(t.packageName,t.packageTargetKind))return!1;return!0}async function Le(e,t){return j(`uninstall`,e,t)}async function N(e,t,n=[]){try{return await u(l([`cargo`,e,t,...n]))===0}catch{return!1}}async function P(e,t){return N(`install`,e,t)}async function F(e,t){return P(e,[`--force`,...t??[]])}async function Re(e){for(let t of e)if(!await F(t.packageName,t.packageInstallArgs))return!1;return!0}async function ze(e){return N(`uninstall`,e)}async function I(e,t=!1){try{return await u(l([`mise`,`use`,`--global`,...t?[`--force`]:[],e]))===0}catch{return!1}}async function Be(e){return I(e)}async function L(e){return I(e,!0)}async function Ve(e){for(let t of e)if(!await L(t.packageName))return!1;return!0}async function He(e){try{return await u(l([`mise`,`unuse`,`--global`,e]))===0}catch{return!1}}async function Ue(e){try{let{exitCode:t,stdout:n}=await p(m([`mise`,`ls`,`--installed`,`--json`,e],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?We(n,e):void 0}catch{return}}function We(e,t){try{let n=JSON.parse(e);if(!R(n))return;let r=Ge(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 Ge(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 Ke(){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 Ke(),...e]))===0}catch{return!1}}async function qe(e){return B([`install`,e])}async function V(e){return B([`install`,`--upgrade`,e])}async function Je(e){if(e.length===0)return!0;for(let t of e)if(!await V(t.packageName))return!1;return!0}async function Ye(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 Xe(e,t){return H(`install`,e,t)}async function U(e,t){return H(`upgrade`,e,t)}async function Ze(e){for(let t of e)if(!await U(t.packageName,t.packageInstallArgs))return!1;return!0}async function Qe(e){try{return await u(l([`uv`,`tool`,`uninstall`,e]))===0}catch{return!1}}async function $e(e){try{let{exitCode:t,stdout:n}=await p(m([`uv`,`tool`,`list`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?et(n,e):void 0}catch{return}}function et(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 tt(e){return G(`install`,e)}async function K(e){return G(`upgrade`,e)}async function nt(e){for(let t of e)if(!await K(t.packageName))return!1;return!0}async function rt(e){return G(`uninstall`,e)}const it={brew:{type:`brew`,isAvailable:async()=>ee(),install:async(e,t)=>Fe(e,t),uninstall:async(e,t)=>Le(e,t),update:async(e,t)=>M(e,t),updateMany:async e=>Ie(e)},bun:{type:`bun`,getInstalledVersion:async e=>fe(e),isAvailable:async()=>r(),install:async e=>se(e),uninstall:async e=>ge(e),update:async(e,t,n)=>_e(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>ce(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},cargo:{type:`cargo`,isAvailable:async()=>e(),install:async(e,t,n)=>P(e,n),uninstall:async e=>ze(e),update:async(e,t,n)=>F(e,n?.packageInstallArgs),updateMany:async e=>Re(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},mise:{type:`mise`,getInstalledVersion:async e=>Ue(e),isAvailable:async()=>o(),install:async e=>Be(e),uninstall:async e=>He(e),update:async e=>L(e),updateMany:async e=>Ve(e.map(e=>({packageName:e.packageName})))},npm:{type:`npm`,getInstalledVersion:async e=>le(e),isAvailable:async()=>te(),install:async e=>de(e),uninstall:async e=>he(e),update:async(e,t,n)=>me(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>pe(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},pip:{type:`pip`,isAvailable:async()=>t(),install:async e=>qe(e),uninstall:async e=>Ye(e),update:async e=>V(e),updateMany:async e=>Je(e.map(e=>({packageName:e.packageName})))},uv:{type:`uv`,getInstalledVersion:async e=>$e(e),isAvailable:async()=>i(),install:async(e,t,n)=>Xe(e,n),uninstall:async e=>Qe(e),update:async(e,t,n)=>U(e,n?.packageInstallArgs),updateMany:async e=>Ze(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},winget:{type:`winget`,isAvailable:async()=>ne(),install:async e=>tt(e),uninstall:async e=>rt(e),update:async e=>K(e),updateMany:async e=>nt(e.map(e=>({packageName:e.packageName})))}};function q(e){return it[e]}const J={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function at(){return(await ue()).defaultPackageManager}async function ot(){return{npmBunUpdateStrategy:(await ue()).npmBunUpdateStrategy}}async function Y(e){let t=c(),n=e.platforms[t];if(!n)return[];let r=await at();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function st(e,t,n,r,i,a){let o=q(e);return await o.isAvailable()?i===`install`?o.install(t,r,n):i===`update`?o.update(t,r,{npmBunUpdateStrategy:a,packageInstallArgs:n}):o.uninstall(t,r):!1}async function X(e,t,n,r){if(_(t.type)){let i=S(e,t);return i?st(t.type,i,t.packageInstallArgs,t.packageTargetKind,n,r):!1}return n===`update`&&!y(t.type)||!t.command?!1:A(t.command)}async function ct(e,t,n){return _(e.installType)?e.packageName?st(e.installType,e.packageName,e.packageInstallArgs,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:A(e.command)}async function lt(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await A(e.join(` `)))return!0;return!1}async function Z(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};return t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),await f(n),n}async function ut(e,t){return h(J,async()=>Z(e,t))}async function dt(e){return h(J,async()=>{let t=await Y(e);for(let n of t)if(await X(e,n,`install`))return{success:!0,installedState:await Z(e,n)};return{success:!1}})}async function ft(e,t){return h(J,async()=>{let{npmBunUpdateStrategy:n}=await ot(),r=await Y(e);if(t&&await ct(t,`update`,n))return await f(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await X(e,t,`update`,n))return{success:!0,installedState:await Z(e,t)}}return await lt(e)?{success:!0}:{success:!1}})}async function pt(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 ot()):!1})}async function mt(e,t,n){let r=q(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function ht(e){return h(J,async()=>{let t=await d(e.name);if(!t)return!1;let n=await ct(t,`uninstall`);return n&&await ie(e.name),n})}async function Q(e){let[t,n,r]=await Promise.all([Y(e),d(e.name),a(e.binaryName)]),[i,o,s]=await Promise.all([r?_t(e,n):Promise.resolve(void 0),r?ae(e.binaryName):Promise.resolve(void 0),vt(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:s,binaryPath:o,resolvedBinaryPath:await oe(o),sourceLabel:Te(n),updateLabel:Ee(e,n),lifecycle:n?v(n.installType):`unmanaged`}}async function gt(e){return Promise.all(e.map(Q))}async function _t(e,t){if(t&&_(t.installType)&&t.packageName){let e=await mt(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ve(e.binaryName,e.versionProbe)}async function vt(e,t,n){let r=Oe(e,t,n);if(r)return re(r)}function $(e){return n(e)}async function yt(e){let t=$(e);if(t)return{agent:t,inspection:await Q(t)}}async function bt(){return gt(s())}export{xe as C,_ as D,g as E,b as S,v as T,w as _,gt as a,ke as b,ut as c,pt as d,q as f,O as g,k as h,Q as i,ht as l,Ne as m,$ as n,Y as o,D as p,yt as r,dt as s,bt as t,ft as u,De as v,y as w,S as x,we as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./capabilities-LjMH_zbA.mjs";export{e as capabilitiesCommand};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{a as e,c as t,i as n,l as r,o as i,p as a,r as o,s,t as c,u as l}from"./detect-DWabXMgY.mjs";import{a as u,r as d,s as f,t as p}from"./color-DEbCq7kh.mjs";import m from"node:process";async function h(){let[p,h,v,y,b,x,S,C,w]=await Promise.all([n(),s(),o(),e(),i(),t(),r(),l(),f()]);return u(d({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:w.canAutoUpdate,timeout:!0},installers:{brew:{available:v,reason:v?void 0:g(`brew`)},bun:{available:p,reason:p?void 0:g(`bun`)},cargo:{available:y,reason:y?void 0:g(`cargo`)},mise:{available:b,reason:b?void 0:g(`mise`)},npm:{available:h,reason:h?void 0:g(`npm`)},pip:{available:x,reason:x?void 0:g(`pip`)},uv:{available:S,reason:S?void 0:g(`uv`)},winget:{available:C,reason:C?void 0:g(`winget`)}},outputModes:[`human`,`json`,`ndjson`],platform:{arch:m.arch,os:c()}},target:{kind:`system`,name:`capabilities`}}),_)}function g(e){return e===`winget`&&m.platform!==`win32`||e===`brew`&&m.platform===`win32`?`not-on-platform`:`not-found`}function _(e){e.data&&(console.log(p.bold(`
|
|
2
|
+
Quantex Capabilities
|
|
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(p.bold(`
|
|
4
|
+
Installers:`)),console.log(` bun: ${v(e.data.installers.bun)}`),console.log(` npm: ${v(e.data.installers.npm)}`),console.log(` brew: ${v(e.data.installers.brew)}`),console.log(` cargo: ${v(e.data.installers.cargo)}`),console.log(` mise: ${v(e.data.installers.mise)}`),console.log(` pip: ${v(e.data.installers.pip)}`),console.log(` uv: ${v(e.data.installers.uv)}`),console.log(` winget: ${v(e.data.installers.winget)}`),console.log(p.bold(`
|
|
5
|
+
Features:`)),console.log(` --yes: ${e.data.features.assumeYes?`yes`:`no`}`),console.log(` cache-refresh: ${e.data.features.cacheRefresh?`yes`:`no`}`),console.log(` color-modes: ${e.data.features.colorModes.join(`, `)}`),console.log(` no-cache: ${e.data.features.cacheBypass?`yes`:`no`}`),console.log(` dry-run: ${e.data.features.dryRun?`yes`:`no`}`),console.log(` freshness-metadata: ${e.data.features.freshnessMetadata?`yes`:`no`}`),console.log(` self-upgrade: ${e.data.features.selfUpgrade?`yes`:`no`}`),console.log(` idempotency-key: ${e.data.features.idempotencyKey?`yes`:`no`}`),console.log(` log-levels: ${e.data.features.logLevels.join(`, `)}`),console.log(` quiet-logs: ${e.data.features.quietLogs?`yes`:`no`}`),console.log(` timeout: ${e.data.features.timeout?`yes`:`no`}`),console.log(` channels: ${e.data.features.channels.join(`, `)}`),console.log(` exec-install-policy: ${e.data.features.execInstallPolicies.join(`, `)}`),console.log())}function v(e){return e.available?p.green(`available`):p.red(e.reason??`not-found`)}export{h as t};
|
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-ZNosvpri.mjs";import{d as i}from"./detect-Q1nnDcca.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,i as m,it as h,k as g,n as _,ot as v,r as ee,rt as y,s as te,st as b,t as x}from"./color-BgHjt9pg.mjs";import{a as S,i as C,n as w,o as T,r as E,t as ne}from"./user-output-C9oDB7iF.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=h();if(t.outputMode!==`human`||t.quiet)return;let n=await te();if(!n.latestVersion||!o(n.latestVersion,n.currentVersion))return;let r=await g(),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=h().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(()=>{y(),m({action:e.action,data:{reason:`timeout`,timeoutMs:n},target:e.target,type:`cancelled`},{force:!0}),t(f(_({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:n},message:`Command timed out after ${n}ms.`},target:e.target}),U,{force:!0}))},n)});return await K(e,async()=>{let n=await Promise.race([e.run(),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=h();if(!n.idempotencyKey)return;let r=await F(n.idempotencyKey);if(!r)return;if(r.action!==e)return f(_({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=h();return r.idempotencyKey&&await I(r.idempotencyKey,{action:e,result:n,target:t}),n}async function K(e,t){let n;try{let r=new Promise(t=>{let r=n=>{y(),m({action:e.action,data:{reason:`signal`,signal:n},target:e.target,type:`cancelled`},{force:!0}),t(f(_({action:e.action,error:{code:`CANCELLED`,details:{signal:n},message:`Command cancelled by ${n}.`},target:e.target}),U,{force:!0}))},i=()=>r(`SIGINT`),a=()=>r(`SIGTERM`);O.once(`SIGINT`,i),O.once(`SIGTERM`,a),n=()=>{O.off(`SIGINT`,i),O.off(`SIGTERM`,a)}});return await Promise.race([t(),r])}finally{n?.()}}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:h().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 se({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 ce(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(h().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(_({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 se(e){if(h().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 ce(e,t){let{timeoutMs:n}=h(),r,i;try{let a=new Promise(e=>{let n=n=>{y(),E(x.red(`${t} was cancelled by ${n}.`)),e(D(`CANCELLED`))},i=()=>n(`SIGINT`),a=()=>n(`SIGTERM`);O.once(`SIGINT`,i),O.once(`SIGTERM`,a),r=()=>{O.off(`SIGINT`,i),O.off(`SIGTERM`,a)}}),o=n===void 0?void 0:new Promise(e=>{i=setTimeout(()=>{y(),E(x.red(`${t} timed out after ${n}ms.`)),e(D(`TIMEOUT`))},n)});return await Promise.race([l(e),a,...o?[o]:[]])}finally{i&&clearTimeout(i),r?.()}}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{b(v(t.optsWithGlobals()))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}}),M.hook(`postAction`,()=>{p()}),M.command(`schema`).argument(`[command]`,`Optional command name`).description(`查看结构化输出 schema`).action(async e=>{let{schemaCommand:t}=await import(`./schema-CH18r4wk.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-DW43XU0t.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-CH1g9Wyv.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-VWWSSGk4.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-BbcQHghj.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-BA0iWXm3.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-C6muP4LG.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=ue(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-BNzZDPvJ.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-SefKbL8a.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-BzfNq_Hq.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-L1EKkDNs.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-BviiWqlK.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-CVxQ8XFg.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-C_dl2rTA.mjs`);O.exitCode=await $({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})});const le=new Set([...M.commands.map(e=>e.name()),...M.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),Z=Q(O.argv.slice(2),le);if(Z?.error&&(console.log(x.red(Z.error)),O.exit(2)),Z&&i(Z.agentName)){try{b(v({color:Z.color,dryRun:Z.dryRun,idempotencyKey:Z.idempotencyKey,logLevel:Z.logLevel,noCache:Z.noCache,nonInteractive:Z.nonInteractive,quiet:Z.quiet,refresh:Z.refresh,runId:Z.runId,timeout:Z.timeout,yes:Z.yes}))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}try{let e=await q(Z.agentName,Z.agentArgs,{assumeYes:Z.yes,dryRun:Z.dryRun,nonInteractive:Z.nonInteractive});O.exit(e)}finally{p()}}M.parse();function ue(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}function Q(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-Egq0RCta.mjs";import{f as i}from"./detect-DWabXMgY.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-DEbCq7kh.mjs";import{a as S,i as C,n as w,o as T,r as E,t as ne}from"./user-output-DoYIFFWA.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(()=>{g(),h({action:e.action,data:{reason:`timeout`,timeoutMs:n},target:e.target,type:`cancelled`},{force:!0}),t(f(v({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:n},message:`Command timed out after ${n}ms.`},target:e.target}),U,{force:!0}))},n)});return await K(e,async()=>{let n=await Promise.race([e.run(),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;try{let r=new Promise(t=>{let r=n=>{g(),h({action:e.action,data:{reason:`signal`,signal:n},target:e.target,type:`cancelled`},{force:!0}),t(f(v({action:e.action,error:{code:`CANCELLED`,details:{signal:n},message:`Command cancelled by ${n}.`},target:e.target}),U,{force:!0}))},i=()=>r(`SIGINT`),a=()=>r(`SIGTERM`);O.once(`SIGINT`,i),O.once(`SIGTERM`,a),n=()=>{O.off(`SIGINT`,i),O.off(`SIGTERM`,a)}});return await Promise.race([t(),r])}finally{n?.()}}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 se({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 ce(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 se(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 ce(e,t){let{timeoutMs:n}=p(),r,i;try{let a=new Promise(e=>{let n=n=>{g(),E(x.red(`${t} was cancelled by ${n}.`)),e(D(`CANCELLED`))},i=()=>n(`SIGINT`),a=()=>n(`SIGTERM`);O.once(`SIGINT`,i),O.once(`SIGTERM`,a),r=()=>{O.off(`SIGINT`,i),O.off(`SIGTERM`,a)}}),o=n===void 0?void 0:new Promise(e=>{i=setTimeout(()=>{g(),E(x.red(`${t} timed out after ${n}ms.`)),e(D(`TIMEOUT`))},n)});return await Promise.race([l(e),a,...o?[o]:[]])}finally{i&&clearTimeout(i),r?.()}}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-1VaAQRYe.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-CBYZqBF0.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-DVYVq0Kb.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-DO3c51A6.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-D3cko00u.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-YLaojYug.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-B-zpnaT-.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=ue(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-DNz98nPV.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-C0IfMGxA.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-D79BiyLS.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-BUsquCrf.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-CFYt99os.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-C60CHTun.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-Dp9VEmRS.mjs`);O.exitCode=await $({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})});const le=new Set([...M.commands.map(e=>e.name()),...M.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),Z=Q(O.argv.slice(2),le);if(Z?.error&&(console.log(x.red(Z.error)),O.exit(2)),Z&&i(Z.agentName)){try{m(b({color:Z.color,dryRun:Z.dryRun,idempotencyKey:Z.idempotencyKey,logLevel:Z.logLevel,noCache:Z.noCache,nonInteractive:Z.nonInteractive,quiet:Z.quiet,refresh:Z.refresh,runId:Z.runId,timeout:Z.timeout,yes:Z.yes}))}catch(e){console.log(x.red(e instanceof Error?e.message:String(e))),O.exit(2)}try{let e=await q(Z.agentName,Z.agentArgs,{assumeYes:Z.yes,dryRun:Z.dryRun,nonInteractive:Z.nonInteractive});O.exit(e)}finally{y()}}M.parse();function ue(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}function Q(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 _}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 v,y=new Set;function b(){return v??=me(),v}function se(e){y=new Set,v={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function ce(){v=void 0,y=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(){v&&(v.cancelled=!0)}function de(){ue();for(let e of y)e();y.clear()}function fe(e){return y.add(e),()=>{y.delete(e)}}function pe(e){let t=b();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function 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 x(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function ve(e,t,n){return`${x(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const ye={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function S(){return _(n.env.HOME||n.env.USERPROFILE||ee(),`.quantex`)}function C(){return _(S(),`config.json`)}async function w(){let e={...ye,...await Se()};return{...e,defaultPackageManager:T(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`?x(e.selfUpdateRegistry):void 0,versionCacheTtlHours:E(e.versionCacheTtlHours,6)}}function T(e){return e===`bun`||e===`mise`||e===`npm`}function be(e){return e===`latest-major`||e===`respect-semver`}async function xe(e){await s(S(),{recursive:!0}),await m(C(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Se(){try{let e=await l(C(),`utf8`),t=JSON.parse(e);return Ce(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 Ce(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 we(e){return e instanceof D}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 _(S(),`locks`,...r,i)}async function O(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 D(e,t);try{i(t,{recursive:!1}),De(t)}catch(n){throw Me(n)?new D(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 O(e);try{return await t()}finally{await n()}}async function Fe(){try{return await O({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(we(e))return;throw e}}const k=`quantex-cli`,A=`https://github.com/Drswith/quantex-cli`,j=`0.20.0`;function M(e,t={}){if(b().outputMode===`human`){let n=P(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:fe(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.resolve(),proc:n}}let n=P(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:fe(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.all([Ie(n.stdout),Ie(n.stderr)]).then(()=>void 0),proc:n}}async function N(e){try{let t=await e.proc.exited;return await e.outputDrained,t}finally{e.cleanup()}}function P(e,t={}){let n=ze();if(n)return Be(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??Re(r)});return{get exitCode(){return a.exitCode},stderr:a.stderr,stdout:a.stdout,exited:Le(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 Ie(e){if(!e)return;let t=await I(e);t&&n.stderr.write(t)}async function Le(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():ne(e):``}function Re(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function ze(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Be(e,t,n){let r=n([...e],t);return{get exitCode(){return r.exitCode},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 L(e,t){let n=await Ve(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function Ve(e,t,n=`text`){let r=await w(),i=r.versionCacheTtlHours*60*60*1e3,a=b().cacheMode,o=a===`no-cache`?{entries:{}}:await Ue(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return R(s,i),s.body;let l=await He(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 We(o),Ke(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 We(o)),Ke(c,c+i),u}async function He(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 Ue(){try{return JSON.parse(await l(Ge(),`utf8`))}catch{return{entries:{}}}}async function We(e){await s(_(S(),`cache`),{recursive:!0}),await m(Ge(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Ge(){return _(S(),`cache`,`versions.json`)}function R(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 Ke(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 Je(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 Ye(e,t){let n=Qe(e),r=Qe(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 $e(n.prerelease,r.prerelease)}}function z(e,t){return Ye(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?Je(r,t?.parser):void 0}catch{return}}async function V(e,t=`latest`,n={}){try{let r=x(n.registry)??`https://registry.npmjs.org`;return(await L(ve(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function Xe(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 Ze(e){if(e)try{return await u(e)}catch{return e}}function Qe(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 $e(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}const et={installedAgents:{},self:{}};function H(){return _(S(),`state.json`)}async function U(){return ct()}async function tt(e){let t=await O({resource:`state`,scope:[`state`]});try{await ft(e)}finally{await t()}}async function nt(e){return(await U()).installedAgents[e]}async function rt(e){await W(t=>{t.installedAgents[e.agentName]=e})}async function it(e){await W(t=>{delete t.installedAgents[e]})}async function at(){return(await U()).self}async function ot(e){await W(t=>{t.self.installSource=e})}async function st(e,t){await W(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function ct(){try{let e=JSON.parse(await l(H(),`utf8`)),t=lt(e.self);return{installedAgents:e.installedAgents??{},self:t}}catch{return{...et}}}function lt(e){if(!dt(e))return{};let t={...e};return ut(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 ut(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function dt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function ft(e){await s(S(),{recursive:!0}),await m(H(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function W(e){let t=await O({resource:`state`,scope:[`state`]});try{let t=await ct();await e(t),await ft(t)}finally{await t()}}function pt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function G(e=n.execPath){if(h(pt(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 mt(e=n.execPath){let t=G(e);if(t)return`${A}/releases/latest/download/${t}`}function ht(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 gt(e){let t=await L(await _t(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function _t(e){if(e===`stable`)return`${A}/releases/latest/download/manifest.json`;let t=(await vt(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 vt(e){let t=bt();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 yt(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 bt(){return A.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const xt=k,St=`/node_modules/${xt}`;async function Ct(e){let t=await Et(),r=n.execPath,i=t.foundPackageJson?K(t.packageRoot):K(``,r),a=await Tt((await at()).installSource,i),o=await w(),s=ht(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:wt(a),currentVersion:t.version||`0.20.0`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function wt(e){return e===`binary`||e===`bun`||e===`npm`}async function Tt(e,t){return t!==`unknown`&&e!==t?(await ot(t),t):e??t}function K(e,t=n.execPath){let r=Ot(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(St)?`npm`:r?`source`:kt(t)?`binary`:`unknown`}async function Et(e=import.meta.url){let t=At(e),n=g(t);for(;;){let e=_(n,`package.json`),t=await Dt(e);if(t?.name===xt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.20.0`};let r=g(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:_(g(t),`package.json`),packageRoot:g(t),version:j}}function q(){return j}async function Dt(e){try{return JSON.parse(await l(e,`utf8`))}catch{return}}function Ot(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function kt(e){let t=h(Ot(e));return t!==`bun`&&t!==`bun.exe`}function At(e){try{return re(e)}catch{return n.execPath}}async function jt(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=x(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 Mt(e,r,i)||{isOverride:!1,registry:_e,source:`fallback`}}async function Mt(e,t,n){if(e===`bun`){let e=Nt(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Pt(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=Nt(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await It(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function Nt(e,t){for(let n of t){let t=x(e[n]);if(t)return t}}async function Pt(e,t){let n=zt(t),i=t.XDG_CONFIG_HOME,a=Rt(e,`bunfig.toml`),o=[_(n,`.bunfig.toml`),i?_(i,`.bunfig.toml`):void 0];if(a){let e=await Ft(a);if(e)return e}for(let e of o){if(!e||!r(e))continue;let t=await Ft(e);if(t)return t}}async function Ft(e){try{return Bt(await l(e,`utf8`))}catch{return}}async function It(e,t){let n=zt(t),i=Rt(e,`.npmrc`),a=_(n,`.npmrc`);if(i){let e=await Lt(i);if(e)return e}if(r(a))return Lt(a)}async function Lt(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=x(r[1]);if(i)return i}}catch{}}function Rt(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 zt(e){return e.HOME||e.USERPROFILE||ee()}function Bt(e){let t=Vt(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 x(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return x(Vt(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Vt(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function Ht(e){let t=await w();if(e.installSource===`binary`)try{let t=await gt(e.updateChannel),n=yt(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(k,n,{registry:_e});if(e.installSource===`bun`||e.installSource===`npm`){let i=await jt(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await V(k,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:Jt(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function J(e){let t=e?.facts??await Ct({updateChannel:e?.updateChannel}),n=e?.target??await Ht(t),r=n.targetVersion?z(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Kt(t,n,r),target:n,updateAvailable:r}}function Ut(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 Wt(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await qt(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 Gt(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:Jt(e.packageRoot)},r=e.latestVersion?z(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Kt(t,n,r),target:n,updateAvailable:r}}function Kt(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function qt(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 Jt(e){if(e)return[n.execPath,_(e,`dist`,`cli.mjs`),`--version`]}async function Yt(e,t,r,i){let a;try{a=await fetch(e)}catch(t){return X(`network`,`Failed to download ${e}.`,t)}if(!a.ok)return X(`network`,`Failed to download ${e}: HTTP ${a.status}.`);let s=await c(_(g(t),`.quantex-upgrade-`)),l=_(s,h(t)),u=`${t}.bak`,p=!1;try{let c=ie.from(await a.arrayBuffer()),h=await Xt(t),g=nn(c);if(g!==rn(r))return X(`checksum`,`Checksum mismatch for ${e}. Expected ${rn(r)}, got ${g}.`);if(await m(l,c),n.platform===`win32`)return Zt(l,t,u,s,i);await o(l,h),await f(u,{force:!0}),await d(t,u),p=!0,await d(l,t);let _=await tn(t,i);return _.success?(p=!1,await f(u,{force:!0}),{success:!0}):(await en(u,t),p=!1,_)}catch(e){if(p){try{await en(u,t)}catch{}p=!1}return X($t(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await f(s,{recursive:!0,force:!0})}}async function Xt(e){try{return(await p(e)).mode&511}catch{return 493}}function Zt(e,t,r,i,a){try{return P([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Qt(e,t,r,i,n.pid,a)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return X(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function Qt(e,t,n,r,i,a){let o=Y(e),s=Y(t),c=Y(n),l=Y(r),u=Y(a??``);return[`$pidToWait = ${i}`,`$tempPath = '${o}'`,`$targetPath = '${s}'`,`$backupPath = '${c}'`,`$tempDir = '${l}'`,`$expectedVersion = '${u}'`,`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`,` }`,`}`,`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 $t(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 en(e,t){await f(t,{force:!0}),await d(e,t)}async function tn(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 nn(t){return e(`sha256`).update(t).digest(`hex`)}function rn(e){return e.trim().toLowerCase()}const an={source:`binary`,canHandle:e=>on(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):mt(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 Yt(t.downloadUrl,e.facts.executablePath,t.checksum,e.target.targetVersion??`latest`);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 on(e){return`facts`in e?e.facts.installSource:e.installSource}async function sn(e,t,n){try{let r=t?`${e}@${t}`:e,i=x(n);return await Z([`bun`,`add`,`-g`,...i?[`--registry`,i]:[],r],[e])}catch{return!1}}async function cn(e,t=`latest-major`,n=`latest`,r){try{let i=n===`latest`?e:`${e}@${n}`,a=x(r);return await Z([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...a?[`--registry`,a]:[],i],[e])}catch{return!1}}async function ln(e,t=`latest-major`){if(e.length===0)return!0;try{return await Z([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e)}catch{return!1}}async function un(e){try{return await N(M([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function dn(e){try{let{exitCode:t,stdout:n}=await F(P([`bun`,`pm`,`-g`,`ls`],{stdio:gn()}));return t===0?fn(n,e):void 0}catch{return}}function fn(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 Z(e,t){return await N(M(e))===0?pn(t):!1}async function pn(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await mn();if(!n)return!0;let r=hn(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await N(M([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function mn(){try{let{exitCode:e,stdout:t}=await F(P([`bun`,`pm`,`-g`,`untrusted`],{stdio:gn()}));return e===0?t:void 0}catch{return}}function hn(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 gn(){return[`ignore`,`pipe`,`ignore`]}const _n={source:`bun`,canHandle:e=>vn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${k}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await sn(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 vn(e){return`facts`in e?e.facts.installSource:e.installSource}async function Q(e,t,n){try{let r=t?`${e}@${t}`:e,i=x(n);return await N(M([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function yn(e,t=`latest-major`,n=`latest`,r){try{let i=x(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 bn(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 xn(e){try{return await N(M([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function Sn(e){try{let{exitCode:t,stdout:n}=await F(P([`npm`,`list`,`-g`,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?Cn(n,e):void 0}catch{return}}function Cn(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const wn={source:`npm`,canHandle:e=>Tn(e)===`npm`,getRecoveryHint:e=>`npm install -g ${k}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await Q(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 Tn(e){return`facts`in e?e.facts.installSource:e.installSource}const En={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}}},Dn=[_n,wn,an,En];function $(e){return Dn.find(t=>t.canHandle(e))??En}function On(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function kn(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:On(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function An(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 jn(e){return Ut(await J({updateChannel:e?.updateChannel}))}async function Mn(e){let t=await Pn(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 Wt(t,await $(t).upgrade(t))}finally{await n()}}function Nn(e,t=n.execPath){return kn(e,t)}async function Pn(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}}):Gt(e):J()}function Fn(e){return zn({...e,error:null,ok:!0})}function In(e){return zn({...e,ok:!1})}function Ln(e,t,n={}){let r=b();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?Vn({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Rn(e,t={}){let n=b();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return Vn(e)}function zn(e){let t=b();return{action:e.action,data:e.data,error:e.error??null,exitCode:e.exitCode,meta:{fetchedAt:t.freshness?.fetchedAt,mode:t.outputMode,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:q()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Bn(e){let t=b();return{action:e.action,data:e.data,meta:{fetchedAt:t.freshness?.fetchedAt,mode:`ndjson`,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:q()},target:e.target,type:e.type}}function Vn(e){let t=Bn(e);return console.log(JSON.stringify(t)),t}const{createColors:Hn,isColorSupported:Un}=ae;function Wn(){let e=b().colorMode??`auto`;return Hn(e===`always`?!0:e===`never`?!1:Un)}const Gn=new Proxy({},{get(e,t){let n=Wn(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{be as $,H as A,V as B,wt as C,mt as D,G as E,ot as F,M as G,z as H,st as I,we as J,N as K,Ye as L,it as M,tt as N,nt as O,rt as P,T as Q,Xe as R,J as S,q as T,F as U,Ze as V,P as W,S as X,Pe as Y,C as Z,sn as _,Ln as a,b as at,ln as b,Mn as c,se as ct,Sn as d,w as et,Q as f,dn as g,bn as h,Rn as i,de as it,U as j,at as k,kn as l,yn as m,In as n,ye as nt,Nn as o,ce as ot,xn as p,k as q,Fn as r,x as rt,jn as s,le as st,Gn as t,xe as tt,An as u,un as v,K as w,Ut as x,cn as y,B as 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-DEbCq7kh.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-B_Hju0lq.mjs";export{e as commandsCommand};
|
|
@@ -0,0 +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-DEbCq7kh.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
|
+
Current Configuration:
|
|
3
|
+
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{U as e,W as t}from"./color-DEbCq7kh.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:`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:`deepseek`,lookupAliases:[`deepseek-tui`],displayName:`DeepSeek TUI`,homepage:`https://github.com/Hmbown/DeepSeek-TUI`,packages:{cargo:`deepseek-tui-cli`,npm:`deepseek-tui`},binaryName:`deepseek`,selfUpdate:{command:[`deepseek`,`update`]},versionProbe:{command:[`deepseek`,`--version`]},platforms:{windows:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],macos:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],linux:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}]}},{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:`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:`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:[{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,type:`script`},{type:`cargo`}],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`,`mise`,`pip`,`uv`,`winget`]),l=r.enum([`package`,`cask`,`id`]),u={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(),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`}),g=r.object({command:s,fallbackCommands:r.array(s).min(1).optional(),versionAfter:r.enum([`same-process`,`respawn`]).optional()}).strict(),ee=r.object({command:s.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),_=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`}),v=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:_,selfUpdate:g.optional(),versionProbe:ee.optional()}).strict(),y=r.array(v).min(1),b={...n(y),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},x={},S=y.parse(a).map(E),C=new Map(S.map(e=>[e.name,e]));function w(){return S}function T(e){let t=C.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function E(e){let t=x[e.name],n=D(e.versionProbe,t);return{...e,versionProbe:n}}function D(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}T(`amp`),T(`auggie`);const O=T(`autohand`),k=T(`claude`),A=T(`codebuddy`),j=T(`codex`),M=T(`copilot`);T(`crush`);const N=T(`cursor`),P=T(`deepseek`),F=T(`devin`),I=T(`droid`);T(`forgecode`);const te=T(`gemini`);T(`goose`);const L=T(`jcode`),R=T(`junie`),z=T(`kilo`);T(`kimi`),T(`kiro`);const B=T(`opencode`),V=T(`openhands`),H=T(`pi`),U=T(`qoder`);T(`qwen`);const W=T(`reasonix`),G=T(`vibe`),K=T(`vtcode`),q=w();function J(){return q}function Y(e){return q.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1))}function X(e){return Y(e)}function Z(){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 ne(){return Q(`bun`)}async function re(){return Q(`npm`)}async function ie(){return Q(`brew`)}async function ae(){return Q(`cargo`)}async function oe(){return Q(`mise`)}async function $(){return Q(`winget`)}async function se(){return await Q(`pip`)||await Q(`pip3`)?!0:le()}async function ce(){return Q(`uv`)}async function le(){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 ue(n){try{let{exitCode:r}=await e(t([i.platform===`win32`?`where`:`which`,n]));return r===0}catch{return!1}}export{U as A,te as C,B as D,z as E,w as F,v as I,b as L,G as M,K as N,V as O,T as P,y as R,I as S,R as T,j as _,ae as a,P as b,se as c,Y as d,X as f,A as g,k as h,ne as i,W as j,H as k,ce as l,O as m,ue as n,oe as o,J as p,ie as r,re as s,Z as t,$ as u,M as v,L as w,F as x,N as y};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{t as n}from"./agents-Egq0RCta.mjs";import{a as r,c as i,i as a,l as o,o as s,r as c,s as l,u}from"./detect-DWabXMgY.mjs";import{H as d,a as f,q as p,r as m,s as h,t as g,u as _}from"./color-DEbCq7kh.mjs";async function v(){let p=await a(),g=await l(),v=await c(),x=await r(),S=await s(),C=await i(),w=await o(),T=await u(),E=await h(),D=E.latestVersion?d(E.latestVersion,E.currentVersion):!1,O=await n(),k=O.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})),A=[],j=`docs/runbooks/quantex-troubleshooting.md`,M=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!p&&!g&&!v&&!x&&!S&&!C&&!w&&!T&&A.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:j,message:`No managed installer found. Install bun, npm, brew, cargo, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(E.installSource===`bun`&&!p||E.installSource===`npm`&&!g)&&A.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:M,message:`Quantex CLI is tracked as a ${E.installSource} install, but ${E.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:b(E.installSource,E.updateChannel)}),E.canAutoUpdate||A.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:M,message:`Quantex CLI cannot auto-update from install source "${E.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:[]}),D&&E.recommendedUpgradeCommand){let e=_(E);A.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:M,message:e?`Quantex CLI ${E.currentVersion} is behind ${E.latestVersion}. Run ${E.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${E.currentVersion} is behind ${E.latestVersion}. Run ${E.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[E.recommendedUpgradeCommand]})}for(let n of O.filter(e=>e.inPath)){if(n.installedState||A.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:j,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);A.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:j,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 f(m({action:`doctor`,data:{agents:k,issues:A,installers:{brew:v,bun:p,cargo:x,mise:S,npm:g,pip:C,uv:w,winget:T},self:{canAutoUpdate:E.canAutoUpdate,currentVersion:E.currentVersion,installSource:E.installSource,latestVersion:E.latestVersion,outdated:!!D,recoveryHint:D?_(E):void 0}},target:{kind:`system`,name:`doctor`}}),y)}function y(e){if(e.data){if(console.log(g.bold(`
|
|
2
|
+
Quantex CLI Environment Check
|
|
3
|
+
`)),console.log(g.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?g.green(`available`):g.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?g.green(`available`):g.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?g.green(`available`):g.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?g.green(`available`):g.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?g.green(`available`):g.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?g.green(`available`):g.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?g.green(`available`):g.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?g.green(`available`):g.red(`not found`)}`),console.log(`\n${g.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?g.green(`supported`):g.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?g.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${g.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(g.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?g.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${g.bold(`Issues:`)}`),e.data.issues.length===0)console.log(g.green(` No issues found.`));else for(let t of e.data.issues)console.log(g.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(g.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function b(e,t){let n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${p}@${n}`]:e===`npm`?[`npm install -g ${p}@${n}`]:[]}export{v as doctorCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./ensure-DpX11qbo.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-Egq0RCta.mjs";import{J as i,a,i as o,n as s,r as c,t as l}from"./color-DEbCq7kh.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-DoYIFFWA.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.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
|
|
3
3
|
//#region src/agents/types.d.ts
|
|
4
4
|
type Platform = 'windows' | 'macos' | 'linux';
|
|
5
|
-
type ManagedInstallType = 'bun' | 'npm' | 'brew' | 'cargo' | 'pip' | 'uv' | 'winget';
|
|
5
|
+
type ManagedInstallType = 'bun' | 'npm' | 'brew' | 'cargo' | 'mise' | 'pip' | 'uv' | 'winget';
|
|
6
6
|
type InstallType = ManagedInstallType | 'script' | 'binary';
|
|
7
7
|
type PackageTargetKind = 'package' | 'cask' | 'id';
|
|
8
8
|
interface BaseInstallMethod {
|
|
@@ -26,6 +26,7 @@ interface BinaryInstallMethod extends BaseInstallMethod {
|
|
|
26
26
|
type InstallMethod = ManagedInstallMethod | ScriptInstallMethod | BinaryInstallMethod;
|
|
27
27
|
interface AgentPackageMetadata {
|
|
28
28
|
cargo?: string;
|
|
29
|
+
mise?: string;
|
|
29
30
|
npm?: string;
|
|
30
31
|
pip?: string;
|
|
31
32
|
uv?: string;
|
|
@@ -51,64 +52,26 @@ interface AgentDefinition {
|
|
|
51
52
|
versionProbe?: AgentVersionProbe;
|
|
52
53
|
}
|
|
53
54
|
//#endregion
|
|
54
|
-
//#region src/agents/
|
|
55
|
+
//#region src/agents/generated/catalog-agents.d.ts
|
|
55
56
|
declare const autohand: AgentDefinition;
|
|
56
|
-
//#endregion
|
|
57
|
-
//#region src/agents/definitions/claude.d.ts
|
|
58
57
|
declare const claude: AgentDefinition;
|
|
59
|
-
//#endregion
|
|
60
|
-
//#region src/agents/definitions/codebuddy.d.ts
|
|
61
58
|
declare const codebuddy: AgentDefinition;
|
|
62
|
-
//#endregion
|
|
63
|
-
//#region src/agents/definitions/codex.d.ts
|
|
64
59
|
declare const codex: AgentDefinition;
|
|
65
|
-
//#endregion
|
|
66
|
-
//#region src/agents/definitions/copilot.d.ts
|
|
67
60
|
declare const copilot: AgentDefinition;
|
|
68
|
-
//#endregion
|
|
69
|
-
//#region src/agents/definitions/cursor.d.ts
|
|
70
61
|
declare const cursor: AgentDefinition;
|
|
71
|
-
//#endregion
|
|
72
|
-
//#region src/agents/definitions/deepseek.d.ts
|
|
73
62
|
declare const deepseek: AgentDefinition;
|
|
74
|
-
//#endregion
|
|
75
|
-
//#region src/agents/definitions/devin.d.ts
|
|
76
63
|
declare const devin: AgentDefinition;
|
|
77
|
-
//#endregion
|
|
78
|
-
//#region src/agents/definitions/droid.d.ts
|
|
79
64
|
declare const droid: AgentDefinition;
|
|
80
|
-
//#endregion
|
|
81
|
-
//#region src/agents/definitions/gemini.d.ts
|
|
82
65
|
declare const gemini: AgentDefinition;
|
|
83
|
-
//#endregion
|
|
84
|
-
//#region src/agents/definitions/jcode.d.ts
|
|
85
66
|
declare const jcode: AgentDefinition;
|
|
86
|
-
//#endregion
|
|
87
|
-
//#region src/agents/definitions/junie.d.ts
|
|
88
67
|
declare const junie: AgentDefinition;
|
|
89
|
-
//#endregion
|
|
90
|
-
//#region src/agents/definitions/kilo.d.ts
|
|
91
68
|
declare const kilo: AgentDefinition;
|
|
92
|
-
//#endregion
|
|
93
|
-
//#region src/agents/definitions/opencode.d.ts
|
|
94
69
|
declare const opencode: AgentDefinition;
|
|
95
|
-
//#endregion
|
|
96
|
-
//#region src/agents/definitions/openhands.d.ts
|
|
97
70
|
declare const openhands: AgentDefinition;
|
|
98
|
-
//#endregion
|
|
99
|
-
//#region src/agents/definitions/pi.d.ts
|
|
100
71
|
declare const pi: AgentDefinition;
|
|
101
|
-
//#endregion
|
|
102
|
-
//#region src/agents/definitions/qoder.d.ts
|
|
103
72
|
declare const qoder: AgentDefinition;
|
|
104
|
-
//#endregion
|
|
105
|
-
//#region src/agents/definitions/reasonix.d.ts
|
|
106
73
|
declare const reasonix: AgentDefinition;
|
|
107
|
-
//#endregion
|
|
108
|
-
//#region src/agents/definitions/vibe.d.ts
|
|
109
74
|
declare const vibe: AgentDefinition;
|
|
110
|
-
//#endregion
|
|
111
|
-
//#region src/agents/definitions/vtcode.d.ts
|
|
112
75
|
declare const vtcode: AgentDefinition;
|
|
113
76
|
//#endregion
|
|
114
77
|
//#region src/agents/schema.d.ts
|
|
@@ -120,6 +83,7 @@ declare const agentCatalogEntrySchema: z.ZodObject<{
|
|
|
120
83
|
name: z.ZodString;
|
|
121
84
|
packages: z.ZodOptional<z.ZodObject<{
|
|
122
85
|
cargo: z.ZodOptional<z.ZodString>;
|
|
86
|
+
mise: z.ZodOptional<z.ZodString>;
|
|
123
87
|
npm: z.ZodOptional<z.ZodString>;
|
|
124
88
|
pip: z.ZodOptional<z.ZodString>;
|
|
125
89
|
uv: z.ZodOptional<z.ZodString>;
|
|
@@ -131,6 +95,7 @@ declare const agentCatalogEntrySchema: z.ZodObject<{
|
|
|
131
95
|
npm: "npm";
|
|
132
96
|
brew: "brew";
|
|
133
97
|
cargo: "cargo";
|
|
98
|
+
mise: "mise";
|
|
134
99
|
pip: "pip";
|
|
135
100
|
uv: "uv";
|
|
136
101
|
winget: "winget";
|
|
@@ -169,6 +134,7 @@ declare const agentCatalogEntrySchema: z.ZodObject<{
|
|
|
169
134
|
npm: "npm";
|
|
170
135
|
brew: "brew";
|
|
171
136
|
cargo: "cargo";
|
|
137
|
+
mise: "mise";
|
|
172
138
|
pip: "pip";
|
|
173
139
|
uv: "uv";
|
|
174
140
|
winget: "winget";
|
|
@@ -207,6 +173,7 @@ declare const agentCatalogEntrySchema: z.ZodObject<{
|
|
|
207
173
|
npm: "npm";
|
|
208
174
|
brew: "brew";
|
|
209
175
|
cargo: "cargo";
|
|
176
|
+
mise: "mise";
|
|
210
177
|
pip: "pip";
|
|
211
178
|
uv: "uv";
|
|
212
179
|
winget: "winget";
|
|
@@ -260,6 +227,7 @@ declare const agentCatalogSchema: z.ZodArray<z.ZodObject<{
|
|
|
260
227
|
name: z.ZodString;
|
|
261
228
|
packages: z.ZodOptional<z.ZodObject<{
|
|
262
229
|
cargo: z.ZodOptional<z.ZodString>;
|
|
230
|
+
mise: z.ZodOptional<z.ZodString>;
|
|
263
231
|
npm: z.ZodOptional<z.ZodString>;
|
|
264
232
|
pip: z.ZodOptional<z.ZodString>;
|
|
265
233
|
uv: z.ZodOptional<z.ZodString>;
|
|
@@ -271,6 +239,7 @@ declare const agentCatalogSchema: z.ZodArray<z.ZodObject<{
|
|
|
271
239
|
npm: "npm";
|
|
272
240
|
brew: "brew";
|
|
273
241
|
cargo: "cargo";
|
|
242
|
+
mise: "mise";
|
|
274
243
|
pip: "pip";
|
|
275
244
|
uv: "uv";
|
|
276
245
|
winget: "winget";
|
|
@@ -309,6 +278,7 @@ declare const agentCatalogSchema: z.ZodArray<z.ZodObject<{
|
|
|
309
278
|
npm: "npm";
|
|
310
279
|
brew: "brew";
|
|
311
280
|
cargo: "cargo";
|
|
281
|
+
mise: "mise";
|
|
312
282
|
pip: "pip";
|
|
313
283
|
uv: "uv";
|
|
314
284
|
winget: "winget";
|
|
@@ -347,6 +317,7 @@ declare const agentCatalogSchema: z.ZodArray<z.ZodObject<{
|
|
|
347
317
|
npm: "npm";
|
|
348
318
|
brew: "brew";
|
|
349
319
|
cargo: "cargo";
|
|
320
|
+
mise: "mise";
|
|
350
321
|
pip: "pip";
|
|
351
322
|
uv: "uv";
|
|
352
323
|
winget: "winget";
|
|
@@ -405,6 +376,7 @@ declare const agentCatalogJsonSchema: {
|
|
|
405
376
|
name: z.ZodString;
|
|
406
377
|
packages: z.ZodOptional<z.ZodObject<{
|
|
407
378
|
cargo: z.ZodOptional<z.ZodString>;
|
|
379
|
+
mise: z.ZodOptional<z.ZodString>;
|
|
408
380
|
npm: z.ZodOptional<z.ZodString>;
|
|
409
381
|
pip: z.ZodOptional<z.ZodString>;
|
|
410
382
|
uv: z.ZodOptional<z.ZodString>;
|
|
@@ -416,6 +388,7 @@ declare const agentCatalogJsonSchema: {
|
|
|
416
388
|
npm: "npm";
|
|
417
389
|
brew: "brew";
|
|
418
390
|
cargo: "cargo";
|
|
391
|
+
mise: "mise";
|
|
419
392
|
pip: "pip";
|
|
420
393
|
uv: "uv";
|
|
421
394
|
winget: "winget";
|
|
@@ -454,6 +427,7 @@ declare const agentCatalogJsonSchema: {
|
|
|
454
427
|
npm: "npm";
|
|
455
428
|
brew: "brew";
|
|
456
429
|
cargo: "cargo";
|
|
430
|
+
mise: "mise";
|
|
457
431
|
pip: "pip";
|
|
458
432
|
uv: "uv";
|
|
459
433
|
winget: "winget";
|
|
@@ -492,6 +466,7 @@ declare const agentCatalogJsonSchema: {
|
|
|
492
466
|
npm: "npm";
|
|
493
467
|
brew: "brew";
|
|
494
468
|
cargo: "cargo";
|
|
469
|
+
mise: "mise";
|
|
495
470
|
pip: "pip";
|
|
496
471
|
uv: "uv";
|
|
497
472
|
winget: "winget";
|
|
@@ -845,6 +820,10 @@ interface CapabilitiesData {
|
|
|
845
820
|
available: boolean;
|
|
846
821
|
reason?: string;
|
|
847
822
|
};
|
|
823
|
+
mise: {
|
|
824
|
+
available: boolean;
|
|
825
|
+
reason?: string;
|
|
826
|
+
};
|
|
848
827
|
npm: {
|
|
849
828
|
available: boolean;
|
|
850
829
|
reason?: string;
|
|
@@ -991,9 +970,10 @@ declare function schemaCommand(commandName?: string): Promise<CommandResult<Sche
|
|
|
991
970
|
declare function getSchemaCatalog(): SchemaDocument[];
|
|
992
971
|
//#endregion
|
|
993
972
|
//#region src/config/index.d.ts
|
|
973
|
+
type DefaultPackageManager = 'bun' | 'mise' | 'npm';
|
|
994
974
|
type NpmBunUpdateStrategy = 'latest-major' | 'respect-semver';
|
|
995
975
|
interface QuantexConfig {
|
|
996
|
-
defaultPackageManager:
|
|
976
|
+
defaultPackageManager: DefaultPackageManager;
|
|
997
977
|
networkRetries: number;
|
|
998
978
|
networkTimeoutMs: number;
|
|
999
979
|
npmBunUpdateStrategy: NpmBunUpdateStrategy;
|
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
|
|
2
|
-
`)}\n`}function et(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 tt(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 nt(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 Qe)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 rt(e,t){try{let n=await
|
|
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-Egq0RCta.mjs";import{A as v,C as y,D as b,E as x,F as S,I as C,L as w,M as T,N as E,O as D,P as O,R as k,S as A,T as j,_ as M,b as N,d as P,f as F,g as I,h as L,i as R,j as z,k as B,m as V,n as H,p as U,s as W,t as G,v as K,w as q,x as J,y as Y}from"./detect-DWabXMgY.mjs";import{A as ae,B as oe,C as se,D as ce,E as le,F as ue,G as de,I as fe,K as pe,M as me,N as he,O as ge,P as _e,R as ve,T as ye,X as be,Z as xe,a as Se,at as Ce,c as we,ct as Te,et as Ee,j as De,k as Oe,l as ke,n as Ae,o as je,ot as Me,r as Ne,s as Pe,st as Fe,tt as Ie,u as Le,w as Re,z as ze}from"./color-DEbCq7kh.mjs";import{t as Be}from"./capabilities-LjMH_zbA.mjs";import{t as Ve}from"./commands-B_Hju0lq.mjs";import{t as He}from"./ensure-DpX11qbo.mjs";import{t as Ue}from"./inspect-CihiIfvE.mjs";import{t as We}from"./resolve-BhJphfVN.mjs";import{n as Ge,t as Ke}from"./schema-C7v-CajU.mjs";import{n as qe,t as Je}from"./errors-DCtNasuC.mjs";import{a as Ye,i as Xe,n as Ze,t as X}from"./update-DgZD1TXs.mjs";const Qe=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function $e(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
|
|
2
|
+
`)}\n`}function et(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 tt(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 nt(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 Qe)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 rt(e,t){try{let n=await pe(de([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{C as agentCatalogEntrySchema,w as agentCatalogJsonSchema,k as agentCatalogSchema,f as agentUpdateProviders,V as autohand,se as canAutoUpdateSelf,a as canLookupLatestVersionForInstallType,l as canResolveAgentUpdate,n as canUninstallInstallType,_ as canUpdateInstallType,Be as capabilitiesCommand,L as claude,I as codebuddy,M as codex,Ve as commandsCommand,K as copilot,Ae as createErrorResult,tt as createReleaseManifest,Ne as createSuccessResult,Xe as createUpdatePlan,Y as cursor,N as deepseek,Re as detectSelfInstallSource,J as devin,A as droid,Se as emitCommandResult,He as ensureCommand,rt as execCommand,$e as formatChecksums,y as gemini,P as getAgentByLookupName,F as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,o as getAgentUpdateStrategy,U as getAllAgents,ve as getBinaryPath,le as getBinaryReleaseAssetName,ce as getBinaryReleaseDownloadUrl,O as getCatalogAgent,S as getCatalogAgents,Ce as getCliContext,be as getConfigDir,xe as getConfigFilePath,Je as getExitCodeForError,qe as getExitCodeForResult,ee as getInstallLifecycle,ge as getInstalledAgentState,ze as getInstalledVersion,i as getInstallerCapabilities,oe as getLatestVersion,re as getManagedInstaller,e as getManualAgentUpdateMessage,je as getManualSelfUpgradeCommand,d as getOrderedInstallMethods,G as getPlatform,Ke as getSchemaCatalog,Oe as getSelfState,ke as getSelfUpgradeRecoveryHint,Le as getSelfUpgradeRecoveryHintForInspection,ye as getSelfVersion,X as getSingleAgentUpdateStatus,ae as getStateFilePath,s as inspectAgent,te as inspectAllAgents,Ue as inspectCommand,h as inspectRegisteredAgents,Pe as inspectSelf,m as installAgent,H as isBinaryInPath,R as isBunAvailable,Ye as isInspectionUpdateAvailable,r as isManagedInstallType,W as isNpmAvailable,q as jcode,j as junie,x as kilo,Ee as loadConfig,De as loadState,Q as normalizeRepositoryUrl,b as opencode,D as openhands,Z as parseBinaryTarget,et as parseChecksums,B as pi,Ze as planAgentUpdates,v as qoder,z as reasonix,me as removeInstalledAgentState,Me as resetCliContext,u as resolveAgent,p as resolveAgentInspection,ie as resolveAgentUpdateProvider,Fe as resolveCliContext,We as resolveCommand,$ as resolveReleaseChannel,Ie as saveConfig,he as saveState,Ge as schemaCommand,Te as setCliContext,_e as setInstalledAgentState,ue as setSelfInstallSource,fe as setSelfUpdateNoticeState,c as uninstallAgent,g as updateAgent,ne as updateAgentsByType,we as upgradeSelf,nt 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-Egq0RCta.mjs";import{a as r,n as i,r as a,t as o}from"./color-DEbCq7kh.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};
|
|
@@ -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-Egq0RCta.mjs";import{a as r,n as i,r as a,t as o}from"./color-DEbCq7kh.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./inspect-CihiIfvE.mjs";export{e as inspectCommand};
|
|
@@ -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-Egq0RCta.mjs";import{J as i,a,i as o,n as s,r as c,t as l}from"./color-DEbCq7kh.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-DoYIFFWA.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-Egq0RCta.mjs";import{a as t,r as n,t as r}from"./color-DEbCq7kh.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};
|
|
@@ -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-Egq0RCta.mjs";import{a as r,n as i,r as a,t as o}from"./color-DEbCq7kh.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./resolve-BhJphfVN.mjs";export{e as resolveCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./schema-C7v-CajU.mjs";export{e as schemaCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,n as t,r as n,t as r}from"./color-DEbCq7kh.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,mise:o,npm:o,pip:o,uv:o,winget:o},c=[`brew`,`bun`,`cargo`,`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`},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
|
+
Quantex Schemas
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e,n as t}from"./agents-
|
|
1
|
+
import{l as e,n as t}from"./agents-Egq0RCta.mjs";import{J as n,O as r,a as i,n as a,r as o,t as s}from"./color-DEbCq7kh.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-DoYIFFWA.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{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-Egq0RCta.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-DEbCq7kh.mjs";import{a as h,i as g,n as _,r as v}from"./user-output-DoYIFFWA.mjs";import{n as y,r as b}from"./update-DgZD1TXs.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as e,g as t,i as n,t as r,x as i}from"./agents-Egq0RCta.mjs";function a(e,n={}){let r={bun:[],npm:[],brew:[],cargo:[],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.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`,`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,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,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{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-DEbCq7kh.mjs";import{a as l,i as u,n as d,r as f}from"./user-output-DoYIFFWA.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{
|
|
1
|
+
import{at as e}from"./color-DEbCq7kh.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.
|
|
3
|
+
"version": "0.20.0",
|
|
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",
|
|
@@ -51,6 +51,8 @@
|
|
|
51
51
|
"./package.json": "./package.json"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
|
+
"agent-catalog:generate": "bun run agent-catalog:manifest && bun run agent-catalog:schema",
|
|
55
|
+
"agent-catalog:manifest": "bun run scripts/write-agent-catalog-manifest.ts",
|
|
54
56
|
"agent-catalog:schema": "bun run scripts/write-agent-catalog-schema.ts",
|
|
55
57
|
"build": "tsdown",
|
|
56
58
|
"build:bin": "bun run scripts/write-build-metadata.ts && bun run scripts/build-bin.ts",
|
package/dist/agents-ZNosvpri.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as ee,s as te,t as c}from"./detect-Q1nnDcca.mjs";import{$ as l,B as ne,G as u,K as d,M as re,O as f,P as p,R as ie,U as m,V as ae,W as h,Y as g,_ as oe,b as se,d as ce,f as le,g as ue,h as de,m as fe,p as pe,v as me,y as he,z as ge}from"./color-BgHjt9pg.mjs";import _e from"node:process";const ve={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`},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 _(e){return ve[e]}function v(e){return _(e).lifecycle===`managed`}function y(e){return _(e).lifecycle}function b(e){return _(e).canUpdate}function ye(e){return _(e).canUninstall}function x(e){return _(e).canLookupLatestVersion}function S(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function C(e,t){if(t.packageName)return t.packageName;if(t.type===`cargo`)return e.packages?.cargo;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 w(e){return e?b(e.installType):!1}function T(e,t){return w(t)||!!e.selfUpdate}function be(e){return!!e&&x(e.installType)}function xe(e){return e.length>0&&e.every(e=>x(e.type))}function Se(e){return v(e.type)?`${y(e.type)}/${e.type}${S(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Ce(e){return e?v(e.installType)?`managed via ${e.installType}${S(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function we(e,t){let n=A({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function Te(e,t){if(t.type===`bun`){let n=C(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=C(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=C(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`pip`){let n=C(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=C(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 Ee(e,t,n){if(t)return be(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!xe(n)))return e.packages.npm}function De(e,t){let n=Oe(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 Oe(e){if(!e)return;let t=e.replaceAll(`\\`,`/`);if(t.includes(`/.bun/bin/`)||t.includes(`/.bun/install/global/`))return`bun`;if(t.includes(`/node_modules/.bin/`)||t.includes(`/node_modules/`))return`npm`}function E(e){if(e.installedState)return v(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(v(t.type)&&b(t.type))return t.type}const ke={strategy:`managed`,canHandle:e=>!!E(e),getManagedInstallerType:e=>E(e)},Ae={strategy:`self-update`,canHandle:e=>!w(e.installedState)&&!!e.agent.selfUpdate},D={strategy:`manual-hint`,canHandle:()=>!0},O=[ke,Ae,D];function k(e){return O.find(t=>t.canHandle(e))??D}function A(e){return k(e).strategy}function je(e){return T(e.agent,e.installedState)}async function j(e){let t=c(),n=typeof e==`function`?e(t):e;try{return _e.platform===`win32`?await d(u([`powershell.exe`,`-Command`,n]))===0:await d(u([`sh`,`-c`,n]))===0}catch{return!1}}function Me(e){return e===`cask`?[`--cask`]:[]}async function M(e,t,n){try{return await d(u([`brew`,e,...Me(n),t]))===0}catch{return!1}}async function Ne(e,t){return M(`install`,e,t)}async function N(e,t){return M(`upgrade`,e,t)}async function Pe(e){for(let t of e)if(!await N(t.packageName,t.packageTargetKind))return!1;return!0}async function Fe(e,t){return M(`uninstall`,e,t)}async function P(e,t,n=[]){try{return await d(u([`cargo`,e,t,...n]))===0}catch{return!1}}async function F(e,t){return P(`install`,e,t)}async function I(e,t){return F(e,[`--force`,...t??[]])}async function Ie(e){for(let t of e)if(!await I(t.packageName,t.packageInstallArgs))return!1;return!0}async function Le(e){return P(`uninstall`,e)}let L=null;async function Re(){if(L)return L;for(let e of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await m(h([...e,`--version`]));if(t===0)return L=e,e}catch{}return L=[`pip`],L}async function R(e){try{return await d(u([...await Re(),...e]))===0}catch{return!1}}async function ze(e){return R([`install`,e])}async function z(e){return R([`install`,`--upgrade`,e])}async function Be(e){if(e.length===0)return!0;for(let t of e)if(!await z(t.packageName))return!1;return!0}async function Ve(e){return R([`uninstall`,`-y`,e])}async function B(e,t,n=[]){try{return await d(u([`uv`,`tool`,e,t,...n]))===0}catch{return!1}}async function He(e,t){return B(`install`,e,t)}async function V(e,t){return B(`upgrade`,e,t)}async function Ue(e){for(let t of e)if(!await V(t.packageName,t.packageInstallArgs))return!1;return!0}async function We(e){try{return await d(u([`uv`,`tool`,`uninstall`,e]))===0}catch{return!1}}async function Ge(e){try{let{exitCode:t,stdout:n}=await m(h([`uv`,`tool`,`list`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?Ke(n,e):void 0}catch{return}}function Ke(e,t){let n=H(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(H(i)===n)return a}}function H(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}async function U(e,t){try{return await d(u([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function qe(e){return U(`install`,e)}async function W(e){return U(`upgrade`,e)}async function Je(e){for(let t of e)if(!await W(t.packageName))return!1;return!0}async function Ye(e){return U(`uninstall`,e)}const Xe={brew:{type:`brew`,isAvailable:async()=>ee(),install:async(e,t)=>Ne(e,t),uninstall:async(e,t)=>Fe(e,t),update:async(e,t)=>N(e,t),updateMany:async e=>Pe(e)},bun:{type:`bun`,getInstalledVersion:async e=>ue(e),isAvailable:async()=>i(),install:async e=>oe(e),uninstall:async e=>me(e),update:async(e,t,n)=>he(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>se(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},cargo:{type:`cargo`,isAvailable:async()=>e(),install:async(e,t,n)=>F(e,n),uninstall:async e=>Le(e),update:async(e,t,n)=>I(e,n?.packageInstallArgs),updateMany:async e=>Ie(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},npm:{type:`npm`,getInstalledVersion:async e=>ce(e),isAvailable:async()=>s(),install:async e=>le(e),uninstall:async e=>pe(e),update:async(e,t,n)=>fe(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>de(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},pip:{type:`pip`,isAvailable:async()=>te(),install:async e=>ze(e),uninstall:async e=>Ve(e),update:async e=>z(e),updateMany:async e=>Be(e.map(e=>({packageName:e.packageName})))},uv:{type:`uv`,getInstalledVersion:async e=>Ge(e),isAvailable:async()=>t(),install:async(e,t,n)=>He(e,n),uninstall:async e=>We(e),update:async(e,t,n)=>V(e,n?.packageInstallArgs),updateMany:async e=>Ue(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},winget:{type:`winget`,isAvailable:async()=>a(),install:async e=>qe(e),uninstall:async e=>Ye(e),update:async e=>W(e),updateMany:async e=>Je(e.map(e=>({packageName:e.packageName})))}};function G(e){return Xe[e]}const K={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function Ze(){return(await l()).defaultPackageManager}async function q(){return{npmBunUpdateStrategy:(await l()).npmBunUpdateStrategy}}async function J(e){let t=c(),n=e.platforms[t];if(!n)return[];let r=await Ze();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function Y(e,t,n,r,i,a){let o=G(e);return await o.isAvailable()?i===`install`?o.install(t,r,n):i===`update`?o.update(t,r,{npmBunUpdateStrategy:a,packageInstallArgs:n}):o.uninstall(t,r):!1}async function X(e,t,n,r){if(v(t.type)){let i=C(e,t);return i?Y(t.type,i,t.packageInstallArgs,t.packageTargetKind,n,r):!1}return n===`update`&&!b(t.type)||!t.command?!1:j(t.command)}async function Qe(e,t,n){return v(e.installType)?e.packageName?Y(e.installType,e.packageName,e.packageInstallArgs,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:j(e.command)}async function $e(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await j(e.join(` `)))return!0;return!1}async function Z(e,t){let n={agentName:e.name,installType:t.type,packageName:C(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0};return t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),await p(n),n}async function et(e,t){return g(K,async()=>Z(e,t))}async function tt(e){return g(K,async()=>{let t=await J(e);for(let n of t)if(await X(e,n,`install`))return{success:!0,installedState:await Z(e,n)};return{success:!1}})}async function nt(e,t){return g(K,async()=>{let{npmBunUpdateStrategy:n}=await q(),r=await J(e);if(t&&await Qe(t,`update`,n))return await p(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await X(e,t,`update`,n))return{success:!0,installedState:await Z(e,t)}}return await $e(e)?{success:!0}:{success:!1}})}async function rt(e,t){return g(K,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=G(e);return await r.isAvailable()?r.updateMany(n,await q()):!1})}async function it(e,t,n){let r=G(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function at(e){return g(K,async()=>{let t=await f(e.name);if(!t)return!1;let n=await Qe(t,`uninstall`);return n&&await re(e.name),n})}async function Q(e){let[t,n,r]=await Promise.all([J(e),f(e.name),o(e.binaryName)]),[i,a,s]=await Promise.all([r?st(e,n):Promise.resolve(void 0),r?ie(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 ae(a),sourceLabel:Ce(n),updateLabel:we(e,n),lifecycle:n?y(n.installType):`unmanaged`}}async function ot(e){return Promise.all(e.map(Q))}async function st(e,t){if(t&&v(t.installType)&&t.packageName){let e=await it(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ge(e.binaryName,e.versionProbe)}async function ct(e,t,n){let r=Ee(e,t,n);if(r)return ne(r)}function $(e){return n(e)}async function lt(e){let t=$(e);if(t)return{agent:t,inspection:await Q(t)}}async function ut(){return ot(r())}export{ye as C,v as D,_ as E,x as S,y as T,T as _,ot as a,De as b,et as c,rt as d,G as f,k as g,A as h,Q as i,at as l,je as m,$ as n,J as o,O as p,lt as r,tt as s,ut as t,nt as u,Te as v,b as w,C as x,Se as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capabilities-CKB3soqZ.mjs";export{e as capabilitiesCommand};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,f as n,i as r,l as i,o as a,r as o,s,t as c}from"./detect-Q1nnDcca.mjs";import{a as l,r as u,s as d,t as f}from"./color-BgHjt9pg.mjs";import p from"node:process";async function m(){let[f,m,_,v,y,b,x,S]=await Promise.all([r(),a(),o(),e(),s(),t(),i(),d()]);return l(u({action:`capabilities`,data:{agents:n().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:S.canAutoUpdate,timeout:!0},installers:{brew:{available:_,reason:_?void 0:h(`brew`)},bun:{available:f,reason:f?void 0:h(`bun`)},cargo:{available:v,reason:v?void 0:h(`cargo`)},npm:{available:m,reason:m?void 0:h(`npm`)},pip:{available:y,reason:y?void 0:h(`pip`)},uv:{available:b,reason:b?void 0:h(`uv`)},winget:{available:x,reason:x?void 0:h(`winget`)}},outputModes:[`human`,`json`,`ndjson`],platform:{arch:p.arch,os:c()}},target:{kind:`system`,name:`capabilities`}}),g)}function h(e){return e===`winget`&&p.platform!==`win32`||e===`brew`&&p.platform===`win32`?`not-on-platform`:`not-found`}function g(e){e.data&&(console.log(f.bold(`
|
|
2
|
-
Quantex Capabilities
|
|
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(f.bold(`
|
|
4
|
-
Installers:`)),console.log(` bun: ${_(e.data.installers.bun)}`),console.log(` npm: ${_(e.data.installers.npm)}`),console.log(` brew: ${_(e.data.installers.brew)}`),console.log(` cargo: ${_(e.data.installers.cargo)}`),console.log(` pip: ${_(e.data.installers.pip)}`),console.log(` uv: ${_(e.data.installers.uv)}`),console.log(` winget: ${_(e.data.installers.winget)}`),console.log(f.bold(`
|
|
5
|
-
Features:`)),console.log(` --yes: ${e.data.features.assumeYes?`yes`:`no`}`),console.log(` cache-refresh: ${e.data.features.cacheRefresh?`yes`:`no`}`),console.log(` color-modes: ${e.data.features.colorModes.join(`, `)}`),console.log(` no-cache: ${e.data.features.cacheBypass?`yes`:`no`}`),console.log(` dry-run: ${e.data.features.dryRun?`yes`:`no`}`),console.log(` freshness-metadata: ${e.data.features.freshnessMetadata?`yes`:`no`}`),console.log(` self-upgrade: ${e.data.features.selfUpgrade?`yes`:`no`}`),console.log(` idempotency-key: ${e.data.features.idempotencyKey?`yes`:`no`}`),console.log(` log-levels: ${e.data.features.logLevels.join(`, `)}`),console.log(` quiet-logs: ${e.data.features.quietLogs?`yes`:`no`}`),console.log(` timeout: ${e.data.features.timeout?`yes`:`no`}`),console.log(` channels: ${e.data.features.channels.join(`, `)}`),console.log(` exec-install-policy: ${e.data.features.execInstallPolicies.join(`, `)}`),console.log())}function _(e){return e.available?f.green(`available`):f.red(e.reason??`not-found`)}export{m as t};
|
package/dist/color-BgHjt9pg.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 _}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 v,y=new Set;function b(){return v??=fe(),v}function se(e){y=new Set,v={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function ce(){v=void 0,y=new Set}function x(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=pe(e.color),l=me(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(){v&&(v.cancelled=!0)}function ue(){le();for(let e of y)e();y.clear()}function S(e){return y.add(e),()=>{y.delete(e)}}function de(e){let t=b();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function fe(){return x()}function pe(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 me(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 he=`https://registry.npmjs.org`;function C(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function ge(e,t,n){return`${C(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const _e={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={..._e,...await be()};return{...e,defaultPackageManager:e.defaultPackageManager===`npm`?`npm`:`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 ve(e){return e===`latest-major`||e===`respect-semver`}async function ye(e){await s(w(),{recursive:!0}),await m(T(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function be(){try{let e=await l(T(),`utf8`),t=JSON.parse(e);return xe(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 xe(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 Se(e){return e instanceof O}function Ce(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=Ce(e.scope);return await s(g(t),{recursive:!0}),await we(e.resource,t),async()=>{await f(t,{force:!0,recursive:!0})}}async function we(e,t){try{i(t,{recursive:!1}),Te(t);return}catch(e){if(!Ae(e))throw e}if(!await Ee(t))throw new O(e,t);try{i(t,{recursive:!1}),Te(t)}catch(n){throw Ae(n)?new O(e,t):n}}function Te(e){a(_(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function Ee(e){let t;try{t=await De(e)}catch{return!1}return t&&ke(t.pid)?!1:(await f(e,{force:!0,recursive:!0}),!0)}async function De(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await Oe(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await Oe(e)}async function Oe(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(je(e))return;throw e}}function ke(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Ae(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function je(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Me(e,t){let n=await k(e);try{return await t()}finally{await n()}}async function Ne(){try{return await k({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Se(e))return;throw e}}const A=`quantex-cli`,j=`https://github.com/Drswith/quantex-cli`,Pe=`0.19.0`;function M(e,t={}){if(b().outputMode===`human`){let n=P(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:S(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.resolve(),proc:n}}let n=P(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:S(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.all([Fe(n.stdout),Fe(n.stderr)]).then(()=>void 0),proc:n}}async function N(e){try{let t=await e.proc.exited;return await e.outputDrained,t}finally{e.cleanup()}}function P(e,t={}){let n=Re();if(n)return ze(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??Le(r)});return{get exitCode(){return a.exitCode},stderr:a.stderr,stdout:a.stdout,exited:Ie(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 Fe(e){if(!e)return;let t=await I(e);t&&n.stderr.write(t)}async function Ie(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():ne(e):``}function Le(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function Re(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function ze(e,t,n){let r=n([...e],t);return{get exitCode(){return r.exitCode},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 L(e,t){let n=await Be(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function Be(e,t,n=`text`){let r=await E(),i=r.versionCacheTtlHours*60*60*1e3,a=b().cacheMode,o=a===`no-cache`?{entries:{}}:await He(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return R(s,i),s.body;let l=await Ve(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 Ue(o),Ge(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 Ue(o)),Ge(c,c+i),u}async function Ve(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 He(){try{return JSON.parse(await l(We(),`utf8`))}catch{return{entries:{}}}}async function Ue(e){await s(_(w(),`cache`),{recursive:!0}),await m(We(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function We(){return _(w(),`cache`,`versions.json`)}function R(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);de({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Ge(e,t){de({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Ke=/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(Ke);return r?r[1]:n||void 0}function Je(e,t){let n=Ze(e),r=Ze(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 Qe(n.prerelease,r.prerelease)}}function z(e,t){return Je(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(ge(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function Ye(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 Xe(e){if(e)try{return await u(e)}catch{return e}}function Ze(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 Qe(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}const $e={installedAgents:{},self:{}};function H(){return _(w(),`state.json`)}async function U(){return st()}async function et(e){let t=await k({resource:`state`,scope:[`state`]});try{await dt(e)}finally{await t()}}async function tt(e){return(await U()).installedAgents[e]}async function nt(e){await W(t=>{t.installedAgents[e.agentName]=e})}async function rt(e){await W(t=>{delete t.installedAgents[e]})}async function it(){return(await U()).self}async function at(e){await W(t=>{t.self.installSource=e})}async function ot(e,t){await W(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function st(){try{let e=JSON.parse(await l(H(),`utf8`)),t=ct(e.self);return{installedAgents:e.installedAgents??{},self:t}}catch{return{...$e}}}function ct(e){if(!ut(e))return{};let t={...e};return lt(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 lt(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function ut(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function dt(e){await s(w(),{recursive:!0}),await m(H(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function W(e){let t=await k({resource:`state`,scope:[`state`]});try{let t=await st();await e(t),await dt(t)}finally{await t()}}function ft(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function G(e=n.execPath){if(h(ft(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 pt(e=n.execPath){let t=G(e);if(t)return`${j}/releases/latest/download/${t}`}function mt(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 ht(e){let t=await L(await gt(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function gt(e){if(e===`stable`)return`${j}/releases/latest/download/manifest.json`;let t=(await _t(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 _t(e){let t=yt();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 vt(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 yt(){return j.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const bt=A,xt=`/node_modules/${bt}`;async function St(e){let t=await Tt(),r=n.execPath,i=t.foundPackageJson?K(t.packageRoot):K(``,r),a=await wt((await it()).installSource,i),o=await E(),s=mt(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:Ct(a),currentVersion:t.version||`0.19.0`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function Ct(e){return e===`binary`||e===`bun`||e===`npm`}async function wt(e,t){return t!==`unknown`&&e!==t?(await at(t),t):e??t}function K(e,t=n.execPath){let r=Dt(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(xt)?`npm`:r?`source`:Ot(t)?`binary`:`unknown`}async function Tt(e=import.meta.url){let t=kt(e),n=g(t);for(;;){let e=_(n,`package.json`),t=await Et(e);if(t?.name===bt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.19.0`};let r=g(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:_(g(t),`package.json`),packageRoot:g(t),version:Pe}}function q(){return Pe}async function Et(e){try{return JSON.parse(await l(e,`utf8`))}catch{return}}function Dt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Ot(e){let t=h(Dt(e));return t!==`bun`&&t!==`bun.exe`}function kt(e){try{return re(e)}catch{return n.execPath}}async function At(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 jt(e,r,i)||{isOverride:!1,registry:he,source:`fallback`}}async function jt(e,t,n){if(e===`bun`){let e=Mt(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Nt(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=Mt(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Ft(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function Mt(e,t){for(let n of t){let t=C(e[n]);if(t)return t}}async function Nt(e,t){let n=Rt(t),i=t.XDG_CONFIG_HOME,a=Lt(e,`bunfig.toml`),o=[_(n,`.bunfig.toml`),i?_(i,`.bunfig.toml`):void 0];if(a){let e=await Pt(a);if(e)return e}for(let e of o){if(!e||!r(e))continue;let t=await Pt(e);if(t)return t}}async function Pt(e){try{return zt(await l(e,`utf8`))}catch{return}}async function Ft(e,t){let n=Rt(t),i=Lt(e,`.npmrc`),a=_(n,`.npmrc`);if(i){let e=await It(i);if(e)return e}if(r(a))return It(a)}async function It(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 Lt(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 Rt(e){return e.HOME||e.USERPROFILE||ee()}function zt(e){let t=Bt(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(Bt(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Bt(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function Vt(e){let t=await E();if(e.installSource===`binary`)try{let t=await ht(e.updateChannel),n=vt(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:he});if(e.installSource===`bun`||e.installSource===`npm`){let i=await At(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await V(A,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:qt(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function J(e){let t=e?.facts??await St({updateChannel:e?.updateChannel}),n=e?.target??await Vt(t),r=n.targetVersion?z(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Gt(t,n,r),target:n,updateAvailable:r}}function Ht(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 Ut(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await Kt(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 Wt(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:qt(e.packageRoot)},r=e.latestVersion?z(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Gt(t,n,r),target:n,updateAvailable:r}}function Gt(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Kt(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 qt(e){if(e)return[n.execPath,_(e,`dist`,`cli.mjs`),`--version`]}async function Jt(e,t,r,i){let a;try{a=await fetch(e)}catch(t){return X(`network`,`Failed to download ${e}.`,t)}if(!a.ok)return X(`network`,`Failed to download ${e}: HTTP ${a.status}.`);let s=await c(_(g(t),`.quantex-upgrade-`)),l=_(s,h(t)),u=`${t}.bak`,p=!1;try{let c=ie.from(await a.arrayBuffer()),h=await Yt(t),g=tn(c);if(g!==nn(r))return X(`checksum`,`Checksum mismatch for ${e}. Expected ${nn(r)}, got ${g}.`);if(await m(l,c),n.platform===`win32`)return Xt(l,t,u,s,i);await o(l,h),await f(u,{force:!0}),await d(t,u),p=!0,await d(l,t);let _=await en(t,i);return _.success?(p=!1,await f(u,{force:!0}),{success:!0}):(await $t(u,t),p=!1,_)}catch(e){if(p){try{await $t(u,t)}catch{}p=!1}return X(Qt(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await f(s,{recursive:!0,force:!0})}}async function Yt(e){try{return(await p(e)).mode&511}catch{return 493}}function Xt(e,t,r,i,a){try{return P([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Zt(e,t,r,i,n.pid,a)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return X(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function Zt(e,t,n,r,i,a){let o=Y(e),s=Y(t),c=Y(n),l=Y(r),u=Y(a??``);return[`$pidToWait = ${i}`,`$tempPath = '${o}'`,`$targetPath = '${s}'`,`$backupPath = '${c}'`,`$tempDir = '${l}'`,`$expectedVersion = '${u}'`,`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`,` }`,`}`,`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 Qt(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 $t(e,t){await f(t,{force:!0}),await d(e,t)}async function en(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 tn(t){return e(`sha256`).update(t).digest(`hex`)}function nn(e){return e.trim().toLowerCase()}const rn={source:`binary`,canHandle:e=>an(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):pt(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 Jt(t.downloadUrl,e.facts.executablePath,t.checksum,e.target.targetVersion??`latest`);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 an(e){return`facts`in e?e.facts.installSource:e.installSource}async function Z(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 on(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 sn(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 cn(e){try{return await N(M([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function ln(e){try{let{exitCode:t,stdout:n}=await F(P([`bun`,`pm`,`-g`,`ls`],{stdio:mn()}));return t===0?un(n,e):void 0}catch{return}}function un(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?dn(t):!1}async function dn(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await fn();if(!n)return!0;let r=pn(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await N(M([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function fn(){try{let{exitCode:e,stdout:t}=await F(P([`bun`,`pm`,`-g`,`untrusted`],{stdio:mn()}));return e===0?t:void 0}catch{return}}function pn(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 mn(){return[`ignore`,`pipe`,`ignore`]}const hn={source:`bun`,canHandle:e=>gn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${A}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await Z(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 gn(e){return`facts`in e?e.facts.installSource:e.installSource}async function _n(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 vn(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 yn(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 bn(e){try{return await N(M([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function xn(e){try{let{exitCode:t,stdout:n}=await F(P([`npm`,`list`,`-g`,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?Sn(n,e):void 0}catch{return}}function Sn(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const Cn={source:`npm`,canHandle:e=>wn(e)===`npm`,getRecoveryHint:e=>`npm install -g ${A}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await _n(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 wn(e){return`facts`in e?e.facts.installSource:e.installSource}const Tn={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}}},En=[hn,Cn,rn,Tn];function $(e){return En.find(t=>t.canHandle(e))??Tn}function Dn(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function On(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Dn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function kn(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 An(e){return Ht(await J({updateChannel:e?.updateChannel}))}async function jn(e){let t=await Nn(e),n=await Ne();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return Ut(t,await $(t).upgrade(t))}finally{await n()}}function Mn(e,t=n.execPath){return On(e,t)}async function Nn(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}}):Wt(e):J()}function Pn(e){return Rn({...e,error:null,ok:!0})}function Fn(e){return Rn({...e,ok:!1})}function In(e,t,n={}){let r=b();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?Bn({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Ln(e,t={}){let n=b();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return Bn(e)}function Rn(e){let t=b();return{action:e.action,data:e.data,error:e.error??null,exitCode:e.exitCode,meta:{fetchedAt:t.freshness?.fetchedAt,mode:t.outputMode,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:q()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function zn(e){let t=b();return{action:e.action,data:e.data,meta:{fetchedAt:t.freshness?.fetchedAt,mode:`ndjson`,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:q()},target:e.target,type:e.type}}function Bn(e){let t=zn(e);return console.log(JSON.stringify(t)),t}const{createColors:Vn,isColorSupported:Hn}=ae;function Un(){let e=b().colorMode??`auto`;return Vn(e===`always`?!0:e===`never`?!1:Hn)}const Wn=new Proxy({},{get(e,t){let n=Un(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{E as $,H as A,V as B,Ct as C,pt as D,G as E,at as F,M as G,z as H,ot as I,Se as J,N as K,Je as L,rt as M,et as N,tt as O,nt as P,ve as Q,Ye as R,J as S,q as T,F as U,Xe as V,P as W,w as X,Me as Y,T as Z,Z as _,In as a,ce as at,sn as b,jn as c,xn as d,ye as et,_n as f,ln as g,yn as h,Ln as i,b as it,U as j,it as k,On as l,vn as m,Fn as n,C as nt,Mn as o,x as ot,bn as p,A as q,Pn as r,ue as rt,An as s,se as st,Wn as t,_e as tt,kn as u,cn as v,K as w,Ht as x,on as y,B as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-TfkZ40FQ.mjs";export{e as commandsCommand};
|
package/dist/config-BviiWqlK.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{$ as e,Q as t,a as n,et as r,n as i,nt as a,r as o,t as s,tt as c}from"./color-BgHjt9pg.mjs";async function l(s,l,d){if(!s)return n(o({action:`config`,data:{action:`list`,config:await e()},target:{kind:`config`}}),u);switch(s){case`get`:{if(!l)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),u);let t=(await e())[l];return n(o({action:`config`,data:{action:`get`,key:l,value:typeof t==`number`||typeof t==`string`?t:void 0},target:{kind:`config`,name:l}}),u)}case`set`:{if(!l||d===void 0)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),u);if(l===`defaultPackageManager`&&d!==`bun`&&d!==`npm`)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun or npm`},target:{kind:`config`,name:l}}),u);if(l===`npmBunUpdateStrategy`&&!t(d))return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:l}}),u);if(l===`selfUpdateChannel`&&d!==`stable`&&d!==`beta`)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:l}}),u);if(l===`selfUpdateRegistry`&&!a(d))return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:l}}),u);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(l)){let e=Number.parseInt(d,10);if(!Number.isInteger(e)||e<=0)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${l} must be a positive integer`},target:{kind:`config`,name:l}}),u);d=`${e}`}let s={};try{s=await e()}catch{}return s[l]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(l)?Number.parseInt(d,10):l===`selfUpdateRegistry`?a(d):d,await r(s),n(o({action:`config`,data:{action:`set`,key:l,value:s[l]},target:{kind:`config`,name:l}}),u)}case`reset`:return await r(c),n(o({action:`config`,data:{action:`reset`,config:c},target:{kind:`config`}}),u);default:return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:s},message:`Unknown action: ${s}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),u)}}function u(e){if(e.error){console.log(s.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(s.bold(`
|
|
2
|
-
Current Configuration:
|
|
3
|
-
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?s.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(s.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(s.green(`Configuration reset to defaults.`));break}}export{l as configCommand};
|
package/dist/detect-Q1nnDcca.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as e,W as t}from"./color-BgHjt9pg.mjs";import{toJSONSchema as n,z as r}from"zod";import i from"node:process";var a=[{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:`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:`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:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,packages:{npm:`@openai/codex`},binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`},{packageName:`codex`,type:`brew`}],linux:[{type:`bun`},{type:`npm`},{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:`deepseek`,lookupAliases:[`deepseek-tui`],displayName:`DeepSeek TUI`,homepage:`https://github.com/Hmbown/DeepSeek-TUI`,packages:{cargo:`deepseek-tui-cli`,npm:`deepseek-tui`},binaryName:`deepseek`,selfUpdate:{command:[`deepseek`,`update`]},versionProbe:{command:[`deepseek`,`--version`]},platforms:{windows:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],macos:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],linux:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}]}},{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:`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:`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:`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:`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:[{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,type:`script`},{type:`cargo`}],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`}]}}];const o=r.string().min(1),s=r.array(o).min(1);r.enum([`windows`,`macos`,`linux`]);const c=r.enum([`bun`,`npm`,`brew`,`cargo`,`pip`,`uv`,`winget`]),l=r.enum([`package`,`cask`,`id`]),u={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(),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`}),g=r.object({command:s,fallbackCommands:r.array(s).min(1).optional(),versionAfter:r.enum([`same-process`,`respawn`]).optional()}).strict(),_=r.object({command:s.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),v=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`}),y=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:v,selfUpdate:g.optional(),versionProbe:_.optional()}).strict(),b=r.array(y).min(1),x={...n(b),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},S={},C=b.parse(a).map(D),w=new Map(C.map(e=>[e.name,e]));function T(){return C}function E(e){let t=w.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function D(e){let t=S[e.name],n=O(e.versionProbe,t);return{...e,versionProbe:n}}function O(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}const k=T();function A(){return k}function j(e){return k.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1))}function M(e){return j(e)}function N(){switch(i.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function P(n){try{let{exitCode:r}=await e(t([n,`--version`]));return r===0}catch{return!1}}async function F(){return P(`bun`)}async function I(){return P(`npm`)}async function L(){return P(`brew`)}async function R(){return P(`cargo`)}async function z(){return P(`winget`)}async function B(){return await P(`pip`)||await P(`pip3`)?!0:H()}async function V(){return P(`uv`)}async function H(){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 U(n){try{let{exitCode:r}=await e(t([i.platform===`win32`?`where`:`which`,n]));return r===0}catch{return!1}}export{b as _,R as a,V as c,M as d,A as f,x as g,y as h,F as i,z as l,T as m,U as n,I as o,E as p,L as r,B as s,N as t,j as u};
|
package/dist/doctor-C_dl2rTA.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{t as n}from"./agents-ZNosvpri.mjs";import{a as r,c as i,i as a,l as o,o as s,r as c,s as l}from"./detect-Q1nnDcca.mjs";import{H as u,a as d,q as f,r as p,s as m,t as h,u as g}from"./color-BgHjt9pg.mjs";async function _(){let f=await a(),h=await s(),_=await c(),b=await r(),x=await l(),S=await i(),C=await o(),w=await m(),T=w.latestVersion?u(w.latestVersion,w.currentVersion):!1,E=await n(),D=E.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})),O=[],k=`docs/runbooks/quantex-troubleshooting.md`,A=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!f&&!h&&!_&&!b&&!x&&!S&&!C&&O.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:k,message:`No managed installer found. Install bun, npm, brew, cargo, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(w.installSource===`bun`&&!f||w.installSource===`npm`&&!h)&&O.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:A,message:`Quantex CLI is tracked as a ${w.installSource} install, but ${w.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:y(w.installSource,w.updateChannel)}),w.canAutoUpdate||O.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:A,message:`Quantex CLI cannot auto-update from install source "${w.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:[]}),T&&w.recommendedUpgradeCommand){let e=g(w);O.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:A,message:e?`Quantex CLI ${w.currentVersion} is behind ${w.latestVersion}. Run ${w.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${w.currentVersion} is behind ${w.latestVersion}. Run ${w.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[w.recommendedUpgradeCommand]})}for(let n of E.filter(e=>e.inPath)){if(n.installedState||O.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:k,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);O.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:k,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 d(p({action:`doctor`,data:{agents:D,issues:O,installers:{brew:_,bun:f,cargo:b,npm:h,pip:x,uv:S,winget:C},self:{canAutoUpdate:w.canAutoUpdate,currentVersion:w.currentVersion,installSource:w.installSource,latestVersion:w.latestVersion,outdated:!!T,recoveryHint:T?g(w):void 0}},target:{kind:`system`,name:`doctor`}}),v)}function v(e){if(e.data){if(console.log(h.bold(`
|
|
2
|
-
Quantex CLI Environment Check
|
|
3
|
-
`)),console.log(h.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?h.green(`available`):h.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?h.green(`available`):h.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?h.green(`available`):h.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?h.green(`available`):h.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?h.green(`available`):h.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?h.green(`available`):h.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?h.green(`available`):h.red(`not found`)}`),console.log(`\n${h.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?h.green(`supported`):h.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?h.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${h.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(h.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?h.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${h.bold(`Issues:`)}`),e.data.issues.length===0)console.log(h.green(` No issues found.`));else for(let t of e.data.issues)console.log(h.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(h.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function y(e,t){let n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${f}@${n}`]:e===`npm`?[`npm install -g ${f}@${n}`]:[]}export{_ as doctorCommand};
|
package/dist/ensure-C6muP4LG.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./ensure-Bsodatwu.mjs";export{e as ensureCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./inspect-DOELzVla.mjs";export{e as inspectCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./resolve-DD2lh-Rl.mjs";export{e as resolveCommand};
|
package/dist/schema-CH18r4wk.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./schema-Dh6SqSrc.mjs";export{e as schemaCommand};
|
package/dist/schema-Dh6SqSrc.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t,r as n,t as r}from"./color-BgHjt9pg.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,npm:o,pip:o,uv:o,winget:o},c=[`brew`,`bun`,`cargo`,`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`},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
|
-
Quantex Schemas
|
|
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};
|
package/dist/update-Gat4pKeS.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,g as t,i as n,t as r,x as i}from"./agents-ZNosvpri.mjs";function a(e,n={}){let r={bun:[],npm:[],brew:[],cargo:[],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.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`,`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,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,packageInstallArgs:a.packageInstallArgs,packageTargetKind:a.packageTargetKind}}export{o as a,a as i,u as n,d as r,l as t};
|