quantex-cli 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/{agent-inspection-Cw-iSnoU.mjs → agent-inspection-PCTn6Nc6.mjs} +1 -1
  2. package/dist/{agent-installation-BiaOimkM.mjs → agent-installation-Dp03CAn2.mjs} +1 -1
  3. package/dist/{agents-DrmnXNfn.mjs → agents-BrJ8oEkB.mjs} +1 -1
  4. package/dist/capabilities-DywtqYKA.mjs +1 -0
  5. package/dist/{capabilities-DJkfliFM.mjs → capabilities-hjF4kpxs.mjs} +1 -1
  6. package/dist/cli.mjs +1 -1
  7. package/dist/color-BGZ_5A6s.mjs +9 -0
  8. package/dist/{commands-B-XYhmX6.mjs → commands-DjMechiz.mjs} +1 -1
  9. package/dist/commands-J8gAQ8RH.mjs +1 -0
  10. package/dist/{config-Dwsy-aHA.mjs → config-Cs1_DPwP.mjs} +1 -1
  11. package/dist/{doctor-98u2ifwx.mjs → doctor-D8y0PQ7s.mjs} +2 -2
  12. package/dist/ensure-CGipmEmc.mjs +1 -0
  13. package/dist/{ensure-C8f1rJSV.mjs → ensure-NxyYe2vm.mjs} +1 -1
  14. package/dist/index.mjs +2 -2
  15. package/dist/{info-cy1FacGf.mjs → info-C4-95Kjx.mjs} +1 -1
  16. package/dist/{inspect-DbxzuABH.mjs → inspect-Bzu6BDS6.mjs} +1 -1
  17. package/dist/inspect-FAr4x7oh.mjs +1 -0
  18. package/dist/install-CGHSS_yl.mjs +1 -0
  19. package/dist/{lifecycle-observations-DU3WbcUM.mjs → lifecycle-observations-C1OLPUAV.mjs} +1 -1
  20. package/dist/lifecycle-policy-emF59xDd.mjs +1 -0
  21. package/dist/{list-BpLto0Qx.mjs → list-BwTYgNzc.mjs} +1 -1
  22. package/dist/{provider-evidence-CDQ6s2Da.mjs → provider-evidence-D7aplCd6.mjs} +1 -1
  23. package/dist/{provider-observations-C8RmlqtY.mjs → provider-observations-BG3wn0dF.mjs} +1 -1
  24. package/dist/{resolve-C51742gH.mjs → resolve-D-NvixQn.mjs} +1 -1
  25. package/dist/resolve-DLrskjPy.mjs +1 -0
  26. package/dist/{schema-BO33Fvu0.mjs → schema-DuUjt16u.mjs} +1 -1
  27. package/dist/schema-xUwSt_FZ.mjs +1 -0
  28. package/dist/{uninstall-EBZrNkI3.mjs → uninstall-DLAzYf0i.mjs} +1 -1
  29. package/dist/update-l5KnwT41.mjs +1 -0
  30. package/dist/{update-planner-Dq3XUbkO.mjs → update-planner-9xPfJpjp.mjs} +1 -1
  31. package/dist/{upgrade-D4zvZO8U.mjs → upgrade-DP2QHsnb.mjs} +1 -1
  32. package/dist/{user-output-DBsy2Ysd.mjs → user-output-C1JWMNEt.mjs} +1 -1
  33. package/dist/{version-cache-Cpx0V074.mjs → version-cache-D0_L2X5L.mjs} +1 -1
  34. package/package.json +1 -1
  35. package/dist/capabilities-IF9tdHJa.mjs +0 -1
  36. package/dist/color-BrKNxICe.mjs +0 -9
  37. package/dist/commands-D4irgBj4.mjs +0 -1
  38. package/dist/ensure-BH_HgqIO.mjs +0 -1
  39. package/dist/inspect-DkknAqJ_.mjs +0 -1
  40. package/dist/install-BEZDMLmP.mjs +0 -1
  41. package/dist/lifecycle-policy-BeWI8sFz.mjs +0 -1
  42. package/dist/resolve-CeeaqmwA.mjs +0 -1
  43. package/dist/schema-Da826hmM.mjs +0 -1
  44. package/dist/update-CJUu1Frs.mjs +0 -1
@@ -1 +1 @@
1
- import{$ as e,Q as t,ot as n}from"./color-BrKNxICe.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
+ import{$ as e,Q as t,ot as n}from"./color-BGZ_5A6s.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{Kt as e,Qt as t,j as n,sn as r}from"./color-BrKNxICe.mjs";import{d as i,f as a,o,p as s,s as c,t as l,v as u}from"./provider-evidence-CDQ6s2Da.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(e,t,n,o,s){if(t===`satisfied`&&n)return{kind:`success`,value:{changed:!1,value:{installedState:n}}};if(t===`adopt`&&o)return r().cancelled?{kind:`cancelled`,reason:`tracking-cancelled`}:{kind:`success`,value:{changed:!0,value:{installedState:c(e,o)}}};if(t===`install`&&n){let t=await a(e,n);return t.kind===`success`&&t.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:t.value.installedState}}}:t.kind===`success`?{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:t}if(!s)return{kind:`indeterminate`,reason:`install-method-unresolved`};let l=await i(e,[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(t,n,r,i){let a=i??{executable:t.binaryName,kind:`executable-present`},s=o(t,n);if(!s)return{kind:`indeterminate`,postcondition:a,reason:`provider-binding-unresolved-after-${r}`};let[c,u]=await E(n=>Promise.all([e(t.binaryName,n),l(s,n)])),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:t.name,version:f?.kind===`present`?f.version:void 0}:{drift:{kind:`recorded-absent`},kind:`absent`,targetId:t.name};return c&&d?{kind:`satisfied`,observation:p,postcondition:a}:{kind:`unsatisfied`,observation:p,postcondition:a,reason:c?`provider-target-not-present-after-${r}`:`binary-not-found-after-${r}`}}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};
1
+ import{$t as e,Kt as t,cn as n,j as r}from"./color-BGZ_5A6s.mjs";import{d as i,f as a,o,p as s,s as c,t as l,v as u}from"./provider-evidence-D7aplCd6.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:n,observation:i,operation:a,route:c}=e,f=i.installedState?void 0:i.methods[0],p=i.installedState??t??f,m=D(i.lifecycle,n,t),h=d({intent:{kind:a,targetId:n.name},observation:m,providerId:O(p),providerTargetId:k(n,p)});return h.decision===c?u(async()=>{if(c===`install`&&i.installedState&&!i.inPath){let e=o(n,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 r=o(n,t.value.installedState);if(!r)throw Error(`Cannot resolve provider binding for ${n.name}.`);let i=e.observation.kind===`present`?e.observation:void 0;return{...r.target.binaryName?{executableName:r.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:r.providerId,providerTargetId:r.target.id,providerTargetKind:r.target.kind,schemaVersion:1,targetId:n.name,verifiedAt:new Date().toISOString(),...i?.executablePath?{executablePath:i.executablePath}:{},...i?.version?{version:i.version}:{}}},compensate:e=>c===`install`?s(n,e.value.installedState):Promise.resolve(),execute:async()=>w(n,c,i.installedState,t,f),plan:h.plan,recordReceipt:(e,t)=>r(t.value.installedState,e),verify:async e=>T(n,e.value.installedState,a,h.plan.steps[0]?.postconditions[0])})}):Promise.resolve({kind:`indeterminate`,reason:`planned-${h.decision}-cannot-execute-${c}`})}async function w(e,t,r,o,s){if(t===`satisfied`&&r)return{kind:`success`,value:{changed:!1,value:{installedState:r}}};if(t===`adopt`&&o)return n().cancelled?{kind:`cancelled`,reason:`tracking-cancelled`}:{kind:`success`,value:{changed:!0,value:{installedState:c(e,o)}}};if(t===`install`&&r){let t=await a(e,r);return t.kind===`success`&&t.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:t.value.installedState}}}:t.kind===`success`?{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:t}if(!s)return{kind:`indeterminate`,reason:`install-method-unresolved`};let l=await i(e,[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,n,r,i){let a=i??{executable:e.binaryName,kind:`executable-present`},s=o(e,n);if(!s)return{kind:`indeterminate`,postcondition:a,reason:`provider-binding-unresolved-after-${r}`};let[c,u]=await E(n=>Promise.all([t(e.binaryName,n),l(s,n)])),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-${r}`:`binary-not-found-after-${r}`}}async function E(t){let n=e();try{return await t(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};
@@ -1 +1 @@
1
- import{$ as e,At as t,Kt as n,Mt as r,Q as i,S as a,jt as o,kt as s,lt as c,ot as l,tt as u}from"./color-BrKNxICe.mjs";import{n as d,r as f}from"./agents-Dc-rbRUf.mjs";import{c as p,l as m}from"./provider-evidence-CDQ6s2Da.mjs";async function h(t){let[o,c,u]=await Promise.all([m(t),a(t.name),n(t.binaryName)]),[d,f,p]=await Promise.all([u?_(t,c):Promise.resolve(void 0),u?s(t.binaryName):Promise.resolve(void 0),v(t,c,o)]);return{agent:t,methods:o,installedState:c,inPath:u,installedVersion:d,latestVersion:p,binaryPath:f,resolvedBinaryPath:await r(f),sourceLabel:i(c),updateLabel:e(t,c),lifecycle:c?l(c.installType):`unmanaged`}}async function g(e){return Promise.all(e.map(h))}async function _(e,n){if(n&&c(n.installType)&&n.packageName){let e=await p(n.installType,n.packageName,n.packageTargetKind);if(e)return e}return t(e.binaryName,e.versionProbe)}async function v(e,t,n){let r=u(e,t,n);if(r)return o(r)}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
+ import{$ as e,At as t,Kt as n,Mt as r,Q as i,S as a,jt as o,kt as s,lt as c,ot as l,tt as u}from"./color-BGZ_5A6s.mjs";import{n as d,r as f}from"./agents-Dc-rbRUf.mjs";import{c as p,l as m}from"./provider-evidence-D7aplCd6.mjs";async function h(t){let[o,c,u]=await Promise.all([m(t),a(t.name),n(t.binaryName)]),[d,f,p]=await Promise.all([u?_(t,c):Promise.resolve(void 0),u?s(t.binaryName):Promise.resolve(void 0),v(t,c,o)]);return{agent:t,methods:o,installedState:c,inPath:u,installedVersion:d,latestVersion:p,binaryPath:f,resolvedBinaryPath:await r(f),sourceLabel:i(c),updateLabel:e(t,c),lifecycle:c?l(c.installType):`unmanaged`}}async function g(e){return Promise.all(e.map(h))}async function _(e,n){if(n&&c(n.installType)&&n.packageName){let e=await p(n.installType,n.packageName,n.packageTargetKind);if(e)return e}return t(e.binaryName,e.versionProbe)}async function v(e,t,n){let r=u(e,t,n);if(r)return o(r)}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};
@@ -0,0 +1 @@
1
+ import{t as e}from"./capabilities-hjF4kpxs.mjs";export{e as capabilitiesCommand};
@@ -1,4 +1,4 @@
1
- import{Gt as e,Qt as t,V as n,a as r,c as i,r as a,t as o}from"./color-BrKNxICe.mjs";import{r as s}from"./agents-Dc-rbRUf.mjs";import{n as c,t as l}from"./provider-observations-C8RmlqtY.mjs";import u from"node:process";function d(e=n()){let t=new Map(e.map(e=>[e.name,new Set(e.effects)])),r=new Map(e.map(e=>[e.name,new Set(e.flags)]));return{effects:new Set(e.flatMap(e=>e.effects)),effectsByCommand:t,flags:new Set(e.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 n=t(),o,p;try{[o,p]=await n.run(()=>Promise.all([l({context:n.context}),i({context:n.context})]))}finally{n.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 r(a({action:`capabilities`,data:{agents:s().map(e=>e.name),features:_,installers:g,outputModes:[`human`,`json`,`ndjson`],platform:{arch:u.arch,os:e()}},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(`
1
+ import{$t as e,Gt as t,V as n,a as r,c as i,r as a,t as o}from"./color-BGZ_5A6s.mjs";import{r as s}from"./agents-Dc-rbRUf.mjs";import{n as c,t as l}from"./provider-observations-BG3wn0dF.mjs";import u from"node:process";function d(e=n()){let t=new Map(e.map(e=>[e.name,new Set(e.effects)])),r=new Map(e.map(e=>[e.name,new Set(e.flags)]));return{effects:new Set(e.flatMap(e=>e.effects)),effectsByCommand:t,flags:new Set(e.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 n=e(),o,p;try{[o,p]=await n.run(()=>Promise.all([l({context:n.context}),i({context:n.context})]))}finally{n.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 r(a({action:`capabilities`,data:{agents:s().map(e=>e.name),features:_,installers:g,outputModes:[`human`,`json`,`ndjson`],platform:{arch:u.arch,os:t()}},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(`
package/dist/cli.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{G as e,H as t,Nt as n,Pt as r,Qt as i,T as a,U as o,V as s,X as c,Z as l,a as u,dn as d,en as f,i as p,ln as m,m as ee,n as h,on as g,r as te,sn as _,t as v,un as y,v as ne,w as re,x as b,y as ie}from"./color-BrKNxICe.mjs";import{n as ae}from"./agents-Dc-rbRUf.mjs";import{t as oe}from"./agent-installation-BiaOimkM.mjs";import{t as se}from"./lifecycle-observations-DU3WbcUM.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-DBsy2Ysd.mjs";import{n as w,t as T}from"./errors-DXzIacfk.mjs";import{n as fe,t as pe}from"./version-cache-Cpx0V074.mjs";import{d as E,f as D,i as O,n as me,o as he,t as ge}from"./lifecycle-policy-BeWI8sFz.mjs";import k from"node:process";import{join as A}from"node:path";import{createHash as _e,randomUUID as ve}from"node:crypto";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:i,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 f(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}:f(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(r(),`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 r=_();if(r.outputMode!==`human`||r.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||!n(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();He(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||x(v.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=_().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}:{}},_().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=_();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(v.red(e.error.message))}async function Qe(e,t){if(_().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(v.red(e.error.message))}async function $e(e,t){let n=_();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=_();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(f(e)&&e.kind===`timed-out`||_().cancelled)return t();throw e}}async function ot(e,t){try{let n=await e(),r=t();return _().cancelled&&r?r:n}catch(e){let n=t();if(_().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(),p({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(),p({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=_(),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(v.cyan(`Installing ${e.agent.displayName}...`))},outputMode:i.outputMode,timeoutMs:i.timeoutMs}),d=e=>{l??=e,r.cancelOperations()},f=()=>d(`SIGINT`),p=()=>d(`SIGTERM`);k.once(`SIGINT`,f),k.once(`SIGTERM`,p);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`,f),k.off(`SIGTERM`,p),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(v.yellow(`Installation cancelled.`)),1;case`install-failed`:return C(v.red(`Failed to install ${r.displayName}.`)),w(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&S(v.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(v.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return C(v.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),w(`CANCELLED`);case`timed-out`:return C(v.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 _().outputMode===`human`?C(v.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(_().outputMode===`human`){C(v.red(e.errorMessage));let t=e.execution.installGuidance;t&&(S(v.dim(`Try: ${t.suggestedEnsureCommand}`)),S(v.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(_().outputMode===`human`){S(v.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-IF9tdHJa.mjs`);await Y({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-D4irgBj4.mjs`);await Y({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-Dwsy-aHA.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-98u2ifwx.mjs`);await Y({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],{ensureCommand:n}=await import(`./ensure-BH_HgqIO.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(`${v.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-cy1FacGf.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-DkknAqJ_.mjs`);await Y({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let{installCommand:t}=await import(`./install-BEZDMLmP.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-BpLto0Qx.mjs`);await Y({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-CeeaqmwA.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-Da826hmM.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-EBZrNkI3.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-CJUu1Frs.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-D4zvZO8U.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 n=s();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(ne()),r.hook(`preAction`,(e,t)=>{try{d(y(o(t.optsWithGlobals())))}catch(e){k.stdout.write(`${v.red(e instanceof Error?e.message:String(e))}\n`),k.exit(2)}}),r.hook(`postAction`,()=>{m()});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(v.red($.error)),k.exit(2)),$&&ae($.agentName)){try{d(y({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(v.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{m()}}await Q.parseAsync();export{};
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{};
@@ -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{chmod as ee,mkdir as g,mkdtemp as te,readFile as _,realpath as ne,rename as re,rm as v,stat as ie,writeFile as ae}from"node:fs/promises";import{homedir as oe}from"node:os";import{fileURLToPath as se}from"node:url";import{Buffer as ce}from"node:buffer";import le from"picocolors";function ue(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 de,y=new Set;function b(){return de??=ye(),de}function fe(e){y=new Set,de={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function pe(){de=void 0,y=new Set}function me(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:ue(e.timeout),c=be(e.color),l=xe(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 he(){de&&(de.cancelled=!0)}async function ge(){he();let e=[...y];y.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function _e(e){return y.add(e),()=>{y.delete(e)}}function ve(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 ye(){return me()}function be(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 xe(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 Se(e,t={}){if(b().outputMode===`human`){let n=C(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:_e(()=>Ne(n)),outputDrained:Promise.resolve(),proc:n}}let n=C(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:_e(()=>Ne(n)),outputDrained:Promise.all([De(n.stdout),De(n.stderr)]).then(()=>void 0),proc:n}}async function Ce(e){let t=b();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function we(e,t){let n,r=()=>n??=Pe(e.proc,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Fe(e.proc)});if(t.signal.aborted)throw await r(),e.cleanup(),i?.(),new x({kind:`cancelled`,reason:Ee(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:Ee(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?Te(a,t):void 0;if(!s)throw Error(`spawnCommand requires a non-empty command array.`);let c=Ae(s),l=t.detached||c?void 0:je();if(l)return Me([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:Oe(u),kill:u.kill.bind(u),unref:()=>u.unref()}}function Te(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([ke(e.stdout),ke(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function T(e,t){let n,r=()=>n??=Pe(e,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Fe(e)});if(t.signal.aborted)throw await r(),i?.(),new x({kind:`cancelled`,reason:Ee(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:Ee(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 Ee(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 De(e){if(!e)return;let t=await ke(e);t&&n.stderr.write(t)}async function Oe(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function ke(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():h(e):``}function Ae(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 je(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function Me(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 Ne(e){await Pe(e)}async function Pe(e,t){n.platform===`win32`&&e.pid!==void 0&&await Re(Le(e.pid),2e3),Ie(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}Ie(e,`SIGKILL`),await Re(e.exited.then(()=>void 0).catch(()=>void 0),250)}async function Fe(e){n.platform===`win32`&&e.pid!==void 0&&await Re(Le(e.pid),250),Ie(e,`SIGKILL`),await Re(e.exited.then(()=>void 0).catch(()=>void 0),250)}function Ie(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 Le(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 Re(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function ze(){let e=b(),t=new AbortController,n=new Set;e.cancelled&&t.abort(`cancelled`);let r=_e(async()=>{t.abort(`cancelled`);let e=[...n];await Ve(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.cleanup()))),500)||await Ve(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 Be(t.signal);let n,r=new Promise((e,r)=>{n=()=>r(Be(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 Be(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 Ve(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 we(Se(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}: ${Ue(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 He(e){let t=ze();try{return(await e(t.context)).kind===`success`}finally{t.dispose()}}function Ue(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}function We(e){return e===`cask`?[`--cask`]:[]}function Ge(e){return e===`cask`?[`--cask`]:[`--formula`]}function Ke(e,t,n,r){return E([`brew`,e,...We(n),t],r,`brew ${e} failed`)}function qe(e,t,n){return Ke(`install`,e,t,n)}function Je(e,t,n){return Ke(`upgrade`,e,t,n)}function Ye(e,t){return D(e.map(e=>[`brew`,`upgrade`,...We(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function Xe(e,t,n){return Ke(`uninstall`,e,t,n)}async function Ze(e,t,r){try{let i=C([`brew`,`list`,...Ge(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=et(s);return a===0?c?{presence:`present`,version:c}:{presence:`present`}:a===1&&tt(o)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function Qe(e,t,n){return(await Ze(e,t,n)).presence}async function $e(e,t,n){return(await Ze(e,t,n)).version}function et(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 tt(e){let t=e.toLowerCase();return t.includes(`no such keg`)||t.includes(`is not installed`)}function nt(){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 rt(e){return O(`bun`,e)}async function it(e){return O(`npm`,e)}async function at(e){return O(`brew`,e)}async function ot(e){return O(`deno`,e)}async function st(e){return O(`cargo`,e)}async function ct(e){return O(`mise`,e)}async function lt(e){return O(`winget`,e)}async function ut(e){return await O(`pip`,e)||await O(`pip3`,e)?!0:ft(e)}async function dt(e){return O(`uv`,e)}async function ft(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 pt(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:ht(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:ht(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:gt(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 mt(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:ht(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:gt(e)}}}function ht(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 gt(e){return e instanceof Error?e.message:String(e)}function M(e,t){let n=async n=>{let r=await _t(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:[wt(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:[Tt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await _t(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&k(i)?A(i):N({evidence:[Tt(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 _t(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=>yt(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>yt(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>yt(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>bt(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 _t(e,t,n){return t?mt(e,n):j(e,n)}function vt(e,t,n){return t?mt(e,n):j(e,n)}async function yt(e,t,n,r,i,a){let o=await vt(t.context,i,()=>a(t.target,t.context));if(k(o))return A(o);let s=Ct(e.id,r);return o.kind===`rejected`?St(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?N({evidence:s,target:t.target}):xt(o.value,e,t.target.id,n,r,s)}async function bt(e,t,n){let r=e.commands.updateMany(n.targets),i=await vt(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(k(i))return A(i);let a=Ct(e.id,r);return i.kind===`rejected`?St(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?N(n.targets.map(e=>({evidence:a,target:e}))):xt(i.value,e,void 0,`update`,r,a)}function xt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=St(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 St(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 Ct(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function wt(e,t){return{kind:`provider`,value:`${e}:${t}`}}function Tt(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 Et={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>$e(e.id,P(e),t),install:(e,t)=>qe(e.id,P(e),t),isAvailable:e=>at(e),probePackagePresence:(e,t)=>Qe(e.id,P(e),t),uninstall:(e,t)=>Xe(e.id,P(e),t),update:(e,t)=>Je(e.id,P(e),t),updateMany:(e,t)=>Ye(e.map(e=>({packageName:e.id,packageTargetKind:P(e)})),t)};function Dt(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function Ot(e=Et){return M({commands:{install:e=>Dt(`install`,e),uninstall:e=>Dt(`uninstall`,e),update:e=>Dt(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>Dt(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const kt=Ot(),At=`https://registry.npmjs.org`;function F(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function jt(e,t,n){return`${F(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async function Mt(e,t,n){return He(r=>Nt(e,t,n,r))}function Nt(e,t,n,r){let i=t?`${e}@${t}`:e,a=F(n);return Wt([`bun`,`add`,`-g`,...a?[`--registry`,a]:[],i],[e],r)}function Pt(e,t,n,r,i){let a=n===`latest`?e:`${e}@${n}`,o=F(r);return Wt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...o?[`--registry`,o]:[],a],[e],i)}function Ft(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):Wt([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function It(e,t){return E([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`)}const Lt={readGlobalManifest:()=>_(p(n.env.BUN_INSTALL_GLOBAL_DIR??p(oe(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function Rt(e,t=Lt,r){try{let i=C([`bun`,`pm`,`-g`,`ls`],{detached:r!==void 0&&n.platform!==`win32`,stdio:Xt()}),{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:Ht(await t.readGlobalManifest(),e)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let s=Ut(o,e);return s?{presence:`present`,version:s}:Vt(o,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function zt(e,t=Lt,n){return(await Rt(e,t,n)).presence}async function Bt(e,t){return(await Rt(e,Lt,t)).version}function Vt(e,t){let n=`${t}@`;return e.split(`
3
+ `).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function Ht(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 Ut(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 Wt(e,t,n){let r=[...new Set(t)],i=e[1]===`add`,a=i?await Gt(r,n):void 0,o=await E(e,n,`bun mutation failed`);if(o.kind!==`success`)return o;let s=await qt(r,n);return s.kind!==`success`&&i&&a&&await Kt(r.filter(e=>a.get(e)===`absent`),n),s}async function Gt(e,t){let n=new Map;for(let r of e)n.set(r,await zt(r,void 0,t));return n}async function Kt(e,t){for(let n of new Set(e))await E([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function qt(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await Jt(t);if(r.kind!==`success`)return r;let i=Yt(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 Jt(e){let t=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:r,stdout:i}=await T(C(t,{detached:n.platform!==`win32`,stdio:Xt()}),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 Yt(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 Xt(){return[`ignore`,`pipe`,`pipe`]}const Zt={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||oe(),`.quantex`)}function Qt(){return p(I(),`config.json`)}async function $t(){let e={...Zt,...await rn()};return{...e,defaultPackageManager:en(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:an(e.networkRetries,2),networkTimeoutMs:an(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:an(e.versionCacheTtlHours,6)}}function en(e){return e===`bun`||e===`mise`||e===`npm`}function tn(e){return e===`latest-major`||e===`respect-semver`}async function nn(e){await g(I(),{recursive:!0}),await ae(Qt(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function rn(){try{let e=await _(Qt(),`utf8`),t=JSON.parse(e);return on(t)?t:{}}catch{return{}}}function an(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 on(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var sn=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function cn(e,t,n={}){let r=await ln(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function ln(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;L(i);let a=await $t();L(i);let o=a.versionCacheTtlHours*60*60*1e3,s=b().cacheMode,c=s===`no-cache`?{entries:{}}:await gn();L(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return L(i),yn(l,o),l.body;let d=await un(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),yn(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 _n(c)),L(i),bn(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(L(i),yn(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 _n(c)),L(i),bn(u,u+o),d.body}async function un(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 dn(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof x)throw e;if(r===t.retries)return}}async function dn(e,t){let n=t.networkPort;if(n)return fn(e,{...t,networkPort:n});let r=new AbortController,i,a,o,s,c,l=new Promise((e,t)=>s=t),u=()=>c??=mn(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`?hn(t.signal):e===`invocation-timeout`?new x({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new sn(t.timeoutMs),i=o===void 0;return(i||o instanceof sn&&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),ee=t.invocationDeadline===void 0?void 0:setTimeout(()=>void d(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),g=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 g();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 pn(a,e=>i=e);await g();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await g(),{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),ee&&clearTimeout(ee),t.signal?.removeEventListener(`abort`,f),p?.()}}async function fn(e,t){if(t.signal?.aborted)throw hn(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`?hn(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 sn(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 pn(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 mn(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 hn(e)}function hn(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 gn(){try{return JSON.parse(await _(vn(),`utf8`))}catch{return{entries:{}}}}async function _n(e){await g(p(I(),`cache`),{recursive:!0}),await ae(vn(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function vn(){return p(I(),`cache`,`versions.json`)}function yn(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);ve({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function bn(e,t){ve({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const xn=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Sn(e,t){if(t)return t(e);let n=e.trim().split(`
6
+ `)[0],r=n.match(xn);return r?r[1]:n||void 0}function Cn(e,t){let n=An(e),r=An(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 jn(n.prerelease,r.prerelease)}}function wn(e,t){return Cn(e,t)===1}async function Tn(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?Sn(o,t?.parser):void 0}catch(e){if(S(e))throw e;return}}async function En(e,t=`latest`,n={}){try{let r=F(n.registry)??`https://registry.npmjs.org`,i=await cn(jt(e,t,r),`npm:${r}:${e}:${t}`,{context:n.context,networkPort:n.networkPort});if(n.context?.signal.aborted)throw kn(n.context.signal);return i?.version}catch(e){if(S(e))throw e;if(n.context?.signal.aborted)throw kn(n.context.signal);return}}async function Dn(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 On(e,t){if(e){if(t?.signal.aborted)throw kn(t.signal);try{let n=await ne(e);if(t?.signal.aborted)throw kn(t.signal);return n}catch{if(t?.signal.aborted)throw kn(t.signal);return e}}}function kn(e){return new x({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}function An(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 jn(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 Mn(e,t){let n=R(`provider`,e.id),r=async n=>{let r=await Nn(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 Nn(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 Nn(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=zn(n.options),i=e.commands.install(n.target,r);return In(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=zn(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 In(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context))},update:n=>{let r=zn(n.options),i=e.commands.update(n.target,r);return In(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>Fn(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 Nn(e,t,n){return t?mt(e,n):j(e,n)}function Pn(e,t,n){return t?mt(e,n):j(e,n)}async function Fn(e,t,n){let r=zn(n.options),i=e.commands.updateMany(n.targets,r),a=[R(`provider`,e.id),R(`command`,i.join(` `))],o=await Pn(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return k(o)?A(o):o.kind===`rejected`?Rn(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?z(n.targets.map(e=>({evidence:a,target:e}))):Ln(o.value,e,i,a,`update-many`)}async function In(e,t,n,r,i,a){let o=await Pn(t,i,a);if(k(o))return A(o);let s=[R(`provider`,e.id),R(`command`,r.join(` `))];return o.kind===`rejected`?Rn(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?z({evidence:s,target:n}):Ln(o.value,e,r,s,r[1]??`operation`,n.id)}function Ln(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=Rn(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 Rn(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 zn(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 Bn={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)]},Vn={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>Bt(e,t),install:(e,t,n,r)=>Nt(e,t,n,r),isAvailable:e=>rt(e),probePackagePresence:(e,t)=>zt(e,void 0,t),resolveLatestVersion:(e,t,n)=>En(e,t,{registry:n}),uninstall:(e,t)=>It(e,t),update:(e,t,n,r,i)=>Pt(e,t,n,r,i),updateMany:(e,t,n)=>Ft(e,t,n)};function Hn(e=Vn){return Mn({commands:Bn,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const Un=Hn();function Wn(e,t,n,r){return E([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function Gn(e,t,n){return Wn(`install`,e,t??[],n)}function Kn(e,t,n){return Gn(e,[`--force`,...t??[]],n)}function qn(e,t){return D(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function Jn(e,t){return Wn(`uninstall`,e,[],t)}const Yn={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>Gn(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>st(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Jn(e.id,t),update:(e,t)=>Kn(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>qn(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function Xn(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Zn(e=Yn){return M({commands:{install:e=>Xn(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Xn(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const Qn=Zn();function $n(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 er(e,t,n){return $n(e,t??[],{},n)}function tr(e,t,n){return $n(e,t??[],{force:!0},n)}function nr(e,t){return D(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function rr(e,t){return E([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}const ir={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>er(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>ot(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>rr(e.binaryName??e.id,t),update:(e,t)=>tr(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>nr(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},...e.binaryName?{binaryName:e.binaryName}:{},packageName:e.id})),t)};function ar(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function or(e=ir){return M({commands:{install:e=>ar(e),uninstall:e=>[`deno`,`uninstall`,`--global`,e.binaryName??e.id],update:e=>ar(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const sr=or(),cr={contextualExecution:!0,execute:(e,t)=>E(dr(e,nt()),t,`install effect failed`),isExecutablePresent:pt};function lr(e,t={}){let n={...cr,...t,contextualExecution:t.execute?t.contextualExecution??!1:!0};return{availability:async e=>fr(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 ur(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(k(i))return A(i);let a=dr(r,nt()),o=pr(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 ur(e,t,n){return t?mt(e,n):j(e,n)}function dr(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function fr(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:nt()===`windows`?`powershell.exe`:`sh`}}}function pr(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const mr=lr(`script`),hr=lr(`binary`);function gr(e,t,n){return E([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function _r(e,t){return gr(e,!1,t)}function vr(e,t){return gr(e,!0,t)}function yr(e,t){return D(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function br(e,t){return E([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function xr(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(!Er(t))return{presence:`unknown`};let n=Tr(t,e),r=n?t[n]:void 0;if(!Array.isArray(r)||r.length===0)return{presence:`absent`};let a=wr(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 Sr(e,t){return(await xr(e,t)).presence}async function Cr(e,t){return(await xr(e,t)).version}function wr(e,t){try{let n=JSON.parse(e);if(!Er(n))return;let r=Tr(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(Er(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function Tr(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 Er(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const Dr={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Cr(e.id,t),install:(e,t)=>_r(e.id,t),isAvailable:e=>ct(e),probePackagePresence:(e,t)=>Sr(e.id,t),uninstall:(e,t)=>br(e.id,t),update:(e,t)=>vr(e.id,t),updateMany:(e,t)=>yr(e.map(e=>({packageName:e.id})),t)};function Or(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function kr(e=Dr){return M({commands:{install:e=>Or(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>Or(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const Ar=kr();async function jr(e,t,n){return He(r=>Mr(e,t,n,r))}function Mr(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 Nr(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 Pr(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 Fr(e,t){return E([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function Ir(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=zr(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 Lr(e,t){return(await Ir(e,t)).presence}async function Rr(e,t){return(await Ir(e,t)).version}function zr(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const Br={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)]},Vr={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>Rr(e,t),install:(e,t,n,r)=>Mr(e,t,n,r),isAvailable:e=>it(e),probePackagePresence:(e,t)=>Lr(e,t),resolveLatestVersion:(e,t,n)=>En(e,t,{registry:n}),uninstall:(e,t)=>Fr(e,t),update:(e,t,n,r,i)=>Nr(e,t,n,r,i),updateMany:(e,t,n)=>Pr(e,t,n)};function Hr(e=Vr){return Mn({commands:Br,displayName:`npm`,executable:`npm`,id:`npm`},e)}const Ur=Hr();let Wr=null;async function Gr(e){if(Wr)return{kind:`success`,value:Wr};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 Wr=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 Wr=[`pip`],{kind:`success`,value:Wr}}async function Kr(e,t){let n=await Gr(t);return n.kind===`success`?E([...n.value,...e],t,`pip command failed`):n}function qr(e,t){return Kr([`install`,e],t)}function Jr(e,t){return Kr([`install`,`--upgrade`,e],t)}async function Yr(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await Gr(t);return n.kind===`success`?D(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function Xr(e,t){return Kr([`uninstall`,`-y`,e],t)}const Zr={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>qr(e.id,t),isAvailable:e=>ut(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>Xr(e.id,t),update:(e,t)=>Jr(e.id,t),updateMany:(e,t)=>Yr(e.map(e=>({packageName:e.id})),t)};function Qr(e=Zr){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 $r=Qr();function ei(e,t,n,r){return E([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function ti(e,t,n){return ei(`install`,e,t??[],n)}function ni(e,t,n){return ei(`upgrade`,e,t??[],n)}function ri(e,t){return D(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function ii(e,t){return E([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function ai(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=li(i,e);return a?{presence:`present`,version:a}:ci(i)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(S(e))throw e;return{presence:`unknown`}}}async function oi(e,t){return(await ai(e,t)).presence}async function si(e,t){return(await ai(e,t)).version}function ci(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function li(e,t){let n=ui(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(ui(i)===n)return a}}function ui(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}const di={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>si(e.id,t),install:(e,t)=>ti(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>dt(e),probePackagePresence:(e,t)=>oi(e.id,t),uninstall:(e,t)=>ii(e.id,t),update:(e,t)=>ni(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>ri(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function fi(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function pi(e=di){return M({commands:{install:e=>fi(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>fi(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const mi=pi();function hi(e,t,n){return E([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function gi(e,t){return hi(`install`,e,t)}function _i(e,t){return hi(`upgrade`,e,t)}function vi(e,t){return D(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function yi(e,t){return hi(`uninstall`,e,t)}const bi={contextualMutation:!0,contextualObservation:!0,install:(e,t)=>gi(e.id,t),isAvailable:e=>lt(e),probePackagePresence:async()=>`unknown`,uninstall:(e,t)=>yi(e.id,t),update:(e,t)=>_i(e.id,t),updateMany:(e,t)=>vi(e.map(e=>({packageName:e.id})),t)};function xi(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Si(e=bi){return M({commands:{install:e=>xi(`install`,e),uninstall:e=>xi(`uninstall`,e),update:e=>xi(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const Ci=Si(),wi=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`,`script`,`binary`]),Ti=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Ei={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Di(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,ki(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function Oi(e){return Di(wi.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 ki(e){return Object.freeze(Ti.filter(t=>typeof e[Ei[t]]==`function`))}const Ai=Oi({binary:hr,brew:kt,bun:Un,cargo:Qn,deno:sr,mise:Ar,npm:Ur,pip:$r,script:mr,uv:mi,winget:Ci}),ji=Object.freeze(Ai.list().filter(e=>{let t=Ai.getCapabilities(e.id);return t.includes(`update`)&&t.includes(`uninstall`)}).map(e=>e.id));function Mi(e){let t=Ai.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 Ni(){return ji}function B(e){return ji.includes(e)}function Pi(e){return Mi(e).lifecycle}function Fi(e){return Mi(e).canUpdate}function Ii(e){return Mi(e).canUninstall}function Li(e){return Mi(e).canLookupLatestVersion}function Ri(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 zi(e){return e?Fi(e.installType):!1}function Bi(e,t){return zi(t)||!!e.selfUpdate}function Vi(e){return!!e&&Li(e.installType)}function Hi(e){return e.length>0&&e.every(e=>Li(e.type))}function Ui(e){return B(e.type)?`${Pi(e.type)}/${e.type}${Ri(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function Wi(e){return e?B(e.installType)?`managed via ${e.installType}${Ri(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function Gi(e,t){let n=ra({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function Ki(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 qi(e,t,n){if(t)return Vi(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!Hi(n)))return e.packages.npm}function Ji(e,t){let n=Yi(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 Yi(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(Xi(t))return`npm`}function Xi(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 Zi(e){if(e.installedState)return B(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(B(t.type)&&Fi(t.type))return t.type}const Qi={strategy:`managed`,canHandle:e=>!!Zi(e),getManagedInstallerType:e=>Zi(e)},$i={strategy:`self-update`,canHandle:e=>!zi(e.installedState)&&!!e.agent.selfUpdate},ea={strategy:`manual-hint`,canHandle:()=>!0},ta=[Qi,$i,ea];function na(e){return ta.find(t=>t.canHandle(e))??ea}function ra(e){return na(e).strategy}function ia(e){return Bi(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`},aa={brew:W,bun:W,cargo:W,deno:W,mise:W,npm:W,pip:W,uv:W,winget:W},oa=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],sa=[{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:aa,required:oa,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:oa,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}],ca=[{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`}],la=new Map(ca.map(e=>[e.id,e])),ua=new Map(sa.map(e=>[e.name,e])),da=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],fa=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],pa=[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:da,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:fa,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:da,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:da,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:fa,name:`install`,summary:`Install one or more agents`}),G({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:da,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:da,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 ma(){return pa}function ha(){return ca}function ga(e){let t={...e};for(let n of ca){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 _a(e){return{flags:ba(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function va(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=la.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}`);xa(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=ba(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=ya(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:ba(n)}}function ya(e){let t=ua.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function ba(e){return[...e.catalogTokens,...e.options.map(e=>K(e.flags)),...e.globalOptions.map(t=>{let n=la.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 xa(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 Sa=new Map(ma().map(e=>[e.name,Ea(e.presenterId)]));function Ca(e){return Sa.get(e)}function wa(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)??Da(n));return}e?e.presentHuman(n,r):r(n)}function Ta(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function Ea(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:Da}}function Da(e){return{action:e.action,data:e,target:e.target,type:`result`}}const q=`quantex-cli`,Oa=`https://github.com/Drswith/quantex-cli`,ka=`1.1.2`;function Aa(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function ja(e=n.execPath){if(u(Aa(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 Ma(e=n.execPath){let t=ja(e);if(t)return`${Oa}/releases/latest/download/${t}`}function Na(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 Pa(e,t,n){let r=await cn(await Fa(e,t,n),`self:manifest:${e}`,{context:t,networkPort:n});if(!r)throw Error(`Failed to download release manifest.`);return r}async function Fa(e,t,n){if(e===`stable`)return`${Oa}/releases/latest/download/manifest.json`;let r=(await Ia(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 Ia(e,t,n){let r=Ra();if(!r)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let i=await cn(`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 La(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=ja(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function Ra(){return Oa.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var za=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 Ba(e){return e instanceof za}function Va(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=Va(e.scope);return await g(f(t),{recursive:!0}),await Ha(e.resource,t),async()=>{await v(t,{force:!0,recursive:!0})}}async function Ha(e,t){try{c(t,{recursive:!1}),Ua(t);return}catch(e){if(!Ja(e))throw e}if(!await Wa(t))throw new za(e,t);try{c(t,{recursive:!1}),Ua(t)}catch(n){throw Ja(n)?new za(e,t):n}}function Ua(e){l(p(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function Wa(e){let t;try{t=await Ga(e)}catch{return!1}return t&&qa(t.pid)?!1:(await v(e,{force:!0,recursive:!0}),!0)}async function Ga(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await Ka(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await Ka(e)}async function Ka(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(Ya(e))return;throw e}}function qa(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Ja(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Ya(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Xa(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 Za=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function Qa(){return{installedAgents:{},lifecycleReceipts:{},schemaVersion:2,self:{}}}function X(e){if(!po(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:ro(e.installedAgents),lifecycleReceipts:t===`current`?no(e.lifecycleReceipts):{},schemaVersion:2,self:ao(e.self)},source:t}}function $a(e){return{installedAgents:e.installedAgents,self:e.self}}function eo(e,t){let n=X(t).document;return{installedAgents:n.installedAgents,lifecycleReceipts:e.lifecycleReceipts,schemaVersion:2,self:n.self}}function to(e,t){if(!po(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&&!co(t.providerTargetKind))throw new Y(`lifecycle receipt "${e}" has an invalid providerTargetKind.`);if(!uo(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,...co(t.providerTargetKind)?{providerTargetKind:t.providerTargetKind}:{},schemaVersion:1,targetId:e,verifiedAt:t.verifiedAt,...Z(t.version)?{version:t.version}:{}}}function no(e){if(!po(e))throw new Y(`lifecycleReceipts must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,to(e,t)]))}function ro(e){if(e===void 0)return{};if(!po(e))throw new Y(`installedAgents must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,io(e,t)]))}function io(e,t){if(!po(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(!oo(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(fo)&&(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 so(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function ao(e){if(!po(e))return{};let t={...e};return lo(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 oo(e){return typeof e==`string`&&Za.has(e)}function so(e){return e===`package`||e===`cask`||e===`id`}function co(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function lo(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function Z(e){return typeof e==`string`&&e.length>0}function uo(e){return Z(e)&&Number.isFinite(Date.parse(e))}function fo(e){return typeof e==`string`}function po(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var mo=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}},ho=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:_o(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(_o(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),vo(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),f=!0,vo(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 mo({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(yo(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(_o(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(_o(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},go=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?Qa():X(e).document}async loadProjection(){return $a(await this.loadDocument())}async saveProjection(e){let t=eo(await this.loadDocument(),e);await this.persistence.save(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=to(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=to(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 _o(e){return JSON.parse(e)}function vo(e){if(X(_o(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function yo(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 bo={installedAgents:{},self:{}};function xo(){return p(I(),`state.json`)}async function So(){return Io()}async function Co(e){let t=await J({resource:`state`,scope:[`state`]});try{await Lo(e)}finally{await t()}}async function wo(e){return(await So()).installedAgents[e]}async function To(e){try{return await zo().getReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to read Quantex state file.`,{cause:e})}}async function Eo(e){let t=await J({resource:`state`,scope:[`state`]});try{await zo().setReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function Do(e,t){let n=await J({resource:`state`,scope:[`state`]});try{await zo().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 Oo(e){let t=await J({resource:`state`,scope:[`state`]});try{await zo().removeReceipt(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const ko=Object.freeze({read:To,remove:Oo,write:Eo});async function Ao(e){await Vo(t=>{t.installedAgents[e.agentName]=e})}async function jo(e){await Vo(t=>{delete t.installedAgents[e]})}async function Mo(){return(await So()).self}async function No(e){await Vo(t=>{t.self.installSource=e})}async function Po(){await Vo(e=>{delete e.self.installSource})}async function Fo(e,t){await Vo(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Io(){try{return await zo().loadProjection()}catch(e){if(Bo(e))return{...bo};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 Lo(e){try{await zo().saveProjection(e)}catch(e){throw e instanceof Q?e:new Q(`Failed to write Quantex state file.`,{cause:e})}}const Ro={async makeDirectory(e){await g(e,{recursive:!0})},async readText(e){return _(e,`utf8`)},async remove(e){await v(e,{force:!0})},async rename(e,t){await re(e,t)},async writeText(e,t){await ae(e,t,`utf8`)}};function zo(){let e=xo();return new go(new ho({backupFilePath:`${e}.v1.bak`,directoryPath:I(),fileSystem:Ro,stateFilePath:e,tempFileSuffix:String(n.pid)}))}function Bo(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Vo(e){let t=await J({resource:`state`,scope:[`state`]});try{let t=await Io();await e(t),await Lo(t)}finally{await t()}}const Ho=`self:install-source`,Uo={clearInstallSource:Po,getSelfState:Mo,setInstallSource:No};function Wo(e=Uo){return{async load(t){let n=Go(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return qo(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return Yo(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=Go(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),qo(void 0)}catch(e){return Yo(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=Go(t.key,t.signal);if(n)return n;if(!Ko(t.value))return Jo({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),qo({})}catch(e){return Yo(`Failed to persist the self install source.`,e)}}}}function Go(e,t){if(t.aborted)return Jo({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return Jo({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function Ko(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function qo(e){return{kind:`success`,value:e}}function Jo(e){return{error:e,kind:`failure`}}function Yo(e,t){return Jo({details:{cause:t},kind:`failed`,message:e})}const Xo=q,Zo=`/node_modules/${Xo}`;async function Qo(e){return es(e,!0)}async function $o(e){return es(e,!1)}async function es(e,t){let r=await ss(),i=n.execPath,a=r.foundPackageJson?os(r.packageRoot):os(``,i),o=e?.persistence??Wo(),s=e?.signal??new AbortController().signal,c=await is(o,s),l=t?await rs(c,a,{persistence:o,signal:s}):ts(c,a),u=await $t(),d=Na(e?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:ns(l),currentVersion:r.version||`1.1.2`,executablePath:i,installSource:l,packageRoot:r.packageRoot,updateChannel:d}}function ts(e,t){return t===`unknown`?e??t:t}function ns(e){return e===`binary`||e===`bun`||e===`npm`}async function rs(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??Wo()).save({key:Ho,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&as(e.error),t}return ts(e,t)}async function is(e,t){let n=await e.load({key:Ho,signal:t});if(n.kind===`failure`&&as(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 as(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 os(e,t=n.execPath){let r=us(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Zo)?`npm`:r?`source`:ds(t)?`binary`:`unknown`}async function ss(e=import.meta.url){let t=fs(e),n=f(t);for(;;){let e=p(n,`package.json`),t=await ls(e);if(t?.name===Xo)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.1.2`};let r=f(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:p(f(t),`package.json`),packageRoot:f(t),version:ka}}function cs(){return ka}async function ls(e){try{return JSON.parse(await _(e,`utf8`))}catch{return}}function us(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function ds(e){let t=u(us(e));return t!==`bun`&&t!==`bun.exe`}function fs(e){try{return se(e)}catch{return n.execPath}}async function ps(){try{return await J({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Ba(e))return;throw e}}function ms(){return{async acquire(e){if(e.signal.aborted)return hs(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return hs(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await ps();if(!t)return hs(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),hs(`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 hs(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function hs(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function gs(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 _s(e,r,i)||{isOverride:!1,registry:At,source:`fallback`}}async function _s(e,t,n){if(e===`bun`){let e=vs(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await ys(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=vs(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await xs(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function vs(e,t){for(let n of t){let t=F(e[n]);if(t)return t}}async function ys(e,t){let n=ws(t),r=t.XDG_CONFIG_HOME,i=Cs(e,`bunfig.toml`),a=[p(n,`.bunfig.toml`),r?p(r,`.bunfig.toml`):void 0];if(i){let e=await bs(i);if(e)return e}for(let e of a){if(!e||!s(e))continue;let t=await bs(e);if(t)return t}}async function bs(e){try{return Ts(await _(e,`utf8`))}catch{return}}async function xs(e,t){let n=ws(t),r=Cs(e,`.npmrc`),i=p(n,`.npmrc`);if(r){let e=await Ss(r);if(e)return e}if(s(i))return Ss(i)}async function Ss(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 Cs(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 ws(e){return e.HOME||e.USERPROFILE||oe()}function Ts(e){let t=Es(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(Es(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Es(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function Ds(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function Os(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function ks(e,t){if(Ms(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||Cn(e.targetVersion,e.targetVersion)!==0)&&!(!Ns(e.fetchedAtMs)||!Ns(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function As(e){let t=await e.cache.read({key:Ds(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return ks(t.value.value,e)}function js(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:Ds(e.metadata),signal:e.signal,value:e.metadata})}function Ms(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ns(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function Ps(e,t,n){let r=await $t();if(e.installSource===`binary`)try{let r=t?await Pa(e.updateChannel,t,n):await Pa(e.updateChannel,void 0,n),i=La(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 En(q,i,{...t?{context:t}:{},networkPort:n,registry:At});if(e.installSource===`bun`||e.installSource===`npm`){let o=await gs(e.installSource,r);return{managedRegistry:o?.registry,managedRegistryIsOverride:o?.isOverride??!1,packageTag:i,targetVersion:await En(q,i,{...t?{context:t}:{},networkPort:n,registry:o?.registry}),upstreamLatestVersion:a,verificationCommand:Hs(e.packageRoot)}}return{packageTag:i,targetVersion:a,upstreamLatestVersion:a}}async function Fs(e){let t=e?.facts??await Qo({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await Ps(t,e?.context,e?.networkPort),r=n.targetVersion?wn(n.targetVersion,t.currentVersion):!1,i={facts:t,status:zs(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await $t()).versionCacheTtlHours*60*60*1e3;await js({cache:e.metadataCache,metadata:Os({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function Is(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 Ls(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await Bs(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 Rs(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:Hs(e.packageRoot)},r=e.latestVersion?wn(e.latestVersion,e.currentVersion):!1;return{facts:t,status:zs(t,n,r),target:n,updateAvailable:r}}function zs(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Bs(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await Vs(e.target.verificationCommand,r);if(t)return t}return Vs([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await Tn(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return Tn(e.facts.executablePath)}async function Vs(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 Hs(e){if(e)return[n.execPath,p(e,`dist`,`cli.mjs`),`--version`]}async function Us(e,t,r,i,a=qs(t),o){let s=o?.networkPort,c=s&&o?await Ks(e,{...o,networkPort:s}):await Gs(e);if(c.kind===`failure`)return c.result;let l=c.binary;Ws(o);let d=await te(p(f(t),`.quantex-upgrade-`)),m=p(d,u(t)),h=`${t}.bak`,g=!1,_=!1;try{Ws(o);let s=await Js(t),c=tc(l);if(c!==nc(r))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${nc(r)}, got ${c}.`);if(await ae(m,l),Ws(o),n.platform===`win32`){let e=Ys(m,t,h,d,i,a);return _=e.success,e}await ee(m,s),Ws(o),await v(h,{force:!0}),await re(t,h),g=!0,await re(m,t);let u=await ec(t,i,o);return u.success?(g=!1,await v(h,{force:!0}),{success:!0}):(await $s(h,t),g=!1,u)}catch(e){if(g){try{await $s(h,t)}catch{}g=!1}if(e instanceof x)throw e;return $(Qs(e),`Failed to replace the current Quantex binary.`,e)}finally{(n.platform!==`win32`||!_)&&await v(d,{recursive:!0,force:!0})}}function Ws(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 Gs(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:ce.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function Ks(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:ce.from(n.value.body),kind:`success`}}function qs(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 Js(e){try{return(await ie(e)).mode&511}catch{return 493}}function Ys(e,t,r,i,a,o){try{return C([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Xs(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 Xs(e,t,n,r,i,a,o){let s=Zs(e),c=Zs(t),l=Zs(n),u=Zs(r),d=Zs(a??``),f=Zs(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 Zs(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Qs(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 $s(e,t){await v(t,{force:!0}),await re(e,t)}async function ec(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 nc(e){return e.trim().toLowerCase()}const rc={source:`binary`,canHandle:e=>ic(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):Ma(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=qs(e.facts.executablePath),i=t?await Us(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 Us(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 ic(e){return`facts`in e?e.facts.installSource:e.installSource}async function ac(e,t){return t.process?(await sc(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function oc(e,t,n){if(!await ac(e,n))return!1;let r=await sc([`bun`,`pm`,`-g`,`untrusted`],n,{forwardPipedOutput:!1,stdio:[`ignore`,`pipe`,`pipe`]});return!r||r.exitCode!==0?!1:Yt(r.stdout?new TextDecoder().decode(r.stdout):``).has(t)?ac([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function sc(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 cc={source:`bun`,canHandle:e=>lc(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 oc([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${q}@${n}`],q,t):await Mt(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 lc(e){return`facts`in e?e.facts.installSource:e.installSource}const uc={source:`npm`,canHandle:e=>dc(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 ac([`npm`,`install`,`-g`,`${q}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await jr(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 dc(e){return`facts`in e?e.facts.installSource:e.installSource}const fc={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}}},pc=[cc,uc,rc,fc];function mc(e){return pc.find(t=>t.canHandle(e))??fc}function hc(e,t,n=`stable`){return mc({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function gc(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:hc(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function _c(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:mc(e).getRecoveryHint(e,t)}async function vc(e){return Is(await Fs({updateChannel:e?.updateChannel}))}async function yc(e){let t=await $o({updateChannel:e?.updateChannel});return Is(await Fs({context:e?.context,facts:t}))}async function bc(e,t={}){let n=await Cc(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await xc();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 Ls(n,await mc(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 xc(){let e=await ps();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 Sc(e,t=n.execPath){return gc(e,t)}async function Cc(e){return e?`facts`in e?e:e.installSource===`binary`?Fs({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Rs(e):Fs()}function wc(e){return Oc({...e,error:null,ok:!0})}function Tc(e){return Oc({...e,ok:!1})}function Ec(e,t,n={}){let r=b();return r.cancelled&&!n.force||wa(Ca(e.action),r.outputMode,e,t,e=>console.log(e),e=>Ac(e)),e}function Dc(e,t={}){let n=b();if(!(n.cancelled&&!t.force))return Ta(Ca(e.action),n.outputMode,e,e=>Ac(e))}function Oc(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:cs()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function kc(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:cs()},target:e.target,type:e.type}}function Ac(e){let t=kc(e);return jc(t),t}function jc(e){console.log(JSON.stringify(e))}const{createColors:Mc,isColorSupported:Nc}=le;function Pc(){let e=b().colorMode??`auto`;return Mc(e===`always`?!0:e===`never`?!1:Nc)}const Fc=new Proxy({},{get(e,t){let n=Pc(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{Gi as $,ze as $t,Co as A,Tn as At,q as B,Zt as Bt,To as C,hr as Ct,So as D,Un as Dt,ko as E,Qn as Et,Fo as F,Qt as Ft,va as G,nt as Gt,ha as H,zt as Ht,Ba as I,en as It,ra as J,ot as Jt,ta as K,pt as Kt,Xa as L,tn as Lt,Ao as M,On as Mt,Eo as N,wn as Nt,jo as O,Cn as Ot,No as P,I as Pt,Wi as Q,E as Qt,ja as R,$t as Rt,wo as S,Sr as St,xo as T,sr as Tt,ga as U,F as Ut,ma as V,Bt as Vt,_a as W,kt as Wt,Ki as X,$e as Xt,na as Y,it as Yt,Ui as Z,Qe as Zt,os as _,Ur as _t,Ec as a,Pe as an,Fi as at,Wo as b,Ar as bt,yc as c,b as cn,Ni as ct,_c as d,me as dn,wi as dt,x as en,Ji as et,Is as f,fe as fn,Ci as ft,ns as g,$r as gt,ms as h,oi as ht,Dc as i,Se as in,Ii as it,Do as j,En as jt,Oo as k,Dn as kt,bc as l,_e as ln,B as lt,As as m,si as mt,Tc as n,w as nn,V as nt,Sc as o,Ce as on,Pi as ot,Fs as p,mi as pt,ia as q,rt as qt,wc as r,C as rn,Li as rt,vc as s,ge as sn,Mi as st,Fc as t,S as tn,qi as tt,gc as u,pe as un,Ai as ut,cs as v,Rr as vt,Mo as w,mr as wt,Q as x,Cr as xt,$o as y,Lr as yt,Ma as z,nn as zt};
@@ -1,3 +1,3 @@
1
- import{V as e,W as t,a as n,r,t as i}from"./color-BrKNxICe.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(`
1
+ import{V as e,W as t,a as n,r,t as i}from"./color-BGZ_5A6s.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};
@@ -0,0 +1 @@
1
+ import{t as e}from"./commands-DjMechiz.mjs";export{e as commandsCommand};
@@ -1,3 +1,3 @@
1
- import{Bt as e,It as t,Lt as n,Rt as r,Ut as i,a,n as o,r as s,t as c,zt as l}from"./color-BrKNxICe.mjs";async function u(c,u,f){if(!c)return a(s({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),d);switch(c){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 r())[u];return a(s({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`&&!t(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`&&!i(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 e={};try{e=await r()}catch{}return e[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?i(f):f,await l(e),a(s({action:`config`,data:{action:`set`,key:u,value:e[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await l(e),a(s({action:`config`,data:{action:`reset`,config:e},target:{kind:`config`}}),d);default:return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(c.bold(`
1
+ import{Bt as e,It as t,Lt as n,Rt as r,Ut as i,a,n as o,r as s,t as c,zt as l}from"./color-BGZ_5A6s.mjs";async function u(c,u,f){if(!c)return a(s({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),d);switch(c){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 r())[u];return a(s({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`&&!t(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`&&!i(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 e={};try{e=await r()}catch{}return e[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?i(f):f,await l(e),a(s({action:`config`,data:{action:`set`,key:u,value:e[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await l(e),a(s({action:`config`,data:{action:`reset`,config:e},target:{kind:`config`}}),d);default:return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(c.bold(`
2
2
  Current Configuration:
3
3
  `)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
@@ -1,3 +1,3 @@
1
- import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{B as n,Nt as r,Qt as i,a,c as o,d as s,r as c,t as l}from"./color-BrKNxICe.mjs";import{n as u,t as d}from"./provider-observations-C8RmlqtY.mjs";import{n as f}from"./lifecycle-observations-DU3WbcUM.mjs";import{t as p}from"./agent-inspection-Cw-iSnoU.mjs";async function m(){let n=i(),l,m,_;try{[l,m,_]=await n.run(()=>Promise.all([d({context:n.context}),o({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 a(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(`
1
+ import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{$t as n,B as r,Nt as i,a,c as o,d as s,r as c,t as l}from"./color-BGZ_5A6s.mjs";import{n as u,t as d}from"./provider-observations-BG3wn0dF.mjs";import{n as f}from"./lifecycle-observations-C1OLPUAV.mjs";import{t as p}from"./agent-inspection-PCTn6Nc6.mjs";async function m(){let r=n(),l,m,_;try{[l,m,_]=await r.run(()=>Promise.all([d({context:r.context}),o({context:r.context}),f(r.context)]))}finally{r.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?i(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 a(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
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};
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 n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${r}@${n}`]:e===`npm`?[`npm install -g ${r}@${n}`]:[]}export{m as doctorCommand};
@@ -0,0 +1 @@
1
+ import{t as e}from"./ensure-NxyYe2vm.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-BrKNxICe.mjs";import{v as s}from"./provider-evidence-CDQ6s2Da.mjs";import{t as c}from"./agent-installation-BiaOimkM.mjs";import{r as l}from"./lifecycle-observations-DU3WbcUM.mjs";import{n as u}from"./agents-DrmnXNfn.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-DBsy2Ysd.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};
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-BGZ_5A6s.mjs";import{v as s}from"./provider-evidence-D7aplCd6.mjs";import{t as c}from"./agent-installation-Dp03CAn2.mjs";import{r as l}from"./lifecycle-observations-C1OLPUAV.mjs";import{n as u}from"./agents-BrJ8oEkB.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-C1JWMNEt.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};