quantex-cli 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +32 -10
  2. package/README.zh-CN.md +35 -11
  3. package/dist/agent-inspection-Cw-iSnoU.mjs +1 -0
  4. package/dist/agent-installation-BiaOimkM.mjs +1 -0
  5. package/dist/agents-Dc-rbRUf.mjs +1 -0
  6. package/dist/agents-DrmnXNfn.mjs +1 -0
  7. package/dist/capabilities-DJkfliFM.mjs +5 -0
  8. package/dist/capabilities-IF9tdHJa.mjs +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/color-BrKNxICe.mjs +9 -0
  11. package/dist/commands-B-XYhmX6.mjs +3 -0
  12. package/dist/commands-D4irgBj4.mjs +1 -0
  13. package/dist/config-Dwsy-aHA.mjs +3 -0
  14. package/dist/doctor-98u2ifwx.mjs +3 -0
  15. package/dist/ensure-BH_HgqIO.mjs +1 -0
  16. package/dist/ensure-C8f1rJSV.mjs +1 -0
  17. package/dist/errors-BzuGM14H.mjs +1 -0
  18. package/dist/errors-DXzIacfk.mjs +1 -0
  19. package/dist/index.d.mts +128 -29
  20. package/dist/index.mjs +2 -2
  21. package/dist/info-cy1FacGf.mjs +2 -0
  22. package/dist/inspect-DbxzuABH.mjs +3 -0
  23. package/dist/inspect-DkknAqJ_.mjs +1 -0
  24. package/dist/install-BEZDMLmP.mjs +1 -0
  25. package/dist/lifecycle-errors-BXlHX_YF.mjs +1 -0
  26. package/dist/lifecycle-observations-DU3WbcUM.mjs +1 -0
  27. package/dist/lifecycle-policy-BeWI8sFz.mjs +1 -0
  28. package/dist/list-BpLto0Qx.mjs +3 -0
  29. package/dist/provider-evidence-CDQ6s2Da.mjs +1 -0
  30. package/dist/provider-observations-C8RmlqtY.mjs +1 -0
  31. package/dist/resolve-C51742gH.mjs +1 -0
  32. package/dist/resolve-CeeaqmwA.mjs +1 -0
  33. package/dist/schema-BO33Fvu0.mjs +3 -0
  34. package/dist/schema-Da826hmM.mjs +1 -0
  35. package/dist/uninstall-EBZrNkI3.mjs +1 -0
  36. package/dist/update-CJUu1Frs.mjs +1 -0
  37. package/dist/update-planner-Dq3XUbkO.mjs +1 -0
  38. package/dist/upgrade-D4zvZO8U.mjs +1 -0
  39. package/dist/{user-output-DV2J3Ydm.mjs → user-output-DBsy2Ysd.mjs} +1 -1
  40. package/dist/version-cache-Cpx0V074.mjs +1 -0
  41. package/package.json +6 -3
  42. package/dist/agents-P3f9iWEs.mjs +0 -1
  43. package/dist/capabilities-BEDb8xQf.mjs +0 -5
  44. package/dist/capabilities-C8OrgAMi.mjs +0 -1
  45. package/dist/color-CtIn3BLf.mjs +0 -6
  46. package/dist/commands-BZLGRJch.mjs +0 -1
  47. package/dist/commands-C8Cjtqjn.mjs +0 -3
  48. package/dist/config-DAEqqWBI.mjs +0 -3
  49. package/dist/detect-D84qpua_.mjs +0 -1
  50. package/dist/doctor-C7gfJcNX.mjs +0 -3
  51. package/dist/ensure-B71EjlnR.mjs +0 -1
  52. package/dist/ensure-BgZwJ17g.mjs +0 -1
  53. package/dist/errors-DCtNasuC.mjs +0 -1
  54. package/dist/info-ZQDUs0bK.mjs +0 -2
  55. package/dist/inspect-DDe70zbR.mjs +0 -1
  56. package/dist/inspect-lI3PWPs3.mjs +0 -3
  57. package/dist/install-DOxjCx5v.mjs +0 -1
  58. package/dist/lifecycle-errors-D7JpbOsK.mjs +0 -1
  59. package/dist/list-DjgfI7DP.mjs +0 -3
  60. package/dist/resolve-BWUq-s_R.mjs +0 -1
  61. package/dist/resolve-CX8YaOEv.mjs +0 -1
  62. package/dist/schema-4dHGgkBt.mjs +0 -1
  63. package/dist/schema-DA5oEdRr.mjs +0 -3
  64. package/dist/uninstall-CyGhnH4k.mjs +0 -1
  65. package/dist/update-C34xtbDQ.mjs +0 -1
  66. package/dist/update-UeQ_F4kP.mjs +0 -1
  67. package/dist/upgrade-5uiTpWn2.mjs +0 -1
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{C as n,D as r,E as i,S as a,T as ee,a as te,d as ne,f as re,g as ie,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,w as _}from"./agents-P3f9iWEs.mjs";import{A as v,B as y,C as b,D as x,E as S,F as C,H as w,I as T,L as E,M as D,N as O,O as k,P as A,R as j,S as M,T as N,V as P,_ as F,b as I,c as L,f as R,g as z,h as B,i as V,j as H,k as U,m as W,n as G,o as K,p as q,t as J,v as Y,w as ae,x as oe,y as se,z as ce}from"./detect-D84qpua_.mjs";import{A as le,B as ue,C as de,D as fe,E as pe,F as me,G as he,I as ge,K as _e,M as ve,N as ye,O as be,P as xe,R as Se,T as Ce,X as we,Z as Te,a as Ee,at as De,c as Oe,ct as ke,et as Ae,j as je,k as Me,l as Ne,n as Pe,o as Fe,ot as Ie,r as Le,s as Re,st as ze,tt as Be,u as Ve,w as He,z as Ue}from"./color-CtIn3BLf.mjs";import{t as We}from"./capabilities-BEDb8xQf.mjs";import{t as Ge}from"./commands-C8Cjtqjn.mjs";import{t as Ke}from"./ensure-BgZwJ17g.mjs";import{t as qe}from"./inspect-lI3PWPs3.mjs";import{t as Je}from"./resolve-BWUq-s_R.mjs";import{n as Ye,t as Xe}from"./schema-DA5oEdRr.mjs";import{n as Ze,t as X}from"./errors-DCtNasuC.mjs";import{a as Qe,i as $e,n as et,t as tt}from"./update-UeQ_F4kP.mjs";const nt=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function rt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
2
- `)}\n`}function it(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function Z(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function Q(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function $(e){return e.includes(`beta`)?`beta`:`stable`}function at(e){let t=Q(e.repositoryUrl),n=$(e.version),r=e.files.map(n=>{let r=Z(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function ot(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of nt)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!Z(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}async function st(e,t){try{let n=await _e(he([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{y as agentCatalogEntrySchema,P as agentCatalogJsonSchema,w as agentCatalogSchema,f as agentUpdateProviders,B as autohand,de as canAutoUpdateSelf,a as canLookupLatestVersionForInstallType,l as canResolveAgentUpdate,n as canUninstallInstallType,_ as canUpdateInstallType,We as capabilitiesCommand,z as claude,F as codebuddy,Y as codewhale,se as codex,Ge as commandsCommand,I as copilot,Pe as createErrorResult,at as createReleaseManifest,Le as createSuccessResult,$e as createUpdatePlan,oe as cursor,M as deepcode,He as detectSelfInstallSource,b as devin,ae as droid,Ee as emitCommandResult,Ke as ensureCommand,st as execCommand,rt as formatChecksums,N as gemini,S as genie,R as getAgentByLookupName,q as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,o as getAgentUpdateStrategy,W as getAllAgents,Se as getBinaryPath,pe as getBinaryReleaseAssetName,fe as getBinaryReleaseDownloadUrl,j as getCatalogAgent,ce as getCatalogAgents,De as getCliContext,we as getConfigDir,Te as getConfigFilePath,X as getExitCodeForError,Ze as getExitCodeForResult,ee as getInstallLifecycle,be as getInstalledAgentState,Ue as getInstalledVersion,i as getInstallerCapabilities,ue as getLatestVersion,re as getManagedInstaller,e as getManualAgentUpdateMessage,Fe as getManualSelfUpgradeCommand,d as getOrderedInstallMethods,J as getPlatform,Xe as getSchemaCatalog,Me as getSelfState,Ne as getSelfUpgradeRecoveryHint,Ve as getSelfUpgradeRecoveryHintForInspection,Ce as getSelfVersion,tt as getSingleAgentUpdateStatus,le as getStateFilePath,s as inspectAgent,te as inspectAllAgents,qe as inspectCommand,h as inspectRegisteredAgents,Re as inspectSelf,m as installAgent,G as isBinaryInPath,V as isBunAvailable,K as isDenoAvailable,Qe as isInspectionUpdateAvailable,r as isManagedInstallType,L as isNpmAvailable,x as jcode,k as junie,U as kilo,Ae as loadConfig,je as loadState,Q as normalizeRepositoryUrl,v as omp,H as opencode,D as openhands,Z as parseBinaryTarget,it as parseChecksums,O as pi,et as planAgentUpdates,A as qoder,C as reasonix,ve as removeInstalledAgentState,Ie as resetCliContext,u as resolveAgent,p as resolveAgentInspection,ie as resolveAgentUpdateProvider,ze as resolveCliContext,Je as resolveCommand,$ as resolveReleaseChannel,Be as saveConfig,ye as saveState,Ye as schemaCommand,ke as setCliContext,xe as setInstalledAgentState,me as setSelfInstallSource,ge as setSelfUpdateNoticeState,c as uninstallAgent,g as updateAgent,ne as updateAgentsByType,Oe as upgradeSelf,ot as validateReleaseManifest,T as vibe,E as vtcode};
1
+ 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,ct as m,d as h,dn 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,u as I,un as L,v as R,w as z,z as B,zt as V}from"./color-BrKNxICe.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-DJkfliFM.mjs";import{t as Ke}from"./commands-B-XYhmX6.mjs";import{_ as qe,g as Je,l as Ye,m as Xe,u as Ze,y as Qe}from"./provider-evidence-CDQ6s2Da.mjs";import{t as $e}from"./update-planner-Dq3XUbkO.mjs";import{a as et,i as W,n as tt,r as nt,t as G}from"./agents-DrmnXNfn.mjs";import{t as rt}from"./ensure-C8f1rJSV.mjs";import{t as it}from"./inspect-DbxzuABH.mjs";import{t as at}from"./resolve-C51742gH.mjs";import{n as ot,t as st}from"./schema-BO33Fvu0.mjs";import{n as ct,r as lt}from"./errors-DXzIacfk.mjs";function K(e,t={}){let n=m(),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=m().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 f(j([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,P 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,I as getSelfUpgradeRecoveryHint,h 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,S as resetCliContext,tt as resolveAgent,nt as resolveAgentInspection,d as resolveAgentUpdateProvider,L as resolveCliContext,at as resolveCommand,Z as resolveReleaseChannel,V as saveConfig,n as saveState,ot as schemaCommand,g 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-BrKNxICe.mjs";import{r as o}from"./lifecycle-observations-DU3WbcUM.mjs";import{t as s}from"./agent-inspection-Cw-iSnoU.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-BrKNxICe.mjs";import{r as o}from"./lifecycle-observations-DU3WbcUM.mjs";import{t as s}from"./agent-inspection-Cw-iSnoU.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-DbxzuABH.mjs";export{e as inspectCommand};
@@ -0,0 +1 @@
1
+ import{I as e,a as t,et as n,i as r,n as i,r as a,sn as o,t as s}from"./color-BrKNxICe.mjs";import{v as c}from"./provider-evidence-CDQ6s2Da.mjs";import{t as l}from"./agent-installation-BiaOimkM.mjs";import{r as u}from"./lifecycle-observations-DU3WbcUM.mjs";import{n as d}from"./agents-DrmnXNfn.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-DBsy2Ysd.mjs";import{o as _}from"./lifecycle-policy-BeWI8sFz.mjs";async function v(e){let n=_(Array.isArray(e)?e:[e]);if(n.length<=1)return t(await y(n[0],{emitStartedEvent:!0}),A);r({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let s=[];for(let e of n){if(o().cancelled)break;let t=E(e,await y(e));if(s.push(t),r({action:`install`,data:t,target:{kind:`agent`,name:t.agent.name},type:`progress`}),o().cancelled)break}let c={results:s,scope:`batch`,summary:O(s)};return o().cancelled&&s.length<n.length?t(i({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)?i({action:`install`,data:c,error:k(s),target:{kind:`agent`}}):a({action:`install`,data:c,target:{kind:`agent`}}),j)}async function y(t,n={}){if(o().cancelled||!d(t)||h())return b(t,n);try{return await c(()=>b(t,n))}catch(n){if(e(n))return i({action:`install`,...f(n,{kind:`agent`,name:t}),target:{kind:`agent`,name:t}});throw n}}async function b(t,r){if(o().cancelled)return i({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:t}});let a=await u(t);if(!a)return i({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}});let{agent:s}=a,c=a.pathExecutable.present,d=a.installedState,p=c&&!d?n(a.methods,a.resolvedBinaryPath??a.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,r.emitStartedEvent);try{return x(s,m,await l({adoptableMethod:p,agent:s,observation:{inPath:c,installedState:d,lifecycle:a.observation,methods:a.methods},operation:`install`,route:m}))}catch(t){if(e(t))return i({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 a({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 i({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 a({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 a({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 a({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&&r({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
+ function e(e,t,n){return{error:{code:`STATE_READ_ERROR`,details:{stateFilePath:t},message:e.message},target:n}}function t(e,t){return{error:{code:`RESOURCE_LOCKED`,details:{lockPath:e.lockPath,resource:e.resource},message:e.message},target:t}}export{e as n,t};
@@ -0,0 +1 @@
1
+ import{At as e,C as t,Gt as n,Kt as r,Mt as i,Ot as a,Qt as o,S as s,jt as c,kt as l,tt as u,ut as d}from"./color-BrKNxICe.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-CDQ6s2Da.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:s,readReceipt:t,signal:e.signal,timeoutMs:e.timeoutMs},r)}async function L(e){let t=o(),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,Qt as n,dt as r}from"./color-BrKNxICe.mjs";import{a as i,n as a,t as o}from"./provider-evidence-CDQ6s2Da.mjs";import{r as s}from"./lifecycle-observations-DU3WbcUM.mjs";import{n as c}from"./agents-DrmnXNfn.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-BrKNxICe.mjs";import{n as r}from"./lifecycle-observations-DU3WbcUM.mjs";import{t as i}from"./agent-inspection-Cw-iSnoU.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,Qt as c,Rt as l,S as ee,St as te,Tt as ne,Vt as u,Wt as d,Xt as f,Zt as re,_t as p,an as m,at as ie,bt as ae,dt as oe,ft as se,gt as ce,ht as le,it as h,lt as g,mt as ue,nt as _,pt as v,rn as y,sn as b,ut as de,vt as fe,wt as pe,xt as me,yt as he}from"./color-BrKNxICe.mjs";import ge from"node:process";import{AsyncLocalStorage as _e}from"node:async_hooks";async function x(e){let t=r(),n=typeof e==`function`?e(t):e;try{return ge.platform===`win32`?await m(y([`powershell.exe`,`-Command`,n]))===0:await m(y([`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)})):A(`install`),uninstall:async(e,n,r,i)=>t.uninstall?C(i,i=>t.uninstall({context:i,target:w(e,n,r?.binaryName)})):A(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return A(`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 A(`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=c();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)})):A(`install`),uninstall:async(e,n,r,a)=>t.uninstall?C(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):A(`uninstall`),update:async(e,n,r,a)=>t.update?C(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):A(`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))})):A(`update-many`)}}const D={brew:E(`brew`,d,e=>e===`cask`?`cask`:`formula`,{getInstalledVersion:(e,t)=>f(e,t),probePackagePresence:(e,t)=>re(e,t)}),bun:S(`bun`,t,{getInstalledVersion:e=>u(e),probePackagePresence:e=>i(e)}),cargo:E(`cargo`,n,()=>`package`),deno:E(`deno`,ne,()=>`tool`),mise:E(`mise`,ae,()=>`tool`,{getInstalledVersion:e=>me(e),probePackagePresence:e=>te(e)}),npm:S(`npm`,p,{getInstalledVersion:e=>fe(e),probePackagePresence:e=>he(e)}),pip:E(`pip`,ce,()=>`package`),uv:E(`uv`,v,()=>`tool`,{getInstalledVersion:e=>ue(e),probePackagePresence:e=>le(e)}),winget:E(`winget`,se,()=>`id`)},ve=Object.fromEntries(Object.entries(D).map(([e,t])=>[e,k(t)]));function ye(e){return ve[e]}function O(e){return D[e]}function k(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 A(e){return{kind:`unsupported`,operation:e}}const j={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},M=new _e;function N(e){return M.getStore()?e():a(j,()=>M.run(!0,e))}async function P(){return(await l()).defaultPackageManager}async function F(){return{npmBunUpdateStrategy:(await l()).npmBunUpdateStrategy}}async function I(e){let t=r(),n=e.platforms[t];if(!n)return[];let i=await P();return i?[...n.filter(e=>e.type===i),...n.filter(e=>e.type!==i)]:[...n]}async function L(e,t,n,r,i,a,o,s){if(!s){let s=c();try{return await L(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let l=O(e);return await l.isAvailable(s)?a===`install`?l.install(t,i,r,s):a===`update`?l.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):l.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function R(t,n,r,i){if(g(n.type)){let e=_(t,n);return e?L(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`&&!ie(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=c();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 z(e,t){if(e.packageName)return e.packageName;if(!(!t||!g(e.installType)))return _(t,{type:e.installType})}async function B(e,t,n){if(g(e.installType)){let r=z(e,n?.agent);return r?L(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 V(e,t){if(!g(t.type))return;let n=_(e,t);n&&await L(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}async function be(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 H(e,t){let n={agentName:e.name,installType:t.type,packageName:_(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 xe(e,t){if(b().cancelled)return null;let n=H(e,t);return b().cancelled?null:(await o(n),b().cancelled?(await s(e.name),null):n)}async function U(e,t){return N(async()=>{let n=t?[...t]:await I(e),r;for(let t of n){if(b().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await R(e,t,`install`);if(n.kind===`success`)return b().cancelled?(await V(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:H(e,t)}};let i=J(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,b().cancelled)return await V(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function Se(e){return N(async()=>{let t=await U(e);if(t.kind!==`success`||!t.value.installedState)return q(t);try{return b().cancelled?(await G(e,t.value.installedState),{success:!1}):(await o(t.value.installedState),b().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 Ce(e,t){return N(async()=>{let{npmBunUpdateStrategy:n}=await F(),r=await I(e),i=t&&g(t.installType)?z(t,e):void 0,a=t?await B(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return b().cancelled||(await o(t),b().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 R(e,t,`update`,n);if(r.kind===`success`){let n=await xe(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||!g(t.installType)||i)&&await be(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function we(e,t){return q(await Ce(e,t))}async function Te(e,t){return N(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 F())).kind===`success`:!1})}async function Ee(e,t,n){let r=O(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function De(e,t){if(!g(e.installType))return!1;let n=O(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=z(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Oe(e){return(await N(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(!h(t.installType))return await s(e.name),{kind:`success`,value:{installedState:t}};let n=await B(t,`uninstall`,{agent:e});return n.kind===`success`||await De(t,e)?(await s(e.name),{kind:`success`,value:{installedState:t}}):J(n)}async function ke(e,t){let n=await B(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:J(n)}async function G(e,t){if(!h(t.installType)||!g(t.installType))return;let n=z(t,e);n&&await L(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}function K(){let e=b().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=Ne(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 Ae(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 je(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 Me(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 Ne(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 oe.includes(e)?e:void 0}export{Te as _,Ae as a,Ee as c,U as d,ke as f,we as g,W as h,X as i,I as l,Oe as m,Z as n,Y as o,G as p,Me as r,H as s,je as t,Se as u,N as v,ye as y};
@@ -0,0 +1 @@
1
+ import{ut as e}from"./color-BrKNxICe.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{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-BrKNxICe.mjs";import{r as o}from"./lifecycle-observations-DU3WbcUM.mjs";import{t as s}from"./agent-inspection-Cw-iSnoU.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{t as e}from"./resolve-C51742gH.mjs";export{e as resolveCommand};
@@ -0,0 +1,3 @@
1
+ import{V as e,a as t,n,r,t as i}from"./color-BrKNxICe.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{n as e}from"./schema-BO33Fvu0.mjs";export{e as schemaCommand};
@@ -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,k as c,n as l,r as u,sn as d,t as f}from"./color-BrKNxICe.mjs";import{a as p,h as m,o as h,t as g,v as _}from"./provider-evidence-CDQ6s2Da.mjs";import{n as v}from"./agents-DrmnXNfn.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-DBsy2Ysd.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(l({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,l]=await Promise.all([o(g.name),e(g.name)]);if(!t&&!l)return s(M(f,g),N);let _=await n(g.binaryName),v=t?h(g,t):void 0,y=l?p(l):void 0;if(t&&!v||l&&!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),l&&await c(g.name),s(j(g),N)):t?S()?s(A(g,`would uninstall ${g.displayName}`),N):(l||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:()=>!!d().cancelled})?(await c(g.name),s(u({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(l({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=d(),n=new AbortController;return t.cancelled&&n.abort(`cli-cancelled`),g(e,{signal:n.signal,timeoutMs:t.timeoutMs})}function k(e,t,n){return l({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 u({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 u({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 l({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,Qt as o,Rt as s,a as c,i as l,n as u,r as d,sn as f,t as p,ut as m}from"./color-BrKNxICe.mjs";import{r as h}from"./agents-Dc-rbRUf.mjs";import{v as g}from"./provider-evidence-CDQ6s2Da.mjs";import{t as _}from"./update-planner-Dq3XUbkO.mjs";import{t as v}from"./lifecycle-observations-DU3WbcUM.mjs";import{n as y}from"./agents-DrmnXNfn.mjs";import{a as b,i as x,n as S,r as C}from"./user-output-DBsy2Ysd.mjs";import{a as w,c as T,l as E,r as D,s as O,u as k}from"./lifecycle-policy-BeWI8sFz.mjs";async function A(){let e=j();try{return await e.run()}finally{e.dispose()}}function j(){let e=o(),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??=s().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=o(),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??=s().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(u({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(u({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){l({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=B(t);return U(t)?c(u({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(u({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`}}),G):c(d({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`}}),G)}async function L(e,t){l({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(u({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(u({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(u({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(u({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(u({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(d({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 f().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function W(e,t){e.push(t),l({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-BrKNxICe.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{$t as e,Ot as t,a as n,b as r,cn as i,d as a,f as o,h as s,in as c,l,n as u,nn as d,p as f,r as p,sn as m,t as h}from"./color-BrKNxICe.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-DBsy2Ysd.mjs";import{n as b,t as x}from"./version-cache-Cpx0V074.mjs";const S={platform:process.platform,spawn:(e,t)=>d(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:c,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=m(),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=i(()=>t.cancel(`cancelled`)),r=!1,a={plan:e=>f({context:e.context,metadataCache:e.metadataCache,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>l(e,t)};return{dispose(){r||(r=!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:s(),network:T(),persistence:r(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}function P(e){if(e===`stable`||e===`beta`)return e}async function F(t={}){let r=v(),i=j(),s=await i.run({check:t.check??!1,dryRun:r,updateChannel:t.channel}).finally(()=>i.dispose());if(s.kind===`interrupted`)throw new e({kind:`cancelled`,reason:s.error.message});let c=s.plan,l=o(c),d=L(l),f=z(l);if(c.status===`up-to-date`)return n(p({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]:[]]}),I);if(t.check||r)return c.status===`update-available`?n(p({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`update-available`},exitCode:t.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[],...r?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),I):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]:[]]}),I);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]:[]]}),I)}if(s.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let m=s.result;if(m.success)return n(p({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]:[]]}),I);let h=a(l,m);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:m.error?.kind?{kind:m.error.kind}:void 0,message:m.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...h?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${h}`}]:[]]}),I)}function I(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}).`)),R(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}).`)),R(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(h.yellow(e.error.message)),R(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.`)),R(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 L(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 R(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(h.yellow(t.message))}function z(e){if(!e.latestVersion)return;let n=t(e.latestVersion,e.currentVersion);if(!(n===void 0||n>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:e.currentVersion,latestVersion:e.latestVersion},message:`The resolved latest version ${e.latestVersion} is older than the installed Quantex CLI ${e.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{P as resolveUpgradeChannelOption,F as upgradeCommand};
@@ -1 +1 @@
1
- import{at as e}from"./color-CtIn3BLf.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};
1
+ import{sn as e}from"./color-BrKNxICe.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{Pt as e,in as t,nn as n,sn as r,tn as i}from"./color-BrKNxICe.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)=>n(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:t,writeStderr:e=>{process.stderr.write(e)}};function d(e=u){return{async run(t){if(t.signal.aborted)return p(t.signal);let n;try{n=e.spawn(t.argv,{...t.cwd?{cwd:t.cwd}:{},detached:e.platform!==`win32`,...t.env?{env:{...process.env,...t.env}}:{},stdio:t.stdio})}catch(e){return m(`failed`,g(e,`Failed to launch agent process.`))}let r=i(n),a,o,s=new Promise(e=>{o=()=>e({kind:`cancelled`}),t.signal.addEventListener(`abort`,o,{once:!0}),t.signal.aborted&&o()}),c=r.then(e=>({kind:`completed`,result:e})),l=t.timeoutMs===void 0?void 0:new Promise(e=>{a=setTimeout(()=>e({kind:`timed-out`}),t.timeoutMs)});try{let i=await Promise.race(l?[c,s,l]:[c,s]);if(i.kind===`completed`)return f(i.result,t,e);if(i.kind===`cancelled`)return await e.terminate(n),await r.catch(()=>void 0),p(t.signal);let a=await v(c,_(t.timeoutMs));return a?f(a.result,t,e):(await e.terminate(n),await r.catch(()=>void 0),m(`timed-out`,`Agent process timed out after ${t.timeoutMs}ms.`))}finally{a&&clearTimeout(a),t.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(t={}){let n=t.filePath??o(e(),`cache`,`versions.json`),i=t.getCacheMode??(()=>r().cacheMode??`default`),a=t.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(n),r=T(e.signal);if(r)return r;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(n);return T(e.signal)||(Object.hasOwn(t.entries,e.key)?(delete t.entries[e.key],await x(n,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(n),r=T(e.signal);if(r)return r;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(n,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": "1.0.0",
3
+ "version": "1.1.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": {
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,i as r,l as i,m as a,n as o,o as s,p as ee,r as te,s as ne,t as c,u as re}from"./detect-D84qpua_.mjs";import{B as ie,G as l,K as u,M as ae,O as d,P as f,R as oe,U as p,V as se,W as m,Y as h,_ as ce,b as le,d as ue,et as de,f as fe,g as pe,h as me,m as he,p as ge,v as _e,y as ve,z as ye}from"./color-CtIn3BLf.mjs";import be from"node:process";const xe={binary:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},brew:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},bun:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},cargo:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},deno:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},mise:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},npm:{canInstall:!0,canLookupLatestVersion:!0,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},pip:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},uv:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`},script:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!1,canUpdate:!1,lifecycle:`unmanaged`},winget:{canInstall:!0,canLookupLatestVersion:!1,canUninstall:!0,canUpdate:!0,lifecycle:`managed`}};function g(e){return xe[e]}function _(e){return g(e).lifecycle===`managed`}function v(e){return g(e).lifecycle}function y(e){return g(e).canUpdate}function Se(e){return g(e).canUninstall}function b(e){return g(e).canLookupLatestVersion}function x(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function S(e,t){if(t.packageName)return t.packageName;if(t.type===`cargo`)return e.packages?.cargo;if(t.type===`deno`)return e.packages?.deno;if(t.type===`mise`)return e.packages?.mise;if(t.type===`pip`)return e.packages?.pip;if(t.type===`uv`)return e.packages?.uv;if(t.type===`bun`||t.type===`npm`)return e.packages?.npm}function C(e){return e?y(e.installType):!1}function w(e,t){return C(t)||!!e.selfUpdate}function Ce(e){return!!e&&b(e.installType)}function we(e){return e.length>0&&e.every(e=>b(e.type))}function Te(e){return _(e.type)?`${v(e.type)}/${e.type}${x(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Ee(e){return e?_(e.installType)?`managed via ${e.installType}${x(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function De(e,t){let n=Fe({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function Oe(e,t){if(t.type===`bun`){let n=S(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=S(e,t);return n?`npm i -g ${n}`:``}if(t.type===`brew`)return t.packageName?t.packageTargetKind===`cask`?`brew install --cask ${t.packageName}`:`brew install ${t.packageName}`:``;if(t.type===`cargo`){let n=S(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=S(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=S(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=S(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=S(e,t);return n?[`uv`,`tool`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}return t.type===`winget`?t.packageName?`winget install --id ${t.packageName} -e`:``:t.command??``}function ke(e,t,n){if(t)return Ce(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!we(n)))return e.packages.npm}function Ae(e,t){let n=je(t);if(n){let t=e.find(e=>e.type===n);if(t)return t}if(e.length!==1)return;let[r]=e;if(!(r.type!==`script`&&r.type!==`binary`))return r}function je(e){if(!e)return;let t=e.replaceAll(`\\`,`/`);if(t.includes(`/.bun/bin/`)||t.includes(`/.bun/install/global/`))return`bun`;if(t.includes(`/.local/share/mise/shims/`)||t.includes(`/.mise/shims/`))return`mise`;if(t.includes(`/node_modules/.bin/`)||t.includes(`/node_modules/`))return`npm`}function T(e){if(e.installedState)return _(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(_(t.type)&&y(t.type))return t.type}const Me={strategy:`managed`,canHandle:e=>!!T(e),getManagedInstallerType:e=>T(e)},Ne={strategy:`self-update`,canHandle:e=>!C(e.installedState)&&!!e.agent.selfUpdate},E={strategy:`manual-hint`,canHandle:()=>!0},D=[Me,Ne,E];function Pe(e){return D.find(t=>t.canHandle(e))??E}function Fe(e){return Pe(e).strategy}function Ie(e){return w(e.agent,e.installedState)}async function O(e){let t=c(),n=typeof e==`function`?e(t):e;try{return be.platform===`win32`?await u(l([`powershell.exe`,`-Command`,n]))===0:await u(l([`sh`,`-c`,n]))===0}catch{return!1}}function Le(e){return e===`cask`?[`--cask`]:[]}async function k(e,t,n){try{return await u(l([`brew`,e,...Le(n),t]))===0}catch{return!1}}async function Re(e,t){return k(`install`,e,t)}async function A(e,t){return k(`upgrade`,e,t)}async function ze(e){for(let t of e)if(!await A(t.packageName,t.packageTargetKind))return!1;return!0}async function Be(e,t){return k(`uninstall`,e,t)}async function j(e,t,n=[]){try{return await u(l([`cargo`,e,t,...n]))===0}catch{return!1}}async function M(e,t){return j(`install`,e,t)}async function N(e,t){return M(e,[`--force`,...t??[]])}async function Ve(e){for(let t of e)if(!await N(t.packageName,t.packageInstallArgs))return!1;return!0}async function He(e){return j(`uninstall`,e)}async function P(e,t=[],n={}){let r=[`deno`,`install`,`--global`];n.force&&r.push(`--force`),r.push(...t,e);try{return await u(l(r))===0}catch{return!1}}async function Ue(e,t){return P(e,t)}async function F(e,t){return P(e,t,{force:!0})}async function We(e){for(let t of e)if(!await F(t.packageName,t.packageInstallArgs))return!1;return!0}async function Ge(e){try{return await u(l([`deno`,`uninstall`,`--global`,e]))===0}catch{return!1}}async function I(e,t=!1){try{return await u(l([`mise`,`use`,`--global`,...t?[`--force`]:[],e]))===0}catch{return!1}}async function Ke(e){return I(e)}async function L(e){return I(e,!0)}async function qe(e){for(let t of e)if(!await L(t.packageName))return!1;return!0}async function Je(e){try{return await u(l([`mise`,`unuse`,`--global`,e]))===0}catch{return!1}}async function Ye(e){try{let{exitCode:t,stdout:n}=await p(m([`mise`,`ls`,`--installed`,`--json`,e],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?Xe(n,e):void 0}catch{return}}function Xe(e,t){try{let n=JSON.parse(e);if(!R(n))return;let r=Ze(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(R(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function Ze(e,t){if(Array.isArray(e[t]))return t;let n=t.split(`:`).pop()?.split(`/`).pop();if(n)return Object.keys(e).find(t=>t===n&&Array.isArray(e[t]))}function R(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let z=null;async function Qe(){if(z)return z;for(let e of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await p(m([...e,`--version`]));if(t===0)return z=e,e}catch{}return z=[`pip`],z}async function B(e){try{return await u(l([...await Qe(),...e]))===0}catch{return!1}}async function $e(e){return B([`install`,e])}async function V(e){return B([`install`,`--upgrade`,e])}async function et(e){if(e.length===0)return!0;for(let t of e)if(!await V(t.packageName))return!1;return!0}async function tt(e){return B([`uninstall`,`-y`,e])}async function H(e,t,n=[]){try{return await u(l([`uv`,`tool`,e,t,...n]))===0}catch{return!1}}async function nt(e,t){return H(`install`,e,t)}async function U(e,t){return H(`upgrade`,e,t)}async function rt(e){for(let t of e)if(!await U(t.packageName,t.packageInstallArgs))return!1;return!0}async function it(e){try{return await u(l([`uv`,`tool`,`uninstall`,e]))===0}catch{return!1}}async function at(e){try{let{exitCode:t,stdout:n}=await p(m([`uv`,`tool`,`list`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?ot(n,e):void 0}catch{return}}function ot(e,t){let n=W(t);for(let t of e.split(/\r?\n/)){let e=t.trim(),r=/^(\S+)\s+v([^\s]+)/.exec(e);if(!r)continue;let[,i,a]=r;if(W(i)===n)return a}}function W(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}async function G(e,t){try{return await u(l([`winget`,e,`--id`,t,`-e`]))===0}catch{return!1}}async function st(e){return G(`install`,e)}async function K(e){return G(`upgrade`,e)}async function ct(e){for(let t of e)if(!await K(t.packageName))return!1;return!0}async function lt(e){return G(`uninstall`,e)}const ut={brew:{type:`brew`,isAvailable:async()=>te(),install:async(e,t)=>Re(e,t),uninstall:async(e,t)=>Be(e,t),update:async(e,t)=>A(e,t),updateMany:async e=>ze(e)},bun:{type:`bun`,getInstalledVersion:async e=>pe(e),isAvailable:async()=>r(),install:async e=>ce(e),uninstall:async e=>_e(e),update:async(e,t,n)=>ve(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>le(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},cargo:{type:`cargo`,isAvailable:async()=>e(),install:async(e,t,n)=>M(e,n),uninstall:async e=>He(e),update:async(e,t,n)=>N(e,n?.packageInstallArgs),updateMany:async e=>Ve(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},deno:{type:`deno`,isAvailable:async()=>s(),install:async(e,t,n)=>Ue(e,n),uninstall:async(e,t,n)=>Ge(n?.binaryName??e),update:async(e,t,n)=>F(e,n?.packageInstallArgs),updateMany:async e=>We(e.map(e=>({binaryName:e.binaryName,packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},mise:{type:`mise`,getInstalledVersion:async e=>Ye(e),isAvailable:async()=>ne(),install:async e=>Ke(e),uninstall:async e=>Je(e),update:async e=>L(e),updateMany:async e=>qe(e.map(e=>({packageName:e.packageName})))},npm:{type:`npm`,getInstalledVersion:async e=>ue(e),isAvailable:async()=>t(),install:async e=>fe(e),uninstall:async e=>ge(e),update:async(e,t,n)=>he(e,n?.npmBunUpdateStrategy),updateMany:async(e,t)=>me(e.map(e=>e.packageName),t?.npmBunUpdateStrategy)},pip:{type:`pip`,isAvailable:async()=>i(),install:async e=>$e(e),uninstall:async e=>tt(e),update:async e=>V(e),updateMany:async e=>et(e.map(e=>({packageName:e.packageName})))},uv:{type:`uv`,getInstalledVersion:async e=>at(e),isAvailable:async()=>re(),install:async(e,t,n)=>nt(e,n),uninstall:async e=>it(e),update:async(e,t,n)=>U(e,n?.packageInstallArgs),updateMany:async e=>rt(e.map(e=>({packageInstallArgs:e.packageInstallArgs,packageName:e.packageName})))},winget:{type:`winget`,isAvailable:async()=>n(),install:async e=>st(e),uninstall:async e=>lt(e),update:async e=>K(e),updateMany:async e=>ct(e.map(e=>({packageName:e.packageName})))}};function q(e){return ut[e]}const J={resource:`agent lifecycle`,scope:[`agent-lifecycle`]};async function dt(){return(await de()).defaultPackageManager}async function Y(){return{npmBunUpdateStrategy:(await de()).npmBunUpdateStrategy}}async function X(e){let t=c(),n=e.platforms[t];if(!n)return[];let r=await dt();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function Z(e,t,n,r,i,a,o){let s=q(e);return await s.isAvailable()?a===`install`?s.install(t,i,r):a===`update`?s.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r}):s.uninstall(t,i,{binaryName:n}):!1}async function ft(e,t,n,r){if(_(t.type)){let i=S(e,t);return i?Z(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):!1}return n===`update`&&!y(t.type)||!t.command?!1:O(t.command)}async function pt(e,t,n){return _(e.installType)?e.packageName?Z(e.installType,e.packageName,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n):!1:t!==`install`||!e.command?!1:O(e.command)}async function mt(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await O(e.join(` `)))return!0;return!1}async function Q(e,t){let n={agentName:e.name,installType:t.type,packageName:S(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),await f(n),n}async function ht(e,t){return h(J,async()=>Q(e,t))}async function gt(e){return h(J,async()=>{let t=await X(e);for(let n of t)if(await ft(e,n,`install`))return{success:!0,installedState:await Q(e,n)};return{success:!1}})}async function _t(e,t){return h(J,async()=>{let{npmBunUpdateStrategy:n}=await Y(),r=await X(e);if(t&&await pt(t,`update`,n))return await f(t),{success:!0,installedState:t};if(!t){for(let t of r)if(await ft(e,t,`update`,n))return{success:!0,installedState:await Q(e,t)}}return await mt(e)?{success:!0}:{success:!1}})}async function vt(e,t){return h(J,async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=q(e);return await r.isAvailable()?r.updateMany(n,await Y()):!1})}async function yt(e,t,n){let r=q(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function bt(e){return h(J,async()=>{let t=await d(e.name);if(!t)return!1;let n=await pt(t,`uninstall`);return n&&await ae(e.name),n})}async function $(e){let[t,n,r]=await Promise.all([X(e),d(e.name),o(e.binaryName)]),[i,a,s]=await Promise.all([r?St(e,n):Promise.resolve(void 0),r?oe(e.binaryName):Promise.resolve(void 0),Ct(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:s,binaryPath:a,resolvedBinaryPath:await se(a),sourceLabel:Ee(n),updateLabel:De(e,n),lifecycle:n?v(n.installType):`unmanaged`}}async function xt(e){return Promise.all(e.map($))}async function St(e,t){if(t&&_(t.installType)&&t.packageName){let e=await yt(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ye(e.binaryName,e.versionProbe)}async function Ct(e,t,n){let r=ke(e,t,n);if(r)return ie(r)}function wt(e){return ee(e)}async function Tt(e){let t=wt(e);if(t)return{agent:t,inspection:await $(t)}}async function Et(){return xt(a())}export{Se as C,_ as D,g as E,b as S,v as T,w as _,xt as a,Ae as b,ht as c,vt as d,q as f,Pe as g,Fe as h,$ as i,bt as l,Ie as m,wt as n,X as o,D as p,Tt as r,gt as s,Et as t,_t as u,Oe as v,y as w,S as x,Te as y};
@@ -1,5 +0,0 @@
1
- import{a as e,c as t,d as n,i as r,l as i,m as a,o,r as s,s as c,t as l,u}from"./detect-D84qpua_.mjs";import{a as d,r as f,s as p,t as m}from"./color-CtIn3BLf.mjs";import h from"node:process";async function g(){let[m,g,y,b,x,S,C,w,T,E]=await Promise.all([r(),t(),s(),e(),o(),c(),i(),u(),n(),p()]);return d(f({action:`capabilities`,data:{agents:a().map(e=>e.name),features:{assumeYes:!0,cacheBypass:!0,cacheRefresh:!0,channels:[`stable`,`beta`],colorModes:[`auto`,`always`,`never`],dryRun:!0,execInstallPolicies:[`never`,`if-missing`,`always`],freshnessMetadata:!0,idempotencyKey:!0,logLevels:[`silent`,`error`,`warn`,`info`,`debug`],quietLogs:!0,selfUpgrade:E.canAutoUpdate,timeout:!0},installers:{brew:{available:y,reason:y?void 0:_(`brew`)},bun:{available:m,reason:m?void 0:_(`bun`)},cargo:{available:b,reason:b?void 0:_(`cargo`)},deno:{available:x,reason:x?void 0:_(`deno`)},mise:{available:S,reason:S?void 0:_(`mise`)},npm:{available:g,reason:g?void 0:_(`npm`)},pip:{available:C,reason:C?void 0:_(`pip`)},uv:{available:w,reason:w?void 0:_(`uv`)},winget:{available:T,reason:T?void 0:_(`winget`)}},outputModes:[`human`,`json`,`ndjson`],platform:{arch:h.arch,os:l()}},target:{kind:`system`,name:`capabilities`}}),v)}function _(e){return e===`winget`&&h.platform!==`win32`||e===`brew`&&h.platform===`win32`?`not-on-platform`:`not-found`}function v(e){e.data&&(console.log(m.bold(`
2
- 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(m.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(m.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?m.green(`available`):m.red(e.reason??`not-found`)}export{g as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./capabilities-BEDb8xQf.mjs";export{e as capabilitiesCommand};
@@ -1,6 +0,0 @@
1
- import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import{existsSync as r,mkdirSync as i,writeFileSync as a}from"node:fs";import{chmod as o,mkdir as s,mkdtemp as c,readFile as l,realpath as u,rename as d,rm as f,stat as p,writeFile as m}from"node:fs/promises";import{basename as h,dirname as g,join as _,win32 as v}from"node:path";import{homedir as ee}from"node:os";import{spawn as y}from"node:child_process";import{text as te}from"node:stream/consumers";import{fileURLToPath as ne}from"node:url";import{Buffer as re}from"node:buffer";import ie from"picocolors";function ae(e){let t=e.trim().match(/^(\d+)(ms|[smh])?$/);if(!t)return;let n=Number.parseInt(t[1],10),r=t[2]??`ms`;if(Number.isFinite(n))switch(r){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*60*1e3;case`h`:return n*60*60*1e3;default:return}}let b,x=new Set;function S(){return b??=pe(),b}function oe(e){x=new Set,b={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function se(){b=void 0,x=new Set}function ce(e={}){let r=n.stdin.isTTY!==!1,i=n.stdout.isTTY!==!1,a=!r||!i,o=e.json||e.output===`json`?`json`:e.output===`ndjson`?`ndjson`:e.output===`human`?`human`:a?`json`:`human`,s=e.timeout===void 0?void 0:ae(e.timeout),c=me(e.color),l=he(e.logLevel);if(e.timeout!==void 0&&s===void 0)throw Error(`Invalid timeout value: ${e.timeout}`);if(e.refresh&&e.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:e.yes,cacheMode:e.noCache?`no-cache`:e.refresh?`refresh`:`default`,cancelled:!1,colorMode:c,dryRun:e.dryRun,idempotencyKey:e.idempotencyKey,interactive:!e.nonInteractive&&!a&&r&&i,logLevel:l,outputMode:o,quiet:e.quiet,runId:e.runId??n.env.QUANTEX_RUN_ID??t(),timeoutMs:s}}function le(){b&&(b.cancelled=!0)}async function ue(){le();let e=[...x];x.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function de(e){return x.add(e),()=>{x.delete(e)}}function fe(e){let t=S();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function pe(){return ce()}function me(e){if(e===void 0||e===`auto`)return`auto`;if(e===`always`)return`always`;if(e===`never`)return`never`;throw Error(`Invalid color mode: ${e}`)}function he(e){if(e===void 0||e===`info`)return`info`;if(e===`silent`||e===`error`||e===`warn`||e===`debug`)return e;throw Error(`Invalid log level: ${e}`)}const ge=`https://registry.npmjs.org`;function C(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function _e(e,t,n){return`${C(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}const ve={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function w(){return _(n.env.HOME||n.env.USERPROFILE||ee(),`.quantex`)}function T(){return _(w(),`config.json`)}async function E(){let e={...ve,...await Se()};return{...e,defaultPackageManager:ye(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:D(e.networkRetries,2),networkTimeoutMs:D(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?C(e.selfUpdateRegistry):void 0,versionCacheTtlHours:D(e.versionCacheTtlHours,6)}}function ye(e){return e===`bun`||e===`mise`||e===`npm`}function be(e){return e===`latest-major`||e===`respect-semver`}async function xe(e){await s(w(),{recursive:!0}),await m(T(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function Se(){try{let e=await l(T(),`utf8`),t=JSON.parse(e);return Ce(t)?t:{}}catch{return{}}}function D(e,t){if(typeof e==`number`&&Number.isInteger(e)&&e>0)return e;if(typeof e==`string`){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>0)return t}return t}function Ce(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var O=class extends Error{lockPath;resource;constructor(e,t){super(`Another quantex process is already using the ${e} lock.`),this.name=`ResourceLockError`,this.lockPath=t,this.resource=e}};function we(e){return e instanceof O}function Te(e){let t=e.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),n=t.length>0?t:[`default`],r=n.slice(0,-1),i=`${n.at(-1)}.lock`;return _(w(),`locks`,...r,i)}async function k(e){let t=Te(e.scope);return await s(g(t),{recursive:!0}),await Ee(e.resource,t),async()=>{await f(t,{force:!0,recursive:!0})}}async function Ee(e,t){try{i(t,{recursive:!1}),De(t);return}catch(e){if(!Me(e))throw e}if(!await Oe(t))throw new O(e,t);try{i(t,{recursive:!1}),De(t)}catch(n){throw Me(n)?new O(e,t):n}}function De(e){a(_(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function Oe(e){let t;try{t=await ke(e)}catch{return!1}return t&&je(t.pid)?!1:(await f(e,{force:!0,recursive:!0}),!0)}async function ke(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await Ae(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await Ae(e)}async function Ae(e){try{let t=await l(_(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(Ne(e))return;throw e}}function je(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Me(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Ne(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Pe(e,t){let n=await k(e);try{return await t()}finally{await n()}}async function Fe(){try{return await k({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(we(e))return;throw e}}const A=`quantex-cli`,j=`https://github.com/Drswith/quantex-cli`,Ie=`1.0.0`;function M(e,t={}){if(S().outputMode===`human`){let n=P(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:de(()=>He(n)),outputDrained:Promise.resolve(),proc:n}}let n=P(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:de(()=>He(n)),outputDrained:Promise.all([Le(n.stdout),Le(n.stderr)]).then(()=>void 0),proc:n}}async function N(e){let t=S();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}function P(e,t={}){let n=Be();if(n)return Ve(e,t,n);let[r,...i]=e;if(!r)throw Error(`spawnCommand requires a non-empty command array.`);let a=y(r,i,{...t,shell:t.shell??ze(r)});return{get exitCode(){return a.exitCode},pid:a.pid,stderr:a.stderr,stdout:a.stdout,exited:Re(a),kill:a.kill.bind(a),unref:()=>a.unref()}}async function F(e){let[t,n,r]=await Promise.all([I(e.stdout),I(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function Le(e){if(!e)return;let t=await I(e);t&&n.stderr.write(t)}async function Re(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function I(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():te(e):``}function ze(e){return n.platform!==`win32`||e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e)}function Be(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Ve(e,t,n){let r=n([...e],t);return{get exitCode(){return r.exitCode},pid:r.pid,stderr:r.stderr,stdout:r.stdout,exited:r.exited.then(()=>typeof r.exitCode==`number`?r.exitCode:1),kill:e=>r.kill?.(e)??!1,unref:()=>r.unref?.()}}async function He(e){n.platform===`win32`&&e.pid!==void 0&&await We(Ue(e.pid),2e3);try{e.kill?.(`SIGTERM`)}catch{}await We(e.exited.then(()=>void 0).catch(()=>void 0),2e3)}async function Ue(e){await new Promise(t=>{let n=y(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});n.once(`error`,()=>t()),n.once(`close`,()=>t())})}async function We(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}async function L(e,t){let n=await Ge(e,t,`json`);if(n)try{return JSON.parse(n)}catch{return}}async function Ge(e,t,n=`text`){let r=await E(),i=r.versionCacheTtlHours*60*60*1e3,a=S().cacheMode,o=a===`no-cache`?{entries:{}}:await qe(),s=o.entries[t],c=Date.now();if(a===`default`&&s&&s.expiresAt>c)return R(s,i),s.body;let l=await Ke(e,{headers:a!==`no-cache`&&s?.etag?{"If-None-Match":s.etag}:void 0,retries:r.networkRetries,timeoutMs:r.networkTimeoutMs});if(!l)return s&&R(s,i),s?.body;if(l.status===304&&s)return o.entries[t]={...s,expiresAt:c+i,fetchedAt:c},a!==`no-cache`&&await Je(o),Xe(c,c+i),s.body;if(!l.ok)return s&&R(s,i),s?.body;let u=await l.text();if(n===`json`)try{JSON.parse(u)}catch{return s&&R(s,i),s?.body}let d={body:u,etag:l.headers.get(`etag`)??void 0,expiresAt:c+i,fetchedAt:c};return a!==`no-cache`&&(o.entries[t]=d,await Je(o)),Xe(c,c+i),u}async function Ke(e,t){for(let n=0;n<=t.retries;n++){let r=new AbortController,i=setTimeout(()=>r.abort(),t.timeoutMs);try{return await fetch(e,{headers:t.headers,signal:r.signal})}catch{if(n===t.retries)return}finally{clearTimeout(i)}}}async function qe(){try{return JSON.parse(await l(Ye(),`utf8`))}catch{return{entries:{}}}}async function Je(e){await s(_(w(),`cache`),{recursive:!0}),await m(Ye(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Ye(){return _(w(),`cache`,`versions.json`)}function R(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);fe({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Xe(e,t){fe({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Ze=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Qe(e,t){if(t)return t(e);let n=e.trim().split(`
2
- `)[0],r=n.match(Ze);return r?r[1]:n||void 0}function $e(e,t){let n=nt(e),r=nt(t);if(!(!n||!r)){for(let e=0;e<3;e+=1){let t=n.core[e]-r.core[e];if(t!==0)return t>0?1:-1}return rt(n.prerelease,r.prerelease)}}function z(e,t){return $e(e,t)===1}async function B(e,t){let n=t?.command??[e,`--version`];try{let{exitCode:e,stdout:r}=await F(P(n));return e===0?Qe(r,t?.parser):void 0}catch{return}}async function V(e,t=`latest`,n={}){try{let r=C(n.registry)??`https://registry.npmjs.org`;return(await L(_e(e,t,r),`npm:${r}:${e}:${t}`))?.version}catch{return}}async function et(e){try{let{exitCode:t,stdout:r}=await F(P([n.platform===`win32`?`where`:`which`,e]));return t===0?r.trim().split(`
3
- `)[0]:void 0}catch{return}}async function tt(e){if(e)try{return await u(e)}catch{return e}}function nt(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/i);if(t)return{core:[Number(t[1]),Number(t[2]),Number(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function rt(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;if(n===i)continue;let a=/^\d+$/.test(n),o=/^\d+$/.test(i);return a&&o?Number(n)>Number(i)?1:-1:a?-1:o||n>i?1:-1}return 0}const it={installedAgents:{},self:{}};function H(){return _(w(),`state.json`)}async function U(){return ft()}async function at(e){let t=await k({resource:`state`,scope:[`state`]});try{await gt(e)}finally{await t()}}async function ot(e){return(await U()).installedAgents[e]}async function st(e){await W(t=>{t.installedAgents[e.agentName]=e})}async function ct(e){await W(t=>{delete t.installedAgents[e]})}async function lt(){return(await U()).self}async function ut(e){await W(t=>{t.self.installSource=e})}async function dt(e,t){await W(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function ft(){try{let e=JSON.parse(await l(H(),`utf8`)),t=pt(e.self);return{installedAgents:e.installedAgents??{},self:t}}catch{return{...it}}}function pt(e){if(!ht(e))return{};let t={...e};return mt(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 mt(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function ht(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function gt(e){await s(w(),{recursive:!0}),await m(H(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function W(e){let t=await k({resource:`state`,scope:[`state`]});try{let t=await ft();await e(t),await gt(t)}finally{await t()}}function _t(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function G(e=n.execPath){if(h(_t(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 vt(e=n.execPath){let t=G(e);if(t)return`${j}/releases/latest/download/${t}`}function yt(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 bt(e){let t=await L(await xt(e),`self:manifest:${e}`);if(!t)throw Error(`Failed to download release manifest.`);return t}async function xt(e){if(e===`stable`)return`${j}/releases/latest/download/manifest.json`;let t=(await St(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 St(e){let t=wt();if(!t)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let n=await L(`https://api.github.com/repos/${t}/releases?per_page=20`,`self:github-releases`);if(!n)throw Error(`Failed to query GitHub releases.`);let r=n.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!r)throw Error(`No GitHub release was found for the ${e} channel.`);return r}function Ct(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=G(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function wt(){return j.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}const Tt=A,Et=`/node_modules/${Tt}`;async function Dt(e){let t=await At(),r=n.execPath,i=t.foundPackageJson?K(t.packageRoot):K(``,r),a=await kt((await lt()).installSource,i),o=await E(),s=yt(e?.updateChannel,o.selfUpdateChannel);return{canAutoUpdate:Ot(a),currentVersion:t.version||`1.0.0`,executablePath:r,installSource:a,packageRoot:t.packageRoot,updateChannel:s}}function Ot(e){return e===`binary`||e===`bun`||e===`npm`}async function kt(e,t){return t!==`unknown`&&e!==t?(await ut(t),t):e??t}function K(e,t=n.execPath){let r=Mt(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Et)?`npm`:r?`source`:Nt(t)?`binary`:`unknown`}async function At(e=import.meta.url){let t=Pt(e),n=g(t);for(;;){let e=_(n,`package.json`),t=await jt(e);if(t?.name===Tt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.0.0`};let r=g(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:_(g(t),`package.json`),packageRoot:g(t),version:Ie}}function q(){return Ie}async function jt(e){try{return JSON.parse(await l(e,`utf8`))}catch{return}}function Mt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Nt(e){let t=h(Mt(e));return t!==`bun`&&t!==`bun.exe`}function Pt(e){try{return ne(e)}catch{return n.execPath}}async function Ft(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=C(r.QTX_SELF_UPDATE_REGISTRY);return a?{isOverride:!0,registry:a,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await It(e,r,i)||{isOverride:!1,registry:ge,source:`fallback`}}async function It(e,t,n){if(e===`bun`){let e=Lt(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Rt(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=Lt(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Bt(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function Lt(e,t){for(let n of t){let t=C(e[n]);if(t)return t}}async function Rt(e,t){let n=Ut(t),i=t.XDG_CONFIG_HOME,a=Ht(e,`bunfig.toml`),o=[_(n,`.bunfig.toml`),i?_(i,`.bunfig.toml`):void 0];if(a){let e=await zt(a);if(e)return e}for(let e of o){if(!e||!r(e))continue;let t=await zt(e);if(t)return t}}async function zt(e){try{return Wt(await l(e,`utf8`))}catch{return}}async function Bt(e,t){let n=Ut(t),i=Ht(e,`.npmrc`),a=_(n,`.npmrc`);if(i){let e=await Vt(i);if(e)return e}if(r(a))return Vt(a)}async function Vt(e){try{let t=(await l(e,`utf8`)).split(`
4
- `).map(e=>e.trim());for(let e=t.length-1;e>=0;--e){let n=t[e];if(!n||n.startsWith(`#`)||n.startsWith(`;`))continue;let r=n.match(/^registry\s*=\s*(.+)$/);if(!r?.[1])continue;let i=C(r[1]);if(i)return i}}catch{}}function Ht(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 Ut(e){return e.HOME||e.USERPROFILE||ee()}function Wt(e){let t=Gt(e,[/(?:^|\n)\s*install\.registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*install\.registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*install\s*=\s*\{[\s\S]*?\bregistry\s*=\s*["']([^"'#\n]+)["'][\s\S]*?\}/,/(?:^|\n)\s*install\s*=\s*\{[\s\S]*?\bregistry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["'][\s\S]*?\}[\s\S]*?\}/]);if(t)return C(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return C(Gt(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Gt(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}async function Kt(e){let t=await E();if(e.installSource===`binary`)try{let t=await bt(e.updateChannel),n=Ct(t,e.executablePath);return n?{binaryAsset:n,targetVersion:t.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch{return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let n=e.updateChannel===`beta`?`beta`:`latest`,r=await V(A,n,{registry:ge});if(e.installSource===`bun`||e.installSource===`npm`){let i=await Ft(e.installSource,t);return{managedRegistry:i?.registry,managedRegistryIsOverride:i?.isOverride??!1,packageTag:n,targetVersion:await V(A,n,{registry:i?.registry}),upstreamLatestVersion:r,verificationCommand:Qt(e.packageRoot)}}return{packageTag:n,targetVersion:r,upstreamLatestVersion:r}}async function J(e){let t=e?.facts??await Dt({updateChannel:e?.updateChannel}),n=e?.target??await Kt(t),r=n.targetVersion?z(n.targetVersion,t.currentVersion):!1;return{facts:t,status:Xt(t,n,r),target:n,updateAvailable:r}}function qt(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 Jt(e,t){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let n=await Zt(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 Yt(e){let t={canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel},n={managedRegistry:e.managedRegistry,managedRegistryIsOverride:e.managedRegistryIsOverride,packageTag:e.updateChannel===`beta`?`beta`:`latest`,targetVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion,verificationCommand:Qt(e.packageRoot)},r=e.latestVersion?z(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Xt(t,n,r),target:n,updateAvailable:r}}function Xt(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Zt(e){if(e.target.verificationCommand){let t=await B(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return B(e.facts.executablePath)}function Qt(e){if(e)return[n.execPath,_(e,`dist`,`cli.mjs`),`--version`]}async function $t(e,t,r,i,a=en(t)){let s;try{s=await fetch(e)}catch(t){return X(`network`,`Failed to download ${e}.`,t)}if(!s.ok)return X(`network`,`Failed to download ${e}: HTTP ${s.status}.`);let l=await c(_(g(t),`.quantex-upgrade-`)),u=_(l,h(t)),p=`${t}.bak`,v=!1;try{let c=re.from(await s.arrayBuffer()),h=await tn(t),g=sn(c);if(g!==cn(r))return X(`checksum`,`Checksum mismatch for ${e}. Expected ${cn(r)}, got ${g}.`);if(await m(u,c),n.platform===`win32`)return nn(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 on(t,i);return _.success?(v=!1,await f(p,{force:!0}),{success:!0}):(await Z(p,t),v=!1,_)}catch(e){if(v){try{await Z(p,t)}catch{}v=!1}return X(an(e),`Failed to replace the current Quantex binary.`,e)}finally{n.platform!==`win32`&&await f(l,{recursive:!0,force:!0})}}function en(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 tn(e){try{return(await p(e)).mode&511}catch{return 493}}function nn(e,t,r,i,a,o){try{return P([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,rn(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return X(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function rn(e,t,n,r,i,a,o){let s=Y(e),c=Y(t),l=Y(n),u=Y(r),d=Y(a??``),f=Y(o??``);return[`$ErrorActionPreference = 'Stop'`,`$pidToWait = ${i}`,`$tempPath = '${s}'`,`$targetPath = '${c}'`,`$backupPath = '${l}'`,`$tempDir = '${u}'`,`$expectedVersion = '${d}'`,`$peerPath = '${f}'`,`while (Get-Process -Id $pidToWait -ErrorAction SilentlyContinue) { Start-Sleep -Milliseconds 200 }`,`for ($attempt = 0; $attempt -lt 50; $attempt++) {`,` try {`,` if (Test-Path -LiteralPath $backupPath) { Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue }`,` Move-Item -LiteralPath $targetPath -Destination $backupPath -Force -ErrorAction Stop`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`if ($expectedVersion -ne '') {`,` $output = & $targetPath --version 2>$null`,` if ($LASTEXITCODE -ne 0 -or ($output -notmatch [regex]::Escape($expectedVersion))) {`,` Remove-Item -LiteralPath $targetPath -Force -ErrorAction SilentlyContinue`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,` }`,`}`,`if ($peerPath -ne '') {`,` Copy-Item -LiteralPath $targetPath -Destination $peerPath -Force`,`}`,`Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue`,`Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`].join(`; `)}function Y(e){return e.replaceAll(`'`,`''`)}function X(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function an(e){let t=typeof e==`object`&&e&&`code`in e?String(e.code):``;return t===`EACCES`||t===`EPERM`?`permission`:t===`EBUSY`?`locked`:`unknown`}async function Z(e,t){await f(t,{force:!0}),await d(e,t)}async function on(e,t){if(!t)return{success:!0};try{let{exitCode:n,stdout:r}=await F(P([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return n===0?r.includes(t)?{success:!0}:X(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):X(`verify`,`The upgraded Quantex binary exited with code ${n} during verification.`)}catch(e){return X(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function sn(t){return e(`sha256`).update(t).digest(`hex`)}function cn(e){return e.trim().toLowerCase()}const ln={source:`binary`,canHandle:e=>un(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):vt(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 $t(t.downloadUrl,e.facts.executablePath,t.checksum,e.target.targetVersion??`latest`,en(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 un(e){return`facts`in e?e.facts.installSource:e.installSource}async function dn(e,t,n){try{let r=t?`${e}@${t}`:e,i=C(n);return await Q([`bun`,`add`,`-g`,...i?[`--registry`,i]:[],r],[e])}catch{return!1}}async function fn(e,t=`latest-major`,n=`latest`,r){try{let i=n===`latest`?e:`${e}@${n}`,a=C(r);return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...a?[`--registry`,a]:[],i],[e])}catch{return!1}}async function pn(e,t=`latest-major`){if(e.length===0)return!0;try{return await Q([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e)}catch{return!1}}async function mn(e){try{return await N(M([`bun`,`remove`,`-g`,e]))===0}catch{return!1}}async function hn(e){try{let{exitCode:t,stdout:n}=await F(P([`bun`,`pm`,`-g`,`ls`],{stdio:bn()}));return t===0?gn(n,e):void 0}catch{return}}function gn(e,t){let n=`${t}@`;for(let t of e.split(`
5
- `)){let e=t.trim().split(/\s+/).at(-1);if(!e?.startsWith(n))continue;let r=e.slice(n.length);if(r)return r}}async function Q(e,t){return await N(M(e))===0?_n(t):!1}async function _n(e){let t=[...new Set(e)];if(t.length===0)return!0;let n=await vn();if(!n)return!0;let r=yn(n),i=t.filter(e=>r.has(e));return i.length===0?!0:await N(M([`bun`,`pm`,`-g`,`trust`,...i]))===0}async function vn(){try{let{exitCode:e,stdout:t}=await F(P([`bun`,`pm`,`-g`,`untrusted`],{stdio:bn()}));return e===0?t:void 0}catch{return}}function yn(e){let t=new Set;for(let n of e.split(`
6
- `)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function bn(){return[`ignore`,`pipe`,`ignore`]}const xn={source:`bun`,canHandle:e=>Sn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${A}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await dn(A,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${A} through Bun.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function Sn(e){return`facts`in e?e.facts.installSource:e.installSource}async function Cn(e,t,n){try{let r=t?`${e}@${t}`:e,i=C(n);return await N(M([`npm`,`install`,`-g`,r,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function wn(e,t=`latest-major`,n=`latest`,r){try{let i=C(r);return await N(M(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...i?[`--registry`,i]:[]]:[`npm`,`update`,`-g`,e,...i?[`--registry`,i]:[]]))===0}catch{return!1}}async function Tn(e,t=`latest-major`){if(e.length===0)return!0;try{return await N(M(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e]))===0}catch{return!1}}async function En(e){try{return await N(M([`npm`,`uninstall`,`-g`,e]))===0}catch{return!1}}async function Dn(e){try{let{exitCode:t,stdout:n}=await F(P([`npm`,`list`,`-g`,`--depth=0`,`--json`],{stdio:[`ignore`,`pipe`,`ignore`]}));return t===0?On(n,e):void 0}catch{return}}function On(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const kn={source:`npm`,canHandle:e=>An(e)===`npm`,getRecoveryHint:e=>`npm install -g ${A}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e){let t=await Cn(A,e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),e.target.managedRegistry);return{error:t?void 0:{kind:`unknown`,message:`Failed to update ${A} through npm.`},installSource:e.facts.installSource,newVersion:t?e.target.targetVersion:void 0,success:t}}};function An(e){return`facts`in e?e.facts.installSource:e.installSource}const jn={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}}},Mn=[xn,kn,ln,jn];function $(e){return Mn.find(t=>t.canHandle(e))??jn}function Nn(e,t,n=`stable`){return $({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function Pn(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Nn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Fn(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:$(e).getRecoveryHint(e,t)}async function In(e){return qt(await J({updateChannel:e?.updateChannel}))}async function Ln(e){let t=await zn(e),n=await Fe();if(!n)return{error:{kind:`locked`,message:`Another qtx upgrade is already running.`},installSource:t.facts.installSource,success:!1};try{return Jt(t,await $(t).upgrade(t))}finally{await n()}}function Rn(e,t=n.execPath){return Pn(e,t)}async function zn(e){return e?`facts`in e?e:e.installSource===`binary`?J({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Yt(e):J()}function Bn(e){return Wn({...e,error:null,ok:!0})}function Vn(e){return Wn({...e,ok:!1})}function Hn(e,t,n={}){let r=S();return r.cancelled&&!n.force||(r.outputMode===`json`?console.log(JSON.stringify(e,null,2)):r.outputMode===`ndjson`?Kn({action:e.action,data:e,target:e.target,type:`result`}):t(e)),e}function Un(e,t={}){let n=S();if(!(n.cancelled&&!t.force)&&n.outputMode===`ndjson`)return Kn(e)}function Wn(e){let t=S();return{action:e.action,data:e.data,error:e.error??null,exitCode:e.exitCode,meta:{fetchedAt:t.freshness?.fetchedAt,mode:t.outputMode,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:q()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Gn(e){let t=S();return{action:e.action,data:e.data,meta:{fetchedAt:t.freshness?.fetchedAt,mode:`ndjson`,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:q()},target:e.target,type:e.type}}function Kn(e){let t=Gn(e);return console.log(JSON.stringify(t)),t}const{createColors:qn,isColorSupported:Jn}=ie;function Yn(){let e=S().colorMode??`auto`;return qn(e===`always`?!0:e===`never`?!1:Jn)}const Xn=new Proxy({},{get(e,t){let n=Yn(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{be as $,H as A,V as B,Ot as C,vt as D,G as E,ut as F,M as G,z as H,dt as I,we as J,N as K,$e as L,ct as M,at as N,ot as O,st as P,ye as Q,et as R,J as S,q as T,F as U,tt as V,P as W,w as X,Pe as Y,T as Z,dn as _,Hn as a,S as at,pn as b,Ln as c,oe as ct,Dn as d,E as et,Cn as f,hn as g,Tn as h,Un as i,ue as it,U as j,lt as k,Pn as l,wn as m,Vn as n,ve as nt,Rn as o,se as ot,En as p,A as q,Bn as r,C as rt,In as s,ce as st,Xn as t,xe as tt,Fn as u,mn as v,K as w,qt as x,fn as y,B as z};
@@ -1 +0,0 @@
1
- import{t as e}from"./commands-C8Cjtqjn.mjs";export{e as commandsCommand};
@@ -1,3 +0,0 @@
1
- import{a as e,r as t,t as n}from"./color-CtIn3BLf.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};
@@ -1,3 +0,0 @@
1
- import{$ as e,Q as t,a as n,et as r,n as i,nt as a,r as o,rt as s,t as c,tt as l}from"./color-CtIn3BLf.mjs";async function u(c,u,f){if(!c)return n(o({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),d);switch(c){case`get`:{if(!u)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await r())[u];return n(o({action:`config`,data:{action:`get`,key:u,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!t(f))return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!e(f))return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!s(f))return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let a={};try{a=await r()}catch{}return a[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?s(f):f,await l(a),n(o({action:`config`,data:{action:`set`,key:u,value:a[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await l(a),n(o({action:`config`,data:{action:`reset`,config:a},target:{kind:`config`}}),d);default:return n(i({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(c.bold(`
2
- Current Configuration:
3
- `)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};