quantex-cli 1.13.1 → 1.13.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 (63) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/{agent-inspection-D8YF0G7l.mjs → agent-inspection-BGC8hn92.mjs} +1 -1
  4. package/dist/agents-BPG1DaPt.mjs +1 -0
  5. package/dist/{agents-1xVrcX2T.mjs → agents-M0IK-EAw.mjs} +1 -1
  6. package/dist/capabilities-DdzOucOL.mjs +1 -0
  7. package/dist/{capabilities-B9akfoAg.mjs → capabilities-w7Fbc-bE.mjs} +1 -1
  8. package/dist/{cli-read-projection-DBrxiinB.mjs → cli-read-projection-3NGMRhuS.mjs} +1 -1
  9. package/dist/cli.mjs +1 -1
  10. package/dist/{commands-DdO5wqaC.mjs → commands-D3-X-CL4.mjs} +1 -1
  11. package/dist/commands-DSjvy4Bk.mjs +1 -0
  12. package/dist/{config-Dp5vWO4u.mjs → config-DiKH7R9Y.mjs} +1 -1
  13. package/dist/{core-installation-cli-BU30R3W7.mjs → core-installation-cli-BAkFQTw8.mjs} +1 -1
  14. package/dist/{detect-Dou6fit1.mjs → detect-CbD8V1su.mjs} +1 -1
  15. package/dist/{doctor-2AK-8DXd.mjs → doctor-CmTohDAe.mjs} +1 -1
  16. package/dist/{ensure-CHQo_W-B.mjs → ensure-k2txyX68.mjs} +1 -1
  17. package/dist/ensure-tfMV3Ohr.mjs +1 -0
  18. package/dist/{executable-search-paths-Do0aoA1z.mjs → executable-search-paths-CfJ3prUX.mjs} +1 -1
  19. package/dist/file-store-C7Ak4t_P.mjs +2 -0
  20. package/dist/index.mjs +1 -1
  21. package/dist/{info-1VdVWaZU.mjs → info-MZu-jL3s.mjs} +1 -1
  22. package/dist/inspect-Bwwy2d7a.mjs +1 -0
  23. package/dist/{inspect-Cmh8P2cH.mjs → inspect-evUWakYc.mjs} +1 -1
  24. package/dist/{install-CllMI5Vl.mjs → install-D6HUqnaB.mjs} +1 -1
  25. package/dist/{installation-compatibility-vSytV42c.mjs → installation-compatibility--84wtWNO.mjs} +1 -1
  26. package/dist/installation-compatibility-D4ZJoPCT.mjs +1 -0
  27. package/dist/{installation-production-DxkcDNwa.mjs → installation-production-CQgjlxZO.mjs} +1 -1
  28. package/dist/{installation-provider-registry-CpJjzAO7.mjs → installation-provider-registry-WhPZzmCo.mjs} +1 -1
  29. package/dist/lifecycle-observations-xZ--ogpK.mjs +1 -0
  30. package/dist/{lifecycle-policy-CPJ-uQku.mjs → lifecycle-policy-BMJz8c77.mjs} +1 -1
  31. package/dist/{list-CmbDbwzJ.mjs → list-C0ELcSkZ.mjs} +1 -1
  32. package/dist/{output-C0TF6WTW.mjs → output-PUVIMxAA.mjs} +3 -3
  33. package/dist/{package-manager-BdBKbZci.mjs → package-manager-NlPhhpQl.mjs} +1 -1
  34. package/dist/production-observation-9e2raBHv.mjs +1 -0
  35. package/dist/{provider-evidence-C_k-kzoO.mjs → provider-evidence-D9Y79LD5.mjs} +1 -1
  36. package/dist/provider-observation-registry-KrH9TMtQ.mjs +3 -0
  37. package/dist/{provider-observations-2EeSQRbX.mjs → provider-observations-CIGwqiZL.mjs} +1 -1
  38. package/dist/{providers-BrKmtcci.mjs → providers-GfRcOIdh.mjs} +1 -1
  39. package/dist/resolve-DLdjUMyk.mjs +1 -0
  40. package/dist/{resolve-BVga-Ro4.mjs → resolve-S-TdJhLk.mjs} +1 -1
  41. package/dist/{schema-ShDMW_sj.mjs → schema-B4yk5NPn.mjs} +1 -1
  42. package/dist/schema-urQvQbNJ.mjs +1 -0
  43. package/dist/{uninstall-SDNnTH6W.mjs → uninstall-C04YMfwl.mjs} +1 -1
  44. package/dist/unmanaged-install-compatibility-D3hnfPRi.mjs +1 -0
  45. package/dist/update-CMjaldgI.mjs +1 -0
  46. package/dist/{upgrade-CykBo6ap.mjs → upgrade-BrOGjSft.mjs} +1 -1
  47. package/package.json +1 -1
  48. package/dist/agents-BdSn7xtP.mjs +0 -1
  49. package/dist/capabilities-CNRjwfBz.mjs +0 -1
  50. package/dist/commands-BdWPLakC.mjs +0 -1
  51. package/dist/ensure-CgQQCiv-.mjs +0 -1
  52. package/dist/file-store-oHCTTnLn.mjs +0 -2
  53. package/dist/inspect-DvcoLIJ6.mjs +0 -1
  54. package/dist/installation-compatibility-X6JPRI5_.mjs +0 -1
  55. package/dist/lifecycle-observations-D78ZkqEX.mjs +0 -1
  56. package/dist/production-observation-v7S1oqsN.mjs +0 -1
  57. package/dist/provider-observation-registry-CgFXbZHd.mjs +0 -3
  58. package/dist/resolve-BvxcLaLm.mjs +0 -1
  59. package/dist/schema-Dg3sXQ1u.mjs +0 -1
  60. package/dist/unmanaged-install-compatibility-gE_Y2JWk.mjs +0 -1
  61. package/dist/update-B966hXRX.mjs +0 -1
  62. /package/dist/{lifecycle-errors-Elpn7QSu.mjs → lifecycle-errors-D9MEtJ8Y.mjs} +0 -0
  63. /package/dist/{version-cache-BPRXYft0.mjs → version-cache-BbKTS491.mjs} +0 -0
@@ -1,5 +1,5 @@
1
- import{i as e,n as t,o as n,r,t as i}from"./child-process-DzIdysOm.mjs";import{d as a,l as o,n as s}from"./npm-PO9Nwgt_.mjs";import{a as c,c as l,n as u,r as d,t as f}from"./file-store-oHCTTnLn.mjs";import{n as p,r as m,t as h}from"./registry-vhJzh8dW.mjs";import{s as ee,t as te}from"./schema-BBnWVY6R.mjs";import{n as g,r as ne}from"./cli-context-DI43ouBg.mjs";import{a as _,t as v}from"./config-jsaRCEWF.mjs";import{existsSync as re}from"node:fs";import{basename as y,dirname as b,join as x,win32 as S}from"node:path";import C from"node:process";import{chmod as ie,mkdir as ae,mkdtemp as oe,readFile as w,realpath as se,rename as ce,rm as T,stat as le,writeFile as ue}from"node:fs/promises";import{homedir as de}from"node:os";import{createHash as fe}from"node:crypto";import{fileURLToPath as pe}from"node:url";import{gunzipSync as me,inflateRawSync as he}from"node:zlib";import{Buffer as ge}from"node:buffer";var _e=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function ve(e,t,n={}){let r=await ye(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function ye(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;E(i);let a=await _();E(i);let o=a.versionCacheTtlHours*60*60*1e3,s=r.cacheMode??g().cacheMode,c=s===`no-cache`?{entries:{}}:await Te();E(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return E(i),Oe(l,o),l.body;let d=await be(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(E(i),!d)return l&&(E(i),Oe(l,o)),l?.body;if(d.status===304&&l)return E(i),c.entries[t]={...l,expiresAt:u+o,fetchedAt:u},s!==`no-cache`&&(E(i),await Ee(c)),E(i),ke(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(E(i),Oe(l,o)),l?.body;E(i);let f={body:d.body,etag:d.etag,expiresAt:u+o,fetchedAt:u};return s!==`no-cache`&&(c.entries[t]=f,E(i),await Ee(c)),E(i),ke(u,u+o),d.body}async function be(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 xe(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof i)throw e;if(r===t.retries)return}}async function xe(e,t){let n=t.networkPort;if(n)return Se(e,{...t,networkPort:n});let r=new AbortController,a,o,s,c,l,u=new Promise((e,t)=>c=t),d=()=>l??=we(Promise.resolve().then(async()=>{a?await a.cancel(s):o?.body&&!o.body.locked&&await o.body.cancel(s)}).then(()=>void 0).catch(()=>void 0),250),f=e=>{let n=e===`cancelled`?D(t.signal):e===`invocation-timeout`?new i({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new _e(t.timeoutMs),a=s===void 0;return(a||s instanceof _e&&n instanceof i)&&(s=n),a&&(r.abort(s),d().finally(()=>c(s))),d()},p=()=>void f(`cancelled`);t.signal?.addEventListener(`abort`,p,{once:!0});let m=t.context?.registerCleanup?.({cleanup:()=>f(`cancelled`),force:d}),h=Date.now()+t.timeoutMs,ee=setTimeout(()=>void f(`network-timeout`),t.timeoutMs),te=t.invocationDeadline===void 0?void 0:setTimeout(()=>void f(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),g=async()=>{if(s||(t.signal?.aborted?await f(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await f(`invocation-timeout`):Date.now()>=h&&await f(`network-timeout`),s))throw s};try{t.signal?.aborted&&await f(`cancelled`);let n=(async()=>{o=await fetch(e,{headers:t.headers,signal:r.signal}),await g();let n=o.status,i=o.headers?.get?.(`etag`)??void 0;if(!o.ok)return await d(),{etag:i,ok:!1,status:n,valid:!0};let s=await Ce(o,e=>a=e);await g();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await g(),{body:s,etag:i,ok:!0,status:n,valid:c}})();try{return await Promise.race([n,u])}catch(e){throw s?(await d(),s):e}}finally{clearTimeout(ee),te&&clearTimeout(te),t.signal?.removeEventListener(`abort`,p),m?.()}}async function Se(e,t){if(t.signal?.aborted)throw D(t.signal);let n=Date.now();if(t.invocationDeadline!==void 0&&t.invocationDeadline<=n)throw new i({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)),a=t.signal??new AbortController().signal,o=await t.networkPort.request({headers:t.headers,signal:a,timeoutMs:r,url:e});if(o.kind===`failure`)throw t.signal?.aborted||o.error.kind===`cancelled`?D(t.signal):o.error.kind===`timed-out`?t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?new i({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new _e(t.timeoutMs):Error(o.error.message);let s=new TextDecoder().decode(o.value.body),c=!0;if(t.mode===`json`&&o.value.status>=200&&o.value.status<300)try{JSON.parse(s)}catch{c=!1}return{body:o.value.status>=200&&o.value.status<300?s:void 0,etag:o.value.headers.etag,ok:o.value.status>=200&&o.value.status<300,status:o.value.status,valid:c}}async function Ce(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 we(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function E(e){if(e?.aborted)throw D(e)}function D(e){return e?.reason instanceof i?e.reason:new i({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 Te(){try{return JSON.parse(await w(De(),`utf8`))}catch{return{entries:{}}}}async function Ee(e){await ae(x(v(),`cache`),{recursive:!0}),await ue(De(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function De(){return x(v(),`cache`,`versions.json`)}function Oe(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);ne({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function ke(e,t){ne({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Ae=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function je(e,t){if(t)return t(e);let n=e.trim().split(`
2
- `)[0],r=n.match(Ae);return r?r[1]:n||void 0}function O(e,t){return ee(e,t)===1}function Me(e,t,n){let r=t?.command??[e,`--version`];return!n||r[0]!==e?[...r]:[n,...r.slice(1)]}async function Ne(e,t,n){return Pe(e,t,n)}async function Pe(i,a,o,s){let c=Me(i,a,s);try{let t=n(c,{detached:o!==void 0&&C.platform!==`win32`}),{exitCode:i,stderr:s,stdout:l}=o?await e(t,o):await r(t);return i===0?je(l,a?.parser)??je(s,a?.parser):void 0}catch(e){if(t(e))throw e;return}}async function Fe(e,t=`latest`,n={}){return Ie(e,t,n)}async function Ie(e,n=`latest`,r={}){try{let t=m(r.registry)??`https://registry.npmjs.org`,i=await ve(p(e,n,t),`npm:${t}:${e}:${n}`,{cacheMode:r.cacheMode,context:r.context,networkPort:r.networkPort});if(r.context?.signal.aborted)throw k(r.context.signal);return i?.version}catch(e){if(t(e))throw e;if(r.context?.signal.aborted)throw k(r.context.signal);return}}async function Le(e,t){return l(e,t)}async function Re(e,t){if(e){if(t?.signal.aborted)throw k(t.signal);try{let n=await se(e);if(t?.signal.aborted)throw k(t.signal);return n}catch{if(t?.signal.aborted)throw k(t.signal);return e}}}function k(e){return new i({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}const A={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`},j={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`},M={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},ze={brew:M,bun:M,cargo:M,deno:M,mise:M,npm:M,pip:M,uv:M,winget:M},Be=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],Ve=[{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:ze,required:Be,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:A,name:`capabilities`,ndjsonEventSchema:j},{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:A,name:`commands`,ndjsonEventSchema:j},{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:A,name:`config`,ndjsonEventSchema:j},{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:Be,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:A,name:`doctor`,ndjsonEventSchema:j},{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:A,name:`exec`,ndjsonEventSchema:j},{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:A,name:`ensure`,ndjsonEventSchema:j},{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:A,name:`info`,ndjsonEventSchema:j},{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:A,name:`inspect`,ndjsonEventSchema:j},{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:A,name:`install`,ndjsonEventSchema:j},{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:A,name:`list`,ndjsonEventSchema:j},{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:A,name:`resolve`,ndjsonEventSchema:j},{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:A,name:`schema`,ndjsonEventSchema:j},{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:A,name:`update`,ndjsonEventSchema:j},{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:A,name:`uninstall`,ndjsonEventSchema:j},{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:A,name:`upgrade`,ndjsonEventSchema:j}],He=[{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`}],Ue=new Map(He.map(e=>[e.id,e])),We=new Map(Ve.map(e=>[e.name,e])),N=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],Ge=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],Ke=[P({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`}),P({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),P({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`}),P({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),P({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`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Ge,name:`ensure`,summary:`Ensure an agent is installed`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`info`,summary:`Show human-friendly agent details`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`inspect`,summary:`Return structured agent state`}),P({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Ge,name:`install`,summary:`Install one or more agents`}),P({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`list`,summary:`List supported agents`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),P({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`}),P({aliases:[`u`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`[agent]`}],description:`更新指定 agent`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`nonInteractive`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`update`,options:[{description:`Update all installed agents`,flags:`--all`,id:`all`,value:`boolean`},{description:`With --all, limit the batch to persisted Quantex-managed agents`,flags:`--managed`,id:`managed`,value:`boolean`}],summary:`Update one or all agents`}),P({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`}),P({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 qe(){return Ke}function Je(){return He}function Ye(e){let t={...e};for(let n of He){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 Xe(e){return{flags:$e(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function Ze(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=Ue.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=F(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=F(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}`);et(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=$e(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 P(e){let t=Qe(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:$e(n)}}function Qe(e){let t=We.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function $e(e){return[...e.catalogTokens,...e.options.map(e=>F(e.flags)),...e.globalOptions.map(t=>{let n=Ue.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return F(n.flags)})]}function F(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function et(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${F(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${F(e.flags)}`)}const tt=new Map(qe().map(e=>[e.name,at(e.presenterId)]));function nt(e){return tt.get(e)}function rt(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)??ot(n));return}e?e.presentHuman(n,r):r(n)}function it(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function at(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:ot}}function ot(e){return{action:e.action,data:e,target:e.target,type:`result`}}const I=`quantex-cli`,st=`https://github.com/Drswith/quantex-cli`,ct=`1.13.1`,lt=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`].map(ut);function ut(e){return`${e}.${L(e)}`}function L(e){return B(e)?.platform===`win32`?`zip`:`tar.gz`}function R(e){let t=e.endsWith(`.zip`)?`.zip`:e.endsWith(`.tar.gz`)?`.tar.gz`:void 0;if(!t)return;let n=e.slice(0,-t.length),r=B(n),i=t===`.zip`?`zip`:`tar.gz`;return r&&L(n)===i?n:void 0}function dt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
3
- `)}\n`}function ft(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function z(e){return B(R(e)??e)}function pt(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function mt(e){return e.includes(`beta`)?`beta`:`stable`}function ht(e){let t=pt(e.repositoryUrl),n=mt(e.version),r=e.files.map(n=>{let r=z(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);if(!R(n.name))throw Error(`Release asset is not a compressed binary archive: ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function gt(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of lt)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!z(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}function _t(e,t){if(R(ut(t))!==t)throw Error(`Invalid expected release binary name: ${t}.`);return L(t)===`zip`?yt(e,t):vt(e,t)}function B(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function vt(e,t){let n;try{n=me(e)}catch(e){throw Error(`Release archive is not a valid gzip stream.`,{cause:e})}let r=0,i;for(;r+512<=n.length;){let e=n.subarray(r,r+512);if(e.every(e=>e===0))break;let a=V(e.subarray(0,100)),o=V(e.subarray(345,500)),s=o?`${o}/${a}`:a,c=e[156],l=xt(e.subarray(124,136)),u=r+512,d=u+l;if(!a||d>n.length)throw Error(`Release archive contains an invalid tar entry.`);if(c!==0&&c!==48)throw Error(`Release archive must contain only a regular file.`);if(s!==t||i)throw Error(`Release archive must contain exactly ${t}.`);i=n.slice(u,d),r=u+Math.ceil(l/512)*512}if(!i)throw Error(`Release archive does not contain ${t}.`);return i}function yt(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=0,i;for(;r+4<=e.length;){let a=U(n,r);if(a===wt){W(n,r,30);let a=H(n,r+6),o=H(n,r+8),s=U(n,r+14),c=U(n,r+18),l=U(n,r+22),u=H(n,r+26),d=H(n,r+28),f=r+30,p=f+u+d;if(W(n,r,30+u+d+c),a&1||a&8)throw Error(`Release archive contains an unsupported zip entry.`);if(new TextDecoder().decode(e.subarray(f,f+u))!==t||i)throw Error(`Release archive must contain exactly ${t}.`);let m=e.subarray(p,p+c),h;try{if(o===0)h=m;else if(o===8)h=he(m);else throw Error(`unsupported compression method`)}catch(e){throw Error(`Release archive contains an invalid zip entry.`,{cause:e})}if(h.length!==l||St(h)!==s)throw Error(`Release archive contains an invalid zip entry.`);i=h.slice(),r=p+c;continue}if(a===Tt){if(!i)throw Error(`Release archive does not contain ${t}.`);return bt(e,n,r,t),i}throw Error(`Release archive is not a valid zip file.`)}throw Error(`Release archive does not contain ${t}.`)}function bt(e,t,n,r){let i=n,a=0;for(;i+4<=e.length&&U(t,i)===Tt;){W(t,i,46);let n=H(t,i+28),o=H(t,i+30),s=H(t,i+32);if(W(t,i,46+n+o+s),new TextDecoder().decode(e.subarray(i+46,i+46+n))!==r||a>0)throw Error(`Release archive must contain exactly ${r}.`);a+=1,i+=46+n+o+s}if(W(t,i,22),U(t,i)!==Et||a!==1||H(t,i+10)!==a)throw Error(`Release archive is not a valid zip file.`)}function V(e){let t=e.indexOf(0);return new TextDecoder().decode(t===-1?e:e.subarray(0,t))}function xt(e){let t=V(e).trim();if(!/^[0-7]+$/u.test(t))throw Error(`Release archive contains an invalid tar size.`);let n=Number.parseInt(t,8);if(!Number.isSafeInteger(n)||n<0)throw Error(`Release archive contains an unsafe tar size.`);return n}function H(e,t){return W(e,t,2),e.getUint16(t,!0)}function U(e,t){return W(e,t,4),e.getUint32(t,!0)}function W(e,t,n){if(t<0||n<0||t+n>e.byteLength)throw Error(`Release archive contains an invalid zip entry.`)}function St(e){let t=4294967295;for(let n of e)t=Ct[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}const Ct=Array.from({length:256},(e,t)=>{let n=t;for(let e=0;e<8;e+=1)n=n&1?n>>>1^3988292384:n>>>1;return n>>>0}),wt=67324752,Tt=33639248,Et=101010256;function Dt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Ot(e=C.execPath){let t=kt(e);return t?ut(t):void 0}function kt(e=C.execPath){if(y(Dt(e)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(C.platform===`darwin`)return C.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(C.platform===`linux`)return C.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function At(e=C.execPath){let t=Ot(e);if(t)return`${st}/releases/latest/download/${t}`}function jt(e,t,n=C.env){return e||(n.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:n.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:t===`beta`?`beta`:`stable`)}async function Mt(e,t,n,r){let i=await ve(await Nt(e,t,n,r),`self:manifest:${e}`,{cacheMode:r,context:t,networkPort:n});if(!i)throw Error(`Failed to download release manifest.`);return i}async function Nt(e,t,n,r){if(e===`stable`)return`${st}/releases/latest/download/manifest.json`;let i=(await Pt(e,t,n,r)).assets.find(e=>e.name===`manifest.json`);if(!i?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return i.browser_download_url}async function Pt(e,t,n,r){let i=It();if(!i)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let a=await ve(`https://api.github.com/repos/${i}/releases?per_page=20`,`self:github-releases`,{cacheMode:r,context:t,networkPort:n});if(!a)throw Error(`Failed to query GitHub releases.`);let o=a.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!o)throw Error(`No GitHub release was found for the ${e} channel.`);return o}function Ft(e,t=C.execPath){let n=C.platform,r=C.arch===`arm64`?`arm64`:`x64`,i=Ot(t);return e.assets.find(e=>e.platform===n&&e.arch===r&&(!i||e.name===i))}function It(){return st.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var G=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const Lt={installedAgents:{},self:{}};function Rt(){return u(v())}async function zt(){return Qt()}async function Bt(e){let t=await d({resource:`state`,scope:[`state`]});try{await $t(e)}finally{await t()}}async function Vt(e){return(await zt()).installedAgents[e]}async function Ht(e){try{return await K().getReceipt(e)}catch(e){throw e instanceof G?e:new G(`Failed to read Quantex state file.`,{cause:e})}}async function Ut(e){let t=await d({resource:`state`,scope:[`state`]});try{await K().setReceipt(e)}catch(e){throw e instanceof G?e:new G(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function Wt(e){let t=await d({resource:`state`,scope:[`state`]});try{await K().removeReceipt(e)}catch(e){throw e instanceof G?e:new G(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const Gt=Object.freeze({read:Ht,remove:Wt,write:Ut});async function Kt(e){await q(t=>{t.installedAgents[e.agentName]=e})}async function qt(e){await q(t=>{delete t.installedAgents[e]})}async function Jt(){return(await zt()).self}async function Yt(e){await q(t=>{t.self.installSource=e})}async function Xt(){await q(e=>{delete e.self.installSource})}async function Zt(e,t){await q(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Qt(){try{return await K().loadProjection()}catch(e){if(en(e))return{...Lt};throw e instanceof G?e:e instanceof te?new G(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new G(`Failed to read Quantex state file.`,{cause:e})}}async function $t(e){try{await K().saveProjection(e)}catch(e){throw e instanceof G?e:new G(`Failed to write Quantex state file.`,{cause:e})}}function K(){return f(v())}function en(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function q(e){let t=await d({resource:`state`,scope:[`state`]});try{let t=await Qt();await e(t),await $t(t)}finally{await t()}}const tn=`self:install-source`,nn={clearInstallSource:Xt,getSelfState:Jt,setInstallSource:Yt};function rn(e=nn){return{async load(t){let n=an(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return sn(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return cn(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=an(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),sn(void 0)}catch(e){return cn(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=an(t.key,t.signal);if(n)return n;if(!on(t.value))return J({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),sn({})}catch(e){return cn(`Failed to persist the self install source.`,e)}}}}function an(e,t){if(t.aborted)return J({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return J({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function on(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function sn(e){return{kind:`success`,value:e}}function J(e){return{error:e,kind:`failure`}}function cn(e,t){return J({details:{cause:t},kind:`failed`,message:e})}const ln=I,un=`/node_modules/${ln}`;async function dn(e){return pn(e,!0)}async function fn(e){return pn(e,!1)}async function pn(e,t){let n=await bn(),r=C.execPath,i=n.foundPackageJson?yn(n.packageRoot):yn(``,r),a=e?.persistence??rn(),o=e?.signal??new AbortController().signal,s=await _n(a,o),c=t?await gn(s,i,{persistence:a,signal:o}):mn(s,i),l=await _(),u=jt(e?.updateChannel,l.selfUpdateChannel);return{canAutoUpdate:hn(c),currentVersion:n.version||`1.13.1`,executablePath:r,installSource:c,packageRoot:n.packageRoot,updateChannel:u}}function mn(e,t){return t===`unknown`?e??t:t}function hn(e){return e===`binary`||e===`bun`||e===`npm`}async function gn(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??rn()).save({key:tn,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&vn(e.error),t}return mn(e,t)}async function _n(e,t){let n=await e.load({key:tn,signal:t});if(n.kind===`failure`&&vn(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 vn(e){let t=e.details?.cause;throw t instanceof Error?t:e.kind===`cancelled`?new i({kind:`cancelled`,reason:e.message}):e.kind===`timed-out`?new i({kind:`timed-out`,timeoutMs:0}):Error(e.message)}function yn(e,t=C.execPath){let n=Cn(e);return n.includes(`/.bun/install/global/`)?`bun`:n.includes(un)?`npm`:n?`source`:wn(t)?`binary`:`unknown`}async function bn(e=import.meta.url){let t=Tn(e),n=b(t);for(;;){let e=x(n,`package.json`),t=await Sn(e);if(t?.name===ln)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.13.1`};let r=b(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:x(b(t),`package.json`),packageRoot:b(t),version:ct}}function xn(){return ct}async function Sn(e){try{return JSON.parse(await w(e,`utf8`))}catch{return}}function Cn(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function wn(e){let t=y(Cn(e));return t!==`bun`&&t!==`bun.exe`}function Tn(e){try{return pe(e)}catch{return C.execPath}}async function En(){try{return await d({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(c(e))return;throw e}}function Dn(){return{async acquire(e){if(e.signal.aborted)return Y(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return Y(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await En();if(!t)return Y(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),Y(`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 Y(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function Y(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function On(e,t,n=C.env,r=C.cwd()){if(e!==`bun`&&e!==`npm`)return;let i=m(n.QTX_SELF_UPDATE_REGISTRY);return i?{isOverride:!0,registry:i,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await kn(e,n,r)||{isOverride:!1,registry:h,source:`fallback`}}async function kn(e,t,n){if(e===`bun`){let e=An(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await jn(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=An(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Nn(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function An(e,t){for(let n of t){let t=m(e[n]);if(t)return t}}async function jn(e,t){let n=In(t),r=t.XDG_CONFIG_HOME,i=Fn(e,`bunfig.toml`),a=[x(n,`.bunfig.toml`),r?x(r,`.bunfig.toml`):void 0];if(i){let e=await Mn(i);if(e)return e}for(let e of a){if(!e||!re(e))continue;let t=await Mn(e);if(t)return t}}async function Mn(e){try{return Ln(await w(e,`utf8`))}catch{return}}async function Nn(e,t){let n=In(t),r=Fn(e,`.npmrc`),i=x(n,`.npmrc`);if(r){let e=await Pn(r);if(e)return e}if(re(i))return Pn(i)}async function Pn(e){try{let t=(await w(e,`utf8`)).split(`
1
+ import{i as e,n as t,o as n,r,t as i}from"./child-process-DzIdysOm.mjs";import{d as a,l as o,n as s}from"./npm-PO9Nwgt_.mjs";import{a as c,c as l,n as u,r as d,t as f}from"./file-store-C7Ak4t_P.mjs";import{n as p,r as m,t as h}from"./registry-vhJzh8dW.mjs";import{s as ee,t as te}from"./schema-BBnWVY6R.mjs";import{n as g,r as ne}from"./cli-context-DI43ouBg.mjs";import{a as _,t as v}from"./config-jsaRCEWF.mjs";import{existsSync as re}from"node:fs";import{basename as y,dirname as b,join as x,win32 as S}from"node:path";import C from"node:process";import{chmod as ie,mkdir as ae,mkdtemp as oe,readFile as w,realpath as se,rename as ce,rm as T,stat as le,writeFile as ue}from"node:fs/promises";import{homedir as de}from"node:os";import{createHash as fe}from"node:crypto";import{fileURLToPath as pe}from"node:url";import{gunzipSync as me,inflateRawSync as he}from"node:zlib";import{Buffer as ge}from"node:buffer";var _e=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function ve(e,t,n={}){let r=await ye(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function ye(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;E(i);let a=await _();E(i);let o=a.versionCacheTtlHours*60*60*1e3,s=r.cacheMode??g().cacheMode,c=s===`no-cache`?{entries:{}}:await Te();E(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return E(i),Oe(l,o),l.body;let d=await be(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(E(i),!d)return l&&(E(i),Oe(l,o)),l?.body;if(d.status===304&&l)return E(i),c.entries[t]={...l,expiresAt:u+o,fetchedAt:u},s!==`no-cache`&&(E(i),await Ee(c)),E(i),ke(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(E(i),Oe(l,o)),l?.body;E(i);let f={body:d.body,etag:d.etag,expiresAt:u+o,fetchedAt:u};return s!==`no-cache`&&(c.entries[t]=f,E(i),await Ee(c)),E(i),ke(u,u+o),d.body}async function be(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 xe(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof i)throw e;if(r===t.retries)return}}async function xe(e,t){let n=t.networkPort;if(n)return Se(e,{...t,networkPort:n});let r=new AbortController,a,o,s,c,l,u=new Promise((e,t)=>c=t),d=()=>l??=we(Promise.resolve().then(async()=>{a?await a.cancel(s):o?.body&&!o.body.locked&&await o.body.cancel(s)}).then(()=>void 0).catch(()=>void 0),250),f=e=>{let n=e===`cancelled`?D(t.signal):e===`invocation-timeout`?new i({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new _e(t.timeoutMs),a=s===void 0;return(a||s instanceof _e&&n instanceof i)&&(s=n),a&&(r.abort(s),d().finally(()=>c(s))),d()},p=()=>void f(`cancelled`);t.signal?.addEventListener(`abort`,p,{once:!0});let m=t.context?.registerCleanup?.({cleanup:()=>f(`cancelled`),force:d}),h=Date.now()+t.timeoutMs,ee=setTimeout(()=>void f(`network-timeout`),t.timeoutMs),te=t.invocationDeadline===void 0?void 0:setTimeout(()=>void f(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),g=async()=>{if(s||(t.signal?.aborted?await f(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await f(`invocation-timeout`):Date.now()>=h&&await f(`network-timeout`),s))throw s};try{t.signal?.aborted&&await f(`cancelled`);let n=(async()=>{o=await fetch(e,{headers:t.headers,signal:r.signal}),await g();let n=o.status,i=o.headers?.get?.(`etag`)??void 0;if(!o.ok)return await d(),{etag:i,ok:!1,status:n,valid:!0};let s=await Ce(o,e=>a=e);await g();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await g(),{body:s,etag:i,ok:!0,status:n,valid:c}})();try{return await Promise.race([n,u])}catch(e){throw s?(await d(),s):e}}finally{clearTimeout(ee),te&&clearTimeout(te),t.signal?.removeEventListener(`abort`,p),m?.()}}async function Se(e,t){if(t.signal?.aborted)throw D(t.signal);let n=Date.now();if(t.invocationDeadline!==void 0&&t.invocationDeadline<=n)throw new i({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)),a=t.signal??new AbortController().signal,o=await t.networkPort.request({headers:t.headers,signal:a,timeoutMs:r,url:e});if(o.kind===`failure`)throw t.signal?.aborted||o.error.kind===`cancelled`?D(t.signal):o.error.kind===`timed-out`?t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?new i({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new _e(t.timeoutMs):Error(o.error.message);let s=new TextDecoder().decode(o.value.body),c=!0;if(t.mode===`json`&&o.value.status>=200&&o.value.status<300)try{JSON.parse(s)}catch{c=!1}return{body:o.value.status>=200&&o.value.status<300?s:void 0,etag:o.value.headers.etag,ok:o.value.status>=200&&o.value.status<300,status:o.value.status,valid:c}}async function Ce(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 we(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function E(e){if(e?.aborted)throw D(e)}function D(e){return e?.reason instanceof i?e.reason:new i({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 Te(){try{return JSON.parse(await w(De(),`utf8`))}catch{return{entries:{}}}}async function Ee(e){await ae(x(v(),`cache`),{recursive:!0}),await ue(De(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function De(){return x(v(),`cache`,`versions.json`)}function Oe(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);ne({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function ke(e,t){ne({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Ae=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function je(e,t){if(t)return t(e);let n=e.trim().split(`
2
+ `)[0],r=n.match(Ae);return r?r[1]:n||void 0}function O(e,t){return ee(e,t)===1}function Me(e,t,n){let r=t?.command??[e,`--version`];return!n||r[0]!==e?[...r]:[n,...r.slice(1)]}async function Ne(e,t,n){return Pe(e,t,n)}async function Pe(i,a,o,s){let c=Me(i,a,s);try{let t=n(c,{detached:o!==void 0&&C.platform!==`win32`}),{exitCode:i,stderr:s,stdout:l}=o?await e(t,o):await r(t);return i===0?je(l,a?.parser)??je(s,a?.parser):void 0}catch(e){if(t(e))throw e;return}}async function Fe(e,t=`latest`,n={}){return Ie(e,t,n)}async function Ie(e,n=`latest`,r={}){try{let t=m(r.registry)??`https://registry.npmjs.org`,i=await ve(p(e,n,t),`npm:${t}:${e}:${n}`,{cacheMode:r.cacheMode,context:r.context,networkPort:r.networkPort});if(r.context?.signal.aborted)throw k(r.context.signal);return i?.version}catch(e){if(t(e))throw e;if(r.context?.signal.aborted)throw k(r.context.signal);return}}async function Le(e,t){return l(e,t)}async function Re(e,t){if(e){if(t?.signal.aborted)throw k(t.signal);try{let n=await se(e);if(t?.signal.aborted)throw k(t.signal);return n}catch{if(t?.signal.aborted)throw k(t.signal);return e}}}function k(e){return new i({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}const A={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`},j={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`},M={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},ze={brew:M,bun:M,cargo:M,deno:M,mise:M,npm:M,pip:M,uv:M,winget:M},Be=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],Ve=[{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:ze,required:Be,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:A,name:`capabilities`,ndjsonEventSchema:j},{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:A,name:`commands`,ndjsonEventSchema:j},{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:A,name:`config`,ndjsonEventSchema:j},{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:Be,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:A,name:`doctor`,ndjsonEventSchema:j},{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:A,name:`exec`,ndjsonEventSchema:j},{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:A,name:`ensure`,ndjsonEventSchema:j},{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:A,name:`info`,ndjsonEventSchema:j},{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:A,name:`inspect`,ndjsonEventSchema:j},{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:A,name:`install`,ndjsonEventSchema:j},{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:A,name:`list`,ndjsonEventSchema:j},{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:A,name:`resolve`,ndjsonEventSchema:j},{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:A,name:`schema`,ndjsonEventSchema:j},{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:A,name:`update`,ndjsonEventSchema:j},{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:A,name:`uninstall`,ndjsonEventSchema:j},{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:A,name:`upgrade`,ndjsonEventSchema:j}],He=[{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`}],Ue=new Map(He.map(e=>[e.id,e])),We=new Map(Ve.map(e=>[e.name,e])),N=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],Ge=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],Ke=[P({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`}),P({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),P({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`}),P({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),P({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`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Ge,name:`ensure`,summary:`Ensure an agent is installed`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`info`,summary:`Show human-friendly agent details`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`inspect`,summary:`Return structured agent state`}),P({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Ge,name:`install`,summary:`Install one or more agents`}),P({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`list`,summary:`List supported agents`}),P({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:N,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),P({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`}),P({aliases:[`u`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`[agent]`}],description:`更新指定 agent`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`nonInteractive`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`update`,options:[{description:`Update all installed agents`,flags:`--all`,id:`all`,value:`boolean`},{description:`With --all, limit the batch to persisted Quantex-managed agents`,flags:`--managed`,id:`managed`,value:`boolean`}],summary:`Update one or all agents`}),P({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`}),P({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 qe(){return Ke}function Je(){return He}function Ye(e){let t={...e};for(let n of He){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 Xe(e){return{flags:$e(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function Ze(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=Ue.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=F(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=F(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}`);et(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=$e(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 P(e){let t=Qe(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:$e(n)}}function Qe(e){let t=We.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function $e(e){return[...e.catalogTokens,...e.options.map(e=>F(e.flags)),...e.globalOptions.map(t=>{let n=Ue.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return F(n.flags)})]}function F(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function et(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${F(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${F(e.flags)}`)}const tt=new Map(qe().map(e=>[e.name,at(e.presenterId)]));function nt(e){return tt.get(e)}function rt(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)??ot(n));return}e?e.presentHuman(n,r):r(n)}function it(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function at(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:ot}}function ot(e){return{action:e.action,data:e,target:e.target,type:`result`}}const I=`quantex-cli`,st=`https://github.com/Drswith/quantex-cli`,ct=`1.13.2`,lt=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`].map(ut);function ut(e){return`${e}.${L(e)}`}function L(e){return B(e)?.platform===`win32`?`zip`:`tar.gz`}function R(e){let t=e.endsWith(`.zip`)?`.zip`:e.endsWith(`.tar.gz`)?`.tar.gz`:void 0;if(!t)return;let n=e.slice(0,-t.length),r=B(n),i=t===`.zip`?`zip`:`tar.gz`;return r&&L(n)===i?n:void 0}function dt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
3
+ `)}\n`}function ft(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function z(e){return B(R(e)??e)}function pt(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function mt(e){return e.includes(`beta`)?`beta`:`stable`}function ht(e){let t=pt(e.repositoryUrl),n=mt(e.version),r=e.files.map(n=>{let r=z(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);if(!R(n.name))throw Error(`Release asset is not a compressed binary archive: ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function gt(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of lt)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!z(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}function _t(e,t){if(R(ut(t))!==t)throw Error(`Invalid expected release binary name: ${t}.`);return L(t)===`zip`?yt(e,t):vt(e,t)}function B(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function vt(e,t){let n;try{n=me(e)}catch(e){throw Error(`Release archive is not a valid gzip stream.`,{cause:e})}let r=0,i;for(;r+512<=n.length;){let e=n.subarray(r,r+512);if(e.every(e=>e===0))break;let a=V(e.subarray(0,100)),o=V(e.subarray(345,500)),s=o?`${o}/${a}`:a,c=e[156],l=xt(e.subarray(124,136)),u=r+512,d=u+l;if(!a||d>n.length)throw Error(`Release archive contains an invalid tar entry.`);if(c!==0&&c!==48)throw Error(`Release archive must contain only a regular file.`);if(s!==t||i)throw Error(`Release archive must contain exactly ${t}.`);i=n.slice(u,d),r=u+Math.ceil(l/512)*512}if(!i)throw Error(`Release archive does not contain ${t}.`);return i}function yt(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=0,i;for(;r+4<=e.length;){let a=U(n,r);if(a===wt){W(n,r,30);let a=H(n,r+6),o=H(n,r+8),s=U(n,r+14),c=U(n,r+18),l=U(n,r+22),u=H(n,r+26),d=H(n,r+28),f=r+30,p=f+u+d;if(W(n,r,30+u+d+c),a&1||a&8)throw Error(`Release archive contains an unsupported zip entry.`);if(new TextDecoder().decode(e.subarray(f,f+u))!==t||i)throw Error(`Release archive must contain exactly ${t}.`);let m=e.subarray(p,p+c),h;try{if(o===0)h=m;else if(o===8)h=he(m);else throw Error(`unsupported compression method`)}catch(e){throw Error(`Release archive contains an invalid zip entry.`,{cause:e})}if(h.length!==l||St(h)!==s)throw Error(`Release archive contains an invalid zip entry.`);i=h.slice(),r=p+c;continue}if(a===Tt){if(!i)throw Error(`Release archive does not contain ${t}.`);return bt(e,n,r,t),i}throw Error(`Release archive is not a valid zip file.`)}throw Error(`Release archive does not contain ${t}.`)}function bt(e,t,n,r){let i=n,a=0;for(;i+4<=e.length&&U(t,i)===Tt;){W(t,i,46);let n=H(t,i+28),o=H(t,i+30),s=H(t,i+32);if(W(t,i,46+n+o+s),new TextDecoder().decode(e.subarray(i+46,i+46+n))!==r||a>0)throw Error(`Release archive must contain exactly ${r}.`);a+=1,i+=46+n+o+s}if(W(t,i,22),U(t,i)!==Et||a!==1||H(t,i+10)!==a)throw Error(`Release archive is not a valid zip file.`)}function V(e){let t=e.indexOf(0);return new TextDecoder().decode(t===-1?e:e.subarray(0,t))}function xt(e){let t=V(e).trim();if(!/^[0-7]+$/u.test(t))throw Error(`Release archive contains an invalid tar size.`);let n=Number.parseInt(t,8);if(!Number.isSafeInteger(n)||n<0)throw Error(`Release archive contains an unsafe tar size.`);return n}function H(e,t){return W(e,t,2),e.getUint16(t,!0)}function U(e,t){return W(e,t,4),e.getUint32(t,!0)}function W(e,t,n){if(t<0||n<0||t+n>e.byteLength)throw Error(`Release archive contains an invalid zip entry.`)}function St(e){let t=4294967295;for(let n of e)t=Ct[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}const Ct=Array.from({length:256},(e,t)=>{let n=t;for(let e=0;e<8;e+=1)n=n&1?n>>>1^3988292384:n>>>1;return n>>>0}),wt=67324752,Tt=33639248,Et=101010256;function Dt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Ot(e=C.execPath){let t=kt(e);return t?ut(t):void 0}function kt(e=C.execPath){if(y(Dt(e)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(C.platform===`darwin`)return C.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(C.platform===`linux`)return C.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function At(e=C.execPath){let t=Ot(e);if(t)return`${st}/releases/latest/download/${t}`}function jt(e,t,n=C.env){return e||(n.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:n.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:t===`beta`?`beta`:`stable`)}async function Mt(e,t,n,r){let i=await ve(await Nt(e,t,n,r),`self:manifest:${e}`,{cacheMode:r,context:t,networkPort:n});if(!i)throw Error(`Failed to download release manifest.`);return i}async function Nt(e,t,n,r){if(e===`stable`)return`${st}/releases/latest/download/manifest.json`;let i=(await Pt(e,t,n,r)).assets.find(e=>e.name===`manifest.json`);if(!i?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return i.browser_download_url}async function Pt(e,t,n,r){let i=It();if(!i)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let a=await ve(`https://api.github.com/repos/${i}/releases?per_page=20`,`self:github-releases`,{cacheMode:r,context:t,networkPort:n});if(!a)throw Error(`Failed to query GitHub releases.`);let o=a.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!o)throw Error(`No GitHub release was found for the ${e} channel.`);return o}function Ft(e,t=C.execPath){let n=C.platform,r=C.arch===`arm64`?`arm64`:`x64`,i=Ot(t);return e.assets.find(e=>e.platform===n&&e.arch===r&&(!i||e.name===i))}function It(){return st.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var G=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const Lt={installedAgents:{},self:{}};function Rt(){return u(v())}async function zt(){return Qt()}async function Bt(e){let t=await d({resource:`state`,scope:[`state`]});try{await $t(e)}finally{await t()}}async function Vt(e){return(await zt()).installedAgents[e]}async function Ht(e){try{return await K().getReceipt(e)}catch(e){throw e instanceof G?e:new G(`Failed to read Quantex state file.`,{cause:e})}}async function Ut(e){let t=await d({resource:`state`,scope:[`state`]});try{await K().setReceipt(e)}catch(e){throw e instanceof G?e:new G(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function Wt(e){let t=await d({resource:`state`,scope:[`state`]});try{await K().removeReceipt(e)}catch(e){throw e instanceof G?e:new G(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const Gt=Object.freeze({read:Ht,remove:Wt,write:Ut});async function Kt(e){await q(t=>{t.installedAgents[e.agentName]=e})}async function qt(e){await q(t=>{delete t.installedAgents[e]})}async function Jt(){return(await zt()).self}async function Yt(e){await q(t=>{t.self.installSource=e})}async function Xt(){await q(e=>{delete e.self.installSource})}async function Zt(e,t){await q(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Qt(){try{return await K().loadProjection()}catch(e){if(en(e))return{...Lt};throw e instanceof G?e:e instanceof te?new G(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new G(`Failed to read Quantex state file.`,{cause:e})}}async function $t(e){try{await K().saveProjection(e)}catch(e){throw e instanceof G?e:new G(`Failed to write Quantex state file.`,{cause:e})}}function K(){return f(v())}function en(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function q(e){let t=await d({resource:`state`,scope:[`state`]});try{let t=await Qt();await e(t),await $t(t)}finally{await t()}}const tn=`self:install-source`,nn={clearInstallSource:Xt,getSelfState:Jt,setInstallSource:Yt};function rn(e=nn){return{async load(t){let n=an(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return sn(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return cn(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=an(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),sn(void 0)}catch(e){return cn(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=an(t.key,t.signal);if(n)return n;if(!on(t.value))return J({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),sn({})}catch(e){return cn(`Failed to persist the self install source.`,e)}}}}function an(e,t){if(t.aborted)return J({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return J({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function on(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function sn(e){return{kind:`success`,value:e}}function J(e){return{error:e,kind:`failure`}}function cn(e,t){return J({details:{cause:t},kind:`failed`,message:e})}const ln=I,un=`/node_modules/${ln}`;async function dn(e){return pn(e,!0)}async function fn(e){return pn(e,!1)}async function pn(e,t){let n=await bn(),r=C.execPath,i=n.foundPackageJson?yn(n.packageRoot):yn(``,r),a=e?.persistence??rn(),o=e?.signal??new AbortController().signal,s=await _n(a,o),c=t?await gn(s,i,{persistence:a,signal:o}):mn(s,i),l=await _(),u=jt(e?.updateChannel,l.selfUpdateChannel);return{canAutoUpdate:hn(c),currentVersion:n.version||`1.13.2`,executablePath:r,installSource:c,packageRoot:n.packageRoot,updateChannel:u}}function mn(e,t){return t===`unknown`?e??t:t}function hn(e){return e===`binary`||e===`bun`||e===`npm`}async function gn(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??rn()).save({key:tn,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&vn(e.error),t}return mn(e,t)}async function _n(e,t){let n=await e.load({key:tn,signal:t});if(n.kind===`failure`&&vn(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 vn(e){let t=e.details?.cause;throw t instanceof Error?t:e.kind===`cancelled`?new i({kind:`cancelled`,reason:e.message}):e.kind===`timed-out`?new i({kind:`timed-out`,timeoutMs:0}):Error(e.message)}function yn(e,t=C.execPath){let n=Cn(e);return n.includes(`/.bun/install/global/`)?`bun`:n.includes(un)?`npm`:n?`source`:wn(t)?`binary`:`unknown`}async function bn(e=import.meta.url){let t=Tn(e),n=b(t);for(;;){let e=x(n,`package.json`),t=await Sn(e);if(t?.name===ln)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.13.2`};let r=b(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:x(b(t),`package.json`),packageRoot:b(t),version:ct}}function xn(){return ct}async function Sn(e){try{return JSON.parse(await w(e,`utf8`))}catch{return}}function Cn(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function wn(e){let t=y(Cn(e));return t!==`bun`&&t!==`bun.exe`}function Tn(e){try{return pe(e)}catch{return C.execPath}}async function En(){try{return await d({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(c(e))return;throw e}}function Dn(){return{async acquire(e){if(e.signal.aborted)return Y(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return Y(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await En();if(!t)return Y(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),Y(`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 Y(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function Y(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function On(e,t,n=C.env,r=C.cwd()){if(e!==`bun`&&e!==`npm`)return;let i=m(n.QTX_SELF_UPDATE_REGISTRY);return i?{isOverride:!0,registry:i,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await kn(e,n,r)||{isOverride:!1,registry:h,source:`fallback`}}async function kn(e,t,n){if(e===`bun`){let e=An(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await jn(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=An(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await Nn(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function An(e,t){for(let n of t){let t=m(e[n]);if(t)return t}}async function jn(e,t){let n=In(t),r=t.XDG_CONFIG_HOME,i=Fn(e,`bunfig.toml`),a=[x(n,`.bunfig.toml`),r?x(r,`.bunfig.toml`):void 0];if(i){let e=await Mn(i);if(e)return e}for(let e of a){if(!e||!re(e))continue;let t=await Mn(e);if(t)return t}}async function Mn(e){try{return Ln(await w(e,`utf8`))}catch{return}}async function Nn(e,t){let n=In(t),r=Fn(e,`.npmrc`),i=x(n,`.npmrc`);if(r){let e=await Pn(r);if(e)return e}if(re(i))return Pn(i)}async function Pn(e){try{let t=(await w(e,`utf8`)).split(`
4
4
  `).map(e=>e.trim());for(let e=t.length-1;e>=0;--e){let n=t[e];if(!n||n.startsWith(`#`)||n.startsWith(`;`))continue;let r=n.match(/^registry\s*=\s*(.+)$/);if(!r?.[1])continue;let i=m(r[1]);if(i)return i}}catch{}}function Fn(e,t){let n=e;for(;;){let e=x(n,t);if(re(e))return e;let r=b(n);if(r===n)return;n=r}}function In(e){return e.HOME||e.USERPROFILE||de()}function Ln(e){let t=Rn(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 m(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return m(Rn(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function Rn(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function zn(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function Bn(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function Vn(e,t){if(Wn(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||ee(e.targetVersion,e.targetVersion)!==0)&&!(!Gn(e.fetchedAtMs)||!Gn(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function Hn(e){let t=await e.cache.read({key:zn(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return Vn(t.value.value,e)}function Un(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:zn(e.metadata),signal:e.signal,value:e.metadata})}function Wn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Gn(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function Kn(e,n,r,i){let a=await _();if(e.installSource===`binary`)try{let t=n?await Mt(e.updateChannel,n,r,i):await Mt(e.updateChannel,void 0,r,i),a=Ft(t,e.executablePath);return a?{binaryAsset:a,targetVersion:t.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch(n){if(t(n))throw n;return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let o=e.updateChannel===`beta`?`beta`:`latest`,s=await Ie(I,o,{...n?{context:n}:{},cacheMode:i,networkPort:r,registry:h});if(e.installSource===`bun`||e.installSource===`npm`){let t=await On(e.installSource,a);return{managedRegistry:t?.registry,managedRegistryIsOverride:t?.isOverride??!1,packageTag:o,targetVersion:await Ie(I,o,{...n?{context:n}:{},cacheMode:i,networkPort:r,registry:t?.registry}),upstreamLatestVersion:s,verificationCommand:$n(e.packageRoot)}}return{packageTag:o,targetVersion:s,upstreamLatestVersion:s}}async function X(e){let t=e?.facts??await dn({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await Kn(t,e?.context,e?.networkPort,e?.metadataCacheMode),r=n.targetVersion?O(n.targetVersion,t.currentVersion):!1,i={facts:t,status:Xn(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await _()).versionCacheTtlHours*60*60*1e3;await Un({cache:e.metadataCache,metadata:Bn({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function qn(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 Jn(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await Zn(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 Yn(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:$n(e.packageRoot)},r=e.latestVersion?O(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Xn(t,n,r),target:n,updateAvailable:r}}function Xn(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Zn(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await Qn(e.target.verificationCommand,r);if(t)return t}return Qn([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await Ne(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return Ne(e.facts.executablePath)}async function Qn(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 i({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new i({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(`
5
5
  `)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function $n(e){if(e)return[C.execPath,x(e,`dist`,`cli.mjs`),`--version`]}async function er(e,t,n,r,a=rr(t),o){let s=o?.networkPort,c=s&&o?await nr(e,{...o,networkPort:s}):await tr(e);if(c.kind===`failure`)return c.result;let l=c.binary;Z(o);let u=ur(c.binary);if(u!==dr(n))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${dr(n)}, got ${u}.`);if(o?.archiveEntryName)try{l=ge.from(_t(l,o.archiveEntryName))}catch(t){return $(`unknown`,`Failed to extract the expected binary from ${e}.`,t)}let d=await oe(x(b(t),`.quantex-upgrade-`)),f=x(d,y(t)),p=`${t}.bak`,m=!1,h=!1;try{Z(o);let e=await ir(t);if(await ue(f,l),Z(o),C.platform===`win32`){let e=ar(f,t,p,d,r,a);return h=e.success,e}await ie(f,e),Z(o),await T(p,{force:!0}),await ce(t,p),m=!0,await ce(f,t);let n=await lr(t,r,o);return n.success?(m=!1,await T(p,{force:!0}),{success:!0}):(await cr(p,t),m=!1,n)}catch(e){if(m){try{await cr(p,t)}catch{}m=!1}if(e instanceof i)throw e;return $(sr(e),`Failed to replace the current Quantex binary.`,e)}finally{(C.platform!==`win32`||!h)&&await T(d,{recursive:!0,force:!0})}}function Z(e){if(e?.signal.aborted)throw new i({kind:`cancelled`,reason:e.signal.reason instanceof Error?e.signal.reason.message:String(e.signal.reason??``)})}async function tr(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:ge.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function nr(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 i({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new i({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:ge.from(n.value.body),kind:`success`}}function rr(e){if(C.platform!==`win32`)return;let t=S.basename(e).toLowerCase();if(t===`qtx.exe`)return S.join(S.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return S.join(S.dirname(e),`qtx.exe`)}async function ir(e){try{return(await le(e)).mode&511}catch{return 493}}function ar(e,t,r,i,a,o){try{return n([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,or(e,t,r,i,C.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return $(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function or(e,t,n,r,i,a,o){let s=Q(e),c=Q(t),l=Q(n),u=Q(r),d=Q(a??``),f=Q(o??``);return[`$ErrorActionPreference = 'Stop'`,`$pidToWait = ${i}`,`$tempPath = '${s}'`,`$targetPath = '${c}'`,`$backupPath = '${l}'`,`$tempDir = '${u}'`,`$expectedVersion = '${d}'`,`$peerPath = '${f}'`,`while (Get-Process -Id $pidToWait -ErrorAction SilentlyContinue) { Start-Sleep -Milliseconds 200 }`,`$backupReady = $false`,`for ($attempt = 0; $attempt -lt 50; $attempt++) {`,` try {`,` if (Test-Path -LiteralPath $backupPath) { Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue }`,` Move-Item -LiteralPath $targetPath -Destination $backupPath -Force -ErrorAction Stop`,` $backupReady = $true`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`if (-not $backupReady) {`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`try {`,` Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`}`,`catch {`,` if (Test-Path -LiteralPath $backupPath) {`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force -ErrorAction SilentlyContinue`,` }`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`if ($expectedVersion -ne '') {`,` $output = & $targetPath --version 2>$null`,` if ($LASTEXITCODE -ne 0 -or ($output -notmatch [regex]::Escape($expectedVersion))) {`,` Remove-Item -LiteralPath $targetPath -Force -ErrorAction SilentlyContinue`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,` }`,`}`,`if ($peerPath -ne '') {`,` Copy-Item -LiteralPath $targetPath -Destination $peerPath -Force`,`}`,`Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue`,`Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`].join(`; `)}function Q(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function sr(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 cr(e,t){await T(t,{force:!0}),await ce(e,t)}async function lr(e,t,a){if(!t)return{success:!0};try{if(a?.processPort){let n=await a.processPort.run({argv:[e,`--version`],signal:a.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:a.timeoutMs});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new i({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new i({kind:`timed-out`,timeoutMs:a.timeoutMs??0});return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,n.error)}let r=n.value.stdout?new TextDecoder().decode(n.value.stdout):``;return n.value.exitCode===0?r.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${n.value.exitCode} during verification.`)}let{exitCode:o,stdout:s}=await r(n([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return o===0?s.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${o} during verification.`)}catch(e){if(e instanceof i)throw e;return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function ur(e){return fe(`sha256`).update(e).digest(`hex`)}function dr(e){return e.trim().toLowerCase()}const fr={source:`binary`,canHandle:e=>pr(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):At(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=rr(e.facts.executablePath),i=R(n.name);if(!i)return{error:{kind:`unsupported`,message:`The resolved release artifact is not a compressed standalone binary archive.`},installSource:e.facts.installSource,success:!1};let a=await er(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r,t?{archiveEntryName:i,networkPort:t.network,processPort:t.process,signal:t.signal,timeoutMs:t.timeoutMs}:{archiveEntryName:i,signal:new AbortController().signal});return{...!a.success&&a.error?{...a,error:{...a.error,detail:{...typeof a.error.detail==`object`&&a.error.detail?a.error.detail:{},downloadUrl:n.downloadUrl}}}:a,installSource:e.facts.installSource,newVersion:a.success?e.target.targetVersion:void 0}}};function pr(e){return`facts`in e?e.facts.installSource:e.installSource}async function mr(e,t){return t.process?(await gr(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function hr(e,t,n){if(!await mr(e,n))return!1;let r=await gr([`bun`,`pm`,`-g`,`untrusted`],n,{forwardPipedOutput:!1,stdio:[`ignore`,`pipe`,`pipe`]});return!r||r.exitCode!==0?!1:a(r.stdout?new TextDecoder().decode(r.stdout):``).has(t)?mr([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function gr(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 i({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new i({kind:`timed-out`,timeoutMs:t.timeoutMs??0})}const _r={source:`bun`,canHandle:e=>vr(e)===`bun`,getRecoveryHint:e=>`bun add -g ${I}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await hr([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${I}@${n}`],I,t):await o(I,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${I} through Bun.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function vr(e){return`facts`in e?e.facts.installSource:e.installSource}const yr={source:`npm`,canHandle:e=>br(e)===`npm`,getRecoveryHint:e=>`npm install -g ${I}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await mr([`npm`,`install`,`-g`,`${I}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await s(I,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${I} through npm.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function br(e){return`facts`in e?e.facts.installSource:e.installSource}const xr={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}}},Sr=[_r,yr,fr,xr];function Cr(e){return Sr.find(t=>t.canHandle(e))??xr}function wr(e,t,n=`stable`){return Cr({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function Tr(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:wr(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Er(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Cr(e).getRecoveryHint(e,t)}async function Dr(e){return qn(await X({updateChannel:e?.updateChannel}))}async function Or(e){let t=await fn({updateChannel:e?.updateChannel});return qn(await X({context:e?.context,facts:t}))}async function kr(e,t={}){let n=await Mr(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await Ar();if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new i({kind:`cancelled`});if(r.error.kind===`timed-out`)throw new i({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 a;try{let e=t.networkPort!==void 0||t.processPort!==void 0,r=t.signal??new AbortController().signal;a=await Jn(n,await Cr(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 o=await r.value.release();if(o.kind===`failure`)throw Error(o.error.message);return a}async function Ar(){let e=await En();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 jr(e,t=C.execPath){return Tr(e,t)}async function Mr(e){return e?`facts`in e?e:e.installSource===`binary`?X({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Yn(e):X()}function Nr(e){return Lr({...e,error:null,ok:!0})}function Pr(e){return Lr({...e,ok:!1})}function Fr(e,t,n={}){let r=g();return r.cancelled&&!n.force||rt(nt(e.action),r.outputMode,e,t,e=>console.log(e),e=>zr(e)),e}function Ir(e,t={}){let n=g();if(!(n.cancelled&&!t.force))return it(nt(e.action),n.outputMode,e,e=>zr(e))}function Lr(e){let t=g();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:xn()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Rr(e){let t=g();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:xn()},target:e.target,type:e.type}}function zr(e){let t=Rr(e);return Br(t),t}function Br(e){console.log(JSON.stringify(e))}export{O as $,Kt as A,ft as B,Jt as C,qt as D,zt as E,At as F,Je as G,gt as H,ht as I,Ze as J,Ye as K,dt as L,Yt as M,Zt as N,Wt as O,Ot as P,Re as Q,pt as R,Ht as S,Gt as T,I as U,mt as V,qe as W,Ne as X,Le as Y,Fe as Z,xn as _,jr as a,G as b,kr as c,qn as d,Pe as et,X as f,yn as g,hn as h,Fr as i,Ut as j,Bt as k,Tr as l,Dn as m,Nr as n,Dr as o,Hn as p,Xe as q,Ir as r,Or as s,Pr as t,Er as u,fn as v,Rt as w,Vt as x,rn as y,z};
@@ -1 +1 @@
1
- import{c as e,s as t}from"./child-process-DzIdysOm.mjs";import{c as n,f as r,i,t as a}from"./npm-PO9Nwgt_.mjs";import{B as o,E as s,M as c,O as ee,P as l,R as te,T as ne,h as re,l as ie,p as u,r as d,s as f,t as p,x as m,y as ae}from"./winget-BA9H6Ve-.mjs";import{o as h}from"./file-store-oHCTTnLn.mjs";import{t as g}from"./detect-Dou6fit1.mjs";import{B as oe,G as se,H as ce,J as le,K as ue,U as de,V as fe,W as pe,Y as me,q as he,z as _}from"./agents-1xVrcX2T.mjs";import{i as ge,n as v}from"./cli-context-DI43ouBg.mjs";import{a as y}from"./config-jsaRCEWF.mjs";import{A as b,D as x,x as _e}from"./output-C0TF6WTW.mjs";import{d as S,h as ve,m as C,y as w}from"./providers-BrKmtcci.mjs";import{n as T,t as E}from"./cli-operation-context-CzjG_eom.mjs";import ye from"node:process";import{AsyncLocalStorage as D}from"node:async_hooks";function O(n,r={}){let i=t(n,T(v().outputMode),r),a=ge(()=>e(i.proc));return{...i,cleanup:()=>{a(),i.cleanup()}}}async function k(e){let t=v();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function A(e){let t=g(),n=typeof e==`function`?e(t):e;try{return ye.platform===`win32`?await k(O([`powershell.exe`,`-Command`,n]))===0:await k(O([`sh`,`-c`,n]))===0}catch{return!1}}function j(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>M(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?M(i,i=>t.install({context:i,target:N(e,n,void 0,r)})):R(`install`),uninstall:async(e,n,r,i)=>t.uninstall?M(i,i=>t.uninstall({context:i,target:N(e,n,r?.binaryName)})):R(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return R(`update`);let a=P(r);return M(i,i=>t.update({context:i,...a?{options:a}:{},target:N(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return R(`update-many`);let i=P(n);return M(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>N(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function M(e,t){if(e)return t(e);let n=E();try{return await t(n.context)}finally{n.dispose()}}function N(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function P(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function F(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>M(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?M(a,a=>t.install({context:a,target:i(e,n,r)})):R(`install`),uninstall:async(e,n,r,a)=>t.uninstall?M(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):R(`uninstall`),update:async(e,n,r,a)=>t.update?M(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):R(`update`),updateMany:async(e,n,r)=>t.updateMany?M(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):R(`update-many`)}}const I={brew:F(`brew`,me,e=>e===`cask`?`cask`:`formula`,{getInstalledVersion:(e,t)=>te(e,t),probePackagePresence:(e,t)=>o(e,t)}),bun:j(`bun`,le,{getInstalledVersion:e=>n(e),probePackagePresence:e=>r(e)}),cargo:F(`cargo`,he,()=>`package`,{getInstalledVersion:e=>c(e),probePackagePresence:e=>l(e)}),deno:F(`deno`,ue,()=>`tool`,{getInstalledVersion:e=>ne(s(e)),probePackagePresence:e=>ee(s(e))}),mise:F(`mise`,de,()=>`tool`,{getInstalledVersion:e=>ae(e),probePackagePresence:e=>m(e)}),npm:j(`npm`,ce,{getInstalledVersion:e=>a(e),probePackagePresence:e=>i(e)}),pip:F(`pip`,fe,()=>`package`,{getInstalledVersion:e=>u(e),probePackagePresence:e=>re(e)}),uv:F(`uv`,oe,()=>`tool`,{getInstalledVersion:e=>f(e),probePackagePresence:e=>ie(e)}),winget:F(`winget`,_,()=>`id`,{getInstalledVersion:e=>p(e),probePackagePresence:e=>d(e)})},be=Object.fromEntries(Object.entries(I).map(([e,t])=>[e,Se(t)]));function xe(e){return be[e]}function L(e){return I[e]}function Se(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function R(e){return{kind:`unsupported`,operation:e}}const Ce={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},z=new D;function B(e){return z.getStore()?e():h(Ce,()=>z.run(!0,e))}async function we(){return(await y()).defaultPackageManager}async function V(){return{npmBunUpdateStrategy:(await y()).npmBunUpdateStrategy}}async function H(e){let t=g(),n=e.platforms[t];if(!n)return[];let r=await we();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function U(e,t,n,r,i,a,o,s){if(!s){let s=E();try{return await U(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=L(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function W(e,t,n,r){if(w(t.type)){let i=S(e,t);return i?U(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):{kind:`failed`,reason:`package target is missing for ${e.name}`,retryable:!1}}if(n===`update`&&!ve(t.type))return{kind:`unsupported`,operation:`update`};if(!t.command)return{kind:`failed`,reason:`install effect is missing for ${e.name}`,retryable:!1};let i=t.type===`script`?se:pe,a=E();try{return await i.install?.({context:a.context,target:{binaryName:t.binaryName??e.binaryName,effect:{command:t.command,kind:`shell-script`},id:e.name,kind:t.type}})??{kind:`unsupported`,operation:n}}finally{a.dispose()}}function G(e,t){if(e.packageName)return e.packageName;if(!(!t||!w(e.installType)))return S(t,{type:e.installType})}async function K(e,t,n){if(w(e.installType)){let r=G(e,n?.agent);return r?U(e.installType,r,e.binaryName??n?.agent?.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await A(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function q(e,t){if(!w(t.type))return;let n=S(e,t);n&&await U(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,Z())}async function Te(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await A(e.join(` `)))return!0;return!1}function J(e,t){let n={agentName:e.name,installType:t.type,packageName:S(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function Ee(e,t){if(v().cancelled)return null;let n=J(e,t);return v().cancelled?null:(await b(n),v().cancelled?(await x(e.name),null):n)}async function De(e,t){return B(async()=>{let n=t?[...t]:await H(e),r;for(let t of n){if(v().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await W(e,t,`install`);if(n.kind===`success`)return v().cancelled?(await q(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:J(e,t)}};let i=$(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,v().cancelled)return await q(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function Oe(e){return B(async()=>{let t=await De(e);if(t.kind!==`success`||!t.value.installedState)return Q(t);try{return v().cancelled?(await X(e,t.value.installedState),{success:!1}):(await b(t.value.installedState),v().cancelled?(await x(e.name),await X(e,t.value.installedState),{success:!1}):Q(t))}catch(n){throw await X(e,t.value.installedState),n}})}async function ke(e,t){return B(async()=>{let{npmBunUpdateStrategy:n}=await V(),r=await H(e),i=t&&w(t.installType)?G(t,e):void 0,a=t?await K(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return v().cancelled||(await b(t),v().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return $(a);if(!t)for(let t of r){let r=await W(e,t,`update`,n);if(r.kind===`success`){let n=await Ee(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return $(r)}return(!t||!w(t.installType)||i)&&await Te(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function Ae(e,t){return Q(await ke(e,t))}async function je(e,t){return B(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=L(e);return await r.isAvailable()?(await r.updateMany(n,await V())).kind===`success`:!1})}async function Me(e,t,n){let r=L(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function Ne(e,t){if(!w(e.installType))return!1;let n=L(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=G(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Pe(e){return(await B(async()=>{let t=await _e(e.name);return t?Y(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function Y(e,t){if(!C(t.installType))return await x(e.name),{kind:`success`,value:{installedState:t}};let n=await K(t,`uninstall`,{agent:e});return n.kind===`success`||await Ne(t,e)?(await x(e.name),{kind:`success`,value:{installedState:t}}):$(n)}async function X(e,t){if(!C(t.installType)||!w(t.installType))return;let n=G(t,e);n&&await U(t.installType,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,Z())}function Z(){let e=v(),t=e.timeoutMs;return{outputPolicy:T(e.outputMode),signal:new AbortController().signal,timeoutMs:t===void 0?5e3:Math.max(10,Math.min(t,5e3))}}function Q(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function $(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}export{Pe as a,je as c,O as d,k as f,Oe as i,B as l,Me as n,Y as o,H as r,Ae as s,J as t,xe as u};
1
+ import{c as e,s as t}from"./child-process-DzIdysOm.mjs";import{c as n,f as r,i,t as a}from"./npm-PO9Nwgt_.mjs";import{B as o,E as s,M as c,O as ee,P as l,R as te,T as ne,h as re,l as ie,p as u,r as d,s as f,t as p,x as m,y as ae}from"./winget-BA9H6Ve-.mjs";import{o as h}from"./file-store-C7Ak4t_P.mjs";import{t as g}from"./detect-CbD8V1su.mjs";import{B as oe,G as se,H as ce,J as le,K as ue,U as de,V as fe,W as pe,Y as me,q as he,z as _}from"./agents-M0IK-EAw.mjs";import{i as ge,n as v}from"./cli-context-DI43ouBg.mjs";import{a as y}from"./config-jsaRCEWF.mjs";import{A as b,D as x,x as _e}from"./output-PUVIMxAA.mjs";import{d as S,h as ve,m as C,y as w}from"./providers-GfRcOIdh.mjs";import{n as T,t as E}from"./cli-operation-context-CzjG_eom.mjs";import ye from"node:process";import{AsyncLocalStorage as D}from"node:async_hooks";function O(n,r={}){let i=t(n,T(v().outputMode),r),a=ge(()=>e(i.proc));return{...i,cleanup:()=>{a(),i.cleanup()}}}async function k(e){let t=v();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function A(e){let t=g(),n=typeof e==`function`?e(t):e;try{return ye.platform===`win32`?await k(O([`powershell.exe`,`-Command`,n]))===0:await k(O([`sh`,`-c`,n]))===0}catch{return!1}}function j(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>M(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?M(i,i=>t.install({context:i,target:N(e,n,void 0,r)})):R(`install`),uninstall:async(e,n,r,i)=>t.uninstall?M(i,i=>t.uninstall({context:i,target:N(e,n,r?.binaryName)})):R(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return R(`update`);let a=P(r);return M(i,i=>t.update({context:i,...a?{options:a}:{},target:N(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return R(`update-many`);let i=P(n);return M(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>N(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function M(e,t){if(e)return t(e);let n=E();try{return await t(n.context)}finally{n.dispose()}}function N(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function P(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function F(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>M(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?M(a,a=>t.install({context:a,target:i(e,n,r)})):R(`install`),uninstall:async(e,n,r,a)=>t.uninstall?M(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):R(`uninstall`),update:async(e,n,r,a)=>t.update?M(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):R(`update`),updateMany:async(e,n,r)=>t.updateMany?M(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):R(`update-many`)}}const I={brew:F(`brew`,me,e=>e===`cask`?`cask`:`formula`,{getInstalledVersion:(e,t)=>te(e,t),probePackagePresence:(e,t)=>o(e,t)}),bun:j(`bun`,le,{getInstalledVersion:e=>n(e),probePackagePresence:e=>r(e)}),cargo:F(`cargo`,he,()=>`package`,{getInstalledVersion:e=>c(e),probePackagePresence:e=>l(e)}),deno:F(`deno`,ue,()=>`tool`,{getInstalledVersion:e=>ne(s(e)),probePackagePresence:e=>ee(s(e))}),mise:F(`mise`,de,()=>`tool`,{getInstalledVersion:e=>ae(e),probePackagePresence:e=>m(e)}),npm:j(`npm`,ce,{getInstalledVersion:e=>a(e),probePackagePresence:e=>i(e)}),pip:F(`pip`,fe,()=>`package`,{getInstalledVersion:e=>u(e),probePackagePresence:e=>re(e)}),uv:F(`uv`,oe,()=>`tool`,{getInstalledVersion:e=>f(e),probePackagePresence:e=>ie(e)}),winget:F(`winget`,_,()=>`id`,{getInstalledVersion:e=>p(e),probePackagePresence:e=>d(e)})},be=Object.fromEntries(Object.entries(I).map(([e,t])=>[e,Se(t)]));function xe(e){return be[e]}function L(e){return I[e]}function Se(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function R(e){return{kind:`unsupported`,operation:e}}const Ce={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},z=new D;function B(e){return z.getStore()?e():h(Ce,()=>z.run(!0,e))}async function we(){return(await y()).defaultPackageManager}async function V(){return{npmBunUpdateStrategy:(await y()).npmBunUpdateStrategy}}async function H(e){let t=g(),n=e.platforms[t];if(!n)return[];let r=await we();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function U(e,t,n,r,i,a,o,s){if(!s){let s=E();try{return await U(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=L(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function W(e,t,n,r){if(w(t.type)){let i=S(e,t);return i?U(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):{kind:`failed`,reason:`package target is missing for ${e.name}`,retryable:!1}}if(n===`update`&&!ve(t.type))return{kind:`unsupported`,operation:`update`};if(!t.command)return{kind:`failed`,reason:`install effect is missing for ${e.name}`,retryable:!1};let i=t.type===`script`?se:pe,a=E();try{return await i.install?.({context:a.context,target:{binaryName:t.binaryName??e.binaryName,effect:{command:t.command,kind:`shell-script`},id:e.name,kind:t.type}})??{kind:`unsupported`,operation:n}}finally{a.dispose()}}function G(e,t){if(e.packageName)return e.packageName;if(!(!t||!w(e.installType)))return S(t,{type:e.installType})}async function K(e,t,n){if(w(e.installType)){let r=G(e,n?.agent);return r?U(e.installType,r,e.binaryName??n?.agent?.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await A(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function q(e,t){if(!w(t.type))return;let n=S(e,t);n&&await U(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,Z())}async function Te(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await A(e.join(` `)))return!0;return!1}function J(e,t){let n={agentName:e.name,installType:t.type,packageName:S(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function Ee(e,t){if(v().cancelled)return null;let n=J(e,t);return v().cancelled?null:(await b(n),v().cancelled?(await x(e.name),null):n)}async function De(e,t){return B(async()=>{let n=t?[...t]:await H(e),r;for(let t of n){if(v().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await W(e,t,`install`);if(n.kind===`success`)return v().cancelled?(await q(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:J(e,t)}};let i=$(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,v().cancelled)return await q(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function Oe(e){return B(async()=>{let t=await De(e);if(t.kind!==`success`||!t.value.installedState)return Q(t);try{return v().cancelled?(await X(e,t.value.installedState),{success:!1}):(await b(t.value.installedState),v().cancelled?(await x(e.name),await X(e,t.value.installedState),{success:!1}):Q(t))}catch(n){throw await X(e,t.value.installedState),n}})}async function ke(e,t){return B(async()=>{let{npmBunUpdateStrategy:n}=await V(),r=await H(e),i=t&&w(t.installType)?G(t,e):void 0,a=t?await K(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return v().cancelled||(await b(t),v().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return $(a);if(!t)for(let t of r){let r=await W(e,t,`update`,n);if(r.kind===`success`){let n=await Ee(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return $(r)}return(!t||!w(t.installType)||i)&&await Te(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function Ae(e,t){return Q(await ke(e,t))}async function je(e,t){return B(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=L(e);return await r.isAvailable()?(await r.updateMany(n,await V())).kind===`success`:!1})}async function Me(e,t,n){let r=L(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function Ne(e,t){if(!w(e.installType))return!1;let n=L(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=G(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Pe(e){return(await B(async()=>{let t=await _e(e.name);return t?Y(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function Y(e,t){if(!C(t.installType))return await x(e.name),{kind:`success`,value:{installedState:t}};let n=await K(t,`uninstall`,{agent:e});return n.kind===`success`||await Ne(t,e)?(await x(e.name),{kind:`success`,value:{installedState:t}}):$(n)}async function X(e,t){if(!C(t.installType)||!w(t.installType))return;let n=G(t,e);n&&await U(t.installType,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,Z())}function Z(){let e=v(),t=e.timeoutMs;return{outputPolicy:T(e.outputMode),signal:new AbortController().signal,timeoutMs:t===void 0?5e3:Math.max(10,Math.min(t,5e3))}}function Q(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function $(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}export{Pe as a,je as c,O as d,k as f,Oe as i,B as l,Me as n,Y as o,H as r,Ae as s,J as t,xe as u};
@@ -0,0 +1 @@
1
+ import{n as e,r as t,t as n}from"./executable-search-paths-CfJ3prUX.mjs";import{i as r,n as i,t as a}from"./schema-BBnWVY6R.mjs";import{r as o}from"./provider-binding-DW-oviNl.mjs";import{t as s}from"./agent-observation-CcBKTAZT.mjs";import{n as c,r as l,t as u}from"./provider-observation-registry-KrH9TMtQ.mjs";import{constants as d}from"node:fs";import{isAbsolute as f,join as p,resolve as m}from"node:path";import h from"node:process";import{access as g,readFile as _,realpath as v}from"node:fs/promises";import{homedir as y}from"node:os";const b=[{binaryName:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,name:`amp`,packages:{npm:`@sourcegraph/amp`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`amp`,`version`]}},{binaryName:`agy`,displayName:`Antigravity CLI`,homepage:`https://antigravity.google/product/antigravity-cli`,lookupAliases:[`agy`,`antigravity-cli`],name:`antigravity`,platforms:{linux:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://antigravity.google/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`agy`,`--version`]}},{binaryName:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,name:`auggie`,packages:{npm:`@augmentcode/auggie`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`auggie`,`--version`]}},{binaryName:`autohand`,displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,lookupAliases:[`autohand-cli`],name:`autohand`,packages:{npm:`autohand-cli`},platforms:{linux:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`autohand`,`--version`]}},{binaryName:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,name:`claude`,packages:{npm:`@anthropic-ai/claude-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://claude.ai/install.ps1 | iex`,type:`script`},{packageName:`Anthropic.ClaudeCode`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`codebuddy`,displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,lookupAliases:[`codebuddy-code`],name:`codebuddy`,packages:{npm:`@tencent-ai/codebuddy-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`codebuddy`,`--version`]}},{binaryName:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,name:`codewhale`,packages:{npm:`codewhale`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`codewhale`,`--version`]}},{binaryName:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,name:`codex`,packages:{npm:`@openai/codex`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`codex`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`codex`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`command-code`,displayName:`Command Code`,homepage:`https://commandcode.ai/docs/quickstart`,lookupAliases:[`command-code`,`cmd`,`cmdc`],name:`commandcode`,packages:{npm:`command-code`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`command-code`,`--version`]}},{binaryName:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,name:`copilot`,packages:{npm:`@github/copilot`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],windows:[{packageName:`GitHub.Copilot`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,name:`crush`,packages:{npm:`@charmland/crush`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet.crush`,packageTargetKind:`id`,type:`winget`}]},versionProbe:{command:[`crush`,`--version`]}},{binaryName:`agent`,displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,lookupAliases:[`agent`],name:`cursor`,platforms:{linux:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],macos:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],windows:[{command:`irm 'https://cursor.com/install?win32=true' | iex`,type:`script`}]},versionProbe:{command:[`agent`,`--version`]}},{binaryName:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,name:`devin`,platforms:{linux:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],windows:[{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,type:`script`}]},versionProbe:{command:[`devin`,`version`]}},{binaryName:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,name:`droid`,packages:{npm:`droid`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://app.factory.ai/cli/windows | iex`,type:`script`}]}},{binaryName:`dsh`,displayName:`DeepSeek Harness`,homepage:`https://github.com/deepseek-ai/deepseek-harness`,lookupAliases:[`deepseek-harness`],name:`dsh`,packages:{npm:`@deepseek-ai/dsh`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`dsh`,`--version`]}},{binaryName:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,name:`gemini`,packages:{npm:`@google/gemini-cli`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,name:`goose`,platforms:{linux:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],macos:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],windows:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,type:`script`}]},versionProbe:{command:[`goose`,`--version`]}},{binaryName:`grok`,displayName:`Grok Build`,homepage:`https://docs.x.ai/build/overview`,lookupAliases:[`grok-build`],name:`grok`,platforms:{linux:[{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://x.ai/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`grok`,`--version`]}},{binaryName:`hermes`,displayName:`Hermes Agent`,homepage:`https://github.com/NousResearch/hermes-agent`,lookupAliases:[`hermes-agent`],name:`hermes`,platforms:{linux:[{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,type:`script`}],windows:[{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,type:`script`}]},versionProbe:{command:[`hermes`,`--version`]}},{binaryName:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,name:`junie`,platforms:{linux:[{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],macos:[{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],windows:[{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,type:`script`}]},versionProbe:{command:[`junie`,`--version`]}},{binaryName:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,name:`kilo`,packages:{npm:`@kilocode/cli`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`kimi`,displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-code/`,lookupAliases:[`kimi-code`,`kimi-cli`],name:`kimi`,packages:{npm:`@moonshot-ai/kimi-code`},platforms:{linux:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`kimi`,`--version`]}},{binaryName:`kiro-cli`,displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,lookupAliases:[`kiro-cli`],name:`kiro`,platforms:{linux:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],windows:[{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,type:`script`}]},versionProbe:{command:[`kiro-cli`,`--version`]}},{binaryName:`mimo`,displayName:`MiMoCode`,homepage:`https://github.com/XiaomiMiMo/MiMo-Code`,lookupAliases:[`mimocode`,`mimo-code`],name:`mimo`,packages:{npm:`@mimo-ai/cli`},platforms:{linux:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`mimo`,`--version`]}},{binaryName:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,name:`omp`,packages:{npm:`@oh-my-pi/pi-coding-agent`},platforms:{linux:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],macos:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],windows:[{type:`bun`},{command:`irm https://omp.sh/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`omp`,`--version`]}},{binaryName:`openclaw`,displayName:`OpenClaw`,homepage:`https://github.com/openclaw/openclaw`,name:`openclaw`,packages:{npm:`openclaw`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],windows:[{type:`bun`},{type:`npm`},{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`openclaw`,`--version`]}},{binaryName:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,name:`opencode`,packages:{npm:`opencode-ai`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,name:`openhands`,platforms:{linux:[{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}],macos:[{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}]},versionProbe:{command:[`openhands`,`--version`]}},{binaryName:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,name:`pi`,packages:{npm:`@earendil-works/pi-coding-agent`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`qodercli`,displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,lookupAliases:[`qodercli`],name:`qoder`,packages:{npm:`@qoder-ai/qodercli`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,name:`qwen`,packages:{npm:`@qwen-code/qwen-code`},platforms:{linux:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],macos:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],windows:[{command:`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`,type:`script`},{type:`bun`},{type:`npm`}]}},{binaryName:`reasonix`,displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,lookupAliases:[`deepseek-reasonix`],name:`reasonix`,packages:{npm:`reasonix`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`reasonix`,`--version`]}},{binaryName:`vibe`,displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,lookupAliases:[`mistral-vibe`],name:`vibe`,platforms:{linux:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`}],macos:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`}]},versionProbe:{command:[`vibe`,`--version`]}}];function x(){return b}function S(e){let t=b.find(t=>t.name===e||t.lookupAliases?.includes(e));if(t)return t;let n=C(e);return b.find(e=>C(e.displayName)===n)}function C(e){return e.trim().toLowerCase()}function w(e){return e===void 0?p(h.env.HOME||h.env.USERPROFILE||y(),`.quantex`):f(e)?e:m(e)}function T(e={}){let t=e.providerRegistry??u();return{async inspectAgent(e,n,r){let i=S(e);if(i)return D(i,n,t,r?.observationBinding)},async listAgents(e){return B(e.signal),x()}}}async function E(e){let t=p(e,`state.json`),n;try{n=await _(t,`utf8`)}catch(e){if(z(e))return i();throw e}let o;try{o=JSON.parse(n)}catch(e){throw new a(`state.json contains invalid JSON: ${H(e)}`)}return r(o).document}async function D(e,t,n,r){let[i,a]=await Promise.all([E(t.configDir),N(e,t.configDir,t.signal)]),c={registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs},l=await s(e,{clock:()=>new Date().toISOString(),inspectExecutable:()=>O(e,c),...r?{observationBinding:r}:{},platform:I(),preferredCatalogBinding:a[0]?o(e,a[0]):void 0,providerRegistry:n,readInstalledState:async e=>i.installedAgents[e],readReceipt:async e=>i.lifecycleReceipts[e],resolveExecutablePath:e=>M(e,t.signal),signal:t.signal,timeoutMs:t.timeoutMs,observeProvider:async e=>{let t=n.get(e.providerId);return t?t.observe({context:c,target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}}),u=await M(l.pathExecutable.path,t.signal);return{agent:e,...l,methods:a,...u?{resolvedBinaryPath:u}:{}}}async function O(e,t){let r=await k(n(e),t);if(!r)return{present:!1};let i=await M(r,t.signal)??r,a=await j(e,i,t);return{path:i,present:!0,...a?{version:a}:{}}}async function k(e,t){for(let n of e){try{let e=await l([h.platform===`win32`?`where`:`which`,n],t);if(e.exitCode===0){let t=e.stdout.trim().split(/\r?\n/u)[0];if(t)return t}}catch(e){if(e instanceof c)throw e}let e=await A(n);if(e)return e}}async function A(n){let r={env:h.env,homeDir:y(),platform:h.platform},i=e(n,r);for(let e of t(r))for(let t of i){let n=p(e,t);try{return await g(n,d.X_OK),n}catch{}}}async function j(e,t,n){let r=e.versionProbe?.command??[e.binaryName,`--version`],i=r[0]===e.binaryName?[t,...r.slice(1)]:r;try{let t=await l(i,n);return t.exitCode===0?F(t.stdout,e.versionProbe?.parser)??F(t.stderr,e.versionProbe?.parser):void 0}catch(e){if(e instanceof c)throw e;return}}async function M(e,t){if(e){B(t);try{let n=await v(e);return B(t),n}catch{if(t.aborted)throw new c(V(t));return e}}}async function N(e,t,n){let r=e.platforms[I()]??[],i=await P(t,n);return[...r.filter(e=>e.type===i),...r.filter(e=>e.type!==i)]}async function P(e,t){B(t);try{let n=await _(p(e,`config.json`),`utf8`);B(t);let r=JSON.parse(n);if(R(r)&&L(r.defaultPackageManager))return r.defaultPackageManager}catch(e){if(t.aborted)throw new c(V(t));if(e instanceof c)throw e}return`bun`}function F(e,t){if(typeof t==`function`)return t(e);let n=e.trim().split(/\r?\n/u)[0];if(n)return n.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/iu)?.[1]??n}function I(){return h.platform===`win32`?`windows`:h.platform===`darwin`?`macos`:`linux`}function L(e){return e===`bun`||e===`mise`||e===`npm`||e===`uv`}function R(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function z(e){return!e||typeof e!=`object`||!(`code`in e)?!1:e.code===`ENOENT`||e.code===`ENOTDIR`}function B(e){if(e.aborted)throw new c(V(e))}function V(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function H(e){return e instanceof Error&&e.message?e.message:String(e)}export{x as i,w as n,S as r,T as t};
@@ -1 +1 @@
1
- import{R as e}from"./agents-1xVrcX2T.mjs";async function t(t,n){let r=(n.registry??e).get(t.providerId);return r?r.observe({context:{signal:n.signal,timeoutMs:n.timeoutMs},target:t.target}):{kind:`unavailable`,reason:`Provider ${t.providerId} is not registered.`,retryable:!1}}export{t};
1
+ import{R as e}from"./agents-M0IK-EAw.mjs";async function t(t,n){let r=(n.registry??e).get(t.providerId);return r?r.observe({context:{signal:n.signal,timeoutMs:n.timeoutMs},target:t.target}):{kind:`unavailable`,reason:`Provider ${t.providerId} is not registered.`,retryable:!1}}export{t};
@@ -0,0 +1,3 @@
1
+ import{n as e,r as t}from"./executable-search-paths-CfJ3prUX.mjs";import n from"cross-spawn";import{spawn as r}from"node:child_process";import{join as i}from"node:path";import a from"node:process";import{access as o,readFile as s}from"node:fs/promises";import{homedir as c}from"node:os";import{once as l}from"node:events";var u=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function d(e,t){if(t.signal.aborted)throw new u(_(t.signal));let[r,...i]=e;if(!r)throw Error(`A read-only command requires a non-empty argv array.`);let o=n(r,i,{detached:a.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),s=[],c=[];o.stdout?.on(`data`,e=>s.push(Buffer.from(e))),o.stderr?.on(`data`,e=>c.push(Buffer.from(e)));let l=!1,d,m,h=()=>d??=f(o),g=t.registerCleanup?.({cleanup:h,force:()=>m??=p(o)}),v,y=new Promise((e,n)=>{v=()=>{l||(l=!0,h().then(()=>n(new u(_(t.signal)))))},t.signal.addEventListener(`abort`,v,{once:!0}),t.signal.aborted&&v()}),b=new Promise((e,t)=>{o.once(`error`,t),o.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>l?y:e);try{return{exitCode:await Promise.race([b,y]),stderr:Buffer.concat(c).toString(`utf8`),stdout:Buffer.concat(s).toString(`utf8`)}}finally{t.signal.removeEventListener(`abort`,v),g?.()}}async function f(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGTERM`),!await g(e,100)&&(m(e,`SIGKILL`),await g(e,250))}async function p(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGKILL`),await g(e,250)}function m(e,t){if(a.platform!==`win32`&&e.pid!==void 0)try{a.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function h(e,t=r,n=100){let i=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o=l(i,`close`).then(()=>!0,()=>!1),s=new Promise(e=>{a=setTimeout(()=>e(!1),n)}),c=await Promise.race([o,s]);if(a&&clearTimeout(a),c)return!0;try{i.kill(`SIGKILL`)}catch{}return!1}async function g(e,t){if(e.exitCode!==null||e.signalCode!==null)return!0;let n;try{return await Promise.race([new Promise(t=>e.once(`close`,()=>t(!0))),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}function _(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const v={access:e=>o(e),env:a.env,homeDir:c,platform:a.platform,readFile:e=>s(e,`utf8`),runCommand:d};function y(e=v){return b([x(`bun`,`bun`,e,(t,n)=>T(t.id,n,e)),x(`npm`,`npm`,e,(t,n)=>D(t.id,n,e)),x(`brew`,`brew`,e,(t,n)=>O(t,n,e)),x(`cargo`,`cargo`,e,(t,n)=>k(t.id,n,e)),x(`deno`,`deno`,e,(t,n)=>A(t,n,e)),x(`mise`,`mise`,e,(t,n)=>j(t.id,n,e)),x(`pip`,`pip`,e,(t,n)=>M(t.id,n,e)),x(`uv`,`uv`,e,(t,n)=>N(t.id,n,e)),x(`winget`,`winget`,e,(t,n)=>F(t.id,n,e)),S(`script`,e),S(`binary`,e)])}function b(e){let t=Object.freeze([...e]),n=new Map(t.map(e=>[e.id,e]));if(n.size!==t.length)throw Error(`Duplicate Core provider observation adapter id.`);let r=Object.freeze([`availability`,`observe`]),i=Object.freeze([]);return Object.freeze({get:e=>n.get(e),getCapabilities:e=>n.has(e)?r:i,list:()=>t})}function x(e,t,n,r){return{availability:e=>w(t,e,n),id:e,async observe(t){let n=await r(t.target,t.context);return n.presence===`unknown`?{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} could not determine whether ${t.target.id} is installed`}:z({evidence:[{kind:`package`,value:n.presence===`absent`?`${e}:${t.target.id}:absent`:n.version?`${e}:${t.target.id}@${n.version}`:`${e}:${t.target.id}:present`}],kind:n.presence,target:t.target,...n.version?{version:n.version}:{}})}}}function S(e,t){return{availability:async e=>e.signal.aborted?B(e.signal):z({executable:t.platform===`win32`?`powershell.exe`:`sh`}),id:e,async observe(n){let r=n.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${n.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await I([t.platform===`win32`?`where`:`which`,r],n.context,t);if(!i)return{kind:`failed`,reason:`${e} executable probe failed for ${n.target.id}`,retryable:!0};let a=i.exitCode===0||await C(r,t);return z({evidence:[{kind:`executable`,value:r}],kind:a?`present`:`absent`,target:n.target})}}}async function C(n,r){let a={env:r.env,homeDir:r.homeDir(),platform:r.platform},o=e(n,a);for(let e of t(a))for(let t of o)try{return await r.access(i(e,t)),!0}catch{}return!1}async function w(e,t,n){try{return(await n.runCommand([e,`--version`],t)).exitCode===0?z({executable:e}):{kind:`unavailable`,reason:`${e} executable is unavailable`}}catch(t){if(t instanceof u)throw t;return{kind:`unavailable`,reason:`${e} executable is unavailable`}}}async function T(e,t,n){let r=await I([`bun`,`pm`,`-g`,`ls`],t,n);if(!r)return{presence:`unknown`};if(!r.stdout.trim()){if(r.stderr.includes(`No package.json was found for directory`))return{presence:`absent`};if(!r.stderr.includes(`Lockfile not found`))return{presence:`unknown`};try{let t=n.env.BUN_INSTALL_GLOBAL_DIR??i(n.homeDir(),`.bun`,`install`,`global`);return{presence:R(await n.readFile(i(t,`package.json`)),e)}}catch{return{presence:`unknown`}}}let a=L(r.stdout,e);return a?{presence:`present`,version:a}:r.stdout.split(`
2
+ `).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:await E(e,n,`absent`)}async function E(e,t,n){try{let n=t.env.BUN_INSTALL_GLOBAL_DIR??i(t.homeDir(),`.bun`,`install`,`global`);return{presence:R(await t.readFile(i(n,`package.json`)),e)}}catch{return{presence:n}}}async function D(e,t,n){let r=await I([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!H(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};let n=t.dependencies?.[e];return n?typeof n.version==`string`?{presence:`present`,version:n.version}:{presence:`present`}:{presence:`absent`}}catch{return{presence:`unknown`}}}async function O(e,t,n){let r=await I([`brew`,`list`,e.kind===`cask`?`--cask`:`--formula`,`--versions`,e.id],t,n);if(!r)return{presence:`unknown`};let i=r.stdout.trim().split(/\s+/u).at(-1);if(r.exitCode===0)return i&&/^\d/u.test(i)?{presence:`present`,version:i}:{presence:`present`};let a=r.stderr.toLowerCase();return a.includes(`no such keg`)||a.includes(`is not installed`)?{presence:`absent`}:{presence:`unknown`}}async function k(e,t,n){let r=await I([`cargo`,`install`,`--list`],t,n);if(!r||r.exitCode!==0)return{presence:`unknown`};let i=e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),a=r.stdout.match(RegExp(`^${i}\\s+v([^:\\s]+):\\s*$`,`mu`))?.[1];return a?{presence:`present`,version:a}:{presence:`absent`}}async function A(e,t,n){if(t.signal.aborted)throw new u(W(t.signal));let r=e.binaryName?.trim()||e.id.trim().split(`/`).pop()?.replace(/@.*$/u,``);if(!r)return{presence:`unknown`};let a=n.env.DENO_INSTALL_ROOT?.trim()||i(n.homeDir(),`.deno`);try{if(await n.access(i(a,`bin`,r)),t.signal.aborted)throw new u(W(t.signal));return{presence:`present`}}catch(e){if(e instanceof u)throw e;return U(e)?{presence:`absent`}:{presence:`unknown`}}}async function j(e,t,n){let r=await I([`mise`,`ls`,`--installed`,`--json`,e],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!H(t))return{presence:`unknown`};let n=e.split(`:`).pop()?.split(`/`).pop(),i=Array.isArray(t[e])?e:n&&Array.isArray(t[n])?n:void 0,a=i?t[i]:void 0;if(!Array.isArray(a)||a.length===0)return{presence:`absent`};let o=a.find(e=>H(e)&&typeof e.version==`string`);return H(o)&&typeof o.version==`string`?{presence:`present`,version:o.version}:{presence:`present`}}catch{return{presence:`unknown`}}}async function M(e,t,n){for(let r of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]]){let i=await I([...r,`--version`],t,n);if(!i||i.exitCode!==0)continue;let a=await I([...r,`show`,e],t,n);if(!a)return{presence:`unknown`};if(a.exitCode===0){let e=a.stdout.split(/\r?\n/u).map(e=>/^Version:\s*(.+)\s*$/iu.exec(e.trim())?.[1]?.trim()).find(Boolean);return e?{presence:`present`,version:e}:{presence:`present`}}let o=a.stderr.toLowerCase();return o.includes(`package(s) not found`)||o.includes(`not found`)?{presence:`absent`}:{presence:`unknown`}}return{presence:`unknown`}}async function N(e,t,n){let r=await I([`uv`,`tool`,`list`],t,n);if(r&&P(r))return{presence:`absent`};if(!r?.stdout.trim())return{presence:`unknown`};let i=V(e),a=!1;for(let e of r.stdout.split(/\r?\n/u)){let t=/^(\S+)\s+v([^\s]+)/u.exec(e.trim());if(t&&(a=!0,V(t[1])===i))return{presence:`present`,version:t[2]}}return a?{presence:`absent`}:{presence:`unknown`}}function P(e){if(e.exitCode!==0)return!1;let t=`${e.stdout}\n${e.stderr}`.split(/\r?\n/u).map(e=>e.trim()).filter(Boolean);return t.length===1&&/^no tools installed\.?$/iu.test(t[0])}async function F(e,t,n){let r=await I([`winget`,`list`,`--id`,e,`-e`],t,n);if(!r)return{presence:`unknown`};if(r.exitCode===0){let t=e.toLowerCase();for(let e of r.stdout.split(/\r?\n/u)){let n=e.trim().split(/\s{2,}|\t+/u).map(e=>e.trim()).filter(Boolean),r=n.findIndex(e=>e.toLowerCase()===t);if(r>=0)return n[r+1]?{presence:`present`,version:n[r+1]}:{presence:`present`}}return r.stdout.toLowerCase().includes(t)?{presence:`present`}:{presence:`unknown`}}let i=`${r.stdout}\n${r.stderr}`.toLowerCase();return[`no installed package found`,`no package found matching input criteria`,`no installed package matched`].some(e=>i.includes(e))?{presence:`absent`}:{presence:`unknown`}}async function I(e,t,n){try{return await n.runCommand(e,t)}catch(e){if(e instanceof u)throw e;return}}function L(e,t){let n=`${t}@`;for(let t of e.split(`
3
+ `)){let e=t.trim().split(/\s+/u).at(-1);if(e?.startsWith(n)&&e.length>n.length)return e.slice(n.length)}}function R(e,t){try{let n=JSON.parse(e);if(!H(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(!H(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}catch{return`unknown`}}function z(e){return{kind:`success`,value:e}}function B(e){let t=W(e);return{kind:`cancelled`,...t?{reason:t}:{}}}function V(e){return e.toLowerCase().replaceAll(/[-_.]+/gu,`-`)}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function U(e){return e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function W(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}export{u as n,d as r,y as t};
@@ -1 +1 @@
1
- import{R as e}from"./agents-1xVrcX2T.mjs";const t=Object.freeze([`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`]);async function n(t){let n=t.registry??e;return Promise.all(n.list().map(async e=>({availability:await i(e.availability,t.context),capabilities:n.getCapabilities(e.id),id:e.id})))}function r(e,n){let r=new Map(e.map(e=>[e.id,e]));return Object.fromEntries(t.map(e=>{let t=r.get(e);if(!t)throw Error(`Provider snapshot is missing first-party adapter: ${e}`);return[e,n(t)]}))}async function i(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}export{r as n,n as t};
1
+ import{R as e}from"./agents-M0IK-EAw.mjs";const t=Object.freeze([`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`]);async function n(t){let n=t.registry??e;return Promise.all(n.list().map(async e=>({availability:await i(e.availability,t.context),capabilities:n.getCapabilities(e.id),id:e.id})))}function r(e,n){let r=new Map(e.map(e=>[e.id,e]));return Object.fromEntries(t.map(e=>{let t=r.get(e);if(!t)throw Error(`Provider snapshot is missing first-party adapter: ${e}`);return[e,n(t)]}))}async function i(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}export{r as n,n as t};
@@ -1 +1 @@
1
- import{N as e,P as t,R as n}from"./agents-1xVrcX2T.mjs";const r=Object.freeze(n.list().filter(e=>{let t=n.getCapabilities(e.id);return t.includes(`update`)&&t.includes(`uninstall`)}).map(e=>e.id));function i(e){let t=n.getCapabilities(e);if(!t.includes(`install`))throw Error(`First-party provider ${e} must implement install`);let r=t.includes(`update`),i=t.includes(`uninstall`);return{canInstall:!0,canLookupLatestVersion:t.includes(`resolve-latest-version`),canUninstall:i,canUpdate:r,lifecycle:r&&i?`managed`:`unmanaged`}}function a(){return r}function o(e){return r.includes(e)}function s(e){return i(e).lifecycle}function c(e){return i(e).canUpdate}function l(e){return i(e).canUninstall}function u(e){return i(e).canLookupLatestVersion}function d(n,r){let i=r?.packageName;if(!r||!i)return;let a=t(r.installType);if(a&&e(n.name)?.[a]?.includes(i))return{...n.packages?.[a]?{currentPackage:n.packages[a]}:{},recordedPackage:i}}function f(e,t){return d(e,t)!==void 0}function p(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function m(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 h(e){return e?c(e.installType):!1}function g(e,t){return h(t)||!!e.selfUpdate}function _(e){return!!e&&u(e.installType)}function v(e){return e.length>0&&e.every(e=>u(e.type))}function y(e){return o(e.type)?`${s(e.type)}/${e.type}${p(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function b(e){return e?o(e.installType)?`managed via ${e.installType}${p(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected on disk`}function x(e,t){let n=N({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function S(e,t){if(t.type===`bun`){let n=m(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=m(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=m(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=m(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=m(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=m(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=m(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 C(e,t,n){if(t)return!_(t)||f(e,t)?void 0:t.packageName||e.packages?.npm||void 0;if(!(!e.packages?.npm||!v(n)))return e.packages.npm}function w(e,t){let n=T(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 T(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(E(t))return`npm`}function E(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 D(e){if(e.installedState)return o(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(o(t.type)&&c(t.type))return t.type}const O={strategy:`managed`,canHandle:e=>!!D(e),getManagedInstallerType:e=>D(e)},k={strategy:`self-update`,canHandle:e=>!h(e.installedState)&&!!e.agent.selfUpdate},A={strategy:`manual-hint`,canHandle:()=>!0},j=[O,k,A];function M(e){return j.find(t=>t.canHandle(e))??A}function N(e){return M(e).strategy}function P(e){return g(e.agent,e.installedState)}export{i as _,S as a,x as c,m as d,d as f,s as g,c as h,M as i,w as l,l as m,P as n,y as o,u as p,N as r,b as s,j as t,C as u,a as v,o as y};
1
+ import{N as e,P as t,R as n}from"./agents-M0IK-EAw.mjs";const r=Object.freeze(n.list().filter(e=>{let t=n.getCapabilities(e.id);return t.includes(`update`)&&t.includes(`uninstall`)}).map(e=>e.id));function i(e){let t=n.getCapabilities(e);if(!t.includes(`install`))throw Error(`First-party provider ${e} must implement install`);let r=t.includes(`update`),i=t.includes(`uninstall`);return{canInstall:!0,canLookupLatestVersion:t.includes(`resolve-latest-version`),canUninstall:i,canUpdate:r,lifecycle:r&&i?`managed`:`unmanaged`}}function a(){return r}function o(e){return r.includes(e)}function s(e){return i(e).lifecycle}function c(e){return i(e).canUpdate}function l(e){return i(e).canUninstall}function u(e){return i(e).canLookupLatestVersion}function d(n,r){let i=r?.packageName;if(!r||!i)return;let a=t(r.installType);if(a&&e(n.name)?.[a]?.includes(i))return{...n.packages?.[a]?{currentPackage:n.packages[a]}:{},recordedPackage:i}}function f(e,t){return d(e,t)!==void 0}function p(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function m(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 h(e){return e?c(e.installType):!1}function g(e,t){return h(t)||!!e.selfUpdate}function _(e){return!!e&&u(e.installType)}function v(e){return e.length>0&&e.every(e=>u(e.type))}function y(e){return o(e.type)?`${s(e.type)}/${e.type}${p(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function b(e){return e?o(e.installType)?`managed via ${e.installType}${p(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected on disk`}function x(e,t){let n=N({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function S(e,t){if(t.type===`bun`){let n=m(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=m(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=m(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=m(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=m(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=m(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=m(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 C(e,t,n){if(t)return!_(t)||f(e,t)?void 0:t.packageName||e.packages?.npm||void 0;if(!(!e.packages?.npm||!v(n)))return e.packages.npm}function w(e,t){let n=T(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 T(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(E(t))return`npm`}function E(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 D(e){if(e.installedState)return o(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(o(t.type)&&c(t.type))return t.type}const O={strategy:`managed`,canHandle:e=>!!D(e),getManagedInstallerType:e=>D(e)},k={strategy:`self-update`,canHandle:e=>!h(e.installedState)&&!!e.agent.selfUpdate},A={strategy:`manual-hint`,canHandle:()=>!0},j=[O,k,A];function M(e){return j.find(t=>t.canHandle(e))??A}function N(e){return M(e).strategy}function P(e){return g(e.agent,e.installedState)}export{i as _,S as a,x as c,m as d,d as f,s as g,c as h,M as i,w as l,l as m,P as n,y as o,u as p,N as r,b as s,j as t,C as u,a as v,o as y};
@@ -0,0 +1 @@
1
+ import{t as e}from"./resolve-S-TdJhLk.mjs";export{e as resolveCommand};
@@ -1 +1 @@
1
- import{i as e,n as t,t as n}from"./output-C0TF6WTW.mjs";import{i as r,n as i,t as a}from"./human-BbO37wBs.mjs";import{t as o}from"./color-CLDVRyIs.mjs";import{r as s}from"./agent-inspection-D8YF0G7l.mjs";import{n as c,t as l}from"./cli-read-projection-DBrxiinB.mjs";async function u(r){let i=await s(r);if(!i)return e(n({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),d);let{agent:a,inspection:o}=l(i);if(!o.inPath||!o.binaryPath){let t=c(a,o.methods).filter(e=>e.command);return e(n({action:`resolve`,data:{agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${a.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${a.name}`},message:`${a.displayName} is not installed.`},target:{kind:`agent`,name:a.name}}),d)}return e(t({action:`resolve`,data:{agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},resolution:{binaryPath:o.binaryPath,installed:!0,installSource:o.installedState?.installType??`detected-in-path`,installedVersion:o.installedVersion,lifecycle:o.lifecycle,sourceLabel:o.sourceLabel,suggestedLaunchCommand:[o.binaryPath]}},target:{kind:`agent`,name:a.name}}),d)}function d(e){let t=a();if(e.error){for(let n of r(o.red(e.error.message),{width:t}))console.log(n);let n=e.data?.resolution.installGuidance;if(n){for(let e of r(o.dim(`Try: ${n.suggestedEnsureCommand}`),{continuationIndent:` `,width:t}))console.log(e);for(let e of n.installMethods)for(let n of r(o.dim(`[${e.label}] ${e.command}`),{continuationIndent:` `,indent:`Install: `,width:t}))console.log(n)}return}if(!e.data)return;console.log(o.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Binary`,value:e.data.agent.binaryName},{label:`Path`,value:e.data.resolution.binaryPath},{label:`Source`,value:e.data.resolution.sourceLabel},{label:`Lifecycle`,value:e.data.resolution.lifecycle},{label:`Install type`,value:e.data.resolution.installSource},...e.data.resolution.installedVersion?[{label:`Version`,value:e.data.resolution.installedVersion}]:[],{label:`Launch`,value:e.data.resolution.suggestedLaunchCommand.join(` `)}];for(let e of i(n,{labelStyle:o.bold,width:t}))console.log(e);console.log()}export{u as t};
1
+ import{i as e,n as t,t as n}from"./output-PUVIMxAA.mjs";import{i as r,n as i,t as a}from"./human-BbO37wBs.mjs";import{t as o}from"./color-CLDVRyIs.mjs";import{r as s}from"./agent-inspection-BGC8hn92.mjs";import{n as c,t as l}from"./cli-read-projection-3NGMRhuS.mjs";async function u(r){let i=await s(r);if(!i)return e(n({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),d);let{agent:a,inspection:o}=l(i);if(!o.inPath||!o.binaryPath){let t=c(a,o.methods).filter(e=>e.command);return e(n({action:`resolve`,data:{agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${a.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${a.name}`},message:`${a.displayName} is not installed.`},target:{kind:`agent`,name:a.name}}),d)}return e(t({action:`resolve`,data:{agent:{binaryName:a.binaryName,displayName:a.displayName,name:a.name},resolution:{binaryPath:o.binaryPath,installed:!0,installSource:o.installedState?.installType??`detected-in-path`,installedVersion:o.installedVersion,lifecycle:o.lifecycle,sourceLabel:o.sourceLabel,suggestedLaunchCommand:[o.binaryPath]}},target:{kind:`agent`,name:a.name}}),d)}function d(e){let t=a();if(e.error){for(let n of r(o.red(e.error.message),{width:t}))console.log(n);let n=e.data?.resolution.installGuidance;if(n){for(let e of r(o.dim(`Try: ${n.suggestedEnsureCommand}`),{continuationIndent:` `,width:t}))console.log(e);for(let e of n.installMethods)for(let n of r(o.dim(`[${e.label}] ${e.command}`),{continuationIndent:` `,indent:`Install: `,width:t}))console.log(n)}return}if(!e.data)return;console.log(o.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Binary`,value:e.data.agent.binaryName},{label:`Path`,value:e.data.resolution.binaryPath},{label:`Source`,value:e.data.resolution.sourceLabel},{label:`Lifecycle`,value:e.data.resolution.lifecycle},{label:`Install type`,value:e.data.resolution.installSource},...e.data.resolution.installedVersion?[{label:`Version`,value:e.data.resolution.installedVersion}]:[],{label:`Launch`,value:e.data.resolution.suggestedLaunchCommand.join(` `)}];for(let e of i(n,{labelStyle:o.bold,width:t}))console.log(e);console.log()}export{u as t};
@@ -1,3 +1,3 @@
1
- import{W as e,i as t,n,t as r}from"./output-C0TF6WTW.mjs";import{i,r as a,t as o}from"./human-BbO37wBs.mjs";import{t as s}from"./color-CLDVRyIs.mjs";async function c(e){let i=u(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(r({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),l):t(n({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),l)}function l(e){if(e.error){console.log(s.red(e.error.message));return}if(!e.data)return;let t=o();console.log(s.bold(`
1
+ import{W as e,i as t,n,t as r}from"./output-PUVIMxAA.mjs";import{i,r as a,t as o}from"./human-BbO37wBs.mjs";import{t as s}from"./color-CLDVRyIs.mjs";async function c(e){let i=u(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(r({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),l):t(n({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),l)}function l(e){if(e.error){console.log(s.red(e.error.message));return}if(!e.data)return;let t=o();console.log(s.bold(`
2
2
  Quantex Schemas
3
3
  `));for(let n of a(e.data.commands,[{header:`Command`,maxWidth:24,minWidth:8,value:e=>s.cyan(e.name)},{header:`Description`,minWidth:16,value:e=>e.description,wrap:!0}],{headerStyle:s.bold,width:t}))console.log(n);console.log();for(let e of i(s.dim(`Document: qtx schema <command> --json`),{indent:` `,width:t}))console.log(e);console.log()}function u(){return e().map(e=>e.schema)}export{c as n,u as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./schema-B4yk5NPn.mjs";export{e as schemaCommand};
@@ -1 +1 @@
1
- import{a as e}from"./file-store-oHCTTnLn.mjs";import{n as t}from"./detect-Dou6fit1.mjs";import{n}from"./agents-1xVrcX2T.mjs";import{n as r}from"./cli-context-DI43ouBg.mjs";import{A as i,D as a,O as o,S as s,i as c,j as l,n as u,t as d,x as f}from"./output-C0TF6WTW.mjs";import{m as p}from"./providers-BrKmtcci.mjs";import{t as m}from"./color-CLDVRyIs.mjs";import{a as h,i as g,n as _,r as v}from"./user-output-CF4UAX0c.mjs";import{n as y,r as b}from"./installation-routing-CuPHXckO.mjs";import{l as x,o as S}from"./package-manager-BdBKbZci.mjs";import{a as C,o as w,t as T}from"./provider-binding-DW-oviNl.mjs";import{t as E}from"./provider-evidence-C_k-kzoO.mjs";import{t as D}from"./lifecycle-errors-Elpn7QSu.mjs";const O=e=>new Promise(t=>setTimeout(t,e));async function k(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??O,i=Math.max(0,t.delayMs??100);for(let a=0;a<n;a+=1){if(t.signal?.aborted||t.isCancelled?.())return!1;let o=await e();if(t.signal?.aborted||t.isCancelled?.())return!1;if(o)return!0;a+1<n&&await r(i)}return!1}async function A(t,n=M()){let r=n.resolveAgent(t.name);if(!r)return{agent:N(t.name),kind:`agent-not-found`,name:t.name};try{return await n.withMutationLock(async()=>j(r,t.name,n))}catch(t){if(e(t))return{agent:r,kind:`locked`,lock:t};throw t}}async function j(e,t,n){let[r,i]=await Promise.all([n.readInstalledState(e.name),n.readReceipt(e.name)]);if(!r&&!i)return{agent:e,kind:`unmanaged`,name:t};let a=await n.isBinaryInPath(e.binaryName),o=r?w(e,r):void 0,s=i?C(i):void 0;if(r&&!o||i&&!s)return{agent:e,kind:`failed`,lifecycle:`indeterminate-source`,message:`Cannot resolve provider evidence for ${e.displayName}.`};if(o&&s&&!T(o,s,e.binaryName))return{agent:e,kind:`failed`,lifecycle:`conflicting-source`,message:`Recorded sources disagree for ${e.displayName}.`};let c=o??s,l=await n.observeProvider(c);if(l.kind!==`success`)return{agent:e,kind:`failed`,lifecycle:`indeterminate-source`,message:`Cannot verify provider state for ${e.displayName}.`};if(l.value.kind===`absent`)return a?{agent:e,kind:`failed`,lifecycle:`conflicting-source`,message:`${e.displayName} is on PATH but its recorded provider target is absent.`}:n.dryRun?{action:`would reconcile stale lifecycle evidence`,agent:e,kind:`dry-run`}:(r&&await n.removeInstalledState(e.name),i&&await n.removeReceipt(e.name),{agent:e,kind:`ghost-reconciled`});if(!r)return{agent:e,kind:`failed`,lifecycle:`indeterminate-source`,message:`Cannot safely reconstruct ${e.displayName}'s uninstall source.`};if(n.dryRun)return{action:`would uninstall ${e.displayName}`,agent:e,kind:`dry-run`};if(!p(r.installType))return(await n.uninstallInstalled(e,r)).kind===`success`?(await n.removeReceipt(e.name),{agent:e,changed:!0,kind:`uninstalled`}):{agent:e,kind:`failed`,lifecycle:`provider-failure`,message:`Failed to uninstall ${e.displayName}.`};if(i||await n.setReceipt({...c.target.binaryName?{executableName:c.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:c.providerId,providerTargetId:c.target.id,providerTargetKind:c.target.kind,schemaVersion:1,targetId:e.name,verifiedAt:new Date().toISOString(),...l.value.executablePath?{executablePath:l.value.executablePath}:{},...l.value.version?{version:l.value.version}:{}}),(await n.uninstallInstalled(e,r)).kind!==`success`)return{agent:e,kind:`failed`,lifecycle:`provider-failure`,message:`Failed to uninstall ${e.displayName}.`};if(!await k(async()=>{let t=await n.observeProvider(c);return t.kind!==`success`||t.value.kind!==`absent`?!1:!await n.isBinaryInPath(e.binaryName)},{isCancelled:n.isCancelled})){let t=await n.observeProvider(c);return t.kind===`success`&&t.value.kind===`absent`?(await n.removeReceipt(e.name),{agent:e,kind:`failed`,lifecycle:`conflicting-source`,message:`${e.displayName}'s managed package was removed, but another copy remains on PATH.`}):(await n.setInstalledState(r),{agent:e,kind:`failed`,lifecycle:`verification-failed`,message:`${e.displayName} is still present after provider removal.`})}return await n.removeReceipt(e.name),{agent:e,changed:!0,kind:`uninstalled`}}function M(e={}){let r=e.signal;return{dryRun:e.dryRun??!1,isBinaryInPath:t,isCancelled:e.isCancelled??(()=>!!r?.aborted),observeProvider:t=>E(t,{signal:r??new AbortController().signal,timeoutMs:e.timeoutMs}),readInstalledState:f,readReceipt:s,removeInstalledState:a,removeReceipt:o,resolveAgent:n,setInstalledState:i,setReceipt:l,signal:r,timeoutMs:e.timeoutMs,uninstallInstalled:S,withMutationLock:x}}function N(e){return{binaryName:e,displayName:e,homepage:``,name:e,platforms:{}}}async function P(e){return await F(e,b(`uninstall`))}async function F(e,t){y(`uninstall`,t);let n=r(),i=new AbortController;return n.cancelled&&i.abort(`cli-cancelled`),c(I(await A({name:e},M({dryRun:_(),isCancelled:()=>!!n.cancelled||i.signal.aborted,signal:i.signal,timeoutMs:n.timeoutMs})),e),L)}function I(e,t){switch(e.kind){case`agent-not-found`:return d({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}});case`unmanaged`:return d({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:e.agent.displayName,input:t,lifecycle:`unmanaged`,name:e.agent.name},message:`${e.agent.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${e.agent.name} for details.`},target:{kind:`agent`,name:e.agent.name}});case`locked`:return d({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},...D(e.lock,{kind:`agent`,name:e.agent.name})});case`failed`:return d({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:e.lifecycle},message:e.message},target:{kind:`agent`,name:e.agent.name}});case`dry-run`:return u({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},target:{kind:`agent`,name:e.agent.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${e.action}.`}]});case`ghost-reconciled`:return u({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!0},target:{kind:`agent`,name:e.agent.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.agent.displayName} was already absent; stale lifecycle evidence was removed.`}]});case`uninstalled`:return u({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!0},target:{kind:`agent`,name:e.agent.name}})}}function L(e){if(e.error){v(m.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)h(m.yellow(t.message));return}g(m.cyan(`Uninstalling ${e.data.agent.displayName}...`)),g(m.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{P as uninstallCommand};
1
+ import{a as e}from"./file-store-C7Ak4t_P.mjs";import{n as t}from"./detect-CbD8V1su.mjs";import{n}from"./agents-M0IK-EAw.mjs";import{n as r}from"./cli-context-DI43ouBg.mjs";import{A as i,D as a,O as o,S as s,i as c,j as l,n as u,t as d,x as f}from"./output-PUVIMxAA.mjs";import{m as p}from"./providers-GfRcOIdh.mjs";import{t as m}from"./color-CLDVRyIs.mjs";import{a as h,i as g,n as _,r as v}from"./user-output-CF4UAX0c.mjs";import{n as y,r as b}from"./installation-routing-CuPHXckO.mjs";import{l as x,o as S}from"./package-manager-NlPhhpQl.mjs";import{a as C,o as w,t as T}from"./provider-binding-DW-oviNl.mjs";import{t as E}from"./provider-evidence-D9Y79LD5.mjs";import{t as D}from"./lifecycle-errors-D9MEtJ8Y.mjs";const O=e=>new Promise(t=>setTimeout(t,e));async function k(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??O,i=Math.max(0,t.delayMs??100);for(let a=0;a<n;a+=1){if(t.signal?.aborted||t.isCancelled?.())return!1;let o=await e();if(t.signal?.aborted||t.isCancelled?.())return!1;if(o)return!0;a+1<n&&await r(i)}return!1}async function A(t,n=M()){let r=n.resolveAgent(t.name);if(!r)return{agent:N(t.name),kind:`agent-not-found`,name:t.name};try{return await n.withMutationLock(async()=>j(r,t.name,n))}catch(t){if(e(t))return{agent:r,kind:`locked`,lock:t};throw t}}async function j(e,t,n){let[r,i]=await Promise.all([n.readInstalledState(e.name),n.readReceipt(e.name)]);if(!r&&!i)return{agent:e,kind:`unmanaged`,name:t};let a=await n.isBinaryInPath(e.binaryName),o=r?w(e,r):void 0,s=i?C(i):void 0;if(r&&!o||i&&!s)return{agent:e,kind:`failed`,lifecycle:`indeterminate-source`,message:`Cannot resolve provider evidence for ${e.displayName}.`};if(o&&s&&!T(o,s,e.binaryName))return{agent:e,kind:`failed`,lifecycle:`conflicting-source`,message:`Recorded sources disagree for ${e.displayName}.`};let c=o??s,l=await n.observeProvider(c);if(l.kind!==`success`)return{agent:e,kind:`failed`,lifecycle:`indeterminate-source`,message:`Cannot verify provider state for ${e.displayName}.`};if(l.value.kind===`absent`)return a?{agent:e,kind:`failed`,lifecycle:`conflicting-source`,message:`${e.displayName} is on PATH but its recorded provider target is absent.`}:n.dryRun?{action:`would reconcile stale lifecycle evidence`,agent:e,kind:`dry-run`}:(r&&await n.removeInstalledState(e.name),i&&await n.removeReceipt(e.name),{agent:e,kind:`ghost-reconciled`});if(!r)return{agent:e,kind:`failed`,lifecycle:`indeterminate-source`,message:`Cannot safely reconstruct ${e.displayName}'s uninstall source.`};if(n.dryRun)return{action:`would uninstall ${e.displayName}`,agent:e,kind:`dry-run`};if(!p(r.installType))return(await n.uninstallInstalled(e,r)).kind===`success`?(await n.removeReceipt(e.name),{agent:e,changed:!0,kind:`uninstalled`}):{agent:e,kind:`failed`,lifecycle:`provider-failure`,message:`Failed to uninstall ${e.displayName}.`};if(i||await n.setReceipt({...c.target.binaryName?{executableName:c.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:c.providerId,providerTargetId:c.target.id,providerTargetKind:c.target.kind,schemaVersion:1,targetId:e.name,verifiedAt:new Date().toISOString(),...l.value.executablePath?{executablePath:l.value.executablePath}:{},...l.value.version?{version:l.value.version}:{}}),(await n.uninstallInstalled(e,r)).kind!==`success`)return{agent:e,kind:`failed`,lifecycle:`provider-failure`,message:`Failed to uninstall ${e.displayName}.`};if(!await k(async()=>{let t=await n.observeProvider(c);return t.kind!==`success`||t.value.kind!==`absent`?!1:!await n.isBinaryInPath(e.binaryName)},{isCancelled:n.isCancelled})){let t=await n.observeProvider(c);return t.kind===`success`&&t.value.kind===`absent`?(await n.removeReceipt(e.name),{agent:e,kind:`failed`,lifecycle:`conflicting-source`,message:`${e.displayName}'s managed package was removed, but another copy remains on PATH.`}):(await n.setInstalledState(r),{agent:e,kind:`failed`,lifecycle:`verification-failed`,message:`${e.displayName} is still present after provider removal.`})}return await n.removeReceipt(e.name),{agent:e,changed:!0,kind:`uninstalled`}}function M(e={}){let r=e.signal;return{dryRun:e.dryRun??!1,isBinaryInPath:t,isCancelled:e.isCancelled??(()=>!!r?.aborted),observeProvider:t=>E(t,{signal:r??new AbortController().signal,timeoutMs:e.timeoutMs}),readInstalledState:f,readReceipt:s,removeInstalledState:a,removeReceipt:o,resolveAgent:n,setInstalledState:i,setReceipt:l,signal:r,timeoutMs:e.timeoutMs,uninstallInstalled:S,withMutationLock:x}}function N(e){return{binaryName:e,displayName:e,homepage:``,name:e,platforms:{}}}async function P(e){return await F(e,b(`uninstall`))}async function F(e,t){y(`uninstall`,t);let n=r(),i=new AbortController;return n.cancelled&&i.abort(`cli-cancelled`),c(I(await A({name:e},M({dryRun:_(),isCancelled:()=>!!n.cancelled||i.signal.aborted,signal:i.signal,timeoutMs:n.timeoutMs})),e),L)}function I(e,t){switch(e.kind){case`agent-not-found`:return d({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}});case`unmanaged`:return d({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:e.agent.displayName,input:t,lifecycle:`unmanaged`,name:e.agent.name},message:`${e.agent.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${e.agent.name} for details.`},target:{kind:`agent`,name:e.agent.name}});case`locked`:return d({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},...D(e.lock,{kind:`agent`,name:e.agent.name})});case`failed`:return d({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:e.lifecycle},message:e.message},target:{kind:`agent`,name:e.agent.name}});case`dry-run`:return u({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!1},target:{kind:`agent`,name:e.agent.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${e.action}.`}]});case`ghost-reconciled`:return u({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!0},target:{kind:`agent`,name:e.agent.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.agent.displayName} was already absent; stale lifecycle evidence was removed.`}]});case`uninstalled`:return u({action:`uninstall`,data:{agent:{displayName:e.agent.displayName,name:e.agent.name},changed:!0},target:{kind:`agent`,name:e.agent.name}})}}function L(e){if(e.error){v(m.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)h(m.yellow(t.message));return}g(m.cyan(`Uninstalling ${e.data.agent.displayName}...`)),g(m.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{P as uninstallCommand};
@@ -0,0 +1 @@
1
+ import{n as e}from"./detect-CbD8V1su.mjs";import{l as t}from"./providers-GfRcOIdh.mjs";import{n}from"./agents-BPG1DaPt.mjs";import{n as r}from"./lifecycle-observations-xZ--ogpK.mjs";async function i(i){let a=n(i);if(!a||!await e(a.binaryName))return;let o=await r(i);if(!(!o?.pathExecutable.present||o.installedState||o.receipt))return t(o.methods,o.resolvedBinaryPath??o.pathExecutable.path)?void 0:o.agent}export{i as t};
@@ -0,0 +1 @@
1
+ import{a as e,n as t,r as n,t as r}from"./messages-D6r2o7w-.mjs";import{g as i}from"./npm-PO9Nwgt_.mjs";import{t as a}from"./executable-search-paths-CfJ3prUX.mjs";import{a as o,c as s}from"./file-store-C7Ak4t_P.mjs";import{t as c}from"./detect-CbD8V1su.mjs";import{R as l,r as u}from"./agents-M0IK-EAw.mjs";import{n as ee}from"./cli-context-DI43ouBg.mjs";import{a as d}from"./config-jsaRCEWF.mjs";import{E as f,Q as p,S as te,T as m,et as ne,i as h,n as g,r as _,t as v,x as y}from"./output-PUVIMxAA.mjs";import{f as b,r as re}from"./providers-GfRcOIdh.mjs";import{t as x}from"./cli-operation-context-CzjG_eom.mjs";import{t as S}from"./color-CLDVRyIs.mjs";import{a as C,i as w,n as T,r as E}from"./user-output-CF4UAX0c.mjs";import{n as ie,r as ae}from"./installation-routing-CuPHXckO.mjs";import{l as D,r as oe}from"./package-manager-NlPhhpQl.mjs";import{n as O}from"./agents-BPG1DaPt.mjs";import{t as k}from"./update-planner-Bnlt3KKP.mjs";import{r as se}from"./provider-binding-DW-oviNl.mjs";import{t as ce}from"./agent-observation-CcBKTAZT.mjs";import{t as le}from"./lifecycle-observations-xZ--ogpK.mjs";import{i as ue,n as de,r as fe}from"./production-observation-9e2raBHv.mjs";import{a as pe,c as me,l as he,r as ge,s as _e,u as A}from"./lifecycle-policy-BMJz8c77.mjs";import{n as j}from"./installation-failure-diagnostics-DjaKNCw3.mjs";async function M(e){let t;for(let n of e.commands){let r=await i(n,e.context,`agent self-update failed`);if(r.kind===`success`)return{kind:`success`,value:{evidence:[{kind:`command`,value:n.join(` `)}],target:e.target}};if(r.kind===`cancelled`||r.kind===`timed-out`)return r;t=r}return t??{kind:`unsupported`,operation:`update`,reason:`No self-update command is configured.`}}async function N(e={}){let t=e.npmBunUpdateStrategy??(await import(`./config-DzIZHWeq.mjs`)).loadConfig().then(e=>e.npmBunUpdateStrategy);return P({...e,configDir:de(e.configDir),npmBunUpdateStrategy:typeof t==`string`?t:await t})}function P(e){let t=e.providerRegistry??l,n=e.signal??new AbortController().signal;return{clock:()=>new Date().toISOString(),dryRun:e.dryRun??!1,executeSelfUpdate:M,observe:r=>I(r,{providerRegistry:t,signal:n,timeoutMs:e.timeoutMs}),planLifecycleUpdate:k,providerRegistry:t,registerCleanup:e.registerCleanup,signal:n,timeoutMs:e.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:D,writeReceipt:m.write,classifyMutationLockError:e=>o(e)?{reason:e.message,resource:e.resource}:void 0,listRegisteredAgentNames:e.listRegisteredAgentNames??(()=>ue().map(e=>e.name))}}function F(){return async()=>Object.keys((await f()).installedAgents)}async function I(e,t){let n=fe(e);if(!n)return;let r={signal:t.signal,...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}},i,a=()=>(i??=y(n.name),i),o=await oe(n);return ve(n,o,await ce(n,{clock:()=>new Date().toISOString(),inspectExecutable:async()=>ye(n,r),platform:c(),preferredCatalogBinding:o[0]?se(n,o[0]):void 0,providerRegistry:t.providerRegistry,readInstalledState:a,readReceipt:()=>te(n.name),resolveExecutablePath:e=>p(e,r),signal:t.signal,timeoutMs:t.timeoutMs}))}function ve(e,t,n){return{agent:{binaryName:e.binaryName,displayName:e.displayName,name:e.name,...e.packages?{packages:e.packages}:{},...e.selfUpdate?{selfUpdate:e.selfUpdate}:{}},...n.binding?{binding:n.binding}:{},capabilities:n.capabilities,executable:n.executable,...n.installedState?{installedState:n.installedState}:{},methods:[...t],observation:n.observation,...n.persistedBinding?{persistedBinding:n.persistedBinding}:{},...n.receipt?{receipt:n.receipt}:{}}}async function ye(e,t){let n=await s(a(e),t);if(!n)return{present:!1};let r=await ne(e.binaryName,e.versionProbe,t,n);return{path:await p(n,t)??n,present:!0,version:r}}function be(e,t={}){let n=!1,r,i,a,o,s=()=>(a??=t.loadPorts?.()??N({configDir:t.configDir,dryRun:t.dryRun,registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs}),a);return{dispose(){n=!0},getOutcome:()=>r,async observe(e){if(n)throw Error(`Core update invocation has been disposed.`);return(await s()).observe(e)},prepare(){return n?Promise.reject(Error(`Core update invocation has been disposed.`)):(i??=s().then(t=>A(e,t)),i)},run(){return n?Promise.reject(Error(`Core update invocation has been disposed.`)):(o??=(async()=>{let e=await this.prepare();if(n)throw Error(`Core update invocation has been disposed.`);return r=e.kind===`planned`?await me(e.planned,await s()):e,r})(),o)}}}function xe(e,t={}){let n=!1,r,i,a,o,s=()=>(a??=t.loadPorts?.()??N({configDir:t.configDir,dryRun:t.dryRun,listRegisteredAgentNames:e===`managed`?F():void 0,registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs}),a);return{dispose(){n=!0},getOutcome:()=>r,async observe(e){if(n)throw Error(`Core update batch invocation has been disposed.`);return(await s()).observe(e)},prepare(){return n?Promise.reject(Error(`Core update batch invocation has been disposed.`)):(i??=s().then(e=>he(e)),i)},run(){return n?Promise.reject(Error(`Core update batch invocation has been disposed.`)):(o??=(async()=>{let e=await this.prepare();if(n)throw Error(`Core update batch invocation has been disposed.`);return r=await _e(e,await s()),r})(),o)}}}async function L(){let e=R();try{return await e.run()}finally{e.dispose()}}function R(){return V(`all`,()=>u().map(e=>e.name))}function Se(){return V(`managed`,async()=>Object.keys((await f()).installedAgents))}async function z(e){let t=B(e);try{return await t.run()}finally{t.dispose()}}function B(e){return Ce(e)}function Ce(e){let t=x(),n=0,r=!1,i=!1,a=be(e,H(t)),o=()=>{!r||i||n>0||(i=!0,t.dispose())},s=async e=>{if(r)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,o()}};return{dispose(){r||(r=!0,a.dispose(),o())},getOutcome:()=>a.getOutcome(),observe(e){return s(()=>a.observe(e))},prepare(){return s(()=>a.prepare())},run(){return s(()=>a.run())}}}function V(e,t){let n=x(),r=0,i=!1,a=!1,s=xe(e,{...H(n),loadPorts:async()=>({...await U(n),classifyMutationLockError:e=>o(e)?{reason:e.message,resource:e.resource}:void 0,listRegisteredAgentNames:t})}),c=()=>{!i||a||r>0||(a=!0,n.dispose())},l=async e=>{if(i)throw Error(`Lifecycle update batch invocation has been disposed.`);r+=1;try{return await n.run(e)}finally{--r,c()}};return{dispose(){i||(i=!0,s.dispose(),c())},getOutcome:()=>s.getOutcome(),observe(e){return l(()=>s.observe(e))},prepare(){return l(()=>s.prepare())},run(){return l(()=>s.run())}}}function H(e){return{dryRun:T(),loadPorts:()=>U(e),registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs}}async function U(e){let t=await d(),n=le(e.context);return{classifyMutationLockError:e=>o(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:T(),executeSelfUpdate:M,listRegisteredAgentNames:()=>u().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:k,providerRegistry:l,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:D,writeReceipt:m.write}}async function W(e,t,n={runBatch:L,runManagedBatch:L,runSingle:z},r=!1){if(ie(`update`,ae(`update`)),r&&!t)return h(v({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`The --managed option requires --all.`},target:{kind:`agent`}}),Q);if(t)return Te(n,r?`managed`:`all`);if(!e)return h(v({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Q);let i=O(e);return i?Ee(i,n):h(v({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Q)}function we(e,t,n=!1){if(t){let t=n?Se():R();return{dispose:t.dispose,idempotencyPolicy:()=>ge(t),run:()=>W(e,!0,{runBatch:()=>t.run(),runManagedBatch:()=>t.run(),runSingle:z},n)}}if(!e)return{dispose(){},run:()=>W(e,t,void 0,n)};let r=B(e);return{dispose:r.dispose,idempotencyPolicy:()=>pe(e,r),run:()=>W(e,!1,{runBatch:L,runManagedBatch:L,runSingle:()=>r.run()},n)}}async function Te(e,t){_({action:`update`,data:{scope:t},target:{kind:`agent`},type:`started`});let n=await(t===`managed`?(e.runManagedBatch??e.runBatch)():e.runBatch()),r=Oe(n),i=Ae(n);return je(n)?h(v({action:`update`,data:{results:r,scope:t},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`},warnings:i}),Q):r.some(e=>e.status===`failed`||e.status===`locked`)?h(v({action:`update`,data:{results:r,scope:t},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`},warnings:i}),Q):h(g({action:`update`,data:{results:r,scope:t},target:{kind:`agent`},warnings:i}),Q)}async function Ee(e,t){_({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!o(t))throw t;return h(v({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),Q)}let r=K(n);if(n.kind===`unknown-agent`)return h(v({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),Q);if(r?.observation.kind===`absent`){let t=r.observation.drift.kind===`recorded-absent`?[J(e)]:[];return h(v({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Q)}let i=G(e,n);return Z([],i),n.kind===`cancelled`?h(v({action:`update`,data:{results:[i],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Q):i.status===`failed`||i.status===`locked`?h(v({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Q):h(g({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name},warnings:De(e,n)}),Q)}function De(e,t){if(t.kind!==`blocked`||t.category!==`superseded-package`)return[];let n=b(e,t.before.installedState);return n?[r(e,n)]:[]}function G(t,r){let i=K(r),a=`plan`in r?r.plan:void 0,o=i?.observation.kind===`present`?i.observation.version:void 0,s=Y(a),c=X(a)??i?.binding?.providerId;switch(r.kind){case`updated`:return{displayName:t.displayName,installedVersion:o,latestVersion:r.receipt.version??s,name:t.name,status:`updated`,strategy:c};case`up-to-date`:return{displayName:t.displayName,installedVersion:r.receipt.version??o,name:t.name,status:`up-to-date`,strategy:c};case`dry-run`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:c};case`not-executed`:return r.plan.planning.decision===`up-to-date`?{displayName:t.displayName,installedVersion:o,latestVersion:s,name:t.name,status:`up-to-date`}:{displayName:t.displayName,installedVersion:o,latestVersion:s,message:n(t),name:t.name,status:`manual-required`};case`blocked`:return r.category===`untracked`?{displayName:t.displayName,installedVersion:o,message:e(t),name:t.name,status:`manual-required`}:r.category===`manual-required`?{displayName:t.displayName,installedVersion:o,message:n(t),name:t.name,status:`manual-required`}:r.category===`superseded-package`?{displayName:t.displayName,installedVersion:o,message:r.reason,name:t.name,status:`manual-required`}:{displayName:t.displayName,installedVersion:o,message:r.reason,name:t.name,status:`failed`};case`cancelled`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:r.reason??`Update was cancelled before it could complete.`,name:t.name,status:`failed`,strategy:c};case`timed-out`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:`Update timed out after ${r.timeoutMs}ms.`,name:t.name,status:`failed`,strategy:c};case`provider-failed`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,name:t.name,status:`failed`,strategy:c};case`verification-failed`:case`receipt-failed`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:r.kind===`receipt-failed`?r.reason:r.verification.reason,name:t.name,status:`failed`,strategy:c};case`unknown-agent`:return{displayName:t.displayName,name:t.name,status:`failed`}}}function K(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function Oe(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);if(e){let t=ke(e);t&&Z(r,t)}else a&&Z(r,q(a))}return r}function ke(e){let n=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=O(e.agentName);if(!r)return{displayName:n?.agent.displayName??e.agentName,name:e.agentName,status:`failed`};let i=e.execution;if(e.planning.kind===`blocked`&&e.planning.category===`stale-state`)return;if(i?.kind===`locked`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:Y(i.plan),message:i.reason,name:r.name,resource:i.resource,status:`locked`,strategy:X(i.plan)};if(i?.kind===`unexpected-failure`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:Y(i.plan),message:i.reason,name:r.name,status:`failed`,strategy:X(i.plan)};let a=i??(e.planning.kind===`planned`?{kind:`not-executed`,plan:e.planning.planned}:e.planning),o=G(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=t(r,re({agent:r,installedState:n?.installedState,methods:[...n?.methods??[]]}))),o}function q(e){let t=O(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:Y(e.planning.planned),message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:X(e.planning.planned)}}function Ae(e){return e.plan.targets.flatMap(e=>{if(e.outcome.kind!==`blocked`)return[];let t=O(e.agentName)??e.outcome.before.agent;if(e.outcome.category===`stale-state`)return[J(t)];if(e.outcome.category===`superseded-package`){let n=b(t,e.outcome.before.installedState);return n?[r(t,n)]:[]}return[]})}function J(e){return{code:`AGENT_STALE_STATE`,details:{agentName:e.name,suggestedAction:`reconcile-agent-state`,suggestedCommands:[`quantex uninstall ${e.name}`]},message:`${e.displayName} is not installed but has stale lifecycle evidence. Run \`quantex uninstall ${e.name}\` to reconcile it.`}}function Y(e){return e?.strategy===`managed-provider`?e.plannedTargetVersion:void 0}function X(e){if(e)return e.strategy===`self-update`?`self-update`:`managed/${e.binding.providerId}`}function je(e){return ee().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function Z(e,t){e.push(t),_({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Q(e){if(!e.data){e.error&&E(S.red(e.error.message));return}for(let t of e.warnings)C(S.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:w(S.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:C(S.yellow(`${t.displayName}: manual action required.`)),t.message&&C(S.cyan(`Next step: ${t.message}`));break;case`planned`:C(S.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${$(t.installedVersion,t.latestVersion)}`));break;case`updated`:w(S.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${$(t.installedVersion,t.latestVersion)}`)),w(S.green(`${t.displayName} updated successfully!`));break;case`failed`:w(S.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${$(t.installedVersion,t.latestVersion)}`)),E(S.red(j(`Failed to update ${t.displayName}.`,t.message))),t.hint&&C(S.cyan(`Next step: ${t.hint}`));break;case`locked`:C(S.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&Me(e.data.results),!e.data.results.length&&e.error&&E(S.red(e.error.message))}function $(e,t){return e?` (${e} -> ${t??`latest`})`:``}function Me(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&w(S.bold(`Summary: ${n.join(`, `)}`))}export{we as createUpdateCommandInvocation};