quantex-cli 0.28.1 → 0.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/README.zh-CN.md +7 -0
- package/dist/agent-inspection-YgRBlO4j.mjs +1 -0
- package/dist/agent-installation-DYK5G54m.mjs +1 -0
- package/dist/agents-BHbkPVvR.mjs +1 -0
- package/dist/agents-Dc-rbRUf.mjs +1 -0
- package/dist/capabilities-CtAVoTl3.mjs +1 -0
- package/dist/capabilities-DwvTrIyT.mjs +5 -0
- package/dist/cli.mjs +1 -1
- package/dist/color-DRZEEJuf.mjs +8 -0
- package/dist/commands-BFAz9rp0.mjs +1 -0
- package/dist/commands-BV_8m8O3.mjs +3 -0
- package/dist/config-CW5KWpFO.mjs +3 -0
- package/dist/doctor-oscs3vHZ.mjs +3 -0
- package/dist/ensure-CtIsNpIc.mjs +1 -0
- package/dist/ensure-TjHi-p6p.mjs +1 -0
- package/dist/errors-BzuGM14H.mjs +1 -0
- package/dist/errors-DXzIacfk.mjs +1 -0
- package/dist/index.d.mts +122 -28
- package/dist/index.mjs +2 -2
- package/dist/info-CC9R6coD.mjs +2 -0
- package/dist/inspect-BBCaK7m4.mjs +3 -0
- package/dist/inspect-e9CX-iny.mjs +1 -0
- package/dist/install-Qs0Hjurc.mjs +1 -0
- package/dist/lifecycle-observations-AFJINgqR.mjs +1 -0
- package/dist/lifecycle-policy-Djgq_8nm.mjs +1 -0
- package/dist/list-BdZDS8uV.mjs +3 -0
- package/dist/provider-evidence-CQl_J-gP.mjs +1 -0
- package/dist/provider-observations-CjH7BgJJ.mjs +1 -0
- package/dist/resolve-BZug-bO0.mjs +1 -0
- package/dist/resolve-D8sxYL1V.mjs +1 -0
- package/dist/schema-BFd8FNZw.mjs +1 -0
- package/dist/schema-CGsjqfua.mjs +3 -0
- package/dist/uninstall-jVywxQNe.mjs +1 -0
- package/dist/update-CNH0qEtB.mjs +1 -0
- package/dist/update-planner-BhJnvNKA.mjs +1 -0
- package/dist/upgrade-DUSUcwD7.mjs +1 -0
- package/dist/{user-output-CoGPwCzM.mjs → user-output-CnLEBgDD.mjs} +1 -1
- package/dist/version-cache-BRDGus3W.mjs +1 -0
- package/package.json +6 -3
- package/dist/agents-DcXYVqP3.mjs +0 -1
- package/dist/capabilities-CYaUM4jO.mjs +0 -1
- package/dist/capabilities-UbrB8q7F.mjs +0 -5
- package/dist/color-DQ26gyy0.mjs +0 -7
- package/dist/commands-Bdwpixub.mjs +0 -1
- package/dist/commands-DB2H-Gy6.mjs +0 -3
- package/dist/config-DM98xf2S.mjs +0 -3
- package/dist/detect-D6EVk3qi.mjs +0 -1
- package/dist/doctor-DhNx--_0.mjs +0 -3
- package/dist/ensure-BR4jlIh8.mjs +0 -1
- package/dist/ensure-DdMGlKRf.mjs +0 -1
- package/dist/errors-BzXIrX6h.mjs +0 -1
- package/dist/info-BybFEWU1.mjs +0 -2
- package/dist/inspect-BRYdIjbZ.mjs +0 -3
- package/dist/inspect-C03bUh2j.mjs +0 -1
- package/dist/install-LLHTys7s.mjs +0 -1
- package/dist/list-BAvLnv59.mjs +0 -3
- package/dist/resolve-DJ8Cg6f0.mjs +0 -1
- package/dist/resolve-Dbrr43pb.mjs +0 -1
- package/dist/schema-CXnd4pu2.mjs +0 -3
- package/dist/schema-CiHd-mRh.mjs +0 -1
- package/dist/uninstall-CVZwXEo6.mjs +0 -1
- package/dist/update-CE_ODH67.mjs +0 -1
- package/dist/update-D2myQ0nH.mjs +0 -1
- package/dist/upgrade-D7f85okJ.mjs +0 -1
- /package/dist/{lifecycle-errors-BtqYfS-v.mjs → lifecycle-errors-BXlHX_YF.mjs} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{
|
|
2
|
-
`)}\n`}function
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{A as n,At as r,D as i,F as a,Ft as o,Gt as s,J as c,Jt as l,K as ee,Kt as te,M as ne,O as re,P as ie,Pt as ae,R as u,Rt as oe,S as se,T as ce,Y as d,Yt as le,_ as ue,a as de,an as f,at as p,cn as m,ct as h,d as g,g as _,it as v,jt as y,kt as b,l as x,ln as S,lt as C,n as w,nt as T,o as E,ot as D,q as O,qt as k,r as A,rn as j,rt as M,s as N,sn as P,st as F,tn as I,u as L,v as R,w as z,z as B,zt as V}from"./color-DRZEEJuf.mjs";import{A as H,C as fe,D as pe,E as me,F as he,M as ge,N as _e,O as ve,P as ye,S as be,T as xe,_ as Se,a as Ce,b as we,c as Te,d as Ee,f as De,g as Oe,h as ke,i as Ae,j as U,k as je,l as Me,m as Ne,n as Pe,o as Fe,p as Ie,r as Le,s as Re,t as ze,u as Be,v as Ve,w as He,x as Ue,y as We}from"./agents-Dc-rbRUf.mjs";import{t as Ge}from"./capabilities-DwvTrIyT.mjs";import{t as Ke}from"./commands-BV_8m8O3.mjs";import{_ as qe,g as Je,l as Ye,m as Xe,u as Ze,y as Qe}from"./provider-evidence-CQl_J-gP.mjs";import{t as $e}from"./update-planner-BhJnvNKA.mjs";import{a as et,i as W,n as tt,r as nt,t as G}from"./agents-BHbkPVvR.mjs";import{t as rt}from"./ensure-CtIsNpIc.mjs";import{t as it}from"./inspect-BBCaK7m4.mjs";import{t as at}from"./resolve-D8sxYL1V.mjs";import{n as ot,t as st}from"./schema-CGsjqfua.mjs";import{n as ct,r as lt}from"./errors-DXzIacfk.mjs";function K(e,t={}){let n=h(),r=n.reduce((e,t)=>(e[t]=[],e),{}),i=[],a=[],o=[],s=[];for(let n of e){if(!n.inPath)continue;if(t.skipUntrackedInPath&&!n.installedState){o.push(n);continue}let e=J(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=d({agent:n.agent,installedState:n.installedState,methods:n.methods}),l=c.strategy===`managed`?c.getManagedInstallerType?.({agent:n.agent,installedState:n.installedState,methods:n.methods}):void 0;if(l){let e={inspection:n,installerType:l,strategy:`grouped`};r[l].push(e);continue}i.push({inspection:n,strategy:c.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...n.flatMap(e=>r[e]),...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:o,upToDate:s}}function q(e){return J(e)===`upgrade`}function J(e){return $e({intent:{kind:`update`,targetId:`compatibility-update`,targetVersion:e.latestVersion},observation:{drift:{kind:`none`},kind:`present`,providerId:`compatibility`,providerTargetId:`compatibility-update`,providerTargetKind:`package`,targetId:`compatibility-update`,version:e.installedVersion},provider:{capabilities:[`observe`,`update`,`verify`],providerId:`compatibility`,targetId:`compatibility-update`,targetKind:`package`}}).decision}const ut=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function dt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
|
|
2
|
+
`)}\n`}function ft(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 Y(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 X(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 Z(e){return e.includes(`beta`)?`beta`:`stable`}function pt(e){let t=X(e.repositoryUrl),n=Z(e.version),r=e.files.map(n=>{let r=Y(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 mt(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 ut)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(!Y(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}async function ht(e){let t=await W(e);return{agent:e,inspection:t,updateAvailable:q(t)}}async function gt(){return _t(await G(),{skipUntrackedInPath:!0})}function _t(e,t={}){let n=K(e,t),r=[],i=h().map(e=>vt(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>$(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>$(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function vt(e,t,n){if(t.length===0)return;let r=t.map(e=>$(e.inspection)),i=r.filter(Q);if(n.push(...r.filter(e=>!Q(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function Q(e){return!!e.package?.packageName}function $(e){let t=d({agent:e.agent,installedState:e.installedState,methods:e.methods}),n=t.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:n,package:n?yt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function yt(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let i=n.find(e=>e.type===r);if(!i)return;let a=T(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function bt(e,t){try{let n=await j(I([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{_e as agentCatalogEntrySchema,ye as agentCatalogJsonSchema,he as agentCatalogSchema,ee as agentUpdateProviders,Ae as autohand,_ as canAutoUpdateSelf,M as canLookupLatestVersionForInstallType,O as canResolveAgentUpdate,v as canUninstallInstallType,p as canUpdateInstallType,Ge as capabilitiesCommand,Ce as claude,Fe as codebuddy,Re as codewhale,Te as codex,Ke as commandsCommand,Me as copilot,w as createErrorResult,pt as createReleaseManifest,A as createSuccessResult,K as createUpdatePlan,Be as cursor,Ee as deepcode,ue as detectSelfInstallSource,De as devin,Ie as droid,de as emitCommandResult,rt as ensureCommand,bt as execCommand,dt as formatChecksums,Ne as gemini,ke as genie,ze as getAgentByLookupName,Pe as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,c as getAgentUpdateStrategy,Le as getAllAgents,b as getBinaryPath,u as getBinaryReleaseAssetName,B as getBinaryReleaseDownloadUrl,U as getCatalogAgent,ge as getCatalogAgents,f as getCliContext,ae as getConfigDir,o as getConfigFilePath,ct as getExitCodeForError,lt as getExitCodeForResult,D as getInstallLifecycle,se as getInstalledAgentState,r as getInstalledVersion,F as getInstallerCapabilities,y as getLatestVersion,Qe as getManagedInstaller,e as getManualAgentUpdateMessage,E as getManualSelfUpgradeCommand,Ye as getOrderedInstallMethods,s as getPlatform,st as getSchemaCatalog,z as getSelfState,L as getSelfUpgradeRecoveryHint,g as getSelfUpgradeRecoveryHintForInspection,R as getSelfVersion,ht as getSingleAgentUpdateStatus,ce as getStateFilePath,Oe as grok,Se as hermes,W as inspectAgent,et as inspectAllAgents,it as inspectCommand,G as inspectRegisteredAgents,N as inspectSelf,Ze as installAgent,te as isBinaryInPath,k as isBunAvailable,l as isDenoAvailable,q as isInspectionUpdateAvailable,C as isManagedInstallType,le as isNpmAvailable,Ve as jcode,We as junie,we as kilo,oe as loadConfig,i as loadState,Ue as mimo,X as normalizeRepositoryUrl,be as omp,fe as openclaw,He as opencode,xe as openhands,Y as parseBinaryTarget,ft as parseChecksums,me as pi,gt as planAgentUpdates,pe as qoder,ve as reasonix,re as removeInstalledAgentState,P as resetCliContext,tt as resolveAgent,nt as resolveAgentInspection,d as resolveAgentUpdateProvider,m as resolveCliContext,at as resolveCommand,Z as resolveReleaseChannel,V as saveConfig,n as saveState,ot as schemaCommand,S as setCliContext,ne as setInstalledAgentState,ie as setSelfInstallSource,a as setSelfUpdateNoticeState,Xe as uninstallAgent,Je as updateAgent,qe as updateAgentsByType,x as upgradeSelf,mt as validateReleaseManifest,je as vibe,H as vtcode};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-DRZEEJuf.mjs";import{r as o}from"./lifecycle-observations-AFJINgqR.mjs";import{t as s}from"./agent-inspection-YgRBlO4j.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return n(i({action:`info`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));return}if(e.data){console.log(a.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?a.green(`Yes`):a.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(a.bold(`
|
|
2
|
+
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${a.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as infoCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-DRZEEJuf.mjs";import{r as o}from"./lifecycle-observations-AFJINgqR.mjs";import{t as s}from"./agent-inspection-YgRBlO4j.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return n(i({action:`inspect`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},capabilities:{canAutoInstall:d.methods.length>0,canAutoUninstall:d.inPath&&d.lifecycle===`managed`,canRun:d.inPath,canSelfUpdate:f.length>0},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0,updateLabel:d.updateLabel}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));return}if(e.data){console.log(a.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?a.green(`Yes`):a.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(a.bold(`
|
|
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(a.bold(`
|
|
3
|
+
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${a.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./inspect-BBCaK7m4.mjs";export{e as inspectCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as e,a as t,an as n,et as r,i,n as a,r as o,t as s}from"./color-DRZEEJuf.mjs";import{v as c}from"./provider-evidence-CQl_J-gP.mjs";import{t as l}from"./agent-installation-DYK5G54m.mjs";import{r as u}from"./lifecycle-observations-AFJINgqR.mjs";import{n as d}from"./agents-BHbkPVvR.mjs";import{t as f}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as p,i as m,n as h,r as g}from"./user-output-CnLEBgDD.mjs";import{o as _}from"./lifecycle-policy-Djgq_8nm.mjs";async function v(e){let r=_(Array.isArray(e)?e:[e]);if(r.length<=1)return t(await y(r[0],{emitStartedEvent:!0}),A);i({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let s=[];for(let e of r){if(n().cancelled)break;let t=E(e,await y(e));if(s.push(t),i({action:`install`,data:t,target:{kind:`agent`,name:t.agent.name},type:`progress`}),n().cancelled)break}let c={results:s,scope:`batch`,summary:O(s)};return n().cancelled&&s.length<r.length?t(a({action:`install`,data:c,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),j):t(s.some(e=>!e.ok)?a({action:`install`,data:c,error:k(s),target:{kind:`agent`}}):o({action:`install`,data:c,target:{kind:`agent`}}),j)}async function y(t,r={}){if(n().cancelled||!d(t)||h())return b(t,r);try{return await c(()=>b(t,r))}catch(n){if(e(n))return a({action:`install`,...f(n,{kind:`agent`,name:t}),target:{kind:`agent`,name:t}});throw n}}async function b(t,i){if(n().cancelled)return a({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:t}});let o=await u(t);if(!o)return a({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}});let{agent:s}=o,c=o.pathExecutable.present,d=o.installedState,p=c&&!d?r(o.methods,o.resolvedBinaryPath??o.pathExecutable.path):void 0;if(c&&!d&&!p)return w(s);let m=d&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?S(s):C(s,m===`adopt`,!!d);m!==`satisfied`&&T(s,i.emitStartedEvent);try{return x(s,m,await l({adoptableMethod:p,agent:s,observation:{inPath:c,installedState:d,lifecycle:o.observation,methods:o.methods},operation:`install`,route:m}))}catch(t){if(e(t))return a({action:`install`,data:{agent:{displayName:s.displayName,name:s.name},changed:!1,installed:c},...f(t,{kind:`agent`,name:s.name})});throw t}}function x(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return S(e);let r=n.value.value.installedState;return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:{installType:r.installType,packageName:r.packageName},installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let r=n.kind===`cancelled`?{code:`CANCELLED`,message:`Install was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:n.kind===`failed`&&n.reason.endsWith(`-after-install`)||n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after installation.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return a({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:r,target:{kind:`agent`,name:e.name}})}function S(e){return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function C(e,t,n){return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function w(e){return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function T(e,t=!1){t&&i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function E(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:D(t),warnings:r}}function D(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 O(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 k(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 A(e){if(e.error){g(s.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`){m(s.green(t.message));continue}if(t.code===`DRY_RUN`){p(s.cyan(t.message));continue}p(s.yellow(t.message))}return}m(s.cyan(`Installing ${e.data.agent.displayName}...`)),m(s.green(`${e.data.agent.displayName} installed successfully!`))}}function j(e){if(!e.data){e.error&&g(s.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:m(s.cyan(`Installing ${t.agent.displayName}...`)),m(s.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:m(s.green(M(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(s.yellow(M(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(s.cyan(M(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:p(s.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:g(s.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}N(e.data.summary)}function M(e,t){return e[0]?.message??t}function N(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&&m(s.bold(`Summary: ${t.join(`, `)}`))}export{v as installCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{At as e,C as t,Gt as n,Kt as r,Mt as i,Ot as a,S as o,Xt as s,jt as c,kt as l,tt as u,ut as d}from"./color-DRZEEJuf.mjs";import{n as f,r as p}from"./agents-Dc-rbRUf.mjs";import{a as m,i as h,l as g,n as _,o as v,r as y,t as b}from"./provider-evidence-CQl_J-gP.mjs";async function x(e,t){let[n,r,i]=await Promise.all([t.inspectExecutable(e),t.readInstalledState(e.name),t.readReceipt(e.name)]),a=t.clock(),o=y(e,t.platform),s=o.bindings,c=r?v(e,r):void 0,l=i?m(i):void 0,u=l??c,d={catalogMethods:s,executable:n,installedState:r,pathExecutable:n,persistedBinding:u,receipt:i};if(r&&!c||i&&!l)return{...d,capabilities:[],observation:w(e,a,`Persisted provider binding cannot be resolved.`)};if(c&&l&&!_(c,l,e.binaryName))return{...d,capabilities:[],observation:n.present?C(e,n,a,{kind:`conflicting-source`,observedProviderId:c.providerId,recordedProviderId:l.providerId}):{drift:{kind:`conflicting-source`,observedProviderId:c.providerId,recordedProviderId:l.providerId},kind:`absent`,observedAt:a,targetId:e.name}};let f=u;if(f){let o=await S(f,t),s=t.providerRegistry.getCapabilities(f.providerId);if(o.kind!==`success`)return{...d,binding:f,capabilities:s,observation:w(e,a,A(o)),providerOutcome:o};let c=o.value;if(!O(f,c))return{...d,binding:f,capabilities:s,observation:k(e,n,a),providerOutcome:o};if(c.kind===`absent`&&!n.present)return{...d,binding:f,capabilities:s,observation:{drift:{kind:`recorded-absent`},kind:`absent`,observedAt:a,targetId:e.name},providerOutcome:o};let l=c.kind!==(n.present?`present`:`absent`)||c.kind===`present`&&n.present&&c.executablePath!==void 0&&n.path!==void 0&&c.executablePath!==n.path||c.kind===`present`&&E(c.version,n.version)||i?.executablePath!==void 0&&n.path!==void 0&&i.executablePath!==n.path||D(e,r,i,f),u=T(n,c);return{...d,binding:f,capabilities:s,executable:u,observation:C(e,u,a,l?{kind:`conflicting-source`,observedProviderId:c.kind===`present`?f.providerId:void 0,recordedProviderId:f.providerId}:{kind:`none`},c.kind===`present`?f:void 0),providerOutcome:o}}let p=await Promise.all(s.map(async e=>({binding:e,outcome:await S(e,t)}))),h=p.find(e=>e.outcome.kind===`success`&&!O(e.binding,e.outcome.value));if(h)return{...d,capabilities:[],observation:k(e,n,a),providerOutcome:h.outcome};let g=p.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),b=p.filter(e=>e.binding.providerId!==`binary`&&e.binding.providerId!==`script`),x=b.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),M=b.some(e=>e.outcome.kind!==`success`),N=x.length>0?x:M?[]:g;if(N.length>1)return{...d,capabilities:[],observation:n.present?C(e,n,a,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:a,reason:`Multiple catalog providers report the agent as present.`,targetId:e.name}};if(o.unresolvedCandidates.length>0)return{...d,capabilities:[],observation:w(e,a,`A catalog provider binding cannot be resolved.`)};let P=p.map(e=>e.outcome).find(j),F=p.map(e=>e.outcome).find(e=>e.kind===`cancelled`||e.kind===`timed-out`);if(F)return{...d,capabilities:[],observation:w(e,a,A(F)),providerOutcome:F};let I=N[0];if(I){let r=I.binding,i=I.outcome.value,o=T(n,i),s=!n.present||i.executablePath!==void 0&&n.path!==void 0&&i.executablePath!==n.path||E(i.version,n.version);return{...d,binding:r,capabilities:t.providerRegistry.getCapabilities(r.providerId),executable:o,observation:C(e,o,a,s?{kind:`conflicting-source`,observedProviderId:r.providerId}:{kind:`untracked`},r),providerOutcome:I.outcome}}let L=t.preferredCatalogBinding,R=L?p.find(t=>_(t.binding,L,e.binaryName)&&t.outcome.kind===`success`&&t.outcome.value.kind===`absent`):void 0;return!n.present&&g.length===0&&P&&R?{...d,capabilities:[],observation:{drift:{kind:`none`},kind:`absent`,observedAt:a,targetId:e.name},providerOutcome:R.outcome}:P?{...d,capabilities:[],observation:w(e,a,A(P)),providerOutcome:P}:{...d,capabilities:[],observation:n.present?C(e,n,a,{kind:`untracked`}):{drift:{kind:`none`},kind:`absent`,observedAt:a,targetId:e.name}}}async function S(e,t){try{return await(t.observeProvider??b)(e,{registry:t.providerRegistry,signal:t.signal,timeoutMs:t.timeoutMs})}catch(e){return{kind:`failed`,reason:M(e),retryable:!1}}}function C(e,t,n,r,i){return{drift:r,...t.path?{executablePath:t.path}:{},kind:`present`,observedAt:n,...i?{providerId:i.providerId,providerTargetId:i.target.id,providerTargetKind:i.target.kind}:{},targetId:e.name,...t.version?{version:t.version}:{}}}function w(e,t,n){return{drift:{kind:`indeterminate`,reason:n},kind:`indeterminate`,observedAt:t,reason:n,targetId:e.name}}function T(e,t){return t.kind===`absent`?e:{path:e.path??t.executablePath,present:!0,version:e.version??t.version}}function E(e,t){if(e===void 0||t===void 0)return!1;let n=a(e,t);return n===void 0?e!==t:n!==0}function D(e,t,n,r){let i=[e.binaryName,t?.binaryName,n?.executableName,r.target.binaryName].filter(e=>e!==void 0);return new Set(i).size>1}function O(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function k(e,t,n){return t.present?C(e,t,n,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:n,reason:`Provider evidence does not match the requested target identity.`,targetId:e.name}}function A(e){switch(e.kind){case`unsupported`:return e.reason??`Provider does not support ${e.operation}.`;case`unavailable`:case`failed`:case`indeterminate`:return e.reason;case`cancelled`:return e.reason??`Provider observation was cancelled.`;case`timed-out`:return`Provider observation timed out after ${e.timeoutMs}ms.`}}function j(e){return e.kind!==`success`}function M(e){return e instanceof Error&&e.message.trim().length>0?`Provider observation rejected: ${e.message.trim().slice(0,500)}`:`Provider observation rejected unexpectedly.`}function N(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?h(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function P(e,t){return t?I(t).resolveAgentObservation(e):L(t=>t.resolveAgentObservation(e))}function F(e){return e?I(e).observeRegisteredAgents():L(e=>e.observeRegisteredAgents())}function I(e,r={}){return N({clock:()=>new Date().toISOString(),getAllAgents:p,getAgentByNameOrAlias:f,getLatestVersion:(t,n,r)=>B(t,n,r,e),getOrderedInstallMethods:g,getPlatform:n,getResolvedBinaryPath:t=>i(t,e),inspectExecutable:(t,n)=>R(t,n,e),observeAgentLifecycle:x,providerRegistry:d,readInstalledState:o,readReceipt:t,signal:e.signal,timeoutMs:e.timeoutMs},r)}async function L(e){let t=s(),n=I(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function R(e,t,n){let i=await r(e.binaryName,n);if(!i)return{present:!1};let[a,o]=await Promise.all([l(e.binaryName,n),z(e,t,n)]);return{path:a,present:i,version:o}}async function z(t,n,r){return e(t.binaryName,t.versionProbe,r)}async function B(e,t,n,r){let i=u(e,t,n);return i?c(i,`latest`,{context:r}):void 0}export{F as n,P as r,I as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Kt as e,Ot as t,Xt as n,dt as r}from"./color-DRZEEJuf.mjs";import{a as i,n as a,t as o}from"./provider-evidence-CQl_J-gP.mjs";import{r as s}from"./lifecycle-observations-AFJINgqR.mjs";import{n as c}from"./agents-BHbkPVvR.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:B(t.signal)});continue}let a;try{a=await j(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:Te(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`updated`}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(R),n=[];for(let r of t){let t=await A(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Ce(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind!==`blocked`||e.category!==`unsafe-source`)return!1;let t=e.before;return t.observation.kind===`absent`&&t.observation.drift.kind===`none`&&!t.executable.present&&t.binding===void 0&&t.persistedBinding===void 0&&t.installedState===void 0&&t.receipt===void 0}async function A(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:B(t.signal)};let r=ve(n);if(!r)return{before:n,category:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:`The recorded update source does not match live provider evidence.`};let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return xe(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions}}}async function j(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:B(t.signal)};let n=()=>_e(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function _e(e,t){let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let a=ye(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=be(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:we(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}function ve(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function ye(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function be(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function xe(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${L(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,plannedTargetVersion:r,planning:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${i.decision};plan=${L(i.plan.id)};version=${L(r)};${I(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${Se(t.providerOutcome)}`}function Se(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${L(e.reason)}`}}function P(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function Ce(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;return`provider=${L(t.binding.providerId)};${I(t.providerOptions)}`}function I(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function R(e,t){return e<t?-1:e>t?1:0}function z(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function we(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Te(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ee(e,t=e=>c(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function De(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:c(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`){let t=K(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Le(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Oe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`)a=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Re(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function ke(e,t={}){let n=t.observe??s,r=Ee(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Me((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ae(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ae(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!je(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function je(e){try{return d(g(e.items))===d(e)}catch{return!1}}function V(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Me(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=Ne(n[e],r[e]);if(t!==0)return t}return 0})}function Ne(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Pe(t,n={}){let r=n.observe??s,i=await r(t),a=i?.agent.name??t,o=i?ze(i):void 0,c=n.observeProviderTarget??He,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Ge(await Ue(c,o.binding),o.binding)&&await We(l,o.executableName)===!1)return Ve(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Be({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=Fe(n.observation);if(i!==`clear`)return{kind:i};let o=await Ue(c,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let s=await We(l,t.executableName);return s===void 0?{kind:`inconclusive`}:s?{kind:`drifted`}:{kind:`satisfied`}}}}function Fe(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function Ie(e,t,n={}){let r=await(n.observe??s)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??s)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??s)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Le(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ke(c)||!qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Re(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!je(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=Le({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(e,t,n=e.receipt){let r={agentTargetId:t.before.agent.name,expectedVersion:t.plannedTargetVersion,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},i=q(e,r,n);if(i!==`satisfied`)return{kind:i};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let a=e.observation,o=W([e.executable.version,a.version])[0];return{evidence:{postcondition:{agentTargetId:r.agentTargetId,expectedVersion:r.expectedVersion,kind:`version-satisfies`,providerId:r.providerId,providerTargetKind:r.providerTargetKind,targetId:r.providerTargetId},receipt:{agentTargetId:r.agentTargetId,executableName:n.executableName??e.agent.binaryName,...a.executablePath?{executablePath:a.executablePath}:{},providerId:r.providerId,providerTargetKind:r.providerTargetKind,schemaVersion:n.schemaVersion,targetId:r.providerTargetId,version:o}},kind:`compatible`}}function q(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!a(i,e.binding,e.agent.binaryName)||!a(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let o=W([e.executable.version,e.observation.version]);if(o.length===0)return`inconclusive`;if(o.length>1)return`drifted`;let s=t(o[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function ze(e){let t=e.receipt?i(e.receipt):void 0;if(!(!t||!e.binding||!a(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Be(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ke(o)||!qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Ve(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function He(e){let t=n();try{return await t.run(()=>o(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Ue(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function We(e,t){try{return await e(t)}catch{return}}function Ge(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ke(e){return r.includes(e)}function qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{De as a,j as c,re as d,d as f,Ie as i,he as l,ke as n,Ee as o,Oe as r,pe as s,Pe as t,A as u};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,r as t,t as n}from"./color-DRZEEJuf.mjs";import{n as r}from"./lifecycle-observations-AFJINgqR.mjs";import{t as i}from"./agent-inspection-YgRBlO4j.mjs";async function a(){return e(t({action:`list`,data:{agents:(await r()).map(i).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`}}),o)}function o(e){console.log(n.bold(`
|
|
2
|
+
AI Agents:
|
|
3
|
+
`));for(let t of e.data?.agents??[]){let e=t.displayName.padEnd(18),r=t.installed?n.green(`installed`):n.gray(`not installed`),i=t.installed?n.dim(t.installedVersion??`unknown version`):``,a=t.installed?n.cyan(t.updateLabel):``,o=t.installed?n.dim(t.sourceLabel):``;console.log(` ${e} ${r} ${i}${a?` ${a}`:``}${o?` ${o}`:``}`)}console.log()}export{a as listCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ct as e,Dt as t,Et as n,Gt as r,Ht as i,L as a,M as o,O as s,Rt as c,S as ee,St as te,Tt as ne,Vt as re,Wt as ie,Xt as l,_t as ae,an as u,at as d,bt as f,dt as p,ft as oe,gt as se,ht as ce,it as m,lt as h,mt as le,nt as g,pt as ue,rn as _,tn as v,ut as de,vt as fe,wt as pe,xt as me,yt as y}from"./color-DRZEEJuf.mjs";import b from"node:process";import{AsyncLocalStorage as he}from"node:async_hooks";async function x(e){let t=r(),n=typeof e==`function`?e(t):e;try{return b.platform===`win32`?await _(v([`powershell.exe`,`-Command`,n]))===0:await _(v([`sh`,`-c`,n]))===0}catch{return!1}}function S(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>C(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?C(i,i=>t.install({context:i,target:w(e,n,void 0,r)})):k(`install`),uninstall:async(e,n,r,i)=>t.uninstall?C(i,i=>t.uninstall({context:i,target:w(e,n,r?.binaryName)})):k(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return k(`update`);let a=T(r);return C(i,i=>t.update({context:i,...a?{options:a}:{},target:w(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return k(`update-many`);let i=T(n);return C(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>w(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function C(e,t){if(e)return t(e);let n=l();try{return await t(n.context)}finally{n.dispose()}}function w(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function T(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function E(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>C(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?C(a,a=>t.install({context:a,target:i(e,n,r)})):k(`install`),uninstall:async(e,n,r,a)=>t.uninstall?C(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):k(`uninstall`),update:async(e,n,r,a)=>t.update?C(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):k(`update`),updateMany:async(e,n,r)=>t.updateMany?C(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):k(`update-many`)}}const D={brew:E(`brew`,ie,e=>e===`cask`?`cask`:`formula`),bun:S(`bun`,t,{getInstalledVersion:e=>re(e),probePackagePresence:e=>i(e)}),cargo:E(`cargo`,n,()=>`package`),deno:E(`deno`,ne,()=>`tool`),mise:E(`mise`,f,()=>`tool`,{getInstalledVersion:e=>me(e),probePackagePresence:e=>te(e)}),npm:S(`npm`,ae,{getInstalledVersion:e=>fe(e),probePackagePresence:e=>y(e)}),pip:E(`pip`,se,()=>`package`),uv:E(`uv`,ue,()=>`tool`,{getInstalledVersion:e=>le(e),probePackagePresence:e=>ce(e)}),winget:E(`winget`,oe,()=>`id`)},ge=Object.fromEntries(Object.entries(D).map(([e,t])=>[e,ve(t)]));function _e(e){return ge[e]}function O(e){return D[e]}function ve(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function k(e){return{kind:`unsupported`,operation:e}}const A={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},j=new he;function M(e){return j.getStore()?e():a(A,()=>j.run(!0,e))}async function N(){return(await c()).defaultPackageManager}async function P(){return{npmBunUpdateStrategy:(await c()).npmBunUpdateStrategy}}async function F(e){let t=r(),n=e.platforms[t];if(!n)return[];let i=await N();return i?[...n.filter(e=>e.type===i),...n.filter(e=>e.type!==i)]:[...n]}async function I(e,t,n,r,i,a,o,s){if(!s){let s=l();try{return await I(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=O(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function L(t,n,r,i){if(h(n.type)){let e=g(t,n);return e?I(n.type,e,n.binaryName??t.binaryName,n.packageInstallArgs,n.packageTargetKind,r,i):{kind:`failed`,reason:`package target is missing for ${t.name}`,retryable:!1}}if(r===`update`&&!d(n.type))return{kind:`unsupported`,operation:`update`};if(!n.command)return{kind:`failed`,reason:`install effect is missing for ${t.name}`,retryable:!1};let a=n.type===`script`?pe:e,o=l();try{return await a.install?.({context:o.context,target:{binaryName:n.binaryName??t.binaryName,effect:{command:n.command,kind:`shell-script`},id:t.name,kind:n.type}})??{kind:`unsupported`,operation:r}}finally{o.dispose()}}function R(e,t){if(e.packageName)return e.packageName;if(!(!t||!h(e.installType)))return g(t,{type:e.installType})}async function z(e,t,n){if(h(e.installType)){let r=R(e,n?.agent);return r?I(e.installType,r,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await x(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function B(e,t){if(!h(t.type))return;let n=g(e,t);n&&await I(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}async function ye(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await x(e.join(` `)))return!0;return!1}function V(e,t){let n={agentName:e.name,installType:t.type,packageName:g(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function be(e,t){if(u().cancelled)return null;let n=V(e,t);return u().cancelled?null:(await o(n),u().cancelled?(await s(e.name),null):n)}async function H(e,t){return M(async()=>{let n=t?[...t]:await F(e),r;for(let t of n){if(u().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await L(e,t,`install`);if(n.kind===`success`)return u().cancelled?(await B(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:V(e,t)}};let i=J(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,u().cancelled)return await B(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function xe(e){return M(async()=>{let t=await H(e);if(t.kind!==`success`||!t.value.installedState)return q(t);try{return u().cancelled?(await G(e,t.value.installedState),{success:!1}):(await o(t.value.installedState),u().cancelled?(await s(e.name),await G(e,t.value.installedState),{success:!1}):q(t))}catch(n){throw await G(e,t.value.installedState),n}})}async function Se(e,t){return M(async()=>{let{npmBunUpdateStrategy:n}=await P(),r=await F(e),i=t&&h(t.installType)?R(t,e):void 0,a=t?await z(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return u().cancelled||(await o(t),u().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return J(a);if(!t)for(let t of r){let r=await L(e,t,`update`,n);if(r.kind===`success`){let n=await be(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return J(r)}return(!t||!h(t.installType)||i)&&await ye(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function U(e,t){return q(await Se(e,t))}async function Ce(e,t){return M(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=O(e);return await r.isAvailable()?(await r.updateMany(n,await P())).kind===`success`:!1})}async function we(e,t,n){let r=O(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function Te(e,t){if(!h(e.installType))return!1;let n=O(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=R(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Ee(e){return(await M(async()=>{let t=await ee(e.name);return t?W(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function W(e,t){if(!m(t.installType))return await s(e.name),{kind:`success`,value:{installedState:t}};let n=await z(t,`uninstall`,{agent:e});return n.kind===`success`||await Te(t,e)?(await s(e.name),{kind:`success`,value:{installedState:t}}):J(n)}async function De(e,t){let n=await z(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:J(n)}async function G(e,t){if(!m(t.installType)||!h(t.installType))return;let n=R(t,e);n&&await I(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}function K(){let e=u().timeoutMs;return{signal:new AbortController().signal,timeoutMs:e===void 0?5e3:Math.max(10,Math.min(e,5e3))}}function q(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function J(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}function Y(e,t){let n=$(t.installType);if(!n)return;let r=je(e,t);if(r)return{providerId:n,target:{...t.packageInstallArgs?.length?{arguments:t.packageInstallArgs}:{},...t.binaryName||n===`binary`||n===`script`?{binaryName:t.binaryName??e.binaryName}:{},id:r,kind:Q(n,t.packageTargetKind)}}}function Oe(e){let t=$(e.providerId);if(!(!t||e.providerTargetId.length===0)&&!(t===`brew`&&e.providerTargetKind!==`cask`&&e.providerTargetKind!==`formula`))return{providerId:t,target:{...e.executableName?{binaryName:e.executableName}:{},id:e.providerTargetId,kind:e.providerTargetKind??Q(t)}}}async function ke(e,t){let n=(t.registry??de).get(e.providerId);return n?n.observe({context:{signal:t.signal,timeoutMs:t.timeoutMs},target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}function X(e,t){return Y(e,{agentName:e.name,...t.binaryName?{binaryName:t.binaryName}:{},...t.command?{command:t.command}:{},installType:t.type,...t.packageInstallArgs?{packageInstallArgs:t.packageInstallArgs}:{},...t.packageName?{packageName:t.packageName}:{},...t.packageTargetKind?{packageTargetKind:t.packageTargetKind}:{}})}function Ae(e,t){let n=(e.platforms[t]??[]).map(t=>({binding:X(e,t),method:t})),r=n.map(e=>e.binding).filter(e=>e!==void 0);return{bindings:r.filter((t,n)=>r.findIndex(n=>Z(n,t,e.binaryName))===n),unresolvedCandidates:n.filter(e=>e.binding===void 0).map(e=>e.method)}}function Z(e,t,n){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&(e.target.binaryName??n)===(t.target.binaryName??n)}function je(e,t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;switch(t.installType){case`bun`:case`npm`:return e.packages?.npm;case`cargo`:return e.packages?.cargo;case`deno`:return e.packages?.deno;case`mise`:return e.packages?.mise;case`pip`:return e.packages?.pip;case`uv`:return e.packages?.uv;case`binary`:case`script`:return e.binaryName;case`brew`:case`winget`:return}}function Q(e,t){switch(e){case`binary`:return`binary`;case`brew`:return t===`cask`?`cask`:`formula`;case`deno`:case`mise`:case`uv`:return`tool`;case`script`:return`script`;case`winget`:return`id`;case`bun`:case`cargo`:case`npm`:case`pip`:return`package`}}function $(e){return p.includes(e)?e:void 0}export{Ce as _,Oe as a,we as c,H as d,De as f,U as g,W as h,X as i,F as l,Ee as m,Z as n,Y as o,G as p,Ae as r,V as s,ke as t,xe as u,M as v,_e as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ut as e}from"./color-DRZEEJuf.mjs";const t=Object.freeze([`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`]);async function n(t){let n=t.registry??e;return Promise.all(n.list().map(async e=>({availability:await i(e.availability,t.context),capabilities:n.getCapabilities(e.id),id:e.id})))}function r(e,n){let r=new Map(e.map(e=>[e.id,e]));return Object.fromEntries(t.map(e=>{let t=r.get(e);if(!t)throw Error(`Provider snapshot is missing first-party adapter: ${e}`);return[e,n(t)]}))}async function i(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}export{r as n,n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./resolve-D8sxYL1V.mjs";export{e as resolveCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-DRZEEJuf.mjs";import{r as o}from"./lifecycle-observations-AFJINgqR.mjs";import{t as s}from"./agent-inspection-YgRBlO4j.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c);if(!d.inPath||!d.binaryPath){let i=d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})).filter(e=>e.command);return n(r({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:i,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.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:i,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},message:`${u.displayName} is not installed.`},target:{kind:`agent`,name:u.name}}),l)}return n(i({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:d.binaryPath,installed:!0,installSource:d.installedState?.installType??`detected-in-path`,installedVersion:d.installedVersion,lifecycle:d.lifecycle,sourceLabel:d.sourceLabel,suggestedLaunchCommand:[d.binaryPath]}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));let t=e.data?.resolution.installGuidance;if(t){console.log(a.dim(`Try: ${t.suggestedEnsureCommand}`));for(let e of t.installMethods)console.log(a.dim(`Install: [${e.label}] ${e.command}`))}return}e.data&&(console.log(a.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{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./schema-CGsjqfua.mjs";export{e as schemaCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{V as e,a as t,n,r,t as i}from"./color-DRZEEJuf.mjs";async function a(e){let i=s(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(n({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),o):t(r({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),o)}function o(e){if(e.error){console.log(i.red(e.error.message));return}if(e.data){console.log(i.bold(`
|
|
2
|
+
Quantex Schemas
|
|
3
|
+
`));for(let t of e.data.commands)console.log(` ${i.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function s(){return e().map(e=>e.schema)}export{a as n,s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,Kt as n,M as r,N as i,O as a,S as o,a as s,an as c,k as l,n as u,r as d,t as f}from"./color-DRZEEJuf.mjs";import{a as p,h as m,o as h,t as g,v as _}from"./provider-evidence-CQl_J-gP.mjs";import{n as v}from"./agents-BHbkPVvR.mjs";import{t as y}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as b,i as x,n as S,r as C}from"./user-output-CnLEBgDD.mjs";const w=e=>new Promise(t=>setTimeout(t,e));async function T(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??w,i=Math.max(0,t.delayMs??100);for(let a=0;a<n;a+=1){if(t.signal?.aborted||t.isCancelled?.())return!1;let o=await e();if(t.signal?.aborted||t.isCancelled?.())return!1;if(o)return!0;a+1<n&&await r(i)}return!1}async function E(f){let g=v(f);if(!g)return s(u({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:f},message:`Unknown agent: ${f}`},target:{kind:`agent`,name:f}}),N);try{return await _(async()=>{let[t,u]=await Promise.all([o(g.name),e(g.name)]);if(!t&&!u)return s(M(f,g),N);let _=await n(g.binaryName),v=t?h(g,t):void 0,y=u?p(u):void 0;if(t&&!v||u&&!y)return s(k(g,`indeterminate-source`,`Cannot resolve provider evidence for ${g.displayName}.`),N);if(v&&y&&!D(v,y))return s(k(g,`conflicting-source`,`Recorded sources disagree for ${g.displayName}.`),N);let b=v??y,x=await O(b);return x.kind===`success`?x.value.kind===`absent`?_?s(k(g,`conflicting-source`,`${g.displayName} is on PATH but its recorded provider target is absent.`),N):S()?s(A(g,`would reconcile stale lifecycle evidence`),N):(t&&await a(g.name),u&&await l(g.name),s(j(g),N)):t?S()?s(A(g,`would uninstall ${g.displayName}`),N):(u||await i({...b.target.binaryName?{executableName:b.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:b.providerId,providerTargetId:b.target.id,providerTargetKind:b.target.kind,schemaVersion:1,targetId:g.name,verifiedAt:new Date().toISOString(),...x.value.executablePath?{executablePath:x.value.executablePath}:{},...x.value.version?{version:x.value.version}:{}}),(await m(g,t)).kind===`success`?await T(async()=>{let e=await O(b);return e.kind!==`success`||e.value.kind!==`absent`?!1:!await n(g.binaryName)},{isCancelled:()=>!!c().cancelled})?(await l(g.name),s(d({action:`uninstall`,data:{agent:{displayName:g.displayName,name:g.name},changed:!0},target:{kind:`agent`,name:g.name}}),N)):(await r(t),s(k(g,`verification-failed`,`${g.displayName} is still present after provider removal.`),N)):s(k(g,`provider-failure`,`Failed to uninstall ${g.displayName}.`),N)):s(k(g,`indeterminate-source`,`Cannot safely reconstruct ${g.displayName}'s uninstall source.`),N):s(k(g,`indeterminate-source`,`Cannot verify provider state for ${g.displayName}.`),N)})}catch(e){if(t(e))return s(u({action:`uninstall`,data:{agent:{displayName:g.displayName,name:g.name},changed:!1},...y(e,{kind:`agent`,name:g.name})}),N);throw e}}function D(e,t){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&e.target.binaryName===t.target.binaryName}async function O(e){let t=c(),n=new AbortController;return t.cancelled&&n.abort(`cli-cancelled`),g(e,{signal:n.signal,timeoutMs:t.timeoutMs})}function k(e,t,n){return u({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:t},message:n},target:{kind:`agent`,name:e.name}})}function A(e,t){return d({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${t}.`}]})}function j(e){return d({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.displayName} was already absent; stale lifecycle evidence was removed.`}]})}function M(e,t){return u({action:`uninstall`,data:{agent:{displayName:t.displayName,name:t.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:t.displayName,input:e,lifecycle:`unmanaged`,name:t.name},message:`${t.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${t.name} for details.`},target:{kind:`agent`,name:t.name}})}function N(e){if(e.error){C(f.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)b(f.yellow(t.message));return}x(f.cyan(`Uninstalling ${e.data.agent.displayName}...`)),x(f.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{E as uninstallCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{E as r,I as i,J as a,Rt as o,Xt as s,a as c,an as l,i as u,n as d,r as f,t as p,ut as m}from"./color-DRZEEJuf.mjs";import{r as h}from"./agents-Dc-rbRUf.mjs";import{v as g}from"./provider-evidence-CQl_J-gP.mjs";import{t as _}from"./update-planner-BhJnvNKA.mjs";import{t as v}from"./lifecycle-observations-AFJINgqR.mjs";import{n as y}from"./agents-BHbkPVvR.mjs";import{a as b,i as x,n as S,r as C}from"./user-output-CnLEBgDD.mjs";import{a as w,c as T,l as E,r as D,s as O,u as k}from"./lifecycle-policy-Djgq_8nm.mjs";async function A(){let e=j();try{return await e.run()}finally{e.dispose()}}function j(){let e=s(),t=0,n=!1,a=!1,c,l,u,d,f=()=>{!n||a||t>0||(a=!0,e.dispose())},p=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,f()}},y=()=>(u??=o().then(t=>{let n=v(e.context);return{classifyMutationLockError:e=>i(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:S(),listRegisteredAgentNames:()=>h().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:_,providerRegistry:m,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:g,writeReceipt:r.write}}),u),b=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(l??=p(async()=>E(await y())),l);return{dispose(){n||(n=!0,f())},getOutcome:()=>c,async observe(e){return p(async()=>(await y()).observe(e))},prepare:b,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(d??=(async()=>{let e=await b();return c=await p(async()=>O(e,await y())),c})(),d)}}}async function M(e){let t=N(e);try{return await t.run()}finally{t.dispose()}}function N(e){let t=s(),n=0,i=!1,a=!1,c,l,u,d,f=()=>{!i||a||n>0||(a=!0,t.dispose())},p=async e=>{if(i)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},h=()=>(u??=o().then(e=>{let n=v(t.context);return{clock:()=>new Date().toISOString(),dryRun:S(),observe:n.resolveAgentObservation,planLifecycleUpdate:_,providerRegistry:m,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:g,writeReceipt:r.write}}),u),y=()=>i?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(l??=p(async()=>k(e,await h())),l);return{dispose(){i||(i=!0,f())},getOutcome:()=>c,async observe(e){return p(async()=>(await h()).observe(e))},prepare:y,run(){return i?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(d??=(async()=>{let e=await y();return c=e.kind===`planned`?await p(async()=>T(e.planned,await h())):e,c})(),d)}}}async function P(e,t,n={runBatch:A,runSingle:M}){if(t)return I(n);if(!e)return c(d({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),G);let r=y(e);return r?L(r,n):c(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),G)}function F(e,t){if(t){let t=j();return{dispose:t.dispose,idempotencyPolicy:()=>D(t),run:()=>P(e,!0,{runBatch:()=>t.run(),runSingle:M})}}if(!e)return{dispose(){},run:()=>P(e,t)};let n=N(e);return{dispose:n.dispose,idempotencyPolicy:()=>w(e,n),run:()=>P(e,!1,{runBatch:A,runSingle:()=>n.run()})}}async function I(e){u({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=B(t);return U(t)?c(d({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`}}),G):n.some(e=>e.status===`failed`||e.status===`locked`)?c(d({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`}}),G):c(f({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`}}),G)}async function L(e,t){u({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!i(t))throw t;return c(d({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),G)}let r=z(n);if(n.kind===`unknown-agent`)return c(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),G);if(r?.observation.kind===`absent`)return c(d({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name}}),G);let a=R(e,n);return W([],a),n.kind===`cancelled`?c(d({action:`update`,data:{results:[a],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),G):a.status===`failed`||a.status===`locked`?c(d({action:`update`,data:{results:[a],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),G):c(f({action:`update`,data:{results:[a],scope:`single`},target:{kind:`agent`,name:e.name}}),G)}function R(t,n){let r=z(n),i=`plan`in n?n.plan:void 0,a=r?.observation.kind===`present`?r.observation.version:void 0,o=i?.plannedTargetVersion,s=i?`managed/${i.binding.providerId}`:r?.binding?.providerId;switch(n.kind){case`updated`:return{displayName:t.displayName,installedVersion:a,latestVersion:n.receipt.version??o,name:t.name,status:`updated`,strategy:s};case`dry-run`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:s};case`not-executed`:return n.plan.planning.decision===`up-to-date`?{displayName:t.displayName,installedVersion:a,latestVersion:o,name:t.name,status:`up-to-date`}:{displayName:t.displayName,installedVersion:a,latestVersion:o,message:e(t),name:t.name,status:`manual-required`};case`blocked`:return{displayName:t.displayName,installedVersion:a,message:n.reason,name:t.name,status:`failed`};case`cancelled`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:n.reason??`Update was cancelled before it could complete.`,name:t.name,status:`failed`,strategy:s};case`timed-out`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:`Update timed out after ${n.timeoutMs}ms.`,name:t.name,status:`failed`,strategy:s};case`provider-failed`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,name:t.name,status:`failed`,strategy:s};case`verification-failed`:case`receipt-failed`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:n.kind===`receipt-failed`?n.reason:n.verification.reason,name:t.name,status:`failed`,strategy:s};case`unknown-agent`:return{displayName:t.displayName,name:t.name,status:`failed`}}}function z(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function B(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);e?W(r,V(e)):a&&W(r,H(a))}return r}function V(r){let i=r.planning.kind===`unknown-agent`?void 0:r.planning.kind===`planned`?r.planning.planned.before:r.planning.before,o=y(r.agentName);if(!o)return{displayName:i?.agent.displayName??r.agentName,name:r.agentName,status:`failed`};let s=r.execution;if(r.planning.kind===`blocked`&&r.planning.category===`untracked`)return{displayName:o.displayName,installedVersion:r.planning.before.observation.kind===`present`?r.planning.before.observation.version:void 0,message:t(o),name:o.name,status:`manual-required`};if(r.planning.kind===`blocked`&&r.planning.category===`manual-required`)return{displayName:o.displayName,installedVersion:r.planning.before.observation.kind===`present`?r.planning.before.observation.version:void 0,message:e(o),name:o.name,status:`manual-required`};if(s?.kind===`locked`)return{displayName:o.displayName,installedVersion:s.plan.before.observation.kind===`present`?s.plan.before.observation.version:void 0,latestVersion:s.plan.plannedTargetVersion,message:s.reason,name:o.name,resource:s.resource,status:`locked`,strategy:`managed/${s.plan.binding.providerId}`};if(s?.kind===`unexpected-failure`)return{displayName:o.displayName,installedVersion:s.plan.before.observation.kind===`present`?s.plan.before.observation.version:void 0,latestVersion:s.plan.plannedTargetVersion,message:s.reason,name:o.name,status:`failed`,strategy:`managed/${s.plan.binding.providerId}`};let c=s??(r.planning.kind===`planned`?{kind:`not-executed`,plan:r.planning.planned}:r.planning),l=R(o,c);return l.status===`failed`&&c.kind===`provider-failed`&&(l.hint=n(o,a({agent:o,installedState:i?.installedState,methods:[...i?.methods??[]]}))),l}function H(e){let t=y(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:e.planning.planned.plannedTargetVersion,message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:`managed/${e.planning.planned.binding.providerId}`}}function U(e){return l().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function W(e,t){e.push(t),u({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function G(e){if(!e.data){e.error&&C(p.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`up-to-date`:x(p.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:b(p.yellow(`${t.displayName}: manual action required.`)),t.message&&b(p.cyan(`Next step: ${t.message}`));break;case`planned`:b(p.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${K(t.installedVersion,t.latestVersion)}`));break;case`updated`:x(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${K(t.installedVersion,t.latestVersion)}`)),x(p.green(`${t.displayName} updated successfully!`));break;case`failed`:x(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${K(t.installedVersion,t.latestVersion)}`)),C(p.red(`Failed to update ${t.displayName}.`)),t.hint&&b(p.cyan(`Next step: ${t.hint}`));break;case`locked`:b(p.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&q(e.data.results),!e.data.results.length&&e.error&&C(p.red(e.error.message))}function K(e,t){return e?` (${e} -> ${t??`latest`})`:``}function q(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&&x(p.bold(`Summary: ${n.join(`, `)}`))}export{F as createUpdateCommandInvocation};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ot as e}from"./color-DRZEEJuf.mjs";const t=[`observe`,`update`,`verify`];function n(e){let t=i(e),n=r(e,t);return{decision:n,plan:{id:`update-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:n===`upgrade`?[o(e,t)]:[]}}}function r(n,r){let{observation:i}=n;if(a(n))return`blocked-source`;if(i.kind!==`present`||i.drift.kind===`indeterminate`)return`indeterminate`;let o=n.intent.targetVersion;if(!i.version||!o)return`indeterminate`;let s=e(o,i.version);return s===void 0?`indeterminate`:s<0?`blocked-downgrade`:s===0?`up-to-date`:!r||!t.every(e=>r.capabilities.includes(e))?`manual-required`:`upgrade`}function i(e){if(!a(e))return e.provider}function a(e){let{observation:t,provider:n}=e;return t.targetId!==e.intent.targetId||t.drift.kind===`conflicting-source`?!0:t.kind!==`present`||!n?!1:t.providerId!==n.providerId||t.providerTargetId!==n.targetId||t.providerTargetKind!==n.targetKind}function o(e,t){return{dependsOn:[],effects:[{capability:`${t.providerId}-observe`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-update`,kind:`provider-mutation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-verify`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId}],id:`update-${e.intent.targetId}`,kind:`operation`,postconditions:[{expectedVersion:e.intent.targetVersion,kind:`version-satisfies`,targetId:t.targetId}],preconditions:[]}}export{n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ot as e,Zt as t,a as n,an as r,b as i,d as a,en as o,f as s,h as c,l,n as u,nn as d,on as f,p,r as m,t as h}from"./color-DRZEEJuf.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-CnLEBgDD.mjs";import{n as b,t as x}from"./version-cache-BRDGus3W.mjs";const S={platform:process.platform,spawn:(e,t)=>o(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:d,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=r(),t=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&t.cancel(`cancelled`);let n=f(()=>t.cancel(`cancelled`)),i=!1,a={plan:e=>p({context:e.context,metadataCache:e.metadataCache,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>l(e,t)};return{dispose(){i||(i=!0,n())},run:e=>k(e,t,a)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:c(),network:T(),persistence:i(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}async function P(e={}){let r=v(),i=j(),o=await i.run({check:e.check??!1,dryRun:r,updateChannel:e.channel}).finally(()=>i.dispose());if(o.kind===`interrupted`)throw new t({kind:`cancelled`,reason:o.error.message});let c=o.plan,l=s(c),d=I(l),f=R(l);if(c.status===`up-to-date`)return n(m({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:[...d,...f?[f]:[]]}),F);if(e.check||r)return c.status===`update-available`?n(m({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:[...d,...f?[f]:[],...r?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),F):n(u({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:[...d,...f?[f]:[]]}),F);if(c.status===`manual-required`){let e=a(l);return n(u({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:[...d,...f?[f]:[]]}),F)}if(o.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let p=o.result;if(p.success)return n(m({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:[...d,...f?[f]:[]]}),F);let h=a(l,p);return n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:h,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:p.error?.kind?{kind:p.error.kind}:void 0,message:p.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...h?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${h}`}]:[]]}),F)}function F(e){if(!e.data){e.error&&y(h.red(e.error.message));return}if(e.data.status===`up-to-date`){_(h.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),L(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;g(h.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),L(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(h.yellow(e.error.message)),L(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){g(h.yellow(e.error.message)),e.data.recoveryHint&&g(h.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(_(h.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){_(h.green(`Quantex CLI upgraded successfully.`)),L(e.warnings);return}y(h.red(`Failed to upgrade Quantex CLI.`)),g(h.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)g(h.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function I(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 L(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(h.yellow(t.message))}function R(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{an as e}from"./color-DRZEEJuf.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$t as e,Pt as t,an as n,en as r,nn as i}from"./color-DRZEEJuf.mjs";import{dirname as a,join as o}from"node:path";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";const u={platform:process.platform,spawn:(e,t)=>r(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:i,writeStderr:e=>{process.stderr.write(e)}};function d(t=u){return{async run(n){if(n.signal.aborted)return p(n.signal);let r;try{r=t.spawn(n.argv,{...n.cwd?{cwd:n.cwd}:{},detached:t.platform!==`win32`,...n.env?{env:{...process.env,...n.env}}:{},stdio:n.stdio})}catch(e){return m(`failed`,g(e,`Failed to launch agent process.`))}let i=e(r),a,o,s=new Promise(e=>{o=()=>e({kind:`cancelled`}),n.signal.addEventListener(`abort`,o,{once:!0}),n.signal.aborted&&o()}),c=i.then(e=>({kind:`completed`,result:e})),l=n.timeoutMs===void 0?void 0:new Promise(e=>{a=setTimeout(()=>e({kind:`timed-out`}),n.timeoutMs)});try{let e=await Promise.race(l?[c,s,l]:[c,s]);if(e.kind===`completed`)return f(e.result,n,t);if(e.kind===`cancelled`)return await t.terminate(r),await i.catch(()=>void 0),p(n.signal);let a=await v(c,_(n.timeoutMs));return a?f(a.result,n,t):(await t.terminate(r),await i.catch(()=>void 0),m(`timed-out`,`Agent process timed out after ${n.timeoutMs}ms.`))}finally{a&&clearTimeout(a),n.signal.removeEventListener(`abort`,o)}}}}function f(e,t,n){t.forwardPipedOutput!==!1&&(t.stdio?.[1]===`pipe`&&e.stdout&&n.writeStderr?.(e.stdout),t.stdio?.[2]===`pipe`&&e.stderr&&n.writeStderr?.(e.stderr));let r=new TextEncoder;return{kind:`success`,value:{exitCode:e.exitCode,...e.stderr?{stderr:r.encode(e.stderr)}:{},...e.stdout?{stdout:r.encode(e.stdout)}:{}}}}function p(e){return m(`cancelled`,h(e)??`Agent process was cancelled.`)}function m(e,t){return{error:{kind:e,message:t},kind:`failure`}}function h(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function g(e,t){return e instanceof Error&&e.message.trim()?e.message:t}function _(e){return Math.max(1,Math.min(e,250))}async function v(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function y(e={}){let r=e.filePath??o(t(),`cache`,`versions.json`),i=e.getCacheMode??(()=>n().cacheMode??`default`),a=e.now??Date.now;return{async read(e){let t=T(e.signal);if(t)return t;if(i()===`no-cache`)return C({kind:`miss`});try{let t=await b(r),n=T(e.signal);if(n)return n;let i=t.entries[e.key];if(!i||i.expiresAt<=a())return C({kind:`miss`});try{return C({expiresAtMs:i.expiresAt,kind:`hit`,value:JSON.parse(i.body)})}catch{return w(`invalid-data`,`Cached value for ${e.key} is not valid JSON.`)}}catch(e){return E(e,`Failed to read the version cache.`)}},async remove(e){let t=T(e.signal);if(t)return t;if(i()===`no-cache`)return C(void 0);try{let t=await b(r);return T(e.signal)||(Object.hasOwn(t.entries,e.key)?(delete t.entries[e.key],await x(r,t),T(e.signal)??C(void 0)):C(void 0))}catch(e){return E(e,`Failed to remove a version cache entry.`)}},async write(e){let t=T(e.signal);if(t)return t;if(i()===`no-cache`)return C(void 0);try{let t=await b(r),n=T(e.signal);if(n)return n;let i=a(),o=JSON.stringify(e.value);return o===void 0?w(`invalid-data`,`Cached value for ${e.key} is not JSON serializable.`):(t.entries[e.key]={body:o,expiresAt:e.expiresAtMs??2**53-1,fetchedAt:i},await x(r,t),T(e.signal)??C(void 0))}catch(e){return E(e,`Failed to write the version cache.`)}}}}async function b(e){try{return S(JSON.parse(await c(e,`utf8`)))}catch(e){if(D(e)||e instanceof SyntaxError)return{entries:{}};throw e}}async function x(e,t){await s(a(e),{recursive:!0}),await l(e,`${JSON.stringify(t,null,2)}\n`,`utf8`)}function S(e){if(!O(e)||!O(e.entries))return{entries:{}};let t={};for(let[n,r]of Object.entries(e.entries))!O(r)||typeof r.body!=`string`||!k(r.expiresAt)||(t[n]={body:r.body,etag:typeof r.etag==`string`?r.etag:void 0,expiresAt:r.expiresAt,fetchedAt:k(r.fetchedAt)?r.fetchedAt:void 0});return{entries:t}}function C(e){return{kind:`success`,value:e}}function w(e,t,n){return{error:{code:n,kind:e,message:t},kind:`failure`}}function T(e){return e.aborted?w(`cancelled`,`Cache operation was cancelled.`):void 0}function E(e,t){return w(`failed`,t,O(e)&&typeof e.code==`string`?e.code:void 0)}function D(e){return O(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function O(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function k(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}export{d as n,y as t};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quantex-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.1",
|
|
4
4
|
"description": "Agent-friendly lifecycle CLI for AI coding assistant CLIs: install, inspect, update, uninstall, run, and automate Codex, Claude Code, Gemini, Cursor, OpenCode, and more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-cli",
|
|
@@ -79,12 +79,14 @@
|
|
|
79
79
|
"release:smoke": "bun run scripts/verify-release-smoke.ts",
|
|
80
80
|
"test": "vitest run",
|
|
81
81
|
"test:container": "bun run scripts/test-container.ts",
|
|
82
|
+
"test:readonly-smoke": "vitest run test/read-only-lifecycle-smoke.test.ts test/read-only-lifecycle-timeout.test.ts test/read-only-lifecycle-provider-timeout.test.ts test/read-only-lifecycle-provider-signal.test.ts test/read-only-spawn-guard.test.ts",
|
|
82
83
|
"test:sandbox": "bun run scripts/test-sandbox.ts",
|
|
83
84
|
"test:watch": "vitest",
|
|
84
85
|
"typecheck": "tsc --noEmit"
|
|
85
86
|
},
|
|
86
87
|
"dependencies": {
|
|
87
88
|
"commander": "^14.0.3",
|
|
89
|
+
"cross-spawn": "^7.0.6",
|
|
88
90
|
"picocolors": "^1.1.1",
|
|
89
91
|
"prompts": "^2.4.2",
|
|
90
92
|
"zod": "^4.3.6"
|
|
@@ -92,6 +94,7 @@
|
|
|
92
94
|
"devDependencies": {
|
|
93
95
|
"@fission-ai/openspec": "1.3.1",
|
|
94
96
|
"@types/bun": "^1.3.11",
|
|
97
|
+
"@types/cross-spawn": "^6.0.6",
|
|
95
98
|
"@types/node": "^25.0.1",
|
|
96
99
|
"@types/prompts": "^2.4.9",
|
|
97
100
|
"lint-staged": "^16.2.7",
|
|
@@ -109,11 +112,11 @@
|
|
|
109
112
|
},
|
|
110
113
|
"lint-staged": {
|
|
111
114
|
"*.{js,mjs,cjs,jsx,ts,mts,cts,tsx}": [
|
|
112
|
-
"oxfmt --write",
|
|
115
|
+
"oxfmt --write --no-error-on-unmatched-pattern",
|
|
113
116
|
"oxlint --fix"
|
|
114
117
|
],
|
|
115
118
|
"*.{json,jsonc,json5,html,css,scss,less}": [
|
|
116
|
-
"oxfmt --write"
|
|
119
|
+
"oxfmt --write --no-error-on-unmatched-pattern"
|
|
117
120
|
]
|
|
118
121
|
},
|
|
119
122
|
"engines": {
|
package/dist/agents-DcXYVqP3.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{At as e,Ct as t,Dt as n,Et as r,F as i,H as a,J as o,K as s,L as c,Ot as ee,Q as l,S as te,U as ne,V as re,W as ie,Y as u,_ as ae,b as oe,bt as se,d as ce,f as le,g as ue,h as de,j as d,lt as f,m as fe,p as pe,q as p,rt as m,v as me,wt as h,x as he,xt as ge,y as _e}from"./color-DQ26gyy0.mjs";import{a as ve,c as ye,d as be,i as xe,l as Se,m as Ce,n as we,o as Te,p as Ee,r as De,s as Oe,t as g,u as ke}from"./detect-D6EVk3qi.mjs";import Ae from"node:process";async function _(e){let t=g(),n=typeof e==`function`?e(t):e;try{return Ae.platform===`win32`?await u(o([`powershell.exe`,`-Command`,n]))===0:await u(o([`sh`,`-c`,n]))===0}catch{return!1}}function je(e){return e===`cask`?[`--cask`]:[]}async function v(e,t,n){try{return await u(o([`brew`,e,...je(n),t]))===0}catch{return!1}}async function Me(e,t){return v(`install`,e,t)}async function y(e,t){return v(`upgrade`,e,t)}async function Ne(e){for(let t of e)if(!await y(t.packageName,t.packageTargetKind))return!1;return!0}async function b(e,t){return v(`uninstall`,e,t)}async function x(e,t,n=[]){try{return await u(o([`cargo`,e,t,...n]))===0}catch{return!1}}async function S(e,t){return x(`install`,e,t)}async function C(e,t){return S(e,[`--force`,...t??[]])}async function Pe(e){for(let t of e)if(!await C(t.packageName,t.packageInstallArgs))return!1;return!0}async function Fe(e){return x(`uninstall`,e)}async function w(e,t=[],n={}){let r=[`deno`,`install`,`--global`];n.force&&r.push(`--force`),r.push(...t,e);try{return await u(o(r))===0}catch{return!1}}async function Ie(e,t){return w(e,t)}async function T(e,t){return w(e,t,{force:!0})}async function Le(e){for(let t of e)if(!await T(t.packageName,t.packageInstallArgs))return!1;return!0}async function Re(e){try{return await u(o([`deno`,`uninstall`,`--global`,e]))===0}catch{return!1}}async function E(e,t=!1){try{return await u(o([`mise`,`use`,`--global`,...t?[`--force`]:[],e]))===0}catch{return!1}}async function ze(e){return E(e)}async function D(e){return E(e,!0)}async function Be(e){for(let t of e)if(!await D(t.packageName))return!1;return!0}async function Ve(e){try{return await u(o([`mise`,`unuse`,`--global`,e]))===0}catch{return!1}}async function O(e){try{let{stdout:t}=await s(p([`mise`,`ls`,`--installed`,`--json`,e],{stdio:[`ignore`,`pipe`,`ignore`]}));if(!t.trim())return{presence:`unknown`};try{let n=JSON.parse(t);if(!A(n))return{presence:`unknown`};let r=k(n,e),i=r?n[r]:void 0;if(!Array.isArray(i)||i.length===0)return{presence:`absent`};let a=We(t,e);return a?{presence:`present`,version:a}:{presence:`present`}}catch{return{presence:`unknown`}}}catch{return{presence:`unknown`}}}async function He(e){return(await O(e)).presence}async function Ue(e){return(await O(e)).version}function We(e,t){try{let n=JSON.parse(e);if(!A(n))return;let r=k(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(A(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function k(e,t){if(Array.isArray(e[t]))return t;let n=t.split(`:`).pop()?.split(`/`).pop();if(n)return Object.keys(e).find(t=>t===n&&Array.isArray(e[t]))}function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let j=null;async function Ge(){if(j)return j;for(let e of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await s(p([...e,`--version`]));if(t===0)return j=e,e}catch{}return j=[`pip`],j}async function M(e){try{return await u(o([...await Ge(),...e]))===0}catch{return!1}}async function Ke(e){return M([`install`,e])}async function N(e){return M([`install`,`--upgrade`,e])}async function qe(e){if(e.length===0)return!0;for(let t of e)if(!await N(t.packageName))return!1;return!0}async function Je(e){return M([`uninstall`,`-y`,e])}async function P(e,t,n=[]){try{return await u(o([`uv`,`tool`,e,t,...n]))===0}catch{return!1}}async function Ye(e,t){return P(`install`,e,t)}async function F(e,t){return P(`upgrade`,e,t)}async function Xe(e){for(let t of e)if(!await F(t.packageName,t.packageInstallArgs))return!1;return!0}async function Ze(e){try{return await u(o([`uv`,`tool`,`uninstall`,e]))===0}catch{return!1}}async function I(e){try{let{stdout:t}=await s(p([`uv`,`tool`,`list`],{stdio:[`ignore`,`pipe`,`ignore`]}));if(!t.trim())return{presence:`unknown`};let n=tt(t,e);return n?{presence:`present`,version:n}:et(t)?{presence:`absent`}:{presence:`unknown`}}catch{return{presence:`unknown`}}}async function Qe(e){return(await I(e)).presence}async function $e(e){return(await I(e)).version}function et(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function tt(e,t){let n=L(t);for(let t of e.split(/\r?\n/)){let e=t.trim(),r=/^(\S+)\s+v([^\s]+)/.exec(e);if(!r)continue;let[,i,a]=r;if(L(i)===n)return a}}function L(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}async function R(e,t){try{return await u(o([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function nt(e){return R(`install`,e)}async function z(e){return R(`upgrade`,e)}async function rt(e){for(let t of e)if(!await z(t.packageName))return!1;return!0}async function it(e){return R(`uninstall`,e)}const at={brew:{type:`brew`,isAvailable:async()=>De(),install:async(e,t)=>Me(e,t),uninstall:async(e,t)=>b(e,t),update:async(e,t)=>y(e,t),updateMany:async e=>Ne(e)},bun:{type:`bun`,getInstalledVersion:async e=>ae(e),probePackagePresence:async e=>_e(e),isAvailable:async()=>xe(),install:async e=>me(e),uninstall:async e=>oe(e),update:async(e,t,n)=>he(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>te(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},cargo:{type:`cargo`,isAvailable:async()=>ve(),install:async(e,t,n)=>S(e,n),uninstall:async e=>Fe(e),update:async(e,t,n)=>C(e,n?.packageInstallArgs),updateMany:async e=>Pe(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},deno:{type:`deno`,isAvailable:async()=>Te(),install:async(e,t,n)=>Ie(e,n),uninstall:async(e,t,n)=>Re(n?.binaryName??e),update:async(e,t,n)=>T(e,n?.packageInstallArgs),updateMany:async e=>Le(e.map(e=>({binaryName:e.binaryName,packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},mise:{type:`mise`,getInstalledVersion:async e=>Ue(e),probePackagePresence:async e=>He(e),isAvailable:async()=>Oe(),install:async e=>ze(e),uninstall:async e=>Ve(e),update:async e=>D(e),updateMany:async e=>Be(e.map(e=>({packageName:e.packageName})))},npm:{type:`npm`,getInstalledVersion:async e=>ce(e),probePackagePresence:async e=>pe(e),isAvailable:async()=>ye(),install:async e=>le(e),uninstall:async e=>fe(e),update:async(e,t,n)=>de(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>ue(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},pip:{type:`pip`,isAvailable:async()=>Se(),install:async e=>Ke(e),uninstall:async e=>Je(e),update:async e=>N(e),updateMany:async e=>qe(e.map(e=>({packageName:e.packageName})))},uv:{type:`uv`,getInstalledVersion:async e=>$e(e),probePackagePresence:async e=>Qe(e),isAvailable:async()=>ke(),install:async(e,t,n)=>Ye(e,n),uninstall:async e=>Ze(e),update:async(e,t,n)=>F(e,n?.packageInstallArgs),updateMany:async e=>Xe(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},winget:{type:`winget`,isAvailable:async()=>be(),install:async e=>nt(e),uninstall:async e=>it(e),update:async e=>z(e),updateMany:async e=>rt(e.map(e=>({packageName:e.packageName})))}};function B(e){return at[e]}const V={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function ot(){return(await m()).defaultPackageManager}async function H(){return{npmBunUpdateStrategy:(await m()).npmBunUpdateStrategy}}async function U(e){let t=g(),n=e.platforms[t];if(!n)return[];let r=await ot();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function W(e,t,n,r,i,a,o){let s=B(e);return await s.isAvailable()?a===`install`?s.install(t,i,r):a===`update`?s.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r}):s.uninstall(t,i,{binaryName:n}):!1}async function G(t,r,i,a){if(e(r.type)){let e=h(t,r);return e?W(r.type,e,r.binaryName??t.binaryName,r.packageInstallArgs,r.packageTargetKind,i,a):!1}return i===`update`&&!n(r.type)||!r.command?!1:_(r.command)}function K(t,n){if(t.packageName)return t.packageName;if(!(!n||!e(t.installType)))return h(n,{type:t.installType})}async function q(t,n,r){if(e(t.installType)){let e=K(t,r?.agent);return e?W(t.installType,e,t.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r?.updateStrategy):!1}return n!==`install`||!t.command?!1:_(t.command)}async function J(t,n){if(!e(n.type))return;let r=h(t,n);r&&await W(n.type,r,n.binaryName??t.binaryName,n.packageInstallArgs,n.packageTargetKind,`uninstall`)}async function st(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await _(e.join(` `)))return!0;return!1}function ct(e,t){let n={agentName:e.name,installType:t.type,packageName:h(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function Y(e,t){if(f().cancelled)return null;let n=ct(e,t);return f().cancelled?null:(await c(n),f().cancelled?(await i(e.name),null):n)}async function X(e,t){return l(V,async()=>Y(e,t))}async function lt(e){return l(V,async()=>{let t=await U(e);for(let n of t){if(f().cancelled)return{success:!1};if(await G(e,n,`install`)){if(f().cancelled)return await J(e,n),{success:!1};try{let t=await Y(e,n);return t?{success:!0,installedState:t}:(await J(e,n),{success:!1})}catch(t){throw await J(e,n),t}}if(f().cancelled)return await J(e,n),{success:!1}}return{success:!1}})}async function ut(t,n){return l(V,async()=>{let{npmBunUpdateStrategy:r}=await H(),i=await U(t),a=n&&e(n.installType)?K(n,t):void 0;if(n&&await q(n,`update`,{agent:t,updateStrategy:r}))return f().cancelled||(await c(n),f().cancelled)?{success:!1}:{success:!0,installedState:n};if(!n){for(let e of i)if(await G(t,e,`update`,r)){let n=await Y(t,e);return n?{success:!0,installedState:n}:{success:!1}}}return(!n||!e(n.installType)||a)&&await st(t)?{success:!0}:{success:!1}})}async function dt(e,t){return l(V,async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=B(e);return await r.isAvailable()?r.updateMany(n,await H()):!1})}async function ft(e,t,n){let r=B(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function pt(t,n){if(!e(t.installType))return!1;let r=B(t.installType);if(!r.getInstalledVersion||!await r.isAvailable())return!1;let i=K(t,n);return i?r.probePackagePresence?await r.probePackagePresence(i,t.packageTargetKind)===`absent`:await r.getInstalledVersion(i,t.packageTargetKind)===void 0:!1}async function mt(e){return l(V,async()=>{let t=await d(e.name);return t&&(!r(t.installType)||await q(t,`uninstall`,{agent:e})||await pt(t,e))?(await i(e.name),!0):!1})}async function Z(e){let[t,n,r]=await Promise.all([U(e),d(e.name),we(e.binaryName)]),[i,a,o]=await Promise.all([r?ht(e,n):Promise.resolve(void 0),r?re(e.binaryName):Promise.resolve(void 0),gt(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:o,binaryPath:a,resolvedBinaryPath:await ie(a),sourceLabel:se(n),updateLabel:ge(e,n),lifecycle:n?ee(n.installType):`unmanaged`}}async function Q(e){return Promise.all(e.map(Z))}async function ht(t,n){if(n&&e(n.installType)&&n.packageName){let e=await ft(n.installType,n.packageName,n.packageTargetKind);if(e)return e}return a(t.binaryName,t.versionProbe)}async function gt(e,n,r){let i=t(e,n,r);if(i)return ne(i)}function $(e){return Ee(e)}async function _t(e){let t=$(e);if(t)return{agent:t,inspection:await Z(t)}}async function vt(){return Q(Ce())}export{Q as a,X as c,dt as d,B as f,Z as i,mt as l,$ as n,U as o,_t as r,lt as s,vt as t,ut as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capabilities-UbrB8q7F.mjs";export{e as capabilitiesCommand};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as e,r as t,s as n,t as r}from"./color-DQ26gyy0.mjs";import{a as i,c as a,d as o,i as s,l as c,m as l,o as u,r as d,s as f,t as p,u as m}from"./detect-D6EVk3qi.mjs";import h from"node:process";async function g(){let[r,g,y,b,x,S,C,w,T,E]=await Promise.all([s(),a(),d(),i(),u(),f(),c(),m(),o(),n()]);return e(t({action:`capabilities`,data:{agents:l().map(e=>e.name),features:{assumeYes:!0,cacheBypass:!0,cacheRefresh:!0,channels:[`stable`,`beta`],colorModes:[`auto`,`always`,`never`],dryRun:!0,execInstallPolicies:[`never`,`if-missing`,`always`],freshnessMetadata:!0,idempotencyKey:!0,logLevels:[`silent`,`error`,`warn`,`info`,`debug`],quietLogs:!0,selfUpgrade:E.canAutoUpdate,timeout:!0},installers:{brew:{available:y,reason:y?void 0:_(`brew`)},bun:{available:r,reason:r?void 0:_(`bun`)},cargo:{available:b,reason:b?void 0:_(`cargo`)},deno:{available:x,reason:x?void 0:_(`deno`)},mise:{available:S,reason:S?void 0:_(`mise`)},npm:{available:g,reason:g?void 0:_(`npm`)},pip:{available:C,reason:C?void 0:_(`pip`)},uv:{available:w,reason:w?void 0:_(`uv`)},winget:{available:T,reason:T?void 0:_(`winget`)}},outputModes:[`human`,`json`,`ndjson`],platform:{arch:h.arch,os:p()}},target:{kind:`system`,name:`capabilities`}}),v)}function _(e){return e===`winget`&&h.platform!==`win32`||e===`brew`&&h.platform===`win32`?`not-on-platform`:`not-found`}function v(e){e.data&&(console.log(r.bold(`
|
|
2
|
-
Quantex Capabilities
|
|
3
|
-
`)),console.log(` Platform: ${e.data.platform.os}/${e.data.platform.arch}`),console.log(` Output Modes: ${e.data.outputModes.join(`, `)}`),console.log(` Agents: ${e.data.agents.join(`, `)}`),console.log(r.bold(`
|
|
4
|
-
Installers:`)),console.log(` bun: ${y(e.data.installers.bun)}`),console.log(` npm: ${y(e.data.installers.npm)}`),console.log(` brew: ${y(e.data.installers.brew)}`),console.log(` cargo: ${y(e.data.installers.cargo)}`),console.log(` deno: ${y(e.data.installers.deno)}`),console.log(` mise: ${y(e.data.installers.mise)}`),console.log(` pip: ${y(e.data.installers.pip)}`),console.log(` uv: ${y(e.data.installers.uv)}`),console.log(` winget: ${y(e.data.installers.winget)}`),console.log(r.bold(`
|
|
5
|
-
Features:`)),console.log(` --yes: ${e.data.features.assumeYes?`yes`:`no`}`),console.log(` cache-refresh: ${e.data.features.cacheRefresh?`yes`:`no`}`),console.log(` color-modes: ${e.data.features.colorModes.join(`, `)}`),console.log(` no-cache: ${e.data.features.cacheBypass?`yes`:`no`}`),console.log(` dry-run: ${e.data.features.dryRun?`yes`:`no`}`),console.log(` freshness-metadata: ${e.data.features.freshnessMetadata?`yes`:`no`}`),console.log(` self-upgrade: ${e.data.features.selfUpgrade?`yes`:`no`}`),console.log(` idempotency-key: ${e.data.features.idempotencyKey?`yes`:`no`}`),console.log(` log-levels: ${e.data.features.logLevels.join(`, `)}`),console.log(` quiet-logs: ${e.data.features.quietLogs?`yes`:`no`}`),console.log(` timeout: ${e.data.features.timeout?`yes`:`no`}`),console.log(` channels: ${e.data.features.channels.join(`, `)}`),console.log(` exec-install-policy: ${e.data.features.execInstallPolicies.join(`, `)}`),console.log())}function y(e){return e.available?r.green(`available`):r.red(e.reason??`not-found`)}export{g as t};
|
package/dist/color-DQ26gyy0.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import{existsSync as r,mkdirSync as i,writeFileSync as a}from"node:fs";import{chmod as o,mkdir as s,mkdtemp as c,readFile as l,realpath as u,rename as d,rm as f,stat as p,writeFile as m}from"node:fs/promises";import{basename as h,dirname as g,join as _,win32 as v}from"node:path";import{homedir as ee}from"node:os";import{spawn as te}from"node:child_process";import{text as ne}from"node:stream/consumers";import{fileURLToPath as re}from"node:url";import{Buffer as ie}from"node:buffer";import ae from"picocolors";const oe={binary:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},brew:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},bun:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},cargo:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},deno:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},mise:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},npm:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},pip:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},uv:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},script:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},winget:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`}};function y(e){return oe[e]}function b(e){return y(e).lifecycle===`managed`}function se(e){return y(e).lifecycle}function ce(e){return y(e).canUpdate}function le(e){return y(e).canUninstall}function x(e){return y(e).canLookupLatestVersion}function ue(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function S(e,t){if(t.packageName)return t.packageName;if(t.type===`cargo`)return e.packages?.cargo;if(t.type===`deno`)return e.packages?.deno;if(t.type===`mise`)return e.packages?.mise;if(t.type===`pip`)return e.packages?.pip;if(t.type===`uv`)return e.packages?.uv;if(t.type===`bun`||t.type===`npm`)return e.packages?.npm}function de(e){return e?ce(e.installType):!1}function fe(e,t){return de(t)||!!e.selfUpdate}function pe(e){return!!e&&x(e.installType)}function me(e){return e.length>0&&e.every(e=>x(e.type))}function he(e){return b(e.type)?`${se(e.type)}/${e.type}${ue(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function ge(e){return e?b(e.installType)?`managed via ${e.installType}${ue(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function _e(e,t){let n=ke({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function ve(e,t){if(t.type===`bun`){let n=S(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=S(e,t);return n?`npm i -g ${n}`:``}if(t.type===`brew`)return t.packageName?t.packageTargetKind===`cask`?`brew install --cask ${t.packageName}`:`brew install ${t.packageName}`:``;if(t.type===`cargo`){let n=S(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=S(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=S(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=S(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=S(e,t);return n?[`uv`,`tool`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}return t.type===`winget`?t.packageName?`winget install --id ${t.packageName} -e`:``:t.command??``}function ye(e,t,n){if(t)return pe(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!me(n)))return e.packages.npm}function be(e,t){let n=xe(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 xe(e){if(!e)return;let t=e.replaceAll(`\\`,`/`);if(t.includes(`/.bun/bin/`)||t.includes(`/.bun/install/global/`))return`bun`;if(t.includes(`/.local/share/mise/shims/`)||t.includes(`/.mise/shims/`))return`mise`;if(Se(t))return`npm`}function Se(e){return e.includes(`/node_modules/.bin/`)?!1:e.includes(`/lib/node_modules/`)||e.includes(`/AppData/Roaming/npm/`)||e.includes(`/.nvm/versions/node/`)||e.includes(`/.fnm/node-versions/`)||e.includes(`/.volta/tools/image/node/`)}function Ce(e){if(e.installedState)return b(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(b(t.type)&&ce(t.type))return t.type}const we={strategy:`managed`,canHandle:e=>!!Ce(e),getManagedInstallerType:e=>Ce(e)},Te={strategy:`self-update`,canHandle:e=>!de(e.installedState)&&!!e.agent.selfUpdate},Ee={strategy:`manual-hint`,canHandle:()=>!0},De=[we,Te,Ee];function Oe(e){return De.find(t=>t.canHandle(e))??Ee}function ke(e){return Oe(e).strategy}function Ae(e){return fe(e.agent,e.installedState)}function je(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 C,w=new Set;function T(){return C??=Be(),C}function Me(e){w=new Set,C={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function Ne(){C=void 0,w=new Set}function Pe(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:je(e.timeout),c=Ve(e.color),l=He(e.logLevel);if(e.timeout!==void 0&&s===void 0)throw Error(`Invalid timeout value: ${e.timeout}`);if(e.refresh&&e.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:e.yes,cacheMode:e.noCache?`no-cache`:e.refresh?`refresh`:`default`,cancelled:!1,colorMode:c,dryRun:e.dryRun,idempotencyKey:e.idempotencyKey,interactive:!e.nonInteractive&&!a&&r&&i,logLevel:l,outputMode:o,quiet:e.quiet,runId:e.runId??n.env.QUANTEX_RUN_ID??t(),timeoutMs:s}}function Fe(){C&&(C.cancelled=!0)}function Ie(){C&&(C.cancelled=!1)}async function Le(){Fe();let e=[...w];w.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function Re(e){return w.add(e),()=>{w.delete(e)}}function ze(e){let t=T();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function Be(){return Pe()}function Ve(e){if(e===void 0||e===`auto`)return`auto`;if(e===`always`)return`always`;if(e===`never`)return`never`;throw Error(`Invalid color mode: ${e}`)}function He(e){if(e===void 0||e===`info`)return`info`;if(e===`silent`||e===`error`||e===`warn`||e===`debug`)return e;throw Error(`Invalid log level: ${e}`)}const Ue=`https://registry.npmjs.org`;function E(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function We(e,t,n){return`${E(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const Ge={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function D(){return _(n.env.HOME||n.env.USERPROFILE||ee(),`.quantex`)}function O(){return _(D(),`config.json`)}async function k(){let e={...Ge,...await Ye()};return{...e,defaultPackageManager:Ke(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:A(e.networkRetries,2),networkTimeoutMs:A(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?E(e.selfUpdateRegistry):void 0,versionCacheTtlHours:A(e.versionCacheTtlHours,6)}}function Ke(e){return e===`bun`||e===`mise`||e===`npm`}function qe(e){return e===`latest-major`||e===`respect-semver`}async function Je(e){await s(D(),{recursive:!0}),await m(O(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Ye(){try{let e=await l(O(),`utf8`),t=JSON.parse(e);return Xe(t)?t:{}}catch{return{}}}function A(e,t){if(typeof e==`number`&&Number.isInteger(e)&&e>0)return e;if(typeof e==`string`){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>0)return t}return t}function Xe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var j=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 Ze(e){return e instanceof j}function Qe(e){let t=e.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),n=t.length>0?t:[`default`],r=n.slice(0,-1),i=`${n.at(-1)}.lock`;return _(D(),`locks`,...r,i)}async function M(e){let t=Qe(e.scope);return await s(g(t),{recursive:!0}),await $e(e.resource,t),async()=>{await f(t,{force:!0,recursive:!0})}}async function $e(e,t){try{i(t,{recursive:!1}),et(t);return}catch(e){if(!at(e))throw e}if(!await tt(t))throw new j(e,t);try{i(t,{recursive:!1}),et(t)}catch(n){throw at(n)?new j(e,t):n}}function et(e){a(_(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function tt(e){let t;try{t=await nt(e)}catch{return!1}return t&&it(t.pid)?!1:(await f(e,{force:!0,recursive:!0}),!0)}async function nt(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await rt(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await rt(e)}async function rt(e){try{let t=await l(_(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(ot(e))return;throw e}}function it(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function at(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function ot(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function st(e,t){let n=await M(e);try{return await t()}finally{await n()}}async function ct(){try{return await M({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Ze(e))return;throw e}}const N=`quantex-cli`,P=`https://github.com/Drswith/quantex-cli`,lt=`0.28.1`;function F(e,t={}){if(T().outputMode===`human`){let n=L(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:Re(()=>ht(n)),outputDrained:Promise.resolve(),proc:n}}let n=L(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:Re(()=>ht(n)),outputDrained:Promise.all([ut(n.stdout),ut(n.stderr)]).then(()=>void 0),proc:n}}async function I(e){let t=T();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}function L(e,t={}){let n=pt();if(n)return mt(e,t,n);let[r,...i]=e;if(!r)throw Error(`spawnCommand requires a non-empty command array.`);let a=te(r,i,{...t,shell:t.shell??ft(r)});return{get exitCode(){return a.exitCode},pid:a.pid,stderr:a.stderr,stdout:a.stdout,exited:dt(a),kill:a.kill.bind(a),unref:()=>a.unref()}}async function R(e){let[t,n,r]=await Promise.all([z(e.stdout),z(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function ut(e){if(!e)return;let t=await z(e);t&&n.stderr.write(t)}async function dt(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function z(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():ne(e):``}function ft(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function pt(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function mt(e,t,n){let r=n([...e],t);return{get exitCode(){return r.exitCode},pid:r.pid,stderr:r.stderr,stdout:r.stdout,exited:r.exited.then(()=>typeof r.exitCode==`number`?r.exitCode:1),kill:e=>r.kill?.(e)??!1,unref:()=>r.unref?.()}}async function ht(e){n.platform===`win32`&&e.pid!==void 0&&await _t(gt(e.pid),2e3);try{e.kill?.(`SIGTERM`)}catch{}await _t(e.exited.then(()=>void 0).catch(()=>void 0),2e3)}async function gt(e){await new Promise(t=>{let n=te(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});n.once(`error`,()=>t()),n.once(`close`,()=>t())})}async function _t(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}async function B(e,t){let n=await vt(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function vt(e,t,n=`text`){let r=await k(),i=r.versionCacheTtlHours*60*60*1e3,a=T().cacheMode,o=a===`no-cache`?{entries:{}}:await bt(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return V(s,i),s.body;let l=await yt(e,{headers:a!==`no-cache`&&s?.etag?{"If-None-Match":s.etag}:void 0,retries:r.networkRetries,timeoutMs:r.networkTimeoutMs});if(!l)return s&&V(s,i),s?.body;if(l.status===304&&s)return o.entries[t]={...s,expiresAt:c+i,fetchedAt:c},a!==`no-cache`&&await xt(o),Ct(c,c+i),s.body;if(!l.ok)return s&&V(s,i),s?.body;let u=await l.text();if(n===`json`)try{JSON.parse(u)}catch{return s&&V(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 xt(o)),Ct(c,c+i),u}async function yt(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 bt(){try{return JSON.parse(await l(St(),`utf8`))}catch{return{entries:{}}}}async function xt(e){await s(_(D(),`cache`),{recursive:!0}),await m(St(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function St(){return _(D(),`cache`,`versions.json`)}function V(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);ze({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Ct(e,t){ze({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const wt=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Tt(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
2
|
-
`)[0],r=n.match(wt);return r?r[1]:n||void 0}function Et(e,t){let n=kt(e),r=kt(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 At(n.prerelease,r.prerelease)}}function H(e,t){return Et(e,t)===1}async function U(e,t){let n=t?.command??[e,`--version`];try{let{exitCode:e,stdout:r}=await R(L(n));return e===0?Tt(r,t?.parser):void 0}catch{return}}async function W(e,t=`latest`,n={}){try{let r=E(n.registry)??`https://registry.npmjs.org`;return(await B(We(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function Dt(e){try{let{exitCode:t,stdout:r}=await R(L([n.platform===`win32`?`where`:`which`,e]));return t===0?r.trim().split(`
|
|
3
|
-
`)[0]:void 0}catch{return}}async function Ot(e){if(e)try{return await u(e)}catch{return e}}function kt(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 At(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;if(n===i)continue;let a=/^\d+$/.test(n),o=/^\d+$/.test(i);return a&&o?Number(n)>Number(i)?1:-1:a?-1:o||n>i?1:-1}return 0}var G=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const jt={installedAgents:{},self:{}};function K(){return _(D(),`state.json`)}async function q(){return zt()}async function Mt(e){let t=await M({resource:`state`,scope:[`state`]});try{await Jt(e)}finally{await t()}}async function Nt(e){return(await q()).installedAgents[e]}async function Pt(e){await Y(t=>{t.installedAgents[e.agentName]=e})}async function Ft(e){await Y(t=>{delete t.installedAgents[e]})}async function It(){return(await q()).self}async function Lt(e){await Y(t=>{t.self.installSource=e})}async function Rt(e,t){await Y(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function zt(){try{let e=JSON.parse(await l(K(),`utf8`));if(!J(e))throw new G(`Failed to read Quantex state file: root value must be an object.`);let t=Kt(e.self);return{installedAgents:Vt(e.installedAgents),self:t}}catch(e){if(Yt(e))return{...jt};throw e instanceof G?e:new G(`Failed to read Quantex state file.`,{cause:e})}}const Bt=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function Vt(e){if(e===void 0)return{};if(!J(e))throw new G(`Failed to read Quantex state file: installedAgents must be an object.`);let t={};for(let[n,r]of Object.entries(e))t[n]=Ht(n,r);return t}function Ht(e,t){if(!J(t))throw new G(`Failed to read Quantex state file: installed agent "${e}" must be an object.`);if(typeof t.agentName!=`string`||t.agentName!==e)throw new G(`Failed to read Quantex state file: installed agent "${e}" has an invalid agentName.`);if(!Ut(t.installType))throw new G(`Failed to read Quantex state file: installed agent "${e}" has an invalid installType.`);let n={agentName:e,installType:t.installType};if(typeof t.binaryName==`string`&&(n.binaryName=t.binaryName),Array.isArray(t.packageInstallArgs)&&t.packageInstallArgs.every(Gt)&&(n.packageInstallArgs=t.packageInstallArgs),typeof t.packageName==`string`){if(t.packageName.length===0&&b(t.installType))throw new G(`Failed to read Quantex state file: installed agent "${e}" has an empty packageName.`);n.packageName=t.packageName}return Wt(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function Ut(e){return typeof e==`string`&&Bt.has(e)}function Wt(e){return e===`package`||e===`cask`||e===`id`}function Gt(e){return typeof e==`string`}function Kt(e){if(!J(e))return{};let t={...e};return qt(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 qt(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function Jt(e){await s(D(),{recursive:!0});let t=K(),r=`${t}.tmp-${n.pid}`,i=`${JSON.stringify(e,null,2)}\n`;try{await m(r,i,`utf8`),await d(r,t)}catch(e){throw await f(r,{force:!0}),e}}function Yt(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Y(e){let t=await M({resource:`state`,scope:[`state`]});try{let t=await zt();await e(t),await Jt(t)}finally{await t()}}function Xt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function X(e=n.execPath){if(h(Xt(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 Zt(e=n.execPath){let t=X(e);if(t)return`${P}/releases/latest/download/${t}`}function Qt(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 $t(e){let t=await B(await en(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function en(e){if(e===`stable`)return`${P}/releases/latest/download/manifest.json`;let t=(await tn(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 tn(e){let t=rn();if(!t)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let n=await B(`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 nn(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=X(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function rn(){return P.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const an=N,on=`/node_modules/${an}`;async function sn(e){let t=await dn(),r=n.execPath,i=t.foundPackageJson?un(t.packageRoot):un(``,r),a=await ln((await It()).installSource,i),o=await k(),s=Qt(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:cn(a),currentVersion:t.version||`0.28.1`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function cn(e){return e===`binary`||e===`bun`||e===`npm`}async function ln(e,t){return t!==`unknown`&&e!==t?(await Lt(t),t):e??t}function un(e,t=n.execPath){let r=mn(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(on)?`npm`:r?`source`:hn(t)?`binary`:`unknown`}async function dn(e=import.meta.url){let t=gn(e),n=g(t);for(;;){let e=_(n,`package.json`),t=await pn(e);if(t?.name===an)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`0.28.1`};let r=g(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:_(g(t),`package.json`),packageRoot:g(t),version:lt}}function fn(){return lt}async function pn(e){try{return JSON.parse(await l(e,`utf8`))}catch{return}}function mn(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function hn(e){let t=h(mn(e));return t!==`bun`&&t!==`bun.exe`}function gn(e){try{return re(e)}catch{return n.execPath}}async function _n(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=E(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 vn(e,r,i)||{isOverride:!1,registry:Ue,source:`fallback`}}async function vn(e,t,n){if(e===`bun`){let e=yn(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await bn(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=yn(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Sn(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function yn(e,t){for(let n of t){let t=E(e[n]);if(t)return t}}async function bn(e,t){let n=Tn(t),i=t.XDG_CONFIG_HOME,a=wn(e,`bunfig.toml`),o=[_(n,`.bunfig.toml`),i?_(i,`.bunfig.toml`):void 0];if(a){let e=await xn(a);if(e)return e}for(let e of o){if(!e||!r(e))continue;let t=await xn(e);if(t)return t}}async function xn(e){try{return En(await l(e,`utf8`))}catch{return}}async function Sn(e,t){let n=Tn(t),i=wn(e,`.npmrc`),a=_(n,`.npmrc`);if(i){let e=await Cn(i);if(e)return e}if(r(a))return Cn(a)}async function Cn(e){try{let t=(await l(e,`utf8`)).split(`
|
|
4
|
-
`).map(e=>e.trim());for(let e=t.length-1;e>=0;--e){let n=t[e];if(!n||n.startsWith(`#`)||n.startsWith(`;`))continue;let r=n.match(/^registry\s*=\s*(.+)$/);if(!r?.[1])continue;let i=E(r[1]);if(i)return i}}catch{}}function wn(e,t){let n=e;for(;;){let e=_(n,t);if(r(e))return e;let i=g(n);if(i===n)return;n=i}}function Tn(e){return e.HOME||e.USERPROFILE||ee()}function En(e){let t=Dn(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 E(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return E(Dn(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Dn(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function On(e){let t=await k();if(e.installSource===`binary`)try{let t=await $t(e.updateChannel),n=nn(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 W(N,n,{registry:Ue});if(e.installSource===`bun`||e.installSource===`npm`){let i=await _n(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await W(N,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:Pn(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function Z(e){let t=e?.facts??await sn({updateChannel:e?.updateChannel}),n=e?.target??await On(t),r=n.targetVersion?H(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Mn(t,n,r),target:n,updateAvailable:r}}function kn(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 An(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await Nn(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 jn(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:Pn(e.packageRoot)},r=e.latestVersion?H(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Mn(t,n,r),target:n,updateAvailable:r}}function Mn(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Nn(e){if(e.target.verificationCommand){let t=await U(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return U(e.facts.executablePath)}function Pn(e){if(e)return[n.execPath,_(e,`dist`,`cli.mjs`),`--version`]}async function Fn(e,t,r,i,a=In(t)){let s;try{s=await fetch(e)}catch(t){return $(`network`,`Failed to download ${e}.`,t)}if(!s.ok)return $(`network`,`Failed to download ${e}: HTTP ${s.status}.`);let l=await c(_(g(t),`.quantex-upgrade-`)),u=_(l,h(t)),p=`${t}.bak`,v=!1;try{let c=ie.from(await s.arrayBuffer()),h=await Ln(t),g=Un(c);if(g!==Wn(r))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${Wn(r)}, got ${g}.`);if(await m(u,c),n.platform===`win32`)return Rn(u,t,p,l,i,a);await o(u,h),await f(p,{force:!0}),await d(t,p),v=!0,await d(u,t);let _=await Hn(t,i);return _.success?(v=!1,await f(p,{force:!0}),{success:!0}):(await Vn(p,t),v=!1,_)}catch(e){if(v){try{await Vn(p,t)}catch{}v=!1}return $(Bn(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await f(l,{recursive:!0,force:!0})}}function In(e){if(n.platform!==`win32`)return;let t=v.basename(e).toLowerCase();if(t===`qtx.exe`)return v.join(v.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return v.join(v.dirname(e),`qtx.exe`)}async function Ln(e){try{return(await p(e)).mode&511}catch{return 493}}function Rn(e,t,r,i,a,o){try{return L([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,zn(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return $(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function zn(e,t,n,r,i,a,o){let s=Q(e),c=Q(t),l=Q(n),u=Q(r),d=Q(a??``),f=Q(o??``);return[`$ErrorActionPreference = 'Stop'`,`$pidToWait = ${i}`,`$tempPath = '${s}'`,`$targetPath = '${c}'`,`$backupPath = '${l}'`,`$tempDir = '${u}'`,`$expectedVersion = '${d}'`,`$peerPath = '${f}'`,`while (Get-Process -Id $pidToWait -ErrorAction SilentlyContinue) { Start-Sleep -Milliseconds 200 }`,`$backupReady = $false`,`for ($attempt = 0; $attempt -lt 50; $attempt++) {`,` try {`,` if (Test-Path -LiteralPath $backupPath) { Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue }`,` Move-Item -LiteralPath $targetPath -Destination $backupPath -Force -ErrorAction Stop`,` $backupReady = $true`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`if (-not $backupReady) {`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`try {`,` Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`}`,`catch {`,` if (Test-Path -LiteralPath $backupPath) {`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force -ErrorAction SilentlyContinue`,` }`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`if ($expectedVersion -ne '') {`,` $output = & $targetPath --version 2>$null`,` if ($LASTEXITCODE -ne 0 -or ($output -notmatch [regex]::Escape($expectedVersion))) {`,` Remove-Item -LiteralPath $targetPath -Force -ErrorAction SilentlyContinue`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,` }`,`}`,`if ($peerPath -ne '') {`,` Copy-Item -LiteralPath $targetPath -Destination $peerPath -Force`,`}`,`Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue`,`Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`].join(`; `)}function Q(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Bn(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 Vn(e,t){await f(t,{force:!0}),await d(e,t)}async function Hn(e,t){if(!t)return{success:!0};try{let{exitCode:n,stdout:r}=await R(L([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return n===0?r.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${n} during verification.`)}catch(e){return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function Un(t){return e(`sha256`).update(t).digest(`hex`)}function Wn(e){return e.trim().toLowerCase()}const Gn={source:`binary`,canHandle:e=>Kn(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):Zt(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 Fn(t.downloadUrl,e.facts.executablePath,t.checksum,e.target.targetVersion??`latest`,In(e.facts.executablePath));return{...!n.success&&n.error?{...n,error:{...n.error,detail:{...typeof n.error.detail==`object`&&n.error.detail?n.error.detail:{},downloadUrl:t.downloadUrl}}}:n,installSource:e.facts.installSource,newVersion:n.success?e.target.targetVersion:void 0}}};function Kn(e){return`facts`in e?e.facts.installSource:e.installSource}async function qn(e,t,n){try{let r=t?`${e}@${t}`:e,i=E(n);return await nr([`bun`,`add`,`-g`,...i?[`--registry`,i]:[],r],[e])}catch{return!1}}async function Jn(e,t=`latest-major`,n=`latest`,r){try{let i=n===`latest`?e:`${e}@${n}`,a=E(r);return await nr([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...a?[`--registry`,a]:[],i],[e])}catch{return!1}}async function Yn(e,t=`latest-major`){if(e.length===0)return!0;try{return await nr([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e)}catch{return!1}}async function Xn(e){try{return await I(F([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function Zn(e){try{let{stdout:t}=await R(L([`bun`,`pm`,`-g`,`ls`],{stdio:sr()}));if(!t.trim())return{presence:`unknown`};let n=tr(t,e);return n?{presence:`present`,version:n}:er(t,e)?{presence:`present`}:{presence:`absent`}}catch{return{presence:`unknown`}}}async function Qn(e){return(await Zn(e)).presence}async function $n(e){return(await Zn(e)).version}function er(e,t){let n=`${t}@`;return e.split(`
|
|
5
|
-
`).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function tr(e,t){let n=`${t}@`;for(let t of e.split(`
|
|
6
|
-
`)){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 nr(e,t){if(await I(F(e))!==0)return!1;let n=await ir(t);return!n&&e[1]===`add`&&await rr(t),n}async function rr(e){for(let t of new Set(e))try{await I(F([`bun`,`remove`,`-g`,t]))}catch{}}async function ir(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await ar();if(n===void 0)return!1;let r=or(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await I(F([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function ar(){try{let{exitCode:e,stdout:t}=await R(L([`bun`,`pm`,`-g`,`untrusted`],{stdio:sr()}));return e===0?t:void 0}catch{return}}function or(e){let t=new Set;for(let n of e.split(`
|
|
7
|
-
`)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function sr(){return[`ignore`,`pipe`,`ignore`]}const cr={source:`bun`,canHandle:e=>lr(e)===`bun`,getRecoveryHint:e=>`bun add -g ${N}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await qn(N,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${N} through Bun.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function lr(e){return`facts`in e?e.facts.installSource:e.installSource}async function ur(e,t,n){try{let r=t?`${e}@${t}`:e,i=E(n);return await I(F([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function dr(e,t=`latest-major`,n=`latest`,r){try{let i=E(r);return await I(F(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...i?[`--registry`,i]:[]]:[`npm`,`update`,`-g`,e,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function fr(e,t=`latest-major`){if(e.length===0)return!0;try{return await I(F(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e]))===0}catch{return!1}}async function pr(e){try{return await I(F([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function mr(e){try{let{stdout:t}=await R(L([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));if(!t.trim())return{presence:`unknown`};try{let n=JSON.parse(t);if(!n||typeof n!=`object`||Array.isArray(n)||Object.hasOwn(n,`error`))return{presence:`unknown`};if(n.dependencies&&Object.hasOwn(n.dependencies,e)){let n=_r(t,e);return n?{presence:`present`,version:n}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch{return{presence:`unknown`}}}async function hr(e){return(await mr(e)).presence}async function gr(e){return(await mr(e)).version}function _r(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const vr={source:`npm`,canHandle:e=>yr(e)===`npm`,getRecoveryHint:e=>`npm install -g ${N}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await ur(N,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${N} through npm.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function yr(e){return`facts`in e?e.facts.installSource:e.installSource}const br={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}}},xr=[cr,vr,Gn,br];function Sr(e){return xr.find(t=>t.canHandle(e))??br}function Cr(e,t,n=`stable`){return Sr({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function wr(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Cr(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Tr(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Sr(e).getRecoveryHint(e,t)}async function Er(e){return kn(await Z({updateChannel:e?.updateChannel}))}async function Dr(e){let t=await kr(e),n=await ct();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return An(t,await Sr(t).upgrade(t))}finally{await n()}}function Or(e,t=n.execPath){return wr(e,t)}async function kr(e){return e?`facts`in e?e:e.installSource===`binary`?Z({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):jn(e):Z()}function Ar(e){return Pr({...e,error:null,ok:!0})}function jr(e){return Pr({...e,ok:!1})}function Mr(e,t,n={}){let r=T();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?Ir({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Nr(e,t={}){let n=T();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return Ir(e)}function Pr(e){let t=T();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:fn()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Fr(e){let t=T();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:fn()},target:e.target,type:e.type}}function Ir(e){let t=Fr(e);return console.log(JSON.stringify(t)),t}const{createColors:Lr,isColorSupported:Rr}=ae;function zr(){let e=T().colorMode??`auto`;return Lr(e===`always`?!0:e===`never`?!1:Rr)}const Br=new Proxy({},{get(e,t){let n=zr(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{D as $,G as A,b as At,Et as B,kn as C,ye as Ct,fn as D,ce as Dt,un as E,le as Et,Ft as F,H as G,U as H,Mt as I,F as J,R as K,Pt as L,It as M,K as N,X as O,se as Ot,q as P,st as Q,Lt as R,Yn as S,be as St,cn as T,x as Tt,W as U,Dt as V,Ot as W,N as X,I as Y,Ze as Z,$n as _,fe as _t,Mr as a,Ge as at,Xn as b,ge as bt,Dr as c,Ie as ct,gr as d,Pe as dt,O as et,ur as f,Me as ft,fr as g,Oe as gt,dr as h,ke as ht,Nr as i,Je as it,Nt as j,Zt as k,y as kt,wr as l,T as lt,pr as m,Ae as mt,jr as n,qe as nt,Or as o,E as ot,hr as p,De as pt,L as q,Ar as r,k as rt,Er as s,Le as st,Br as t,Ke as tt,Tr as u,Ne as ut,qn as v,ve as vt,Z as w,S as wt,Jn as x,_e as xt,Qn as y,he as yt,Rt as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-DB2H-Gy6.mjs";export{e as commandsCommand};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as e,r as t,t as n}from"./color-DQ26gyy0.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
|
-
Quantex Commands
|
|
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};
|
package/dist/config-DM98xf2S.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as e,at as t,it as n,n as r,nt as i,ot as a,r as o,rt as s,t as c,tt as l}from"./color-DQ26gyy0.mjs";async function u(c,u,f){if(!c)return e(o({action:`config`,data:{action:`list`,config:await s()},target:{kind:`config`}}),d);switch(c){case`get`:{if(!u)return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let t=(await s())[u];return e(o({action:`config`,data:{action:`get`,key:u,value:typeof t==`number`||typeof t==`string`?t:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!l(f))return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!i(f))return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!a(f))return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let t=Number.parseInt(f,10);if(!Number.isInteger(t)||t<=0)return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${t}`}let t={};try{t=await s()}catch{}return t[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?a(f):f,await n(t),e(o({action:`config`,data:{action:`set`,key:u,value:t[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await n(t),e(o({action:`config`,data:{action:`reset`,config:t},target:{kind:`config`}}),d);default:return e(r({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(c.bold(`
|
|
2
|
-
Current Configuration:
|
|
3
|
-
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|