quantex-cli 1.8.11 → 1.9.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.
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/{agent-installation-BoKWsqnP.mjs → agent-installation-Dm25ZdED.mjs} +1 -1
- package/dist/agents-BsZ6Btoz.mjs +1 -0
- package/dist/agents-DaVS3Aew.mjs +1 -0
- package/dist/{capabilities-BSnulBhT.mjs → capabilities-BJWlwSs3.mjs} +1 -1
- package/dist/capabilities-D_KZ-hf1.mjs +1 -0
- package/dist/child-process-DzIdysOm.mjs +1 -0
- package/dist/{cli-operation-context-BFEu635L.mjs → cli-operation-context-BS5a069W.mjs} +1 -1
- package/dist/cli-operation-context-yd4c0OQH.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/commands-BhT-7H1H.mjs +1 -0
- package/dist/{commands-BbQe_ON8.mjs → commands-Cw5QrXUT.mjs} +1 -1
- package/dist/config-BF7ZuXbc.mjs +3 -0
- package/dist/core-installation-cli-CZaccIUT.mjs +1 -0
- package/dist/{core-read-observations-BcPmZ6hJ.mjs → core-read-observations-DvEtQMVm.mjs} +1 -1
- package/dist/{detect-DL6buUVi.mjs → detect-BUVMt8jZ.mjs} +1 -1
- package/dist/{doctor-B7r6ZBdF.mjs → doctor-Cev-MvMX.mjs} +1 -1
- package/dist/ensure-B7-EENvT.mjs +1 -0
- package/dist/ensure-CM1-qViK.mjs +1 -0
- package/dist/errors-BsSS_i9A.mjs +1 -0
- package/dist/file-store-XNyirRRY.mjs +2 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{info-Dqc_WWr1.mjs → info-Os5AmVrH.mjs} +1 -1
- package/dist/inspect-CIb7g97P.mjs +1 -0
- package/dist/{inspect-DqDfHKBz.mjs → inspect-weteHfEU.mjs} +1 -1
- package/dist/install-CT8fm61Q.mjs +1 -0
- package/dist/{installation-compatibility-Dwjt5KJ4.mjs → installation-compatibility-Mc1ZlVS1.mjs} +1 -1
- package/dist/installation-failure-diagnostics-BJnxrzTa.mjs +1 -0
- package/dist/{installation-production-DWjxO4ah.mjs → installation-production-BuCazkkr.mjs} +1 -1
- package/dist/installation-provider-registry-Ca45gNu5.mjs +1 -0
- package/dist/installation-routing-B1snz7YR.mjs +1 -0
- package/dist/{lifecycle-observations-BuscaBUl.mjs → lifecycle-observations-CSHMWKz8.mjs} +1 -1
- package/dist/{lifecycle-policy-6lSEToTF.mjs → lifecycle-policy-ClcUaPip.mjs} +1 -1
- package/dist/{list-C-IEbM27.mjs → list-BemHv4RN.mjs} +1 -1
- package/dist/mutation-recipe-catalog-DP_XMSYe.mjs +1 -0
- package/dist/npm-DUDR-Khz.mjs +5 -0
- package/dist/{output-CStNLacz.mjs → output-CgTs7pIh.mjs} +2 -2
- package/dist/production-observation-DCU7IJZl.mjs +1 -0
- package/dist/{provider-evidence-DsrZZTeP.mjs → provider-evidence-BbMX487J.mjs} +1 -1
- package/dist/{provider-observation-registry-HX9uxCCQ.mjs → provider-observation-registry-DRRQKxkl.mjs} +3 -3
- package/dist/{provider-observations-Cc63tE6E.mjs → provider-observations-BBUf9znX.mjs} +1 -1
- package/dist/{providers-DvgNZrfR.mjs → providers-YdECz092.mjs} +1 -1
- package/dist/{resolve-dq8p6snD.mjs → resolve-CM2JyH_y.mjs} +1 -1
- package/dist/resolve-D7ni6-jQ.mjs +1 -0
- package/dist/schema-D6SdLCAJ.mjs +1 -0
- package/dist/{schema-BG5mYDpo.mjs → schema-DlZF54O1.mjs} +1 -1
- package/dist/{uninstall-DPJQiKjB.mjs → uninstall-JnynBCH-.mjs} +1 -1
- package/dist/unmanaged-install-compatibility-BEXuxk1_.mjs +1 -0
- package/dist/{update-DkNFmDA5.mjs → update-sq4eqQik.mjs} +1 -1
- package/dist/{upgrade-DCH9zij3.mjs → upgrade-NjZNP9Vx.mjs} +1 -1
- package/dist/{version-cache-BYowbdA-.mjs → version-cache-jjIoeyWQ.mjs} +1 -1
- package/dist/{winget-Q_NhfOhY.mjs → winget-C8yBIi3u.mjs} +2 -2
- package/package.json +4 -4
- package/dist/agents-D9f3aOA9.mjs +0 -1
- package/dist/agents-Dx9g8ynW.mjs +0 -1
- package/dist/capabilities-D4Yrva1H.mjs +0 -1
- package/dist/child-process-CBKnpMWt.mjs +0 -1
- package/dist/cli-operation-context-D-7o4gXx.mjs +0 -1
- package/dist/commands-D5plvean.mjs +0 -1
- package/dist/config-MrVPBftr.mjs +0 -3
- package/dist/core-installation-cli-BdaOA0l4.mjs +0 -1
- package/dist/ensure-CZZYl1C8.mjs +0 -1
- package/dist/ensure-Ctt9j7pc.mjs +0 -1
- package/dist/errors-DR1Ig4IH.mjs +0 -1
- package/dist/file-store-BdnwPxOg.mjs +0 -2
- package/dist/inspect-B5H663Ab.mjs +0 -1
- package/dist/install-Ca5HBRPs.mjs +0 -1
- package/dist/installation-provider-registry-Cs4njYSh.mjs +0 -1
- package/dist/installation-routing-CLQZ8rZo.mjs +0 -1
- package/dist/mutation-recipe-catalog-CH1AfoI8.mjs +0 -1
- package/dist/npm-CJQfKklg.mjs +0 -4
- package/dist/production-observation-C2NQE3L8.mjs +0 -1
- package/dist/resolve-cmJqUIsH.mjs +0 -1
- package/dist/schema-BpXcR8pV.mjs +0 -1
- package/dist/unmanaged-install-compatibility-1ER3psYi.mjs +0 -1
- /package/dist/{errors-G0M6J6q-.mjs → errors-fT9JApTf.mjs} +0 -0
- /package/dist/{installation-executor-CUGhYtyj.mjs → installation-executor-pEUKT8U8.mjs} +0 -0
- /package/dist/{installation-routing-D6Zo0bsn.mjs → installation-routing-n62Du1fV.mjs} +0 -0
- /package/dist/{invocation-DDozaggZ.mjs → invocation-DXH0mQUH.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{i as e,n as t,o as n,r,t as i}from"./child-process-
|
|
2
|
-
`)[0],r=n.match(De);return r?r[1]:n||void 0}function ke(e,t){return v(e,t)===1}function Ae(e,t,n){let r=t?.command??[e,`--version`];return!n||r[0]!==e?[...r]:[n,...r.slice(1)]}async function je(e,t,n){return Me(e,t,n)}async function Me(i,a,o,s){let c=Ae(i,a,s);try{let t=n(c,{detached:o!==void 0&&C.platform!==`win32`}),{exitCode:i,stderr:s,stdout:l}=o?await e(t,o):await r(t);return i===0?Oe(l,a?.parser)??Oe(s,a?.parser):void 0}catch(e){if(t(e))throw e;return}}async function Ne(e,t=`latest`,n={}){return Pe(e,t,n)}async function Pe(e,n=`latest`,r={}){try{let t=g(r.registry)??`https://registry.npmjs.org`,i=await D(h(e,n,t),`npm:${t}:${e}:${n}`,{cacheMode:r.cacheMode,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 Fe(e,t){return u(e,t)}async function Ie(e,t){if(e){if(t?.signal.aborted)throw A(t.signal);try{let n=await se(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`},Le={brew:N,bun:N,cargo:N,deno:N,mise:N,npm:N,pip:N,uv:N,winget:N},Re=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],ze=[{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:Le,required:Re,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:Re,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}],P=[{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`}],Be=new Map(P.map(e=>[e.id,e])),Ve=new Map(ze.map(e=>[e.name,e])),F=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],He=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],Ue=[I({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`}),I({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),I({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`}),I({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),I({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`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:He,name:`ensure`,summary:`Ensure an agent is installed`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`info`,summary:`Show human-friendly agent details`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`inspect`,summary:`Return structured agent state`}),I({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:He,name:`install`,summary:`Install one or more agents`}),I({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`list`,summary:`List supported agents`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),I({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`}),I({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`}),I({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`}),I({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 We(){return Ue}function Ge(){return P}function Ke(e){let t={...e};for(let n of P){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 qe(e){return{flags:L(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function Je(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=Be.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=R(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=R(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}`);Xe(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=L(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 I(e){let t=Ye(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:L(n)}}function Ye(e){let t=Ve.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function L(e){return[...e.catalogTokens,...e.options.map(e=>R(e.flags)),...e.globalOptions.map(t=>{let n=Be.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return R(n.flags)})]}function R(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function Xe(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${R(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${R(e.flags)}`)}const Ze=new Map(We().map(e=>[e.name,tt(e.presenterId)]));function Qe(e){return Ze.get(e)}function $e(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)??nt(n));return}e?e.presentHuman(n,r):r(n)}function et(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function tt(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:nt}}function nt(e){return{action:e.action,data:e,target:e.target,type:`result`}}const z=`quantex-cli`,rt=`https://github.com/Drswith/quantex-cli`,it=`1.8.11`;function at(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function ot(e=C.execPath){let t=st(e);return t?`${t}.tar.gz`:void 0}function st(e=C.execPath){if(re(at(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 ct(e=C.execPath){let t=ot(e);if(t)return`${rt}/releases/latest/download/${t}`}function lt(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 ut(e,t,n,r){let i=await D(await dt(e,t,n,r),`self:manifest:${e}`,{cacheMode:r,context:t,networkPort:n});if(!i)throw Error(`Failed to download release manifest.`);return i}async function dt(e,t,n,r){if(e===`stable`)return`${rt}/releases/latest/download/manifest.json`;let i=(await ft(e,t,n,r)).assets.find(e=>e.name===`manifest.json`);if(!i?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return i.browser_download_url}async function ft(e,t,n,r){let i=mt();if(!i)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let a=await D(`https://api.github.com/repos/${i}/releases?per_page=20`,`self:github-releases`,{cacheMode:r,context:t,networkPort:n});if(!a)throw Error(`Failed to query GitHub releases.`);let o=a.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!o)throw Error(`No GitHub release was found for the ${e} channel.`);return o}function pt(e,t=C.execPath){let n=C.platform,r=C.arch===`arm64`?`arm64`:`x64`,i=ot(t);return e.assets.find(e=>e.platform===n&&e.arch===r&&(!i||e.name===i))}function mt(){return rt.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var B=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const ht={installedAgents:{},self:{}};function gt(){return d(p())}async function V(){return At()}async function _t(e){let t=await f({resource:`state`,scope:[`state`]});try{await jt(e)}finally{await t()}}async function vt(e){return(await V()).installedAgents[e]}async function yt(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 bt(e){let t=await f({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 xt(e,t){let n=await f({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 St(e){let t=await f({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 Ct=Object.freeze({read:yt,remove:St,write:bt});async function wt(e){await U(t=>{t.installedAgents[e.agentName]=e})}async function Tt(e){await U(t=>{delete t.installedAgents[e]})}async function Et(){return(await V()).self}async function Dt(e){await U(t=>{t.self.installSource=e})}async function Ot(){await U(e=>{delete e.self.installSource})}async function kt(e,t){await U(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function At(){try{return await H().loadProjection()}catch(e){if(Mt(e))return{...ht};throw e instanceof B?e:e instanceof ee?new B(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new B(`Failed to read Quantex state file.`,{cause:e})}}async function jt(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 m(p())}function Mt(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 f({resource:`state`,scope:[`state`]});try{let t=await At();await e(t),await jt(t)}finally{await t()}}const Nt=`self:install-source`,Pt={clearInstallSource:Ot,getSelfState:Et,setInstallSource:Dt};function W(e=Pt){return{async load(t){let n=G(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return It(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return Lt(`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(),It(void 0)}catch(e){return Lt(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=G(t.key,t.signal);if(n)return n;if(!Ft(t.value))return K({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),It({})}catch(e){return Lt(`Failed to persist the self install source.`,e)}}}}function G(e,t){if(t.aborted)return K({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return K({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function Ft(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function It(e){return{kind:`success`,value:e}}function K(e){return{error:e,kind:`failure`}}function Lt(e,t){return K({details:{cause:t},kind:`failed`,message:e})}const Rt=z,zt=`/node_modules/${Rt}`;async function Bt(e){return Ht(e,!0)}async function Vt(e){return Ht(e,!1)}async function Ht(e,t){let n=await Yt(),r=C.execPath,i=n.foundPackageJson?Jt(n.packageRoot):Jt(``,r),a=e?.persistence??W(),o=e?.signal??new AbortController().signal,s=await Kt(a,o),c=t?await Gt(s,i,{persistence:a,signal:o}):Ut(s,i),u=await l(),d=lt(e?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:Wt(c),currentVersion:n.version||`1.8.11`,executablePath:r,installSource:c,packageRoot:n.packageRoot,updateChannel:d}}function Ut(e,t){return t===`unknown`?e??t:t}function Wt(e){return e===`binary`||e===`bun`||e===`npm`}async function Gt(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??W()).save({key:Nt,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&qt(e.error),t}return Ut(e,t)}async function Kt(e,t){let n=await e.load({key:Nt,signal:t});if(n.kind===`failure`&&qt(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 qt(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 Jt(e,t=C.execPath){let n=Qt(e);return n.includes(`/.bun/install/global/`)?`bun`:n.includes(zt)?`npm`:n?`source`:$t(t)?`binary`:`unknown`}async function Yt(e=import.meta.url){let t=en(e),n=b(t);for(;;){let e=x(n,`package.json`),t=await Zt(e);if(t?.name===Rt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.8.11`};let r=b(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:x(b(t),`package.json`),packageRoot:b(t),version:it}}function Xt(){return it}async function Zt(e){try{return JSON.parse(await w(e,`utf8`))}catch{return}}function Qt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function $t(e){let t=re(Qt(e));return t!==`bun`&&t!==`bun.exe`}function en(e){try{return fe(e)}catch{return C.execPath}}async function tn(){try{return await f({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(c(e))return;throw e}}function nn(){return{async acquire(e){if(e.signal.aborted)return q(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return q(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await tn();if(!t)return q(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),q(`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 q(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function q(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function rn(e,t,n=C.env,r=C.cwd()){if(e!==`bun`&&e!==`npm`)return;let i=g(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 an(e,n,r)||{isOverride:!1,registry:_,source:`fallback`}}async function an(e,t,n){if(e===`bun`){let e=on(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await sn(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=on(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await ln(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function on(e,t){for(let n of t){let t=g(e[n]);if(t)return t}}async function sn(e,t){let n=fn(t),r=t.XDG_CONFIG_HOME,i=dn(e,`bunfig.toml`),a=[x(n,`.bunfig.toml`),r?x(r,`.bunfig.toml`):void 0];if(i){let e=await cn(i);if(e)return e}for(let e of a){if(!e||!ne(e))continue;let t=await cn(e);if(t)return t}}async function cn(e){try{return pn(await w(e,`utf8`))}catch{return}}async function ln(e,t){let n=fn(t),r=dn(e,`.npmrc`),i=x(n,`.npmrc`);if(r){let e=await un(r);if(e)return e}if(ne(i))return un(i)}async function un(e){try{let t=(await w(e,`utf8`)).split(`
|
|
1
|
+
import{i as e,n as t,o as n,r,t as i}from"./child-process-DzIdysOm.mjs";import{d as a,l as o,n as s}from"./npm-DUDR-Khz.mjs";import{a as c,d as l,h as u,n as d,r as f,s as p,t as m}from"./file-store-XNyirRRY.mjs";import{n as h,r as g,t as _}from"./registry-vhJzh8dW.mjs";import{s as v,t as ee}from"./schema-BBnWVY6R.mjs";import{n as y,r as te}from"./cli-context-DI43ouBg.mjs";import{existsSync as ne}from"node:fs";import{basename as re,dirname as b,join as x,win32 as S}from"node:path";import C from"node:process";import{chmod as ie,mkdir as ae,mkdtemp as oe,readFile as w,realpath as se,rename as T,rm as E,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{gunzipSync as pe}from"node:zlib";import{Buffer as me}from"node:buffer";var he=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function D(e,t,n={}){let r=await ge(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function ge(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;O(i);let a=await l();O(i);let o=a.versionCacheTtlHours*60*60*1e3,s=r.cacheMode??y().cacheMode,c=s===`no-cache`?{entries:{}}:await Se();O(i);let u=c.entries[t],d=Date.now();if(s===`default`&&u&&u.expiresAt>d)return O(i),Te(u,o),u.body;let f=await _e(e,{context:r.context,headers:s!==`no-cache`&&u?.etag?{"If-None-Match":u.etag}:void 0,mode:n,networkPort:r.networkPort,retries:a.networkRetries,signal:i,timeoutMs:a.networkTimeoutMs});if(O(i),!f)return u&&(O(i),Te(u,o)),u?.body;if(f.status===304&&u)return O(i),c.entries[t]={...u,expiresAt:d+o,fetchedAt:d},s!==`no-cache`&&(O(i),await Ce(c)),O(i),Ee(d,d+o),u.body;if(!f.ok||!f.valid||f.body===void 0)return u&&(O(i),Te(u,o)),u?.body;O(i);let p={body:f.body,etag:f.etag,expiresAt:d+o,fetchedAt:d};return s!==`no-cache`&&(c.entries[t]=p,O(i),await Ce(c)),O(i),Ee(d,d+o),f.body}async function _e(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 ve(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof i)throw e;if(r===t.retries)return}}async function ve(e,t){let n=t.networkPort;if(n)return ye(e,{...t,networkPort:n});let r=new AbortController,a,o,s,c,l,u=new Promise((e,t)=>c=t),d=()=>l??=xe(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`?k(t.signal):e===`invocation-timeout`?new i({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new he(t.timeoutMs),a=s===void 0;return(a||s instanceof he&&n instanceof i)&&(s=n),a&&(r.abort(s),d().finally(()=>c(s))),d()},p=()=>void f(`cancelled`);t.signal?.addEventListener(`abort`,p,{once:!0});let m=t.context?.registerCleanup?.({cleanup:()=>f(`cancelled`),force:d}),h=Date.now()+t.timeoutMs,g=setTimeout(()=>void f(`network-timeout`),t.timeoutMs),_=t.invocationDeadline===void 0?void 0:setTimeout(()=>void f(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),v=async()=>{if(s||(t.signal?.aborted?await f(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await f(`invocation-timeout`):Date.now()>=h&&await f(`network-timeout`),s))throw s};try{t.signal?.aborted&&await f(`cancelled`);let n=(async()=>{o=await fetch(e,{headers:t.headers,signal:r.signal}),await v();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 be(o,e=>a=e);await v();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await v(),{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(g),_&&clearTimeout(_),t.signal?.removeEventListener(`abort`,p),m?.()}}async function ye(e,t){if(t.signal?.aborted)throw k(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`?k(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 he(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 be(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 xe(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function O(e){if(e?.aborted)throw k(e)}function k(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 Se(){try{return JSON.parse(await w(we(),`utf8`))}catch{return{entries:{}}}}async function Ce(e){await ae(x(p(),`cache`),{recursive:!0}),await le(we(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function we(){return x(p(),`cache`,`versions.json`)}function Te(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);te({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Ee(e,t){te({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const De=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Oe(e,t){if(t)return t(e);let n=e.trim().split(`
|
|
2
|
+
`)[0],r=n.match(De);return r?r[1]:n||void 0}function ke(e,t){return v(e,t)===1}function Ae(e,t,n){let r=t?.command??[e,`--version`];return!n||r[0]!==e?[...r]:[n,...r.slice(1)]}async function je(e,t,n){return Me(e,t,n)}async function Me(i,a,o,s){let c=Ae(i,a,s);try{let t=n(c,{detached:o!==void 0&&C.platform!==`win32`}),{exitCode:i,stderr:s,stdout:l}=o?await e(t,o):await r(t);return i===0?Oe(l,a?.parser)??Oe(s,a?.parser):void 0}catch(e){if(t(e))throw e;return}}async function Ne(e,t=`latest`,n={}){return Pe(e,t,n)}async function Pe(e,n=`latest`,r={}){try{let t=g(r.registry)??`https://registry.npmjs.org`,i=await D(h(e,n,t),`npm:${t}:${e}:${n}`,{cacheMode:r.cacheMode,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 Fe(e,t){return u(e,t)}async function Ie(e,t){if(e){if(t?.signal.aborted)throw A(t.signal);try{let n=await se(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`},Le={brew:N,bun:N,cargo:N,deno:N,mise:N,npm:N,pip:N,uv:N,winget:N},Re=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],ze=[{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:Le,required:Re,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:Re,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}],P=[{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`}],Be=new Map(P.map(e=>[e.id,e])),Ve=new Map(ze.map(e=>[e.name,e])),F=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],He=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],Ue=[I({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`}),I({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),I({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`}),I({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),I({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`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:He,name:`ensure`,summary:`Ensure an agent is installed`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`info`,summary:`Show human-friendly agent details`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`inspect`,summary:`Return structured agent state`}),I({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:He,name:`install`,summary:`Install one or more agents`}),I({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`list`,summary:`List supported agents`}),I({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:F,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),I({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`}),I({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`}),I({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`}),I({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 We(){return Ue}function Ge(){return P}function Ke(e){let t={...e};for(let n of P){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 qe(e){return{flags:L(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function Je(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=Be.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=R(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=R(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}`);Xe(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=L(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 I(e){let t=Ye(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:L(n)}}function Ye(e){let t=Ve.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function L(e){return[...e.catalogTokens,...e.options.map(e=>R(e.flags)),...e.globalOptions.map(t=>{let n=Be.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return R(n.flags)})]}function R(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function Xe(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${R(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${R(e.flags)}`)}const Ze=new Map(We().map(e=>[e.name,tt(e.presenterId)]));function Qe(e){return Ze.get(e)}function $e(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)??nt(n));return}e?e.presentHuman(n,r):r(n)}function et(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function tt(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:nt}}function nt(e){return{action:e.action,data:e,target:e.target,type:`result`}}const z=`quantex-cli`,rt=`https://github.com/Drswith/quantex-cli`,it=`1.9.0`;function at(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function ot(e=C.execPath){let t=st(e);return t?`${t}.tar.gz`:void 0}function st(e=C.execPath){if(re(at(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 ct(e=C.execPath){let t=ot(e);if(t)return`${rt}/releases/latest/download/${t}`}function lt(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 ut(e,t,n,r){let i=await D(await dt(e,t,n,r),`self:manifest:${e}`,{cacheMode:r,context:t,networkPort:n});if(!i)throw Error(`Failed to download release manifest.`);return i}async function dt(e,t,n,r){if(e===`stable`)return`${rt}/releases/latest/download/manifest.json`;let i=(await ft(e,t,n,r)).assets.find(e=>e.name===`manifest.json`);if(!i?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return i.browser_download_url}async function ft(e,t,n,r){let i=mt();if(!i)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let a=await D(`https://api.github.com/repos/${i}/releases?per_page=20`,`self:github-releases`,{cacheMode:r,context:t,networkPort:n});if(!a)throw Error(`Failed to query GitHub releases.`);let o=a.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!o)throw Error(`No GitHub release was found for the ${e} channel.`);return o}function pt(e,t=C.execPath){let n=C.platform,r=C.arch===`arm64`?`arm64`:`x64`,i=ot(t);return e.assets.find(e=>e.platform===n&&e.arch===r&&(!i||e.name===i))}function mt(){return rt.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var B=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const ht={installedAgents:{},self:{}};function gt(){return d(p())}async function V(){return At()}async function _t(e){let t=await f({resource:`state`,scope:[`state`]});try{await jt(e)}finally{await t()}}async function vt(e){return(await V()).installedAgents[e]}async function yt(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 bt(e){let t=await f({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 xt(e,t){let n=await f({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 St(e){let t=await f({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 Ct=Object.freeze({read:yt,remove:St,write:bt});async function wt(e){await U(t=>{t.installedAgents[e.agentName]=e})}async function Tt(e){await U(t=>{delete t.installedAgents[e]})}async function Et(){return(await V()).self}async function Dt(e){await U(t=>{t.self.installSource=e})}async function Ot(){await U(e=>{delete e.self.installSource})}async function kt(e,t){await U(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function At(){try{return await H().loadProjection()}catch(e){if(Mt(e))return{...ht};throw e instanceof B?e:e instanceof ee?new B(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new B(`Failed to read Quantex state file.`,{cause:e})}}async function jt(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 m(p())}function Mt(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 f({resource:`state`,scope:[`state`]});try{let t=await At();await e(t),await jt(t)}finally{await t()}}const Nt=`self:install-source`,Pt={clearInstallSource:Ot,getSelfState:Et,setInstallSource:Dt};function W(e=Pt){return{async load(t){let n=G(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return It(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return Lt(`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(),It(void 0)}catch(e){return Lt(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=G(t.key,t.signal);if(n)return n;if(!Ft(t.value))return K({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),It({})}catch(e){return Lt(`Failed to persist the self install source.`,e)}}}}function G(e,t){if(t.aborted)return K({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return K({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function Ft(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function It(e){return{kind:`success`,value:e}}function K(e){return{error:e,kind:`failure`}}function Lt(e,t){return K({details:{cause:t},kind:`failed`,message:e})}const Rt=z,zt=`/node_modules/${Rt}`;async function Bt(e){return Ht(e,!0)}async function Vt(e){return Ht(e,!1)}async function Ht(e,t){let n=await Yt(),r=C.execPath,i=n.foundPackageJson?Jt(n.packageRoot):Jt(``,r),a=e?.persistence??W(),o=e?.signal??new AbortController().signal,s=await Kt(a,o),c=t?await Gt(s,i,{persistence:a,signal:o}):Ut(s,i),u=await l(),d=lt(e?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:Wt(c),currentVersion:n.version||`1.9.0`,executablePath:r,installSource:c,packageRoot:n.packageRoot,updateChannel:d}}function Ut(e,t){return t===`unknown`?e??t:t}function Wt(e){return e===`binary`||e===`bun`||e===`npm`}async function Gt(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??W()).save({key:Nt,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&qt(e.error),t}return Ut(e,t)}async function Kt(e,t){let n=await e.load({key:Nt,signal:t});if(n.kind===`failure`&&qt(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 qt(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 Jt(e,t=C.execPath){let n=Qt(e);return n.includes(`/.bun/install/global/`)?`bun`:n.includes(zt)?`npm`:n?`source`:$t(t)?`binary`:`unknown`}async function Yt(e=import.meta.url){let t=en(e),n=b(t);for(;;){let e=x(n,`package.json`),t=await Zt(e);if(t?.name===Rt)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.9.0`};let r=b(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:x(b(t),`package.json`),packageRoot:b(t),version:it}}function Xt(){return it}async function Zt(e){try{return JSON.parse(await w(e,`utf8`))}catch{return}}function Qt(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function $t(e){let t=re(Qt(e));return t!==`bun`&&t!==`bun.exe`}function en(e){try{return fe(e)}catch{return C.execPath}}async function tn(){try{return await f({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(c(e))return;throw e}}function nn(){return{async acquire(e){if(e.signal.aborted)return q(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return q(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await tn();if(!t)return q(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),q(`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 q(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function q(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function rn(e,t,n=C.env,r=C.cwd()){if(e!==`bun`&&e!==`npm`)return;let i=g(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 an(e,n,r)||{isOverride:!1,registry:_,source:`fallback`}}async function an(e,t,n){if(e===`bun`){let e=on(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await sn(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=on(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await ln(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function on(e,t){for(let n of t){let t=g(e[n]);if(t)return t}}async function sn(e,t){let n=fn(t),r=t.XDG_CONFIG_HOME,i=dn(e,`bunfig.toml`),a=[x(n,`.bunfig.toml`),r?x(r,`.bunfig.toml`):void 0];if(i){let e=await cn(i);if(e)return e}for(let e of a){if(!e||!ne(e))continue;let t=await cn(e);if(t)return t}}async function cn(e){try{return pn(await w(e,`utf8`))}catch{return}}async function ln(e,t){let n=fn(t),r=dn(e,`.npmrc`),i=x(n,`.npmrc`);if(r){let e=await un(r);if(e)return e}if(ne(i))return un(i)}async function un(e){try{let t=(await w(e,`utf8`)).split(`
|
|
3
3
|
`).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=g(r[1]);if(i)return i}}catch{}}function dn(e,t){let n=e;for(;;){let e=x(n,t);if(ne(e))return e;let r=b(n);if(r===n)return;n=r}}function fn(e){return e.HOME||e.USERPROFILE||ue()}function pn(e){let t=mn(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 g(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return g(mn(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function mn(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function hn(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function gn(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function _n(e,t){if(bn(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||v(e.targetVersion,e.targetVersion)!==0)&&!(!xn(e.fetchedAtMs)||!xn(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function vn(e){let t=await e.cache.read({key:hn(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return _n(t.value.value,e)}function yn(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:hn(e.metadata),signal:e.signal,value:e.metadata})}function bn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function xn(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function Sn(e,n,r,i){let a=await l();if(e.installSource===`binary`)try{let t=n?await ut(e.updateChannel,n,r,i):await ut(e.updateChannel,void 0,r,i),a=pt(t,e.executablePath);return a?{binaryAsset:a,targetVersion:t.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch(n){if(t(n))throw n;return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let o=e.updateChannel===`beta`?`beta`:`latest`,s=await Pe(z,o,{...n?{context:n}:{},cacheMode:i,networkPort:r,registry:_});if(e.installSource===`bun`||e.installSource===`npm`){let t=await rn(e.installSource,a);return{managedRegistry:t?.registry,managedRegistryIsOverride:t?.isOverride??!1,packageTag:o,targetVersion:await Pe(z,o,{...n?{context:n}:{},cacheMode:i,networkPort:r,registry:t?.registry}),upstreamLatestVersion:s,verificationCommand:kn(e.packageRoot)}}return{packageTag:o,targetVersion:s,upstreamLatestVersion:s}}async function J(e){let t=e?.facts??await Bt({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await Sn(t,e?.context,e?.networkPort,e?.metadataCacheMode),r=n.targetVersion?ke(n.targetVersion,t.currentVersion):!1,i={facts:t,status:En(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await l()).versionCacheTtlHours*60*60*1e3;await yn({cache:e.metadataCache,metadata:gn({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function Cn(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 wn(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await Dn(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 Tn(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:kn(e.packageRoot)},r=e.latestVersion?ke(e.latestVersion,e.currentVersion):!1;return{facts:t,status:En(t,n,r),target:n,updateAvailable:r}}function En(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Dn(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await On(e.target.verificationCommand,r);if(t)return t}return On([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await je(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return je(e.facts.executablePath)}async function On(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(`
|
|
4
4
|
`)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function kn(e){if(e)return[C.execPath,x(e,`dist`,`cli.mjs`),`--version`]}const An=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`].map(jn);function jn(e){return`${e}.tar.gz`}function Y(e){if(!e.endsWith(`.tar.gz`))return;let t=e.slice(0,-7);return X(t)?t:void 0}function Mn(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
|
|
5
5
|
`)}\n`}function Nn(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function X(e){let t=(Y(e)??e).match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function Pn(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function Fn(e){return e.includes(`beta`)?`beta`:`stable`}function In(e){let t=Pn(e.repositoryUrl),n=Fn(e.version),r=e.files.map(n=>{let r=X(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);if(!Y(n.name))throw Error(`Release asset is not a compressed binary archive: ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function Ln(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of An)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!X(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}function Rn(e,t){if(Y(jn(t))!==t)throw Error(`Invalid expected release binary name: ${t}.`);let n;try{n=pe(e)}catch(e){throw Error(`Release archive is not a valid gzip stream.`,{cause:e})}let r=0,i;for(;r+512<=n.length;){let e=n.subarray(r,r+512);if(e.every(e=>e===0))break;let a=zn(e.subarray(0,100)),o=zn(e.subarray(345,500)),s=o?`${o}/${a}`:a,c=e[156],l=Bn(e.subarray(124,136)),u=r+512,d=u+l;if(!a||d>n.length)throw Error(`Release archive contains an invalid tar entry.`);if(c!==0&&c!==48)throw Error(`Release archive must contain only a regular file.`);if(s!==t||i)throw Error(`Release archive must contain exactly ${t}.`);i=n.slice(u,d),r=u+Math.ceil(l/512)*512}if(!i)throw Error(`Release archive does not contain ${t}.`);return i}function zn(e){let t=e.indexOf(0);return new TextDecoder().decode(t===-1?e:e.subarray(0,t))}function Bn(e){let t=zn(e).trim();if(!/^[0-7]+$/u.test(t))throw Error(`Release archive contains an invalid tar size.`);let n=Number.parseInt(t,8);if(!Number.isSafeInteger(n)||n<0)throw Error(`Release archive contains an unsafe tar size.`);return n}async function Vn(e,t,n,r,a=Wn(t),o){let s=o?.networkPort,c=s&&o?await Un(e,{...o,networkPort:s}):await Hn(e);if(c.kind===`failure`)return c.result;let l=c.binary;Z(o);let u=Zn(c.binary);if(u!==Qn(n))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${Qn(n)}, got ${u}.`);if(o?.archiveEntryName)try{l=me.from(Rn(l,o.archiveEntryName))}catch(t){return $(`unknown`,`Failed to extract the expected binary from ${e}.`,t)}let d=await oe(x(b(t),`.quantex-upgrade-`)),f=x(d,re(t)),p=`${t}.bak`,m=!1,h=!1;try{Z(o);let e=await Gn(t);if(await le(f,l),Z(o),C.platform===`win32`){let e=Kn(f,t,p,d,r,a);return h=e.success,e}await ie(f,e),Z(o),await E(p,{force:!0}),await T(t,p),m=!0,await T(f,t);let n=await Xn(t,r,o);return n.success?(m=!1,await E(p,{force:!0}),{success:!0}):(await Yn(p,t),m=!1,n)}catch(e){if(m){try{await Yn(p,t)}catch{}m=!1}if(e instanceof i)throw e;return $(Jn(e),`Failed to replace the current Quantex binary.`,e)}finally{(C.platform!==`win32`||!h)&&await E(d,{recursive:!0,force:!0})}}function Z(e){if(e?.signal.aborted)throw new i({kind:`cancelled`,reason:e.signal.reason instanceof Error?e.signal.reason.message:String(e.signal.reason??``)})}async function Hn(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:me.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function Un(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:me.from(n.value.body),kind:`success`}}function Wn(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 Gn(e){try{return(await ce(e)).mode&511}catch{return 493}}function Kn(e,t,r,i,a,o){try{return n([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,qn(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 qn(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 Jn(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 Yn(e,t){await E(t,{force:!0}),await T(e,t)}async function Xn(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 Zn(e){return de(`sha256`).update(e).digest(`hex`)}function Qn(e){return e.trim().toLowerCase()}const $n={source:`binary`,canHandle:e=>er(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):ct(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=Wn(e.facts.executablePath),i=Y(n.name);if(!i)return{error:{kind:`unsupported`,message:`The resolved release artifact is not a compressed standalone binary archive.`},installSource:e.facts.installSource,success:!1};let a=await Vn(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r,t?{archiveEntryName:i,networkPort:t.network,processPort:t.process,signal:t.signal,timeoutMs:t.timeoutMs}:{archiveEntryName:i,signal:new AbortController().signal});return{...!a.success&&a.error?{...a,error:{...a.error,detail:{...typeof a.error.detail==`object`&&a.error.detail?a.error.detail:{},downloadUrl:n.downloadUrl}}}:a,installSource:e.facts.installSource,newVersion:a.success?e.target.targetVersion:void 0}}};function er(e){return`facts`in e?e.facts.installSource:e.installSource}async function tr(e,t){return t.process?(await rr(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function nr(e,t,n){if(!await tr(e,n))return!1;let r=await rr([`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)?tr([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function rr(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 ir={source:`bun`,canHandle:e=>ar(e)===`bun`,getRecoveryHint:e=>`bun add -g ${z}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await nr([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${z}@${n}`],z,t):await o(z,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${z} through Bun.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function ar(e){return`facts`in e?e.facts.installSource:e.installSource}const or={source:`npm`,canHandle:e=>sr(e)===`npm`,getRecoveryHint:e=>`npm install -g ${z}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await tr([`npm`,`install`,`-g`,`${z}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await s(z,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${z} through npm.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function sr(e){return`facts`in e?e.facts.installSource:e.installSource}const cr={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}}},lr=[ir,or,$n,cr];function ur(e){return lr.find(t=>t.canHandle(e))??cr}function dr(e,t,n=`stable`){return ur({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function fr(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:dr(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function pr(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:ur(e).getRecoveryHint(e,t)}async function mr(e){return Cn(await J({updateChannel:e?.updateChannel}))}async function hr(e){let t=await Vt({updateChannel:e?.updateChannel});return Cn(await J({context:e?.context,facts:t}))}async function gr(e,t={}){let n=await yr(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await _r();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 wn(n,await ur(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 _r(){let e=await tn();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 vr(e,t=C.execPath){return fr(e,t)}async function yr(e){return e?`facts`in e?e:e.installSource===`binary`?J({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Tn(e):J()}function br(e){return wr({...e,error:null,ok:!0})}function xr(e){return wr({...e,ok:!1})}function Sr(e,t,n={}){let r=y();return r.cancelled&&!n.force||$e(Qe(e.action),r.outputMode,e,t,e=>console.log(e),e=>Er(e)),e}function Cr(e,t={}){let n=y();if(!(n.cancelled&&!t.force))return et(Qe(e.action),n.outputMode,e,e=>Er(e))}function wr(e){let t=y();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:Xt()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function Tr(e){let t=y();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:Xt()},target:e.target,type:e.type}}function Er(e){let t=Tr(e);return Dr(t),t}function Dr(e){console.log(JSON.stringify(e))}export{Ie as $,Et as A,Dt as B,Jt as C,B as D,W as E,St as F,We as G,ot as H,_t as I,qe as J,Ge as K,xt as L,Ct as M,V as N,vt as O,Tt as P,Ne as Q,wt as R,Wt as S,Vt as T,ct as U,kt as V,z as W,Fe as X,Je as Y,je as Z,Ln as _,vr as a,vn as b,gr as c,In as d,ke as et,Mn as f,Fn as g,Nn as h,Sr as i,gt as j,yt as k,fr as l,X as m,br as n,mr as o,Pn as p,Ke as q,Cr as r,hr as s,xr as t,Me as tt,pr as u,Cn as v,Xt as w,nn as x,J as y,bt as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./executable-search-paths-Do0aoA1z.mjs";import{i as n,n as r,t as i}from"./schema-BBnWVY6R.mjs";import{r as a}from"./provider-binding-DV5J36pp.mjs";import{t as o}from"./agent-observation-CwtWTGGR.mjs";import{n as s,r as c,t as l}from"./provider-observation-registry-DRRQKxkl.mjs";import{constants as u}from"node:fs";import{isAbsolute as d,join as f,resolve as p}from"node:path";import m from"node:process";import{access as h,readFile as g,realpath as _}from"node:fs/promises";import{homedir as v}from"node:os";const y=[{binaryName:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,name:`amp`,packages:{npm:`@sourcegraph/amp`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`amp`,`version`]}},{binaryName:`agy`,displayName:`Antigravity CLI`,homepage:`https://antigravity.google/product/antigravity-cli`,lookupAliases:[`agy`,`antigravity-cli`],name:`antigravity`,platforms:{linux:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://antigravity.google/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`agy`,`--version`]}},{binaryName:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,name:`auggie`,packages:{npm:`@augmentcode/auggie`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`auggie`,`--version`]}},{binaryName:`autohand`,displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,lookupAliases:[`autohand-cli`],name:`autohand`,packages:{npm:`autohand-cli`},platforms:{linux:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`autohand`,`--version`]}},{binaryName:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,name:`claude`,packages:{npm:`@anthropic-ai/claude-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://claude.ai/install.ps1 | iex`,type:`script`},{packageName:`Anthropic.ClaudeCode`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`codebuddy`,displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,lookupAliases:[`codebuddy-code`],name:`codebuddy`,packages:{npm:`@tencent-ai/codebuddy-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`codebuddy`,`--version`]}},{binaryName:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,name:`codewhale`,packages:{npm:`codewhale`,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`,platforms:{linux:[{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],macos:[{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],windows:[{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,type:`script`}]},versionProbe:{command:[`junie`,`--version`]}},{binaryName:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,name:`kilo`,packages:{npm:`@kilocode/cli`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`kimi`,displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-code/`,lookupAliases:[`kimi-code`,`kimi-cli`],name:`kimi`,packages:{npm:`@moonshot-ai/kimi-code`},platforms:{linux:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`kimi`,`--version`]}},{binaryName:`kiro-cli`,displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,lookupAliases:[`kiro-cli`],name:`kiro`,platforms:{linux:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],windows:[{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,type:`script`}]},versionProbe:{command:[`kiro-cli`,`--version`]}},{binaryName:`mimo`,displayName:`MiMoCode`,homepage:`https://github.com/XiaomiMiMo/MiMo-Code`,lookupAliases:[`mimocode`,`mimo-code`],name:`mimo`,packages:{npm:`@mimo-ai/cli`},platforms:{linux:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`mimo`,`--version`]}},{binaryName:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,name:`omp`,packages:{npm:`@oh-my-pi/pi-coding-agent`},platforms:{linux:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],macos:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],windows:[{type:`bun`},{command:`irm https://omp.sh/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`omp`,`--version`]}},{binaryName:`openclaw`,displayName:`OpenClaw`,homepage:`https://github.com/openclaw/openclaw`,name:`openclaw`,packages:{npm:`openclaw`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],windows:[{type:`bun`},{type:`npm`},{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`openclaw`,`--version`]}},{binaryName:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,name:`opencode`,packages:{npm:`opencode-ai`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,name:`openhands`,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 b(){return y}function x(e){let t=y.find(t=>t.name===e||t.lookupAliases?.includes(e));if(t)return t;let n=S(e);return y.find(e=>S(e.displayName)===n)}function S(e){return e.trim().toLowerCase()}function C(e){return e===void 0?f(m.env.HOME||m.env.USERPROFILE||v(),`.quantex`):d(e)?e:p(e)}function w(e={}){let t=e.providerRegistry??l();return{async inspectAgent(e,n,r){let i=x(e);if(i)return E(i,n,t,r?.observationBinding)},async listAgents(e){return z(e.signal),b()}}}async function T(e){let t=f(e,`state.json`),a;try{a=await g(t,`utf8`)}catch(e){if(R(e))return r();throw e}let o;try{o=JSON.parse(a)}catch(e){throw new i(`state.json contains invalid JSON: ${V(e)}`)}return n(o).document}async function E(e,t,n,r){let[i,s]=await Promise.all([T(t.configDir),M(e,t.configDir,t.signal)]),c={registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs},l=await o(e,{clock:()=>new Date().toISOString(),inspectExecutable:()=>D(e,c),...r?{observationBinding:r}:{},platform:F(),preferredCatalogBinding:s[0]?a(e,s[0]):void 0,providerRegistry:n,readInstalledState:async e=>i.installedAgents[e],readReceipt:async e=>i.lifecycleReceipts[e],resolveExecutablePath:e=>j(e,t.signal),signal:t.signal,timeoutMs:t.timeoutMs,observeProvider:async e=>{let t=n.get(e.providerId);return t?t.observe({context:c,target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}}),u=await j(l.pathExecutable.path,t.signal);return{agent:e,...l,methods:s,...u?{resolvedBinaryPath:u}:{}}}async function D(e,t){let n=await O(e.binaryName,t);if(!n)return{present:!1};let r=await j(n,t.signal)??n,i=await A(e,r,t);return{path:r,present:!0,...i?{version:i}:{}}}async function O(e,t){try{let n=await c([m.platform===`win32`?`where`:`which`,e],t);if(n.exitCode===0){let e=n.stdout.trim().split(/\r?\n/u)[0];if(e)return e}}catch(e){if(e instanceof s)throw e}return k(e)}async function k(n){let r={env:m.env,homeDir:v(),platform:m.platform},i=t(n,r);for(let t of e(r))for(let e of i){let n=f(t,e);try{return await h(n,u.X_OK),n}catch{}}}async function A(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 c(i,n);return t.exitCode===0?P(t.stdout,e.versionProbe?.parser)??P(t.stderr,e.versionProbe?.parser):void 0}catch(e){if(e instanceof s)throw e;return}}async function j(e,t){if(e){z(t);try{let n=await _(e);return z(t),n}catch{if(t.aborted)throw new s(B(t));return e}}}async function M(e,t,n){let r=e.platforms[F()]??[],i=await N(t,n);return[...r.filter(e=>e.type===i),...r.filter(e=>e.type!==i)]}async function N(e,t){z(t);try{let n=await g(f(e,`config.json`),`utf8`);z(t);let r=JSON.parse(n);if(L(r)&&I(r.defaultPackageManager))return r.defaultPackageManager}catch(e){if(t.aborted)throw new s(B(t));if(e instanceof s)throw e}return`bun`}function P(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 F(){return m.platform===`win32`?`windows`:m.platform===`darwin`?`macos`:`linux`}function I(e){return e===`bun`||e===`mise`||e===`npm`||e===`uv`}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return!e||typeof e!=`object`||!(`code`in e)?!1:e.code===`ENOENT`||e.code===`ENOTDIR`}function z(e){if(e.aborted)throw new s(B(e))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function V(e){return e instanceof Error&&e.message?e.message:String(e)}export{C as n,w as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as e}from"./agents-
|
|
1
|
+
import{I as e}from"./agents-DaVS3Aew.mjs";async function t(t,n){let r=(n.registry??e).get(t.providerId);return r?r.observe({context:{signal:n.signal,timeoutMs:n.timeoutMs},target:t.target}):{kind:`unavailable`,reason:`Provider ${t.providerId} is not registered.`,retryable:!1}}export{t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,t}from"./executable-search-paths-Do0aoA1z.mjs";import n from"cross-spawn";import{spawn as r}from"node:child_process";import{join as i}from"node:path";import a from"node:process";import{access as o,readFile as s}from"node:fs/promises";import{homedir as c}from"node:os";import{once as l}from"node:events";var u=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function d(e,t){if(t.signal.aborted)throw new u(_(t.signal));let[r,...i]=e;if(!r)throw Error(`A read-only command requires a non-empty argv array.`);let o=n(r,i,{detached:a.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),s=[],c=[];o.stdout?.on(`data`,e=>s.push(Buffer.from(e))),o.stderr?.on(`data`,e=>c.push(Buffer.from(e)));let l=!1,d,m,h=()=>d??=f(o),g=t.registerCleanup?.({cleanup:h,force:()=>m??=p(o)}),v,y=new Promise((e,n)=>{v=()=>{l||(l=!0,h().then(()=>n(new u(_(t.signal)))))},t.signal.addEventListener(`abort`,v,{once:!0}),t.signal.aborted&&v()}),b=new Promise((e,t)=>{o.once(`error`,t),o.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>l?y:e);try{return{exitCode:await Promise.race([b,y]),stderr:Buffer.concat(c).toString(`utf8`),stdout:Buffer.concat(s).toString(`utf8`)}}finally{t.signal.removeEventListener(`abort`,v),g?.()}}async function f(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGTERM`),!await g(e,100)&&(m(e,`SIGKILL`),await g(e,250))}async function p(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGKILL`),await g(e,250)}function m(e,t){if(a.platform!==`win32`&&e.pid!==void 0)try{a.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function h(e,t=r,n=100){let i=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o=l(i,`close`).then(()=>!0,()=>!1),s=new Promise(e=>{a=setTimeout(()=>e(!1),n)}),c=await Promise.race([o,s]);if(a&&clearTimeout(a),c)return!0;try{i.kill(`SIGKILL`)}catch{}return!1}async function g(e,t){if(e.exitCode!==null||e.signalCode!==null)return!0;let n;try{return await Promise.race([new Promise(t=>e.once(`close`,()=>t(!0))),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}function _(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const v={access:e=>o(e),env:a.env,homeDir:c,platform:a.platform,readFile:e=>s(e,`utf8`),runCommand:d};function y(e=v){return b([x(`bun`,`bun`,e,(t,n)=>T(t.id,n,e)),x(`npm`,`npm`,e,(t,n)=>D(t.id,n,e)),x(`brew`,`brew`,e,(t,n)=>O(t,n,e)),x(`cargo`,`cargo`,e,(t,n)=>k(t.id,n,e)),x(`deno`,`deno`,e,(t,n)=>A(t,n,e)),x(`mise`,`mise`,e,(t,n)=>j(t.id,n,e)),x(`pip`,`pip`,e,(t,n)=>M(t.id,n,e)),x(`uv`,`uv`,e,(t,n)=>N(t.id,n,e)),x(`winget`,`winget`,e,(t,n)=>
|
|
2
|
-
`).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:await E(e,n,`absent`)}async function E(e,t,n){try{let n=t.env.BUN_INSTALL_GLOBAL_DIR??i(t.homeDir(),`.bun`,`install`,`global`);return{presence:
|
|
3
|
-
`)){let e=t.trim().split(/\s+/u).at(-1);if(e?.startsWith(n)&&e.length>n.length)return e.slice(n.length)}}function
|
|
1
|
+
import{n as e,t}from"./executable-search-paths-Do0aoA1z.mjs";import n from"cross-spawn";import{spawn as r}from"node:child_process";import{join as i}from"node:path";import a from"node:process";import{access as o,readFile as s}from"node:fs/promises";import{homedir as c}from"node:os";import{once as l}from"node:events";var u=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function d(e,t){if(t.signal.aborted)throw new u(_(t.signal));let[r,...i]=e;if(!r)throw Error(`A read-only command requires a non-empty argv array.`);let o=n(r,i,{detached:a.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),s=[],c=[];o.stdout?.on(`data`,e=>s.push(Buffer.from(e))),o.stderr?.on(`data`,e=>c.push(Buffer.from(e)));let l=!1,d,m,h=()=>d??=f(o),g=t.registerCleanup?.({cleanup:h,force:()=>m??=p(o)}),v,y=new Promise((e,n)=>{v=()=>{l||(l=!0,h().then(()=>n(new u(_(t.signal)))))},t.signal.addEventListener(`abort`,v,{once:!0}),t.signal.aborted&&v()}),b=new Promise((e,t)=>{o.once(`error`,t),o.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>l?y:e);try{return{exitCode:await Promise.race([b,y]),stderr:Buffer.concat(c).toString(`utf8`),stdout:Buffer.concat(s).toString(`utf8`)}}finally{t.signal.removeEventListener(`abort`,v),g?.()}}async function f(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGTERM`),!await g(e,100)&&(m(e,`SIGKILL`),await g(e,250))}async function p(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGKILL`),await g(e,250)}function m(e,t){if(a.platform!==`win32`&&e.pid!==void 0)try{a.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function h(e,t=r,n=100){let i=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o=l(i,`close`).then(()=>!0,()=>!1),s=new Promise(e=>{a=setTimeout(()=>e(!1),n)}),c=await Promise.race([o,s]);if(a&&clearTimeout(a),c)return!0;try{i.kill(`SIGKILL`)}catch{}return!1}async function g(e,t){if(e.exitCode!==null||e.signalCode!==null)return!0;let n;try{return await Promise.race([new Promise(t=>e.once(`close`,()=>t(!0))),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}function _(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const v={access:e=>o(e),env:a.env,homeDir:c,platform:a.platform,readFile:e=>s(e,`utf8`),runCommand:d};function y(e=v){return b([x(`bun`,`bun`,e,(t,n)=>T(t.id,n,e)),x(`npm`,`npm`,e,(t,n)=>D(t.id,n,e)),x(`brew`,`brew`,e,(t,n)=>O(t,n,e)),x(`cargo`,`cargo`,e,(t,n)=>k(t.id,n,e)),x(`deno`,`deno`,e,(t,n)=>A(t,n,e)),x(`mise`,`mise`,e,(t,n)=>j(t.id,n,e)),x(`pip`,`pip`,e,(t,n)=>M(t.id,n,e)),x(`uv`,`uv`,e,(t,n)=>N(t.id,n,e)),x(`winget`,`winget`,e,(t,n)=>F(t.id,n,e)),S(`script`,e),S(`binary`,e)])}function b(e){let t=Object.freeze([...e]),n=new Map(t.map(e=>[e.id,e]));if(n.size!==t.length)throw Error(`Duplicate Core provider observation adapter id.`);let r=Object.freeze([`availability`,`observe`]),i=Object.freeze([]);return Object.freeze({get:e=>n.get(e),getCapabilities:e=>n.has(e)?r:i,list:()=>t})}function x(e,t,n,r){return{availability:e=>w(t,e,n),id:e,async observe(t){let n=await r(t.target,t.context);return n.presence===`unknown`?{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} could not determine whether ${t.target.id} is installed`}:z({evidence:[{kind:`package`,value:n.presence===`absent`?`${e}:${t.target.id}:absent`:n.version?`${e}:${t.target.id}@${n.version}`:`${e}:${t.target.id}:present`}],kind:n.presence,target:t.target,...n.version?{version:n.version}:{}})}}}function S(e,t){return{availability:async e=>e.signal.aborted?B(e.signal):z({executable:t.platform===`win32`?`powershell.exe`:`sh`}),id:e,async observe(n){let r=n.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${n.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await I([t.platform===`win32`?`where`:`which`,r],n.context,t);if(!i)return{kind:`failed`,reason:`${e} executable probe failed for ${n.target.id}`,retryable:!0};let a=i.exitCode===0||await C(r,t);return z({evidence:[{kind:`executable`,value:r}],kind:a?`present`:`absent`,target:n.target})}}}async function C(n,r){let a={env:r.env,homeDir:r.homeDir(),platform:r.platform},o=t(n,a);for(let t of e(a))for(let e of o)try{return await r.access(i(t,e)),!0}catch{}return!1}async function w(e,t,n){try{return(await n.runCommand([e,`--version`],t)).exitCode===0?z({executable:e}):{kind:`unavailable`,reason:`${e} executable is unavailable`}}catch(t){if(t instanceof u)throw t;return{kind:`unavailable`,reason:`${e} executable is unavailable`}}}async function T(e,t,n){let r=await I([`bun`,`pm`,`-g`,`ls`],t,n);if(!r)return{presence:`unknown`};if(!r.stdout.trim()){if(r.stderr.includes(`No package.json was found for directory`))return{presence:`absent`};if(!r.stderr.includes(`Lockfile not found`))return{presence:`unknown`};try{let t=n.env.BUN_INSTALL_GLOBAL_DIR??i(n.homeDir(),`.bun`,`install`,`global`);return{presence:R(await n.readFile(i(t,`package.json`)),e)}}catch{return{presence:`unknown`}}}let a=L(r.stdout,e);return a?{presence:`present`,version:a}:r.stdout.split(`
|
|
2
|
+
`).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:await E(e,n,`absent`)}async function E(e,t,n){try{let n=t.env.BUN_INSTALL_GLOBAL_DIR??i(t.homeDir(),`.bun`,`install`,`global`);return{presence:R(await t.readFile(i(n,`package.json`)),e)}}catch{return{presence:n}}}async function D(e,t,n){let r=await I([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!H(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};let n=t.dependencies?.[e];return n?typeof n.version==`string`?{presence:`present`,version:n.version}:{presence:`present`}:{presence:`absent`}}catch{return{presence:`unknown`}}}async function O(e,t,n){let r=await I([`brew`,`list`,e.kind===`cask`?`--cask`:`--formula`,`--versions`,e.id],t,n);if(!r)return{presence:`unknown`};let i=r.stdout.trim().split(/\s+/u).at(-1);if(r.exitCode===0)return i&&/^\d/u.test(i)?{presence:`present`,version:i}:{presence:`present`};let a=r.stderr.toLowerCase();return a.includes(`no such keg`)||a.includes(`is not installed`)?{presence:`absent`}:{presence:`unknown`}}async function k(e,t,n){let r=await I([`cargo`,`install`,`--list`],t,n);if(!r||r.exitCode!==0)return{presence:`unknown`};let i=e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),a=r.stdout.match(RegExp(`^${i}\\s+v([^:\\s]+):\\s*$`,`mu`))?.[1];return a?{presence:`present`,version:a}:{presence:`absent`}}async function A(e,t,n){if(t.signal.aborted)throw new u(W(t.signal));let r=e.binaryName?.trim()||e.id.trim().split(`/`).pop()?.replace(/@.*$/u,``);if(!r)return{presence:`unknown`};let a=n.env.DENO_INSTALL_ROOT?.trim()||i(n.homeDir(),`.deno`);try{if(await n.access(i(a,`bin`,r)),t.signal.aborted)throw new u(W(t.signal));return{presence:`present`}}catch(e){if(e instanceof u)throw e;return U(e)?{presence:`absent`}:{presence:`unknown`}}}async function j(e,t,n){let r=await I([`mise`,`ls`,`--installed`,`--json`,e],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!H(t))return{presence:`unknown`};let n=e.split(`:`).pop()?.split(`/`).pop(),i=Array.isArray(t[e])?e:n&&Array.isArray(t[n])?n:void 0,a=i?t[i]:void 0;if(!Array.isArray(a)||a.length===0)return{presence:`absent`};let o=a.find(e=>H(e)&&typeof e.version==`string`);return H(o)&&typeof o.version==`string`?{presence:`present`,version:o.version}:{presence:`present`}}catch{return{presence:`unknown`}}}async function M(e,t,n){for(let r of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]]){let i=await I([...r,`--version`],t,n);if(!i||i.exitCode!==0)continue;let a=await I([...r,`show`,e],t,n);if(!a)return{presence:`unknown`};if(a.exitCode===0){let e=a.stdout.split(/\r?\n/u).map(e=>/^Version:\s*(.+)\s*$/iu.exec(e.trim())?.[1]?.trim()).find(Boolean);return e?{presence:`present`,version:e}:{presence:`present`}}let o=a.stderr.toLowerCase();return o.includes(`package(s) not found`)||o.includes(`not found`)?{presence:`absent`}:{presence:`unknown`}}return{presence:`unknown`}}async function N(e,t,n){let r=await I([`uv`,`tool`,`list`],t,n);if(r&&P(r))return{presence:`absent`};if(!r?.stdout.trim())return{presence:`unknown`};let i=V(e),a=!1;for(let e of r.stdout.split(/\r?\n/u)){let t=/^(\S+)\s+v([^\s]+)/u.exec(e.trim());if(t&&(a=!0,V(t[1])===i))return{presence:`present`,version:t[2]}}return a?{presence:`absent`}:{presence:`unknown`}}function P(e){if(e.exitCode!==0)return!1;let t=`${e.stdout}\n${e.stderr}`.split(/\r?\n/u).map(e=>e.trim()).filter(Boolean);return t.length===1&&/^no tools installed\.?$/iu.test(t[0])}async function F(e,t,n){let r=await I([`winget`,`list`,`--id`,e,`-e`],t,n);if(!r)return{presence:`unknown`};if(r.exitCode===0){let t=e.toLowerCase();for(let e of r.stdout.split(/\r?\n/u)){let n=e.trim().split(/\s{2,}|\t+/u).map(e=>e.trim()).filter(Boolean),r=n.findIndex(e=>e.toLowerCase()===t);if(r>=0)return n[r+1]?{presence:`present`,version:n[r+1]}:{presence:`present`}}return r.stdout.toLowerCase().includes(t)?{presence:`present`}:{presence:`unknown`}}let i=`${r.stdout}\n${r.stderr}`.toLowerCase();return[`no installed package found`,`no package found matching input criteria`,`no installed package matched`].some(e=>i.includes(e))?{presence:`absent`}:{presence:`unknown`}}async function I(e,t,n){try{return await n.runCommand(e,t)}catch(e){if(e instanceof u)throw e;return}}function L(e,t){let n=`${t}@`;for(let t of e.split(`
|
|
3
|
+
`)){let e=t.trim().split(/\s+/u).at(-1);if(e?.startsWith(n)&&e.length>n.length)return e.slice(n.length)}}function R(e,t){try{let n=JSON.parse(e);if(!H(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(!H(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}catch{return`unknown`}}function z(e){return{kind:`success`,value:e}}function B(e){let t=W(e);return{kind:`cancelled`,...t?{reason:t}:{}}}function V(e){return e.toLowerCase().replaceAll(/[-_.]+/gu,`-`)}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function U(e){return e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function W(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}export{u as n,d as r,y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as e}from"./agents-
|
|
1
|
+
import{I as e}from"./agents-DaVS3Aew.mjs";const t=Object.freeze([`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`]);async function n(t){let n=t.registry??e;return Promise.all(n.list().map(async e=>({availability:await i(e.availability,t.context),capabilities:n.getCapabilities(e.id),id:e.id})))}function r(e,n){let r=new Map(e.map(e=>[e.id,e]));return Object.fromEntries(t.map(e=>{let t=r.get(e);if(!t)throw Error(`Provider snapshot is missing first-party adapter: ${e}`);return[e,n(t)]}))}async function i(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}export{r as n,n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as e}from"./agents-
|
|
1
|
+
import{I as e}from"./agents-DaVS3Aew.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 on disk`}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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t,t as n}from"./output-
|
|
1
|
+
import{i as e,n as t,t as n}from"./output-CgTs7pIh.mjs";import{a as r,o as i}from"./providers-YdECz092.mjs";import{i as a,n as o,t as s}from"./human-BL2-F6cA.mjs";import{t as c}from"./color-iQl4CJwm.mjs";import{n as l,r as u}from"./core-read-observations-DvEtQMVm.mjs";async function d(a){let o=await l(a);if(!o)return e(n({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),f);let{agent:s}=o,c=u(o);if(!c.inPath||!c.binaryPath){let t=c.methods.map(e=>({command:r(s,e),label:i(e),type:e.type})).filter(e=>e.command);return e(n({action:`resolve`,data:{agent:{binaryName:s.binaryName,displayName:s.displayName,name:s.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${s.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 ${s.name}`},message:`${s.displayName} is not installed.`},target:{kind:`agent`,name:s.name}}),f)}return e(t({action:`resolve`,data:{agent:{binaryName:s.binaryName,displayName:s.displayName,name:s.name},resolution:{binaryPath:c.binaryPath,installed:!0,installSource:c.installedState?.installType??`detected-in-path`,installedVersion:c.installedVersion,lifecycle:c.lifecycle,sourceLabel:c.sourceLabel,suggestedLaunchCommand:[c.binaryPath]}},target:{kind:`agent`,name:s.name}}),f)}function f(e){let t=s();if(e.error){for(let n of a(c.red(e.error.message),{width:t}))console.log(n);let n=e.data?.resolution.installGuidance;if(n){for(let e of a(c.dim(`Try: ${n.suggestedEnsureCommand}`),{continuationIndent:` `,width:t}))console.log(e);for(let e of n.installMethods)for(let n of a(c.dim(`[${e.label}] ${e.command}`),{continuationIndent:` `,indent:`Install: `,width:t}))console.log(n)}return}if(!e.data)return;console.log(c.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Binary`,value:e.data.agent.binaryName},{label:`Path`,value:e.data.resolution.binaryPath},{label:`Source`,value:e.data.resolution.sourceLabel},{label:`Lifecycle`,value:e.data.resolution.lifecycle},{label:`Install type`,value:e.data.resolution.installSource},...e.data.resolution.installedVersion?[{label:`Version`,value:e.data.resolution.installedVersion}]:[],{label:`Launch`,value:e.data.resolution.suggestedLaunchCommand.join(` `)}];for(let e of o(n,{labelStyle:c.bold,width:t}))console.log(e);console.log()}export{d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./resolve-CM2JyH_y.mjs";export{e as resolveCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./schema-DlZF54O1.mjs";export{e as schemaCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{G as e,i as t,n,t as r}from"./output-
|
|
1
|
+
import{G as e,i as t,n,t as r}from"./output-CgTs7pIh.mjs";import{i,r as a,t as o}from"./human-BL2-F6cA.mjs";import{t as s}from"./color-iQl4CJwm.mjs";async function c(e){let i=u(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(r({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),l):t(n({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),l)}function l(e){if(e.error){console.log(s.red(e.error.message));return}if(!e.data)return;let t=o();console.log(s.bold(`
|
|
2
2
|
Quantex Schemas
|
|
3
3
|
`));for(let n of a(e.data.commands,[{header:`Command`,maxWidth:24,minWidth:8,value:e=>s.cyan(e.name)},{header:`Description`,minWidth:16,value:e=>e.description,wrap:!0}],{headerStyle:s.bold,width:t}))console.log(n);console.log();for(let e of i(s.dim(`Document: qtx schema <command> --json`),{indent:` `,width:t}))console.log(e);console.log()}function u(){return e().map(e=>e.schema)}export{c as n,u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./file-store-
|
|
1
|
+
import{a as e}from"./file-store-XNyirRRY.mjs";import{n as t}from"./detect-BUVMt8jZ.mjs";import{n}from"./cli-context-DI43ouBg.mjs";import{F as r,O as i,P as a,R as o,i as s,k as c,n as l,t as u,z as d}from"./output-CgTs7pIh.mjs";import{p as f}from"./providers-YdECz092.mjs";import{t as p}from"./color-iQl4CJwm.mjs";import{g as m,n as h,p as g}from"./agents-BsZ6Btoz.mjs";import{a as _,i as v}from"./provider-binding-DV5J36pp.mjs";import{t as y}from"./provider-evidence-BbMX487J.mjs";import{t as b}from"./lifecycle-errors-BtlAp_sz.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-DLbKXqDm.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[e,u]=await Promise.all([i(y.name),c(y.name)]);if(!e&&!u)return s(N(p,y),P);let m=await t(y.binaryName),h=e?_(y,e):void 0,b=u?v(u):void 0;if(e&&!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);if(S.kind!==`success`)return s(A(y,`indeterminate-source`,`Cannot verify provider state for ${y.displayName}.`),P);if(S.value.kind===`absent`)return 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):(e&&await a(y.name),u&&await r(y.name),s(M(y),P));if(!e)return s(A(y,`indeterminate-source`,`Cannot safely reconstruct ${y.displayName}'s uninstall source.`),P);if(C())return s(j(y,`would uninstall ${y.displayName}`),P);if(!f(e.installType))return(await g(y,e)).kind===`success`?(await r(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);if(u||await d({...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,e)).kind===`success`){if(!await E(async()=>{let e=await k(x);return e.kind!==`success`||e.value.kind!==`absent`?!1:!await t(y.binaryName)},{isCancelled:()=>!!n().cancelled})){let t=await k(x);return t.kind===`success`&&t.value.kind===`absent`?(await r(y.name),s(A(y,`conflicting-source`,`${y.displayName}'s managed package was removed, but another copy remains on PATH.`),P)):(await o(e),s(A(y,`verification-failed`,`${y.displayName} is still present after provider removal.`),P))}return await r(y.name),s(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)}return s(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P)})}catch(t){if(e(t))return s(u({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!1},...b(t,{kind:`agent`,name:y.name})}),P);throw t}}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 t=n(),r=new AbortController;return t.cancelled&&r.abort(`cli-cancelled`),y(e,{signal:r.signal,timeoutMs:t.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-BUVMt8jZ.mjs";import{l as t}from"./providers-YdECz092.mjs";import{n}from"./agents-BsZ6Btoz.mjs";import{n as r}from"./lifecycle-observations-CSHMWKz8.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./messages-CoROK9f4.mjs";import{g as r}from"./npm-CJQfKklg.mjs";import{a as i,d as a}from"./file-store-BdnwPxOg.mjs";import{I as o,r as s}from"./agents-D9f3aOA9.mjs";import{n as c}from"./cli-context-DI43ouBg.mjs";import{M as l,i as u,n as d,r as f,t as p}from"./output-CStNLacz.mjs";import{r as m}from"./providers-DvgNZrfR.mjs";import{t as h}from"./cli-operation-context-BFEu635L.mjs";import{t as g}from"./color-iQl4CJwm.mjs";import{g as _,n as v}from"./agents-Dx9g8ynW.mjs";import{t as y}from"./update-planner-Cr9XVW1l.mjs";import{t as b}from"./lifecycle-observations-BuscaBUl.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-DLbKXqDm.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-6lSEToTF.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,c,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??=a().then(t=>{let n=b(e.context);return{classifyMutationLockError:e=>i(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,listRegisteredAgentNames:()=>s().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:o,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:()=>c,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 c=await m(async()=>k(e,await g())),c})(),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,i=!1,s,c,u,d,f=()=>{!r||i||n>0||(i=!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??=a().then(e=>{let n=b(t.context);return{clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:o,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.`)):(c??=p(async()=>A(e,await m())),c);return{dispose(){r||(r=!0,f())},getOutcome:()=>s,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 s=e.kind===`planned`?await p(async()=>E(e.planned,await m())):e,s})(),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(!i(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 a=B(e,n);return X([],a),n.kind===`cancelled`?u(p({action:`update`,data:{results:[a],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Z):a.status===`failed`||a.status===`locked`?u(p({action:`update`,data:{results:[a],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:[a],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 c().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
|
+
import{n as e,r as t,t as n}from"./messages-CoROK9f4.mjs";import{g as r}from"./npm-DUDR-Khz.mjs";import{a as i,d as a}from"./file-store-XNyirRRY.mjs";import{I as o,r as s}from"./agents-DaVS3Aew.mjs";import{n as c}from"./cli-context-DI43ouBg.mjs";import{M as l,i as u,n as d,r as f,t as p}from"./output-CgTs7pIh.mjs";import{r as m}from"./providers-YdECz092.mjs";import{t as h}from"./cli-operation-context-BS5a069W.mjs";import{t as g}from"./color-iQl4CJwm.mjs";import{g as _,n as v}from"./agents-BsZ6Btoz.mjs";import{t as y}from"./update-planner-Cr9XVW1l.mjs";import{t as b}from"./lifecycle-observations-CSHMWKz8.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-DLbKXqDm.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-ClcUaPip.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,c,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??=a().then(t=>{let n=b(e.context);return{classifyMutationLockError:e=>i(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,listRegisteredAgentNames:()=>s().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:o,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:()=>c,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 c=await m(async()=>k(e,await g())),c})(),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,i=!1,s,c,u,d,f=()=>{!r||i||n>0||(i=!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??=a().then(e=>{let n=b(t.context);return{clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:o,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.`)):(c??=p(async()=>A(e,await m())),c);return{dispose(){r||(r=!0,f())},getOutcome:()=>s,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 s=e.kind===`planned`?await p(async()=>E(e.planned,await m())):e,s})(),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(!i(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 a=B(e,n);return X([],a),n.kind===`cancelled`?u(p({action:`update`,data:{results:[a],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Z):a.status===`failed`||a.status===`locked`?u(p({action:`update`,data:{results:[a],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:[a],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 c().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{c as e,o as t,t as n}from"./child-process-
|
|
1
|
+
import{c as e,o as t,t as n}from"./child-process-DzIdysOm.mjs";import{s as r}from"./schema-BBnWVY6R.mjs";import{i,n as a}from"./cli-context-DI43ouBg.mjs";import{E as o,c as s,i as c,n as l,t as u,u as d,v as f,x as p,y as m}from"./output-CgTs7pIh.mjs";import{t as h}from"./color-iQl4CJwm.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-DLbKXqDm.mjs";import{n as b,t as x}from"./version-cache-jjIoeyWQ.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,metadataCacheMode:t.options.cacheMode===`no-cache`?`no-cache`:`refresh`,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,o={plan:e=>m({context:e.context,metadataCache:e.metadataCache,metadataCacheMode:e.metadataCacheMode,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>s(e,t)};return{dispose(){r||(r=!0,n())},run:e=>k(e,t,o)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:p(),network:T(),persistence:o(),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=f(a),s=L(o),p=z(o);if(a.status===`up-to-date`)return c(l({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:[...s,...p?[p]:[]]}),I);if(e.check||t)return a.status===`update-available`?c(l({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:[...s,...p?[p]:[],...t?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),I):c(u({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:[...s,...p?[p]:[]]}),I);if(a.status===`manual-required`){let e=d(o);return c(u({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:[...s,...p?[p]:[]]}),I)}if(i.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let m=i.result;if(m.success)return c(l({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:[...s,...p?[p]:[]]}),I);let h=d(o,m);return c(u({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:[...s,...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};
|