quantex-cli 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agent-inspection-PCTn6Nc6.mjs → agent-inspection-CCNABDLw.mjs} +1 -1
- package/dist/{agent-installation-Dp03CAn2.mjs → agent-installation-DaFUJAc_.mjs} +1 -1
- package/dist/agents-DKvyp0t3.mjs +1 -0
- package/dist/{capabilities-hjF4kpxs.mjs → capabilities-BMx857FN.mjs} +1 -1
- package/dist/capabilities-CdyhM5p5.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/color-D55TE_Ws.mjs +9 -0
- package/dist/commands-BOHy4Z38.mjs +1 -0
- package/dist/{commands-DjMechiz.mjs → commands-Bt5YKAxY.mjs} +1 -1
- package/dist/{config-Cs1_DPwP.mjs → config-CsJqP4-1.mjs} +2 -2
- package/dist/doctor-FlgVXfJ-.mjs +3 -0
- package/dist/ensure-fBcWjPLH.mjs +1 -0
- package/dist/{ensure-NxyYe2vm.mjs → ensure-zzTePhNS.mjs} +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{info-C4-95Kjx.mjs → info-B1wrZgxM.mjs} +1 -1
- package/dist/inspect-CXX9iv7n.mjs +1 -0
- package/dist/{inspect-Bzu6BDS6.mjs → inspect-D-mA7LLF.mjs} +1 -1
- package/dist/{install-CGHSS_yl.mjs → install-C__aUVW9.mjs} +1 -1
- package/dist/{lifecycle-observations-C1OLPUAV.mjs → lifecycle-observations-F8_4qbsU.mjs} +1 -1
- package/dist/{lifecycle-policy-emF59xDd.mjs → lifecycle-policy-Bkd-ZutQ.mjs} +1 -1
- package/dist/{list-BwTYgNzc.mjs → list-C_TqJIui.mjs} +1 -1
- package/dist/provider-evidence-CcW0d2NQ.mjs +1 -0
- package/dist/{provider-observations-BG3wn0dF.mjs → provider-observations-eOUOsbo-.mjs} +1 -1
- package/dist/{resolve-D-NvixQn.mjs → resolve-CTOjSJag.mjs} +1 -1
- package/dist/resolve-IhUbwUBa.mjs +1 -0
- package/dist/{schema-DuUjt16u.mjs → schema-B1Gva91H.mjs} +1 -1
- package/dist/schema-CsIhmOlH.mjs +1 -0
- package/dist/{uninstall-DLAzYf0i.mjs → uninstall-B__0wIng.mjs} +1 -1
- package/dist/{update-l5KnwT41.mjs → update-_wy1PcLo.mjs} +1 -1
- package/dist/{update-planner-9xPfJpjp.mjs → update-planner-B9twOaqE.mjs} +1 -1
- package/dist/upgrade-CF5MtZgT.mjs +1 -0
- package/dist/{user-output-C1JWMNEt.mjs → user-output-Dkv_5Lew.mjs} +1 -1
- package/dist/{version-cache-D0_L2X5L.mjs → version-cache-Ck-45EIJ.mjs} +1 -1
- package/package.json +1 -1
- package/dist/agents-BrJ8oEkB.mjs +0 -1
- package/dist/capabilities-DywtqYKA.mjs +0 -1
- package/dist/color-BGZ_5A6s.mjs +0 -9
- package/dist/commands-J8gAQ8RH.mjs +0 -1
- package/dist/doctor-D8y0PQ7s.mjs +0 -3
- package/dist/ensure-CGipmEmc.mjs +0 -1
- package/dist/inspect-FAr4x7oh.mjs +0 -1
- package/dist/provider-evidence-D7aplCd6.mjs +0 -1
- package/dist/resolve-DLrskjPy.mjs +0 -1
- package/dist/schema-xUwSt_FZ.mjs +0 -1
- package/dist/upgrade-DP2QHsnb.mjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,Q as t,ot as n}from"./color-
|
|
1
|
+
import{$ as e,Q as t,ot as n}from"./color-D55TE_Ws.mjs";function r(r){let i=r.pathExecutable;return{agent:r.agent,methods:r.methods,installedState:r.installedState,inPath:i.present,installedVersion:i.present?i.version:void 0,latestVersion:r.latestVersion,binaryPath:i.present?i.path:void 0,resolvedBinaryPath:i.present?r.resolvedBinaryPath:void 0,sourceLabel:t(r.installedState),updateLabel:e(r.agent,r.installedState),lifecycle:r.installedState?n(r.installedState.installType):`unmanaged`}}export{r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{_n as e,cn as t,j as n,tn as r}from"./color-D55TE_Ws.mjs";import{d as i,f as a,o,p as s,s as c,t as l,v as u}from"./provider-evidence-CcW0d2NQ.mjs";function d(e){let t=f(e);return{decision:t,plan:{id:`${e.intent.kind}-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:h(t,e)}}}function f(e){let{intent:t,observation:n}=e;return n.kind===`indeterminate`||n.drift.kind===`indeterminate`||n.drift.kind===`conflicting-source`||p(e)?`blocked`:t.kind===`uninstall`?n.kind===`absent`?n.drift.kind===`recorded-absent`?`clear-ghost`:`preserve-unmanaged`:!n.providerId||!y(e)?`preserve-unmanaged`:m(e,`uninstall`)?`uninstall`:`unsupported`:n.kind===`present`?n.drift.kind===`untracked`?n.providerId?`adopt`:`preserve-unmanaged`:`satisfied`:!v(e)||!y(e)?`blocked`:m(e,`install`)?`install`:`unsupported`}function p(e){let{observation:t,provider:n}=e;return t.kind!==`present`||n===void 0?!1:t.providerId!==void 0&&t.providerId!==n.providerId||t.providerTargetId!==void 0&&t.providerTargetId!==n.targetId||t.providerTargetKind!==void 0&&t.providerTargetKind!==n.targetKind}function m(e,t){return e.provider===void 0||e.provider.capabilities.includes(t)}function h(e,t){switch(e){case`install`:return[g(`install`,t,_(`package-present`,t))];case`uninstall`:return[g(`uninstall`,t,_(`package-absent`,t))];case`adopt`:return[b(`adopt-${t.intent.targetId}`,[{executable:t.observation.kind===`present`?t.observation.executablePath??t.intent.targetId:t.intent.targetId,kind:`executable-present`}])];case`clear-ghost`:return[b(`clear-ghost-${t.intent.targetId}`,[])];case`blocked`:case`preserve-unmanaged`:case`satisfied`:case`unsupported`:return[]}}function g(e,t,n){let r=v(t),i=y(t);return{dependsOn:[],effects:[{capability:`${r}-${e}`,kind:`provider-mutation`,providerId:r,targetId:i}],id:`${e}-${t.intent.targetId}`,kind:`operation`,postconditions:[n],preconditions:[]}}function _(e,t){return{kind:e,providerId:v(t),targetId:y(t)}}function v(e){return e.observation.kind===`present`?e.observation.providerId??e.provider?.providerId??e.providerId:e.provider?.providerId??e.providerId}function y(e){return e.observation.kind===`present`?e.observation.providerTargetId??e.provider?.targetId??e.providerTargetId:e.provider?.targetId??e.providerTargetId}function b(e,t){return{dependsOn:[],effects:[],id:e,kind:`operation`,postconditions:t,preconditions:[]}}async function x(e){let t=await e.execute();if(t.kind!==`success`)return t;let n;try{n=await e.verify(t.value,e.plan)}catch{return await S(e,t.value),{kind:`failed`,reason:`verification-failed`,retryable:!0}}if(n.kind!==`satisfied`)return await S(e,t.value),n.kind===`indeterminate`?{kind:`indeterminate`,reason:n.reason}:{kind:`failed`,reason:n.reason,retryable:!1};let r=e.createReceipt(n,t.value);try{await e.recordReceipt(r,t.value)}catch{return await S(e,t.value),{kind:`failed`,reason:`receipt-write-failed`,retryable:!0}}return{kind:`success`,value:{...t.value,receipt:r,verification:n}}}async function S(e,t){if(!(!t.changed||!e.compensate))try{await e.compensate(t)}catch{}}function C(e){let{adoptableMethod:t,agent:r,observation:i,operation:a,route:c}=e,f=i.installedState?void 0:i.methods[0],p=i.installedState??t??f,m=D(i.lifecycle,r,t),h=d({intent:{kind:a,targetId:r.name},observation:m,providerId:O(p),providerTargetId:k(r,p)});return h.decision===c?u(async()=>{if(c===`install`&&i.installedState&&!i.inPath){let e=o(r,i.installedState);if(!e)return{kind:`indeterminate`,reason:`tracked-provider-binding-unresolved`};let t=await E(t=>l(e,t));if(t.kind!==`success`||t.value.kind!==`absent`)return{kind:`indeterminate`,reason:`tracked-provider-not-conclusively-absent`}}return x({createReceipt:(e,t)=>{let n=o(r,t.value.installedState);if(!n)throw Error(`Cannot resolve provider binding for ${r.name}.`);let i=e.observation.kind===`present`?e.observation:void 0;return{...n.target.binaryName?{executableName:n.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:n.providerId,providerTargetId:n.target.id,providerTargetKind:n.target.kind,schemaVersion:1,targetId:r.name,verifiedAt:new Date().toISOString(),...i?.executablePath?{executablePath:i.executablePath}:{},...i?.version?{version:i.version}:{}}},compensate:e=>c===`install`?s(r,e.value.installedState):Promise.resolve(),execute:async()=>w(r,c,i.installedState,t,f),plan:h.plan,recordReceipt:(e,t)=>n(t.value.installedState,e),verify:async e=>T(r,e.value.installedState,a,h.plan.steps[0]?.postconditions[0])})}):Promise.resolve({kind:`indeterminate`,reason:`planned-${h.decision}-cannot-execute-${c}`})}async function w(t,n,r,o,s){if(n===`satisfied`&&r)return{kind:`success`,value:{changed:!1,value:{installedState:r}}};if(n===`adopt`&&o)return e().cancelled?{kind:`cancelled`,reason:`tracking-cancelled`}:{kind:`success`,value:{changed:!0,value:{installedState:c(t,o)}}};if(n===`install`&&r){let e=await a(t,r);return e.kind===`success`&&e.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:e.value.installedState}}}:e.kind===`success`?{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:e}if(!s)return{kind:`indeterminate`,reason:`install-method-unresolved`};let l=await i(t,[s]);return l.kind===`success`?l.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:l.value.installedState}}}:{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:l}async function T(e,t,n,i){let a=i??{executable:e.binaryName,kind:`executable-present`},s=o(e,t);if(!s)return{kind:`indeterminate`,postcondition:a,reason:`provider-binding-unresolved-after-${n}`};let[c,u]=await E(t=>Promise.all([r(e.binaryName,t),l(s,t)])),d=u.kind===`success`&&u.value.kind===`present`,f=u.kind===`success`?u.value:void 0,p=c&&d?{drift:{kind:`none`},executablePath:f?.kind===`present`?f.executablePath:void 0,kind:`present`,providerId:s.providerId,providerTargetId:s.target.id,targetId:e.name,version:f?.kind===`present`?f.version:void 0}:{drift:{kind:`recorded-absent`},kind:`absent`,targetId:e.name};return c&&d?{kind:`satisfied`,observation:p,postcondition:a}:{kind:`unsatisfied`,observation:p,postcondition:a,reason:c?`provider-target-not-present-after-${n}`:`binary-not-found-after-${n}`}}async function E(e){let n=t();try{return await e(n.context)}finally{n.dispose()}}function D(e,t,n){return e.kind!==`present`||!n?e:{...e,providerId:O(n),providerTargetId:k(t,n)}}function O(e){if(e)return`installType`in e?e.installType:e.type}function k(e,t){if(t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;let n=O(t);if(n===`bun`||n===`npm`)return e.packages?.npm??e.binaryName;if(n===`cargo`)return e.packages?.cargo??e.binaryName;if(n===`deno`)return e.packages?.deno??e.binaryName;if(n===`mise`)return e.packages?.mise??e.binaryName;if(n===`pip`)return e.packages?.pip??e.binaryName;if(n===`uv`)return e.packages?.uv??e.binaryName}return e.binaryName}export{C as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,Bt as t,Q as n,Rt as r,S as i,Vt as a,lt as o,ot as s,tn as c,tt as l,zt as u}from"./color-D55TE_Ws.mjs";import{n as d,r as f}from"./agents-Dc-rbRUf.mjs";import{c as p,l as m}from"./provider-evidence-CcW0d2NQ.mjs";async function h(t){let[o,l,u]=await Promise.all([m(t),i(t.name),c(t.binaryName)]),[d,f,p]=await Promise.all([u?_(t,l):Promise.resolve(void 0),u?r(t.binaryName):Promise.resolve(void 0),v(t,l,o)]);return{agent:t,methods:o,installedState:l,inPath:u,installedVersion:d,latestVersion:p,binaryPath:f,resolvedBinaryPath:await a(f),sourceLabel:n(l),updateLabel:e(t,l),lifecycle:l?s(l.installType):`unmanaged`}}async function g(e){return Promise.all(e.map(h))}async function _(e,t){if(t&&o(t.installType)&&t.packageName){let e=await p(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return u(e.binaryName,e.versionProbe)}async function v(e,n,r){let i=l(e,n,r);if(i)return t(i)}function y(e){return d(e)}async function b(e){let t=y(e);if(t)return{agent:t,inspection:await h(t)}}async function x(){return g(f())}export{g as a,h as i,y as n,b as r,x as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{V as e,a as t,c as n,cn as r,en as i,r as a,t as o}from"./color-D55TE_Ws.mjs";import{r as s}from"./agents-Dc-rbRUf.mjs";import{n as c,t as l}from"./provider-observations-eOUOsbo-.mjs";import u from"node:process";function d(t=e()){let n=new Map(t.map(e=>[e.name,new Set(e.effects)])),r=new Map(t.map(e=>[e.name,new Set(e.flags)]));return{effects:new Set(t.flatMap(e=>e.effects)),effectsByCommand:n,flags:new Set(t.flatMap(e=>e.flags)),flagsByCommand:r}}function f(e,t){let n=e.effectsByCommand.get(`upgrade`),r=e.flagsByCommand.get(`upgrade`),i=e.flagsByCommand.get(`exec`);return{assumeYes:e.flags.has(`--yes`),cacheBypass:e.flags.has(`--no-cache`),cacheRefresh:e.flags.has(`--refresh`),channels:r?.has(`--channel`)?[`stable`,`beta`]:[],colorModes:e.flags.has(`--color`)?[`auto`,`always`,`never`]:[],dryRun:e.flags.has(`--dry-run`),execInstallPolicies:i?.has(`--install`)?[`never`,`if-missing`,`always`]:[],freshnessMetadata:e.effects.has(`network`)&&e.flags.has(`--refresh`)&&e.flags.has(`--no-cache`),idempotencyKey:e.flags.has(`--idempotency-key`),logLevels:e.flags.has(`--log-level`)?[`silent`,`error`,`warn`,`info`,`debug`]:[],quietLogs:e.flags.has(`--quiet`),selfUpgrade:t.canAutoUpdateSelf&&!!(n?.has(`mutation`)&&n.has(`network`)),timeout:e.flags.has(`--timeout`)}}async function p(){let e=r(),o,p;try{[o,p]=await e.run(()=>Promise.all([l({context:e.context}),n({context:e.context})]))}finally{e.dispose()}let g=c(o,e=>{let t=e.availability.kind===`success`;return{available:t,reason:t?void 0:m(e.id)}}),_=f(d(),{canAutoUpdateSelf:p.canAutoUpdate});return t(a({action:`capabilities`,data:{agents:s().map(e=>e.name),features:_,installers:g,outputModes:[`human`,`json`,`ndjson`],platform:{arch:u.arch,os:i()}},target:{kind:`system`,name:`capabilities`}}),h)}function m(e){return e===`winget`&&u.platform!==`win32`||e===`brew`&&u.platform===`win32`?`not-on-platform`:`not-found`}function h(e){e.data&&(console.log(o.bold(`
|
|
2
2
|
Quantex Capabilities
|
|
3
3
|
`)),console.log(` Platform: ${e.data.platform.os}/${e.data.platform.arch}`),console.log(` Output Modes: ${e.data.outputModes.join(`, `)}`),console.log(` Agents: ${e.data.agents.join(`, `)}`),console.log(o.bold(`
|
|
4
4
|
Installers:`)),console.log(` bun: ${g(e.data.installers.bun)}`),console.log(` npm: ${g(e.data.installers.npm)}`),console.log(` brew: ${g(e.data.installers.brew)}`),console.log(` cargo: ${g(e.data.installers.cargo)}`),console.log(` deno: ${g(e.data.installers.deno)}`),console.log(` mise: ${g(e.data.installers.mise)}`),console.log(` pip: ${g(e.data.installers.pip)}`),console.log(` uv: ${g(e.data.installers.uv)}`),console.log(` winget: ${g(e.data.installers.winget)}`),console.log(o.bold(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./capabilities-BMx857FN.mjs";export{e as capabilitiesCommand};
|
package/dist/cli.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{$t as e,G as t,H as n,Nt as r,Pt as i,T as a,U as o,V as s,X as c,Z as l,a as u,cn as d,dn as f,fn as p,i as m,m as ee,n as h,r as te,sn as g,t as _,tn as v,un as y,v as ne,w as re,x as b,y as ie}from"./color-BGZ_5A6s.mjs";import{n as ae}from"./agents-Dc-rbRUf.mjs";import{t as oe}from"./agent-installation-Dp03CAn2.mjs";import{t as se}from"./lifecycle-observations-C1OLPUAV.mjs";import{n as ce}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as le,i as x,n as ue,o as S,r as C,t as de}from"./user-output-C1JWMNEt.mjs";import{n as w,t as T}from"./errors-DXzIacfk.mjs";import{n as fe,t as pe}from"./version-cache-D0_L2X5L.mjs";import{d as E,f as D,i as O,n as me,o as he,t as ge}from"./lifecycle-policy-emF59xDd.mjs";import{createHash as _e,randomUUID as ve}from"node:crypto";import k from"node:process";import{join as A}from"node:path";import{mkdir as ye,readFile as be,rename as xe,rm as j,writeFile as M}from"node:fs/promises";import{Command as Se}from"commander";import Ce from"prompts";function we(e){return e.executable.present?{decision:e.dryRun?`dry-run`:`launch`}:e.installPolicy===`never`?{decision:`reject`,errorCode:`AGENT_NOT_INSTALLED`}:e.installPolicy===`prompt`&&!e.interactive?{decision:`reject`,errorCode:`INTERACTION_REQUIRED`}:e.dryRun?{decision:`dry-run`}:{decision:e.installPolicy===`prompt`?`prompt-install`:`install-and-launch`}}async function Te(e,t){let n=await t.observe(e.agentName);if(n.kind===`failure`)return{error:n.error,kind:`observation-failed`};if(!n.value)return{kind:`not-found`};let r=n.value,i=we({dryRun:t.dryRun,executable:r.executable,installPolicy:e.installPolicy,interactive:t.interactive,observation:r.observation});if(i.decision===`reject`)return i.errorCode===`AGENT_NOT_INSTALLED`?{kind:`not-installed`,observed:r}:{kind:`interaction-required`,observed:r};let a=[r.agent.binaryName,...e.args];if(i.decision===`dry-run`)return{argv:a,kind:`dry-run`,observed:r,wouldInstall:!r.executable.present};if(i.decision===`prompt-install`&&!await t.confirmInstall(r))return{kind:`install-declined`,observed:r};if(i.decision===`install-and-launch`||i.decision===`prompt-install`){await t.onInstallStart?.(r);let n=Ee(await t.install(r),r);if(n)return n;let i=await t.observe(e.agentName);if(i.kind===`failure`)return{error:i.error,kind:`observation-failed`};if(!i.value)return{kind:`install-failed`,observed:r,reason:`agent-missing-after-install`};if(r=i.value,!r.executable.present)return{kind:`install-failed`,observed:r,reason:`executable-absent-after-install`}}return De(await t.process.run({argv:a,signal:t.signal,stdio:t.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.timeoutMs}),r,t.timeoutMs)}function Ee(e,t){switch(e.kind){case`success`:return;case`cancelled`:return{kind:`cancelled`,observed:t,phase:`install`,reason:e.reason};case`timed-out`:return{kind:`timed-out`,observed:t,phase:`install`,timeoutMs:e.timeoutMs};case`failed`:case`indeterminate`:return{kind:`install-failed`,observed:t,reason:e.reason};case`unsupported`:return{kind:`install-failed`,observed:t,reason:e.reason??`Missing installation capability: ${e.capability}`}}}function De(e,t,n){return e.kind===`failure`?e.error.kind===`cancelled`?{kind:`cancelled`,observed:t,phase:`launch`,reason:e.error.message}:e.error.kind===`timed-out`?{kind:`timed-out`,observed:t,phase:`launch`,reason:e.error.message,timeoutMs:n??0}:{kind:`launch-failed`,observed:t,reason:e.error.message}:e.value.exitCode===null?{kind:`launch-failed`,observed:t,reason:e.value.terminationSignal?`Agent terminated by ${e.value.terminationSignal}.`:`Agent process exited without an exit code.`}:{exitCode:e.value.exitCode,kind:`exited`,observed:t,stderr:e.value.stderr,stdout:e.value.stdout}}const Oe={cancelOperations:g,createObservationService:se,createOperationContext:e,createProcessPort:fe,reconcileAgentInstallation:oe};function ke(e,t=Oe){let n=t.createOperationContext(),r=t.createObservationService(n.context,{resolveLatestVersion:!1}),i=t.createProcessPort();return{dispose:n.dispose,execute:a=>Te(a,{confirmInstall:e.confirmInstall,dryRun:e.dryRun,install:n=>je(n,e.timeoutMs,t),interactive:e.interactive,observe:e=>Ae(e,r),onInstallStart:e.onInstallStart,outputMode:e.outputMode,process:i,signal:n.context.signal,timeoutMs:e.timeoutMs})}}async function Ae(e,t){try{let n=await t.resolveAgentObservation(e);return{kind:`success`,value:n?{agent:n.agent,executable:n.pathExecutable,installedState:n.installedState,methods:n.methods,observation:n.observation}:void 0}}catch(e){return{error:Ne(e),kind:`failure`}}}async function je(e,t,n){try{if(e.executable.present)return{kind:`success`,value:void 0};let r=await Me(n.reconcileAgentInstallation({agent:e.agent,observation:{inPath:e.executable.present,installedState:e.installedState,lifecycle:e.observation,methods:e.methods},operation:`install`,route:`install`}),t,n.cancelOperations);return r?r.kind===`success`?{kind:`success`,value:void 0}:r:{kind:`timed-out`,timeoutMs:t}}catch(e){return v(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t??0}:{kind:`cancelled`,reason:e.message}:{kind:`failed`,reason:N(e,`Failed to install agent.`),retryable:!1}}}async function Me(e,t,n){if(t===void 0)return e;let r;try{let i=await Promise.race([e.then(e=>({kind:`completed`,value:e})),new Promise(e=>{r=setTimeout(()=>e({kind:`timed-out`}),t)})]);if(i.kind===`completed`)return i.value;let a=await Pe(e,Math.max(1,Math.min(t,250)));if(a!==void 0)return a;await n();return}finally{r&&clearTimeout(r)}}function Ne(e){return e instanceof b?{code:`STATE_READ_ERROR`,details:{stateFilePath:a()},kind:`invalid-data`,message:e.message}:v(e)?{kind:e.kind,message:e.message}:{kind:`failed`,message:N(e,`Failed to observe agent execution state.`)}}function N(e,t){return e instanceof Error&&e.message.trim()?e.message:t}async function Pe(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function P(){return A(i(),`idempotency`)}function F(e){return A(P(),`${Ie(e)}.json`)}async function I(e,t={}){let n=F(e),r;try{r=await be(n,`utf8`)}catch(e){if(Re(e)&&e.code===`ENOENT`)return{kind:`missing`};throw e}let i;try{i=JSON.parse(r)}catch{return{kind:`invalid`,reason:`invalid-json`}}let a=E(i);return a.kind===`invalid`?a:Date.parse(a.record.expiresAt)<=L(t).getTime()?(await j(n),{kind:`expired`,record:a.record}):a}async function Fe(e,t,n={}){let r=L(n),i=n.ttlMs??864e5,a=E({...t,createdAt:r.toISOString(),expiresAt:new Date(r.getTime()+i).toISOString(),schemaVersion:1});if(a.kind===`invalid`)throw TypeError(`Invalid versioned idempotency record: ${a.reason}`);let o=P(),s=F(e),c=`${s}.${process.pid}.${ve()}.tmp`,l=n.fileSystem?.writeFile??M;await ye(o,{recursive:!0});try{await l(c,Le(a.record),`utf8`),await xe(c,s)}catch(e){throw await j(c,{force:!0}),e}}function Ie(e){return _e(`sha256`).update(e,`utf8`).digest(`hex`)}function L(e){let t=e.now?.()??new Date;if(!Number.isFinite(t.getTime()))throw TypeError(`Idempotency clock must return a valid date.`);return t}function Le(e){return`${JSON.stringify(e,(e,t)=>typeof t!=`object`||!t||Array.isArray(t)?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])),2)}\n`}function Re(e){return e instanceof Error&&`code`in e}async function ze(e){let t=D(e.request),n=D(e.resolvedPlan);switch(e.loaded.kind){case`missing`:return{fingerprints:z(t,n),kind:`reconcile`,reason:`missing`};case`expired`:return{fingerprints:R(e.loaded.record,t,n),kind:`reconcile`,reason:`expired`};case`invalid`:return{fingerprints:z(t,n),invalidReason:e.loaded.reason,kind:`reject`,reason:`invalid-evidence`};case`valid`:return Be(e,e.loaded.record,t,n)}}async function Be(e,t,n,r){let i=R(t,n,r);if(t.request.fingerprint!==n)return{fingerprints:i,kind:`reject`,reason:`request-mismatch`};if(t.resolvedPlan.fingerprint!==r)return{fingerprints:i,kind:`reconcile`,reason:`resolved-plan-changed`};switch((await e.validateLive({postcondition:t.postcondition.payload,receipt:t.receipt.payload})).kind){case`satisfied`:return{fingerprints:i,kind:`replay`,result:structuredClone(t.result)};case`drifted`:return{fingerprints:i,kind:`reconcile`,reason:`live-drifted`};case`inconclusive`:return{fingerprints:i,kind:`reconcile`,reason:`live-inconclusive`}}}function R(e,t,n){return{existingPlan:e.resolvedPlan.fingerprint,existingRequest:e.request.fingerprint,requestedPlan:n,requestedRequest:t}}function z(e,t){return{existingPlan:void 0,existingRequest:void 0,requestedPlan:t,requestedRequest:e}}const Ve=new Set([`doctor`,`upgrade`]);async function B(e,t={cache:pe(),getSelfState:re,now:Date.now,resolveFacts:ie}){if(!e.ok||Ve.has(e.action))return;let n=d();if(n.outputMode!==`human`||n.quiet)return;let i=await t.resolveFacts(),a=t.now(),o=await ee({cache:t.cache,facts:i,nowMs:a,signal:new AbortController().signal});if(!o||!r(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();He(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||x(_.yellow(`Quantex CLI ${o.targetVersion} is available (current ${i.currentVersion}). Run \`quantex upgrade\`.`))}function He(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}function Ue(e){return e.warnings.some(e=>e.code===`DRY_RUN`)}async function We(e){try{return await Ge(e)}catch(t){if(t instanceof b)return Xe(e,t);throw t}}async function Ge(e){return rt(e,()=>Ke(e))}async function Ke(e){let t=d().timeoutMs,n={expired:!1},r=!1,i,a=async()=>{let a=await Je(e,()=>n.expired);return n.expired&&t!==void 0?G(e,t):a.replayedResult?(r=!0,a.replayedResult):(i={action:e.action,...a.policy?{idempotencyPolicy:a.policy}:{},run:e.run,...e.target?{target:e.target}:{}},d().cancelled?Ye(e):e.run())},o=t===void 0?await a():await qe(e,a,t,n);return r||!i?o:Qe(i,o)}async function qe(e,t,n,r){let i;try{let a=new Promise(t=>{i=setTimeout(()=>{r.expired=!0,t(G(e,n))},n)}),o=at(t,()=>a),s=await Promise.race([o,a]);if(!s.ok&&s.error?.code===`TIMEOUT`){let t=await it(o,n);s=t&&t.error?.code!==`TIMEOUT`?t:await st(e,n)}return i!==void 0&&(clearTimeout(i),i=void 0),s}finally{i&&clearTimeout(i)}}async function Je(e,t=()=>!1){let n=d();if(!n.idempotencyKey||n.dryRun||!W(e.action)||!e.idempotencyPolicy)return{};let r=await I(n.idempotencyKey);if(n.cancelled||t())return{};if(r.kind===`invalid`)return{replayedResult:u(H(e,n.idempotencyKey,r.reason),V,{force:!0})};let i=typeof e.idempotencyPolicy==`function`?await e.idempotencyPolicy():e.idempotencyPolicy;if(n.cancelled||t())return{};let a=await ze({loaded:r,request:i.request,resolvedPlan:i.resolvedPlan,validateLive:i.validateLive});if(n.cancelled||t())return{};if(a.kind===`reconcile`)return{policy:i};if(a.kind===`reject`)return{replayedResult:tt(e,n.idempotencyKey,a,r)};let o=nt(a.result);return u(o,V,{force:!0}),{replayedResult:o}}function Ye(e){return h({action:e.action,error:{code:`CANCELLED`,message:`Command was cancelled before execution could start.`},target:e.target})}async function Xe(e,t){return u(h({action:e.action,...ce(t,a(),e.target)}),Ze)}function Ze(e){e.error&&console.error(_.red(e.error.message))}async function Qe(e,t){if(d().cancelled)return t;let n=await $e(e,t);try{await B({action:e.action,ok:n.ok})}catch{}return n}function V(e){e.error&&console.error(_.red(e.error.message))}async function $e(e,t){let n=d();if(!n.idempotencyKey||!W(e.action)||!t.ok||n.dryRun||Ue(t)||!e.idempotencyPolicy)return t;let r=await e.idempotencyPolicy.captureEvidence(t);if(!r)return t;let i=await I(n.idempotencyKey);return et(e,n.idempotencyKey,i)||(await Fe(n.idempotencyKey,{postcondition:U(r.postcondition),receipt:U(r.receipt),request:U(e.idempotencyPolicy.request),resolvedPlan:U(e.idempotencyPolicy.resolvedPlan),result:t}),t)}function et(e,t,n){if(!e.idempotencyPolicy)return;let r=D(e.idempotencyPolicy.request);if(n.kind===`invalid`)return u(H(e,t,n.reason),V,{force:!0});if(!(n.kind!==`valid`||n.record.request.fingerprint===r))return u(h({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{conflict:`concurrent-request-mismatch`,existingAction:n.record.request.payload.action,idempotencyKey:t},message:`Idempotency key ${t} changed while the command was running; replay evidence was not overwritten.`},target:e.target}),V,{force:!0})}function tt(e,t,n,r){return n.reason===`invalid-evidence`?u(H(e,t,n.invalidReason),V,{force:!0}):u(h({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.kind===`valid`?r.record.request.payload.action:void 0,idempotencyKey:t,reason:`request-mismatch`},message:`Idempotency key ${t} was already used for a different canonical request.`},target:e.target}),V,{force:!0})}function H(e,t,n){return h({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{idempotencyKey:t,invalidReason:n,reason:`invalid-evidence`},message:`Idempotency key ${t} contains invalid replay evidence (${n}).`},target:e.target})}function nt(e){let t=d();return{...e,meta:{...e.meta,mode:t.outputMode,runId:t.runId,timestamp:new Date().toISOString()}}}function U(e){return{fingerprint:D(e),payload:e}}function W(e){return e===`ensure`||e===`install`||e===`uninstall`||e===`update`}async function rt(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=ct(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);k.once(`SIGINT`,a),k.once(`SIGTERM`,o),r=()=>{k.off(`SIGINT`,a),k.off(`SIGTERM`,o)}});return await Promise.race([ot(t,()=>n),i])}finally{r?.()}}async function it(e,t){let n=Math.min(t,250);return await Promise.race([e,new Promise(e=>{setTimeout(()=>e(void 0),n)})])}async function at(e,t){try{return await e()}catch(e){if(v(e)&&e.kind===`timed-out`||d().cancelled)return t();throw e}}async function ot(e,t){try{let n=await e(),r=t();return d().cancelled&&r?r:n}catch(e){let n=t();if(d().cancelled&&n)return n;throw e}}function G(e,t){return h({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target})}async function st(e,t){return await g(),m({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),u(G(e,t),V,{force:!0})}async function ct(e,t){return await g(),m({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),u(h({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),V,{force:!0})}const lt={cancelOperations:g,createExecutionService:ke};async function K(e,t,n={},r=lt){let i=d(),a=n.nonInteractive?!1:i.interactive,o=n.assumeYes??de(),s=n.dryRun??ue(),c=n.install??`prompt`,l,u=r.createExecutionService({confirmInstall:async e=>o?!0:!!(await Ce({initial:!0,message:`${e.agent.displayName} is not installed. Would you like to install it?`,name:`install`,type:`confirm`})).install,dryRun:s,interactive:a,onInstallStart:e=>{x(_.cyan(`Installing ${e.agent.displayName}...`))},outputMode:i.outputMode,timeoutMs:i.timeoutMs}),f=e=>{l??=e,r.cancelOperations()},p=()=>f(`SIGINT`),m=()=>f(`SIGTERM`);k.once(`SIGINT`,p),k.once(`SIGTERM`,m);try{return ut(await u.execute({agentName:e,args:t,installPolicy:c}),{agentName:e,args:t,cancellationSignal:l,installPolicy:c,interactive:a})}finally{k.off(`SIGINT`,p),k.off(`SIGTERM`,m),u.dispose()}}function ut(e,t){if(e.kind===`not-found`)return J({agent:{name:t.agentName},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t.agentName}`,execution:q(t,!1)}),w(`AGENT_NOT_FOUND`);if(e.kind===`observation-failed`)return dt(t.agentName,e.error);let{observed:n}=e,r=n.agent;if(e.kind===`not-installed`||e.kind===`interaction-required`){let i=e.kind===`interaction-required`;return J({agent:r,errorCode:i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`,errorMessage:i?`${r.displayName} is not installed and interactive installation is disabled.`:`${r.displayName} is not installed.`,execution:{...q(t,!1),installGuidance:pt(r,n.methods,t.args)}}),w(i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`)}switch(e.kind){case`install-declined`:return le(_.yellow(`Installation cancelled.`)),1;case`install-failed`:return C(_.red(`Failed to install ${r.displayName}.`)),w(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&S(_.cyan(`Dry run: would install ${r.displayName}.`)),mt({agent:r,execution:q(t,!0),message:`Dry run: would run ${e.argv.join(` `)}`}),0;case`launch-failed`:return C(_.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return C(_.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),w(`CANCELLED`);case`timed-out`:return C(_.red(e.phase===`install`?`Installing ${r.displayName} timed out after ${e.timeoutMs}ms.`:`${r.displayName} timed out after ${e.timeoutMs}ms.`)),w(`TIMEOUT`);case`exited`:return e.exitCode}}function q(e,t){return{args:e.args,installPolicy:e.installPolicy,installed:t,interactive:e.interactive,launched:!1}}function dt(e,t){let n=ft(t.code)?t.code:`INSTALL_FAILED`;return d().outputMode===`human`?C(_.red(t.message)):u(h({action:`exec`,error:{code:n,details:t.details,message:t.message},target:{kind:`agent`,name:e}}),()=>{}),w(n)}function ft(e){return e!==void 0&&T.includes(e)}function pt(e,t,n){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:c(e,t),label:l(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...n].join(` `)}}function J(e){if(d().outputMode===`human`){C(_.red(e.errorMessage));let t=e.execution.installGuidance;t&&(S(_.dim(`Try: ${t.suggestedEnsureCommand}`)),S(_.dim(`Or: ${t.suggestedExecCommand}`)));return}u(h({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function mt(e){if(d().outputMode===`human`){S(_.cyan(e.message));return}u(te({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}const ht={capabilities:async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-DywtqYKA.mjs`);await Y({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-J8gAQ8RH.mjs`);await Y({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-Cs1_DPwP.mjs`),[n,r,i]=e;await Y({action:`config`,run:()=>t(n,r,i),target:{kind:`config`,name:r}})},doctor:async()=>{let{doctorCommand:e}=await import(`./doctor-D8y0PQ7s.mjs`);await Y({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],{ensureCommand:n}=await import(`./ensure-CGipmEmc.mjs`);await Y({action:`ensure`,idempotencyPolicy:()=>O(`ensure`,t),run:()=>n(t),target:{kind:`agent`,name:t}})},exec:async(...e)=>{let[t,n,r,i]=e,a=r.install??`never`;if(a!==`never`&&a!==`if-missing`&&a!==`always`){k.stdout.write(`${_.red(`Unknown install policy: ${a}`)}\n`),k.exitCode=2;return}let o=_t(i);k.exitCode=await K(t,o.length>0?o:n,{install:a,nonInteractive:i.optsWithGlobals().nonInteractive})},info:async(...e)=>{let t=e[0],{infoCommand:n}=await import(`./info-C4-95Kjx.mjs`);await Y({action:`info`,run:()=>n(t),target:{kind:`agent`,name:t}})},inspect:async(...e)=>{let t=e[0],{inspectCommand:n}=await import(`./inspect-FAr4x7oh.mjs`);await Y({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let{installCommand:t}=await import(`./install-CGHSS_yl.mjs`),n=he(e[0]),r=n.length===1;await Y({action:`install`,...r?{idempotencyPolicy:()=>O(`install`,n[0])}:{idempotencyPolicy:()=>me(n)},run:()=>t(n),target:r?{kind:`agent`,name:n[0]}:{kind:`agent`,name:n.join(`,`)}})},list:async()=>{let{listCommand:e}=await import(`./list-BwTYgNzc.mjs`);await Y({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-DLrskjPy.mjs`);await Y({action:`resolve`,run:()=>n(t),target:{kind:`agent`,name:t}})},schema:async(...e)=>{let t=e[0],{schemaCommand:n}=await import(`./schema-xUwSt_FZ.mjs`);await Y({action:`schema`,run:()=>n(t),target:{kind:`system`,name:`schema`}})},uninstall:async(...e)=>{let t=e[0],{uninstallCommand:n}=await import(`./uninstall-DLAzYf0i.mjs`);await Y({action:`uninstall`,idempotencyPolicy:()=>ge(t),run:()=>n(t),target:{kind:`agent`,name:t}})},update:async(...e)=>{let[t,n]=e,{createUpdateCommandInvocation:r}=await import(`./update-l5KnwT41.mjs`),i=r(t,n.all??!1);try{await Y({action:`update`,...i.idempotencyPolicy?{idempotencyPolicy:i.idempotencyPolicy}:{},run:i.run,target:{kind:`agent`,name:t}})}finally{i.dispose()}},upgrade:async(...e)=>{let t=e[0],{resolveUpgradeChannelOption:n,upgradeCommand:r}=await import(`./upgrade-DP2QHsnb.mjs`);await Y({action:`upgrade`,run:()=>r({channel:n(t.channel),check:t.check??!1}),target:{kind:`self`,name:`quantex`}})}};function gt(e){return ht[e]}function _t(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}async function Y(e){let{getExitCodeForResult:t}=await import(`./errors-BzuGM14H.mjs`);k.exitCode=t(await We(e))}function vt(){let e=s();t(e,e.map(e=>e.schema.name));let r=new Se;r.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`);for(let e of n())r.option(e.flags,e.description,e.defaultValue);r.version(ne()),r.hook(`preAction`,(e,t)=>{try{p(f(o(t.optsWithGlobals())))}catch(e){k.stdout.write(`${_.red(e instanceof Error?e.message:String(e))}\n`),k.exit(2)}}),r.hook(`postAction`,()=>{y()});for(let t of e){let e=r.command(t.name).description(t.description);for(let n of t.aliases)e.alias(n);for(let n of t.arguments)e.argument(n.syntax,n.description);t.allowUnknownOptions&&e.allowUnknownOption();for(let n of t.options)e.option(n.flags,n.description,n.defaultValue);e.action(gt(t.handlerId))}return r}const yt=new Map(n().map(e=>[xt(e.flags),e]));function bt(e,t,n){let r={},i=0;for(;i<e.length;){let a=e[i],o=yt.get(a);if(o){if(o.value===`string`){let t=e[i+1];if(!t)return St(a);r[o.id]=t,i+=2}else r[o.id]=!0,i+=1;continue}if(a.startsWith(`-`)||t.has(a))return;let s=Z(r.output);return r.json===!0||s===`json`||s===`ndjson`||n.agentFriendly&&s!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(i+1),agentName:a,color:Z(r.color),dryRun:X(r.dryRun),idempotencyKey:Z(r.idempotencyKey),logLevel:Z(r.logLevel),noCache:X(r.noCache),nonInteractive:X(r.nonInteractive),quiet:X(r.quiet),refresh:X(r.refresh),runId:Z(r.runId),timeout:Z(r.timeout),yes:X(r.yes)}}}function xt(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Global option requires a long flag: ${e}`);return t[0]}function X(e){return e===!0}function Z(e){return typeof e==`string`?e:void 0}function St(e){return{agentArgs:[],agentName:``,error:`${e} requires a value`}}const Q=vt(),Ct=new Set([...Q.commands.map(e=>e.name()),...Q.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),$=bt(k.argv.slice(2),Ct,{agentFriendly:k.stdin.isTTY===!1||k.stdout.isTTY===!1});if($?.error&&(console.log(_.red($.error)),k.exit(2)),$&&ae($.agentName)){try{p(f({color:$.color,dryRun:$.dryRun,idempotencyKey:$.idempotencyKey,logLevel:$.logLevel,noCache:$.noCache,nonInteractive:$.nonInteractive,quiet:$.quiet,refresh:$.refresh,runId:$.runId,timeout:$.timeout,yes:$.yes}))}catch(e){console.log(_.red(e instanceof Error?e.message:String(e))),k.exit(2)}try{let e=await K($.agentName,$.agentArgs,{assumeYes:$.yes,dryRun:$.dryRun,nonInteractive:$.nonInteractive});k.exit(e)}finally{y()}}await Q.parseAsync();export{};
|
|
2
|
+
import{G as e,H as t,Ht as n,T as r,U as i,Ut as a,V as o,X as s,Z as c,_n as l,a as u,bn as d,cn as f,gn as p,i as m,m as h,n as g,r as ee,t as _,un as v,v as te,w as ne,x as y,xn as b,y as re,yn as x}from"./color-D55TE_Ws.mjs";import{n as ie}from"./agents-Dc-rbRUf.mjs";import{t as ae}from"./agent-installation-DaFUJAc_.mjs";import{t as oe}from"./lifecycle-observations-F8_4qbsU.mjs";import{n as se}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as ce,i as S,n as le,o as C,r as w,t as ue}from"./user-output-Dkv_5Lew.mjs";import{n as T,t as de}from"./errors-DXzIacfk.mjs";import{n as fe,t as pe}from"./version-cache-Ck-45EIJ.mjs";import{d as E,f as D,i as O,n as me,o as he,t as ge}from"./lifecycle-policy-Bkd-ZutQ.mjs";import{createHash as _e,randomUUID as ve}from"node:crypto";import k from"node:process";import{join as A}from"node:path";import{mkdir as ye,readFile as be,rename as xe,rm as j,writeFile as M}from"node:fs/promises";import{Command as Se}from"commander";import Ce from"prompts";function we(e){return e.executable.present?{decision:e.dryRun?`dry-run`:`launch`}:e.installPolicy===`never`?{decision:`reject`,errorCode:`AGENT_NOT_INSTALLED`}:e.installPolicy===`prompt`&&!e.interactive?{decision:`reject`,errorCode:`INTERACTION_REQUIRED`}:e.dryRun?{decision:`dry-run`}:{decision:e.installPolicy===`prompt`?`prompt-install`:`install-and-launch`}}async function Te(e,t){let n=await t.observe(e.agentName);if(n.kind===`failure`)return{error:n.error,kind:`observation-failed`};if(!n.value)return{kind:`not-found`};let r=n.value,i=we({dryRun:t.dryRun,executable:r.executable,installPolicy:e.installPolicy,interactive:t.interactive,observation:r.observation});if(i.decision===`reject`)return i.errorCode===`AGENT_NOT_INSTALLED`?{kind:`not-installed`,observed:r}:{kind:`interaction-required`,observed:r};let a=[r.agent.binaryName,...e.args];if(i.decision===`dry-run`)return{argv:a,kind:`dry-run`,observed:r,wouldInstall:!r.executable.present};if(i.decision===`prompt-install`&&!await t.confirmInstall(r))return{kind:`install-declined`,observed:r};if(i.decision===`install-and-launch`||i.decision===`prompt-install`){await t.onInstallStart?.(r);let n=Ee(await t.install(r),r);if(n)return n;let i=await t.observe(e.agentName);if(i.kind===`failure`)return{error:i.error,kind:`observation-failed`};if(!i.value)return{kind:`install-failed`,observed:r,reason:`agent-missing-after-install`};if(r=i.value,!r.executable.present)return{kind:`install-failed`,observed:r,reason:`executable-absent-after-install`}}return De(await t.process.run({argv:a,signal:t.signal,stdio:t.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.timeoutMs}),r,t.timeoutMs)}function Ee(e,t){switch(e.kind){case`success`:return;case`cancelled`:return{kind:`cancelled`,observed:t,phase:`install`,reason:e.reason};case`timed-out`:return{kind:`timed-out`,observed:t,phase:`install`,timeoutMs:e.timeoutMs};case`failed`:case`indeterminate`:return{kind:`install-failed`,observed:t,reason:e.reason};case`unsupported`:return{kind:`install-failed`,observed:t,reason:e.reason??`Missing installation capability: ${e.capability}`}}}function De(e,t,n){return e.kind===`failure`?e.error.kind===`cancelled`?{kind:`cancelled`,observed:t,phase:`launch`,reason:e.error.message}:e.error.kind===`timed-out`?{kind:`timed-out`,observed:t,phase:`launch`,reason:e.error.message,timeoutMs:n??0}:{kind:`launch-failed`,observed:t,reason:e.error.message}:e.value.exitCode===null?{kind:`launch-failed`,observed:t,reason:e.value.terminationSignal?`Agent terminated by ${e.value.terminationSignal}.`:`Agent process exited without an exit code.`}:{exitCode:e.value.exitCode,kind:`exited`,observed:t,stderr:e.value.stderr,stdout:e.value.stdout}}const Oe={cancelOperations:p,createObservationService:oe,createOperationContext:f,createProcessPort:fe,reconcileAgentInstallation:ae};function ke(e,t=Oe){let n=t.createOperationContext(),r=t.createObservationService(n.context,{resolveLatestVersion:!1}),i=t.createProcessPort();return{dispose:n.dispose,execute:a=>Te(a,{confirmInstall:e.confirmInstall,dryRun:e.dryRun,install:n=>je(n,e.timeoutMs,t),interactive:e.interactive,observe:e=>Ae(e,r),onInstallStart:e.onInstallStart,outputMode:e.outputMode,process:i,signal:n.context.signal,timeoutMs:e.timeoutMs})}}async function Ae(e,t){try{let n=await t.resolveAgentObservation(e);return{kind:`success`,value:n?{agent:n.agent,executable:n.pathExecutable,installedState:n.installedState,methods:n.methods,observation:n.observation}:void 0}}catch(e){return{error:Ne(e),kind:`failure`}}}async function je(e,t,n){try{if(e.executable.present)return{kind:`success`,value:void 0};let r=await Me(n.reconcileAgentInstallation({agent:e.agent,observation:{inPath:e.executable.present,installedState:e.installedState,lifecycle:e.observation,methods:e.methods},operation:`install`,route:`install`}),t,n.cancelOperations);return r?r.kind===`success`?{kind:`success`,value:void 0}:r:{kind:`timed-out`,timeoutMs:t}}catch(e){return v(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t??0}:{kind:`cancelled`,reason:e.message}:{kind:`failed`,reason:N(e,`Failed to install agent.`),retryable:!1}}}async function Me(e,t,n){if(t===void 0)return e;let r;try{let i=await Promise.race([e.then(e=>({kind:`completed`,value:e})),new Promise(e=>{r=setTimeout(()=>e({kind:`timed-out`}),t)})]);if(i.kind===`completed`)return i.value;let a=await Pe(e,Math.max(1,Math.min(t,250)));if(a!==void 0)return a;await n();return}finally{r&&clearTimeout(r)}}function Ne(e){return e instanceof y?{code:`STATE_READ_ERROR`,details:{stateFilePath:r()},kind:`invalid-data`,message:e.message}:v(e)?{kind:e.kind,message:e.message}:{kind:`failed`,message:N(e,`Failed to observe agent execution state.`)}}function N(e,t){return e instanceof Error&&e.message.trim()?e.message:t}async function Pe(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function P(){return A(a(),`idempotency`)}function F(e){return A(P(),`${Ie(e)}.json`)}async function I(e,t={}){let n=F(e),r;try{r=await be(n,`utf8`)}catch(e){if(Re(e)&&e.code===`ENOENT`)return{kind:`missing`};throw e}let i;try{i=JSON.parse(r)}catch{return{kind:`invalid`,reason:`invalid-json`}}let a=E(i);return a.kind===`invalid`?a:Date.parse(a.record.expiresAt)<=L(t).getTime()?(await j(n),{kind:`expired`,record:a.record}):a}async function Fe(e,t,n={}){let r=L(n),i=n.ttlMs??864e5,a=E({...t,createdAt:r.toISOString(),expiresAt:new Date(r.getTime()+i).toISOString(),schemaVersion:1});if(a.kind===`invalid`)throw TypeError(`Invalid versioned idempotency record: ${a.reason}`);let o=P(),s=F(e),c=`${s}.${process.pid}.${ve()}.tmp`,l=n.fileSystem?.writeFile??M;await ye(o,{recursive:!0});try{await l(c,Le(a.record),`utf8`),await xe(c,s)}catch(e){throw await j(c,{force:!0}),e}}function Ie(e){return _e(`sha256`).update(e,`utf8`).digest(`hex`)}function L(e){let t=e.now?.()??new Date;if(!Number.isFinite(t.getTime()))throw TypeError(`Idempotency clock must return a valid date.`);return t}function Le(e){return`${JSON.stringify(e,(e,t)=>typeof t!=`object`||!t||Array.isArray(t)?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])),2)}\n`}function Re(e){return e instanceof Error&&`code`in e}async function ze(e){let t=D(e.request),n=D(e.resolvedPlan);switch(e.loaded.kind){case`missing`:return{fingerprints:z(t,n),kind:`reconcile`,reason:`missing`};case`expired`:return{fingerprints:R(e.loaded.record,t,n),kind:`reconcile`,reason:`expired`};case`invalid`:return{fingerprints:z(t,n),invalidReason:e.loaded.reason,kind:`reject`,reason:`invalid-evidence`};case`valid`:return Be(e,e.loaded.record,t,n)}}async function Be(e,t,n,r){let i=R(t,n,r);if(t.request.fingerprint!==n)return{fingerprints:i,kind:`reject`,reason:`request-mismatch`};if(t.resolvedPlan.fingerprint!==r)return{fingerprints:i,kind:`reconcile`,reason:`resolved-plan-changed`};switch((await e.validateLive({postcondition:t.postcondition.payload,receipt:t.receipt.payload})).kind){case`satisfied`:return{fingerprints:i,kind:`replay`,result:structuredClone(t.result)};case`drifted`:return{fingerprints:i,kind:`reconcile`,reason:`live-drifted`};case`inconclusive`:return{fingerprints:i,kind:`reconcile`,reason:`live-inconclusive`}}}function R(e,t,n){return{existingPlan:e.resolvedPlan.fingerprint,existingRequest:e.request.fingerprint,requestedPlan:n,requestedRequest:t}}function z(e,t){return{existingPlan:void 0,existingRequest:void 0,requestedPlan:t,requestedRequest:e}}const Ve=new Set([`doctor`,`upgrade`]);async function He(e,t={cache:pe(),getSelfState:ne,now:Date.now,resolveFacts:re}){if(!e.ok||Ve.has(e.action))return;let r=l();if(r.outputMode!==`human`||r.quiet)return;let i=await t.resolveFacts(),a=t.now(),o=await h({cache:t.cache,facts:i,nowMs:a,signal:new AbortController().signal});if(!o||!n(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();Ue(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||S(_.yellow(`Quantex CLI ${o.targetVersion} is available (current ${i.currentVersion}). Run \`quantex upgrade\`.`))}function Ue(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}function We(e){return e.warnings.some(e=>e.code===`DRY_RUN`)}async function Ge(e){try{return await Ke(e)}catch(t){if(t instanceof y)return Xe(e,t);throw t}}async function Ke(e){return rt(e,()=>B(e))}async function B(e){let t=l().timeoutMs,n={expired:!1},r=!1,i,a=async()=>{let a=await Je(e,()=>n.expired);return n.expired&&t!==void 0?G(e,t):a.replayedResult?(r=!0,a.replayedResult):(i={action:e.action,...a.policy?{idempotencyPolicy:a.policy}:{},run:e.run,...e.target?{target:e.target}:{}},l().cancelled?Ye(e):e.run())},o=t===void 0?await a():await qe(e,a,t,n);return r||!i?o:Qe(i,o)}async function qe(e,t,n,r){let i;try{let a=new Promise(t=>{i=setTimeout(()=>{r.expired=!0,t(G(e,n))},n)}),o=at(t,()=>a),s=await Promise.race([o,a]);if(!s.ok&&s.error?.code===`TIMEOUT`){let t=await it(o,n);s=t&&t.error?.code!==`TIMEOUT`?t:await st(e,n)}return i!==void 0&&(clearTimeout(i),i=void 0),s}finally{i&&clearTimeout(i)}}async function Je(e,t=()=>!1){let n=l();if(!n.idempotencyKey||n.dryRun||!W(e.action)||!e.idempotencyPolicy)return{};let r=await I(n.idempotencyKey);if(n.cancelled||t())return{};if(r.kind===`invalid`)return{replayedResult:u(H(e,n.idempotencyKey,r.reason),V,{force:!0})};let i=typeof e.idempotencyPolicy==`function`?await e.idempotencyPolicy():e.idempotencyPolicy;if(n.cancelled||t())return{};let a=await ze({loaded:r,request:i.request,resolvedPlan:i.resolvedPlan,validateLive:i.validateLive});if(n.cancelled||t())return{};if(a.kind===`reconcile`)return{policy:i};if(a.kind===`reject`)return{replayedResult:tt(e,n.idempotencyKey,a,r)};let o=nt(a.result);return u(o,V,{force:!0}),{replayedResult:o}}function Ye(e){return g({action:e.action,error:{code:`CANCELLED`,message:`Command was cancelled before execution could start.`},target:e.target})}async function Xe(e,t){return u(g({action:e.action,...se(t,r(),e.target)}),Ze)}function Ze(e){e.error&&console.error(_.red(e.error.message))}async function Qe(e,t){if(l().cancelled)return t;let n=await $e(e,t);try{await He({action:e.action,ok:n.ok})}catch{}return n}function V(e){e.error&&console.error(_.red(e.error.message))}async function $e(e,t){let n=l();if(!n.idempotencyKey||!W(e.action)||!t.ok||n.dryRun||We(t)||!e.idempotencyPolicy)return t;let r=await e.idempotencyPolicy.captureEvidence(t);if(!r)return t;let i=await I(n.idempotencyKey);return et(e,n.idempotencyKey,i)||(await Fe(n.idempotencyKey,{postcondition:U(r.postcondition),receipt:U(r.receipt),request:U(e.idempotencyPolicy.request),resolvedPlan:U(e.idempotencyPolicy.resolvedPlan),result:t}),t)}function et(e,t,n){if(!e.idempotencyPolicy)return;let r=D(e.idempotencyPolicy.request);if(n.kind===`invalid`)return u(H(e,t,n.reason),V,{force:!0});if(!(n.kind!==`valid`||n.record.request.fingerprint===r))return u(g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{conflict:`concurrent-request-mismatch`,existingAction:n.record.request.payload.action,idempotencyKey:t},message:`Idempotency key ${t} changed while the command was running; replay evidence was not overwritten.`},target:e.target}),V,{force:!0})}function tt(e,t,n,r){return n.reason===`invalid-evidence`?u(H(e,t,n.invalidReason),V,{force:!0}):u(g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.kind===`valid`?r.record.request.payload.action:void 0,idempotencyKey:t,reason:`request-mismatch`},message:`Idempotency key ${t} was already used for a different canonical request.`},target:e.target}),V,{force:!0})}function H(e,t,n){return g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{idempotencyKey:t,invalidReason:n,reason:`invalid-evidence`},message:`Idempotency key ${t} contains invalid replay evidence (${n}).`},target:e.target})}function nt(e){let t=l();return{...e,meta:{...e.meta,mode:t.outputMode,runId:t.runId,timestamp:new Date().toISOString()}}}function U(e){return{fingerprint:D(e),payload:e}}function W(e){return e===`ensure`||e===`install`||e===`uninstall`||e===`update`}async function rt(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=ct(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);k.once(`SIGINT`,a),k.once(`SIGTERM`,o),r=()=>{k.off(`SIGINT`,a),k.off(`SIGTERM`,o)}});return await Promise.race([ot(t,()=>n),i])}finally{r?.()}}async function it(e,t){let n=Math.min(t,250);return await Promise.race([e,new Promise(e=>{setTimeout(()=>e(void 0),n)})])}async function at(e,t){try{return await e()}catch(e){if(v(e)&&e.kind===`timed-out`||l().cancelled)return t();throw e}}async function ot(e,t){try{let n=await e(),r=t();return l().cancelled&&r?r:n}catch(e){let n=t();if(l().cancelled&&n)return n;throw e}}function G(e,t){return g({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target})}async function st(e,t){return await p(),m({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),u(G(e,t),V,{force:!0})}async function ct(e,t){return await p(),m({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),u(g({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),V,{force:!0})}const lt={cancelOperations:p,createExecutionService:ke};async function K(e,t,n={},r=lt){let i=l(),a=n.nonInteractive?!1:i.interactive,o=n.assumeYes??ue(),s=n.dryRun??le(),c=n.install??`prompt`,u,d=r.createExecutionService({confirmInstall:async e=>o?!0:!!(await Ce({initial:!0,message:`${e.agent.displayName} is not installed. Would you like to install it?`,name:`install`,type:`confirm`})).install,dryRun:s,interactive:a,onInstallStart:e=>{S(_.cyan(`Installing ${e.agent.displayName}...`))},outputMode:i.outputMode,timeoutMs:i.timeoutMs}),f=e=>{u??=e,r.cancelOperations()},p=()=>f(`SIGINT`),m=()=>f(`SIGTERM`);k.once(`SIGINT`,p),k.once(`SIGTERM`,m);try{return ut(await d.execute({agentName:e,args:t,installPolicy:c}),{agentName:e,args:t,cancellationSignal:u,installPolicy:c,interactive:a})}finally{k.off(`SIGINT`,p),k.off(`SIGTERM`,m),d.dispose()}}function ut(e,t){if(e.kind===`not-found`)return J({agent:{name:t.agentName},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t.agentName}`,execution:q(t,!1)}),T(`AGENT_NOT_FOUND`);if(e.kind===`observation-failed`)return dt(t.agentName,e.error);let{observed:n}=e,r=n.agent;if(e.kind===`not-installed`||e.kind===`interaction-required`){let i=e.kind===`interaction-required`;return J({agent:r,errorCode:i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`,errorMessage:i?`${r.displayName} is not installed and interactive installation is disabled.`:`${r.displayName} is not installed.`,execution:{...q(t,!1),installGuidance:pt(r,n.methods,t.args)}}),T(i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`)}switch(e.kind){case`install-declined`:return ce(_.yellow(`Installation cancelled.`)),1;case`install-failed`:return w(_.red(`Failed to install ${r.displayName}.`)),T(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&C(_.cyan(`Dry run: would install ${r.displayName}.`)),mt({agent:r,execution:q(t,!0),message:`Dry run: would run ${e.argv.join(` `)}`}),0;case`launch-failed`:return w(_.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return w(_.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),T(`CANCELLED`);case`timed-out`:return w(_.red(e.phase===`install`?`Installing ${r.displayName} timed out after ${e.timeoutMs}ms.`:`${r.displayName} timed out after ${e.timeoutMs}ms.`)),T(`TIMEOUT`);case`exited`:return e.exitCode}}function q(e,t){return{args:e.args,installPolicy:e.installPolicy,installed:t,interactive:e.interactive,launched:!1}}function dt(e,t){let n=ft(t.code)?t.code:`INSTALL_FAILED`;return l().outputMode===`human`?w(_.red(t.message)):u(g({action:`exec`,error:{code:n,details:t.details,message:t.message},target:{kind:`agent`,name:e}}),()=>{}),T(n)}function ft(e){return e!==void 0&&de.includes(e)}function pt(e,t,n){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:s(e,t),label:c(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...n].join(` `)}}function J(e){if(l().outputMode===`human`){w(_.red(e.errorMessage));let t=e.execution.installGuidance;t&&(C(_.dim(`Try: ${t.suggestedEnsureCommand}`)),C(_.dim(`Or: ${t.suggestedExecCommand}`)));return}u(g({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function mt(e){if(l().outputMode===`human`){C(_.cyan(e.message));return}u(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}const ht={capabilities:async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-CdyhM5p5.mjs`);await Y({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-BOHy4Z38.mjs`);await Y({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-CsJqP4-1.mjs`),[n,r,i]=e;await Y({action:`config`,run:()=>t(n,r,i),target:{kind:`config`,name:r}})},doctor:async()=>{let{doctorCommand:e}=await import(`./doctor-FlgVXfJ-.mjs`);await Y({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],{ensureCommand:n}=await import(`./ensure-fBcWjPLH.mjs`);await Y({action:`ensure`,idempotencyPolicy:()=>O(`ensure`,t),run:()=>n(t),target:{kind:`agent`,name:t}})},exec:async(...e)=>{let[t,n,r,i]=e,a=r.install??`never`;if(a!==`never`&&a!==`if-missing`&&a!==`always`){k.stdout.write(`${_.red(`Unknown install policy: ${a}`)}\n`),k.exitCode=2;return}let o=_t(i);k.exitCode=await K(t,o.length>0?o:n,{install:a,nonInteractive:i.optsWithGlobals().nonInteractive})},info:async(...e)=>{let t=e[0],{infoCommand:n}=await import(`./info-B1wrZgxM.mjs`);await Y({action:`info`,run:()=>n(t),target:{kind:`agent`,name:t}})},inspect:async(...e)=>{let t=e[0],{inspectCommand:n}=await import(`./inspect-CXX9iv7n.mjs`);await Y({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let{installCommand:t}=await import(`./install-C__aUVW9.mjs`),n=he(e[0]),r=n.length===1;await Y({action:`install`,...r?{idempotencyPolicy:()=>O(`install`,n[0])}:{idempotencyPolicy:()=>me(n)},run:()=>t(n),target:r?{kind:`agent`,name:n[0]}:{kind:`agent`,name:n.join(`,`)}})},list:async()=>{let{listCommand:e}=await import(`./list-C_TqJIui.mjs`);await Y({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-IhUbwUBa.mjs`);await Y({action:`resolve`,run:()=>n(t),target:{kind:`agent`,name:t}})},schema:async(...e)=>{let t=e[0],{schemaCommand:n}=await import(`./schema-CsIhmOlH.mjs`);await Y({action:`schema`,run:()=>n(t),target:{kind:`system`,name:`schema`}})},uninstall:async(...e)=>{let t=e[0],{uninstallCommand:n}=await import(`./uninstall-B__0wIng.mjs`);await Y({action:`uninstall`,idempotencyPolicy:()=>ge(t),run:()=>n(t),target:{kind:`agent`,name:t}})},update:async(...e)=>{let[t,n]=e,{createUpdateCommandInvocation:r}=await import(`./update-_wy1PcLo.mjs`),i=r(t,n.all??!1);try{await Y({action:`update`,...i.idempotencyPolicy?{idempotencyPolicy:i.idempotencyPolicy}:{},run:i.run,target:{kind:`agent`,name:t}})}finally{i.dispose()}},upgrade:async(...e)=>{let t=e[0],{resolveUpgradeChannelOption:n,upgradeCommand:r}=await import(`./upgrade-CF5MtZgT.mjs`);await Y({action:`upgrade`,run:()=>r({channel:n(t.channel),check:t.check??!1}),target:{kind:`self`,name:`quantex`}})}};function gt(e){return ht[e]}function _t(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}async function Y(e){let{getExitCodeForResult:t}=await import(`./errors-BzuGM14H.mjs`);k.exitCode=t(await Ge(e))}function vt(){let n=o();e(n,n.map(e=>e.schema.name));let r=new Se;r.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`);for(let e of t())r.option(e.flags,e.description,e.defaultValue);r.version(te()),r.hook(`preAction`,(e,t)=>{try{b(d(i(t.optsWithGlobals())))}catch(e){k.stdout.write(`${_.red(e instanceof Error?e.message:String(e))}\n`),k.exit(2)}}),r.hook(`postAction`,()=>{x()});for(let e of n){let t=r.command(e.name).description(e.description);for(let n of e.aliases)t.alias(n);for(let n of e.arguments)t.argument(n.syntax,n.description);e.allowUnknownOptions&&t.allowUnknownOption();for(let n of e.options)t.option(n.flags,n.description,n.defaultValue);t.action(gt(e.handlerId))}return r}const yt=new Map(t().map(e=>[xt(e.flags),e]));function bt(e,t,n){let r={},i=0;for(;i<e.length;){let a=e[i],o=yt.get(a);if(o){if(o.value===`string`){let t=e[i+1];if(!t)return St(a);r[o.id]=t,i+=2}else r[o.id]=!0,i+=1;continue}if(a.startsWith(`-`)||t.has(a))return;let s=Z(r.output);return r.json===!0||s===`json`||s===`ndjson`||n.agentFriendly&&s!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(i+1),agentName:a,color:Z(r.color),dryRun:X(r.dryRun),idempotencyKey:Z(r.idempotencyKey),logLevel:Z(r.logLevel),noCache:X(r.noCache),nonInteractive:X(r.nonInteractive),quiet:X(r.quiet),refresh:X(r.refresh),runId:Z(r.runId),timeout:Z(r.timeout),yes:X(r.yes)}}}function xt(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Global option requires a long flag: ${e}`);return t[0]}function X(e){return e===!0}function Z(e){return typeof e==`string`?e:void 0}function St(e){return{agentArgs:[],agentName:``,error:`${e} requires a value`}}const Q=vt(),Ct=new Set([...Q.commands.map(e=>e.name()),...Q.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),$=bt(k.argv.slice(2),Ct,{agentFriendly:k.stdin.isTTY===!1||k.stdout.isTTY===!1});if($?.error&&(console.log(_.red($.error)),k.exit(2)),$&&ie($.agentName)){try{b(d({color:$.color,dryRun:$.dryRun,idempotencyKey:$.idempotencyKey,logLevel:$.logLevel,noCache:$.noCache,nonInteractive:$.nonInteractive,quiet:$.quiet,refresh:$.refresh,runId:$.runId,timeout:$.timeout,yes:$.yes}))}catch(e){console.log(_.red(e instanceof Error?e.message:String(e))),k.exit(2)}try{let e=await K($.agentName,$.agentArgs,{assumeYes:$.yes,dryRun:$.dryRun,nonInteractive:$.nonInteractive});k.exit(e)}finally{x()}}await Q.parseAsync();export{};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import r from"cross-spawn";import{spawn as i}from"node:child_process";import{accessSync as a,constants as o,existsSync as s,mkdirSync as c,writeFileSync as l}from"node:fs";import{basename as u,delimiter as d,dirname as f,join as p,win32 as m}from"node:path";import{text as h}from"node:stream/consumers";import{access as g,chmod as ee,constants as te,mkdir as ne,mkdtemp as re,readFile as _,realpath as ie,rename as ae,rm as v,stat as oe,writeFile as se}from"node:fs/promises";import{homedir as ce}from"node:os";import{fileURLToPath as le}from"node:url";import{Buffer as ue}from"node:buffer";import de from"picocolors";function fe(e){let t=e.trim().match(/^(\d+)(ms|[smh])?$/);if(!t)return;let n=Number.parseInt(t[1],10),r=t[2]??`ms`;if(Number.isFinite(n))switch(r){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*60*1e3;case`h`:return n*60*60*1e3;default:return}}let y,pe=new Set;function b(){return y??=xe(),y}function me(e){pe=new Set,y={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function he(){y=void 0,pe=new Set}function ge(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:fe(e.timeout),c=Se(e.color),l=Ce(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 _e(){y&&(y.cancelled=!0)}async function ve(){_e();let e=[...pe];pe.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function ye(e){return pe.add(e),()=>{pe.delete(e)}}function be(e){let t=b();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function xe(){return ge()}function Se(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 Ce(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}`)}var x=class extends Error{kind;reason;timeoutMs;constructor(e){super(e.kind===`timed-out`?`Process timed out after ${e.timeoutMs}ms.`:`Process was cancelled.`),this.name=`ProcessInterruptionError`,this.kind=e.kind,e.kind===`timed-out`?this.timeoutMs=e.timeoutMs:this.reason=e.reason}};function S(e){return e instanceof x}function we(e,t={}){if(b().outputMode===`human`){let n=C(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:ye(()=>Fe(n)),outputDrained:Promise.resolve(),proc:n}}let n=C(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:ye(()=>Fe(n)),outputDrained:Promise.all([ke(n.stdout),ke(n.stderr)]).then(()=>void 0),proc:n}}async function Te(e){let t=b();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function Ee(e,t){let n,r=()=>n??=Ie(e.proc,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Le(e.proc)});if(t.signal.aborted)throw await r(),e.cleanup(),i?.(),new x({kind:`cancelled`,reason:Oe(t.signal)});let a,o,s,c=!1,l=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>n(e===`timed-out`?new x({kind:e,timeoutMs:t.timeoutMs}):new x({kind:e,reason:Oe(t.signal)}))))},o=()=>s(`cancelled`),t.signal.addEventListener(`abort`,o,{once:!0}),t.timeoutMs!==void 0&&(a=setTimeout(()=>s(`timed-out`),t.timeoutMs))});try{let t=Promise.all([e.proc.exited,e.outputDrained]).then(([e])=>c?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.(),e.cleanup()}}function C(e,t={}){let[a,...o]=e,s=a?De(a,t):void 0;if(!s)throw Error(`spawnCommand requires a non-empty command array.`);let c=Me(s),l=t.detached||c?void 0:Ne();if(l)return Pe([s,...o],{...t,env:t.env??n.env},l);let u=(c?r:i)(s,o,{...t,env:t.env??n.env});return{get exitCode(){return u.exitCode},pid:u.pid,stderr:u.stderr,stdout:u.stdout,exited:Ae(u),kill:u.kill.bind(u),unref:()=>u.unref()}}function De(e,t){if(!t.detached||n.platform===`win32`||e.includes(`/`))return e;for(let t of(n.env.PATH??``).split(d)){let n=p(t,e);try{return a(n,o.X_OK),n}catch{}}return e}async function w(e){let[t,n,r]=await Promise.all([je(e.stdout),je(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function T(e,t){let n,r=()=>n??=Ie(e,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Le(e)});if(t.signal.aborted)throw await r(),i?.(),new x({kind:`cancelled`,reason:Oe(t.signal)});let a,o,s,c=!1,l=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>setTimeout(()=>n(e===`timed-out`?new x({kind:e,timeoutMs:t.timeoutMs}):new x({kind:e,reason:Oe(t.signal)})),10)))},o=()=>s(`cancelled`),t.signal.addEventListener(`abort`,o,{once:!0}),t.timeoutMs!==void 0&&(a=setTimeout(()=>s(`timed-out`),t.timeoutMs))});try{let t=w(e).then(e=>c?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.()}}function Oe(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}async function ke(e){if(!e)return;let t=await je(e);t&&n.stderr.write(t)}async function Ae(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function je(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():h(e):``}function Me(e,t=n.platform){return t===`win32`?/\.(?:bat|cmd)$/i.test(e)?!0:e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e):!1}function Ne(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Pe(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 Fe(e){await Ie(e)}async function Ie(e,t){n.platform===`win32`&&e.pid!==void 0&&await Be(ze(e.pid),2e3),Re(e,`SIGTERM`);let r=t===void 0?2e3:Math.max(10,Math.min(t,250));if(n.platform!==`win32`&&e.pid!==void 0)await new Promise(e=>setTimeout(e,r));else{let t=e.exited.then(()=>!0).catch(()=>!0);if(await Promise.race([t,new Promise(e=>setTimeout(()=>e(!1),r))]))return}Re(e,`SIGKILL`),await Be(e.exited.then(()=>void 0).catch(()=>void 0),250)}async function Le(e){n.platform===`win32`&&e.pid!==void 0&&await Be(ze(e.pid),250),Re(e,`SIGKILL`),await Be(e.exited.then(()=>void 0).catch(()=>void 0),250)}function Re(e,t){if(n.platform!==`win32`&&e.pid!==void 0)try{n.kill(-e.pid,t);return}catch{}try{e.kill?.(t)}catch{}}async function ze(e,t=i){await new Promise(n=>{let r=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});r.once(`error`,()=>n()),r.once(`close`,()=>n())})}async function Be(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function Ve(){let e=b(),t=new AbortController,n=new Set;e.cancelled&&t.abort(`cancelled`);let r=ye(async()=>{t.abort(`cancelled`);let e=[...n];await Ue(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.cleanup()))),500)||await Ue(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.force?.()))),250)});return{context:{registerCleanup(e){return n.add(e),()=>n.delete(e)},signal:t.signal,timeoutMs:e.timeoutMs},dispose(){r(),n.clear()},async run(e){if(t.signal.aborted)throw He(t.signal);let n,r=new Promise((e,r)=>{n=()=>r(He(t.signal)),t.signal.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([Promise.resolve().then(e),r])}finally{t.signal.removeEventListener(`abort`,n)}}}}function He(e){return new x({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)})}async function Ue(e,t){let n;try{return await Promise.race([e.then(()=>!0),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}async function E(e,t,n){try{let r=await Ee(we(e,{detached:process.platform!==`win32`}),t);return r===0?{kind:`success`,value:void 0}:{command:e,exitCode:r,kind:`failed`,reason:`${n} with exit code ${r}`,retryable:!1}}catch(r){return S(r)?r.kind===`timed-out`?{kind:`timed-out`,timeoutMs:r.timeoutMs??t.timeoutMs??0}:{kind:`cancelled`,...r.reason?{reason:r.reason}:{}}:{command:e,kind:`failed`,reason:`${n}: ${Ge(r)}`,retryable:!1}}}async function D(e,t,n){for(let r of e){let e=await E(r,t,n);if(e.kind!==`success`)return e}return{kind:`success`,value:void 0}}async function We(e){let t=Ve();try{return(await e(t.context)).kind===`success`}finally{t.dispose()}}function Ge(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}function Ke(e){return e===`cask`?[`--cask`]:[]}function qe(e){return e===`cask`?[`--cask`]:[`--formula`]}function Je(e,t,n,r){return E([`brew`,e,...Ke(n),t],r,`brew ${e} failed`)}function Ye(e,t,n){return Je(`install`,e,t,n)}function Xe(e,t,n){return Je(`upgrade`,e,t,n)}function Ze(e,t){return D(e.map(e=>[`brew`,`upgrade`,...Ke(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function Qe(e,t,n){return Je(`uninstall`,e,t,n)}async function $e(e,t,r){try{let i=C([`brew`,`list`,...qe(t),`--versions`,e],{detached:r!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:a,stderr:o,stdout:s}=r?await T(i,r):await w(i),c=nt(s);return a===0?c?{presence:`present`,version:c}:{presence:`present`}:a===1&&rt(o)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function et(e,t,n){return(await $e(e,t,n)).presence}async function tt(e,t,n){return(await $e(e,t,n)).version}function nt(e){let t=e.trim().split(`
|
|
2
|
+
`).find(e=>e.trim());if(!t)return;let n=t.trim().split(/\s+/);if(n.length<2)return;let r=n.at(-1);return r&&/^\d/.test(r)?r:void 0}function rt(e){let t=e.toLowerCase();return t.includes(`no such keg`)||t.includes(`is not installed`)}function it(){switch(n.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function O(e,t){try{let r=C([e,`--version`],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i}=t?await T(r,t):await w(r);return i===0}catch(e){if(S(e))throw e;return!1}}async function at(e){return O(`bun`,e)}async function ot(e){return O(`npm`,e)}async function st(e){return O(`brew`,e)}async function ct(e){return O(`deno`,e)}async function lt(e){return O(`cargo`,e)}async function ut(e){return O(`mise`,e)}async function dt(e){return O(`winget`,e)}async function ft(e){return await O(`pip`,e)||await O(`pip3`,e)?!0:mt(e)}async function pt(e){return O(`uv`,e)}async function mt(e){try{let t=C([`python`,`-m`,`pip`,`--version`],{detached:e!==void 0&&n.platform!==`win32`}),{exitCode:r}=e?await T(t,e):await w(t);if(r===0)return!0}catch(e){if(S(e))throw e}try{let t=C([`python3`,`-m`,`pip`,`--version`],{detached:e!==void 0&&n.platform!==`win32`}),{exitCode:r}=e?await T(t,e):await w(t);return r===0}catch(e){if(S(e))throw e;return!1}}async function ht(e,t){try{let r=C([n.platform===`win32`?`where`:`which`,e],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i}=t?await T(r,t):await w(r);return i===0}catch(e){if(S(e))throw e;return!1}}function k(e){return e.kind===`cancelled`||e.kind===`timed-out`}function A(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function j(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:_t(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:_t(e.signal)}),e.signal.addEventListener(`abort`,r,{once:!0})}),a=[Promise.resolve().then(t).then(e=>({kind:`resolved`,value:e})).catch(e=>({kind:`rejected`,reason:vt(e)})),i];e.timeoutMs!==void 0&&a.push(new Promise(t=>{n=setTimeout(()=>t({kind:`timed-out`,timeoutMs:e.timeoutMs}),e.timeoutMs)}));let o=await Promise.race(a);return n&&clearTimeout(n),e.signal.removeEventListener(`abort`,r),o}async function gt(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:_t(e.signal)};try{return{kind:`resolved`,value:await t()}}catch(e){return S(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:{kind:`rejected`,reason:vt(e)}}}function _t(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}function vt(e){return e instanceof Error?e.message:String(e)}function M(e,t){let n=async n=>{let r=await yt(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(k(r))return A(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[Et(e.id,`${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return N({evidence:[Dt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await yt(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&k(i)?A(i):N({evidence:[Dt(e.id,n.target.id,`present`)],kind:`present`,target:n.target,...i?.kind===`resolved`&&i.value?{version:i.value}:{}})};return{availability:async n=>{let r=await yt(n,t.contextualObservation,()=>t.isAvailable(n));return k(r)?A(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:N({executable:e.executable})},id:e.id,install:n=>xt(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>xt(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>xt(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>St(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?N({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):N({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function yt(e,t,n){return t?gt(e,n):j(e,n)}function bt(e,t,n){return t?gt(e,n):j(e,n)}async function xt(e,t,n,r,i,a){let o=await bt(t.context,i,()=>a(t.target,t.context));if(k(o))return A(o);let s=Tt(e.id,r);return o.kind===`rejected`?wt(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?N({evidence:s,target:t.target}):Ct(o.value,e,t.target.id,n,r,s)}async function St(e,t,n){let r=e.commands.updateMany(n.targets),i=await bt(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(k(i))return A(i);let a=Tt(e.id,r);return i.kind===`rejected`?wt(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?N(n.targets.map(e=>({evidence:a,target:e}))):Ct(i.value,e,void 0,`update`,r,a)}function Ct(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=wt(t,n,r,i,a);return{...o,...e,command:e.command??i,evidence:e.evidence??a,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function wt(e,t,n,r,i,a){return{command:r,evidence:i,kind:`failed`,reason:`${e.id} ${n} failed${t?` for ${t}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function Tt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function Et(e,t){return{kind:`provider`,value:`${e}:${t}`}}function Dt(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function N(e){return{kind:`success`,value:e}}function P(e){return e.kind===`cask`?`cask`:`package`}const Ot={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>tt(e.id,P(e),t),install:(e,t)=>Ye(e.id,P(e),t),isAvailable:e=>st(e),probePackagePresence:(e,t)=>et(e.id,P(e),t),uninstall:(e,t)=>Qe(e.id,P(e),t),update:(e,t)=>Xe(e.id,P(e),t),updateMany:(e,t)=>Ze(e.map(e=>({packageName:e.id,packageTargetKind:P(e)})),t)};function kt(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function At(e=Ot){return M({commands:{install:e=>kt(`install`,e),uninstall:e=>kt(`uninstall`,e),update:e=>kt(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>kt(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const jt=At(),Mt=`https://registry.npmjs.org`;function F(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function Nt(e,t,n){return`${F(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async function Pt(e,t,n){return We(r=>Ft(e,t,n,r))}function Ft(e,t,n,r){let i=t?`${e}@${t}`:e,a=F(n);return Kt([`bun`,`add`,`-g`,...a?[`--registry`,a]:[],i],[e],r)}function It(e,t,n,r,i){let a=n===`latest`?e:`${e}@${n}`,o=F(r);return Kt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...o?[`--registry`,o]:[],a],[e],i)}function Lt(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):Kt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function Rt(e,t){return E([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`)}const zt={readGlobalManifest:()=>_(p(n.env.BUN_INSTALL_GLOBAL_DIR??p(ce(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function Bt(e,t=zt,r){try{let i=C([`bun`,`pm`,`-g`,`ls`],{detached:r!==void 0&&n.platform!==`win32`,stdio:Qt()}),{stderr:a,stdout:o}=r?await T(i,r):await w(i);if(!o.trim()){if(a.includes(`No package.json was found for directory`))return{presence:`absent`};if(a.includes(`Lockfile not found`))try{return{presence:Wt(await t.readGlobalManifest(),e)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let s=Gt(o,e);return s?{presence:`present`,version:s}:Ut(o,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Vt(e,t=zt,n){return(await Bt(e,t,n)).presence}async function Ht(e,t){return(await Bt(e,zt,t)).version}function Ut(e,t){let n=`${t}@`;return e.split(`
|
|
3
|
+
`).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function Wt(e,t){let n=JSON.parse(e);if(typeof n!=`object`||!n||Array.isArray(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(typeof r!=`object`||!r||Array.isArray(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}function Gt(e,t){let n=`${t}@`;for(let t of e.split(`
|
|
4
|
+
`)){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 Kt(e,t,n){let r=[...new Set(t)],i=e[1]===`add`,a=i?await qt(r,n):void 0,o=await E(e,n,`bun mutation failed`);if(o.kind!==`success`)return o;let s=await Yt(r,n);return s.kind!==`success`&&i&&a&&await Jt(r.filter(e=>a.get(e)===`absent`),n),s}async function qt(e,t){let n=new Map;for(let r of e)n.set(r,await Vt(r,void 0,t));return n}async function Jt(e,t){for(let n of new Set(e))await E([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function Yt(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await Xt(t);if(r.kind!==`success`)return r;let i=Zt(r.value),a=n.filter(e=>i.has(e));return a.length===0?{kind:`success`,value:void 0}:E([`bun`,`pm`,`-g`,`trust`,...a],t,`bun trust failed`)}async function Xt(e){let t=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:r,stdout:i}=await T(C(t,{detached:n.platform!==`win32`,stdio:Qt()}),e);return r===0?{kind:`success`,value:i}:{command:t,exitCode:r,kind:`failed`,reason:`bun trust inspection failed with exit code ${r}`,retryable:!1}}catch(n){return S(n)?n.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...n.reason?{reason:n.reason}:{}}:{command:t,kind:`failed`,reason:n instanceof Error&&n.message.trim()?n.message:`bun trust inspection failed`,retryable:!1}}}function Zt(e){let t=new Set;for(let n of e.split(`
|
|
5
|
+
`)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function Qt(){return[`ignore`,`pipe`,`pipe`]}const $t={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function I(){return p(n.env.HOME||n.env.USERPROFILE||ce(),`.quantex`)}function en(){return p(I(),`config.json`)}async function tn(){let e={...$t,...await on()};return{...e,defaultPackageManager:nn(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:sn(e.networkRetries,2),networkTimeoutMs:sn(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?F(e.selfUpdateRegistry):void 0,versionCacheTtlHours:sn(e.versionCacheTtlHours,6)}}function nn(e){return e===`bun`||e===`mise`||e===`npm`}function rn(e){return e===`latest-major`||e===`respect-semver`}async function an(e){await ne(I(),{recursive:!0}),await se(en(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function on(){try{let e=await _(en(),`utf8`),t=JSON.parse(e);return cn(t)?t:{}}catch{return{}}}function sn(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 cn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ln=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function un(e,t,n={}){let r=await dn(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function dn(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;L(i);let a=await tn();L(i);let o=a.versionCacheTtlHours*60*60*1e3,s=b().cacheMode,c=s===`no-cache`?{entries:{}}:await vn();L(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return L(i),xn(l,o),l.body;let d=await fn(e,{context:r.context,headers:s!==`no-cache`&&l?.etag?{"If-None-Match":l.etag}:void 0,mode:n,networkPort:r.networkPort,retries:a.networkRetries,signal:i,timeoutMs:a.networkTimeoutMs});if(L(i),!d)return l&&(L(i),xn(l,o)),l?.body;if(d.status===304&&l)return L(i),c.entries[t]={...l,expiresAt:u+o,fetchedAt:u},s!==`no-cache`&&(L(i),await yn(c)),L(i),Sn(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(L(i),xn(l,o)),l?.body;L(i);let f={body:d.body,etag:d.etag,expiresAt:u+o,fetchedAt:u};return s!==`no-cache`&&(c.entries[t]=f,L(i),await yn(c)),L(i),Sn(u,u+o),d.body}async function fn(e,t){let n=t.context?.timeoutMs===void 0?void 0:Date.now()+t.context.timeoutMs;for(let r=0;r<=t.retries;r++)try{return await pn(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof x)throw e;if(r===t.retries)return}}async function pn(e,t){let n=t.networkPort;if(n)return mn(e,{...t,networkPort:n});let r=new AbortController,i,a,o,s,c,l=new Promise((e,t)=>s=t),u=()=>c??=gn(Promise.resolve().then(async()=>{i?await i.cancel(o):a?.body&&!a.body.locked&&await a.body.cancel(o)}).then(()=>void 0).catch(()=>void 0),250),d=e=>{let n=e===`cancelled`?_n(t.signal):e===`invocation-timeout`?new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new ln(t.timeoutMs),i=o===void 0;return(i||o instanceof ln&&n instanceof x)&&(o=n),i&&(r.abort(o),u().finally(()=>s(o))),u()},f=()=>void d(`cancelled`);t.signal?.addEventListener(`abort`,f,{once:!0});let p=t.context?.registerCleanup?.({cleanup:()=>d(`cancelled`),force:u}),m=Date.now()+t.timeoutMs,h=setTimeout(()=>void d(`network-timeout`),t.timeoutMs),g=t.invocationDeadline===void 0?void 0:setTimeout(()=>void d(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),ee=async()=>{if(o||(t.signal?.aborted?await d(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await d(`invocation-timeout`):Date.now()>=m&&await d(`network-timeout`),o))throw o};try{t.signal?.aborted&&await d(`cancelled`);let n=(async()=>{a=await fetch(e,{headers:t.headers,signal:r.signal}),await ee();let n=a.status,o=a.headers?.get?.(`etag`)??void 0;if(!a.ok)return await u(),{etag:o,ok:!1,status:n,valid:!0};let s=await hn(a,e=>i=e);await ee();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await ee(),{body:s,etag:o,ok:!0,status:n,valid:c}})();try{return await Promise.race([n,l])}catch(e){throw o?(await u(),o):e}}finally{clearTimeout(h),g&&clearTimeout(g),t.signal?.removeEventListener(`abort`,f),p?.()}}async function mn(e,t){if(t.signal?.aborted)throw _n(t.signal);let n=Date.now();if(t.invocationDeadline!==void 0&&t.invocationDeadline<=n)throw new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0});let r=t.invocationDeadline===void 0?t.timeoutMs:Math.max(1,Math.min(t.timeoutMs,t.invocationDeadline-n)),i=t.signal??new AbortController().signal,a=await t.networkPort.request({headers:t.headers,signal:i,timeoutMs:r,url:e});if(a.kind===`failure`)throw t.signal?.aborted||a.error.kind===`cancelled`?_n(t.signal):a.error.kind===`timed-out`?t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new ln(t.timeoutMs):Error(a.error.message);let o=new TextDecoder().decode(a.value.body),s=!0;if(t.mode===`json`&&a.value.status>=200&&a.value.status<300)try{JSON.parse(o)}catch{s=!1}return{body:a.value.status>=200&&a.value.status<300?o:void 0,etag:a.value.headers.etag,ok:a.value.status>=200&&a.value.status<300,status:a.value.status,valid:s}}async function hn(e,t){if(!e.body)return``;let n=e.body.getReader();t(n);let r=new TextDecoder,i=``;for(;;){let e=await n.read();if(e.done)break;i+=r.decode(e.value,{stream:!0})}return i+r.decode()}async function gn(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function L(e){if(e?.aborted)throw _n(e)}function _n(e){return e?.reason instanceof x?e.reason:new x({kind:`cancelled`,reason:typeof e?.reason==`string`?e.reason:e?.reason instanceof Error?e.reason.message:e?.reason===void 0?void 0:String(e.reason)})}async function vn(){try{return JSON.parse(await _(bn(),`utf8`))}catch{return{entries:{}}}}async function yn(e){await ne(p(I(),`cache`),{recursive:!0}),await se(bn(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function bn(){return p(I(),`cache`,`versions.json`)}function xn(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);be({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Sn(e,t){be({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Cn=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function wn(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
6
|
+
`)[0],r=n.match(Cn);return r?r[1]:n||void 0}function Tn(e,t){let n=Mn(e),r=Mn(t);if(!(!n||!r)){for(let e=0;e<3;e+=1){let t=n.core[e],i=r.core[e];if(t!==i)return t>i?1:-1}return Nn(n.prerelease,r.prerelease)}}function En(e,t){return Tn(e,t)===1}async function Dn(e,t,r){let i=t?.command??[e,`--version`];try{let e=C(i,{detached:r!==void 0&&n.platform!==`win32`}),{exitCode:a,stdout:o}=r?await T(e,r):await w(e);return a===0?wn(o,t?.parser):void 0}catch(e){if(S(e))throw e;return}}async function On(e,t=`latest`,n={}){try{let r=F(n.registry)??`https://registry.npmjs.org`,i=await un(Nt(e,t,r),`npm:${r}:${e}:${t}`,{context:n.context,networkPort:n.networkPort});if(n.context?.signal.aborted)throw jn(n.context.signal);return i?.version}catch(e){if(S(e))throw e;if(n.context?.signal.aborted)throw jn(n.context.signal);return}}async function kn(e,t){try{let r=C([n.platform===`win32`?`where`:`which`,e],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i,stdout:a}=t?await T(r,t):await w(r);return i===0?a.trim().split(`
|
|
7
|
+
`)[0]:void 0}catch(e){if(S(e))throw e;return}}async function An(e,t){if(e){if(t?.signal.aborted)throw jn(t.signal);try{let n=await ie(e);if(t?.signal.aborted)throw jn(t.signal);return n}catch{if(t?.signal.aborted)throw jn(t.signal);return e}}}function jn(e){return new x({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}function Mn(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/i);if(t)return{core:[BigInt(t[1]),BigInt(t[2]),BigInt(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function Nn(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);if(a&&o){let e=BigInt(n),t=BigInt(i);if(e===t)continue;return e>t?1:-1}return a?-1:o||n>i?1:-1}return 0}function Pn(e,t){let n=R(`provider`,e.id),r=async n=>{let r=await Fn(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(k(r))return A(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[R(`provider`,`${e.id}:${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return z({evidence:[R(`package`,`${e.id}:${n.target.id}:absent`)],kind:`absent`,target:n.target});let i=await Fn(n.context,t.contextualPackageObservation,()=>t.getInstalledVersion(n.target.id,n.context));if(k(i))return A(i);let a=i.kind===`resolved`?i.value:void 0;return z({evidence:[R(`package`,a?`${e.id}:${n.target.id}@${a}`:`${e.id}:${n.target.id}:present`)],kind:`present`,target:n.target,...a?{version:a}:{}})};return{availability:async n=>{let r=await Fn(n,t.contextualPackageObservation,()=>t.isAvailable(n));return k(r)?A(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:z({executable:e.executable})},id:e.id,install:n=>{let r=Vn(n.options),i=e.commands.install(n.target,r);return Rn(e,n.context,n.target,i,t.contextualMutation,()=>t.install(n.target.id,n.options?.distTag,r.registry,n.context))},observe:r,resolveLatestVersion:async r=>{let i=Vn(r.options),a=await j(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return k(a)?A(a):a.kind===`rejected`||!a.value?{evidence:[n],kind:`indeterminate`,reason:`${e.id} could not resolve the ${i.distTag} version for ${r.target.id}`}:z({evidence:[n,R(`package`,`${e.id}:${r.target.id}@${i.distTag}=${a.value}`)],version:a.value})},uninstall:n=>{let r=e.commands.uninstall(n.target);return Rn(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context))},update:n=>{let r=Vn(n.options),i=e.commands.update(n.target,r);return Rn(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>Ln(e,t,n),verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?z({evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):z({evidence:n.value.evidence??[],kind:`satisfied`}):n}}}function Fn(e,t,n){return t?gt(e,n):j(e,n)}function In(e,t,n){return t?gt(e,n):j(e,n)}async function Ln(e,t,n){let r=Vn(n.options),i=e.commands.updateMany(n.targets,r),a=[R(`provider`,e.id),R(`command`,i.join(` `))],o=await In(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return k(o)?A(o):o.kind===`rejected`?Bn(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?z(n.targets.map(e=>({evidence:a,target:e}))):zn(o.value,e,i,a,`update-many`)}async function Rn(e,t,n,r,i,a){let o=await In(t,i,a);if(k(o))return A(o);let s=[R(`provider`,e.id),R(`command`,r.join(` `))];return o.kind===`rejected`?Bn(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?z({evidence:s,target:n}):zn(o.value,e,r,s,r[1]??`operation`,n.id)}function zn(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=Bn(t,n,r,i,a);return{...o,...e,command:e.command??n,evidence:e.evidence??r,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function Bn(e,t,n,r,i,a){let o=r===`add`?`install`:r===`remove`?`uninstall`:r;return{command:t,evidence:n,kind:`failed`,reason:`${e.id} ${o} failed${i?` for ${i}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function Vn(e){return{distTag:e?.distTag??`latest`,distTagExplicit:e?.distTag!==void 0,registry:F(e?.registry),updateStrategy:e?.updateStrategy??`latest-major`}}function R(e,t){return{kind:e,value:t}}function z(e){return{kind:`success`,value:e}}const Hn={install:(e,t)=>[`bun`,`add`,`-g`,...t.registry?[`--registry`,t.registry]:[],t.distTagExplicit?`${e.id}@${t.distTag}`:e.id],uninstall:e=>[`bun`,`remove`,`-g`,e.id],update:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...t.registry?[`--registry`,t.registry]:[],t.distTag===`latest`?e.id:`${e.id}@${t.distTag}`],updateMany:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...e.map(e=>e.id)]},Un={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>Ht(e,t),install:(e,t,n,r)=>Ft(e,t,n,r),isAvailable:e=>at(e),probePackagePresence:(e,t)=>Vt(e,void 0,t),resolveLatestVersion:(e,t,n)=>On(e,t,{registry:n}),uninstall:(e,t)=>Rt(e,t),update:(e,t,n,r,i)=>It(e,t,n,r,i),updateMany:(e,t,n)=>Lt(e,t,n)};function Wn(e=Un){return Pn({commands:Hn,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const Gn=Wn();function Kn(e,t,n,r){return E([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function qn(e,t,n){return Kn(`install`,e,t??[],n)}function Jn(e,t,n){return qn(e,[`--force`,...t??[]],n)}function Yn(e,t){return D(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function Xn(e,t){return Kn(`uninstall`,e,[],t)}async function Zn(e,t){try{let r=C([`cargo`,`install`,`--list`],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:i,stdout:a}=t?await T(r,t):await w(r);if(i!==0)return{presence:`unknown`};let o=er(a,e);return o?{presence:`present`,version:o}:tr(a,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Qn(e,t){return(await Zn(e,t)).presence}async function $n(e,t){return(await Zn(e,t)).version}function er(e,t){let n=nr(e,t);if(!n)return;let r=n[1];return r&&/^\d/.test(r)?r:void 0}function tr(e,t){return nr(e,t)!==void 0}function nr(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),r=RegExp(`^${n}\\s+v([^:\\s]+):\\s*$`,`m`);return e.match(r)??void 0}const rr={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>$n(e.id,t),install:(e,t)=>qn(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>lt(e),probePackagePresence:(e,t)=>Qn(e.id,t),uninstall:(e,t)=>Xn(e.id,t),update:(e,t)=>Jn(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>Yn(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function ir(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function ar(e=rr){return M({commands:{install:e=>ir(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>ir(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const or=ar();function sr(e,t,n,r){let i=[`deno`,`install`,`--global`];return n.force&&i.push(`--force`),i.push(...t,e),E(i,r,`deno ${n.force?`update`:`install`} failed`)}function cr(e,t,n){return sr(e,t??[],{},n)}function lr(e,t,n){return sr(e,t??[],{force:!0},n)}function ur(e,t){return D(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function dr(e,t){return E([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}async function fr(e,t){if(!e.trim())return{presence:`unknown`};try{return await g(p(gr(),`bin`,e),te.F_OK),{presence:`present`}}catch(e){if(S(e))throw e;return _r(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)?{presence:`absent`}:{presence:`unknown`}}}async function pr(e,t){return(await fr(e,t)).presence}async function mr(e,t){return(await fr(e,t)).version}function hr(e,t){if(t?.trim())return t.trim();let n=e.trim().split(`/`).pop()?.replace(/@.*$/,``);return n&&n.length>0?n:e.trim()}function gr(){let e=n.env.DENO_INSTALL_ROOT?.trim();return e&&e.length>0?e:p(ce(),`.deno`)}function _r(e){return typeof e==`object`&&!!e&&`code`in e}const vr={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>mr(hr(e.id,e.binaryName),t),install:(e,t)=>cr(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>ct(e),probePackagePresence:(e,t)=>pr(hr(e.id,e.binaryName),t),uninstall:(e,t)=>dr(hr(e.id,e.binaryName),t),update:(e,t)=>lr(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>ur(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},...e.binaryName?{binaryName:e.binaryName}:{},packageName:e.id})),t)};function yr(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function br(e=vr){return M({commands:{install:e=>yr(e),uninstall:e=>[`deno`,`uninstall`,`--global`,hr(e.id,e.binaryName)],update:e=>yr(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const xr=br(),Sr={contextualExecution:!0,execute:(e,t)=>E(Tr(e,it()),t,`install effect failed`),isExecutablePresent:ht};function Cr(e,t={}){let n={...Sr,...t,contextualExecution:t.execute?t.contextualExecution??!1:!0};return{availability:async e=>Er(e),id:e,install:async t=>{let r=t.target.effect;if(!r)return{kind:`failed`,reason:`${e} install target ${t.target.id} has no execution effect`,remediation:`Select a candidate with an explicit shell-script or executable effect.`,retryable:!1};let i=await wr(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(k(i))return A(i);let a=Tr(r,it()),o=Dr(e,a);if(i.kind===`rejected`)return{command:a,evidence:o,kind:`failed`,reason:`${e} install failed for ${t.target.id}: ${i.reason}`,remediation:`Review the installer output and upstream installation instructions.`,retryable:!1};let s=i.value;return s.kind===`success`?{kind:`success`,value:{evidence:o,target:t.target}}:s.kind===`failed`?{...s,command:s.command??a,evidence:s.evidence??o,remediation:s.remediation??`Review the installer output and upstream installation instructions.`}:s},observe:async t=>{let r=t.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await j(t.context,()=>n.isExecutablePresent(r));return k(i)?A(i):i.kind===`rejected`?{kind:`failed`,reason:`${e} executable probe failed for ${t.target.id}: ${i.reason}`,retryable:!0}:{kind:`success`,value:{evidence:[{kind:`executable`,value:r}],kind:i.value?`present`:`absent`,target:t.target}}}}}function wr(e,t,n){return t?gt(e,n):j(e,n)}function Tr(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function Er(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:it()===`windows`?`powershell.exe`:`sh`}}}function Dr(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const Or=Cr(`script`),kr=Cr(`binary`);function Ar(e,t,n){return E([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function jr(e,t){return Ar(e,!1,t)}function Mr(e,t){return Ar(e,!0,t)}function Nr(e,t){return D(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function Pr(e,t){return E([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function Fr(e,t){try{let r=C([`mise`,`ls`,`--installed`,`--json`,e],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:i}=t?await T(r,t):await w(r);if(!i.trim())return{presence:`unknown`};try{let t=JSON.parse(i);if(!Br(t))return{presence:`unknown`};let n=zr(t,e),r=n?t[n]:void 0;if(!Array.isArray(r)||r.length===0)return{presence:`absent`};let a=Rr(i,e);return a?{presence:`present`,version:a}:{presence:`present`}}catch{return{presence:`unknown`}}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Ir(e,t){return(await Fr(e,t)).presence}async function Lr(e,t){return(await Fr(e,t)).version}function Rr(e,t){try{let n=JSON.parse(e);if(!Br(n))return;let r=zr(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(Br(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function zr(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 Br(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const Vr={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Lr(e.id,t),install:(e,t)=>jr(e.id,t),isAvailable:e=>ut(e),probePackagePresence:(e,t)=>Ir(e.id,t),uninstall:(e,t)=>Pr(e.id,t),update:(e,t)=>Mr(e.id,t),updateMany:(e,t)=>Nr(e.map(e=>({packageName:e.id})),t)};function Hr(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function Ur(e=Vr){return M({commands:{install:e=>Hr(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>Hr(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const Wr=Ur();async function Gr(e,t,n){return We(r=>Kr(e,t,n,r))}function Kr(e,t,n,r){let i=t?`${e}@${t}`:e,a=F(n);return E([`npm`,`install`,`-g`,i,...a?[`--registry`,a]:[]],r,`npm install failed`)}function qr(e,t,n,r,i){let a=F(r);return E(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...a?[`--registry`,a]:[]]:[`npm`,`update`,`-g`,e,...a?[`--registry`,a]:[]],i,`npm update failed`)}function Jr(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):E(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e],n,`npm batch update failed`)}function Yr(e,t){return E([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function Xr(e,t){try{let n=C([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{detached:t!==void 0&&process.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:r}=t?await T(n,t):await w(n);if(!r.trim())return{presence:`unknown`};try{let t=JSON.parse(r);if(!t||typeof t!=`object`||Array.isArray(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};if(t.dependencies&&Object.hasOwn(t.dependencies,e)){let t=$r(r,e);return t?{presence:`present`,version:t}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Zr(e,t){return(await Xr(e,t)).presence}async function Qr(e,t){return(await Xr(e,t)).version}function $r(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const ei={install:(e,t)=>[`npm`,`install`,`-g`,t.distTagExplicit?`${e.id}@${t.distTag}`:e.id,...t.registry?[`--registry`,t.registry]:[]],uninstall:e=>[`npm`,`uninstall`,`-g`,e.id],update:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,`${e.id}@${t.distTag}`,...t.registry?[`--registry`,t.registry]:[]]:[`npm`,`update`,`-g`,e.id,...t.registry?[`--registry`,t.registry]:[]],updateMany:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e.id}@latest`)]:[`npm`,`update`,`-g`,...e.map(e=>e.id)]},ti={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>Qr(e,t),install:(e,t,n,r)=>Kr(e,t,n,r),isAvailable:e=>ot(e),probePackagePresence:(e,t)=>Zr(e,t),resolveLatestVersion:(e,t,n)=>On(e,t,{registry:n}),uninstall:(e,t)=>Yr(e,t),update:(e,t,n,r,i)=>qr(e,t,n,r,i),updateMany:(e,t,n)=>Jr(e,t,n)};function ni(e=ti){return Pn({commands:ei,displayName:`npm`,executable:`npm`,id:`npm`},e)}const ri=ni();let ii=null;async function ai(e){if(ii)return{kind:`success`,value:ii};for(let t of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:r}=await T(C([...t,`--version`],{detached:n.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),e);if(r===0)return ii=t,{kind:`success`,value:t}}catch(t){if(S(t))return t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...t.reason?{reason:t.reason}:{}}}return ii=[`pip`],{kind:`success`,value:ii}}async function oi(e,t){let n=await ai(t);return n.kind===`success`?E([...n.value,...e],t,`pip command failed`):n}function si(e,t){return oi([`install`,e],t)}function ci(e,t){return oi([`install`,`--upgrade`,e],t)}async function li(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await ai(t);return n.kind===`success`?D(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function ui(e,t){return oi([`uninstall`,`-y`,e],t)}async function di(e,t){let r=t??{signal:new AbortController().signal,timeoutMs:5e3};try{let i=await ai(r);if(i.kind!==`success`)return{presence:`unknown`};let a=C([...i.value,`show`,e],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stderr:s,stdout:c}=t?await T(a,t):await w(a);if(o===0){let e=mi(c);return e?{presence:`present`,version:e}:{presence:`present`}}return o===1&&hi(s)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function fi(e,t){return(await di(e,t)).presence}async function pi(e,t){return(await di(e,t)).version}function mi(e){for(let t of e.split(/\r?\n/)){let e=/^Version:\s*(.+)\s*$/i.exec(t.trim());if(e?.[1])return e[1].trim()}}function hi(e){let t=e.toLowerCase();return t.includes(`package(s) not found`)||t.includes(`not found`)}const gi={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>pi(e.id,t),install:(e,t)=>si(e.id,t),isAvailable:e=>ft(e),probePackagePresence:(e,t)=>fi(e.id,t),uninstall:(e,t)=>ui(e.id,t),update:(e,t)=>ci(e.id,t),updateMany:(e,t)=>li(e.map(e=>({packageName:e.id})),t)};function _i(e=gi){return M({commands:{install:e=>[`pip`,`install`,e.id],uninstall:e=>[`pip`,`uninstall`,`-y`,e.id],update:e=>[`pip`,`install`,`--upgrade`,e.id],updateMany:e=>[`pip`,`install`,`--upgrade`,...e.map(e=>e.id)]},displayName:`pip`,executable:`pip`,id:`pip`},e)}const vi=_i();function yi(e,t,n,r){return E([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function bi(e,t,n){return yi(`install`,e,t??[],n)}function xi(e,t,n){return yi(`upgrade`,e,t??[],n)}function Si(e,t){return D(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function Ci(e,t){return E([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function wi(e,t){try{let r=C([`uv`,`tool`,`list`],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:i}=t?await T(r,t):await w(r);if(!i.trim())return{presence:`unknown`};let a=Oi(i,e);return a?{presence:`present`,version:a}:Di(i)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Ti(e,t){return(await wi(e,t)).presence}async function Ei(e,t){return(await wi(e,t)).version}function Di(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function Oi(e,t){let n=ki(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(ki(i)===n)return a}}function ki(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}const Ai={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Ei(e.id,t),install:(e,t)=>bi(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>pt(e),probePackagePresence:(e,t)=>Ti(e.id,t),uninstall:(e,t)=>Ci(e.id,t),update:(e,t)=>xi(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>Si(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function ji(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function Mi(e=Ai){return M({commands:{install:e=>ji(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>ji(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const Ni=Mi();function Pi(e,t,n){return E([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function Fi(e,t){return Pi(`install`,e,t)}function Ii(e,t){return Pi(`upgrade`,e,t)}function Li(e,t){return D(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function Ri(e,t){return Pi(`uninstall`,e,t)}async function zi(e,t){try{let r=C([`winget`,`list`,`--id`,e,`-e`],{detached:t!==void 0&&n.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:i,stderr:a,stdout:o}=t?await T(r,t):await w(r);if(i===0){let t=Hi(o,e);return t?{presence:`present`,version:t}:o.toLowerCase().includes(e.toLowerCase())?{presence:`present`}:{presence:`unknown`}}return Ui(a)||Ui(o)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Bi(e,t){return(await zi(e,t)).presence}async function Vi(e,t){return(await zi(e,t)).version}function Hi(e,t){let n=t.toLowerCase();for(let t of e.split(/\r?\n/)){let e=t.trim();if(!e||e.toLowerCase().startsWith(`name`)||e.startsWith(`-`))continue;let r=e.split(/\s{2,}|\t+/).map(e=>e.trim()).filter(Boolean);if(r.length<2)continue;let i=r.findIndex(e=>e.toLowerCase()===n);if(i<0)continue;let a=r[i+1];return a&&a.length>0?a:void 0}}function Ui(e){let t=e.toLowerCase();return t.includes(`no installed package found`)||t.includes(`no package found matching input criteria`)||t.includes(`no installed package matched`)}const Wi={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Vi(e.id,t),install:(e,t)=>Fi(e.id,t),isAvailable:e=>dt(e),probePackagePresence:(e,t)=>Bi(e.id,t),uninstall:(e,t)=>Ri(e.id,t),update:(e,t)=>Ii(e.id,t),updateMany:(e,t)=>Li(e.map(e=>({packageName:e.id})),t)};function Gi(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Ki(e=Wi){return M({commands:{install:e=>Gi(`install`,e),uninstall:e=>Gi(`uninstall`,e),update:e=>Gi(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const qi=Ki(),Ji=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`,`script`,`binary`]),Yi=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Xi={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Zi(e){let t=new Map;for(let n of e){if(t.has(n.id))throw Error(`Duplicate provider adapter id: ${n.id}`);t.set(n.id,n)}let n=Object.freeze([...e]),r=new Map(n.map(e=>[e.id,$i(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function Qi(e){return Zi(Ji.map(t=>{let n=e[t];if(n.id!==t)throw Error(`Provider registry key ${t} does not match adapter id ${n.id}`);return n}))}function $i(e){return Object.freeze(Yi.filter(t=>typeof e[Xi[t]]==`function`))}const ea=Qi({binary:kr,brew:jt,bun:Gn,cargo:or,deno:xr,mise:Wr,npm:ri,pip:vi,script:Or,uv:Ni,winget:qi}),ta=Object.freeze(ea.list().filter(e=>{let t=ea.getCapabilities(e.id);return t.includes(`update`)&&t.includes(`uninstall`)}).map(e=>e.id));function na(e){let t=ea.getCapabilities(e);if(!t.includes(`install`))throw Error(`First-party provider ${e} must implement install`);let n=t.includes(`update`),r=t.includes(`uninstall`);return{canInstall:!0,canLookupLatestVersion:t.includes(`resolve-latest-version`),canUninstall:r,canUpdate:n,lifecycle:n&&r?`managed`:`unmanaged`}}function ra(){return ta}function B(e){return ta.includes(e)}function ia(e){return na(e).lifecycle}function aa(e){return na(e).canUpdate}function oa(e){return na(e).canUninstall}function sa(e){return na(e).canLookupLatestVersion}function ca(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function V(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 la(e){return e?aa(e.installType):!1}function ua(e,t){return la(t)||!!e.selfUpdate}function da(e){return!!e&&sa(e.installType)}function fa(e){return e.length>0&&e.every(e=>sa(e.type))}function pa(e){return B(e.type)?`${ia(e.type)}/${e.type}${ca(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function ma(e){return e?B(e.installType)?`managed via ${e.installType}${ca(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function ha(e,t){let n=Da({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function ga(e,t){if(t.type===`bun`){let n=V(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=V(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=V(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=V(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=V(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=V(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=V(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 _a(e,t,n){if(t)return da(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!fa(n)))return e.packages.npm}function va(e,t){let n=ya(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 ya(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(ba(t))return`npm`}function ba(e){return e.includes(`/node_modules/.bin/`)?!1:e.includes(`/lib/node_modules/`)||e.includes(`/AppData/Roaming/npm/`)||e.includes(`/.nvm/versions/node/`)||e.includes(`/.fnm/node-versions/`)||e.includes(`/.volta/tools/image/node/`)}function xa(e){if(e.installedState)return B(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(B(t.type)&&aa(t.type))return t.type}const Sa={strategy:`managed`,canHandle:e=>!!xa(e),getManagedInstallerType:e=>xa(e)},Ca={strategy:`self-update`,canHandle:e=>!la(e.installedState)&&!!e.agent.selfUpdate},wa={strategy:`manual-hint`,canHandle:()=>!0},Ta=[Sa,Ca,wa];function Ea(e){return Ta.find(t=>t.canHandle(e))??wa}function Da(e){return Ea(e).strategy}function Oa(e){return ua(e.agent,e.installedState)}const H={additionalProperties:!1,properties:{action:{type:`string`},data:{type:`object`},error:{additionalProperties:!1,properties:{code:{type:`string`},message:{type:`string`}},required:[`code`,`message`],type:`object`},exitCode:{type:`integer`},meta:{additionalProperties:!1,properties:{mode:{type:`string`},runId:{type:`string`},schemaVersion:{type:`string`},source:{type:`string`},fetchedAt:{type:`string`},staleAfter:{type:`string`},timestamp:{type:`string`},version:{type:`string`}},required:[`mode`,`runId`,`schemaVersion`,`timestamp`,`version`],type:`object`},ok:{type:`boolean`},target:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},warnings:{items:{additionalProperties:!1,properties:{code:{type:`string`},message:{type:`string`}},required:[`code`,`message`],type:`object`},type:`array`}},required:[`action`,`error`,`meta`,`ok`,`warnings`],type:`object`},U={additionalProperties:!1,properties:{action:{type:`string`},data:{type:`object`},meta:{additionalProperties:!1,properties:{mode:{type:`string`},runId:{type:`string`},schemaVersion:{type:`string`},source:{type:`string`},fetchedAt:{type:`string`},staleAfter:{type:`string`},timestamp:{type:`string`},version:{type:`string`}},required:[`mode`,`runId`,`schemaVersion`,`timestamp`,`version`],type:`object`},target:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},type:{type:`string`}},required:[`action`,`meta`,`type`],type:`object`},W={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},ka={brew:W,bun:W,cargo:W,deno:W,mise:W,npm:W,pip:W,uv:W,winget:W},Aa=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],ja=[{dataSchema:{additionalProperties:!1,properties:{agents:{items:{type:`string`},type:`array`},features:{additionalProperties:!1,properties:{assumeYes:{type:`boolean`},cacheBypass:{type:`boolean`},cacheRefresh:{type:`boolean`},channels:{items:{type:`string`},type:`array`},colorModes:{items:{type:`string`},type:`array`},dryRun:{type:`boolean`},execInstallPolicies:{items:{type:`string`},type:`array`},freshnessMetadata:{type:`boolean`},idempotencyKey:{type:`boolean`},logLevels:{items:{type:`string`},type:`array`},quietLogs:{type:`boolean`},selfUpgrade:{type:`boolean`},timeout:{type:`boolean`}},required:[`assumeYes`,`cacheBypass`,`cacheRefresh`,`channels`,`colorModes`,`dryRun`,`execInstallPolicies`,`freshnessMetadata`,`idempotencyKey`,`logLevels`,`quietLogs`,`selfUpgrade`,`timeout`],type:`object`},installers:{additionalProperties:!1,properties:ka,required:Aa,type:`object`},outputModes:{items:{type:`string`},type:`array`},platform:{additionalProperties:!1,properties:{arch:{type:`string`},os:{type:`string`}},required:[`arch`,`os`],type:`object`}},required:[`agents`,`features`,`installers`,`outputModes`,`platform`],type:`object`},description:`Environment and surface capabilities`,envelopeSchema:H,name:`capabilities`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{commands:{items:{additionalProperties:!1,properties:{flags:{items:{type:`string`},type:`array`},name:{type:`string`},outputSchemaRef:{type:`string`},stability:{type:`string`},summary:{type:`string`}},required:[`flags`,`name`,`outputSchemaRef`,`stability`,`summary`],type:`object`},type:`array`}},required:[`commands`],type:`object`},description:`Stable command catalog`,envelopeSchema:H,name:`commands`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{action:{type:`string`},config:{type:`object`},key:{type:`string`},value:{type:[`number`,`string`]}},required:[`action`],type:`object`},description:`Configuration read or mutation result`,envelopeSchema:H,name:`config`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agents:{items:{additionalProperties:!1,properties:{displayName:{type:`string`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},outdated:{type:`boolean`},sourceLabel:{type:`string`}},required:[`displayName`,`lifecycle`,`outdated`,`sourceLabel`],type:`object`},type:`array`},installers:{additionalProperties:!1,properties:{brew:{type:`boolean`},bun:{type:`boolean`},cargo:{type:`boolean`},deno:{type:`boolean`},mise:{type:`boolean`},npm:{type:`boolean`},pip:{type:`boolean`},uv:{type:`boolean`},winget:{type:`boolean`}},required:Aa,type:`object`},issues:{items:{additionalProperties:!1,properties:{blocking:{type:`boolean`},category:{type:`string`},code:{type:`string`},docsRef:{type:`string`},message:{type:`string`},severity:{type:`string`},subject:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},suggestedAction:{type:`string`},suggestedCommands:{items:{type:`string`},type:`array`}},required:[`blocking`,`category`,`code`,`message`,`severity`,`subject`,`suggestedAction`,`suggestedCommands`],type:`object`},type:`array`},self:{additionalProperties:!1,properties:{canAutoUpdate:{type:`boolean`},currentVersion:{type:`string`},installSource:{type:`string`},latestVersion:{type:`string`},outdated:{type:`boolean`},recoveryHint:{type:`string`}},required:[`canAutoUpdate`,`currentVersion`,`installSource`,`outdated`],type:`object`}},required:[`agents`,`installers`,`issues`,`self`],type:`object`},description:`Diagnostic state and remediation guidance for the current environment`,envelopeSchema:H,name:`doctor`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{binaryName:{type:`string`},displayName:{type:`string`},name:{type:`string`}},required:[`name`],type:`object`},execution:{additionalProperties:!1,properties:{args:{items:{type:`string`},type:`array`},installGuidance:{additionalProperties:!1,properties:{docsRef:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},suggestedAction:{type:`string`},suggestedEnsureCommand:{type:`string`},suggestedExecCommand:{type:`string`}},required:[`docsRef`,`installMethods`,`suggestedAction`,`suggestedEnsureCommand`,`suggestedExecCommand`],type:`object`},installPolicy:{type:`string`},installed:{type:`boolean`},interactive:{type:`boolean`},launched:{type:`boolean`}},required:[`args`,`installPolicy`,`installed`,`interactive`,`launched`],type:`object`}},required:[`agent`,`execution`],type:`object`},description:`Preflight contract for managed agent execution`,envelopeSchema:H,name:`exec`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},installState:{type:`object`},installed:{type:`boolean`}},required:[`agent`,`changed`,`installed`],type:`object`},description:`Ensure result for an agent`,envelopeSchema:H,name:`ensure`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{aliases:{items:{type:`string`},type:`array`},binaryName:{type:`string`},displayName:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},name:{type:`string`},packageName:{type:`string`},selfUpdateCommands:{items:{type:`string`},type:`array`}},required:[`aliases`,`binaryName`,`displayName`,`installMethods`,`name`,`selfUpdateCommands`],type:`object`},inspection:{additionalProperties:!1,properties:{binaryPath:{type:`string`},installed:{type:`boolean`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},sourceLabel:{type:`string`}},required:[`installed`,`lifecycle`],type:`object`}},required:[`agent`,`inspection`],type:`object`},description:`Human-friendly details for an agent`,envelopeSchema:H,name:`info`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},capabilities:{type:`object`},inspection:{type:`object`}},required:[`agent`,`capabilities`,`inspection`],type:`object`},description:`Structured inspection result for an agent`,envelopeSchema:H,name:`inspect`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},installState:{type:`object`},installed:{type:`boolean`},results:{items:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},error:{type:`object`},input:{type:`string`},installState:{type:`object`},installed:{type:`boolean`},ok:{type:`boolean`},status:{type:`string`},warnings:{items:{type:`object`},type:`array`}},required:[`agent`,`changed`,`input`,`installed`,`ok`,`status`,`warnings`],type:`object`},type:`array`},scope:{type:`string`},summary:{type:`object`}},type:`object`},description:`Install result for one or more agents`,envelopeSchema:H,name:`install`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agents:{items:{additionalProperties:!1,properties:{binaryName:{type:`string`},displayName:{type:`string`},installed:{type:`boolean`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},name:{type:`string`},sourceLabel:{type:`string`},updateLabel:{type:`string`}},required:[`binaryName`,`displayName`,`installed`,`lifecycle`,`name`,`sourceLabel`,`updateLabel`],type:`object`},type:`array`}},required:[`agents`],type:`object`},description:`Supported agent catalog`,envelopeSchema:H,name:`list`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},resolution:{additionalProperties:!1,properties:{binaryPath:{type:`string`},installGuidance:{additionalProperties:!1,properties:{docsRef:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},suggestedAction:{type:`string`},suggestedEnsureCommand:{type:`string`}},required:[`docsRef`,`installMethods`,`suggestedAction`,`suggestedEnsureCommand`],type:`object`},installed:{type:`boolean`},installSource:{type:`string`},installedVersion:{type:`string`},lifecycle:{type:`string`},sourceLabel:{type:`string`},suggestedLaunchCommand:{items:{type:`string`},type:`array`}},required:[`binaryPath`,`installed`,`installSource`,`lifecycle`,`sourceLabel`,`suggestedLaunchCommand`],type:`object`}},required:[`agent`,`resolution`],type:`object`},description:`Resolved executable entrypoint for an agent`,envelopeSchema:H,name:`resolve`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{commands:{items:{additionalProperties:!1,properties:{dataSchema:{type:`object`},description:{type:`string`},envelopeSchema:{type:`object`},name:{type:`string`},ndjsonEventSchema:{type:`object`}},required:[`dataSchema`,`description`,`envelopeSchema`,`name`],type:`object`},type:`array`}},required:[`commands`],type:`object`},description:`Structured schema catalog`,envelopeSchema:H,name:`schema`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{results:{items:{additionalProperties:!1,properties:{displayName:{type:`string`},hint:{type:`string`},installedVersion:{type:`string`},latestVersion:{type:`string`},message:{type:`string`},name:{type:`string`},resource:{type:`string`},status:{type:`string`},strategy:{type:`string`}},required:[`displayName`,`name`,`status`],type:`object`},type:`array`},scope:{type:`string`}},required:[`results`,`scope`],type:`object`},description:`Update result for one or all agents`,envelopeSchema:H,name:`update`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{displayName:{type:`string`},name:{type:`string`}},required:[`displayName`,`name`],type:`object`},changed:{type:`boolean`}},required:[`agent`,`changed`],type:`object`},description:`Uninstall result for an agent`,envelopeSchema:H,name:`uninstall`,ndjsonEventSchema:U},{dataSchema:{additionalProperties:!1,properties:{canAutoUpdate:{type:`boolean`},channel:{type:`string`},currentVersion:{type:`string`},installSource:{type:`string`},latestVersion:{type:`string`},recoveryHint:{type:`string`},status:{type:`string`}},required:[`canAutoUpdate`,`channel`,`currentVersion`,`installSource`,`status`],type:`object`},description:`Quantex self-upgrade status`,envelopeSchema:H,name:`upgrade`,ndjsonEventSchema:U}],Ma=[{description:`Output structured JSON`,flags:`--json`,id:`json`,value:`boolean`},{description:`Output mode: human, json, or ndjson`,flags:`--output <mode>`,id:`output`,value:`string`},{description:`Disable interactive prompts and confirmations`,flags:`--non-interactive`,id:`nonInteractive`,value:`boolean`},{description:`Automatically accept safe default confirmations`,flags:`--yes`,id:`yes`,value:`boolean`},{description:`Suppress non-essential human logs`,flags:`--quiet`,id:`quiet`,value:`boolean`},{description:`Color mode: auto, always, or never`,flags:`--color <mode>`,id:`color`,value:`string`},{description:`Log level: silent, error, warn, info, or debug`,flags:`--log-level <level>`,id:`logLevel`,value:`string`},{description:`Show what would happen without making changes`,flags:`--dry-run`,id:`dryRun`,value:`boolean`},{description:`Refresh cached version metadata before returning results`,flags:`--refresh`,id:`refresh`,value:`boolean`},{commanderProperty:`cache`,description:`Bypass the local version cache for this command`,flags:`--no-cache`,id:`noCache`,negateCommanderValue:!0,value:`boolean`},{description:`Attach a run id to structured output and logs`,flags:`--run-id <id>`,id:`runId`,value:`string`},{description:`Deduplicate repeated mutating requests by client-supplied key`,flags:`--idempotency-key <key>`,id:`idempotencyKey`,value:`string`},{description:`Abort a command after the given duration, e.g. 500ms, 30s, 5m`,flags:`--timeout <duration>`,id:`timeout`,value:`string`}],Na=new Map(Ma.map(e=>[e.id,e])),Pa=new Map(ja.map(e=>[e.name,e])),Fa=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],Ia=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],La=[G({aliases:[],description:`查看当前环境与 surface 能力`,effects:[`filesystem`,`network`,`process`],globalOptions:[`json`,`output`,`nonInteractive`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],name:`capabilities`,summary:`Return environment and surface capabilities`}),G({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),G({aliases:[],arguments:[{description:`Action: get, set, reset`,name:`action`,syntax:`[action]`},{description:`Config key`,name:`key`,syntax:`[key]`},{description:`Config value`,name:`value`,syntax:`[value]`}],catalogTokens:[`get`,`set`,`reset`],description:`配置管理`,effects:[`filesystem`,`mutation`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`config`,summary:`Read and modify Quantex configuration`}),G({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:Fa,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),G({aliases:[],allowUnknownOptions:!0,arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`},{description:`Arguments passed through to the agent`,name:`args`,syntax:`[args...]`}],description:`以显式策略启动 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:[`nonInteractive`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`output`],name:`exec`,options:[{defaultValue:`never`,description:`Install policy: never, if-missing, always`,flags:`--install <policy>`,id:`install`,value:`string`}],summary:`Run an agent with explicit install policy`}),G({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Ia,name:`ensure`,summary:`Ensure an agent is installed`}),G({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:Fa,name:`info`,summary:`Show human-friendly agent details`}),G({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:Fa,name:`inspect`,summary:`Return structured agent state`}),G({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Ia,name:`install`,summary:`Install one or more agents`}),G({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:Fa,name:`list`,summary:`List supported agents`}),G({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:Fa,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),G({aliases:[],arguments:[{description:`Optional command name`,name:`command`,syntax:`[command]`}],description:`查看结构化输出 schema`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`schema`,summary:`Return structured output schemas`}),G({aliases:[`u`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`[agent]`}],description:`更新指定 agent`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`update`,options:[{description:`Update all installed agents`,flags:`--all`,id:`all`,value:`boolean`}],summary:`Update one or all agents`}),G({aliases:[`rm`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`卸载指定 agent`,effects:[`filesystem`,`mutation`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],name:`uninstall`,summary:`Uninstall an agent`}),G({aliases:[],description:`升级 Quantex CLI`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`upgrade`,options:[{description:`Only check whether an update is available`,flags:`--check`,id:`check`,value:`boolean`},{description:`Update channel: stable or beta`,flags:`--channel <channel>`,id:`channel`,value:`string`}],summary:`Upgrade Quantex CLI itself`})];function Ra(){return La}function za(){return Ma}function Ba(e){let t={...e};for(let n of Ma){let r=n.commanderProperty??n.id;r in e&&(t[n.id]=n.negateCommanderValue?e[r]===!1:e[r],r!==n.id&&delete t[r])}return t}function Va(e){return{flags:Wa(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function Ha(e,t){let n=new Set,r=new Set;for(let t of e){if(n.has(t.name))throw Error(`Duplicate command name: ${t.name}`);n.add(t.name)}for(let t of e){let e=new Set,i=new Set,a=new Set,o=new Set;for(let e of t.aliases){if(n.has(e))throw Error(`Command alias collides with command name: ${e}`);if(r.has(e))throw Error(`Duplicate command alias: ${e}`);r.add(e)}for(let n of t.effects){if(e.has(n))throw Error(`Duplicate command effect: ${n}`);e.add(n)}for(let[e,n]of t.arguments.entries()){if(i.has(n.name))throw Error(`Duplicate command argument: ${t.name} ${n.name}`);if(i.add(n.name),n.syntax.includes(`...`)&&e!==t.arguments.length-1)throw Error(`Variadic command argument must be last: ${t.name} ${n.name}`)}let s=new Set;for(let e of t.globalOptions){let n=Na.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=K(n.flags);if(s.has(r))throw Error(`Duplicate command global option: ${t.name} ${r}`);s.add(r)}for(let e of t.options){let n=K(e.flags);if(a.has(n))throw Error(`Duplicate command option: ${t.name} ${n}`);if(o.has(e.id))throw Error(`Duplicate command option id: ${t.name} ${e.id}`);if(s.has(n))throw Error(`Command option duplicates global option: ${t.name} ${n}`);Ga(e,t.name),a.add(n),o.add(e.id)}if((t.globalOptions.includes(`dryRun`)||t.globalOptions.includes(`idempotencyKey`)||t.options.some(e=>e.id===`dryRun`||e.id===`idempotencyKey`))&&!e.has(`mutation`)){let e=t.globalOptions.includes(`dryRun`)?`--dry-run`:`--idempotency-key`;throw Error(`Command effect mismatch: ${t.name} exposes ${e} without mutation`)}let c=Wa(t);if(c.length!==t.flags.length||c.some((e,n)=>e!==t.flags[n]))throw Error(`Command discovery option mismatch: ${t.name}`)}for(let t of e){if(!n.has(t.handlerId))throw Error(`Unresolved command handler: ${t.handlerId}`);if(!n.has(t.presenterId))throw Error(`Unresolved command presenter: ${t.presenterId}`)}let i=new Set(t);for(let t of e){if(!i.has(t.schemaName))throw Error(`Missing command schema: ${t.schemaName}`);if(t.schema.name!==t.schemaName)throw Error(`Command schema mismatch: ${t.name} ${t.schema.name}`)}}function G(e){let t=Ua(e.name),n={...e,arguments:e.arguments??[],catalogTokens:e.catalogTokens??[],flags:[],handlerId:e.name,options:e.options??[],presenterId:e.name,schema:t,schemaName:e.name,stability:`stable`};return{...n,flags:Wa(n)}}function Ua(e){let t=Pa.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function Wa(e){return[...e.catalogTokens,...e.options.map(e=>K(e.flags)),...e.globalOptions.map(t=>{let n=Na.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return K(n.flags)})]}function K(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function Ga(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${K(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${K(e.flags)}`)}const Ka=new Map(Ra().map(e=>[e.name,Xa(e.presenterId)]));function qa(e){return Ka.get(e)}function Ja(e,t,n,r,i,a){if(t===`json`){i(e?.serializeJson(n)??JSON.stringify(n,null,2));return}if(t===`ndjson`){a(e?.toResultEvent(n)??Za(n));return}e?e.presentHuman(n,r):r(n)}function Ya(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function Xa(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:Za}}function Za(e){return{action:e.action,data:e,target:e.target,type:`result`}}const q=`quantex-cli`,Qa=`https://github.com/Drswith/quantex-cli`,$a=`1.1.3`;function eo(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function to(e=n.execPath){if(u(eo(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 no(e=n.execPath){let t=to(e);if(t)return`${Qa}/releases/latest/download/${t}`}function ro(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 io(e,t,n){let r=await un(await ao(e,t,n),`self:manifest:${e}`,{context:t,networkPort:n});if(!r)throw Error(`Failed to download release manifest.`);return r}async function ao(e,t,n){if(e===`stable`)return`${Qa}/releases/latest/download/manifest.json`;let r=(await oo(e,t,n)).assets.find(e=>e.name===`manifest.json`);if(!r?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return r.browser_download_url}async function oo(e,t,n){let r=co();if(!r)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let i=await un(`https://api.github.com/repos/${r}/releases?per_page=20`,`self:github-releases`,{context:t,networkPort:n});if(!i)throw Error(`Failed to query GitHub releases.`);let a=i.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!a)throw Error(`No GitHub release was found for the ${e} channel.`);return a}function so(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=to(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function co(){return Qa.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var lo=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 uo(e){return e instanceof lo}function fo(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 p(I(),`locks`,...r,i)}async function J(e){let t=fo(e.scope);return await ne(f(t),{recursive:!0}),await po(e.resource,t),async()=>{await v(t,{force:!0,recursive:!0})}}async function po(e,t){try{c(t,{recursive:!1}),mo(t);return}catch(e){if(!yo(e))throw e}if(!await ho(t))throw new lo(e,t);try{c(t,{recursive:!1}),mo(t)}catch(n){throw yo(n)?new lo(e,t):n}}function mo(e){l(p(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function ho(e){let t;try{t=await go(e)}catch{return!1}return t&&vo(t.pid)?!1:(await v(e,{force:!0,recursive:!0}),!0)}async function go(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await _o(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await _o(e)}async function _o(e){try{let t=await _(p(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(bo(e))return;throw e}}function vo(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function yo(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function bo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function xo(e,t){let n=await J(e);try{return await t()}finally{await n()}}var Y=class extends Error{constructor(e){super(e),this.name=`StateSchemaError`}};const So=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function Co(){return{installedAgents:{},lifecycleReceipts:{},schemaVersion:2,self:{}}}function X(e){if(!Lo(e))throw new Y(`root value must be an object.`);let t=e.schemaVersion===void 0?`legacy`:`current`;if(t===`current`&&e.schemaVersion!==2)throw new Y(`unsupported schemaVersion "${String(e.schemaVersion)}".`);return{document:{installedAgents:Oo(e.installedAgents),lifecycleReceipts:t===`current`?Do(e.lifecycleReceipts):{},schemaVersion:2,self:Ao(e.self)},source:t}}function wo(e){return{installedAgents:e.installedAgents,self:e.self}}function To(e,t){let n=X(t).document;return{installedAgents:n.installedAgents,lifecycleReceipts:e.lifecycleReceipts,schemaVersion:2,self:n.self}}function Eo(e,t){if(!Lo(t))throw new Y(`lifecycle receipt "${e}" must be an object.`);if(t.kind!==`lifecycle-receipt`)throw new Y(`lifecycle receipt "${e}" has an invalid kind.`);if(t.schemaVersion!==1)throw new Y(`lifecycle receipt "${e}" has an unsupported schemaVersion.`);if(!Z(t.targetId)||t.targetId!==e)throw new Y(`lifecycle receipt "${e}" has an invalid targetId.`);if(!Z(t.providerId))throw new Y(`lifecycle receipt "${e}" has an invalid providerId.`);if(!Z(t.providerTargetId))throw new Y(`lifecycle receipt "${e}" has an invalid providerTargetId.`);if(t.providerTargetKind!==void 0&&!No(t.providerTargetKind))throw new Y(`lifecycle receipt "${e}" has an invalid providerTargetKind.`);if(!Fo(t.verifiedAt))throw new Y(`lifecycle receipt "${e}" has an invalid verifiedAt.`);return{...Z(t.executableName)?{executableName:t.executableName}:{},...Z(t.executablePath)?{executablePath:t.executablePath}:{},kind:`lifecycle-receipt`,providerId:t.providerId,providerTargetId:t.providerTargetId,...No(t.providerTargetKind)?{providerTargetKind:t.providerTargetKind}:{},schemaVersion:1,targetId:e,verifiedAt:t.verifiedAt,...Z(t.version)?{version:t.version}:{}}}function Do(e){if(!Lo(e))throw new Y(`lifecycleReceipts must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Eo(e,t)]))}function Oo(e){if(e===void 0)return{};if(!Lo(e))throw new Y(`installedAgents must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,ko(e,t)]))}function ko(e,t){if(!Lo(t))throw new Y(`installed agent "${e}" must be an object.`);if(t.agentName!==e)throw new Y(`installed agent "${e}" has an invalid agentName.`);if(!jo(t.installType))throw new Y(`installed agent "${e}" has an invalid installType.`);let n={agentName:e,installType:t.installType};if(typeof t.binaryName==`string`&&(n.binaryName=t.binaryName),Array.isArray(t.packageInstallArgs)&&t.packageInstallArgs.every(Io)&&(n.packageInstallArgs=t.packageInstallArgs),typeof t.packageName==`string`){if(t.packageName.length===0&&B(t.installType))throw new Y(`installed agent "${e}" has an empty packageName.`);n.packageName=t.packageName}return Mo(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function Ao(e){if(!Lo(e))return{};let t={...e};return Po(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 jo(e){return typeof e==`string`&&So.has(e)}function Mo(e){return e===`package`||e===`cask`||e===`id`}function No(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function Po(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function Z(e){return typeof e==`string`&&e.length>0}function Fo(e){return Z(e)&&Number.isFinite(Date.parse(e))}function Io(e){return typeof e==`string`}function Lo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Ro=class extends Error{backupFilePath;primaryError;recoveryError;constructor(e){super(`Failed to restore the original Quantex state after a persistence failure.`,{cause:e.recoveryError}),this.name=`StateRecoveryError`,this.backupFilePath=e.backupFilePath,this.primaryError=e.primaryError,this.recoveryError=e.recoveryError}},zo=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:Vo(e)}async save(e){let t=X(e);if(t.source!==`current`)throw Error(`Refusing to persist an unversioned state document.`);let{backupFilePath:n,directoryPath:r,stateFilePath:i,tempFileSuffix:a}=this.options,o=`${n}.tmp-${a}`,s=`${i}.tmp-${a}`,c=`${i}.restore-${a}`,l=await this.readOptional(i),u=l===void 0?void 0:X(Vo(l)),d=`${JSON.stringify(t.document,null,2)}\n`,f=!1;await this.options.fileSystem.makeDirectory(r);try{l!==void 0&&u?.source===`legacy`&&(await this.options.fileSystem.writeText(o,l),await this.validateBackup(o,l),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,l)),await this.options.fileSystem.writeText(s,d),Ho(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),f=!0,Ho(await this.options.fileSystem.readText(i))}catch(e){let t;try{f&&await this.restoreOriginal(l,c,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,s,c)}throw t===void 0?e:new Ro({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,s,c)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(Uo(e))return;throw e}}async validateBackup(e,t){let n=await this.options.fileSystem.readText(e);if(n!==t)throw Error(`State migration backup does not match the original state.`);X(Vo(n))}async restoreOriginal(e,t,n){if(e===void 0){if(await this.options.fileSystem.remove(n),await this.readOptional(n)!==void 0)throw Error(`New state remained after rollback removal.`);return}await this.options.fileSystem.writeText(t,e),await this.options.fileSystem.rename(t,n);let r=await this.options.fileSystem.readText(n);if(r!==e)throw Error(`Restored state does not match the original state.`);X(Vo(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},Bo=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?Co():X(e).document}async loadProjection(){return wo(await this.loadDocument())}async saveProjection(e){let t=To(await this.loadDocument(),e);await this.persistence.save(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=Eo(e.targetId,e),n=await this.loadDocument(),r=X({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.persistence.save(r.document)}async setAgentLifecycleEvidence(e,t){let n=Eo(t.targetId,t);if(e.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let r=await this.loadDocument(),i=X({...r,installedAgents:{...r.installedAgents,[e.agentName]:e},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}});if(i.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.persistence.save(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.persistence.save({...t,lifecycleReceipts:n})}};function Vo(e){return JSON.parse(e)}function Ho(e){if(X(Vo(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function Uo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}var Q=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const Wo={installedAgents:{},self:{}};function Go(){return p(I(),`state.json`)}async function Ko(){return os()}async function qo(e){let t=await J({resource:`state`,scope:[`state`]});try{await ss(e)}finally{await t()}}async function Jo(e){return(await Ko()).installedAgents[e]}async function Yo(e){try{return await ls().getReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to read Quantex state file.`,{cause:e})}}async function Xo(e){let t=await J({resource:`state`,scope:[`state`]});try{await ls().setReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function Zo(e,t){let n=await J({resource:`state`,scope:[`state`]});try{await ls().setAgentLifecycleEvidence(e,t)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await n()}}async function Qo(e){let t=await J({resource:`state`,scope:[`state`]});try{await ls().removeReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const $o=Object.freeze({read:Yo,remove:Qo,write:Xo});async function es(e){await ds(t=>{t.installedAgents[e.agentName]=e})}async function ts(e){await ds(t=>{delete t.installedAgents[e]})}async function ns(){return(await Ko()).self}async function rs(e){await ds(t=>{t.self.installSource=e})}async function is(){await ds(e=>{delete e.self.installSource})}async function as(e,t){await ds(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function os(){try{return await ls().loadProjection()}catch(e){if(us(e))return{...Wo};throw e instanceof Q?e:e instanceof Y?new Q(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new Q(`Failed to read Quantex state file.`,{cause:e})}}async function ss(e){try{await ls().saveProjection(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}}const cs={async makeDirectory(e){await ne(e,{recursive:!0})},async readText(e){return _(e,`utf8`)},async remove(e){await v(e,{force:!0})},async rename(e,t){await ae(e,t)},async writeText(e,t){await se(e,t,`utf8`)}};function ls(){let e=Go();return new Bo(new zo({backupFilePath:`${e}.v1.bak`,directoryPath:I(),fileSystem:cs,stateFilePath:e,tempFileSuffix:String(n.pid)}))}function us(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function ds(e){let t=await J({resource:`state`,scope:[`state`]});try{let t=await os();await e(t),await ss(t)}finally{await t()}}const fs=`self:install-source`,ps={clearInstallSource:is,getSelfState:ns,setInstallSource:rs};function ms(e=ps){return{async load(t){let n=hs(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return _s(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return ys(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=hs(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),_s(void 0)}catch(e){return ys(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=hs(t.key,t.signal);if(n)return n;if(!gs(t.value))return vs({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),_s({})}catch(e){return ys(`Failed to persist the self install source.`,e)}}}}function hs(e,t){if(t.aborted)return vs({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return vs({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function gs(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function _s(e){return{kind:`success`,value:e}}function vs(e){return{error:e,kind:`failure`}}function ys(e,t){return vs({details:{cause:t},kind:`failed`,message:e})}const bs=q,xs=`/node_modules/${bs}`;async function Ss(e){return ws(e,!0)}async function Cs(e){return ws(e,!1)}async function ws(e,t){let r=await js(),i=n.execPath,a=r.foundPackageJson?As(r.packageRoot):As(``,i),o=e?.persistence??ms(),s=e?.signal??new AbortController().signal,c=await Os(o,s),l=t?await Ds(c,a,{persistence:o,signal:s}):Ts(c,a),u=await tn(),d=ro(e?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:Es(l),currentVersion:r.version||`1.1.3`,executablePath:i,installSource:l,packageRoot:r.packageRoot,updateChannel:d}}function Ts(e,t){return t===`unknown`?e??t:t}function Es(e){return e===`binary`||e===`bun`||e===`npm`}async function Ds(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??ms()).save({key:fs,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&ks(e.error),t}return Ts(e,t)}async function Os(e,t){let n=await e.load({key:fs,signal:t});if(n.kind===`failure`&&ks(n.error),n.value.kind===`missing`)return;let r=n.value.snapshot.value;if(r===`binary`||r===`bun`||r===`npm`||r===`source`||r===`unknown`)return r;throw Error(`The persisted self install source is invalid.`)}function ks(e){let t=e.details?.cause;throw t instanceof Error?t:e.kind===`cancelled`?new x({kind:`cancelled`,reason:e.message}):e.kind===`timed-out`?new x({kind:`timed-out`,timeoutMs:0}):Error(e.message)}function As(e,t=n.execPath){let r=Ps(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(xs)?`npm`:r?`source`:Fs(t)?`binary`:`unknown`}async function js(e=import.meta.url){let t=Is(e),n=f(t);for(;;){let e=p(n,`package.json`),t=await Ns(e);if(t?.name===bs)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.1.3`};let r=f(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:p(f(t),`package.json`),packageRoot:f(t),version:$a}}function Ms(){return $a}async function Ns(e){try{return JSON.parse(await _(e,`utf8`))}catch{return}}function Ps(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Fs(e){let t=u(Ps(e));return t!==`bun`&&t!==`bun.exe`}function Is(e){try{return le(e)}catch{return n.execPath}}async function Ls(){try{return await J({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(uo(e))return;throw e}}function Rs(){return{async acquire(e){if(e.signal.aborted)return zs(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return zs(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await Ls();if(!t)return zs(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),zs(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);let n=!1;return{kind:`success`,value:{async release(){if(n)return{kind:`success`,value:void 0};n=!0;try{return await t(),{kind:`success`,value:void 0}}catch(e){return zs(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function zs(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function Bs(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=F(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 Vs(e,r,i)||{isOverride:!1,registry:Mt,source:`fallback`}}async function Vs(e,t,n){if(e===`bun`){let e=Hs(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await Us(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=Hs(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Gs(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function Hs(e,t){for(let n of t){let t=F(e[n]);if(t)return t}}async function Us(e,t){let n=Js(t),r=t.XDG_CONFIG_HOME,i=qs(e,`bunfig.toml`),a=[p(n,`.bunfig.toml`),r?p(r,`.bunfig.toml`):void 0];if(i){let e=await Ws(i);if(e)return e}for(let e of a){if(!e||!s(e))continue;let t=await Ws(e);if(t)return t}}async function Ws(e){try{return Ys(await _(e,`utf8`))}catch{return}}async function Gs(e,t){let n=Js(t),r=qs(e,`.npmrc`),i=p(n,`.npmrc`);if(r){let e=await Ks(r);if(e)return e}if(s(i))return Ks(i)}async function Ks(e){try{let t=(await _(e,`utf8`)).split(`
|
|
8
|
+
`).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=F(r[1]);if(i)return i}}catch{}}function qs(e,t){let n=e;for(;;){let e=p(n,t);if(s(e))return e;let r=f(n);if(r===n)return;n=r}}function Js(e){return e.HOME||e.USERPROFILE||ce()}function Ys(e){let t=Xs(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 F(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return F(Xs(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Xs(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function Zs(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function Qs(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function $s(e,t){if(nc(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||Tn(e.targetVersion,e.targetVersion)!==0)&&!(!rc(e.fetchedAtMs)||!rc(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function ec(e){let t=await e.cache.read({key:Zs(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return $s(t.value.value,e)}function tc(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:Zs(e.metadata),signal:e.signal,value:e.metadata})}function nc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function rc(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function ic(e,t,n){let r=await tn();if(e.installSource===`binary`)try{let r=t?await io(e.updateChannel,t,n):await io(e.updateChannel,void 0,n),i=so(r,e.executablePath);return i?{binaryAsset:i,targetVersion:r.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch(t){if(S(t))throw t;return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let i=e.updateChannel===`beta`?`beta`:`latest`,a=await On(q,i,{...t?{context:t}:{},networkPort:n,registry:Mt});if(e.installSource===`bun`||e.installSource===`npm`){let o=await Bs(e.installSource,r);return{managedRegistry:o?.registry,managedRegistryIsOverride:o?.isOverride??!1,packageTag:i,targetVersion:await On(q,i,{...t?{context:t}:{},networkPort:n,registry:o?.registry}),upstreamLatestVersion:a,verificationCommand:fc(e.packageRoot)}}return{packageTag:i,targetVersion:a,upstreamLatestVersion:a}}async function ac(e){let t=e?.facts??await Ss({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await ic(t,e?.context,e?.networkPort),r=n.targetVersion?En(n.targetVersion,t.currentVersion):!1,i={facts:t,status:lc(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await tn()).versionCacheTtlHours*60*60*1e3;await tc({cache:e.metadataCache,metadata:Qs({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function oc(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 sc(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await uc(e,n);if(!r)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 i=t.newVersion??e.target.targetVersion;return i&&r!==i?{error:{detail:{expectedVersion:i,observedVersion:r},kind:`verify`,message:`Managed self-upgrade installed version ${r}, but expected ${i}.`},installSource:e.facts.installSource,success:!1}:!i&&r===e.facts.currentVersion&&e.target.targetVersion!==void 0?{error:{detail:{observedVersion:r},kind:`verify`,message:`Managed self-upgrade completed without changing the installed Quantex version.`},installSource:e.facts.installSource,success:!1}:{...t,newVersion:r}}function cc(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:fc(e.packageRoot)},r=e.latestVersion?En(e.latestVersion,e.currentVersion):!1;return{facts:t,status:lc(t,n,r),target:n,updateAvailable:r}}function lc(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function uc(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await dc(e.target.verificationCommand,r);if(t)return t}return dc([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await Dn(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return Dn(e.facts.executablePath)}async function dc(e,t){let n=await t.process.run({argv:e,signal:t.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:t.timeoutMs});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return}if(n.value.exitCode!==0||!n.value.stdout)return;let r=new TextDecoder().decode(n.value.stdout).trim().split(`
|
|
9
|
+
`)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function fc(e){if(e)return[n.execPath,p(e,`dist`,`cli.mjs`),`--version`]}async function pc(e,t,r,i,a=_c(t),o){let s=o?.networkPort,c=s&&o?await gc(e,{...o,networkPort:s}):await hc(e);if(c.kind===`failure`)return c.result;let l=c.binary;mc(o);let d=await re(p(f(t),`.quantex-upgrade-`)),m=p(d,u(t)),h=`${t}.bak`,g=!1,te=!1;try{mc(o);let s=await vc(t),c=Tc(l);if(c!==Ec(r))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${Ec(r)}, got ${c}.`);if(await se(m,l),mc(o),n.platform===`win32`){let e=yc(m,t,h,d,i,a);return te=e.success,e}await ee(m,s),mc(o),await v(h,{force:!0}),await ae(t,h),g=!0,await ae(m,t);let u=await wc(t,i,o);return u.success?(g=!1,await v(h,{force:!0}),{success:!0}):(await Cc(h,t),g=!1,u)}catch(e){if(g){try{await Cc(h,t)}catch{}g=!1}if(e instanceof x)throw e;return $(Sc(e),`Failed to replace the current Quantex binary.`,e)}finally{(n.platform!==`win32`||!te)&&await v(d,{recursive:!0,force:!0})}}function mc(e){if(e?.signal.aborted)throw new x({kind:`cancelled`,reason:e.signal.reason instanceof Error?e.signal.reason.message:String(e.signal.reason??``)})}async function hc(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:ue.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function gc(e,t){let n=await t.networkPort.request({signal:t.signal,timeoutMs:t.timeoutMs,url:e});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,n.error)}}return n.value.status<200||n.value.status>=300?{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${n.value.status}.`)}:{binary:ue.from(n.value.body),kind:`success`}}function _c(e){if(n.platform!==`win32`)return;let t=m.basename(e).toLowerCase();if(t===`qtx.exe`)return m.join(m.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return m.join(m.dirname(e),`qtx.exe`)}async function vc(e){try{return(await oe(e)).mode&511}catch{return 493}}function yc(e,t,r,i,a,o){try{return C([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,bc(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return $(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function bc(e,t,n,r,i,a,o){let s=xc(e),c=xc(t),l=xc(n),u=xc(r),d=xc(a??``),f=xc(o??``);return[`$ErrorActionPreference = 'Stop'`,`$pidToWait = ${i}`,`$tempPath = '${s}'`,`$targetPath = '${c}'`,`$backupPath = '${l}'`,`$tempDir = '${u}'`,`$expectedVersion = '${d}'`,`$peerPath = '${f}'`,`while (Get-Process -Id $pidToWait -ErrorAction SilentlyContinue) { Start-Sleep -Milliseconds 200 }`,`$backupReady = $false`,`for ($attempt = 0; $attempt -lt 50; $attempt++) {`,` try {`,` if (Test-Path -LiteralPath $backupPath) { Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue }`,` Move-Item -LiteralPath $targetPath -Destination $backupPath -Force -ErrorAction Stop`,` $backupReady = $true`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`if (-not $backupReady) {`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`try {`,` Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`}`,`catch {`,` if (Test-Path -LiteralPath $backupPath) {`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force -ErrorAction SilentlyContinue`,` }`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`if ($expectedVersion -ne '') {`,` $output = & $targetPath --version 2>$null`,` if ($LASTEXITCODE -ne 0 -or ($output -notmatch [regex]::Escape($expectedVersion))) {`,` Remove-Item -LiteralPath $targetPath -Force -ErrorAction SilentlyContinue`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,` }`,`}`,`if ($peerPath -ne '') {`,` Copy-Item -LiteralPath $targetPath -Destination $peerPath -Force`,`}`,`Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue`,`Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`].join(`; `)}function xc(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Sc(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 Cc(e,t){await v(t,{force:!0}),await ae(e,t)}async function wc(e,t,n){if(!t)return{success:!0};try{if(n?.processPort){let r=await n.processPort.run({argv:[e,`--version`],signal:n.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:n.timeoutMs});if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:n.timeoutMs??0});return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,r.error)}let i=r.value.stdout?new TextDecoder().decode(r.value.stdout):``;return r.value.exitCode===0?i.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${r.value.exitCode} during verification.`)}let{exitCode:r,stdout:i}=await w(C([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return r===0?i.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${r} during verification.`)}catch(e){if(e instanceof x)throw e;return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function Tc(t){return e(`sha256`).update(t).digest(`hex`)}function Ec(e){return e.trim().toLowerCase()}const Dc={source:`binary`,canHandle:e=>Oc(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):no(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,t){let n=e.target.binaryAsset;if(!n)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 r=_c(e.facts.executablePath),i=t?await pc(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r,{networkPort:t.network,processPort:t.process,signal:t.signal,timeoutMs:t.timeoutMs}):await pc(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r);return{...!i.success&&i.error?{...i,error:{...i.error,detail:{...typeof i.error.detail==`object`&&i.error.detail?i.error.detail:{},downloadUrl:n.downloadUrl}}}:i,installSource:e.facts.installSource,newVersion:i.success?e.target.targetVersion:void 0}}};function Oc(e){return`facts`in e?e.facts.installSource:e.installSource}async function kc(e,t){return t.process?(await jc(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function Ac(e,t,n){if(!await kc(e,n))return!1;let r=await jc([`bun`,`pm`,`-g`,`untrusted`],n,{forwardPipedOutput:!1,stdio:[`ignore`,`pipe`,`pipe`]});return!r||r.exitCode!==0?!1:Zt(r.stdout?new TextDecoder().decode(r.stdout):``).has(t)?kc([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function jc(e,t,n){if(!t.process)return;let r=await t.process.run({argv:e,forwardPipedOutput:n.forwardPipedOutput,signal:t.signal,stdio:n.stdio,timeoutMs:t.timeoutMs});if(r.kind===`success`)return r.value;if(r.error.kind===`cancelled`)throw new x({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0})}const Mc={source:`bun`,canHandle:e=>Nc(e)===`bun`,getRecoveryHint:e=>`bun add -g ${q}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await Ac([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${q}@${n}`],q,t):await Pt(q,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${q} through Bun.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function Nc(e){return`facts`in e?e.facts.installSource:e.installSource}const Pc={source:`npm`,canHandle:e=>Fc(e)===`npm`,getRecoveryHint:e=>`npm install -g ${q}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await kc([`npm`,`install`,`-g`,`${q}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await Gr(q,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${q} through npm.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function Fc(e){return`facts`in e?e.facts.installSource:e.installSource}const Ic={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}}},Lc=[Mc,Pc,Dc,Ic];function Rc(e){return Lc.find(t=>t.canHandle(e))??Ic}function zc(e,t,n=`stable`){return Rc({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function Bc(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:zc(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Vc(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Rc(e).getRecoveryHint(e,t)}async function Hc(e){return oc(await ac({updateChannel:e?.updateChannel}))}async function Uc(e){let t=await Cs({updateChannel:e?.updateChannel});return oc(await ac({context:e?.context,facts:t}))}async function Wc(e,t={}){let n=await qc(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await Gc();if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new x({kind:`cancelled`});if(r.error.kind===`timed-out`)throw new x({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return{error:{kind:r.error.kind===`conflict`?`locked`:`unknown`,message:r.error.message},installSource:n.facts.installSource,success:!1}}let i;try{let e=t.networkPort!==void 0||t.processPort!==void 0,r=t.signal??new AbortController().signal;i=await sc(n,await Rc(n).upgrade(n,e?{network:t.networkPort,process:t.processPort,signal:r,stdio:t.stdio,timeoutMs:t.timeoutMs}:void 0),t.processPort?{process:t.processPort,signal:r,timeoutMs:t.timeoutMs}:void 0)}catch(e){let t=await r.value.release();throw t.kind===`failure`?Error(`Self-upgrade failed and its lock could not be released: ${t.error.message}`,{cause:e}):e}let a=await r.value.release();if(a.kind===`failure`)throw Error(a.error.message);return i}async function Gc(){let e=await Ls();return e?{kind:`success`,value:{async release(){return await e(),{kind:`success`,value:void 0}}}}:{error:{kind:`conflict`,message:`Another qtx upgrade is already running.`},kind:`failure`}}function Kc(e,t=n.execPath){return Bc(e,t)}async function qc(e){return e?`facts`in e?e:e.installSource===`binary`?ac({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):cc(e):ac()}function Jc(e){return Qc({...e,error:null,ok:!0})}function Yc(e){return Qc({...e,ok:!1})}function Xc(e,t,n={}){let r=b();return r.cancelled&&!n.force||Ja(qa(e.action),r.outputMode,e,t,e=>console.log(e),e=>el(e)),e}function Zc(e,t={}){let n=b();if(!(n.cancelled&&!t.force))return Ya(qa(e.action),n.outputMode,e,e=>el(e))}function Qc(e){let t=b();return{action:e.action,data:e.data,error:e.error??null,exitCode:e.exitCode,meta:{fetchedAt:t.freshness?.fetchedAt,mode:t.outputMode,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:Ms()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function $c(e){let t=b();return{action:e.action,data:e.data,meta:{fetchedAt:t.freshness?.fetchedAt,mode:`ndjson`,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:Ms()},target:e.target,type:e.type}}function el(e){let t=$c(e);return tl(t),t}function tl(e){console.log(JSON.stringify(e))}const{createColors:nl,isColorSupported:rl}=de;function il(){let e=b().colorMode??`auto`;return nl(e===`always`?!0:e===`never`?!1:rl)}const al=new Proxy({},{get(e,t){let n=il(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{ha as $,jt as $t,qo as A,mr as At,q as B,On as Bt,Yo as C,Zr as Ct,Ko as D,kr as Dt,$o as E,Ir as Et,as as F,Qn as Ft,Ha as G,nn as Gt,za as H,En as Ht,uo as I,Gn as It,Da as J,an as Jt,Ta as K,rn as Kt,xo as L,Tn as Lt,es as M,pr as Mt,Xo as N,or as Nt,ts as O,Or as Ot,rs as P,$n as Pt,ma as Q,F as Qt,to as R,kn as Rt,Jo as S,Qr as St,Go as T,Lr as Tt,Ba as U,I as Ut,Ra as V,An as Vt,Va as W,en as Wt,ga as X,Ht as Xt,Ea as Y,$t as Yt,pa as Z,Vt as Zt,As as _,b as _n,Ti as _t,Xc as a,tt as an,aa as at,ms as b,ge as bn,fi as bt,Uc as c,Ve as cn,ra as ct,Vc as d,w as dn,Ji as dt,it as en,va as et,oc as f,C as fn,qi as ft,Es as g,ve as gn,Ei as gt,Rs as h,Te as hn,Ni as ht,Zc as i,ot as in,oa as it,Zo as j,hr as jt,Qo as k,xr as kt,Wc as l,x as ln,B as lt,ec as m,Ie as mn,Bi as mt,Yc as n,at as nn,V as nt,Kc as o,et as on,ia as ot,ac as p,we as pn,Vi as pt,Oa as q,tn as qt,Jc as r,ct as rn,sa as rt,Hc as s,E as sn,na as st,al as t,ht as tn,_a as tt,Bc as u,S as un,ea as ut,Ms as v,ye as vn,vi as vt,ns as w,Wr as wt,Q as x,me as xn,ri as xt,Cs as y,he as yn,pi as yt,no as z,Dn as zt};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./commands-Bt5YKAxY.mjs";export{e as commandsCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{V as e,W as t,a as n,r,t as i}from"./color-
|
|
1
|
+
import{V as e,W as t,a as n,r,t as i}from"./color-D55TE_Ws.mjs";async function a(){return n(r({action:`commands`,data:{commands:e().map(t)},target:{kind:`system`,name:`commands`}}),o)}function o(e){if(e.data){console.log(i.bold(`
|
|
2
2
|
Quantex Commands
|
|
3
3
|
`));for(let t of e.data.commands){let e=t.flags.length>0?i.dim(` [${t.flags.join(`, `)}]`):``;console.log(` ${i.cyan(t.name)}${e}`),console.log(` ${t.summary}`),console.log(` ${i.dim(t.outputSchemaRef)}`)}console.log()}}export{a as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Gt as e,Jt as t,Kt as n,Qt as r,Yt as i,a,n as o,qt as s,r as c,t as l}from"./color-D55TE_Ws.mjs";async function u(l,u,f){if(!l)return a(c({action:`config`,data:{action:`list`,config:await s()},target:{kind:`config`}}),d);switch(l){case`get`:{if(!u)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await s())[u];return a(c({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 a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!e(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!n(f))return a(o({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 a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!r(f))return a(o({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 a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let i={};try{i=await s()}catch{}return i[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?r(f):f,await t(i),a(c({action:`config`,data:{action:`set`,key:u,value:i[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await t(i),a(c({action:`config`,data:{action:`reset`,config:i},target:{kind:`config`}}),d);default:return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:l},message:`Unknown action: ${l}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(l.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(l.bold(`
|
|
2
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?
|
|
3
|
+
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?l.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(l.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(l.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{B as n,Ht as r,a as i,c as a,cn as o,d as s,r as c,t as l}from"./color-D55TE_Ws.mjs";import{n as u,t as d}from"./provider-observations-eOUOsbo-.mjs";import{n as f}from"./lifecycle-observations-F8_4qbsU.mjs";import{t as p}from"./agent-inspection-CCNABDLw.mjs";async function m(){let n=o(),l,m,_;try{[l,m,_]=await n.run(()=>Promise.all([d({context:n.context}),a({context:n.context}),f(n.context)]))}finally{n.dispose()}let v=u(l,e=>e.availability.kind===`success`),{brew:y,bun:b,cargo:x,deno:S}=v,{mise:C,npm:w,pip:T,uv:E,winget:D}=v,O=m.latestVersion?r(m.latestVersion,m.currentVersion):!1,k=_.map(e=>({inspection:p(e),observation:e})),A=k.filter(({inspection:e})=>e.inPath).map(({inspection:e})=>({displayName:e.agent.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion),sourceLabel:e.sourceLabel})),j=[],M=`docs/runbooks/quantex-troubleshooting.md`,N=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!b&&!w&&!y&&!x&&!S&&!C&&!T&&!E&&!D&&j.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:M,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(m.installSource===`bun`&&!b||m.installSource===`npm`&&!w)&&j.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:N,message:`Quantex CLI is tracked as a ${m.installSource} install, but ${m.installSource} is not available in PATH. Reinstall that package manager or reinstall Quantex from a supported source.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`restore-self-installer`,suggestedCommands:g(m.installSource,m.updateChannel)}),m.canAutoUpdate||j.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:N,message:`Quantex CLI cannot auto-update from install source "${m.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),O&&m.recommendedUpgradeCommand){let e=s(m);j.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:N,message:e?`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[m.recommendedUpgradeCommand]})}for(let{inspection:n,observation:r}of k.filter(e=>e.inspection.inPath)){if(r.observation.drift.kind===`untracked`&&j.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:M,message:`${n.agent.displayName} is available in PATH but not tracked as a managed Quantex install. Use \`quantex inspect ${n.agent.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${n.agent.name} --json`,`quantex install ${n.agent.name}`]}),!(n.installedVersion&&n.latestVersion&&n.installedVersion!==n.latestVersion)||n.lifecycle===`managed`)continue;let i=t(n.agent,n.agent.selfUpdate?`self-update`:`manual-hint`)??e(n.agent);j.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:M,message:`${n.agent.displayName} ${n.installedVersion} is behind ${n.latestVersion}, but the current source is ${n.sourceLabel}. ${i}`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:n.agent.selfUpdate?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n.agent.selfUpdate?[n.agent.selfUpdate.command.join(` `)]:[]})}return i(c({action:`doctor`,data:{agents:A,issues:j,installers:v,self:{canAutoUpdate:m.canAutoUpdate,currentVersion:m.currentVersion,installSource:m.installSource,latestVersion:m.latestVersion,outdated:!!O,recoveryHint:O?s(m):void 0}},target:{kind:`system`,name:`doctor`}}),h)}function h(e){if(e.data){if(console.log(l.bold(`
|
|
2
|
+
Quantex CLI Environment Check
|
|
3
|
+
`)),console.log(l.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?l.green(`available`):l.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?l.green(`available`):l.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?l.green(`available`):l.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?l.green(`available`):l.red(`not found`)}`),console.log(` deno: ${e.data.installers.deno?l.green(`available`):l.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?l.green(`available`):l.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?l.green(`available`):l.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?l.green(`available`):l.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?l.green(`available`):l.red(`not found`)}`),console.log(`\n${l.bold(`Quantex CLI:`)}`),console.log(` Version: ${e.data.self.currentVersion}`),console.log(` Source: ${e.data.self.installSource}`),console.log(` Auto-update: ${e.data.self.canAutoUpdate?l.green(`supported`):l.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?l.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${l.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(l.dim(` No agents installed`));else for(let t of e.data.agents)console.log(` ${t.displayName}: ${t.installedVersion??`unknown`} [${t.lifecycle}; ${t.sourceLabel}]${t.outdated?l.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${l.bold(`Issues:`)}`),e.data.issues.length===0)console.log(l.green(` No issues found.`));else for(let t of e.data.issues)console.log(l.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(l.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function g(e,t){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}export{m as doctorCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./ensure-zzTePhNS.mjs";export{e as ensureCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as e,a as t,et as n,i as r,n as i,r as a,t as o}from"./color-
|
|
1
|
+
import{I as e,a as t,et as n,i as r,n as i,r as a,t as o}from"./color-D55TE_Ws.mjs";import{v as s}from"./provider-evidence-CcW0d2NQ.mjs";import{t as c}from"./agent-installation-DaFUJAc_.mjs";import{r as l}from"./lifecycle-observations-F8_4qbsU.mjs";import{n as u}from"./agents-DKvyp0t3.mjs";import{t as d}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-Dkv_5Lew.mjs";async function g(n){if(!u(n)||m())return _(n);try{return await s(()=>_(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),C);throw r}}async function _(r){let a=await l(r);if(!a)return t(i({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),C);let{agent:o}=a,s=a.pathExecutable.present,u=a.installedState,f=s&&!u?n(a.methods,a.resolvedBinaryPath??a.pathExecutable.path):void 0;if(s&&!u&&!f)return t(x(o),C);let p=u&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?b(o):y(o,p===`adopt`,!!u),C);p!==`satisfied`&&v(o);try{return t(S(o,p,await c({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:u,lifecycle:a.observation,methods:a.methods},operation:`ensure`,route:p})),C)}catch(n){if(e(n))return t(i({action:`ensure`,data:{agent:{displayName:o.displayName,name:o.name},changed:!1,installed:s},...d(n,{kind:`agent`,name:o.name})}),C);throw n}}function v(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function y(e,t,n){return a({action:`ensure`,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 b(e){return a({action:`ensure`,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 x(e){return a({action:`ensure`,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 S(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return b(e);let r=n.value.value.installedState;return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:n.value.changed?{installType:r.installType,packageName:r.packageName}:void 0,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:`Ensure 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-ensure`)||n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after ensure completed.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return i({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:r,target:{kind:`agent`,name:e.name}})}function C(e){if(e.error){h(o.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`){p(o.green(t.message));continue}if(t.code===`DRY_RUN`){f(o.cyan(t.message));continue}f(o.yellow(t.message))}return}if(e.data.changed){p(o.cyan(`Installing ${e.data.agent.displayName}...`)),p(o.green(`${e.data.agent.displayName} is now installed.`));return}p(o.green(`${e.data.agent.displayName} is already installed.`))}}export{g as t};
|