quantex-cli 0.16.2 → 0.16.4
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 +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/agents-DXy0AhIo.mjs +1 -0
- package/dist/{capabilities-BgXESTNt.mjs → capabilities-CdynL7Hm.mjs} +1 -1
- package/dist/capabilities-DYZdMazb.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/color-DRI-dpR6.mjs +6 -0
- package/dist/commands-CturC2Sk.mjs +1 -0
- package/dist/{commands-B4G7NN41.mjs → commands-z9M8f1Zs.mjs} +1 -1
- package/dist/config-DfUsejjw.mjs +3 -0
- package/dist/{detect-BSNQHedx.mjs → detect-C_D5HCeU.mjs} +1 -1
- package/dist/{doctor-BuwFji7U.mjs → doctor-IKQRu9cS.mjs} +2 -2
- package/dist/ensure-C-moRnzt.mjs +1 -0
- package/dist/ensure-CMkE7Jv4.mjs +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +2 -2
- package/dist/{info-BGpiD3zF.mjs → info-DEzMn7JP.mjs} +1 -1
- package/dist/inspect-D6PmqgBQ.mjs +1 -0
- package/dist/{inspect-Cmx0JU00.mjs → inspect-TD6GPj1B.mjs} +1 -1
- package/dist/install-BjdRszPW.mjs +1 -0
- package/dist/{list-Cq4kZyUc.mjs → list-BvAoyYFD.mjs} +1 -1
- package/dist/resolve-CCyX4SL4.mjs +1 -0
- package/dist/{resolve-C-9rOJ9y.mjs → resolve-D9Mkw6V5.mjs} +1 -1
- package/dist/schema-BO1J8SFQ.mjs +1 -0
- package/dist/{schema-CE0tCcc-.mjs → schema-DGY3putD.mjs} +1 -1
- package/dist/{uninstall-CfttwSI7.mjs → uninstall-g_VQlZl0.mjs} +1 -1
- package/dist/{update-DQmxZLY1.mjs → update-BLrGS8NU.mjs} +1 -1
- package/dist/{update-Cryrqy3q.mjs → update-_fHpaIBR.mjs} +1 -1
- package/dist/{upgrade-hk8UNwNG.mjs → upgrade-BMMlNseC.mjs} +1 -1
- package/dist/{user-output-CDr82Dne.mjs → user-output-CypcHlGw.mjs} +1 -1
- package/package.json +1 -1
- package/dist/agents-BNar1Rv6.mjs +0 -1
- package/dist/capabilities-BCxdKcZi.mjs +0 -1
- package/dist/color-J21Z3cee.mjs +0 -5
- package/dist/commands-KC3R23TM.mjs +0 -1
- package/dist/config-CAQ8zo_E.mjs +0 -3
- package/dist/ensure-CY2eJqHu.mjs +0 -1
- package/dist/ensure-tkYiW_-z.mjs +0 -1
- package/dist/inspect-8BxjdZLY.mjs +0 -1
- package/dist/install-Bq381S6o.mjs +0 -1
- package/dist/resolve-BSn0x1g5.mjs +0 -1
- package/dist/schema-DxyRgGtB.mjs +0 -1
package/README.md
CHANGED
|
@@ -185,7 +185,7 @@ Note: `qtx upgrade` follows the registry actually used by the current Bun/npm se
|
|
|
185
185
|
| Gemini CLI | `qtx gemini` | Google's open-source AI coding assistant CLI |
|
|
186
186
|
| GitHub Copilot CLI | `qtx copilot` | GitHub Copilot command-line tool |
|
|
187
187
|
| Goose | `qtx goose` | Block's open-source extensible AI agent CLI |
|
|
188
|
-
|
|
|
188
|
+
| JCode | `qtx jcode` | High-performance coding agent harness for multi-session workflows |
|
|
189
189
|
| Junie CLI | `qtx junie` | JetBrains' AI coding agent CLI |
|
|
190
190
|
| Kilo CLI | `qtx kilo` | Kilo's official AI coding assistant CLI |
|
|
191
191
|
| Kimi Code | `qtx kimi` | Moonshot AI's coding assistant CLI |
|
package/README.zh-CN.md
CHANGED
|
@@ -185,7 +185,7 @@ qtx upgrade --channel beta
|
|
|
185
185
|
| Gemini CLI | `qtx gemini` | Google 开源 AI 编程助手 CLI |
|
|
186
186
|
| GitHub Copilot CLI | `qtx copilot` | GitHub Copilot 命令行工具 |
|
|
187
187
|
| Goose | `qtx goose` | Block 开源可扩展 AI Agent CLI |
|
|
188
|
-
|
|
|
188
|
+
| JCode | `qtx jcode` | 面向多 session 工作流的高性能编程 Agent harness |
|
|
189
189
|
| Junie CLI | `qtx junie` | JetBrains 官方 AI 编程 Agent CLI |
|
|
190
190
|
| Kilo CLI | `qtx kilo` | Kilo 官方 AI 编程助手 CLI |
|
|
191
191
|
| Kimi Code | `qtx kimi` | Moonshot AI 编程助手 CLI |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,t as s}from"./detect-C_D5HCeU.mjs";import{$ as c,D as ee,E as l,H as te,J as u,M as d,R as f,T as ne,W as p,_ as re,b as ie,d as ae,f as oe,g as se,h as ce,j as m,m as h,p as g,v as le,w as ue,y as de}from"./color-DRI-dpR6.mjs";import fe from"node:process";const pe={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`},npm:{canInstall:!0,canLookupLatestVersion:!0,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 pe[e]}function v(e){return _(e).lifecycle===`managed`}function y(e){return _(e).lifecycle}function b(e){return _(e).canUpdate}function me(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){return t.packageName||e.packages?.npm||void 0}function w(e){return e?b(e.installType):!1}function T(e,t){return w(t)||!!e.selfUpdate}function he(e){return!!e&&x(e.installType)}function ge(e){return e.length>0&&e.every(e=>x(e.type))}function _e(e){return v(e.type)?`${y(e.type)}/${e.type}${S(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function ve(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 ye(e,t){let n=I({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function E(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}`:``}return t.type===`brew`?t.packageName?t.packageTargetKind===`cask`?`brew install --cask ${t.packageName}`:`brew install ${t.packageName}`:``:t.type===`winget`?t.packageName?`winget install --id ${t.packageName} -e`:``:t.command??``}function D(e,t,n){if(t)return he(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!ge(n)))return e.packages.npm}function O(e,t){let n=k(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 k(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 A(e){if(e.installedState&&v(e.installedState.installType))return e.installedState.installType;for(let t of e.methods)if(v(t.type)&&b(t.type))return t.type}const j={strategy:`managed`,canHandle:e=>!!A(e),getManagedInstallerType:e=>A(e)},M={strategy:`self-update`,canHandle:e=>!w(e.installedState)&&!!e.agent.selfUpdate},N={strategy:`manual-hint`,canHandle:()=>!0},P=[j,M,N];function F(e){return P.find(t=>t.canHandle(e))??N}function I(e){return F(e).strategy}function be(e){return T(e.agent,e.installedState)}async function L(e){let t=s(),n=typeof e==`function`?e(t):e;try{return fe.platform===`win32`?await d(m([`powershell.exe`,`-Command`,n]))===0:await d(m([`sh`,`-c`,n]))===0}catch{return!1}}function xe(e){return e===`cask`?[`--cask`]:[]}async function R(e,t,n){try{return await d(m([`brew`,e,...xe(n),t]))===0}catch{return!1}}async function Se(e,t){return R(`install`,e,t)}async function z(e,t){return R(`upgrade`,e,t)}async function Ce(e){for(let t of e)if(!await z(t.packageName,t.packageTargetKind))return!1;return!0}async function we(e,t){return R(`uninstall`,e,t)}async function B(e,t){try{return await d(m([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function Te(e){return B(`install`,e)}async function V(e){return B(`upgrade`,e)}async function Ee(e){for(let t of e)if(!await V(t.packageName))return!1;return!0}async function De(e){return B(`uninstall`,e)}const Oe={brew:{type:`brew`,isAvailable:async()=>o(),install:async(e,t)=>Se(e,t),uninstall:async(e,t)=>we(e,t),update:async(e,t)=>z(e,t),updateMany:async e=>Ce(e)},bun:{type:`bun`,getInstalledVersion:async e=>se(e),isAvailable:async()=>n(),install:async e=>re(e),uninstall:async e=>le(e),update:async(e,t,n)=>de(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>ie(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},npm:{type:`npm`,getInstalledVersion:async e=>ae(e),isAvailable:async()=>e(),install:async e=>oe(e),uninstall:async e=>g(e),update:async(e,t,n)=>h(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>ce(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},winget:{type:`winget`,isAvailable:async()=>a(),install:async e=>Te(e),uninstall:async e=>De(e),update:async e=>V(e),updateMany:async e=>Ee(e.map(e=>({packageName:e.packageName})))}};function H(e){return Oe[e]}const U={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function ke(){return(await c()).defaultPackageManager}async function W(){return{npmBunUpdateStrategy:(await c()).npmBunUpdateStrategy}}async function G(e){let t=s(),n=e.platforms[t];if(!n)return[];let r=await ke();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function K(e,t,n,r,i){let a=H(e);return await a.isAvailable()?r===`install`?a.install(t,n):r===`update`?a.update(t,n,{npmBunUpdateStrategy:i}):a.uninstall(t,n):!1}async function q(e,t,n,r){if(v(t.type)){let i=C(e,t);return i?K(t.type,i,t.packageTargetKind,n,r):!1}return n===`update`&&!b(t.type)||!t.command?!1:L(t.command)}async function J(e,t,n){return v(e.installType)?e.packageName?K(e.installType,e.packageName,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:L(e.command)}async function Ae(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await L(e.join(` `)))return!0;return!1}async function Y(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 await p(n),n}async function je(e,t){return u(U,async()=>Y(e,t))}async function Me(e){return u(U,async()=>{let t=await G(e);for(let n of t)if(await q(e,n,`install`))return{success:!0,installedState:await Y(e,n)};return{success:!1}})}async function Ne(e,t){return u(U,async()=>{let{npmBunUpdateStrategy:n}=await W(),r=await G(e);if(t&&await J(t,`update`,n))return await p(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await q(e,t,`update`,n))return{success:!0,installedState:await Y(e,t)}}if(await Ae(e))return{success:!0};if(t){for(let t of r)if(await q(e,t,`update`,n))return{success:!0,installedState:await Y(e,t)}}return{success:!1}})}async function X(e,t){return u(U,async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}`,e])).values()],r=H(e);return await r.isAvailable()?r.updateMany(n,await W()):!1})}async function Pe(e,t,n){let r=H(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function Fe(e){return u(U,async()=>{let t=await f(e.name);if(!t)return!1;let n=await J(t,`uninstall`);return n&&await te(e.name),n})}async function Z(e){let[t,n,r]=await Promise.all([G(e),f(e.name),i(e.binaryName)]),[a,o,s]=await Promise.all([r?Ie(e,n):Promise.resolve(void 0),r?ue(e.binaryName):Promise.resolve(void 0),Le(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:a,latestVersion:s,binaryPath:o,resolvedBinaryPath:await ee(o),sourceLabel:ve(n),updateLabel:ye(e,n),lifecycle:n?y(n.installType):`unmanaged`}}async function Q(e){return Promise.all(e.map(Z))}async function Ie(e,t){if(t&&v(t.installType)&&t.packageName){let e=await Pe(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ne(e.binaryName,e.versionProbe)}async function Le(e,t,n){let r=D(e,t,n);if(r)return l(r)}function $(e){return t(e)}async function Re(e){let t=$(e);if(t)return{agent:t,inspection:await Z(t)}}async function ze(){return Q(r())}export{me as C,v as D,_ as E,x as S,y as T,T as _,Q as a,O as b,je as c,X as d,H as f,F as g,I as h,Z as i,Fe as l,be as m,$ as n,G as o,P as p,Re as r,Me as s,ze as t,Ne as u,E as v,b as w,C as x,_e as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,i as t,l as n,o as r,r as i,t as a}from"./detect-
|
|
1
|
+
import{a as e,i as t,l as n,o as r,r as i,t as a}from"./detect-C_D5HCeU.mjs";import{a as o,r as s,s as c,t as l}from"./color-DRI-dpR6.mjs";import u from"node:process";async function d(){let[l,d,m,h,g]=await Promise.all([t(),e(),i(),r(),c()]);return o(s({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:g.canAutoUpdate,timeout:!0},installers:{brew:{available:m,reason:m?void 0:f(`brew`)},bun:{available:l,reason:l?void 0:f(`bun`)},npm:{available:d,reason:d?void 0:f(`npm`)},winget:{available:h,reason:h?void 0:f(`winget`)}},outputModes:[`human`,`json`,`ndjson`],platform:{arch:u.arch,os:a()}},target:{kind:`system`,name:`capabilities`}}),p)}function f(e){return e===`winget`&&u.platform!==`win32`||e===`brew`&&u.platform===`win32`?`not-on-platform`:`not-found`}function p(e){e.data&&(console.log(l.bold(`
|
|
2
2
|
Quantex Capabilities
|
|
3
3
|
`)),console.log(` Platform: ${e.data.platform.os}/${e.data.platform.arch}`),console.log(` Output Modes: ${e.data.outputModes.join(`, `)}`),console.log(` Agents: ${e.data.agents.join(`, `)}`),console.log(l.bold(`
|
|
4
4
|
Installers:`)),console.log(` bun: ${m(e.data.installers.bun)}`),console.log(` npm: ${m(e.data.installers.npm)}`),console.log(` brew: ${m(e.data.installers.brew)}`),console.log(` winget: ${m(e.data.installers.winget)}`),console.log(l.bold(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./capabilities-CdynL7Hm.mjs";export{e as capabilitiesCommand};
|
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-BNar1Rv6.mjs";import{c as i}from"./detect-BSNQHedx.mjs";import{A as a,E as o,G as s,J as c,L as l,N as u,W as d,a as f,at as p,i as m,it as h,k as g,n as _,nt as v,r as ee,rt as y,s as te,t as b,tt as x}from"./color-J21Z3cee.mjs";import{a as S,i as C,n as w,o as T,r as E,t as ne}from"./user-output-CDr82Dne.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(c(),`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=v();if(t.outputMode!==`human`||t.quiet)return;let n=await te();if(!n.latestVersion||!o(n.latestVersion,n.currentVersion))return;let r=await l(),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(b.yellow(`Quantex CLI ${n.latestVersion} is available (current ${n.currentVersion}). ${a}`)),await d(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=v().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(()=>{x(),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(b.red(e.error.message))}async function W(e,t){let n=v();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=v();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=>{x(),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:a,inspection:o}=i,s=r.nonInteractive?!1:v().interactive,c=r.assumeYes??ne(),l=r.dryRun??w(),u=r.install??`prompt`;if(!o.inPath){if(u===`never`)return Y({agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},errorCode:`AGENT_NOT_INSTALLED`,errorMessage:`${a.displayName} is not installed.`,execution:{args:n,installGuidance:J(a,o.methods,n),installPolicy:u,installed:!1,interactive:s,launched:!1}}),D(`AGENT_NOT_INSTALLED`);if(u===`if-missing`||u===`always`){if(l?T(b.cyan(`Dry run: would install ${a.displayName}.`)):C(b.cyan(`Installing ${a.displayName}...`)),!(await X(a,l)).success)return E(b.red(`Failed to install ${a.displayName}.`)),1}else if(s){if(!(c||l?{install:!0}:await oe({type:`confirm`,name:`install`,message:`${a.displayName} is not installed. Would you like to install it?`,initial:!0})).install)return S(b.yellow(`Installation cancelled.`)),1;if(l?T(b.cyan(`Dry run: would install ${a.displayName}.`)):C(b.cyan(`Installing ${a.displayName}...`)),!(await X(a,l)).success)return E(b.red(`Failed to install ${a.displayName}.`)),1}else return Y({agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},errorCode:`INTERACTION_REQUIRED`,errorMessage:`${a.displayName} is not installed and interactive installation is disabled.`,execution:{args:n,installGuidance:J(a,o.methods,n),installPolicy:u,installed:!1,interactive:s,launched:!1}}),D(`INTERACTION_REQUIRED`)}if(l)return se({agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},execution:{args:n,installPolicy:u,installed:!0,interactive:s,launched:!1},message:`Dry run: would run ${[a.binaryName,...n].join(` `)}`}),0;try{return await ce(g([a.binaryName,...n]),a.displayName)}catch(e){return E(b.red(`Failed to launch ${a.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(v().outputMode===`human`){E(b.red(e.errorMessage));let t=e.execution.installGuidance;t&&(T(b.dim(`Try: ${t.suggestedEnsureCommand}`)),T(b.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(v().outputMode===`human`){T(b.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 s(t)?(E(b.red(t.message)),{success:!1}):(E(b.red(`Failed to install ${e.displayName}: ${t instanceof Error?t.message:String(t)}`)),{success:!1})}}async function ce(e,t){let{timeoutMs:n}=v(),r,i;try{let o=new Promise(e=>{let n=n=>{x(),E(b.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)}}),s=n===void 0?void 0:new Promise(e=>{i=setTimeout(()=>{x(),E(b.red(`${t} timed out after ${n}ms.`)),e(D(`TIMEOUT`))},n)});return await Promise.race([a(e),o,...s?[s]:[]])}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{p(h(t.optsWithGlobals()))}catch(e){console.log(b.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-DxyRgGtB.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-KC3R23TM.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-BCxdKcZi.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-8BxjdZLY.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-BSn0x1g5.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-Bq381S6o.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-tkYiW_-z.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(b.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-DQmxZLY1.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-CfttwSI7.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-Cq4kZyUc.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-BGpiD3zF.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-CAQ8zo_E.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-hk8UNwNG.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-BuwFji7U.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(b.red(Z.error)),O.exit(2)),Z&&i(Z.agentName)){try{p(h({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(b.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{};
|
|
2
|
+
import{r as e,s as t,v as n,y as r}from"./agents-DXy0AhIo.mjs";import{c as i}from"./detect-C_D5HCeU.mjs";import{F as a,K as o,M as s,O as c,X as l,a as u,at as d,i as f,it as p,j as m,n as h,ot as g,q as _,r as v,rt as y,s as b,st as x,t as S,z as ee}from"./color-DRI-dpR6.mjs";import{a as te,i as C,n as w,o as T,r as E,t as ne}from"./user-output-CypcHlGw.mjs";import{n as D,t as O}from"./errors-DCtNasuC.mjs";import k from"node:process";import{mkdir as A,readFile as re,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(l(),`idempotency`)}function P(e){return j(N(),`${L(e)}.json`)}async function F(e){try{let t=JSON.parse(await re(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 A(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 b();if(!n.latestVersion||!c(n.latestVersion,n.currentVersion))return;let r=await ee(),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(S.yellow(`Quantex CLI ${n.latestVersion} is available (current ${n.currentVersion}). ${a}`)),await o(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(()=>{y(),f({action:e.action,data:{reason:`timeout`,timeoutMs:n},target:e.target,type:`cancelled`},{force:!0}),t(u(h({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(S.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 u(h({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 u(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=>{y(),f({action:e.action,data:{reason:`signal`,signal:n},target:e.target,type:`cancelled`},{force:!0}),t(u(h({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`);k.once(`SIGINT`,i),k.once(`SIGTERM`,a),n=()=>{k.off(`SIGINT`,i),k.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}}),O(`AGENT_NOT_FOUND`);let{agent:a,inspection:o}=i,s=r.nonInteractive?!1:p().interactive,c=r.assumeYes??ne(),l=r.dryRun??w(),u=r.install??`prompt`;if(!o.inPath){if(u===`never`)return Y({agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},errorCode:`AGENT_NOT_INSTALLED`,errorMessage:`${a.displayName} is not installed.`,execution:{args:n,installGuidance:J(a,o.methods,n),installPolicy:u,installed:!1,interactive:s,launched:!1}}),O(`AGENT_NOT_INSTALLED`);if(u===`if-missing`||u===`always`){if(l?T(S.cyan(`Dry run: would install ${a.displayName}.`)):C(S.cyan(`Installing ${a.displayName}...`)),!(await X(a,l)).success)return E(S.red(`Failed to install ${a.displayName}.`)),1}else if(s){if(!(c||l?{install:!0}:await oe({type:`confirm`,name:`install`,message:`${a.displayName} is not installed. Would you like to install it?`,initial:!0})).install)return te(S.yellow(`Installation cancelled.`)),1;if(l?T(S.cyan(`Dry run: would install ${a.displayName}.`)):C(S.cyan(`Installing ${a.displayName}...`)),!(await X(a,l)).success)return E(S.red(`Failed to install ${a.displayName}.`)),1}else return Y({agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},errorCode:`INTERACTION_REQUIRED`,errorMessage:`${a.displayName} is not installed and interactive installation is disabled.`,execution:{args:n,installGuidance:J(a,o.methods,n),installPolicy:u,installed:!1,interactive:s,launched:!1}}),O(`INTERACTION_REQUIRED`)}if(l)return se({agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},execution:{args:n,installPolicy:u,installed:!0,interactive:s,launched:!1},message:`Dry run: would run ${[a.binaryName,...n].join(` `)}`}),0;try{return await ce(m([a.binaryName,...n]),a.displayName)}catch(e){return E(S.red(`Failed to launch ${a.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(S.red(e.errorMessage));let t=e.execution.installGuidance;t&&(T(S.dim(`Try: ${t.suggestedEnsureCommand}`)),T(S.dim(`Or: ${t.suggestedExecCommand}`)));return}u(h({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(S.cyan(e.message));return}u(v({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 _(t)?(E(S.red(t.message)),{success:!1}):(E(S.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=>{y(),E(S.red(`${t} was cancelled by ${n}.`)),e(O(`CANCELLED`))},i=()=>n(`SIGINT`),a=()=>n(`SIGTERM`);k.once(`SIGINT`,i),k.once(`SIGTERM`,a),r=()=>{k.off(`SIGINT`,i),k.off(`SIGTERM`,a)}}),o=n===void 0?void 0:new Promise(e=>{i=setTimeout(()=>{y(),E(S.red(`${t} timed out after ${n}ms.`)),e(O(`TIMEOUT`))},n)});return await Promise.race([s(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(a()),M.hook(`preAction`,(e,t)=>{try{x(g(t.optsWithGlobals()))}catch(e){console.log(S.red(e instanceof Error?e.message:String(e))),k.exit(2)}}),M.hook(`postAction`,()=>{d()}),M.command(`schema`).argument(`[command]`,`Optional command name`).description(`查看结构化输出 schema`).action(async e=>{let{schemaCommand:t}=await import(`./schema-BO1J8SFQ.mjs`);k.exitCode=await $({action:`schema`,run:()=>t(e),target:{kind:`system`,name:`schema`}})}),M.command(`commands`).description(`查看命令目录与稳定能力`).action(async()=>{let{commandsCommand:e}=await import(`./commands-CturC2Sk.mjs`);k.exitCode=await $({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})}),M.command(`capabilities`).description(`查看当前环境与 surface 能力`).action(async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-DYZdMazb.mjs`);k.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-D6PmqgBQ.mjs`);k.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-CCyX4SL4.mjs`);k.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-BjdRszPW.mjs`);k.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-C-moRnzt.mjs`);k.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(S.red(`Unknown install policy: ${i}`)),k.exitCode=2;return}let a=ue(r);k.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-BLrGS8NU.mjs`);k.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-g_VQlZl0.mjs`);k.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-BvAoyYFD.mjs`);k.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-DEzMn7JP.mjs`);k.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-DfUsejjw.mjs`);k.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-BMMlNseC.mjs`);k.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-IKQRu9cS.mjs`);k.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(k.argv.slice(2),le);if(Z?.error&&(console.log(S.red(Z.error)),k.exit(2)),Z&&i(Z.agentName)){try{x(g({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(S.red(e instanceof Error?e.message:String(e))),k.exit(2)}try{let e=await q(Z.agentName,Z.agentArgs,{assumeYes:Z.yes,dryRun:Z.dryRun,nonInteractive:Z.nonInteractive});k.exit(e)}finally{d()}}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=k.stdin.isTTY===!1||k.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 D(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{chmod as r,mkdir as i,mkdtemp as a,readFile as o,realpath as s,rename as c,rm as l,stat as u,writeFile as d}from"node:fs/promises";import{basename as f,dirname as p,join as m}from"node:path";import{fileURLToPath as h}from"node:url";import{homedir as g}from"node:os";import{existsSync as _,mkdirSync as ee,writeFileSync as te}from"node:fs";import{spawn as ne}from"node:child_process";import{text as re}from"node:stream/consumers";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 m(n.env.HOME||n.env.USERPROFILE||g(),`.quantex`)}function C(){return m(S(),`config.json`)}async function w(){let e={...ye,...await Se()};return{...e,defaultPackageManager:e.defaultPackageManager===`npm`?`npm`:`bun`,networkRetries:T(e.networkRetries,2),networkTimeoutMs:T(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:T(e.versionCacheTtlHours,6)}}function be(e){return e===`latest-major`||e===`respect-semver`}async function xe(e){await i(S(),{recursive:!0}),await d(C(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Se(){try{let e=await o(C(),`utf8`),t=JSON.parse(e);return Ce(t)?t:{}}catch{return{}}}function T(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)}const E=`quantex-cli`,D=`https://github.com/Drswith/quantex-cli`,we=`0.16.4`;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 k(e){return e instanceof O}function Te(e){let t=e.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),n=t.length>0?t:[`default`],r=n.slice(0,-1),i=`${n.at(-1)}.lock`;return m(S(),`locks`,...r,i)}async function A(e){let t=Te(e.scope);return await i(p(t),{recursive:!0}),await Ee(e.resource,t),async()=>{await l(t,{force:!0,recursive:!0})}}async function Ee(e,t){try{ee(t,{recursive:!1}),j(t);return}catch(e){if(!Ae(e))throw e}if(!await De(t))throw new O(e,t);try{ee(t,{recursive:!1}),j(t)}catch(n){throw Ae(n)?new O(e,t):n}}function j(e){te(m(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function De(e){let t=await Oe(e);return t&&ke(t.pid)?!1:(await l(e,{force:!0,recursive:!0}),!0)}async function Oe(e){try{let t=JSON.parse(await o(m(e,`owner.json`),`utf8`));return typeof t.pid==`number`&&Number.isInteger(t.pid)&&t.pid>0?{pid:t.pid}:void 0}catch{return}}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`}async function je(e,t){let n=await A(e);try{return await t()}finally{await n()}}const Me={installedAgents:{},self:{}};function M(){return m(S(),`state.json`)}async function N(){return Be()}async function Ne(e){let t=await A({resource:`state`,scope:[`state`]});try{await We(e)}finally{await t()}}async function Pe(e){return(await N()).installedAgents[e]}async function Fe(e){await P(t=>{t.installedAgents[e.agentName]=e})}async function Ie(e){await P(t=>{delete t.installedAgents[e]})}async function Le(){return(await N()).self}async function Re(e){await P(t=>{t.self.installSource=e})}async function ze(e,t){await P(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Be(){try{let e=JSON.parse(await o(M(),`utf8`)),t=Ve(e.self);return{installedAgents:e.installedAgents??{},self:t}}catch{return{...Me}}}function Ve(e){if(!Ue(e))return{};let t={...e};return He(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 He(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function Ue(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function We(e){await i(S(),{recursive:!0}),await d(M(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function P(e){let t=await A({resource:`state`,scope:[`state`]});try{let t=await Be();await e(t),await We(t)}finally{await t()}}async function F(e,t){let n=await Ge(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function Ge(e,t,n=`text`){let r=await w(),i=r.versionCacheTtlHours*60*60*1e3,a=b().cacheMode,o=a===`no-cache`?{entries:{}}:await qe(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return I(s,i),s.body;let l=await Ke(e,{headers:a!==`no-cache`&&s?.etag?{"If-None-Match":s.etag}:void 0,retries:r.networkRetries,timeoutMs:r.networkTimeoutMs});if(!l)return s&&I(s,i),s?.body;if(l.status===304&&s)return o.entries[t]={...s,expiresAt:c+i,fetchedAt:c},a!==`no-cache`&&await Je(o),Xe(c,c+i),s.body;if(!l.ok)return s&&I(s,i),s?.body;let u=await l.text();if(n===`json`)try{JSON.parse(u)}catch{return s&&I(s,i),s?.body}let d={body:u,etag:l.headers.get(`etag`)??void 0,expiresAt:c+i,fetchedAt:c};return a!==`no-cache`&&(o.entries[t]=d,await Je(o)),Xe(c,c+i),u}async function Ke(e,t){for(let n=0;n<=t.retries;n++){let r=new AbortController,i=setTimeout(()=>r.abort(),t.timeoutMs);try{return await fetch(e,{headers:t.headers,signal:r.signal})}catch{if(n===t.retries)return}finally{clearTimeout(i)}}}async function qe(){try{return JSON.parse(await o(Ye(),`utf8`))}catch{return{entries:{}}}}async function Je(e){await i(m(S(),`cache`),{recursive:!0}),await d(Ye(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Ye(){return m(S(),`cache`,`versions.json`)}function I(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 Xe(e,t){pe({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}function Ze(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function L(e=n.execPath){if(f(Ze(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 Qe(e=n.execPath){let t=L(e);if(t)return`${D}/releases/latest/download/${t}`}function $e(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 et(e){let t=await F(await tt(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function tt(e){if(e===`stable`)return`${D}/releases/latest/download/manifest.json`;let t=(await nt(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 nt(e){let t=it();if(!t)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let n=await F(`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 rt(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=L(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function it(){return D.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const at=E,ot=`/node_modules/${at}`;async function st(e){let t=await ut(),r=n.execPath,i=t.foundPackageJson?R(t.packageRoot):R(``,r),a=await lt((await Le()).installSource,i),o=await w(),s=$e(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:ct(a),currentVersion:t.version||`0.16.4`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function ct(e){return e===`binary`||e===`bun`||e===`npm`}async function lt(e,t){return t!==`unknown`&&e!==t?(await Re(t),t):e??t}function R(e,t=n.execPath){let r=ft(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(ot)?`npm`:r?`source`:pt(t)?`binary`:`unknown`}async function ut(e=import.meta.url){let t=mt(e),n=p(t);for(;;){let e=m(n,`package.json`),t=await dt(e);if(t?.name===at)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.16.4`};let r=p(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:m(p(t),`package.json`),packageRoot:p(t),version:we}}function z(){return we}async function dt(e){try{return JSON.parse(await o(e,`utf8`))}catch{return}}function ft(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function pt(e){let t=f(ft(e));return t!==`bun`&&t!==`bun.exe`}function mt(e){try{return h(e)}catch{return n.execPath}}async function ht(){try{return await A({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(k(e))return;throw e}}function B(e,t={}){if(b().outputMode===`human`){let n=H(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:fe(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.resolve(),proc:n}}let n=H(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:fe(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.all([gt(n.stdout),gt(n.stderr)]).then(()=>void 0),proc:n}}async function V(e){try{let t=await e.proc.exited;return await e.outputDrained,t}finally{e.cleanup()}}function H(e,t={}){let n=yt();if(n)return bt(e,t,n);let[r,...i]=e;if(!r)throw Error(`spawnCommand requires a non-empty command array.`);let a=ne(r,i,{...t,shell:t.shell??vt(r)});return{get exitCode(){return a.exitCode},stderr:a.stderr,stdout:a.stdout,exited:_t(a),kill:a.kill.bind(a),unref:()=>a.unref()}}async function U(e){let[t,n,r]=await Promise.all([W(e.stdout),W(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function gt(e){if(!e)return;let t=await W(e);t&&n.stderr.write(t)}async function _t(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function W(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():re(e):``}function vt(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function yt(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function bt(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?.()}}const xt=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function St(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
2
|
+
`)[0],r=n.match(xt);return r?r[1]:n||void 0}function Ct(e,t){let n=Et(e),r=Et(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 Dt(n.prerelease,r.prerelease)}}function G(e,t){return Ct(e,t)===1}async function K(e,t){let n=t?.command??[e,`--version`];try{let{exitCode:e,stdout:r}=await U(H(n));return e===0?St(r,t?.parser):void 0}catch{return}}async function q(e,t=`latest`,n={}){try{let r=x(n.registry)??`https://registry.npmjs.org`;return(await F(ve(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function wt(e){try{let{exitCode:t,stdout:r}=await U(H([n.platform===`win32`?`where`:`which`,e]));return t===0?r.trim().split(`
|
|
3
|
+
`)[0]:void 0}catch{return}}async function Tt(e){if(e)try{return await s(e)}catch{return e}}function Et(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 Dt(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}async function Ot(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 kt(e,r,i)||{isOverride:!1,registry:_e,source:`fallback`}}async function kt(e,t,n){if(e===`bun`){let e=At(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await jt(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=At(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Nt(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function At(e,t){for(let n of t){let t=x(e[n]);if(t)return t}}async function jt(e,t){let n=It(t),r=t.XDG_CONFIG_HOME,i=Ft(e,`bunfig.toml`),a=[m(n,`.bunfig.toml`),r?m(r,`.bunfig.toml`):void 0];if(i){let e=await Mt(i);if(e)return e}for(let e of a){if(!e||!_(e))continue;let t=await Mt(e);if(t)return t}}async function Mt(e){try{return Lt(await o(e,`utf8`))}catch{return}}async function Nt(e,t){let n=It(t),r=Ft(e,`.npmrc`),i=m(n,`.npmrc`);if(r){let e=await Pt(r);if(e)return e}if(_(i))return Pt(i)}async function Pt(e){try{let t=(await o(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 Ft(e,t){let n=e;for(;;){let e=m(n,t);if(_(e))return e;let r=p(n);if(r===n)return;n=r}}function It(e){return e.HOME||e.USERPROFILE||g()}function Lt(e){let t=Rt(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(Rt(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Rt(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function zt(e){let t=await w();if(e.installSource===`binary`)try{let t=await et(e.updateChannel),n=rt(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 q(E,n,{registry:_e});if(e.installSource===`bun`||e.installSource===`npm`){let i=await Ot(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await q(E,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:Gt(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 zt(t),r=n.targetVersion?G(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Ut(t,n,r),target:n,updateAvailable:r}}function Bt(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 Vt(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await Wt(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 Ht(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:Gt(e.packageRoot)},r=e.latestVersion?G(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Ut(t,n,r),target:n,updateAvailable:r}}function Ut(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Wt(e){if(e.target.verificationCommand){let t=await K(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return K(e.facts.executablePath)}function Gt(e){if(e)return[n.execPath,m(e,`dist`,`cli.mjs`),`--version`]}async function Kt(e,t,i,o){let s;try{s=await fetch(e)}catch(t){return X(`network`,`Failed to download ${e}.`,t)}if(!s.ok)return X(`network`,`Failed to download ${e}: HTTP ${s.status}.`);let u=await a(m(p(t),`.quantex-upgrade-`)),h=m(u,f(t)),g=`${t}.bak`,_=!1;try{let a=ie.from(await s.arrayBuffer()),f=await qt(t),p=$t(a);if(p!==en(i))return X(`checksum`,`Checksum mismatch for ${e}. Expected ${en(i)}, got ${p}.`);if(await d(h,a),n.platform===`win32`)return Jt(h,t,g,u,o);await r(h,f),await l(g,{force:!0}),await c(t,g),_=!0,await c(h,t);let m=await Qt(t,o);return m.success?(await l(g,{force:!0}),_=!1,{success:!0}):(await Zt(g,t),_=!1,m)}catch(e){if(_){try{await Zt(g,t)}catch{}_=!1}return X(Xt(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await l(u,{recursive:!0,force:!0})}}async function qt(e){try{return(await u(e)).mode&511}catch{return 493}}function Jt(e,t,r,i,a){try{return H([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Yt(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 Yt(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 Xt(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 Zt(e,t){await l(t,{force:!0}),await c(e,t)}async function Qt(e,t){if(!t)return{success:!0};try{let{exitCode:n,stdout:r}=await U(H([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 $t(t){return e(`sha256`).update(t).digest(`hex`)}function en(e){return e.trim().toLowerCase()}const tn={source:`binary`,canHandle:e=>nn(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):Qe(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 Kt(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 nn(e){return`facts`in e?e.facts.installSource:e.installSource}async function rn(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 an(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 on(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 sn(e){try{return await V(B([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function cn(e){try{let{exitCode:t,stdout:n}=await U(H([`bun`,`pm`,`-g`,`ls`],{stdio:pn()}));return t===0?ln(n,e):void 0}catch{return}}function ln(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 V(B(e))===0?un(t):!1}async function un(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await dn();if(!n)return!0;let r=fn(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await V(B([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function dn(){try{let{exitCode:e,stdout:t}=await U(H([`bun`,`pm`,`-g`,`untrusted`],{stdio:pn()}));return e===0?t:void 0}catch{return}}function fn(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 pn(){return[`ignore`,`pipe`,`ignore`]}const mn={source:`bun`,canHandle:e=>hn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${E}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await rn(E,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${E} through Bun.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function hn(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 V(B([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function gn(e,t=`latest-major`,n=`latest`,r){try{let i=x(r);return await V(B(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...i?[`--registry`,i]:[]]:[`npm`,`update`,`-g`,e,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function _n(e,t=`latest-major`){if(e.length===0)return!0;try{return await V(B(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e]))===0}catch{return!1}}async function vn(e){try{return await V(B([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function yn(e){try{let{exitCode:t,stdout:n}=await U(H([`npm`,`list`,`-g`,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?bn(n,e):void 0}catch{return}}function bn(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const xn={source:`npm`,canHandle:e=>Sn(e)===`npm`,getRecoveryHint:e=>`npm install -g ${E}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await Q(E,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${E} through npm.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function Sn(e){return`facts`in e?e.facts.installSource:e.installSource}const Cn={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}}},wn=[mn,xn,tn,Cn];function $(e){return wn.find(t=>t.canHandle(e))??Cn}function Tn(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function En(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Tn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Dn(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 On(e){return Bt(await J({updateChannel:e?.updateChannel}))}async function kn(e){let t=await jn(e),n=await ht();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return Vt(t,await $(t).upgrade(t))}finally{await n()}}function An(e,t=n.execPath){return En(e,t)}async function jn(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}}):Ht(e):J()}function Mn(e){return In({...e,error:null,ok:!0})}function Nn(e){return In({...e,ok:!1})}function Pn(e,t,n={}){let r=b();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?Rn({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Fn(e,t={}){let n=b();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return Rn(e)}function In(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:z()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Ln(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:z()},target:e.target,type:e.type}}function Rn(e){let t=Ln(e);return console.log(JSON.stringify(t)),t}const{createColors:zn,isColorSupported:Bn}=ae;function Vn(){let e=b().colorMode??`auto`;return zn(e===`always`?!0:e===`never`?!1:Bn)}const Hn=new Proxy({},{get(e,t){let n=Vn(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{w as $,H as A,M as B,Ct as C,Tt as D,q as E,z as F,Re as G,Ie as H,L as I,je as J,ze as K,Qe as L,V as M,ct as N,G as O,R as P,be as Q,Pe as R,J as S,K as T,Ne as U,N as V,Fe as W,S as X,E as Y,C as Z,rn as _,Pn as a,ce as at,on as b,kn as c,yn as d,xe as et,Q as f,cn as g,_n as h,Fn as i,b as it,B as j,U as k,En as l,gn as m,Nn as n,x as nt,An as o,le as ot,vn as p,k as q,Mn as r,de as rt,On as s,se as st,Hn as t,ye as tt,Dn as u,sn as v,wt as w,Bt as x,an as y,Le as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./commands-z9M8f1Zs.mjs";export{e as commandsCommand};
|
|
@@ -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-DRI-dpR6.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,3 @@
|
|
|
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-DRI-dpR6.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,O as t}from"./color-J21Z3cee.mjs";import n from"node:process";function r(e){return{packageName:e,type:`bun`}}function i(e){return{packageName:e,type:`npm`}}function a(e,t){return{packageName:e,packageTargetKind:t,type:`brew`}}function o(e){return{packageName:e,packageTargetKind:`id`,type:`winget`}}function s(e){return{command:e,type:`script`}}function c(e){return{command:e,type:`binary`}}const l={name:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,packages:{npm:`@sourcegraph/amp`},binaryName:`amp`,selfUpdate:{command:[`amp`,`update`]},versionProbe:{command:[`amp`,`version`]},platforms:{windows:[r(),i()],macos:[r(),i()],linux:[r(),i()]}},u={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:[r(),i()],linux:[r(),i()]}},d={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:[s(`iwr -useb https://autohand.ai/install.ps1 | iex`)],macos:[s(`curl -fsSL https://autohand.ai/install.sh | bash`)],linux:[s(`curl -fsSL https://autohand.ai/install.sh | bash`)]}},f={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:[r(),i(),s(`irm https://claude.ai/install.ps1 | iex`),o(`Anthropic.ClaudeCode`)],macos:[r(),i(),s(`curl -fsSL https://claude.ai/install.sh | bash`),a(`claude-code`,`cask`)],linux:[r(),i(),s(`curl -fsSL https://claude.ai/install.sh | bash`),a(`claude-code`,`cask`)]}},p={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:[r(),i(),s(`irm https://www.codebuddy.cn/cli/install.ps1 | iex`)],macos:[r(),i(),s(`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`),a(`Tencent-CodeBuddy/tap/codebuddy-code`)],linux:[r(),i(),s(`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`),a(`Tencent-CodeBuddy/tap/codebuddy-code`)]}},m={name:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,packages:{npm:`@openai/codex`},binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[r(),i()],macos:[r(),i(),a(`codex`)],linux:[r(),i(),a(`codex`)]}},h={name:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,packages:{npm:`@github/copilot`},binaryName:`copilot`,platforms:{windows:[o(`GitHub.Copilot`)],macos:[r(),i(),s(`curl -fsSL https://gh.io/copilot-install | bash`),a(`copilot-cli`)],linux:[r(),i(),s(`curl -fsSL https://gh.io/copilot-install | bash`),a(`copilot-cli`)]}},g={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:[r(),i(),o(`charmbracelet.crush`)],macos:[r(),i(),a(`charmbracelet/tap/crush`)],linux:[r(),i(),a(`charmbracelet/tap/crush`)]}},_={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:[s(`irm 'https://cursor.com/install?win32=true' | iex`)],macos:[s(`curl https://cursor.com/install -fsS | bash`)],linux:[s(`curl https://cursor.com/install -fsS | bash`)]}},v={name:`deepseek`,lookupAliases:[`deepseek-tui`],displayName:`DeepSeek TUI`,homepage:`https://github.com/Hmbown/DeepSeek-TUI`,packages:{npm:`deepseek-tui`},binaryName:`deepseek`,selfUpdate:{command:[`deepseek`,`update`]},versionProbe:{command:[`deepseek`,`--version`]},platforms:{windows:[i()],macos:[i()],linux:[i()]}},y={name:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,binaryName:`devin`,selfUpdate:{command:[`devin`,`update`]},versionProbe:{command:[`devin`,`version`]},platforms:{windows:[s(`irm https://static.devin.ai/cli/setup.ps1 | iex`)],macos:[s(`curl -fsSL https://cli.devin.ai/install.sh | bash`)],linux:[s(`curl -fsSL https://cli.devin.ai/install.sh | bash`)]}},b={name:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,packages:{npm:`droid`},binaryName:`droid`,selfUpdate:{command:[`droid`,`update`]},platforms:{windows:[r(),i(),s(`irm https://app.factory.ai/cli/windows | iex`)],macos:[r(),i(),s(`curl -fsSL https://app.factory.ai/cli | sh`),a(`droid`,`cask`)],linux:[r(),i(),s(`curl -fsSL https://app.factory.ai/cli | sh`),a(`droid`,`cask`)]}},x={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:[r(),i(),s(`irm https://forgecode.dev/cli | iex`)],macos:[r(),i(),s(`curl -fsSL https://forgecode.dev/cli | sh`)],linux:[r(),i(),s(`curl -fsSL https://forgecode.dev/cli | sh`)]}},S={name:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,packages:{npm:`@google/gemini-cli`},binaryName:`gemini`,platforms:{windows:[r(),i()],macos:[r(),i(),a(`gemini-cli`)],linux:[r(),i(),a(`gemini-cli`)]}},C={name:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,binaryName:`goose`,selfUpdate:{command:[`goose`,`update`]},versionProbe:{command:[`goose`,`--version`]},platforms:{windows:[s(`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`),s(`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`)],macos:[s(`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`),a(`block-goose-cli`)],linux:[s(`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`),a(`block-goose-cli`)]}},w={name:`jcode`,displayName:`jcode CLI`,homepage:`https://github.com/1jehuang/jcode`,binaryName:`jcode`,versionProbe:{command:[`jcode`,`--version`]},platforms:{windows:[s(`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`)],macos:[a(`1jehuang/jcode/jcode`),s(`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`)],linux:[s(`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`)]}},T={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:[r(),i(),s(`iex (irm 'https://junie.jetbrains.com/install.ps1')`)],macos:[r(),i(),s(`curl -fsSL https://junie.jetbrains.com/install.sh | bash`),a(`jetbrains-junie/junie/junie`)],linux:[r(),i(),s(`curl -fsSL https://junie.jetbrains.com/install.sh | bash`),a(`jetbrains-junie/junie/junie`)]}},E={name:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,packages:{npm:`@kilocode/cli`},binaryName:`kilo`,selfUpdate:{command:[`kilo`,`upgrade`]},platforms:{windows:[r(),i()],macos:[r(),i()],linux:[r(),i()]}},D={name:`kimi`,lookupAliases:[`kimi-code`,`kimi-cli`],displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-cli/`,binaryName:`kimi`,selfUpdate:{command:[`uv`,`tool`,`upgrade`,`kimi-cli`,`--no-cache`]},versionProbe:{command:[`kimi`,`--version`]},platforms:{windows:[s(`irm https://code.kimi.com/install.ps1 | iex`)],macos:[s(`curl -LsSf https://code.kimi.com/install.sh | bash`)],linux:[s(`curl -LsSf https://code.kimi.com/install.sh | bash`)]}},O={name:`kiro`,lookupAliases:[`kiro-cli`],displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,binaryName:`kiro-cli`,versionProbe:{command:[`kiro-cli`,`--version`]},platforms:{windows:[s(`irm 'https://cli.kiro.dev/install.ps1' | iex`)],macos:[s(`curl -fsSL https://cli.kiro.dev/install | bash`)],linux:[s(`curl -fsSL https://cli.kiro.dev/install | bash`)]}},k={name:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,packages:{npm:`opencode-ai`},binaryName:`opencode`,selfUpdate:{command:[`opencode`,`upgrade`]},platforms:{windows:[r(),i()],macos:[r(),i(),s(`curl -fsSL https://opencode.ai/install | bash`),a(`anomalyco/tap/opencode`)],linux:[r(),i(),s(`curl -fsSL https://opencode.ai/install | bash`),a(`anomalyco/tap/opencode`)]}},A={name:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,binaryName:`openhands`,selfUpdate:{command:[`uv`,`tool`,`upgrade`,`openhands`,`--python`,`3.12`]},versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[c(`uv tool install openhands --python 3.12`),s(`curl -fsSL https://install.openhands.dev/install.sh | sh`)],linux:[c(`uv tool install openhands --python 3.12`),s(`curl -fsSL https://install.openhands.dev/install.sh | sh`)]}},j={name:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,packages:{npm:`@mariozechner/pi-coding-agent`},binaryName:`pi`,selfUpdate:{command:[`pi`,`update`]},platforms:{windows:[r(),i()],macos:[r(),i()],linux:[r(),i()]}},M={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:[r(),i()],macos:[r(),i(),s(`curl -fsSL https://qoder.com/install | bash`),a(`qoderai/qoder/qodercli`,`cask`)],linux:[r(),i(),s(`curl -fsSL https://qoder.com/install | bash`),a(`qoderai/qoder/qodercli`,`cask`)]}},N={name:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,packages:{npm:`@qwen-code/qwen-code`},binaryName:`qwen`,platforms:{windows:[s(`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`),r(),i()],macos:[s(`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`),r(),i(),a(`qwen-code`)],linux:[s(`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`),r(),i(),a(`qwen-code`)]}},P={name:`vibe`,lookupAliases:[`mistral-vibe`],displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,binaryName:`vibe`,versionProbe:{command:[`vibe`,`--version`]},platforms:{windows:[c(`uv tool install mistral-vibe`),c(`pip install mistral-vibe`)],macos:[s(`curl -LsSf https://mistral.ai/vibe/install.sh | bash`),c(`uv tool install mistral-vibe`),c(`pip install mistral-vibe`)],linux:[s(`curl -LsSf https://mistral.ai/vibe/install.sh | bash`),c(`uv tool install mistral-vibe`),c(`pip install mistral-vibe`)]}},F=[u,d,l,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,A,k,j,M,N,P];function I(){return F}function L(e){return F.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1))}function R(e){return L(e)}function z(){switch(n.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function B(n){try{let{exitCode:r}=await e(t([n,`--version`]));return r===0}catch{return!1}}async function V(){return B(`bun`)}async function H(){return B(`npm`)}async function U(){return B(`brew`)}async function W(){return B(`winget`)}async function G(r){try{let{exitCode:i}=await e(t([n.platform===`win32`?`where`:`which`,r]));return i===0}catch{return!1}}export{h as C,d as D,f as E,_ as S,p as T,w as _,H as a,y as b,R as c,M as d,j as f,T as g,E as h,V as i,I as l,k as m,G as n,W as o,A as p,U as r,L as s,z as t,P as u,S as v,m as w,v as x,b as y};
|
|
1
|
+
import{A as e,k as t}from"./color-DRI-dpR6.mjs";import n from"node:process";function r(e){return{packageName:e,type:`bun`}}function i(e){return{packageName:e,type:`npm`}}function a(e,t){return{packageName:e,packageTargetKind:t,type:`brew`}}function o(e){return{packageName:e,packageTargetKind:`id`,type:`winget`}}function s(e){return{command:e,type:`script`}}function c(e){return{command:e,type:`binary`}}const l={name:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,packages:{npm:`@sourcegraph/amp`},binaryName:`amp`,selfUpdate:{command:[`amp`,`update`]},versionProbe:{command:[`amp`,`version`]},platforms:{windows:[r(),i()],macos:[r(),i()],linux:[r(),i()]}},u={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:[r(),i()],linux:[r(),i()]}},d={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:[s(`iwr -useb https://autohand.ai/install.ps1 | iex`)],macos:[s(`curl -fsSL https://autohand.ai/install.sh | bash`)],linux:[s(`curl -fsSL https://autohand.ai/install.sh | bash`)]}},f={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:[r(),i(),s(`irm https://claude.ai/install.ps1 | iex`),o(`Anthropic.ClaudeCode`)],macos:[r(),i(),s(`curl -fsSL https://claude.ai/install.sh | bash`),a(`claude-code`,`cask`)],linux:[r(),i(),s(`curl -fsSL https://claude.ai/install.sh | bash`),a(`claude-code`,`cask`)]}},p={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:[r(),i(),s(`irm https://www.codebuddy.cn/cli/install.ps1 | iex`)],macos:[r(),i(),s(`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`),a(`Tencent-CodeBuddy/tap/codebuddy-code`)],linux:[r(),i(),s(`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`),a(`Tencent-CodeBuddy/tap/codebuddy-code`)]}},m={name:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,packages:{npm:`@openai/codex`},binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[r(),i()],macos:[r(),i(),a(`codex`)],linux:[r(),i(),a(`codex`)]}},h={name:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,packages:{npm:`@github/copilot`},binaryName:`copilot`,platforms:{windows:[o(`GitHub.Copilot`)],macos:[r(),i(),s(`curl -fsSL https://gh.io/copilot-install | bash`),a(`copilot-cli`)],linux:[r(),i(),s(`curl -fsSL https://gh.io/copilot-install | bash`),a(`copilot-cli`)]}},g={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:[r(),i(),o(`charmbracelet.crush`)],macos:[r(),i(),a(`charmbracelet/tap/crush`)],linux:[r(),i(),a(`charmbracelet/tap/crush`)]}},_={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:[s(`irm 'https://cursor.com/install?win32=true' | iex`)],macos:[s(`curl https://cursor.com/install -fsS | bash`)],linux:[s(`curl https://cursor.com/install -fsS | bash`)]}},v={name:`deepseek`,lookupAliases:[`deepseek-tui`],displayName:`DeepSeek TUI`,homepage:`https://github.com/Hmbown/DeepSeek-TUI`,packages:{npm:`deepseek-tui`},binaryName:`deepseek`,selfUpdate:{command:[`deepseek`,`update`]},versionProbe:{command:[`deepseek`,`--version`]},platforms:{windows:[i()],macos:[i()],linux:[i()]}},y={name:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,binaryName:`devin`,selfUpdate:{command:[`devin`,`update`]},versionProbe:{command:[`devin`,`version`]},platforms:{windows:[s(`irm https://static.devin.ai/cli/setup.ps1 | iex`)],macos:[s(`curl -fsSL https://cli.devin.ai/install.sh | bash`)],linux:[s(`curl -fsSL https://cli.devin.ai/install.sh | bash`)]}},b={name:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,packages:{npm:`droid`},binaryName:`droid`,selfUpdate:{command:[`droid`,`update`]},platforms:{windows:[r(),i(),s(`irm https://app.factory.ai/cli/windows | iex`)],macos:[r(),i(),s(`curl -fsSL https://app.factory.ai/cli | sh`),a(`droid`,`cask`)],linux:[r(),i(),s(`curl -fsSL https://app.factory.ai/cli | sh`),a(`droid`,`cask`)]}},x={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:[r(),i(),s(`irm https://forgecode.dev/cli | iex`)],macos:[r(),i(),s(`curl -fsSL https://forgecode.dev/cli | sh`)],linux:[r(),i(),s(`curl -fsSL https://forgecode.dev/cli | sh`)]}},S={name:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,packages:{npm:`@google/gemini-cli`},binaryName:`gemini`,platforms:{windows:[r(),i()],macos:[r(),i(),a(`gemini-cli`)],linux:[r(),i(),a(`gemini-cli`)]}},C={name:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,binaryName:`goose`,selfUpdate:{command:[`goose`,`update`]},versionProbe:{command:[`goose`,`--version`]},platforms:{windows:[s(`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`),s(`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`)],macos:[s(`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`),a(`block-goose-cli`)],linux:[s(`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`),a(`block-goose-cli`)]}},w={name:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,binaryName:`jcode`,versionProbe:{command:[`jcode`,`--version`]},platforms:{windows:[s(`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`)],macos:[a(`1jehuang/jcode/jcode`),s(`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`)],linux:[s(`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`)]}},T={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:[r(),i(),s(`iex (irm 'https://junie.jetbrains.com/install.ps1')`)],macos:[r(),i(),s(`curl -fsSL https://junie.jetbrains.com/install.sh | bash`),a(`jetbrains-junie/junie/junie`)],linux:[r(),i(),s(`curl -fsSL https://junie.jetbrains.com/install.sh | bash`),a(`jetbrains-junie/junie/junie`)]}},E={name:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,packages:{npm:`@kilocode/cli`},binaryName:`kilo`,selfUpdate:{command:[`kilo`,`upgrade`]},platforms:{windows:[r(),i()],macos:[r(),i()],linux:[r(),i()]}},D={name:`kimi`,lookupAliases:[`kimi-code`,`kimi-cli`],displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-cli/`,binaryName:`kimi`,selfUpdate:{command:[`uv`,`tool`,`upgrade`,`kimi-cli`,`--no-cache`]},versionProbe:{command:[`kimi`,`--version`]},platforms:{windows:[s(`irm https://code.kimi.com/install.ps1 | iex`)],macos:[s(`curl -LsSf https://code.kimi.com/install.sh | bash`)],linux:[s(`curl -LsSf https://code.kimi.com/install.sh | bash`)]}},O={name:`kiro`,lookupAliases:[`kiro-cli`],displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,binaryName:`kiro-cli`,versionProbe:{command:[`kiro-cli`,`--version`]},platforms:{windows:[s(`irm 'https://cli.kiro.dev/install.ps1' | iex`)],macos:[s(`curl -fsSL https://cli.kiro.dev/install | bash`)],linux:[s(`curl -fsSL https://cli.kiro.dev/install | bash`)]}},k={name:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,packages:{npm:`opencode-ai`},binaryName:`opencode`,selfUpdate:{command:[`opencode`,`upgrade`]},platforms:{windows:[r(),i()],macos:[r(),i(),s(`curl -fsSL https://opencode.ai/install | bash`),a(`anomalyco/tap/opencode`)],linux:[r(),i(),s(`curl -fsSL https://opencode.ai/install | bash`),a(`anomalyco/tap/opencode`)]}},A={name:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,binaryName:`openhands`,selfUpdate:{command:[`uv`,`tool`,`upgrade`,`openhands`,`--python`,`3.12`]},versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[c(`uv tool install openhands --python 3.12`),s(`curl -fsSL https://install.openhands.dev/install.sh | sh`)],linux:[c(`uv tool install openhands --python 3.12`),s(`curl -fsSL https://install.openhands.dev/install.sh | sh`)]}},j={name:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,packages:{npm:`@mariozechner/pi-coding-agent`},binaryName:`pi`,selfUpdate:{command:[`pi`,`update`]},platforms:{windows:[r(),i()],macos:[r(),i()],linux:[r(),i()]}},M={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:[r(),i()],macos:[r(),i(),s(`curl -fsSL https://qoder.com/install | bash`),a(`qoderai/qoder/qodercli`,`cask`)],linux:[r(),i(),s(`curl -fsSL https://qoder.com/install | bash`),a(`qoderai/qoder/qodercli`,`cask`)]}},N={name:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,packages:{npm:`@qwen-code/qwen-code`},binaryName:`qwen`,platforms:{windows:[s(`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`),r(),i()],macos:[s(`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`),r(),i(),a(`qwen-code`)],linux:[s(`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`),r(),i(),a(`qwen-code`)]}},P={name:`vibe`,lookupAliases:[`mistral-vibe`],displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,binaryName:`vibe`,versionProbe:{command:[`vibe`,`--version`]},platforms:{windows:[c(`uv tool install mistral-vibe`),c(`pip install mistral-vibe`)],macos:[s(`curl -LsSf https://mistral.ai/vibe/install.sh | bash`),c(`uv tool install mistral-vibe`),c(`pip install mistral-vibe`)],linux:[s(`curl -LsSf https://mistral.ai/vibe/install.sh | bash`),c(`uv tool install mistral-vibe`),c(`pip install mistral-vibe`)]}},F=[u,d,l,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,A,k,j,M,N,P];function I(){return F}function L(e){return F.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1))}function R(e){return L(e)}function z(){switch(n.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function B(n){try{let{exitCode:r}=await t(e([n,`--version`]));return r===0}catch{return!1}}async function V(){return B(`bun`)}async function H(){return B(`npm`)}async function U(){return B(`brew`)}async function W(){return B(`winget`)}async function G(r){try{let{exitCode:i}=await t(e([n.platform===`win32`?`where`:`which`,r]));return i===0}catch{return!1}}export{h as C,d as D,f as E,_ as S,p as T,w as _,H as a,y as b,R as c,M as d,j as f,T as g,E as h,V as i,I as l,k as m,G as n,W as o,A as p,U as r,L as s,z as t,P as u,S as v,m as w,v as x,b as y};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{t as n}from"./agents-
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{t as n}from"./agents-DXy0AhIo.mjs";import{a as r,i,o as a,r as o}from"./detect-C_D5HCeU.mjs";import{O as s,Y as c,a as l,r as u,s as d,t as f,u as p}from"./color-DRI-dpR6.mjs";async function m(){let c=await i(),f=await r(),m=await o(),_=await a(),v=await d(),y=v.latestVersion?s(v.latestVersion,v.currentVersion):!1,b=await n(),x=b.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})),S=[],C=`docs/runbooks/quantex-troubleshooting.md`,w=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!c&&!f&&!m&&!_&&S.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:C,message:`No managed installer found. Install bun, npm, brew, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(v.installSource===`bun`&&!c||v.installSource===`npm`&&!f)&&S.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:w,message:`Quantex CLI is tracked as a ${v.installSource} install, but ${v.installSource} is not available in PATH. Reinstall that package manager or reinstall Quantex from a supported source.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`restore-self-installer`,suggestedCommands:g(v.installSource,v.updateChannel)}),v.canAutoUpdate||S.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:w,message:`Quantex CLI cannot auto-update from install source "${v.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:[]}),y&&v.recommendedUpgradeCommand){let e=p(v);S.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:w,message:e?`Quantex CLI ${v.currentVersion} is behind ${v.latestVersion}. Run ${v.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${v.currentVersion} is behind ${v.latestVersion}. Run ${v.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[v.recommendedUpgradeCommand]})}for(let n of b.filter(e=>e.inPath)){if(n.installedState||S.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:C,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);S.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:C,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 l(u({action:`doctor`,data:{agents:x,issues:S,installers:{brew:m,bun:c,npm:f,winget:_},self:{canAutoUpdate:v.canAutoUpdate,currentVersion:v.currentVersion,installSource:v.installSource,latestVersion:v.latestVersion,outdated:!!y,recoveryHint:y?p(v):void 0}},target:{kind:`system`,name:`doctor`}}),h)}function h(e){if(e.data){if(console.log(f.bold(`
|
|
2
2
|
Quantex CLI Environment Check
|
|
3
|
-
`)),console.log(f.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?f.green(`available`):f.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?f.green(`available`):f.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?f.green(`available`):f.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?f.green(`available`):f.red(`not found`)}`),console.log(`\n${f.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?f.green(`supported`):f.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?f.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${f.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(f.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?f.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${f.bold(`Issues:`)}`),e.data.issues.length===0)console.log(f.green(` No issues found.`));else for(let t of e.data.issues)console.log(f.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(f.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function g(e,t){let n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${
|
|
3
|
+
`)),console.log(f.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?f.green(`available`):f.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?f.green(`available`):f.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?f.green(`available`):f.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?f.green(`available`):f.red(`not found`)}`),console.log(`\n${f.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?f.green(`supported`):f.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?f.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${f.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(f.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?f.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${f.bold(`Issues:`)}`),e.data.issues.length===0)console.log(f.green(` No issues found.`));else for(let t of e.data.issues)console.log(f.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(f.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function g(e,t){let n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${c}@${n}`]:e===`npm`?[`npm install -g ${c}@${n}`]:[]}export{m as doctorCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./ensure-CMkE7Jv4.mjs";export{e as ensureCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as e,c as t,r as n,s as r}from"./agents-DXy0AhIo.mjs";import{a as i,i as a,n as o,q as s,r as c,t as l}from"./color-DRI-dpR6.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-CypcHlGw.mjs";async function h(l){let d=await n(l);if(!d)return i(o({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 i(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 i(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);a({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 i(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(s(e))return i(o({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 i(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 i(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);a({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(s(e))return i(o({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?i(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):i(o({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
|
@@ -537,6 +537,7 @@ interface ManagedInstallerUpdateOptions {
|
|
|
537
537
|
}
|
|
538
538
|
interface ManagedInstaller {
|
|
539
539
|
type: ManagedInstallType;
|
|
540
|
+
getInstalledVersion?: (packageName: string, packageTargetKind?: PackageTargetKind) => Promise<string | undefined>;
|
|
540
541
|
isAvailable: () => Promise<boolean>;
|
|
541
542
|
install: (packageName: string, packageTargetKind?: PackageTargetKind) => Promise<boolean>;
|
|
542
543
|
uninstall: (packageName: string, packageTargetKind?: PackageTargetKind) => Promise<boolean>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{C as n,D as r,E as i,S as a,T as ee,a as te,d as ne,f as re,g as ie,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,w as _}from"./agents-
|
|
2
|
-
`)}\n`}function qe(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 Je(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 Ye(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 Ge)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 Xe(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-DXy0AhIo.mjs";import{C as v,D as y,E as b,S as x,T as S,_ as C,a as w,b as T,c as E,d as D,f as O,g as k,h as A,i as j,l as M,m as N,n as P,p as F,s as I,t as L,u as R,v as z,w as B,x as V,y as H}from"./detect-C_D5HCeU.mjs";import{$ as U,B as W,E as G,F as K,G as q,H as J,I as Y,K as ae,L as oe,M as se,N as ce,P as le,R as ue,T as de,U as fe,V as pe,W as me,X as he,Z as ge,a as _e,at as ve,c as ye,et as be,it as xe,j as Se,l as Ce,n as we,o as Te,ot as Ee,r as De,s as Oe,st as ke,u as Ae,w as je,z as Me}from"./color-DRI-dpR6.mjs";import{t as Ne}from"./capabilities-CdynL7Hm.mjs";import{t as Pe}from"./commands-z9M8f1Zs.mjs";import{t as Fe}from"./ensure-CMkE7Jv4.mjs";import{t as Ie}from"./inspect-TD6GPj1B.mjs";import{t as Le}from"./resolve-D9Mkw6V5.mjs";import{n as Re,t as ze}from"./schema-DGY3putD.mjs";import{n as Be,t as Ve}from"./errors-DCtNasuC.mjs";import{a as He,i as Ue,n as We,t as X}from"./update-_fHpaIBR.mjs";const Ge=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function Ke(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
|
|
2
|
+
`)}\n`}function qe(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 Je(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 Ye(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 Ge)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 Xe(e,t){try{let n=await se(Se([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{f as agentUpdateProviders,y as autohand,ce as canAutoUpdateSelf,a as canLookupLatestVersionForInstallType,l as canResolveAgentUpdate,n as canUninstallInstallType,_ as canUpdateInstallType,Ne as capabilitiesCommand,b as claude,S as codebuddy,B as codex,Pe as commandsCommand,v as copilot,we as createErrorResult,Je as createReleaseManifest,De as createSuccessResult,Ue as createUpdatePlan,x as cursor,V as deepseek,le as detectSelfInstallSource,T as devin,H as droid,_e as emitCommandResult,Fe as ensureCommand,Xe as execCommand,Ke as formatChecksums,z as gemini,I as getAgentByLookupName,E as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,o as getAgentUpdateStrategy,M as getAllAgents,je as getBinaryPath,Y as getBinaryReleaseAssetName,oe as getBinaryReleaseDownloadUrl,xe as getCliContext,he as getConfigDir,ge as getConfigFilePath,Ve as getExitCodeForError,Be as getExitCodeForResult,ee as getInstallLifecycle,ue as getInstalledAgentState,de as getInstalledVersion,i as getInstallerCapabilities,G as getLatestVersion,re as getManagedInstaller,e as getManualAgentUpdateMessage,Te as getManualSelfUpgradeCommand,d as getOrderedInstallMethods,L as getPlatform,ze as getSchemaCatalog,Me as getSelfState,Ce as getSelfUpgradeRecoveryHint,Ae as getSelfUpgradeRecoveryHintForInspection,K as getSelfVersion,X as getSingleAgentUpdateStatus,W as getStateFilePath,s as inspectAgent,te as inspectAllAgents,Ie as inspectCommand,h as inspectRegisteredAgents,Oe as inspectSelf,m as installAgent,P as isBinaryInPath,j as isBunAvailable,He as isInspectionUpdateAvailable,r as isManagedInstallType,w as isNpmAvailable,C as jcode,k as junie,A as kilo,U as loadConfig,pe as loadState,Q as normalizeRepositoryUrl,N as opencode,F as openhands,Z as parseBinaryTarget,qe as parseChecksums,O as pi,We as planAgentUpdates,D as qoder,J as removeInstalledAgentState,ve as resetCliContext,u as resolveAgent,p as resolveAgentInspection,ie as resolveAgentUpdateProvider,Ee as resolveCliContext,Le as resolveCommand,$ as resolveReleaseChannel,be as saveConfig,fe as saveState,Re as schemaCommand,ke as setCliContext,me as setInstalledAgentState,q as setSelfInstallSource,ae as setSelfUpdateNoticeState,c as uninstallAgent,g as updateAgent,ne as updateAgentsByType,ye as upgradeSelf,Ye as validateReleaseManifest,R as vibe};
|
|
@@ -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-DXy0AhIo.mjs";import{a as r,n as i,r as a,t as o}from"./color-DRI-dpR6.mjs";async function s(o){let s=await e(o);if(!s)return r(i({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:o},message:`Unknown agent: ${o}`},target:{kind:`agent`,name:o}}),c);let{agent:l,inspection:u}=s,d=l.selfUpdate?[l.selfUpdate.command,...l.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return r(a({action:`info`,data:{agent:{aliases:l.lookupAliases??[],binaryName:l.binaryName,displayName:l.displayName,installMethods:u.methods.map(e=>({command:t(l,e),label:n(e),type:e.type})),name:l.name,packageName:l.packages?.npm,selfUpdateCommands:d},inspection:{binaryPath:u.binaryPath,installed:u.inPath,installedVersion:u.installedVersion,latestVersion:u.latestVersion,lifecycle:u.lifecycle,sourceLabel:u.inPath?u.sourceLabel:void 0}},target:{kind:`agent`,name:l.name}}),c)}function c(e){if(e.error){console.log(o.red(e.error.message));return}if(e.data){console.log(o.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),console.log(` Installed: ${e.data.inspection.installed?o.green(`Yes`):o.red(`No`)}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installed&&console.log(` Lifecycle: ${e.data.inspection.lifecycle}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(o.bold(`
|
|
2
2
|
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${o.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{s as infoCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./inspect-TD6GPj1B.mjs";export{e as inspectCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e,v as t,y as n}from"./agents-
|
|
1
|
+
import{r as e,v as t,y as n}from"./agents-DXy0AhIo.mjs";import{a as r,n as i,r as a,t as o}from"./color-DRI-dpR6.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{b as e,c as t,r as n,s as r}from"./agents-DXy0AhIo.mjs";import{a as i,i as a,n as o,q as s,r as c,t as l}from"./color-DRI-dpR6.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-CypcHlGw.mjs";async function h(e){let t=Array.isArray(e)?e:[e];if(t.length<=1)return i(await g(t[0],{emitStartedEvent:!0}),S);a({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),a({action:`install`,data:t,target:{kind:`agent`,name:t.agent.name},type:`progress`})}let r={results:n,scope:`batch`,summary:b(n)};return i(n.some(e=>!e.ok)?o({action:`install`,data:r,error:x(n),target:{kind:`agent`}}):c({action:`install`,data:r,target:{kind:`agent`}}),C)}async function g(i,a={}){let l=await n(i);if(!l)return o({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:i},message:`Unknown agent: ${i}`},target:{kind:`agent`,name:i}});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,a.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(s(e))return o({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,a.emitStartedEvent);let m;try{m=await r(d)}catch(e){if(s(e))return o({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}}):o({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&&a({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-DXy0AhIo.mjs";import{a as t,r as n,t as r}from"./color-DRI-dpR6.mjs";async function i(){return t(n({action:`list`,data:{agents:(await e()).map(e=>({binaryName:e.agent.binaryName,displayName:e.agent.displayName,installed:e.inPath,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,name:e.agent.name,sourceLabel:e.sourceLabel,updateLabel:e.updateLabel}))},target:{kind:`system`,name:`agents`}}),a)}function a(e){console.log(r.bold(`
|
|
2
2
|
AI Agents:
|
|
3
3
|
`));for(let t of e.data?.agents??[]){let e=t.displayName.padEnd(18),n=t.installed?r.green(`installed`):r.gray(`not installed`),i=t.installed?r.dim(t.installedVersion??`unknown version`):``,a=t.installed?r.cyan(t.updateLabel):``,o=t.installed?r.dim(t.sourceLabel):``;console.log(` ${e} ${n} ${i}${a?` ${a}`:``}${o?` ${o}`:``}`)}console.log()}export{i as listCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./resolve-D9Mkw6V5.mjs";export{e as resolveCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,v as t,y as n}from"./agents-
|
|
1
|
+
import{r as e,v as t,y as n}from"./agents-DXy0AhIo.mjs";import{a as r,n as i,r as a,t as o}from"./color-DRI-dpR6.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{n as e}from"./schema-DGY3putD.mjs";export{e as schemaCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as e,n as t,r as n,t as r}from"./color-
|
|
1
|
+
import{a as e,n as t,r as n,t as r}from"./color-DRI-dpR6.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=[{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:{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`},npm:{type:`boolean`},winget:{type:`boolean`}},required:[`brew`,`bun`,`npm`,`winget`],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 s(r){let i=r?o.filter(e=>e.name===r):o;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`}}),c):e(n({action:`schema`,data:{commands:i},target:{kind:`system`,name:`schema`}}),c)}function c(e){if(e.error){console.log(r.red(e.error.message));return}if(e.data){console.log(r.bold(`
|
|
2
2
|
Quantex Schemas
|
|
3
3
|
`));for(let t of e.data.commands)console.log(` ${r.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function l(){return o}export{s as n,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e,n as t}from"./agents-
|
|
1
|
+
import{l as e,n as t}from"./agents-DXy0AhIo.mjs";import{R as n,a as r,n as i,q as a,r as o,t as s}from"./color-DRI-dpR6.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-CypcHlGw.mjs";async function p(s){let l=t(s);if(!l)return r(i({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:s},message:`Unknown agent: ${s}`},target:{kind:`agent`,name:s}}),m);if(d())return await n(l.name)?r(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):r(i({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(a(e))return r(i({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!1},...c(e,{kind:`agent`,name:l.name})}),m);throw e}return r(u?o({action:`uninstall`,data:{agent:{displayName:l.displayName,name:l.name},changed:!0},target:{kind:`agent`,name:l.name}}):i({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,w as c}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,w as c}from"./agents-DXy0AhIo.mjs";import{T as l,a as u,i as d,n as f,q as p,r as m,t as h}from"./color-DRI-dpR6.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-CypcHlGw.mjs";import{n as b,r as x}from"./update-_fHpaIBR.mjs";async function S(e,t){if(t)return C();if(!e)return u(f({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),A);let n=o(e);return n?w(n):u(f({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),A)}async function C(){d({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let e=await T(await b());return e.hasFailures?u(f({action:`update`,data:{results:e.results,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`}}),A):u(m({action:`update`,data:{results:e.results,scope:`all`},target:{kind:`agent`}}),A)}async function w(e){d({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let{inspection:t,plan:n}=await x(e);if(!t.inPath)return u(f({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name}}),A);let r=await T(n),i=k(r.results);return i?u(f({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}}),A):r.hasFailures?u(f({action:`update`,data:{results:r.results,scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),A):u(m({action:`update`,data:{results:r.results,scope:`single`},target:{kind:`agent`,name:e.name}}),A)}async function T(n){let r=[];for(let e of n.upToDate)E(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)E(r,{displayName:t.agent.displayName,message:e(t.agent),name:t.agent.name,status:`manual-required`});for(let e of n.untrackedInPath)E(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 D(e.type,e.packages,e.updates);for(let e of t)E(r,e)}for(let e of n.manual)E(r,await O(e.agent,e.state,e.inspection.methods,e.inspection));return{hasFailures:r.some(e=>e.status===`failed`||e.status===`locked`),results:r}}function E(e,t){e.push(t),d({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}async function D(e,t,n){if(n.length===0)return[];if(v())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{return await i(e,t)?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})):await Promise.all(n.map(({agent:e,inspection:t,state:n})=>O(e,n,t.methods,t)))}catch(t){if(!p(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 O(t,i,o,u){let d=o??u?.methods??[],f=a({agent:t,installedState:i,methods:d}),m=u?.installedVersion,h=u?.latestVersion;if(f===`manual-hint`&&!r(t,i)&&!d.some(e=>c(e.type)))return{displayName:t.displayName,installedVersion:m,latestVersion:h,message:e(t),name:t.name,status:`manual-required`,strategy:f};if(v())return{displayName:t.displayName,installedVersion:m,latestVersion:h,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:f};let g;try{g=await s(t,i)}catch(e){if(p(e))return{displayName:t.displayName,installedVersion:m,latestVersion:h,message:e.message,name:t.name,resource:e.resource,status:`locked`,strategy:f};throw e}if(g.success){if(f===`self-update`){let e=await l(t.binaryName,t.versionProbe);if(m&&e)return e===m?{displayName:t.displayName,installedVersion:e,latestVersion:e,name:t.name,status:`up-to-date`,strategy:f}:{displayName:t.displayName,installedVersion:m,latestVersion:e,name:t.name,status:`updated`,strategy:f}}return{displayName:t.displayName,installedVersion:m,latestVersion:h,name:t.name,status:`updated`,strategy:f}}return{displayName:t.displayName,hint:n(t,f),installedVersion:m,latestVersion:h,name:t.name,status:`failed`,strategy:f}}function k(e){if(e.length===1)return e[0]?.status===`locked`?e[0]:void 0}function A(e){if(!e.data){e.error&&y(h.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`up-to-date`:_(h.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:g(h.yellow(`${t.displayName}: manual action required.`)),t.message&&g(h.cyan(`Next step: ${t.message}`));break;case`planned`:g(h.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${j(t.installedVersion,t.latestVersion)}`));break;case`updated`:_(h.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${j(t.installedVersion,t.latestVersion)}`)),_(h.green(`${t.displayName} updated successfully!`));break;case`failed`:_(h.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${j(t.installedVersion,t.latestVersion)}`)),y(h.red(`Failed to update ${t.displayName}.`)),t.hint&&g(h.cyan(`Next step: ${t.hint}`));break;case`locked`:g(h.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&M(e.data.results),!e.data.results.length&&e.error&&y(h.red(e.error.message))}function j(e,t){return e?` (${e} -> ${t??`latest`})`:``}function M(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&&_(h.bold(`Summary: ${n.join(`, `)}`))}export{S as updateCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,g as t,i as n,t as r,x as i}from"./agents-
|
|
1
|
+
import{_ as e,g as t,i as n,t as r,x as i}from"./agents-DXy0AhIo.mjs";function a(e,n={}){let r={bun:[],npm:[],brew:[],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.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`,`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=c.map(e=>p(e,n.grouped[e])).filter(e=>e!==void 0);return{entries:n.entries.map(e=>m(e.inspection)),grouped:r,manual:n.manual.map(e=>m(e.inspection)),skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function p(e,t){if(t.length===0)return;let n=t.map(e=>m(e.inspection));return{type:e,packages:n.flatMap(e=>e.package?.packageName?[e.package]:[]),updates:n}}function m(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?h(e.agent,e.installedState,e.methods,r):void 0,state:e.installedState,strategy:n.strategy}}function h(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,packageTargetKind:t.packageTargetKind};let a=n.find(e=>e.type===r);if(!a)return;let o=i(e,a);if(o)return{packageName:o,packageTargetKind:a.packageTargetKind}}export{o as a,a as i,u as n,d as r,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{C 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-DRI-dpR6.mjs";import{a as l,i as u,n as d,r as f}from"./user-output-CypcHlGw.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{it as e}from"./color-DRI-dpR6.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.16.
|
|
3
|
+
"version": "0.16.4",
|
|
4
4
|
"description": "A unified lifecycle CLI for installing, inspecting, updating, uninstalling, and launching popular AI coding assistants",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"homepage": "https://github.com/Drswith/quantex-cli#readme",
|
package/dist/agents-BNar1Rv6.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,t as s}from"./detect-BSNQHedx.mjs";import{A as c,B as l,C as ee,H as u,I as d,K as f,S as p,T as m,Z as h,_ as g,d as te,f as ne,g as re,h as ie,k as _,m as ae,p as oe,v as se,w as ce}from"./color-J21Z3cee.mjs";import le from"node:process";const ue={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`},npm:{canInstall:!0,canLookupLatestVersion:!0,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 v(e){return ue[e]}function y(e){return v(e).lifecycle===`managed`}function b(e){return v(e).lifecycle}function x(e){return v(e).canUpdate}function S(e){return v(e).canUninstall}function C(e){return v(e).canLookupLatestVersion}function w(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function T(e,t){return t.packageName||e.packages?.npm||void 0}function E(e){return e?x(e.installType):!1}function D(e,t){return E(t)||!!e.selfUpdate}function de(e){return!!e&&C(e.installType)}function fe(e){return e.length>0&&e.every(e=>C(e.type))}function pe(e){return y(e.type)?`${b(e.type)}/${e.type}${w(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function me(e){return e?y(e.installType)?`managed via ${e.installType}${w(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function he(e,t){let n=I({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function ge(e,t){if(t.type===`bun`){let n=T(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=T(e,t);return n?`npm i -g ${n}`:``}return t.type===`brew`?t.packageName?t.packageTargetKind===`cask`?`brew install --cask ${t.packageName}`:`brew install ${t.packageName}`:``:t.type===`winget`?t.packageName?`winget install --id ${t.packageName} -e`:``:t.command??``}function _e(e,t,n){if(t)return de(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!fe(n)))return e.packages.npm}function O(e,t){let n=k(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 k(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 A(e){if(e.installedState&&y(e.installedState.installType))return e.installedState.installType;for(let t of e.methods)if(y(t.type)&&x(t.type))return t.type}const j={strategy:`managed`,canHandle:e=>!!A(e),getManagedInstallerType:e=>A(e)},M={strategy:`self-update`,canHandle:e=>!E(e.installedState)&&!!e.agent.selfUpdate},N={strategy:`manual-hint`,canHandle:()=>!0},P=[j,M,N];function F(e){return P.find(t=>t.canHandle(e))??N}function I(e){return F(e).strategy}function L(e){return D(e.agent,e.installedState)}async function R(e){let t=s(),n=typeof e==`function`?e(t):e;try{return le.platform===`win32`?await c(_([`powershell.exe`,`-Command`,n]))===0:await c(_([`sh`,`-c`,n]))===0}catch{return!1}}function ve(e){return e===`cask`?[`--cask`]:[]}async function z(e,t,n){try{return await c(_([`brew`,e,...ve(n),t]))===0}catch{return!1}}async function ye(e,t){return z(`install`,e,t)}async function B(e,t){return z(`upgrade`,e,t)}async function be(e){for(let t of e)if(!await B(t.packageName,t.packageTargetKind))return!1;return!0}async function xe(e,t){return z(`uninstall`,e,t)}async function V(e,t){try{return await c(_([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function Se(e){return V(`install`,e)}async function H(e){return V(`upgrade`,e)}async function Ce(e){for(let t of e)if(!await H(t.packageName))return!1;return!0}async function we(e){return V(`uninstall`,e)}const Te={brew:{type:`brew`,isAvailable:async()=>o(),install:async(e,t)=>ye(e,t),uninstall:async(e,t)=>xe(e,t),update:async(e,t)=>B(e,t),updateMany:async e=>be(e)},bun:{type:`bun`,isAvailable:async()=>n(),install:async e=>ie(e),uninstall:async e=>re(e),update:async(e,t,n)=>g(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>se(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},npm:{type:`npm`,isAvailable:async()=>e(),install:async e=>te(e),uninstall:async e=>ne(e),update:async(e,t,n)=>oe(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>ae(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},winget:{type:`winget`,isAvailable:async()=>a(),install:async e=>Se(e),uninstall:async e=>we(e),update:async e=>H(e),updateMany:async e=>Ce(e.map(e=>({packageName:e.packageName})))}};function U(e){return Te[e]}const W={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function Ee(){return(await h()).defaultPackageManager}async function G(){return{npmBunUpdateStrategy:(await h()).npmBunUpdateStrategy}}async function K(e){let t=s(),n=e.platforms[t];if(!n)return[];let r=await Ee();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function q(e,t,n,r,i){let a=U(e);return await a.isAvailable()?r===`install`?a.install(t,n):r===`update`?a.update(t,n,{npmBunUpdateStrategy:i}):a.uninstall(t,n):!1}async function J(e,t,n,r){if(y(t.type)){let i=T(e,t);return i?q(t.type,i,t.packageTargetKind,n,r):!1}return n===`update`&&!x(t.type)||!t.command?!1:R(t.command)}async function Y(e,t,n){return y(e.installType)?e.packageName?q(e.installType,e.packageName,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:R(e.command)}async function De(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await R(e.join(` `)))return!0;return!1}async function X(e,t){let n={agentName:e.name,installType:t.type,packageName:T(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0};return await u(n),n}async function Oe(e,t){return f(W,async()=>X(e,t))}async function ke(e){return f(W,async()=>{let t=await K(e);for(let n of t)if(await J(e,n,`install`))return{success:!0,installedState:await X(e,n)};return{success:!1}})}async function Ae(e,t){return f(W,async()=>{let{npmBunUpdateStrategy:n}=await G(),r=await K(e);if(t&&await Y(t,`update`,n))return await u(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await J(e,t,`update`,n))return{success:!0,installedState:await X(e,t)}}if(await De(e))return{success:!0};if(t){for(let t of r)if(await J(e,t,`update`,n))return{success:!0,installedState:await X(e,t)}}return{success:!1}})}async function je(e,t){return f(W,async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}`,e])).values()],r=U(e);return await r.isAvailable()?r.updateMany(n,await G()):!1})}async function Me(e){return f(W,async()=>{let t=await d(e.name);if(!t)return!1;let n=await Y(t,`uninstall`);return n&&await l(e.name),n})}async function Z(e){let[t,n,r]=await Promise.all([K(e),d(e.name),i(e.binaryName)]),[a,o,s]=await Promise.all([r?ee(e.binaryName,e.versionProbe):Promise.resolve(void 0),r?p(e.binaryName):Promise.resolve(void 0),Ne(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:a,latestVersion:s,binaryPath:o,resolvedBinaryPath:await m(o),sourceLabel:me(n),updateLabel:he(e,n),lifecycle:n?b(n.installType):`unmanaged`}}async function Q(e){return Promise.all(e.map(Z))}async function Ne(e,t,n){let r=_e(e,t,n);if(r)return ce(r)}function $(e){return t(e)}async function Pe(e){let t=$(e);if(t)return{agent:t,inspection:await Z(t)}}async function Fe(){return Q(r())}export{S as C,y as D,v as E,C as S,b as T,D as _,Q as a,O as b,Oe as c,je as d,U as f,F as g,I as h,Z as i,Me as l,L as m,$ as n,K as o,P as p,Pe as r,ke as s,Fe as t,Ae as u,ge as v,x as w,T as x,pe as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capabilities-BgXESTNt.mjs";export{e as capabilitiesCommand};
|
package/dist/color-J21Z3cee.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import{chmod as r,mkdir as i,mkdtemp as a,readFile as o,realpath as s,rename as c,rm as l,stat as u,writeFile as d}from"node:fs/promises";import{basename as f,dirname as p,join as m}from"node:path";import{fileURLToPath as h}from"node:url";import{homedir as g}from"node:os";import{spawn as ee}from"node:child_process";import{text as te}from"node:stream/consumers";import{existsSync as _}from"node:fs";import{Buffer as ne}from"node:buffer";import re from"picocolors";function ie(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 ae(e){y=new Set,v={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function oe(){v=void 0,y=new Set}function se(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:ie(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 ce(){v&&(v.cancelled=!0)}function le(){ce();for(let e of y)e();y.clear()}function ue(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 se()}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 x(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function ge(e,t,n){return`${x(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const _e={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function S(){return m(n.env.HOME||n.env.USERPROFILE||g(),`.quantex`)}function C(){return m(S(),`config.json`)}async function w(){let e={..._e,...await be()};return{...e,defaultPackageManager:e.defaultPackageManager===`npm`?`npm`:`bun`,networkRetries:T(e.networkRetries,2),networkTimeoutMs:T(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:T(e.versionCacheTtlHours,6)}}function ve(e){return e===`latest-major`||e===`respect-semver`}async function ye(e){await i(S(),{recursive:!0}),await d(C(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function be(){try{let e=await o(C(),`utf8`),t=JSON.parse(e);return xe(t)?t:{}}catch{return{}}}function T(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)}const E=`quantex-cli`,D=`https://github.com/Drswith/quantex-cli`,Se=`0.16.2`;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 Ce(e){return e instanceof O}function we(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 m(S(),`locks`,...r,i)}async function k(e){let t=we(e.scope);await i(p(t),{recursive:!0});try{await i(t,{recursive:!1})}catch(n){throw typeof n==`object`&&n&&`code`in n&&n.code===`EEXIST`?new O(e.resource,t):n}return async()=>{await l(t,{force:!0,recursive:!0})}}async function Te(e,t){let n=await k(e);try{return await t()}finally{await n()}}const Ee={installedAgents:{},self:{}};function A(){return m(S(),`state.json`)}async function j(){return Pe()}async function De(e){let t=await k({resource:`state`,scope:[`state`]});try{await Re(e)}finally{await t()}}async function Oe(e){return(await j()).installedAgents[e]}async function ke(e){await M(t=>{t.installedAgents[e.agentName]=e})}async function Ae(e){await M(t=>{delete t.installedAgents[e]})}async function je(){return(await j()).self}async function Me(e){await M(t=>{t.self.installSource=e})}async function Ne(e,t){await M(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Pe(){try{let e=JSON.parse(await o(A(),`utf8`)),t=Fe(e.self);return{installedAgents:e.installedAgents??{},self:t}}catch{return{...Ee}}}function Fe(e){if(!Le(e))return{};let t={...e};return Ie(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 Ie(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function Le(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function Re(e){await i(S(),{recursive:!0}),await d(A(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function M(e){let t=await k({resource:`state`,scope:[`state`]});try{let t=await Pe();await e(t),await Re(t)}finally{await t()}}async function N(e,t){let n=await ze(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function ze(e,t,n=`text`){let r=await w(),i=r.versionCacheTtlHours*60*60*1e3,a=b().cacheMode,o=a===`no-cache`?{entries:{}}:await Ve(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return F(s,i),s.body;let l=await Be(e,{headers:a!==`no-cache`&&s?.etag?{"If-None-Match":s.etag}:void 0,retries:r.networkRetries,timeoutMs:r.networkTimeoutMs});if(!l)return s&&F(s,i),s?.body;if(l.status===304&&s)return o.entries[t]={...s,expiresAt:c+i,fetchedAt:c},a!==`no-cache`&&await He(o),I(c,c+i),s.body;if(!l.ok)return s&&F(s,i),s?.body;let u=await l.text();if(n===`json`)try{JSON.parse(u)}catch{return s&&F(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 He(o)),I(c,c+i),u}async function Be(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 Ve(){try{return JSON.parse(await o(P(),`utf8`))}catch{return{entries:{}}}}async function He(e){await i(m(S(),`cache`),{recursive:!0}),await d(P(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function P(){return m(S(),`cache`,`versions.json`)}function F(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 I(e,t){de({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}function Ue(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function L(e=n.execPath){if(f(Ue(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 We(e=n.execPath){let t=L(e);if(t)return`${D}/releases/latest/download/${t}`}function Ge(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 Ke(e){let t=await N(await qe(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function qe(e){if(e===`stable`)return`${D}/releases/latest/download/manifest.json`;let t=(await Je(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 Je(e){let t=Xe();if(!t)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let n=await N(`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 Ye(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=L(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function Xe(){return D.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const Ze=E,Qe=`/node_modules/${Ze}`;async function $e(e){let t=await nt(),r=n.execPath,i=t.foundPackageJson?R(t.packageRoot):R(``,r),a=await tt((await je()).installSource,i),o=await w(),s=Ge(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:et(a),currentVersion:t.version||`0.16.2`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function et(e){return e===`binary`||e===`bun`||e===`npm`}async function tt(e,t){return t!==`unknown`&&e!==t?(await Me(t),t):e??t}function R(e,t=n.execPath){let r=it(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Qe)?`npm`:r?`source`:at(t)?`binary`:`unknown`}async function nt(e=import.meta.url){let t=ot(e),n=p(t);for(;;){let e=m(n,`package.json`),t=await rt(e);if(t?.name===Ze)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.16.2`};let r=p(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:m(p(t),`package.json`),packageRoot:p(t),version:Se}}function z(){return Se}async function rt(e){try{return JSON.parse(await o(e,`utf8`))}catch{return}}function it(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function at(e){let t=f(it(e));return t!==`bun`&&t!==`bun.exe`}function ot(e){try{return h(e)}catch{return n.execPath}}async function st(){try{return await k({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Ce(e))return;throw e}}function B(e,t={}){if(b().outputMode===`human`){let n=H(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:ue(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.resolve(),proc:n}}let n=H(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:ue(()=>n.kill?.(`SIGTERM`)),outputDrained:Promise.all([ct(n.stdout),ct(n.stderr)]).then(()=>void 0),proc:n}}async function V(e){try{let t=await e.proc.exited;return await e.outputDrained,t}finally{e.cleanup()}}function H(e,t={}){let n=dt();if(n)return ft(e,t,n);let[r,...i]=e;if(!r)throw Error(`spawnCommand requires a non-empty command array.`);let a=ee(r,i,{...t,shell:t.shell??ut(r)});return{get exitCode(){return a.exitCode},stderr:a.stderr,stdout:a.stdout,exited:lt(a),kill:a.kill.bind(a),unref:()=>a.unref()}}async function U(e){let[t,n,r]=await Promise.all([W(e.stdout),W(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function ct(e){if(!e)return;let t=await W(e);t&&n.stderr.write(t)}async function lt(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function W(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():te(e):``}function ut(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function dt(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function ft(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?.()}}const pt=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function mt(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
2
|
-
`)[0],r=n.match(pt);return r?r[1]:n||void 0}function ht(e,t){let n=vt(e),r=vt(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 yt(n.prerelease,r.prerelease)}}function G(e,t){return ht(e,t)===1}async function K(e,t){let n=t?.command??[e,`--version`];try{let{exitCode:e,stdout:r}=await U(H(n));return e===0?mt(r,t?.parser):void 0}catch{return}}async function q(e,t=`latest`,n={}){try{let r=x(n.registry)??`https://registry.npmjs.org`;return(await N(ge(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function gt(e){try{let{exitCode:t,stdout:r}=await U(H([n.platform===`win32`?`where`:`which`,e]));return t===0?r.trim().split(`
|
|
3
|
-
`)[0]:void 0}catch{return}}async function _t(e){if(e)try{return await s(e)}catch{return e}}function vt(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 yt(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}async function bt(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 xt(e,r,i)||{isOverride:!1,registry:he,source:`fallback`}}async function xt(e,t,n){if(e===`bun`){let e=St(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Ct(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=St(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Tt(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function St(e,t){for(let n of t){let t=x(e[n]);if(t)return t}}async function Ct(e,t){let n=Ot(t),r=t.XDG_CONFIG_HOME,i=Dt(e,`bunfig.toml`),a=[m(n,`.bunfig.toml`),r?m(r,`.bunfig.toml`):void 0];if(i){let e=await wt(i);if(e)return e}for(let e of a){if(!e||!_(e))continue;let t=await wt(e);if(t)return t}}async function wt(e){try{return kt(await o(e,`utf8`))}catch{return}}async function Tt(e,t){let n=Ot(t),r=Dt(e,`.npmrc`),i=m(n,`.npmrc`);if(r){let e=await Et(r);if(e)return e}if(_(i))return Et(i)}async function Et(e){try{let t=(await o(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 Dt(e,t){let n=e;for(;;){let e=m(n,t);if(_(e))return e;let r=p(n);if(r===n)return;n=r}}function Ot(e){return e.HOME||e.USERPROFILE||g()}function kt(e){let t=At(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(At(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function At(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function jt(e){let t=await w();if(e.installSource===`binary`)try{let t=await Ke(e.updateChannel),n=Ye(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 q(E,n,{registry:he});if(e.installSource===`bun`||e.installSource===`npm`){let i=await bt(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await q(E,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:It(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function J(e){let t=e?.facts??await $e({updateChannel:e?.updateChannel}),n=e?.target??await jt(t),r=n.targetVersion?G(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Y(t,n,r),target:n,updateAvailable:r}}function Mt(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 Nt(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await Ft(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 Pt(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:It(e.packageRoot)},r=e.latestVersion?G(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Y(t,n,r),target:n,updateAvailable:r}}function Y(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Ft(e){if(e.target.verificationCommand){let t=await K(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return K(e.facts.executablePath)}function It(e){if(e)return[n.execPath,m(e,`dist`,`cli.mjs`),`--version`]}async function Lt(e,t,i,o){let s;try{s=await fetch(e)}catch(t){return Z(`network`,`Failed to download ${e}.`,t)}if(!s.ok)return Z(`network`,`Failed to download ${e}: HTTP ${s.status}.`);let u=await a(m(p(t),`.quantex-upgrade-`)),h=m(u,f(t)),g=`${t}.bak`;try{let a=ne.from(await s.arrayBuffer()),f=await Rt(t),p=Wt(a);if(p!==Gt(i))return Z(`checksum`,`Checksum mismatch for ${e}. Expected ${Gt(i)}, got ${p}.`);if(await d(h,a),n.platform===`win32`)return zt(h,t,g,u,o);await r(h,f),await l(g,{force:!0}),await c(t,g),await c(h,t);let m=await Ut(t,o);return m.success?(await l(g,{force:!0}),{success:!0}):(await Ht(g,t),m)}catch(e){return Z(Vt(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await l(u,{recursive:!0,force:!0})}}async function Rt(e){try{return(await u(e)).mode&511}catch{return 493}}function zt(e,t,r,i,a){try{return H([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Bt(e,t,r,i,n.pid,a)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return Z(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function Bt(e,t,n,r,i,a){let o=X(e),s=X(t),c=X(n),l=X(r),u=X(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 X(e){return e.replaceAll(`'`,`''`)}function Z(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Vt(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 Ht(e,t){await l(t,{force:!0}),await c(e,t)}async function Ut(e,t){if(!t)return{success:!0};try{let{exitCode:n,stdout:r}=await U(H([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return n===0?r.includes(t)?{success:!0}:Z(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):Z(`verify`,`The upgraded Quantex binary exited with code ${n} during verification.`)}catch(e){return Z(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function Wt(t){return e(`sha256`).update(t).digest(`hex`)}function Gt(e){return e.trim().toLowerCase()}const Kt={source:`binary`,canHandle:e=>qt(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):We(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 Lt(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 qt(e){return`facts`in e?e.facts.installSource:e.installSource}async function Jt(e,t,n){try{let r=t?`${e}@${t}`:e,i=x(n);return await Q([`bun`,`add`,`-g`,...i?[`--registry`,i]:[],r],[e])}catch{return!1}}async function Yt(e,t=`latest-major`,n=`latest`,r){try{let i=n===`latest`?e:`${e}@${n}`,a=x(r);return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...a?[`--registry`,a]:[],i],[e])}catch{return!1}}async function Xt(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 Zt(e){try{return await V(B([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function Q(e,t){return await V(B(e))===0?Qt(t):!1}async function Qt(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await $t();if(!n)return!0;let r=en(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await V(B([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function $t(){try{let{exitCode:e,stdout:t}=await U(H([`bun`,`pm`,`-g`,`untrusted`],{stdio:tn()}));return e===0?t:void 0}catch{return}}function en(e){let t=new Set;for(let n of e.split(`
|
|
5
|
-
`)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function tn(){return[`ignore`,`pipe`,`ignore`]}const nn={source:`bun`,canHandle:e=>rn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${E}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await Jt(E,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${E} through Bun.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function rn(e){return`facts`in e?e.facts.installSource:e.installSource}async function an(e,t,n){try{let r=t?`${e}@${t}`:e,i=x(n);return await V(B([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function on(e,t=`latest-major`,n=`latest`,r){try{let i=x(r);return await V(B(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...i?[`--registry`,i]:[]]:[`npm`,`update`,`-g`,e,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function sn(e,t=`latest-major`){if(e.length===0)return!0;try{return await V(B(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e]))===0}catch{return!1}}async function cn(e){try{return await V(B([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}const ln={source:`npm`,canHandle:e=>un(e)===`npm`,getRecoveryHint:e=>`npm install -g ${E}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await an(E,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${E} through npm.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function un(e){return`facts`in e?e.facts.installSource:e.installSource}const dn={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}}},fn=[nn,ln,Kt,dn];function $(e){return fn.find(t=>t.canHandle(e))??dn}function pn(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function mn(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:pn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function hn(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 gn(e){return Mt(await J({updateChannel:e?.updateChannel}))}async function _n(e){let t=await yn(e),n=await st();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return Nt(t,await $(t).upgrade(t))}finally{await n()}}function vn(e,t=n.execPath){return mn(e,t)}async function yn(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}}):Pt(e):J()}function bn(e){return wn({...e,error:null,ok:!0})}function xn(e){return wn({...e,ok:!1})}function Sn(e,t,n={}){let r=b();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?En({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Cn(e,t={}){let n=b();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return En(e)}function wn(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:z()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Tn(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:z()},target:e.target,type:e.type}}function En(e){let t=Tn(e);return console.log(JSON.stringify(t)),t}const{createColors:Dn,isColorSupported:On}=re;function kn(){let e=b().colorMode??`auto`;return Dn(e===`always`?!0:e===`never`?!1:On)}const An=new Proxy({},{get(e,t){let n=kn(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{_e as $,V as A,Ae as B,K as C,U as D,G as E,We as F,Ce as G,ke as H,Oe as I,S as J,Te as K,je as L,R as M,z as N,H as O,L as P,ye as Q,A as R,gt as S,_t as T,Me as U,De as V,Ne as W,ve as X,C as Y,w as Z,Yt as _,Sn as a,ae as at,J as b,_n as c,an as d,x as et,cn as f,Zt as g,Jt as h,Cn as i,se as it,et as j,B as k,mn as l,sn as m,xn as n,b as nt,vn as o,on as p,E as q,bn as r,oe as rt,gn as s,An as t,le as tt,hn as u,Xt as v,q as w,ht as x,Mt as y,j as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-B4G7NN41.mjs";export{e as commandsCommand};
|
package/dist/config-CAQ8zo_E.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{$ as e,Q as t,X as n,Z as r,a as i,et as a,n as o,r as s,t as c}from"./color-J21Z3cee.mjs";async function l(c,l,d){if(!c)return i(s({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),u);switch(c){case`get`:{if(!l)return i(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),u);let e=(await r())[l];return i(s({action:`config`,data:{action:`get`,key:l,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:l}}),u)}case`set`:{if(!l||d===void 0)return i(o({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 i(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun or npm`},target:{kind:`config`,name:l}}),u);if(l===`npmBunUpdateStrategy`&&!n(d))return i(o({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 i(o({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 i(o({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 i(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${l} must be a positive integer`},target:{kind:`config`,name:l}}),u);d=`${e}`}let e={};try{e=await r()}catch{}return e[l]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(l)?Number.parseInt(d,10):l===`selfUpdateRegistry`?a(d):d,await t(e),i(s({action:`config`,data:{action:`set`,key:l,value:e[l]},target:{kind:`config`,name:l}}),u)}case`reset`:return await t(e),i(s({action:`config`,data:{action:`reset`,config:e},target:{kind:`config`}}),u);default:return i(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),u)}}function u(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{l as configCommand};
|
package/dist/ensure-CY2eJqHu.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e,c as t,r as n,s as r}from"./agents-BNar1Rv6.mjs";import{G as i,a,i as o,n as s,r as c,t as l}from"./color-J21Z3cee.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-CDr82Dne.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/ensure-tkYiW_-z.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./ensure-CY2eJqHu.mjs";export{e as ensureCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./inspect-Cmx0JU00.mjs";export{e as inspectCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e,c as t,r as n,s as r}from"./agents-BNar1Rv6.mjs";import{G as i,a,i as o,n as s,r as c,t as l}from"./color-J21Z3cee.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-CDr82Dne.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 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./resolve-C-9rOJ9y.mjs";export{e as resolveCommand};
|
package/dist/schema-DxyRgGtB.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./schema-CE0tCcc-.mjs";export{e as schemaCommand};
|