quantex-cli 1.2.0 → 1.4.0

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 (99) hide show
  1. package/README.md +10 -10
  2. package/README.zh-CN.md +10 -10
  3. package/dist/agent-installation-CC7b92Lg.mjs +1 -0
  4. package/dist/agent-observation-CRB402ql.mjs +1 -0
  5. package/dist/agents-D_evv3iI.mjs +1 -0
  6. package/dist/agents-T-kpsmCW.mjs +1 -0
  7. package/dist/capabilities-grYk5oHD.mjs +5 -0
  8. package/dist/capabilities-wSW7O9K9.mjs +1 -0
  9. package/dist/child-process-CBKnpMWt.mjs +1 -0
  10. package/dist/cli-context-xudTdmO7.mjs +1 -0
  11. package/dist/cli-operation-context-9cYbrgIi.mjs +1 -0
  12. package/dist/cli-operation-context-QEqKxWgM.mjs +1 -0
  13. package/dist/cli.mjs +1 -1
  14. package/dist/color-BAlKATeY.mjs +1 -0
  15. package/dist/commands-BuUDcQrt.mjs +3 -0
  16. package/dist/commands-sYTYFFCw.mjs +1 -0
  17. package/dist/config-BxpAHhRY.mjs +3 -0
  18. package/dist/core-installation-cli-C9ej33OW.mjs +1 -0
  19. package/dist/core-read-observations-BQLHb148.mjs +1 -0
  20. package/dist/detect-BdnZzKbm.mjs +1 -0
  21. package/dist/doctor-CuljlwNn.mjs +3 -0
  22. package/dist/ensure-ChKutOVG.mjs +1 -0
  23. package/dist/ensure-CrY2orgM.mjs +1 -0
  24. package/dist/errors-BE_UKvvM.mjs +1 -0
  25. package/dist/file-store-Caz7fnAB.mjs +1 -0
  26. package/dist/index.mjs +2 -2
  27. package/dist/info-Btit6nFi.mjs +2 -0
  28. package/dist/inspect-C0MzsPU2.mjs +3 -0
  29. package/dist/inspect-kPreC_XR.mjs +1 -0
  30. package/dist/install-oVJ4PYF7.mjs +1 -0
  31. package/dist/installation-compatibility-BUIdD4fg.mjs +1 -0
  32. package/dist/installation-executor-DvXaa9X4.mjs +1 -0
  33. package/dist/installation-production-BXWTdqW5.mjs +1 -0
  34. package/dist/installation-provider-registry-Cs3gM0wK.mjs +1 -0
  35. package/dist/installation-routing-BV8ZnVFY.mjs +1 -0
  36. package/dist/installation-routing-Cyn08Qdm.mjs +1 -0
  37. package/dist/invocation-hZT7H6Sx.mjs +1 -0
  38. package/dist/lifecycle-observations-DuXTdiJE.mjs +1 -0
  39. package/dist/lifecycle-policy-BwXMvFde.mjs +1 -0
  40. package/dist/list-B9P46aKI.mjs +3 -0
  41. package/dist/mutation-recipe-catalog-Cr-4qobK.mjs +1 -0
  42. package/dist/npm-BMnWqkaW.mjs +4 -0
  43. package/dist/output-Bf3N0Tjs.mjs +5 -0
  44. package/dist/production-observation-CU1HQ10p.mjs +1 -0
  45. package/dist/provider-binding-DMLQQGPh.mjs +1 -0
  46. package/dist/provider-evidence-BnvMbSP7.mjs +1 -0
  47. package/dist/provider-observation-registry-l4duFenx.mjs +3 -0
  48. package/dist/{provider-observations-CRG1GCgp.mjs → provider-observations-CYYOshQ4.mjs} +1 -1
  49. package/dist/providers-gOIzOEnz.mjs +1 -0
  50. package/dist/registry-N9jeGQcX.mjs +1 -0
  51. package/dist/resolve-9iHuKOrC.mjs +1 -0
  52. package/dist/resolve-DqExBCue.mjs +1 -0
  53. package/dist/schema-BZLalYTL.mjs +1 -0
  54. package/dist/schema-D9JJUXYr.mjs +3 -0
  55. package/dist/schema-hCKyxJjR.mjs +1 -0
  56. package/dist/types-D3y_n7iy.mjs +1 -0
  57. package/dist/uninstall-DPlb_f05.mjs +1 -0
  58. package/dist/unmanaged-install-compatibility-BGcxxHZb.mjs +1 -0
  59. package/dist/update-C8mg46ew.mjs +1 -0
  60. package/dist/{update-planner-IgFzteV-.mjs → update-planner-D1_UjTb8.mjs} +1 -1
  61. package/dist/upgrade-lmvEjYEd.mjs +1 -0
  62. package/dist/user-output-C4bJjtc-.mjs +1 -0
  63. package/dist/version-cache-BdkaOTM-.mjs +1 -0
  64. package/dist/winget-C-UHM_On.mjs +2 -0
  65. package/package.json +2 -2
  66. package/dist/agent-installation-Dsz_I5Li.mjs +0 -1
  67. package/dist/agent-observation-DRzJavrO.mjs +0 -1
  68. package/dist/agents-CBoMqbP1.mjs +0 -2
  69. package/dist/agents-DvfpsVAI.mjs +0 -1
  70. package/dist/capabilities-CQZ0SLgD.mjs +0 -1
  71. package/dist/capabilities-C_gPEld2.mjs +0 -5
  72. package/dist/color-1gXmuBdm.mjs +0 -8
  73. package/dist/commands-84XyphJp.mjs +0 -1
  74. package/dist/commands-DiZ3IIz4.mjs +0 -3
  75. package/dist/config-C335pFul.mjs +0 -3
  76. package/dist/core-read-observations-Cm0FpEpL.mjs +0 -3
  77. package/dist/doctor-YObQVc1Y.mjs +0 -3
  78. package/dist/ensure-BqcmFFyN.mjs +0 -1
  79. package/dist/ensure-CSntyBTb.mjs +0 -1
  80. package/dist/errors-BrmJuMg3.mjs +0 -1
  81. package/dist/info-B4Gr79vU.mjs +0 -2
  82. package/dist/inspect-DSnK5oMu.mjs +0 -1
  83. package/dist/inspect-DyCXX7Tp.mjs +0 -3
  84. package/dist/install-BKh0kreC.mjs +0 -1
  85. package/dist/lifecycle-observations-31JWXSir.mjs +0 -1
  86. package/dist/lifecycle-policy-ZKxZhM5R.mjs +0 -1
  87. package/dist/list-BrePsdOM.mjs +0 -3
  88. package/dist/provider-binding-BvvHuohl.mjs +0 -1
  89. package/dist/resolve-B594qXY6.mjs +0 -1
  90. package/dist/resolve-CCeMk9aY.mjs +0 -1
  91. package/dist/schema-C2S3d_Cu.mjs +0 -3
  92. package/dist/schema-CgTSwXpy.mjs +0 -1
  93. package/dist/uninstall-5ZK3juO1.mjs +0 -1
  94. package/dist/update-DQR-B9S-.mjs +0 -1
  95. package/dist/upgrade-kK57LorF.mjs +0 -1
  96. package/dist/user-output-uK6ichvR.mjs +0 -1
  97. package/dist/version-cache-CJ0R5HZJ.mjs +0 -1
  98. /package/dist/{errors-BD4Gc9Rp.mjs → errors-D-W3vO4v.mjs} +0 -0
  99. /package/dist/{lifecycle-errors-Cal_j4yT.mjs → lifecycle-errors-DGA1j4MM.mjs} +0 -0
@@ -0,0 +1,5 @@
1
+ import{i as e,n as t,o as n,r,t as i}from"./child-process-CBKnpMWt.mjs";import{d as a,l as o,n as s}from"./npm-BMnWqkaW.mjs";import{n as c,r as l,t as u}from"./registry-N9jeGQcX.mjs";import{s as d,t as f}from"./schema-hCKyxJjR.mjs";import{n as p,r as m}from"./cli-context-xudTdmO7.mjs";import{a as ee,d as h,n as te,r as g,s as _,t as ne}from"./file-store-Caz7fnAB.mjs";import{existsSync as v}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 re,mkdir as ie,mkdtemp as ae,readFile as w,realpath as oe,rename as se,rm as T,stat as ce,writeFile as le}from"node:fs/promises";import{homedir as ue}from"node:os";import{createHash as de}from"node:crypto";import{fileURLToPath as fe}from"node:url";import{Buffer as pe}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 me(e,t,n={}){let r=await he(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function he(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;D(i);let a=await h();D(i);let o=a.versionCacheTtlHours*60*60*1e3,s=p().cacheMode,c=s===`no-cache`?{entries:{}}:await xe();D(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return D(i),k(l,o),l.body;let d=await ge(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(D(i),!d)return l&&(D(i),k(l,o)),l?.body;if(d.status===304&&l)return D(i),c.entries[t]={...l,expiresAt:u+o,fetchedAt:u},s!==`no-cache`&&(D(i),await Se(c)),D(i),we(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(D(i),k(l,o)),l?.body;D(i);let f={body:d.body,etag:d.etag,expiresAt:u+o,fetchedAt:u};return s!==`no-cache`&&(c.entries[t]=f,D(i),await Se(c)),D(i),we(u,u+o),d.body}async function ge(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 _e(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof i)throw e;if(r===t.retries)return}}async function _e(e,t){let n=t.networkPort;if(n)return ve(e,{...t,networkPort:n});let r=new AbortController,a,o,s,c,l,u=new Promise((e,t)=>c=t),d=()=>l??=be(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`?O(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}),ee=Date.now()+t.timeoutMs,h=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()>=ee&&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 ye(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(h),te&&clearTimeout(te),t.signal?.removeEventListener(`abort`,p),m?.()}}async function ve(e,t){if(t.signal?.aborted)throw O(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`?O(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 ye(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 be(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function D(e){if(e?.aborted)throw O(e)}function O(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 xe(){try{return JSON.parse(await w(Ce(),`utf8`))}catch{return{entries:{}}}}async function Se(e){await ie(x(_(),`cache`),{recursive:!0}),await le(Ce(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Ce(){return x(_(),`cache`,`versions.json`)}function k(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);m({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function we(e,t){m({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const Te=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Ee(e,t){if(t)return t(e);let n=e.trim().split(`
2
+ `)[0],r=n.match(Te);return r?r[1]:n||void 0}function De(e,t){return d(e,t)===1}async function Oe(i,a,o){let s=a?.command??[i,`--version`];try{let t=n(s,{detached:o!==void 0&&C.platform!==`win32`}),{exitCode:i,stdout:c}=o?await e(t,o):await r(t);return i===0?Ee(c,a?.parser):void 0}catch(e){if(t(e))throw e;return}}async function ke(e,n=`latest`,r={}){try{let t=l(r.registry)??`https://registry.npmjs.org`,i=await me(c(e,n,t),`npm:${t}:${e}:${n}`,{context:r.context,networkPort:r.networkPort});if(r.context?.signal.aborted)throw A(r.context.signal);return i?.version}catch(e){if(t(e))throw e;if(r.context?.signal.aborted)throw A(r.context.signal);return}}async function Ae(i,a){try{let t=n([C.platform===`win32`?`where`:`which`,i],{detached:a!==void 0&&C.platform!==`win32`}),{exitCode:o,stdout:s}=a?await e(t,a):await r(t);return o===0?s.trim().split(`
3
+ `)[0]:void 0}catch(e){if(t(e))throw e;return}}async function je(e,t){if(e){if(t?.signal.aborted)throw A(t.signal);try{let n=await oe(e);if(t?.signal.aborted)throw A(t.signal);return n}catch{if(t?.signal.aborted)throw A(t.signal);return e}}}function A(e){return new i({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}const j={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`},M={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`},N={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},Me={brew:N,bun:N,cargo:N,deno:N,mise:N,npm:N,pip:N,uv:N,winget:N},Ne=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],Pe=[{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:Me,required:Ne,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:j,name:`capabilities`,ndjsonEventSchema:M},{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:j,name:`commands`,ndjsonEventSchema:M},{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:j,name:`config`,ndjsonEventSchema:M},{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:Ne,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:j,name:`doctor`,ndjsonEventSchema:M},{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:j,name:`exec`,ndjsonEventSchema:M},{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:j,name:`ensure`,ndjsonEventSchema:M},{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:j,name:`info`,ndjsonEventSchema:M},{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:j,name:`inspect`,ndjsonEventSchema:M},{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:j,name:`install`,ndjsonEventSchema:M},{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:j,name:`list`,ndjsonEventSchema:M},{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:j,name:`resolve`,ndjsonEventSchema:M},{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:j,name:`schema`,ndjsonEventSchema:M},{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:j,name:`update`,ndjsonEventSchema:M},{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:j,name:`uninstall`,ndjsonEventSchema:M},{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:j,name:`upgrade`,ndjsonEventSchema:M}],Fe=[{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`}],Ie=new Map(Fe.map(e=>[e.id,e])),Le=new Map(Pe.map(e=>[e.name,e])),P=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],Re=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],ze=[F({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`}),F({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),F({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`}),F({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:P,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),F({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`}),F({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Re,name:`ensure`,summary:`Ensure an agent is installed`}),F({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:P,name:`info`,summary:`Show human-friendly agent details`}),F({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:P,name:`inspect`,summary:`Return structured agent state`}),F({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:Re,name:`install`,summary:`Install one or more agents`}),F({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:P,name:`list`,summary:`List supported agents`}),F({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:P,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),F({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`}),F({aliases:[`u`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`[agent]`}],description:`更新指定 agent`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`update`,options:[{description:`Update all installed agents`,flags:`--all`,id:`all`,value:`boolean`}],summary:`Update one or all agents`}),F({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`}),F({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 Be(){return ze}function Ve(){return Fe}function He(e){let t={...e};for(let n of Fe){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 Ue(e){return{flags:Ke(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function We(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=Ie.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=I(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=I(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}`);qe(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=Ke(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 F(e){let t=Ge(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:Ke(n)}}function Ge(e){let t=Le.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function Ke(e){return[...e.catalogTokens,...e.options.map(e=>I(e.flags)),...e.globalOptions.map(t=>{let n=Ie.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return I(n.flags)})]}function I(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function qe(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${I(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${I(e.flags)}`)}const Je=new Map(Be().map(e=>[e.name,Qe(e.presenterId)]));function Ye(e){return Je.get(e)}function Xe(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)??$e(n));return}e?e.presentHuman(n,r):r(n)}function Ze(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function Qe(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:$e}}function $e(e){return{action:e.action,data:e,target:e.target,type:`result`}}const L=`quantex-cli`,R=`https://github.com/Drswith/quantex-cli`,et=`1.4.0`;function tt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function z(e=C.execPath){if(y(tt(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 nt(e=C.execPath){let t=z(e);if(t)return`${R}/releases/latest/download/${t}`}function rt(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 it(e,t,n){let r=await me(await at(e,t,n),`self:manifest:${e}`,{context:t,networkPort:n});if(!r)throw Error(`Failed to download release manifest.`);return r}async function at(e,t,n){if(e===`stable`)return`${R}/releases/latest/download/manifest.json`;let r=(await ot(e,t,n)).assets.find(e=>e.name===`manifest.json`);if(!r?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return r.browser_download_url}async function ot(e,t,n){let r=ct();if(!r)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let i=await me(`https://api.github.com/repos/${r}/releases?per_page=20`,`self:github-releases`,{context:t,networkPort:n});if(!i)throw Error(`Failed to query GitHub releases.`);let a=i.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!a)throw Error(`No GitHub release was found for the ${e} channel.`);return a}function st(e,t=C.execPath){let n=C.platform,r=C.arch===`arm64`?`arm64`:`x64`,i=z(t);return e.assets.find(e=>e.platform===n&&e.arch===r&&(!i||e.name===i))}function ct(){return R.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var B=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const lt={installedAgents:{},self:{}};function ut(){return te(_())}async function V(){return wt()}async function dt(e){let t=await g({resource:`state`,scope:[`state`]});try{await Tt(e)}finally{await t()}}async function ft(e){return(await V()).installedAgents[e]}async function pt(e){try{return await H().getReceipt(e)}catch(e){throw e instanceof B?e:new B(`Failed to read Quantex state file.`,{cause:e})}}async function mt(e){let t=await g({resource:`state`,scope:[`state`]});try{await H().setReceipt(e)}catch(e){throw e instanceof B?e:new B(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function ht(e,t){let n=await g({resource:`state`,scope:[`state`]});try{await H().setAgentLifecycleEvidence(e,t)}catch(e){throw e instanceof B?e:new B(`Failed to write Quantex state file.`,{cause:e})}finally{await n()}}async function gt(e){let t=await g({resource:`state`,scope:[`state`]});try{await H().removeReceipt(e)}catch(e){throw e instanceof B?e:new B(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const _t=Object.freeze({read:pt,remove:gt,write:mt});async function vt(e){await U(t=>{t.installedAgents[e.agentName]=e})}async function yt(e){await U(t=>{delete t.installedAgents[e]})}async function bt(){return(await V()).self}async function xt(e){await U(t=>{t.self.installSource=e})}async function St(){await U(e=>{delete e.self.installSource})}async function Ct(e,t){await U(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function wt(){try{return await H().loadProjection()}catch(e){if(Et(e))return{...lt};throw e instanceof B?e:e instanceof f?new B(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new B(`Failed to read Quantex state file.`,{cause:e})}}async function Tt(e){try{await H().saveProjection(e)}catch(e){throw e instanceof B?e:new B(`Failed to write Quantex state file.`,{cause:e})}}function H(){return ne(_())}function Et(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function U(e){let t=await g({resource:`state`,scope:[`state`]});try{let t=await wt();await e(t),await Tt(t)}finally{await t()}}const Dt=`self:install-source`,Ot={clearInstallSource:St,getSelfState:bt,setInstallSource:xt};function W(e=Ot){return{async load(t){let n=G(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return K(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return At(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=G(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),K(void 0)}catch(e){return At(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=G(t.key,t.signal);if(n)return n;if(!kt(t.value))return q({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),K({})}catch(e){return At(`Failed to persist the self install source.`,e)}}}}function G(e,t){if(t.aborted)return q({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return q({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function kt(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function K(e){return{kind:`success`,value:e}}function q(e){return{error:e,kind:`failure`}}function At(e,t){return q({details:{cause:t},kind:`failed`,message:e})}const jt=L,Mt=`/node_modules/${jt}`;async function Nt(e){return Ft(e,!0)}async function Pt(e){return Ft(e,!1)}async function Ft(e,t){let n=await Ht(),r=C.execPath,i=n.foundPackageJson?Vt(n.packageRoot):Vt(``,r),a=e?.persistence??W(),o=e?.signal??new AbortController().signal,s=await zt(a,o),c=t?await Rt(s,i,{persistence:a,signal:o}):It(s,i),l=await h(),u=rt(e?.updateChannel,l.selfUpdateChannel);return{canAutoUpdate:Lt(c),currentVersion:n.version||`1.4.0`,executablePath:r,installSource:c,packageRoot:n.packageRoot,updateChannel:u}}function It(e,t){return t===`unknown`?e??t:t}function Lt(e){return e===`binary`||e===`bun`||e===`npm`}async function Rt(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??W()).save({key:Dt,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&Bt(e.error),t}return It(e,t)}async function zt(e,t){let n=await e.load({key:Dt,signal:t});if(n.kind===`failure`&&Bt(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 Bt(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 Vt(e,t=C.execPath){let n=Gt(e);return n.includes(`/.bun/install/global/`)?`bun`:n.includes(Mt)?`npm`:n?`source`:Kt(t)?`binary`:`unknown`}async function Ht(e=import.meta.url){let t=qt(e),n=b(t);for(;;){let e=x(n,`package.json`),t=await Wt(e);if(t?.name===jt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.4.0`};let r=b(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:x(b(t),`package.json`),packageRoot:b(t),version:et}}function Ut(){return et}async function Wt(e){try{return JSON.parse(await w(e,`utf8`))}catch{return}}function Gt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function Kt(e){let t=y(Gt(e));return t!==`bun`&&t!==`bun.exe`}function qt(e){try{return fe(e)}catch{return C.execPath}}async function Jt(){try{return await g({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(ee(e))return;throw e}}function Yt(){return{async acquire(e){if(e.signal.aborted)return J(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return J(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await Jt();if(!t)return J(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),J(`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 J(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function J(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function Xt(e,t,n=C.env,r=C.cwd()){if(e!==`bun`&&e!==`npm`)return;let i=l(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 Zt(e,n,r)||{isOverride:!1,registry:u,source:`fallback`}}async function Zt(e,t,n){if(e===`bun`){let e=Qt(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await $t(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=Qt(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await tn(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function Qt(e,t){for(let n of t){let t=l(e[n]);if(t)return t}}async function $t(e,t){let n=an(t),r=t.XDG_CONFIG_HOME,i=rn(e,`bunfig.toml`),a=[x(n,`.bunfig.toml`),r?x(r,`.bunfig.toml`):void 0];if(i){let e=await en(i);if(e)return e}for(let e of a){if(!e||!v(e))continue;let t=await en(e);if(t)return t}}async function en(e){try{return on(await w(e,`utf8`))}catch{return}}async function tn(e,t){let n=an(t),r=rn(e,`.npmrc`),i=x(n,`.npmrc`);if(r){let e=await nn(r);if(e)return e}if(v(i))return nn(i)}async function nn(e){try{let t=(await w(e,`utf8`)).split(`
4
+ `).map(e=>e.trim());for(let e=t.length-1;e>=0;--e){let n=t[e];if(!n||n.startsWith(`#`)||n.startsWith(`;`))continue;let r=n.match(/^registry\s*=\s*(.+)$/);if(!r?.[1])continue;let i=l(r[1]);if(i)return i}}catch{}}function rn(e,t){let n=e;for(;;){let e=x(n,t);if(v(e))return e;let r=b(n);if(r===n)return;n=r}}function an(e){return e.HOME||e.USERPROFILE||ue()}function on(e){let t=sn(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 l(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return l(sn(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function sn(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function cn(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function ln(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function un(e,t){if(pn(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||d(e.targetVersion,e.targetVersion)!==0)&&!(!mn(e.fetchedAtMs)||!mn(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function dn(e){let t=await e.cache.read({key:cn(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return un(t.value.value,e)}function fn(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:cn(e.metadata),signal:e.signal,value:e.metadata})}function pn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function mn(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function hn(e,n,r){let i=await h();if(e.installSource===`binary`)try{let t=n?await it(e.updateChannel,n,r):await it(e.updateChannel,void 0,r),i=st(t,e.executablePath);return i?{binaryAsset:i,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 a=e.updateChannel===`beta`?`beta`:`latest`,o=await ke(L,a,{...n?{context:n}:{},networkPort:r,registry:u});if(e.installSource===`bun`||e.installSource===`npm`){let t=await Xt(e.installSource,i);return{managedRegistry:t?.registry,managedRegistryIsOverride:t?.isOverride??!1,packageTag:a,targetVersion:await ke(L,a,{...n?{context:n}:{},networkPort:r,registry:t?.registry}),upstreamLatestVersion:o,verificationCommand:xn(e.packageRoot)}}return{packageTag:a,targetVersion:o,upstreamLatestVersion:o}}async function Y(e){let t=e?.facts??await Nt({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await hn(t,e?.context,e?.networkPort),r=n.targetVersion?De(n.targetVersion,t.currentVersion):!1,i={facts:t,status:vn(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await h()).versionCacheTtlHours*60*60*1e3;await fn({cache:e.metadataCache,metadata:ln({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function X(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 gn(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await yn(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 _n(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:xn(e.packageRoot)},r=e.latestVersion?De(e.latestVersion,e.currentVersion):!1;return{facts:t,status:vn(t,n,r),target:n,updateAvailable:r}}function vn(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function yn(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await bn(e.target.verificationCommand,r);if(t)return t}return bn([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await Oe(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return Oe(e.facts.executablePath)}async function bn(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
+ `)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function xn(e){if(e)return[C.execPath,x(e,`dist`,`cli.mjs`),`--version`]}async function Sn(e,t,n,r,a=Tn(t),o){let s=o?.networkPort,c=s&&o?await wn(e,{...o,networkPort:s}):await Cn(e);if(c.kind===`failure`)return c.result;let l=c.binary;Z(o);let u=await ae(x(b(t),`.quantex-upgrade-`)),d=x(u,y(t)),f=`${t}.bak`,p=!1,m=!1;try{Z(o);let i=await En(t),s=Mn(l);if(s!==Nn(n))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${Nn(n)}, got ${s}.`);if(await le(d,l),Z(o),C.platform===`win32`){let e=Dn(d,t,f,u,r,a);return m=e.success,e}await re(d,i),Z(o),await T(f,{force:!0}),await se(t,f),p=!0,await se(d,t);let c=await jn(t,r,o);return c.success?(p=!1,await T(f,{force:!0}),{success:!0}):(await An(f,t),p=!1,c)}catch(e){if(p){try{await An(f,t)}catch{}p=!1}if(e instanceof i)throw e;return $(kn(e),`Failed to replace the current Quantex binary.`,e)}finally{(C.platform!==`win32`||!m)&&await T(u,{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 Cn(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:pe.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function wn(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:pe.from(n.value.body),kind:`success`}}function Tn(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 En(e){try{return(await ce(e)).mode&511}catch{return 493}}function Dn(e,t,r,i,a,o){try{return n([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,On(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 On(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 kn(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 An(e,t){await T(t,{force:!0}),await se(e,t)}async function jn(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 Mn(e){return de(`sha256`).update(e).digest(`hex`)}function Nn(e){return e.trim().toLowerCase()}const Pn={source:`binary`,canHandle:e=>Fn(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):nt(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=Tn(e.facts.executablePath),i=t?await Sn(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r,{networkPort:t.network,processPort:t.process,signal:t.signal,timeoutMs:t.timeoutMs}):await Sn(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r);return{...!i.success&&i.error?{...i,error:{...i.error,detail:{...typeof i.error.detail==`object`&&i.error.detail?i.error.detail:{},downloadUrl:n.downloadUrl}}}:i,installSource:e.facts.installSource,newVersion:i.success?e.target.targetVersion:void 0}}};function Fn(e){return`facts`in e?e.facts.installSource:e.installSource}async function In(e,t){return t.process?(await Rn(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function Ln(e,t,n){if(!await In(e,n))return!1;let r=await Rn([`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)?In([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function Rn(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 zn={source:`bun`,canHandle:e=>Bn(e)===`bun`,getRecoveryHint:e=>`bun add -g ${L}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await Ln([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${L}@${n}`],L,t):await o(L,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${L} through Bun.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function Bn(e){return`facts`in e?e.facts.installSource:e.installSource}const Vn={source:`npm`,canHandle:e=>Hn(e)===`npm`,getRecoveryHint:e=>`npm install -g ${L}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await In([`npm`,`install`,`-g`,`${L}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await s(L,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${L} through npm.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function Hn(e){return`facts`in e?e.facts.installSource:e.installSource}const Un={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}}},Wn=[zn,Vn,Pn,Un];function Gn(e){return Wn.find(t=>t.canHandle(e))??Un}function Kn(e,t,n=`stable`){return Gn({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function qn(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Kn(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function Jn(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:Gn(e).getRecoveryHint(e,t)}async function Yn(e){return X(await Y({updateChannel:e?.updateChannel}))}async function Xn(e){let t=await Pt({updateChannel:e?.updateChannel});return X(await Y({context:e?.context,facts:t}))}async function Zn(e,t={}){let n=await er(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await Qn();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 gn(n,await Gn(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 Qn(){let e=await Jt();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 $n(e,t=C.execPath){return qn(e,t)}async function er(e){return e?`facts`in e?e:e.installSource===`binary`?Y({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):_n(e):Y()}function tr(e){return ar({...e,error:null,ok:!0})}function nr(e){return ar({...e,ok:!1})}function rr(e,t,n={}){let r=p();return r.cancelled&&!n.force||Xe(Ye(e.action),r.outputMode,e,t,e=>console.log(e),e=>sr(e)),e}function ir(e,t={}){let n=p();if(!(n.cancelled&&!t.force))return Ze(Ye(e.action),n.outputMode,e,e=>sr(e))}function ar(e){let t=p();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:Ut()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function or(e){let t=p();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:Ut()},target:e.target,type:e.type}}function sr(e){let t=or(e);return cr(t),t}function cr(e){console.log(JSON.stringify(e))}export{ht as A,He as B,bt as C,yt as D,V as E,z as F,ke as G,We as H,nt as I,je as K,L,mt as M,xt as N,gt as O,Ct as P,Be as R,pt as S,_t as T,Ae as U,Ue as V,Oe as W,Ut as _,$n as a,B as b,Zn as c,X as d,Y as f,Vt as g,Lt as h,rr as i,vt as j,dt as k,qn as l,Yt as m,tr as n,Yn as o,dn as p,De as q,ir as r,Xn as s,nr as t,Jn as u,Pt as v,ut as w,ft as x,W as y,Ve as z};
@@ -0,0 +1 @@
1
+ import{i as e,n as t,t as n}from"./schema-hCKyxJjR.mjs";import{r}from"./provider-binding-DMLQQGPh.mjs";import{t as i}from"./agent-observation-CRB402ql.mjs";import{n as a,r as o,t as s}from"./provider-observation-registry-l4duFenx.mjs";import{isAbsolute as c,join as l,resolve as u}from"node:path";import d from"node:process";import{readFile as f,realpath as p}from"node:fs/promises";import{homedir as m}from"node:os";const h=[{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`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}],windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`}]},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`,cargo:`codewhale-cli`},platforms:{linux:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],macos:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],windows:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}]},versionProbe:{command:[`codewhale`,`--version`]}},{binaryName:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,name:`codex`,packages:{npm:`@openai/codex`,mise:`npm:@openai/codex`},platforms:{linux:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{type:`mise`}]}},{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:`deepcode`,displayName:`Deep Code CLI`,homepage:`https://github.com/lessweb/deepcode-cli`,name:`deepcode`,packages:{npm:`@vegamo/deepcode-cli`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`deepcode`,`--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:`forge`,displayName:`ForgeCode`,homepage:`https://forgecode.dev`,lookupAliases:[`forge`],name:`forgecode`,packages:{npm:`forgecode`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://forgecode.dev/cli | iex`,type:`script`}]},versionProbe:{command:[`forge`,`--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:`genie`,displayName:`Genie`,homepage:`https://jsr.io/@nicorio/genie`,name:`genie`,packages:{deno:`jsr:@nicorio/genie`},platforms:{linux:[{packageInstallArgs:[`-A`],type:`deno`}],macos:[{packageInstallArgs:[`-A`],type:`deno`}],windows:[{packageInstallArgs:[`-A`],type:`deno`}]}},{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:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,name:`jcode`,platforms:{linux:[{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}],macos:[{packageName:`1jehuang/jcode/jcode`,type:`brew`},{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}],windows:[{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`jcode`,`--version`]}},{binaryName:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,name:`junie`,packages:{npm:`@jetbrains/junie`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{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`,packages:{uv:`openhands`},platforms:{linux:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}],macos:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{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:`@mariozechner/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`,packages:{uv:`mistral-vibe`,pip:`mistral-vibe`},platforms:{linux:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],macos:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],windows:[{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}]},versionProbe:{command:[`vibe`,`--version`]}},{binaryName:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,name:`vtcode`,packages:{cargo:`vtcode`},platforms:{linux:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}],macos:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}],windows:[{type:`cargo`},{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`vtcode`,`--version`]}}];function g(){return h}function _(e){let t=h.find(t=>t.name===e||t.lookupAliases?.includes(e));if(t)return t;let n=v(e);return h.find(e=>v(e.displayName)===n)}function v(e){return e.trim().toLowerCase()}function y(e){return e===void 0?l(d.env.HOME||d.env.USERPROFILE||m(),`.quantex`):c(e)?e:u(e)}function b(e={}){let t=e.providerRegistry??s();return{async inspectAgent(e,n,r){let i=_(e);if(i)return S(i,n,t,r?.observationBinding)},async listAgents(e){return P(e.signal),g()}}}async function x(r){let i=l(r,`state.json`),a;try{a=await f(i,`utf8`)}catch(e){if(N(e))return t();throw e}let o;try{o=JSON.parse(a)}catch(e){throw new n(`state.json contains invalid JSON: ${I(e)}`)}return e(o).document}async function S(e,t,n,a){let[o,s]=await Promise.all([x(t.configDir),D(e,t.configDir,t.signal)]),c={registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs},l=await i(e,{clock:()=>new Date().toISOString(),inspectExecutable:()=>C(e,c),...a?{observationBinding:a}:{},platform:A(),preferredCatalogBinding:s[0]?r(e,s[0]):void 0,providerRegistry:n,readInstalledState:async e=>o.installedAgents[e],readReceipt:async e=>o.lifecycleReceipts[e],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 E(l.pathExecutable.path,t.signal);return{agent:e,...l,methods:s,...u?{resolvedBinaryPath:u}:{}}}async function C(e,t){let n=await w(e.binaryName,t);if(!n)return{present:!1};let r=await E(n,t.signal)??n,i=await T(e,r,t);return{path:r,present:!0,...i?{version:i}:{}}}async function w(e,t){try{let n=await o([d.platform===`win32`?`where`:`which`,e],t);return n.exitCode===0&&n.stdout.trim().split(/\r?\n/u)[0]||void 0}catch(e){if(e instanceof a)throw e;return}}async function T(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 o(i,n);return t.exitCode===0?k(t.stdout,e.versionProbe?.parser):void 0}catch(e){if(e instanceof a)throw e;return}}async function E(e,t){if(e){P(t);try{let n=await p(e);return P(t),n}catch{if(t.aborted)throw new a(F(t));return e}}}async function D(e,t,n){let r=e.platforms[A()]??[],i=await O(t,n);return[...r.filter(e=>e.type===i),...r.filter(e=>e.type!==i)]}async function O(e,t){P(t);try{let n=await f(l(e,`config.json`),`utf8`);P(t);let r=JSON.parse(n);if(M(r)&&j(r.defaultPackageManager))return r.defaultPackageManager}catch(e){if(t.aborted)throw new a(F(t));if(e instanceof a)throw e}return`bun`}function k(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 A(){return d.platform===`win32`?`windows`:d.platform===`darwin`?`macos`:`linux`}function j(e){return e===`bun`||e===`mise`||e===`npm`}function M(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function N(e){return!e||typeof e!=`object`||!(`code`in e)?!1:e.code===`ENOENT`||e.code===`ENOTDIR`}function P(e){if(e.aborted)throw new a(F(e))}function F(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function I(e){return e instanceof Error&&e.message?e.message:String(e)}export{y as n,b as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./types-D3y_n7iy.mjs";function t(e,t){let n=c(t.installType);if(!n)return;let r=o(e,t);if(r)return{providerId:n,target:{...t.packageInstallArgs?.length?{arguments:t.packageInstallArgs}:{},...t.binaryName||n===`binary`||n===`script`||n===`deno`?{binaryName:t.binaryName??e.binaryName}:{},id:r,kind:s(n,t.packageTargetKind)}}}function n(e){let t=c(e.providerId);if(!(!t||e.providerTargetId.length===0)&&!(t===`brew`&&e.providerTargetKind!==`cask`&&e.providerTargetKind!==`formula`))return{providerId:t,target:{...e.executableName?{binaryName:e.executableName}:{},id:e.providerTargetId,kind:e.providerTargetKind??s(t)}}}function r(e,n){return t(e,{agentName:e.name,...n.binaryName?{binaryName:n.binaryName}:{},...n.command?{command:n.command}:{},installType:n.type,...n.packageInstallArgs?{packageInstallArgs:n.packageInstallArgs}:{},...n.packageName?{packageName:n.packageName}:{},...n.packageTargetKind?{packageTargetKind:n.packageTargetKind}:{}})}function i(e,t){let n=(e.platforms[t]??[]).map(t=>({binding:r(e,t),method:t})),i=n.map(e=>e.binding).filter(e=>e!==void 0);return{bindings:i.filter((t,n)=>i.findIndex(n=>a(n,t,e.binaryName))===n),unresolvedCandidates:n.filter(e=>e.binding===void 0).map(e=>e.method)}}function a(e,t,n){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&(e.target.binaryName??n)===(t.target.binaryName??n)}function o(e,t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;switch(t.installType){case`bun`:case`npm`:return e.packages?.npm;case`cargo`:return e.packages?.cargo;case`deno`:return e.packages?.deno;case`mise`:return e.packages?.mise;case`pip`:return e.packages?.pip;case`uv`:return e.packages?.uv;case`binary`:case`script`:return e.binaryName;case`brew`:case`winget`:return}}function s(e,t){switch(e){case`binary`:return`binary`;case`brew`:return t===`cask`?`cask`:`formula`;case`deno`:case`mise`:case`uv`:return`tool`;case`script`:return`script`;case`winget`:return`id`;case`bun`:case`cargo`:case`npm`:case`pip`:return`package`}}function c(t){return e.includes(t)?t:void 0}export{t as a,n as i,i as n,r,a as t};
@@ -0,0 +1 @@
1
+ import{I as e}from"./agents-D_evv3iI.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 e from"cross-spawn";import{spawn as t}from"node:child_process";import{join as n}from"node:path";import r from"node:process";import{access as i,readFile as a}from"node:fs/promises";import{homedir as o}from"node:os";import{once as s}from"node:events";var c=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function l(t,n){if(n.signal.aborted)throw new c(h(n.signal));let[i,...a]=t;if(!i)throw Error(`A read-only command requires a non-empty argv array.`);let o=e(i,a,{detached:r.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),s=[],l=[];o.stdout?.on(`data`,e=>s.push(Buffer.from(e))),o.stderr?.on(`data`,e=>l.push(Buffer.from(e)));let f=!1,p,m,g=()=>p??=u(o),_=n.registerCleanup?.({cleanup:g,force:()=>m??=d(o)}),v,y=new Promise((e,t)=>{v=()=>{f||(f=!0,g().then(()=>t(new c(h(n.signal)))))},n.signal.addEventListener(`abort`,v,{once:!0}),n.signal.aborted&&v()}),b=new Promise((e,t)=>{o.once(`error`,t),o.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>f?y:e);try{return{exitCode:await Promise.race([b,y]),stderr:Buffer.concat(l).toString(`utf8`),stdout:Buffer.concat(s).toString(`utf8`)}}finally{n.signal.removeEventListener(`abort`,v),_?.()}}async function u(e){r.platform===`win32`&&e.pid!==void 0&&await p(e.pid,t,100),f(e,`SIGTERM`),!await m(e,100)&&(f(e,`SIGKILL`),await m(e,250))}async function d(e){r.platform===`win32`&&e.pid!==void 0&&await p(e.pid,t,100),f(e,`SIGKILL`),await m(e,250)}function f(e,t){if(r.platform!==`win32`&&e.pid!==void 0)try{r.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function p(e,n=t,r=100){let i=n(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o=s(i,`close`).then(()=>!0,()=>!1),c=new Promise(e=>{a=setTimeout(()=>e(!1),r)}),l=await Promise.race([o,c]);if(a&&clearTimeout(a),l)return!0;try{i.kill(`SIGKILL`)}catch{}return!1}async function m(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 h(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const g={access:e=>i(e),env:r.env,homeDir:o,platform:r.platform,readFile:e=>a(e,`utf8`),runCommand:l};function _(e=g){return v([y(`bun`,`bun`,e,(t,n)=>S(t.id,n,e)),y(`npm`,`npm`,e,(t,n)=>w(t.id,n,e)),y(`brew`,`brew`,e,(t,n)=>T(t,n,e)),y(`cargo`,`cargo`,e,(t,n)=>E(t.id,n,e)),y(`deno`,`deno`,e,(t,n)=>D(t,n,e)),y(`mise`,`mise`,e,(t,n)=>O(t.id,n,e)),y(`pip`,`pip`,e,(t,n)=>k(t.id,n,e)),y(`uv`,`uv`,e,(t,n)=>A(t.id,n,e)),y(`winget`,`winget`,e,(t,n)=>j(t.id,n,e)),b(`script`,e),b(`binary`,e)])}function v(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 y(e,t,n,r){return{availability:e=>x(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`}:F({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 b(e,t){return{availability:async e=>e.signal.aborted?I(e.signal):F({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 M([t.platform===`win32`?`where`:`which`,r],n.context,t);return i?F({evidence:[{kind:`executable`,value:r}],kind:i.exitCode===0?`present`:`absent`,target:n.target}):{kind:`failed`,reason:`${e} executable probe failed for ${n.target.id}`,retryable:!0}}}}async function x(e,t,n){try{return(await n.runCommand([e,`--version`],t)).exitCode===0?F({executable:e}):{kind:`unavailable`,reason:`${e} executable is unavailable`}}catch(t){if(t instanceof c)throw t;return{kind:`unavailable`,reason:`${e} executable is unavailable`}}}async function S(e,t,r){let i=await M([`bun`,`pm`,`-g`,`ls`],t,r);if(!i)return{presence:`unknown`};if(!i.stdout.trim()){if(i.stderr.includes(`No package.json was found for directory`))return{presence:`absent`};if(!i.stderr.includes(`Lockfile not found`))return{presence:`unknown`};try{let t=r.env.BUN_INSTALL_GLOBAL_DIR??n(r.homeDir(),`.bun`,`install`,`global`);return{presence:P(await r.readFile(n(t,`package.json`)),e)}}catch{return{presence:`unknown`}}}let a=N(i.stdout,e);return a?{presence:`present`,version:a}:i.stdout.split(`
2
+ `).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:await C(e,r,`absent`)}async function C(e,t,r){try{let r=t.env.BUN_INSTALL_GLOBAL_DIR??n(t.homeDir(),`.bun`,`install`,`global`);return{presence:P(await t.readFile(n(r,`package.json`)),e)}}catch{return{presence:r}}}async function w(e,t,n){let r=await M([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!R(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 T(e,t,n){let r=await M([`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 E(e,t,n){let r=await M([`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 D(e,t,r){if(t.signal.aborted)throw new c(B(t.signal));let i=e.binaryName?.trim()||e.id.trim().split(`/`).pop()?.replace(/@.*$/u,``);if(!i)return{presence:`unknown`};let a=r.env.DENO_INSTALL_ROOT?.trim()||n(r.homeDir(),`.deno`);try{if(await r.access(n(a,`bin`,i)),t.signal.aborted)throw new c(B(t.signal));return{presence:`present`}}catch(e){if(e instanceof c)throw e;return z(e)?{presence:`absent`}:{presence:`unknown`}}}async function O(e,t,n){let r=await M([`mise`,`ls`,`--installed`,`--json`,e],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!R(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=>R(e)&&typeof e.version==`string`);return R(o)&&typeof o.version==`string`?{presence:`present`,version:o.version}:{presence:`present`}}catch{return{presence:`unknown`}}}async function k(e,t,n){for(let r of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]]){let i=await M([...r,`--version`],t,n);if(!i||i.exitCode!==0)continue;let a=await M([...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 A(e,t,n){let r=await M([`uv`,`tool`,`list`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};let i=L(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,L(t[1])===i))return{presence:`present`,version:t[2]}}return a?{presence:`absent`}:{presence:`unknown`}}async function j(e,t,n){let r=await M([`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 M(e,t,n){try{return await n.runCommand(e,t)}catch(e){if(e instanceof c)throw e;return}}function N(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 P(e,t){try{let n=JSON.parse(e);if(!R(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(!R(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}catch{return`unknown`}}function F(e){return{kind:`success`,value:e}}function I(e){let t=B(e);return{kind:`cancelled`,...t?{reason:t}:{}}}function L(e){return e.toLowerCase().replaceAll(/[-_.]+/gu,`-`)}function R(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function z(e){return e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}export{c as n,l as r,_ as t};
@@ -1 +1 @@
1
- import{I as e}from"./agents-CBoMqbP1.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{I as e}from"./agents-D_evv3iI.mjs";const t=Object.freeze([`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`]);async function n(t){let n=t.registry??e;return Promise.all(n.list().map(async e=>({availability:await i(e.availability,t.context),capabilities:n.getCapabilities(e.id),id:e.id})))}function r(e,n){let r=new Map(e.map(e=>[e.id,e]));return Object.fromEntries(t.map(e=>{let t=r.get(e);if(!t)throw Error(`Provider snapshot is missing first-party adapter: ${e}`);return[e,n(t)]}))}async function i(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}export{r as n,n as t};
@@ -0,0 +1 @@
1
+ import{I as e}from"./agents-D_evv3iI.mjs";const t=Object.freeze(e.list().filter(t=>{let n=e.getCapabilities(t.id);return n.includes(`update`)&&n.includes(`uninstall`)}).map(e=>e.id));function n(t){let n=e.getCapabilities(t);if(!n.includes(`install`))throw Error(`First-party provider ${t} must implement install`);let r=n.includes(`update`),i=n.includes(`uninstall`);return{canInstall:!0,canLookupLatestVersion:n.includes(`resolve-latest-version`),canUninstall:i,canUpdate:r,lifecycle:r&&i?`managed`:`unmanaged`}}function r(){return t}function i(e){return t.includes(e)}function a(e){return n(e).lifecycle}function o(e){return n(e).canUpdate}function s(e){return n(e).canUninstall}function c(e){return n(e).canLookupLatestVersion}function l(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function u(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 d(e){return e?o(e.installType):!1}function f(e,t){return d(t)||!!e.selfUpdate}function p(e){return!!e&&c(e.installType)}function m(e){return e.length>0&&e.every(e=>c(e.type))}function h(e){return i(e.type)?`${a(e.type)}/${e.type}${l(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function g(e){return e?i(e.installType)?`managed via ${e.installType}${l(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function _(e,t){let n=k({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function v(e,t){if(t.type===`bun`){let n=u(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=u(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=u(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=u(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=u(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=u(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=u(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 y(e,t,n){if(t)return p(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!m(n)))return e.packages.npm}function b(e,t){let n=x(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 x(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(S(t))return`npm`}function S(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 C(e){if(e.installedState)return i(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(i(t.type)&&o(t.type))return t.type}const w={strategy:`managed`,canHandle:e=>!!C(e),getManagedInstallerType:e=>C(e)},T={strategy:`self-update`,canHandle:e=>!d(e.installedState)&&!!e.agent.selfUpdate},E={strategy:`manual-hint`,canHandle:()=>!0},D=[w,T,E];function O(e){return D.find(t=>t.canHandle(e))??E}function k(e){return O(e).strategy}function A(e){return f(e.agent,e.installedState)}export{r as _,v as a,_ as c,u as d,c as f,n as g,a as h,O as i,b as l,o as m,A as n,h as o,s as p,k as r,g as s,D as t,y as u,i as v};
@@ -0,0 +1 @@
1
+ const e=`https://registry.npmjs.org`;function t(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function n(e,n,r){return`${t(r)}/${encodeURIComponent(e)}/${encodeURIComponent(n)}`}export{n,t as r,e as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./resolve-DqExBCue.mjs";export{e as resolveCommand};
@@ -0,0 +1 @@
1
+ import{i as e,n as t,t as n}from"./output-Bf3N0Tjs.mjs";import{a as r,o as i}from"./providers-gOIzOEnz.mjs";import{t as a}from"./color-BAlKATeY.mjs";import{n as o,r as s}from"./core-read-observations-BQLHb148.mjs";async function c(a){let c=await o(a);if(!c)return e(n({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c);if(!d.inPath||!d.binaryPath){let t=d.methods.map(e=>({command:r(u,e),label:i(e),type:e.type})).filter(e=>e.command);return e(n({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},message:`${u.displayName} is not installed.`},target:{kind:`agent`,name:u.name}}),l)}return e(t({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:d.binaryPath,installed:!0,installSource:d.installedState?.installType??`detected-in-path`,installedVersion:d.installedVersion,lifecycle:d.lifecycle,sourceLabel:d.sourceLabel,suggestedLaunchCommand:[d.binaryPath]}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));let t=e.data?.resolution.installGuidance;if(t){console.log(a.dim(`Try: ${t.suggestedEnsureCommand}`));for(let e of t.installMethods)console.log(a.dim(`Install: [${e.label}] ${e.command}`))}return}e.data&&(console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Path: ${e.data.resolution.binaryPath}`),console.log(` Source: ${e.data.resolution.sourceLabel}`),console.log(` Lifecycle: ${e.data.resolution.lifecycle}`),console.log(` Install Type: ${e.data.resolution.installSource}`),e.data.resolution.installedVersion&&console.log(` Version: ${e.data.resolution.installedVersion}`),console.log(` Launch: ${e.data.resolution.suggestedLaunchCommand.join(` `)}`),console.log())}export{c as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./schema-D9JJUXYr.mjs";export{e as schemaCommand};
@@ -0,0 +1,3 @@
1
+ import{R as e,i as t,n,t as r}from"./output-Bf3N0Tjs.mjs";import{t as i}from"./color-BAlKATeY.mjs";async function a(e){let i=s(),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`}}),o):t(n({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),o)}function o(e){if(e.error){console.log(i.red(e.error.message));return}if(e.data){console.log(i.bold(`
2
+ Quantex Schemas
3
+ `));for(let t of e.data.commands)console.log(` ${i.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function s(){return e().map(e=>e.schema)}export{a as n,s as t};
@@ -0,0 +1 @@
1
+ function e(e,r){let i=t(e),a=t(r);if(!(!i||!a)){for(let e=0;e<3;e+=1){let t=i.core[e],n=a.core[e];if(t!==n)return t>n?1:-1}return n(i.prerelease,a.prerelease)}}function t(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/iu);if(t)return{core:[BigInt(t[1]),BigInt(t[2]),BigInt(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function n(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;if(n===i)continue;let a=/^\d+$/u.test(n),o=/^\d+$/u.test(i);if(a&&o){let e=BigInt(n),t=BigInt(i);if(e===t)continue;return e>t?1:-1}return a?-1:o||n>i?1:-1}return 0}const r=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]);function i(e){return r.includes(e)}var a=class extends Error{constructor(e){super(e),this.name=`StateSchemaError`}};const o=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function s(){return{installedAgents:{},lifecycleReceipts:{},schemaVersion:2,self:{}}}function c(e){if(!C(e))throw new a(`root value must be an object.`);let t=e.schemaVersion===void 0?`legacy`:`current`;if(t===`current`&&e.schemaVersion!==2)throw new a(`unsupported schemaVersion "${String(e.schemaVersion)}".`);return{document:{installedAgents:p(e.installedAgents),lifecycleReceipts:t===`current`?f(e.lifecycleReceipts):{},schemaVersion:2,self:h(e.self)},source:t}}function l(e){return{installedAgents:e.installedAgents,self:e.self}}function u(e,t){let n=c(t).document;return{installedAgents:n.installedAgents,lifecycleReceipts:e.lifecycleReceipts,schemaVersion:2,self:n.self}}function d(e,t){if(!C(t))throw new a(`lifecycle receipt "${e}" must be an object.`);if(t.kind!==`lifecycle-receipt`)throw new a(`lifecycle receipt "${e}" has an invalid kind.`);if(t.schemaVersion!==1)throw new a(`lifecycle receipt "${e}" has an unsupported schemaVersion.`);if(!b(t.targetId)||t.targetId!==e)throw new a(`lifecycle receipt "${e}" has an invalid targetId.`);if(!b(t.providerId))throw new a(`lifecycle receipt "${e}" has an invalid providerId.`);if(!b(t.providerTargetId))throw new a(`lifecycle receipt "${e}" has an invalid providerTargetId.`);if(t.providerTargetKind!==void 0&&!v(t.providerTargetKind))throw new a(`lifecycle receipt "${e}" has an invalid providerTargetKind.`);if(!x(t.verifiedAt))throw new a(`lifecycle receipt "${e}" has an invalid verifiedAt.`);return{...b(t.executableName)?{executableName:t.executableName}:{},...b(t.executablePath)?{executablePath:t.executablePath}:{},kind:`lifecycle-receipt`,providerId:t.providerId,providerTargetId:t.providerTargetId,...v(t.providerTargetKind)?{providerTargetKind:t.providerTargetKind}:{},schemaVersion:1,targetId:e,verifiedAt:t.verifiedAt,...b(t.version)?{version:t.version}:{}}}function f(e){if(!C(e))throw new a(`lifecycleReceipts must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,d(e,t)]))}function p(e){if(e===void 0)return{};if(!C(e))throw new a(`installedAgents must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,m(e,t)]))}function m(e,t){if(!C(t))throw new a(`installed agent "${e}" must be an object.`);if(t.agentName!==e)throw new a(`installed agent "${e}" has an invalid agentName.`);if(!g(t.installType))throw new a(`installed agent "${e}" has an invalid installType.`);let n={agentName:e,installType:t.installType};if(typeof t.binaryName==`string`&&(n.binaryName=t.binaryName),Array.isArray(t.packageInstallArgs)&&t.packageInstallArgs.every(S)&&(n.packageInstallArgs=t.packageInstallArgs),typeof t.packageName==`string`){if(t.packageName.length===0&&i(t.installType))throw new a(`installed agent "${e}" has an empty packageName.`);n.packageName=t.packageName}return _(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function h(e){if(!C(e))return{};let t={...e};return y(e.installSource)?t.installSource=e.installSource:delete t.installSource,typeof e.updateNoticeAt==`string`?t.updateNoticeAt=e.updateNoticeAt:delete t.updateNoticeAt,typeof e.updateNoticeVersion==`string`?t.updateNoticeVersion=e.updateNoticeVersion:delete t.updateNoticeVersion,t}function g(e){return typeof e==`string`&&o.has(e)}function _(e){return e===`package`||e===`cask`||e===`id`}function v(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function y(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function b(e){return typeof e==`string`&&e.length>0}function x(e){return b(e)&&Number.isFinite(Date.parse(e))}function S(e){return typeof e==`string`}function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{l as a,c as i,s as n,u as o,d as r,e as s,a as t};
@@ -0,0 +1 @@
1
+ const e=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`,`script`,`binary`]);export{e as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./detect-BdnZzKbm.mjs";import{n as t}from"./cli-context-xudTdmO7.mjs";import{a as n}from"./file-store-Caz7fnAB.mjs";import{D as r,M as i,O as a,S as o,i as s,j as c,n as l,t as u,x as d}from"./output-Bf3N0Tjs.mjs";import{p as f}from"./providers-gOIzOEnz.mjs";import{t as p}from"./color-BAlKATeY.mjs";import{g as m,n as h,p as g}from"./agents-T-kpsmCW.mjs";import{a as _,i as v}from"./provider-binding-DMLQQGPh.mjs";import{t as y}from"./provider-evidence-BnvMbSP7.mjs";import{t as b}from"./lifecycle-errors-DGA1j4MM.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-C4bJjtc-.mjs";const T=e=>new Promise(t=>setTimeout(t,e));async function E(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??T,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 D(p){let y=h(p);if(!y)return s(u({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:p},message:`Unknown agent: ${p}`},target:{kind:`agent`,name:p}}),P);try{return await m(async()=>{let[n,u]=await Promise.all([d(y.name),o(y.name)]);if(!n&&!u)return s(N(p,y),P);let m=await e(y.binaryName),h=n?_(y,n):void 0,b=u?v(u):void 0;if(n&&!h||u&&!b)return s(A(y,`indeterminate-source`,`Cannot resolve provider evidence for ${y.displayName}.`),P);if(h&&b&&!O(h,b))return s(A(y,`conflicting-source`,`Recorded sources disagree for ${y.displayName}.`),P);let x=h??b,S=await k(x);return S.kind===`success`?S.value.kind===`absent`?m?s(A(y,`conflicting-source`,`${y.displayName} is on PATH but its recorded provider target is absent.`),P):C()?s(j(y,`would reconcile stale lifecycle evidence`),P):(n&&await r(y.name),u&&await a(y.name),s(M(y),P)):n?C()?s(j(y,`would uninstall ${y.displayName}`),P):f(n.installType)?(u||await i({...x.target.binaryName?{executableName:x.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:x.providerId,providerTargetId:x.target.id,providerTargetKind:x.target.kind,schemaVersion:1,targetId:y.name,verifiedAt:new Date().toISOString(),...S.value.executablePath?{executablePath:S.value.executablePath}:{},...S.value.version?{version:S.value.version}:{}}),(await g(y,n)).kind===`success`?await E(async()=>{let t=await k(x);return t.kind!==`success`||t.value.kind!==`absent`?!1:!await e(y.binaryName)},{isCancelled:()=>!!t().cancelled})?(await a(y.name),s(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)):(await c(n),s(A(y,`verification-failed`,`${y.displayName} is still present after provider removal.`),P)):s(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P)):(await g(y,n)).kind===`success`?(await a(y.name),s(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)):s(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P):s(A(y,`indeterminate-source`,`Cannot safely reconstruct ${y.displayName}'s uninstall source.`),P):s(A(y,`indeterminate-source`,`Cannot verify provider state for ${y.displayName}.`),P)})}catch(e){if(n(e))return s(u({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!1},...b(e,{kind:`agent`,name:y.name})}),P);throw e}}function O(e,t){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&e.target.binaryName===t.target.binaryName}async function k(e){let n=t(),r=new AbortController;return n.cancelled&&r.abort(`cli-cancelled`),y(e,{signal:r.signal,timeoutMs:n.timeoutMs})}function A(e,t,n){return u({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:t},message:n},target:{kind:`agent`,name:e.name}})}function j(e,t){return l({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${t}.`}]})}function M(e){return l({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.displayName} was already absent; stale lifecycle evidence was removed.`}]})}function N(e,t){return u({action:`uninstall`,data:{agent:{displayName:t.displayName,name:t.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:t.displayName,input:e,lifecycle:`unmanaged`,name:t.name},message:`${t.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${t.name} for details.`},target:{kind:`agent`,name:t.name}})}function P(e){if(e.error){w(p.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)x(p.yellow(t.message));return}S(p.cyan(`Uninstalling ${e.data.agent.displayName}...`)),S(p.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{D as uninstallCommand};
@@ -0,0 +1 @@
1
+ import{n as e}from"./detect-BdnZzKbm.mjs";import{l as t}from"./providers-gOIzOEnz.mjs";import{n}from"./agents-T-kpsmCW.mjs";import{n as r}from"./lifecycle-observations-DuXTdiJE.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{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{g as r}from"./npm-BMnWqkaW.mjs";import{I as i,r as a}from"./agents-D_evv3iI.mjs";import{n as o}from"./cli-context-xudTdmO7.mjs";import{a as s,d as c}from"./file-store-Caz7fnAB.mjs";import{T as l,i as u,n as d,r as f,t as p}from"./output-Bf3N0Tjs.mjs";import{r as m}from"./providers-gOIzOEnz.mjs";import{t as h}from"./cli-operation-context-QEqKxWgM.mjs";import{t as g}from"./color-BAlKATeY.mjs";import{g as _,n as v}from"./agents-T-kpsmCW.mjs";import{t as y}from"./update-planner-D1_UjTb8.mjs";import{t as b}from"./lifecycle-observations-DuXTdiJE.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-C4bJjtc-.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-BwXMvFde.mjs";async function j(e){let t;for(let n of e.commands){let i=await r(n,e.context,`agent self-update failed`);if(i.kind===`success`)return{kind:`success`,value:{evidence:[{kind:`command`,value:n.join(` `)}],target:e.target}};if(i.kind===`cancelled`||i.kind===`timed-out`)return i;t=i}return t??{kind:`unsupported`,operation:`update`,reason:`No self-update command is configured.`}}async function M(){let e=N();try{return await e.run()}finally{e.dispose()}}function N(){let e=h(),t=0,n=!1,r=!1,o,u,d,f,p=()=>{!n||r||t>0||(r=!0,e.dispose())},m=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,p()}},g=()=>(d??=c().then(t=>{let n=b(e.context);return{classifyMutationLockError:e=>s(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,listRegisteredAgentNames:()=>a().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:i,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:l.write}}),d),v=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(u??=m(async()=>D(await g())),u);return{dispose(){n||(n=!0,p())},getOutcome:()=>o,async observe(e){return m(async()=>(await g()).observe(e))},prepare:v,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(f??=(async()=>{let e=await v();return o=await m(async()=>k(e,await g())),o})(),f)}}}async function P(e){let t=F(e);try{return await t.run()}finally{t.dispose()}}function F(e){let t=h(),n=0,r=!1,a=!1,o,s,u,d,f=()=>{!r||a||n>0||(a=!0,t.dispose())},p=async e=>{if(r)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},m=()=>(u??=c().then(e=>{let n=b(t.context);return{clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:i,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:l.write}}),u),g=()=>r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(s??=p(async()=>A(e,await m())),s);return{dispose(){r||(r=!0,f())},getOutcome:()=>o,async observe(e){return p(async()=>(await m()).observe(e))},prepare:g,run(){return r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(d??=(async()=>{let e=await g();return o=e.kind===`planned`?await p(async()=>E(e.planned,await m())):e,o})(),d)}}}async function I(e,t,n={runBatch:M,runSingle:P}){if(t)return R(n);if(!e)return u(p({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Z);let r=v(e);return r?z(r,n):u(p({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Z)}function L(e,t){if(t){let t=N();return{dispose:t.dispose,idempotencyPolicy:()=>O(t),run:()=>I(e,!0,{runBatch:()=>t.run(),runSingle:P})}}if(!e)return{dispose(){},run:()=>I(e,t)};let n=F(e);return{dispose:n.dispose,idempotencyPolicy:()=>T(e,n),run:()=>I(e,!1,{runBatch:M,runSingle:()=>n.run()})}}async function R(e){f({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=H(t),r=G(t);return Y(t)?u(p({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`},warnings:r}),Z):n.some(e=>e.status===`failed`||e.status===`locked`)?u(p({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`},warnings:r}),Z):u(d({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`},warnings:r}),Z)}async function z(e,t){f({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(!s(t))throw t;return u(p({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}}),Z)}let r=V(n);if(n.kind===`unknown-agent`)return u(p({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),Z);if(r?.observation.kind===`absent`){let t=r.observation.drift.kind===`recorded-absent`?[K(e)]:[];return u(p({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Z)}let i=B(e,n);return X([],i),n.kind===`cancelled`?u(p({action:`update`,data:{results:[i],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Z):i.status===`failed`||i.status===`locked`?u(p({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Z):u(d({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name}}),Z)}function B(n,r){let i=V(r),a=`plan`in r?r.plan:void 0,o=i?.observation.kind===`present`?i.observation.version:void 0,s=q(a),c=J(a)??i?.binding?.providerId;switch(r.kind){case`updated`:return{displayName:n.displayName,installedVersion:o,latestVersion:r.receipt.version??s,name:n.name,status:`updated`,strategy:c};case`up-to-date`:return{displayName:n.displayName,installedVersion:r.receipt.version??o,name:n.name,status:`up-to-date`,strategy:c};case`dry-run`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Dry run: would update ${n.displayName}.`,name:n.name,status:`planned`,strategy:c};case`not-executed`:return r.plan.planning.decision===`up-to-date`?{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`up-to-date`}:{displayName:n.displayName,installedVersion:o,latestVersion:s,message:e(n),name:n.name,status:`manual-required`};case`blocked`:return r.category===`untracked`?{displayName:n.displayName,installedVersion:o,message:t(n),name:n.name,status:`manual-required`}:r.category===`manual-required`?{displayName:n.displayName,installedVersion:o,message:e(n),name:n.name,status:`manual-required`}:{displayName:n.displayName,installedVersion:o,message:r.reason,name:n.name,status:`failed`};case`cancelled`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.reason??`Update was cancelled before it could complete.`,name:n.name,status:`failed`,strategy:c};case`timed-out`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Update timed out after ${r.timeoutMs}ms.`,name:n.name,status:`failed`,strategy:c};case`provider-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`failed`,strategy:c};case`verification-failed`:case`receipt-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.kind===`receipt-failed`?r.reason:r.verification.reason,name:n.name,status:`failed`,strategy:c};case`unknown-agent`:return{displayName:n.displayName,name:n.name,status:`failed`}}}function V(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function H(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=U(e);t&&X(r,t)}else a&&X(r,W(a))}return r}function U(e){let t=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=v(e.agentName);if(!r)return{displayName:t?.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:q(i.plan),message:i.reason,name:r.name,resource:i.resource,status:`locked`,strategy:J(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:q(i.plan),message:i.reason,name:r.name,status:`failed`,strategy:J(i.plan)};let a=i??(e.planning.kind===`planned`?{kind:`not-executed`,plan:e.planning.planned}:e.planning),o=B(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=n(r,m({agent:r,installedState:t?.installedState,methods:[...t?.methods??[]]}))),o}function W(e){let t=v(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:q(e.planning.planned),message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:J(e.planning.planned)}}function G(e){return e.plan.targets.flatMap(e=>e.outcome.kind!==`blocked`||e.outcome.category!==`stale-state`?[]:[K(v(e.agentName)??e.outcome.before.agent)])}function K(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 q(e){return e?.strategy===`managed-provider`?e.plannedTargetVersion:void 0}function J(e){if(e)return e.strategy===`self-update`?`self-update`:`managed/${e.binding.providerId}`}function Y(e){return o().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function X(e,t){e.push(t),f({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Z(e){if(!e.data){e.error&&w(g.red(e.error.message));return}for(let t of e.warnings)x(g.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:S(g.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:x(g.yellow(`${t.displayName}: manual action required.`)),t.message&&x(g.cyan(`Next step: ${t.message}`));break;case`planned`:x(g.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${Q(t.installedVersion,t.latestVersion)}`));break;case`updated`:S(g.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),S(g.green(`${t.displayName} updated successfully!`));break;case`failed`:S(g.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),w(g.red(`Failed to update ${t.displayName}.`)),t.hint&&x(g.cyan(`Next step: ${t.hint}`));break;case`locked`:x(g.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&$(e.data.results),!e.data.results.length&&e.error&&w(g.red(e.error.message))}function Q(e,t){return e?` (${e} -> ${t??`latest`})`:``}function $(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&&S(g.bold(`Summary: ${n.join(`, `)}`))}export{L as createUpdateCommandInvocation};
@@ -1 +1 @@
1
- import{pt as e}from"./color-1gXmuBdm.mjs";const t=[`observe`,`update`,`verify`];function n(e){let t=i(e),n=r(e,t);return{decision:n,plan:{id:`update-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:n===`upgrade`?[o(e,t)]:[]}}}function r(n,r){let{observation:i}=n;if(a(n))return`blocked-source`;if(i.kind!==`present`||i.drift.kind===`indeterminate`)return`indeterminate`;let o=n.intent.targetVersion;if(!i.version||!o)return`indeterminate`;let s=e(o,i.version);return s===void 0?`indeterminate`:s<0?`blocked-downgrade`:s===0?`up-to-date`:!r||!t.every(e=>r.capabilities.includes(e))?`manual-required`:`upgrade`}function i(e){if(!a(e))return e.provider}function a(e){let{observation:t,provider:n}=e;return t.targetId!==e.intent.targetId||t.drift.kind===`conflicting-source`?!0:t.kind!==`present`||!n?!1:t.providerId!==n.providerId||t.providerTargetId!==n.targetId||t.providerTargetKind!==n.targetKind}function o(e,t){return{dependsOn:[],effects:[{capability:`${t.providerId}-observe`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-update`,kind:`provider-mutation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-verify`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId}],id:`update-${e.intent.targetId}`,kind:`operation`,postconditions:[{expectedVersion:e.intent.targetVersion,kind:`version-satisfies`,targetId:t.targetId}],preconditions:[]}}export{n as t};
1
+ import{s as e}from"./schema-hCKyxJjR.mjs";const t=[`observe`,`update`,`verify`];function n(e){let t=i(e),n=r(e,t);return{decision:n,plan:{id:`update-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:n===`upgrade`?[o(e,t)]:[]}}}function r(n,r){let{observation:i}=n;if(a(n))return`blocked-source`;if(i.kind!==`present`||i.drift.kind===`indeterminate`)return`indeterminate`;let o=n.intent.targetVersion;if(!i.version||!o)return`indeterminate`;let s=e(o,i.version);return s===void 0?`indeterminate`:s<0?`blocked-downgrade`:s===0?`up-to-date`:!r||!t.every(e=>r.capabilities.includes(e))?`manual-required`:`upgrade`}function i(e){if(!a(e))return e.provider}function a(e){let{observation:t,provider:n}=e;return t.targetId!==e.intent.targetId||t.drift.kind===`conflicting-source`?!0:t.kind!==`present`||!n?!1:t.providerId!==n.providerId||t.providerTargetId!==n.targetId||t.providerTargetKind!==n.targetKind}function o(e,t){return{dependsOn:[],effects:[{capability:`${t.providerId}-observe`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-update`,kind:`provider-mutation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-verify`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId}],id:`update-${e.intent.targetId}`,kind:`operation`,postconditions:[{expectedVersion:e.intent.targetVersion,kind:`version-satisfies`,targetId:t.targetId}],preconditions:[]}}export{n as t};
@@ -0,0 +1 @@
1
+ import{c as e,o as t,t as n}from"./child-process-CBKnpMWt.mjs";import{s as r}from"./schema-hCKyxJjR.mjs";import{i,n as a}from"./cli-context-xudTdmO7.mjs";import{c as o,d as s,f as c,i as l,m as u,n as d,t as f,u as p,y as m}from"./output-Bf3N0Tjs.mjs";import{t as h}from"./color-BAlKATeY.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-C4bJjtc-.mjs";import{n as b,t as x}from"./version-cache-BdkaOTM-.mjs";const S={platform:process.platform,spawn:(e,n)=>t(e,{...n,stdio:n.stdio?[...n.stdio]:void 0}),terminate:e,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=a(),t=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&t.cancel(`cancelled`);let n=i(()=>t.cancel(`cancelled`)),r=!1,s={plan:e=>c({context:e.context,metadataCache:e.metadataCache,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>o(e,t)};return{dispose(){r||(r=!0,n())},run:e=>k(e,t,s)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:u(),network:T(),persistence:m(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}function P(e){if(e===`stable`||e===`beta`)return e}async function F(e={}){let t=v(),r=j(),i=await r.run({check:e.check??!1,dryRun:t,updateChannel:e.channel}).finally(()=>r.dispose());if(i.kind===`interrupted`)throw new n({kind:`cancelled`,reason:i.error.message});let a=i.plan,o=s(a),c=L(o),u=z(o);if(a.status===`up-to-date`)return l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);if(e.check||t)return a.status===`update-available`?l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`update-available`},exitCode:e.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[],...t?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),I):l(f({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,status:`check-unavailable`},error:{code:`NETWORK_ERROR`,message:`Unable to determine the latest Quantex CLI version.`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);if(a.status===`manual-required`){let e=p(o);return l(f({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,recoveryHint:e,status:`manual-required`},error:{code:`MANUAL_ACTION_REQUIRED`,message:`Quantex CLI cannot auto-update from the current install source: ${o.installSource}.`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I)}if(i.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let m=i.result;if(m.success)return l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`updated`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);let h=p(o,m);return l(f({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,recoveryHint:h,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:m.error?.kind?{kind:m.error.kind}:void 0,message:m.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...c,...h?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${h}`}]:[]]}),I)}function I(e){if(!e.data){e.error&&y(h.red(e.error.message));return}if(e.data.status===`up-to-date`){_(h.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),R(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;g(h.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),R(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(h.yellow(e.error.message)),R(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){g(h.yellow(e.error.message)),e.data.recoveryHint&&g(h.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(_(h.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){_(h.green(`Quantex CLI upgraded successfully.`)),R(e.warnings);return}y(h.red(`Failed to upgrade Quantex CLI.`)),g(h.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)g(h.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function L(e){return!e.latestVersion||!e.upstreamLatestVersion||e.latestVersion===e.upstreamLatestVersion||e.installSource!==`bun`&&e.installSource!==`npm`?[]:[{code:`MIRROR_LAG`,details:{installableLatestVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion},message:`The selected registry currently installs ${e.latestVersion}, while upstream npm has ${e.upstreamLatestVersion}. Retry later or set selfUpdateRegistry / QTX_SELF_UPDATE_REGISTRY to another registry if you need the upstream release now.`}]}function R(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(h.yellow(t.message))}function z(e){if(!e.latestVersion)return;let t=r(e.latestVersion,e.currentVersion);if(!(t===void 0||t>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:e.currentVersion,latestVersion:e.latestVersion},message:`The resolved latest version ${e.latestVersion} is older than the installed Quantex CLI ${e.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{P as resolveUpgradeChannelOption,F as upgradeCommand};
@@ -0,0 +1 @@
1
+ import{n as e}from"./cli-context-xudTdmO7.mjs";import t from"node:process";const n={debug:4,error:1,info:3,silent:0,warn:2};function r(e){o(`info`)&&t.stdout.write(`${e}\n`)}function i(e){o(`warn`)&&t.stdout.write(`${e}\n`)}function a(e){o(`error`)&&t.stdout.write(`${e}\n`)}function o(t){let r=e();return r.outputMode===`human`?r.quiet&&t===`info`?!1:n[r.logLevel??`info`]>=n[t]:!0}function s(){return!!e().assumeYes}function c(){return!!e().dryRun}function l(e){t.stdout.write(`${e}\n`)}export{i as a,r as i,c as n,l as o,a as r,s as t};
@@ -0,0 +1 @@
1
+ import{c as e,o as t,r as n}from"./child-process-CBKnpMWt.mjs";import{n as r}from"./cli-context-xudTdmO7.mjs";import{s as i}from"./file-store-Caz7fnAB.mjs";import{dirname as a,join as o}from"node:path";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";const u={platform:process.platform,spawn:(e,n)=>t(e,{...n,stdio:n.stdio?[...n.stdio]:void 0}),terminate:e,writeStderr:e=>{process.stderr.write(e)}};function d(e=u){return{async run(t){if(t.signal.aborted)return p(t.signal);let r;try{r=e.spawn(t.argv,{...t.cwd?{cwd:t.cwd}:{},detached:e.platform!==`win32`,...t.env?{env:{...process.env,...t.env}}:{},stdio:t.stdio})}catch(e){return m(`failed`,g(e,`Failed to launch agent process.`))}let i=n(r),a,o,s=new Promise(e=>{o=()=>e({kind:`cancelled`}),t.signal.addEventListener(`abort`,o,{once:!0}),t.signal.aborted&&o()}),c=i.then(e=>({kind:`completed`,result:e})),l=t.timeoutMs===void 0?void 0:new Promise(e=>{a=setTimeout(()=>e({kind:`timed-out`}),t.timeoutMs)});try{let n=await Promise.race(l?[c,s,l]:[c,s]);if(n.kind===`completed`)return f(n.result,t,e);if(n.kind===`cancelled`)return await e.terminate(r),await i.catch(()=>void 0),p(t.signal);let a=await v(c,_(t.timeoutMs));return a?f(a.result,t,e):(await e.terminate(r),await i.catch(()=>void 0),m(`timed-out`,`Agent process timed out after ${t.timeoutMs}ms.`))}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o)}}}}function f(e,t,n){t.forwardPipedOutput!==!1&&(t.stdio?.[1]===`pipe`&&e.stdout&&n.writeStderr?.(e.stdout),t.stdio?.[2]===`pipe`&&e.stderr&&n.writeStderr?.(e.stderr));let r=new TextEncoder;return{kind:`success`,value:{exitCode:e.exitCode,...e.stderr?{stderr:r.encode(e.stderr)}:{},...e.stdout?{stdout:r.encode(e.stdout)}:{}}}}function p(e){return m(`cancelled`,h(e)??`Agent process was cancelled.`)}function m(e,t){return{error:{kind:e,message:t},kind:`failure`}}function h(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function g(e,t){return e instanceof Error&&e.message.trim()?e.message:t}function _(e){return Math.max(1,Math.min(e,250))}async function v(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function y(e={}){let t=e.filePath??o(i(),`cache`,`versions.json`),n=e.getCacheMode??(()=>r().cacheMode??`default`),a=e.now??Date.now;return{async read(e){let r=T(e.signal);if(r)return r;if(n()===`no-cache`)return C({kind:`miss`});try{let n=await b(t),r=T(e.signal);if(r)return r;let i=n.entries[e.key];if(!i||i.expiresAt<=a())return C({kind:`miss`});try{return C({expiresAtMs:i.expiresAt,kind:`hit`,value:JSON.parse(i.body)})}catch{return w(`invalid-data`,`Cached value for ${e.key} is not valid JSON.`)}}catch(e){return E(e,`Failed to read the version cache.`)}},async remove(e){let r=T(e.signal);if(r)return r;if(n()===`no-cache`)return C(void 0);try{let n=await b(t);return T(e.signal)||(Object.hasOwn(n.entries,e.key)?(delete n.entries[e.key],await x(t,n),T(e.signal)??C(void 0)):C(void 0))}catch(e){return E(e,`Failed to remove a version cache entry.`)}},async write(e){let r=T(e.signal);if(r)return r;if(n()===`no-cache`)return C(void 0);try{let n=await b(t),r=T(e.signal);if(r)return r;let i=a(),o=JSON.stringify(e.value);return o===void 0?w(`invalid-data`,`Cached value for ${e.key} is not JSON serializable.`):(n.entries[e.key]={body:o,expiresAt:e.expiresAtMs??2**53-1,fetchedAt:i},await x(t,n),T(e.signal)??C(void 0))}catch(e){return E(e,`Failed to write the version cache.`)}}}}async function b(e){try{return S(JSON.parse(await c(e,`utf8`)))}catch(e){if(D(e)||e instanceof SyntaxError)return{entries:{}};throw e}}async function x(e,t){await s(a(e),{recursive:!0}),await l(e,`${JSON.stringify(t,null,2)}\n`,`utf8`)}function S(e){if(!O(e)||!O(e.entries))return{entries:{}};let t={};for(let[n,r]of Object.entries(e.entries))!O(r)||typeof r.body!=`string`||!k(r.expiresAt)||(t[n]={body:r.body,etag:typeof r.etag==`string`?r.etag:void 0,expiresAt:r.expiresAt,fetchedAt:k(r.fetchedAt)?r.fetchedAt:void 0});return{entries:t}}function C(e){return{kind:`success`,value:e}}function w(e,t,n){return{error:{code:n,kind:e,message:t},kind:`failure`}}function T(e){return e.aborted?w(`cancelled`,`Cache operation was cancelled.`):void 0}function E(e,t){return w(`failed`,t,O(e)&&typeof e.code==`string`?e.code:void 0)}function D(e){return O(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function O(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function k(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}export{d as n,y as t};
@@ -0,0 +1,2 @@
1
+ import{i as e,n as t,o as n,r}from"./child-process-CBKnpMWt.mjs";import{_ as i,g as a}from"./npm-BMnWqkaW.mjs";import{join as o}from"node:path";import s from"node:process";import{access as c,constants as l}from"node:fs/promises";import{homedir as u}from"node:os";function d(e){return e===`cask`?[`--cask`]:[]}function ee(e){return e===`cask`?[`--cask`]:[`--formula`]}function f(e,t,n,r){return a([`brew`,e,...d(n),t],r,`brew ${e} failed`)}function te(e,t,n){return f(`install`,e,t,n)}function ne(e,t,n){return f(`upgrade`,e,t,n)}function re(e,t){return i(e.map(e=>[`brew`,`upgrade`,...d(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function ie(e,t,n){return f(`uninstall`,e,t,n)}async function p(i,a,o){try{let t=n([`brew`,`list`,...ee(a),`--versions`,i],{detached:o!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:c,stderr:l,stdout:u}=o?await e(t,o):await r(t),d=g(u);return c===0?d?{presence:`present`,version:d}:{presence:`present`}:c===1&&_(l)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function m(e,t,n){return(await p(e,t,n)).presence}async function h(e,t,n){return(await p(e,t,n)).version}function g(e){let t=e.trim().split(`
2
+ `).find(e=>e.trim());if(!t)return;let n=t.trim().split(/\s+/);if(n.length<2)return;let r=n.at(-1);return r&&/^\d/.test(r)?r:void 0}function _(e){let t=e.toLowerCase();return t.includes(`no such keg`)||t.includes(`is not installed`)}function v(e,t,n,r){return a([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function y(e,t,n){return v(`install`,e,t??[],n)}function ae(e,t,n){return y(e,[`--force`,...t??[]],n)}function oe(e,t){return i(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function se(e,t){return v(`uninstall`,e,[],t)}async function b(i,a){try{let t=n([`cargo`,`install`,`--list`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stdout:c}=a?await e(t,a):await r(t);if(o!==0)return{presence:`unknown`};let l=ue(c,i);return l?{presence:`present`,version:l}:de(c,i)?{presence:`present`}:{presence:`absent`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function ce(e,t){return(await b(e,t)).presence}async function le(e,t){return(await b(e,t)).version}function ue(e,t){let n=x(e,t);if(!n)return;let r=n[1];return r&&/^\d/.test(r)?r:void 0}function de(e,t){return x(e,t)!==void 0}function x(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),r=RegExp(`^${n}\\s+v([^:\\s]+):\\s*$`,`m`);return e.match(r)??void 0}function S(e,t,n,r){let i=[`deno`,`install`,`--global`];return n.force&&i.push(`--force`),i.push(...t,e),a(i,r,`deno ${n.force?`update`:`install`} failed`)}function fe(e,t,n){return S(e,t??[],{},n)}function C(e,t,n){return S(e,t??[],{force:!0},n)}function w(e,t){return i(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function T(e,t){return a([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}async function E(e,n){if(!e.trim())return{presence:`unknown`};try{return await c(o(A(),`bin`,e),l.F_OK),{presence:`present`}}catch(e){if(t(e))throw e;return j(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)?{presence:`absent`}:{presence:`unknown`}}}async function D(e,t){return(await E(e,t)).presence}async function O(e,t){return(await E(e,t)).version}function k(e,t){if(t?.trim())return t.trim();let n=e.trim().split(`/`).pop()?.replace(/@.*$/,``);return n&&n.length>0?n:e.trim()}function A(){let e=s.env.DENO_INSTALL_ROOT?.trim();return e&&e.length>0?e:o(u(),`.deno`)}function j(e){return typeof e==`object`&&!!e&&`code`in e}function M(e,t,n){return a([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function N(e,t){return M(e,!1,t)}function P(e,t){return M(e,!0,t)}function F(e,t){return i(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function I(e,t){return a([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function L(i,a){try{let t=n([`mise`,`ls`,`--installed`,`--json`,i],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await e(t,a):await r(t);if(!o.trim())return{presence:`unknown`};try{let e=JSON.parse(o);if(!H(e))return{presence:`unknown`};let t=V(e,i),n=t?e[t]:void 0;if(!Array.isArray(n)||n.length===0)return{presence:`absent`};let r=B(o,i);return r?{presence:`present`,version:r}:{presence:`present`}}catch{return{presence:`unknown`}}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function R(e,t){return(await L(e,t)).presence}async function z(e,t){return(await L(e,t)).version}function B(e,t){try{let n=JSON.parse(e);if(!H(n))return;let r=V(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(H(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function V(e,t){if(Array.isArray(e[t]))return t;let n=t.split(`:`).pop()?.split(`/`).pop();if(n)return Object.keys(e).find(t=>t===n&&Array.isArray(e[t]))}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let U=null;async function W(r){if(U)return{kind:`success`,value:U};for(let i of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await e(n([...i,`--version`],{detached:s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),r);if(t===0)return U=i,{kind:`success`,value:i}}catch(e){if(t(e))return e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??r.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}}return U=[`pip`],{kind:`success`,value:U}}async function G(e,t){let n=await W(t);return n.kind===`success`?a([...n.value,...e],t,`pip command failed`):n}function pe(e,t){return G([`install`,e],t)}function me(e,t){return G([`install`,`--upgrade`,e],t)}async function he(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await W(t);return n.kind===`success`?i(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function ge(e,t){return G([`uninstall`,`-y`,e],t)}async function K(i,a){let o=a??{signal:new AbortController().signal,timeoutMs:5e3};try{let t=await W(o);if(t.kind!==`success`)return{presence:`unknown`};let c=n([...t.value,`show`,i],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:l,stderr:u,stdout:d}=a?await e(c,a):await r(c);if(l===0){let e=ye(d);return e?{presence:`present`,version:e}:{presence:`present`}}return l===1&&be(u)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function _e(e,t){return(await K(e,t)).presence}async function ve(e,t){return(await K(e,t)).version}function ye(e){for(let t of e.split(/\r?\n/)){let e=/^Version:\s*(.+)\s*$/i.exec(t.trim());if(e?.[1])return e[1].trim()}}function be(e){let t=e.toLowerCase();return t.includes(`package(s) not found`)||t.includes(`not found`)}function q(e,t,n,r){return a([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function xe(e,t,n){return q(`install`,e,t??[],n)}function Se(e,t,n){return q(`upgrade`,e,t??[],n)}function Ce(e,t){return i(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function we(e,t){return a([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function J(i,a){try{let t=n([`uv`,`tool`,`list`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await e(t,a):await r(t);if(!o.trim())return{presence:`unknown`};let c=Oe(o,i);return c?{presence:`present`,version:c}:De(o)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function Te(e,t){return(await J(e,t)).presence}async function Ee(e,t){return(await J(e,t)).version}function De(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function Oe(e,t){let n=Y(t);for(let t of e.split(/\r?\n/)){let e=t.trim(),r=/^(\S+)\s+v([^\s]+)/.exec(e);if(!r)continue;let[,i,a]=r;if(Y(i)===n)return a}}function Y(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}function X(e,t,n){return a([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function ke(e,t){return X(`install`,e,t)}function Z(e,t){return X(`upgrade`,e,t)}function Ae(e,t){return i(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function je(e,t){return X(`uninstall`,e,t)}async function Q(i,a){try{let t=n([`winget`,`list`,`--id`,i,`-e`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stderr:c,stdout:l}=a?await e(t,a):await r(t);if(o===0){let e=Pe(l,i);return e?{presence:`present`,version:e}:l.toLowerCase().includes(i.toLowerCase())?{presence:`present`}:{presence:`unknown`}}return $(c)||$(l)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function Me(e,t){return(await Q(e,t)).presence}async function Ne(e,t){return(await Q(e,t)).version}function Pe(e,t){let n=t.toLowerCase();for(let t of e.split(/\r?\n/)){let e=t.trim();if(!e||e.toLowerCase().startsWith(`name`)||e.startsWith(`-`))continue;let r=e.split(/\s{2,}|\t+/).map(e=>e.trim()).filter(Boolean);if(r.length<2)continue;let i=r.findIndex(e=>e.toLowerCase()===n);if(i<0)continue;let a=r[i+1];return a&&a.length>0?a:void 0}}function $(e){let t=e.toLowerCase();return t.includes(`no installed package found`)||t.includes(`no package found matching input criteria`)||t.includes(`no installed package matched`)}export{w as A,m as B,F as C,fe as D,k as E,se as F,re as H,oe as I,ae as L,le as M,y as N,D as O,ce as P,h as R,I as S,O as T,ne as U,ie as V,he as _,Ae as a,N as b,xe as c,Ce as d,Se as f,ge as g,_e as h,je as i,C as j,T as k,Te as l,pe as m,ke as n,Z as o,ve as p,Me as r,Ee as s,Ne as t,we as u,me as v,P as w,R as x,z as y,te as z};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quantex-cli",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Agent-friendly lifecycle CLI for AI coding assistant CLIs: install, inspect, update, uninstall, run, and automate Codex, Claude Code, Gemini, Cursor, OpenCode, and more",
5
5
  "keywords": [
6
6
  "agent-cli",
@@ -102,7 +102,6 @@
102
102
  },
103
103
  "devDependencies": {
104
104
  "@fission-ai/openspec": "1.3.1",
105
- "@quantex/core": "1.2.0",
106
105
  "@types/bun": "^1.3.11",
107
106
  "@types/cross-spawn": "^6.0.6",
108
107
  "@types/node": "^25.0.1",
@@ -111,6 +110,7 @@
111
110
  "lint-staged": "^16.2.7",
112
111
  "oxfmt": "0.47.0",
113
112
  "oxlint": "^1.62.0",
113
+ "quantex-core": "0.1.0",
114
114
  "simple-git-hooks": "^2.13.1",
115
115
  "tsdown": "^0.21.7",
116
116
  "typescript": "^5.9.3",
@@ -1 +0,0 @@
1
- import{Ct as e,Nt as t,j as n}from"./color-1gXmuBdm.mjs";import{lt as r}from"./agents-CBoMqbP1.mjs";import{a as i}from"./provider-binding-BvvHuohl.mjs";import{_ as a,d as o,f as s,o as c,s as l,u}from"./agents-DvfpsVAI.mjs";function d(e){let t=f(e);return{decision:t,plan:{id:`${e.intent.kind}-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:h(t,e)}}}function f(e){let{intent:t,observation:n}=e;return n.kind===`indeterminate`||n.drift.kind===`indeterminate`||n.drift.kind===`conflicting-source`||p(e)?`blocked`:t.kind===`uninstall`?n.kind===`absent`?n.drift.kind===`recorded-absent`?`clear-ghost`:`preserve-unmanaged`:!n.providerId||!y(e)?`preserve-unmanaged`:m(e,`uninstall`)?`uninstall`:`unsupported`:n.kind===`present`?n.drift.kind===`untracked`?n.providerId?`adopt`:`preserve-unmanaged`:`satisfied`:!v(e)||!y(e)?`blocked`:m(e,`install`)?`install`:`unsupported`}function p(e){let{observation:t,provider:n}=e;return t.kind!==`present`||n===void 0?!1:t.providerId!==void 0&&t.providerId!==n.providerId||t.providerTargetId!==void 0&&t.providerTargetId!==n.targetId||t.providerTargetKind!==void 0&&t.providerTargetKind!==n.targetKind}function m(e,t){return e.provider===void 0||e.provider.capabilities.includes(t)}function h(e,t){switch(e){case`install`:return[g(`install`,t,_(`package-present`,t))];case`uninstall`:return[g(`uninstall`,t,_(`package-absent`,t))];case`adopt`:return[b(`adopt-${t.intent.targetId}`,[{executable:t.observation.kind===`present`?t.observation.executablePath??t.intent.targetId:t.intent.targetId,kind:`executable-present`}])];case`clear-ghost`:return[b(`clear-ghost-${t.intent.targetId}`,[])];case`blocked`:case`preserve-unmanaged`:case`satisfied`:case`unsupported`:return[]}}function g(e,t,n){let r=v(t),i=y(t);return{dependsOn:[],effects:[{capability:`${r}-${e}`,kind:`provider-mutation`,providerId:r,targetId:i}],id:`${e}-${t.intent.targetId}`,kind:`operation`,postconditions:[n],preconditions:[]}}function _(e,t){return{kind:e,providerId:v(t),targetId:y(t)}}function v(e){return e.observation.kind===`present`?e.observation.providerId??e.provider?.providerId??e.providerId:e.provider?.providerId??e.providerId}function y(e){return e.observation.kind===`present`?e.observation.providerTargetId??e.provider?.targetId??e.providerTargetId:e.provider?.targetId??e.providerTargetId}function b(e,t){return{dependsOn:[],effects:[],id:e,kind:`operation`,postconditions:t,preconditions:[]}}async function x(e){let t=await e.execute();if(t.kind!==`success`)return t;let n;try{n=await e.verify(t.value,e.plan)}catch{return await S(e,t.value),{kind:`failed`,reason:`verification-failed`,retryable:!0}}if(n.kind!==`satisfied`)return await S(e,t.value),n.kind===`indeterminate`?{kind:`indeterminate`,reason:n.reason}:{kind:`failed`,reason:n.reason,retryable:!1};let r=e.createReceipt(n,t.value);try{await e.recordReceipt(r,t.value)}catch{return await S(e,t.value),{kind:`failed`,reason:`receipt-write-failed`,retryable:!0}}return{kind:`success`,value:{...t.value,receipt:r,verification:n}}}async function S(e,t){if(!(!t.changed||!e.compensate))try{await e.compensate(t)}catch{}}function C(e){let{adoptableMethod:t,agent:r,observation:o,operation:l,route:u}=e,f=o.installedState?void 0:o.methods[0],p=o.installedState??t??f,m=D(o.lifecycle,r,t),h=d({intent:{kind:l,targetId:r.name},observation:m,providerId:O(p),providerTargetId:k(r,p)});return h.decision===u?a(async()=>{if(u===`install`&&o.installedState&&!o.inPath){let e=i(r,o.installedState);if(!e)return{kind:`indeterminate`,reason:`tracked-provider-binding-unresolved`};let t=await E(t=>c(e,t));if(t.kind!==`success`||t.value.kind!==`absent`)return{kind:`indeterminate`,reason:`tracked-provider-not-conclusively-absent`}}return x({createReceipt:(e,t)=>{let n=i(r,t.value.installedState);if(!n)throw Error(`Cannot resolve provider binding for ${r.name}.`);let a=e.observation.kind===`present`?e.observation:void 0;return{...n.target.binaryName?{executableName:n.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:n.providerId,providerTargetId:n.target.id,providerTargetKind:n.target.kind,schemaVersion:1,targetId:r.name,verifiedAt:new Date().toISOString(),...a?.executablePath?{executablePath:a.executablePath}:{},...a?.version?{version:a.version}:{}}},compensate:e=>u===`install`?s(r,e.value.installedState):Promise.resolve(),execute:async()=>w(r,u,o.installedState,t,f),plan:h.plan,recordReceipt:(e,t)=>n(t.value.installedState,e),verify:async e=>T(r,e.value.installedState,l,h.plan.steps[0]?.postconditions[0])})}):Promise.resolve({kind:`indeterminate`,reason:`planned-${h.decision}-cannot-execute-${u}`})}async function w(e,n,r,i,a){if(n===`satisfied`&&r)return{kind:`success`,value:{changed:!1,value:{installedState:r}}};if(n===`adopt`&&i)return t().cancelled?{kind:`cancelled`,reason:`tracking-cancelled`}:{kind:`success`,value:{changed:!0,value:{installedState:l(e,i)}}};if(n===`install`&&r){let t=await o(e,r);return t.kind===`success`&&t.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:t.value.installedState}}}:t.kind===`success`?{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:t}if(!a)return{kind:`indeterminate`,reason:`install-method-unresolved`};let s=await u(e,[a]);return s.kind===`success`?s.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:s.value.installedState}}}:{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:s}async function T(e,t,n,a){let o=a??{executable:e.binaryName,kind:`executable-present`},s=i(e,t);if(!s)return{kind:`indeterminate`,postcondition:o,reason:`provider-binding-unresolved-after-${n}`};let[l,u]=await E(t=>Promise.all([r(e.binaryName,t),c(s,t)])),d=u.kind===`success`&&u.value.kind===`present`,f=u.kind===`success`?u.value:void 0,p=l&&d?{drift:{kind:`none`},executablePath:f?.kind===`present`?f.executablePath:void 0,kind:`present`,providerId:s.providerId,providerTargetId:s.target.id,targetId:e.name,version:f?.kind===`present`?f.version:void 0}:{drift:{kind:`recorded-absent`},kind:`absent`,targetId:e.name};return l&&d?{kind:`satisfied`,observation:p,postcondition:o}:{kind:`unsatisfied`,observation:p,postcondition:o,reason:l?`provider-target-not-present-after-${n}`:`binary-not-found-after-${n}`}}async function E(t){let n=e();try{return await t(n.context)}finally{n.dispose()}}function D(e,t,n){return e.kind!==`present`||!n?e:{...e,providerId:O(n),providerTargetId:k(t,n)}}function O(e){if(e)return`installType`in e?e.installType:e.type}function k(e,t){if(t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;let n=O(t);if(n===`bun`||n===`npm`)return e.packages?.npm??e.binaryName;if(n===`cargo`)return e.packages?.cargo??e.binaryName;if(n===`deno`)return e.packages?.deno??e.binaryName;if(n===`mise`)return e.packages?.mise??e.binaryName;if(n===`pip`)return e.packages?.pip??e.binaryName;if(n===`uv`)return e.packages?.uv??e.binaryName}return e.binaryName}export{C as t};
@@ -1 +0,0 @@
1
- import{pt as e}from"./color-1gXmuBdm.mjs";import{a as t,i as n,n as r,t as i}from"./provider-binding-BvvHuohl.mjs";async function a(e,a){let[g,_,v]=await Promise.all([a.inspectExecutable(e),a.readInstalledState(e.name),a.readReceipt(e.name)]),y=a.clock(),b=r(e,a.platform),x=b.bindings,S=_?t(e,_):void 0,C=v?n(v):void 0,w=C??S,T={catalogMethods:x,executable:g,installedState:_,pathExecutable:g,persistedBinding:w,receipt:v};if(_&&!S||v&&!C)return{...T,capabilities:[],observation:c(e,y,`Persisted provider binding cannot be resolved.`)};if(S&&C&&!i(S,C,e.binaryName))return{...T,capabilities:[],observation:g.present?s(e,g,y,{kind:`conflicting-source`,observedProviderId:S.providerId,recordedProviderId:C.providerId}):{drift:{kind:`conflicting-source`,observedProviderId:S.providerId,recordedProviderId:C.providerId},kind:`absent`,observedAt:y,targetId:e.name}};let E=w;if(E){let t=await o(E,a),n=a.providerRegistry.getCapabilities(E.providerId);if(t.kind!==`success`)return{...T,binding:E,capabilities:n,observation:c(e,y,m(t)),providerOutcome:t};let r=t.value;if(!f(E,r))return{...T,binding:E,capabilities:n,observation:p(e,g,y),providerOutcome:t};if(r.kind===`absent`&&!g.present)return{...T,binding:E,capabilities:n,observation:{drift:{kind:`recorded-absent`},kind:`absent`,observedAt:y,targetId:e.name},providerOutcome:t};let i=r.kind!==(g.present?`present`:`absent`)||r.kind===`present`&&g.present&&r.executablePath!==void 0&&g.path!==void 0&&r.executablePath!==g.path||r.kind===`present`&&u(r.version,g.version)||v?.executablePath!==void 0&&g.path!==void 0&&v.executablePath!==g.path||d(e,_,v,E),h=l(g,r);return{...T,binding:E,capabilities:n,executable:h,observation:s(e,h,y,i?{kind:`conflicting-source`,observedProviderId:r.kind===`present`?E.providerId:void 0,recordedProviderId:E.providerId}:{kind:`none`},r.kind===`present`?E:void 0),providerOutcome:t}}let D=await Promise.all(x.map(async e=>({binding:e,outcome:await o(e,a)}))),O=D.find(e=>e.outcome.kind===`success`&&!f(e.binding,e.outcome.value));if(O)return{...T,capabilities:[],observation:p(e,g,y),providerOutcome:O.outcome};let k=D.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),A=D.filter(e=>e.binding.providerId!==`binary`&&e.binding.providerId!==`script`),j=A.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),M=A.some(e=>e.outcome.kind!==`success`),N=j.length>0?j:M?[]:k;if(N.length>1)return{...T,capabilities:[],observation:g.present?s(e,g,y,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:y,reason:`Multiple catalog providers report the agent as present.`,targetId:e.name}};if(b.unresolvedCandidates.length>0)return{...T,capabilities:[],observation:c(e,y,`A catalog provider binding cannot be resolved.`)};let P=D.map(e=>e.outcome).find(h),F=D.map(e=>e.outcome).find(e=>e.kind===`cancelled`||e.kind===`timed-out`);if(F)return{...T,capabilities:[],observation:c(e,y,m(F)),providerOutcome:F};let I=N[0];if(I){let t=I.binding,n=I.outcome.value,r=l(g,n),i=!g.present||n.executablePath!==void 0&&g.path!==void 0&&n.executablePath!==g.path||u(n.version,g.version);return{...T,binding:t,capabilities:a.providerRegistry.getCapabilities(t.providerId),executable:r,observation:s(e,r,y,i?{kind:`conflicting-source`,observedProviderId:t.providerId}:{kind:`untracked`},t),providerOutcome:I.outcome}}let L=a.preferredCatalogBinding,R=L?D.find(t=>i(t.binding,L,e.binaryName)&&t.outcome.kind===`success`&&t.outcome.value.kind===`absent`):void 0;return!g.present&&k.length===0&&P&&R?{...T,capabilities:[],observation:{drift:{kind:`none`},kind:`absent`,observedAt:y,targetId:e.name},providerOutcome:R.outcome}:P?{...T,capabilities:[],observation:c(e,y,m(P)),providerOutcome:P}:{...T,capabilities:[],observation:g.present?s(e,g,y,{kind:`untracked`}):{drift:{kind:`none`},kind:`absent`,observedAt:y,targetId:e.name}}}async function o(e,t){try{if(t.observeProvider)return await t.observeProvider(e,{registry:t.providerRegistry,signal:t.signal,timeoutMs:t.timeoutMs});let n=t.providerRegistry.get(e.providerId);return n?await n.observe({context:{signal:t.signal,timeoutMs:t.timeoutMs},target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}catch(e){return{kind:`failed`,reason:g(e),retryable:!1}}}function s(e,t,n,r,i){return{drift:r,...t.path?{executablePath:t.path}:{},kind:`present`,observedAt:n,...i?{providerId:i.providerId,providerTargetId:i.target.id,providerTargetKind:i.target.kind}:{},targetId:e.name,...t.version?{version:t.version}:{}}}function c(e,t,n){return{drift:{kind:`indeterminate`,reason:n},kind:`indeterminate`,observedAt:t,reason:n,targetId:e.name}}function l(e,t){return t.kind===`absent`?e:{path:e.path??t.executablePath,present:!0,version:e.version??t.version}}function u(t,n){if(t===void 0||n===void 0)return!1;let r=e(t,n);return r===void 0?t!==n:r!==0}function d(e,t,n,r){let i=[e.binaryName,t?.binaryName,n?.executableName,r.target.binaryName].filter(e=>e!==void 0);return new Set(i).size>1}function f(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function p(e,t,n){return t.present?s(e,t,n,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:n,reason:`Provider evidence does not match the requested target identity.`,targetId:e.name}}function m(e){switch(e.kind){case`unsupported`:return e.reason??`Provider does not support ${e.operation}.`;case`unavailable`:case`failed`:case`indeterminate`:return e.reason;case`cancelled`:return e.reason??`Provider observation was cancelled.`;case`timed-out`:return`Provider observation timed out after ${e.timeoutMs}ms.`}}function h(e){return e.kind!==`success`}function g(e){return e instanceof Error&&e.message.trim().length>0?`Provider observation rejected: ${e.message.trim().slice(0,500)}`:`Provider observation rejected unexpectedly.`}export{a as t};