quantex-cli 1.13.1 → 1.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/{agent-inspection-D8YF0G7l.mjs → agent-inspection-BGC8hn92.mjs} +1 -1
- package/dist/agents-BPG1DaPt.mjs +1 -0
- package/dist/{agents-1xVrcX2T.mjs → agents-M0IK-EAw.mjs} +1 -1
- package/dist/capabilities-DdzOucOL.mjs +1 -0
- package/dist/{capabilities-B9akfoAg.mjs → capabilities-w7Fbc-bE.mjs} +1 -1
- package/dist/{cli-read-projection-DBrxiinB.mjs → cli-read-projection-3NGMRhuS.mjs} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/{commands-DdO5wqaC.mjs → commands-D3-X-CL4.mjs} +1 -1
- package/dist/commands-DSjvy4Bk.mjs +1 -0
- package/dist/{config-Dp5vWO4u.mjs → config-DiKH7R9Y.mjs} +1 -1
- package/dist/{core-installation-cli-BU30R3W7.mjs → core-installation-cli-BAkFQTw8.mjs} +1 -1
- package/dist/{detect-Dou6fit1.mjs → detect-CbD8V1su.mjs} +1 -1
- package/dist/{doctor-2AK-8DXd.mjs → doctor-CmTohDAe.mjs} +1 -1
- package/dist/{ensure-CHQo_W-B.mjs → ensure-k2txyX68.mjs} +1 -1
- package/dist/ensure-tfMV3Ohr.mjs +1 -0
- package/dist/{executable-search-paths-Do0aoA1z.mjs → executable-search-paths-CfJ3prUX.mjs} +1 -1
- package/dist/file-store-C7Ak4t_P.mjs +2 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-1VdVWaZU.mjs → info-MZu-jL3s.mjs} +1 -1
- package/dist/inspect-Bwwy2d7a.mjs +1 -0
- package/dist/{inspect-Cmh8P2cH.mjs → inspect-evUWakYc.mjs} +1 -1
- package/dist/{install-CllMI5Vl.mjs → install-D6HUqnaB.mjs} +1 -1
- package/dist/{installation-compatibility-vSytV42c.mjs → installation-compatibility--84wtWNO.mjs} +1 -1
- package/dist/installation-compatibility-D4ZJoPCT.mjs +1 -0
- package/dist/{installation-production-DxkcDNwa.mjs → installation-production-CQgjlxZO.mjs} +1 -1
- package/dist/{installation-provider-registry-CpJjzAO7.mjs → installation-provider-registry-WhPZzmCo.mjs} +1 -1
- package/dist/lifecycle-observations-xZ--ogpK.mjs +1 -0
- package/dist/{lifecycle-policy-CPJ-uQku.mjs → lifecycle-policy-BMJz8c77.mjs} +1 -1
- package/dist/{list-CmbDbwzJ.mjs → list-C0ELcSkZ.mjs} +1 -1
- package/dist/{output-C0TF6WTW.mjs → output-PUVIMxAA.mjs} +3 -3
- package/dist/{package-manager-BdBKbZci.mjs → package-manager-NlPhhpQl.mjs} +1 -1
- package/dist/production-observation-9e2raBHv.mjs +1 -0
- package/dist/{provider-evidence-C_k-kzoO.mjs → provider-evidence-D9Y79LD5.mjs} +1 -1
- package/dist/provider-observation-registry-KrH9TMtQ.mjs +3 -0
- package/dist/{provider-observations-2EeSQRbX.mjs → provider-observations-CIGwqiZL.mjs} +1 -1
- package/dist/{providers-BrKmtcci.mjs → providers-GfRcOIdh.mjs} +1 -1
- package/dist/resolve-DLdjUMyk.mjs +1 -0
- package/dist/{resolve-BVga-Ro4.mjs → resolve-S-TdJhLk.mjs} +1 -1
- package/dist/{schema-ShDMW_sj.mjs → schema-B4yk5NPn.mjs} +1 -1
- package/dist/schema-urQvQbNJ.mjs +1 -0
- package/dist/{uninstall-SDNnTH6W.mjs → uninstall-C04YMfwl.mjs} +1 -1
- package/dist/unmanaged-install-compatibility-D3hnfPRi.mjs +1 -0
- package/dist/update-CMjaldgI.mjs +1 -0
- package/dist/{upgrade-CykBo6ap.mjs → upgrade-BrOGjSft.mjs} +1 -1
- package/package.json +1 -1
- package/dist/agents-BdSn7xtP.mjs +0 -1
- package/dist/capabilities-CNRjwfBz.mjs +0 -1
- package/dist/commands-BdWPLakC.mjs +0 -1
- package/dist/ensure-CgQQCiv-.mjs +0 -1
- package/dist/file-store-oHCTTnLn.mjs +0 -2
- package/dist/inspect-DvcoLIJ6.mjs +0 -1
- package/dist/installation-compatibility-X6JPRI5_.mjs +0 -1
- package/dist/lifecycle-observations-D78ZkqEX.mjs +0 -1
- package/dist/production-observation-v7S1oqsN.mjs +0 -1
- package/dist/provider-observation-registry-CgFXbZHd.mjs +0 -3
- package/dist/resolve-BvxcLaLm.mjs +0 -1
- package/dist/schema-Dg3sXQ1u.mjs +0 -1
- package/dist/unmanaged-install-compatibility-gE_Y2JWk.mjs +0 -1
- package/dist/update-B966hXRX.mjs +0 -1
- /package/dist/{lifecycle-errors-Elpn7QSu.mjs → lifecycle-errors-D9MEtJ8Y.mjs} +0 -0
- /package/dist/{version-cache-BPRXYft0.mjs → version-cache-BbKTS491.mjs} +0 -0
package/README.md
CHANGED
|
@@ -60,9 +60,9 @@ if (preview.ok && preview.value.mode === 'preview') {
|
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
Core does not prompt, print, call `process.exit`, or choose CLI exit codes; it returns typed results to its caller. `install` and `ensure` default to apply mode, expose an explicit side-effect-free preview mode, preserve PATH-only external agents, and return typed phase/side-effect failures. The `qtx` / `quantex` CLI remains responsible for prompts, human and JSON/NDJSON presentation, exit-code policy, command-line execution
|
|
63
|
+
Core does not prompt, print, call `process.exit`, or choose CLI exit codes; it returns typed results to its caller. `install` and `ensure` default to apply mode, expose an explicit side-effect-free preview mode, preserve PATH-only external agents, and return typed phase/side-effect failures. The `qtx` / `quantex` CLI remains responsible for prompts, human and JSON/NDJSON presentation, exit-code policy, and command-line execution. The published SDK still does not expose `update`, `uninstall`, `run`, `doctor`, or `upgrade`; in 1.12 the CLI routes `install`, `ensure`, `update`, and `uninstall` through in-repo Core engines, observes `inspect`, `info`, `resolve`, and `list` through in-repo Core read ports, launches `exec` / shortcut through an in-repo Core execution engine (with authorized `--install` missing-agent mutation sharing the same Core install/ensure engine as CLI install/ensure), and diagnoses `doctor` through an in-repo Core diagnosis engine, and routes CLI `upgrade` / `qtx upgrade` plan, check, and apply through an in-repo Core self-upgrade engine, while keeping those unpublished SDK methods absent.
|
|
64
64
|
|
|
65
|
-
The compatibility transition continues through 1.12: 1.2 introduced read-only Core, 1.3 added gated mutation families, 1.4 made Core the CLI apply default for `install` and `ensure`, 1.12 moves CLI `update` and `uninstall` onto the same in-repo Core engines, keeps CLI `inspect`, `info`, `resolve`, and `list` on Core read observation, launches CLI `exec` / shortcut through Core execution with `--install` sharing Core install/ensure, and diagnoses CLI `doctor` through Core without expanding the published SDK. CLI `install` and `ensure` are Core-only for apply: `--dry-run` uses Core preview while preserving the frozen dry-run plan and making no lifecycle side effect, and the former `QUANTEX_INSTALLATION_ENGINE=legacy` whole-invocation apply escape is retired. The persisted state schema remains version 2 throughout 1.x. Engine selection happens before an invocation, and a mutating call never falls back after side effects begin. Removing other maintained v1 surfaces still requires a separately approved later-major proposal.
|
|
65
|
+
The compatibility transition continues through 1.12: 1.2 introduced read-only Core, 1.3 added gated mutation families, 1.4 made Core the CLI apply default for `install` and `ensure`, 1.12 moves CLI `update` and `uninstall` onto the same in-repo Core engines, keeps CLI `inspect`, `info`, `resolve`, and `list` on Core read observation, launches CLI `exec` / shortcut through Core execution with `--install` sharing Core install/ensure, and diagnoses CLI `doctor` through Core without expanding the published SDK. A later 1.x knife routes CLI `upgrade` through an in-repo Core self-upgrade engine without publishing SDK `upgrade`. CLI `install` and `ensure` are Core-only for apply: `--dry-run` uses Core preview while preserving the frozen dry-run plan and making no lifecycle side effect, and the former `QUANTEX_INSTALLATION_ENGINE=legacy` whole-invocation apply escape is retired. The persisted state schema remains version 2 throughout 1.x. Engine selection happens before an invocation, and a mutating call never falls back after side effects begin. Removing other maintained v1 surfaces still requires a separately approved later-major proposal.
|
|
66
66
|
|
|
67
67
|
## Agent Quick Start
|
|
68
68
|
|
package/README.zh-CN.md
CHANGED
|
@@ -60,9 +60,9 @@ if (preview.ok && preview.value.mode === 'preview') {
|
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
Core 不提示、不打印、不调用 `process.exit`,也不决定 CLI 退出码;它只向调用方返回类型化结果。`install` 与 `ensure` 默认执行 apply,也提供显式且无副作用的 preview;它们会保留 PATH-only external agent,并返回包含阶段与副作用状态的类型化失败。`qtx` / `quantex` CLI 仍负责提示、human 与 JSON/NDJSON
|
|
63
|
+
Core 不提示、不打印、不调用 `process.exit`,也不决定 CLI 退出码;它只向调用方返回类型化结果。`install` 与 `ensure` 默认执行 apply,也提供显式且无副作用的 preview;它们会保留 PATH-only external agent,并返回包含阶段与副作用状态的类型化失败。`qtx` / `quantex` CLI 仍负责提示、human 与 JSON/NDJSON 展示、退出码策略和命令行执行。公开发布的 SDK 仍不提供 `update`、`uninstall`、`run`、`doctor` 或 `upgrade`;在 1.12 中,CLI 将 `install`、`ensure`、`update` 与 `uninstall` 路由到仓内 Core 引擎,通过仓内 Core 只读观察路径承接 `inspect`、`info`、`resolve` 与 `list`,通过仓内 Core 执行引擎承接 `exec` / shortcut 启动(授权的 `--install` 缺失安装与 CLI install/ensure 共用同一套 Core install/ensure 引擎),并通过仓内 Core 诊断引擎承接 `doctor`,同时 CLI `upgrade` / `qtx upgrade` 的 plan、check 与 apply 走仓内 Core 自升级引擎,但不会把这些未发布方法加入公开 SDK。
|
|
64
64
|
|
|
65
|
-
兼容过渡延续到 1.12:1.2 引入只读 Core,1.3 新增经过 gate 的变更方法组,1.4 让 Core 成为 CLI `install` 与 `ensure` 的 apply 默认引擎,1.12 将 CLI `update` 与 `uninstall` 迁入同一套仓内 Core 引擎,让 CLI `inspect`、`info`、`resolve` 与 `list` 继续走 Core 只读观察,让 CLI `exec` / shortcut 走 Core 执行引擎且 `--install` 共用 Core install/ensure,并让 CLI `doctor` 走 Core 诊断且不扩展公开 SDK
|
|
65
|
+
兼容过渡延续到 1.12:1.2 引入只读 Core,1.3 新增经过 gate 的变更方法组,1.4 让 Core 成为 CLI `install` 与 `ensure` 的 apply 默认引擎,1.12 将 CLI `update` 与 `uninstall` 迁入同一套仓内 Core 引擎,让 CLI `inspect`、`info`、`resolve` 与 `list` 继续走 Core 只读观察,让 CLI `exec` / shortcut 走 Core 执行引擎且 `--install` 共用 Core install/ensure,并让 CLI `doctor` 走 Core 诊断且不扩展公开 SDK。后续 1.x 将 CLI `upgrade` 迁入仓内 Core 自升级引擎,同样不发布 SDK `upgrade`。CLI `install` 与 `ensure` 的 apply 路径已变为 Core-only:`--dry-run` 走 Core preview 并保持已冻结的 dry-run 计划契约且不会产生生命周期副作用,原先的 `QUANTEX_INSTALLATION_ENGINE=legacy` whole-invocation apply 逃生通道已退役。持久化 state schema 在整个 1.x 中保持为 version 2。引擎必须在单次调用前选定,变更操作一旦开始产生副作用就绝不会切换引擎重试。删除其他受维护的 v1 surface 仍须在后续 major 版本另行提出并批准提案。
|
|
66
66
|
|
|
67
67
|
## Agent 快速接入
|
|
68
68
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./child-process-DzIdysOm.mjs";import{R as t,n}from"./agents-
|
|
1
|
+
import{t as e}from"./child-process-DzIdysOm.mjs";import{R as t,n}from"./agents-M0IK-EAw.mjs";import{t as r}from"./schema-BBnWVY6R.mjs";import{Z as i,b as a}from"./output-PUVIMxAA.mjs";import{c as o,g as s,s as c,u as l}from"./providers-GfRcOIdh.mjs";import{t as u}from"./cli-operation-context-CzjG_eom.mjs";import{t as d}from"./invocation-DDozaggZ.mjs";import{n as f,t as p}from"./production-observation-9e2raBHv.mjs";import{join as m}from"node:path";function h(e,r=y()){let i=t=>v(e,r.configDir,t),a=async(e,i)=>{let a=n(e.agent.name)??e.agent,o=e.binding&&e.capabilities.length>0?t.getCapabilities(e.binding.providerId):e.capabilities;return{...e,agent:a,capabilities:o,latestVersion:await r.resolveLatestVersion(e.agent,e.installedState,e.methods,b(i)),methods:[...e.methods]}};return{observeRegisteredAgents(){return i(async e=>{let t=await r.core.listAgents({...e,configDir:r.configDir});return Promise.all(t.map(async t=>{let n=await r.core.inspectAgent(t.name,{...e,configDir:r.configDir});if(!n)throw Error(`Core did not resolve registered agent: ${t.name}`);return a(n,e)}))})},resolveAgentObservation(e){return i(async t=>{let n=await r.core.inspectAgent(e,{...t,configDir:r.configDir});return n?a(n,t):void 0})}}}function g(e,t){return h(t).resolveAgentObservation(e)}function _(e){return h(e).observeRegisteredAgents()}async function v(e,t,n){let r=e?void 0:u(),i=e??r?.context;if(!i)throw Error(`CLI read operation context is unavailable.`);try{let e=await d({signal:i.signal},e=>n({...e,timeoutMs:i.timeoutMs}));return e.kind===`failure`&&x(e.error,i.timeoutMs),e.value}catch(e){throw S(e,t)}finally{r?.dispose()}}function y(){return{configDir:f(),core:p({providerRegistry:t}),async resolveLatestVersion(e,t,n,r){let a=l(e,t,[...n]);return a?i(a,`latest`,{context:r}):void 0}}}function b(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function x(t,n){throw t.code===`cancelled`?new e({kind:`cancelled`,reason:typeof t.details?.reason==`string`?t.details.reason:void 0}):t.code===`timed-out`?new e({kind:`timed-out`,timeoutMs:typeof t.details?.timeoutMs==`number`?t.details.timeoutMs:n??0}):Error(t.message)}function S(t,n){return t instanceof a||t instanceof e?t:t instanceof r?new a(`Failed to read Quantex state file: ${t.message}`,{cause:t}):C(t,m(n,`state.json`))?new a(`Failed to read Quantex state file.`,{cause:t}):t}function C(e,t){return!e||typeof e!=`object`||!(`path`in e)?!1:String(e.path)===t}function w(e){let t=e.pathExecutable;return{agent:e.agent,methods:e.methods,installedState:e.installedState,inPath:t.present,installedVersion:t.present?t.version:void 0,latestVersion:e.latestVersion,binaryPath:t.present?t.path:void 0,resolvedBinaryPath:t.present?e.resolvedBinaryPath:void 0,sourceLabel:c(e.installedState),updateLabel:o(e.agent,e.installedState),lifecycle:e.installedState?s(e.installedState.installType):`unmanaged`}}export{_ as n,g as r,w as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./executable-search-paths-CfJ3prUX.mjs";import{c as t}from"./file-store-C7Ak4t_P.mjs";import{n,r}from"./agents-M0IK-EAw.mjs";import{Q as i,Z as a,et as o,x as s}from"./output-PUVIMxAA.mjs";import{c,g as l,s as u,u as d,y as f}from"./providers-GfRcOIdh.mjs";import{n as p,r as m}from"./package-manager-NlPhhpQl.mjs";async function h(n){let[r,a,o]=await Promise.all([m(n),s(n.name),t(e(n))]),d=o!==void 0,[f,p]=await Promise.all([d?_(n,a,o):Promise.resolve(void 0),v(n,a,r)]);return{agent:n,methods:r,installedState:a,inPath:d,installedVersion:f,latestVersion:p,binaryPath:o,resolvedBinaryPath:await i(o),sourceLabel:u(a),updateLabel:c(n,a),lifecycle:a?l(a.installType):`unmanaged`}}async function g(e){return Promise.all(e.map(h))}async function _(e,t,n){if(t&&f(t.installType)&&t.packageName){let e=await p(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return o(e.binaryName,e.versionProbe,void 0,n)}async function v(e,t,n){let r=d(e,t,n);if(r)return a(r)}function y(e){return n(e)}async function b(e){let t=y(e);if(t)return{agent:t,inspection:await h(t)}}async function x(){return g(r())}export{g as a,h as i,y as n,b as r,x as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./child-process-DzIdysOm.mjs";import{a as t,c as n,f as r,g as i,h as a,i as o,m as s,o as ee,p as te,r as ne,s as re,t as ie,u as ae}from"./npm-PO9Nwgt_.mjs";import{A as oe,B as se,C as ce,D as le,E as c,F as ue,H as de,I as fe,L as pe,M as me,N as he,O as ge,P as _e,R as ve,S as ye,T as be,U as xe,V as Se,_ as Ce,a as we,b as Te,c as Ee,d as De,f as Oe,g as ke,h as Ae,i as je,j as Me,k as Ne,l as Pe,m as Fe,n as Ie,o as Le,p as Re,r as ze,s as Be,t as Ve,u as He,v as Ue,w as We,x as Ge,y as Ke,z as qe}from"./winget-BA9H6Ve-.mjs";import{a as Je,c as Ye,d as Xe,i as Ze,l as Qe,n as $e,o as et,r as tt,s as nt,t as l,u as rt}from"./detect-Dou6fit1.mjs";import{r as it}from"./registry-vhJzh8dW.mjs";import{Z as u}from"./output-C0TF6WTW.mjs";import{t as at}from"./types-DAYz9yrG.mjs";import{toJSONSchema as ot,z as d}from"zod";function f(e){return e.kind===`cancelled`||e.kind===`timed-out`}function p(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function m(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:g(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:g(e.signal)}),e.signal.addEventListener(`abort`,r,{once:!0})}),a=[Promise.resolve().then(t).then(e=>({kind:`resolved`,value:e})).catch(e=>({kind:`rejected`,reason:st(e)})),i];e.timeoutMs!==void 0&&a.push(new Promise(t=>{n=setTimeout(()=>t({kind:`timed-out`,timeoutMs:e.timeoutMs}),e.timeoutMs)}));let o=await Promise.race(a);return n&&clearTimeout(n),e.signal.removeEventListener(`abort`,r),o}async function h(t,n){if(t.signal.aborted)return{kind:`cancelled`,reason:g(t.signal)};try{return{kind:`resolved`,value:await n()}}catch(t){return e(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t.timeoutMs}:{kind:`cancelled`,...t.reason?{reason:t.reason}:{}}:{kind:`rejected`,reason:st(t)}}}function g(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}function st(e){return e instanceof Error?e.message:String(e)}function _(e,t){let n=async n=>{let r=await v(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(f(r))return p(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[ft(e.id,`${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return x({evidence:[pt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await v(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&f(i)?p(i):x({evidence:[pt(e.id,n.target.id,`present`)],kind:`present`,target:n.target,...i?.kind===`resolved`&&i.value?{version:i.value}:{}})};return{availability:async n=>{let r=await v(n,t.contextualObservation,()=>t.isAvailable(n));return f(r)?p(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:x({executable:e.executable})},id:e.id,install:n=>y(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>y(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>y(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>lt(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?x({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):x({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function v(e,t,n){return t?h(e,n):m(e,n)}function ct(e,t,n){return t?h(e,n):m(e,n)}async function y(e,t,n,r,i,a){let o=await ct(t.context,i,()=>a(t.target,t.context));if(f(o))return p(o);let s=dt(e.id,r);return o.kind===`rejected`?b(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?x({evidence:s,target:t.target}):ut(o.value,e,t.target.id,n,r,s)}async function lt(e,t,n){let r=e.commands.updateMany(n.targets),i=await ct(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(f(i))return p(i);let a=dt(e.id,r);return i.kind===`rejected`?b(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?x(n.targets.map(e=>({evidence:a,target:e}))):ut(i.value,e,void 0,`update`,r,a)}function ut(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=b(t,n,r,i,a);return{...o,...e,command:e.command??i,evidence:e.evidence??a,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function b(e,t,n,r,i,a){return{command:r,evidence:i,kind:`failed`,reason:`${e.id} ${n} failed${t?` for ${t}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function dt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function ft(e,t){return{kind:`provider`,value:`${e}:${t}`}}function pt(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function x(e){return{kind:`success`,value:e}}function S(e){return e.kind===`cask`?`cask`:`package`}const mt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>ve(e.id,S(e),t),install:(e,t)=>qe(e.id,S(e),t),isAvailable:e=>tt(e),probePackagePresence:(e,t)=>se(e.id,S(e),t),uninstall:(e,t)=>Se(e.id,S(e),t),update:(e,t)=>xe(e.id,S(e),t),updateMany:(e,t)=>de(e.map(e=>({packageName:e.id,packageTargetKind:S(e)})),t)};function C(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function ht(e=mt){return _({commands:{install:e=>C(`install`,e),uninstall:e=>C(`uninstall`,e),update:e=>C(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>C(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const gt=ht();function _t(e,t){let n=k(`provider`,e.id),r=async n=>{let r=await w(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(f(r))return p(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[k(`provider`,`${e.id}:${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return A({evidence:[k(`package`,`${e.id}:${n.target.id}:absent`)],kind:`absent`,target:n.target});let i=await w(n.context,t.contextualPackageObservation,()=>t.getInstalledVersion(n.target.id,n.context));if(f(i))return p(i);let a=i.kind===`resolved`?i.value:void 0;return A({evidence:[k(`package`,a?`${e.id}:${n.target.id}@${a}`:`${e.id}:${n.target.id}:present`)],kind:`present`,target:n.target,...a?{version:a}:{}})};return{availability:async n=>{let r=await w(n,t.contextualPackageObservation,()=>t.isAvailable(n));return f(r)?p(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:A({executable:e.executable})},id:e.id,install:n=>{let r=O(n.options),i=e.commands.install(n.target,r);return E(e,n.context,n.target,i,t.contextualMutation,()=>t.install(n.target.id,n.options?.distTag,r.registry,n.context))},observe:r,resolveLatestVersion:async r=>{let i=O(r.options),a=await m(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return f(a)?p(a):a.kind===`rejected`||!a.value?{evidence:[n],kind:`indeterminate`,reason:`${e.id} could not resolve the ${i.distTag} version for ${r.target.id}`}:A({evidence:[n,k(`package`,`${e.id}:${r.target.id}@${i.distTag}=${a.value}`)],version:a.value})},uninstall:n=>{let r=e.commands.uninstall(n.target);return E(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context,n.target))},update:n=>{let r=O(n.options),i=e.commands.update(n.target,r);return E(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>vt(e,t,n),verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?A({evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):A({evidence:n.value.evidence??[],kind:`satisfied`}):n}}}function w(e,t,n){return t?h(e,n):m(e,n)}function T(e,t,n){return t?h(e,n):m(e,n)}async function vt(e,t,n){let r=O(n.options),i=e.commands.updateMany(n.targets,r),a=[k(`provider`,e.id),k(`command`,i.join(` `))],o=await T(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return f(o)?p(o):o.kind===`rejected`?D(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?A(n.targets.map(e=>({evidence:a,target:e}))):yt(o.value,e,i,a,`update-many`)}async function E(e,t,n,r,i,a){let o=await T(t,i,a);if(f(o))return p(o);let s=[k(`provider`,e.id),k(`command`,r.join(` `))];return o.kind===`rejected`?D(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?A({evidence:s,target:n}):yt(o.value,e,r,s,r[1]??`operation`,n.id)}function yt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=D(t,n,r,i,a);return{...o,...e,command:e.command??n,evidence:e.evidence??r,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function D(e,t,n,r,i,a){let o=r===`add`?`install`:r===`remove`?`uninstall`:r;return{command:t,evidence:n,kind:`failed`,reason:`${e.id} ${o} failed${i?` for ${i}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function O(e){return{distTag:e?.distTag??`latest`,distTagExplicit:e?.distTag!==void 0,registry:it(e?.registry),updateStrategy:e?.updateStrategy??`latest-major`}}function k(e,t){return{kind:e,value:t}}function A(e){return{kind:`success`,value:e}}const bt={install:(e,t)=>[`bun`,`add`,`-g`,...t.registry?[`--registry`,t.registry]:[],t.distTagExplicit?`${e.id}@${t.distTag}`:e.id],uninstall:e=>[`bun`,`remove`,`-g`,e.id],update:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...t.registry?[`--registry`,t.registry]:[],t.distTag===`latest`?e.id:`${e.id}@${t.distTag}`],updateMany:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...e.map(e=>e.id)]},xt={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>n(e,t),install:(e,t,n,r)=>ae(e,t,n,r),isAvailable:e=>Ze(e),probePackagePresence:(e,t)=>r(e,void 0,t),resolveLatestVersion:(e,t,n)=>u(e,t,{registry:n}),uninstall:(e,t,n)=>te(e,t,n?.binaryName),update:(e,t,n,r,i)=>a(e,t,n,r,i),updateMany:(e,t,n)=>s(e,t,n)};function St(e=xt){return _t({commands:bt,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const Ct=St(),wt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>me(e.id,t),install:(e,t)=>he(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>Je(e),probePackagePresence:(e,t)=>_e(e.id,t),uninstall:(e,t)=>ue(e.id,t),update:(e,t)=>pe(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>fe(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function Tt(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Et(e=wt){return _({commands:{install:e=>Tt(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Tt(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const Dt=Et(),Ot={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>be(c(e.id,e.binaryName),t),install:(e,t)=>le(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>et(e),probePackagePresence:(e,t)=>ge(c(e.id,e.binaryName),t),uninstall:(e,t)=>Ne(c(e.id,e.binaryName),t),update:(e,t)=>Me(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>oe(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},...e.binaryName?{binaryName:e.binaryName}:{},packageName:e.id})),t)};function kt(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function At(e=Ot){return _({commands:{install:e=>kt(e),uninstall:e=>[`deno`,`uninstall`,`--global`,c(e.id,e.binaryName)],update:e=>kt(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const jt=At(),Mt={contextualExecution:!0,execute:(e,t)=>i(Ft(e,l()),t,`install effect failed`),isExecutablePresent:$e};function Nt(e,t={}){let n={...Mt,...t,contextualExecution:t.execute?t.contextualExecution??!1:!0},r=async t=>{let r=t.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await m(t.context,()=>n.isExecutablePresent(r));return f(i)?p(i):i.kind===`rejected`?{kind:`failed`,reason:`${e} executable probe failed for ${t.target.id}: ${i.reason}`,retryable:!0}:{kind:`success`,value:{evidence:[{kind:`executable`,value:r}],kind:i.value?`present`:`absent`,target:t.target}}};return{availability:async e=>It(e),id:e,install:async t=>{let r=t.target.effect;if(!r)return{kind:`failed`,reason:`${e} install target ${t.target.id} has no execution effect`,remediation:`Select a candidate with an explicit shell-script or executable effect.`,retryable:!1};let i=await Pt(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(f(i))return p(i);let a=Ft(r,l()),o=Lt(e,a);if(i.kind===`rejected`)return{command:a,evidence:o,kind:`failed`,reason:`${e} install failed for ${t.target.id}: ${i.reason}`,remediation:`Review the installer output and upstream installation instructions.`,retryable:!1};let s=i.value;return s.kind===`success`?{kind:`success`,value:{evidence:o,target:t.target}}:s.kind===`failed`?{...s,command:s.command??a,evidence:s.evidence??o,remediation:s.remediation??`Review the installer output and upstream installation instructions.`}:s},observe:r,verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?{kind:`success`,value:{evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e}`}}:{kind:`success`,value:{evidence:n.value.evidence??[],kind:`satisfied`}}:n}}}function Pt(e,t,n){return t?h(e,n):m(e,n)}function Ft(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function It(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:l()===`windows`?`powershell.exe`:`sh`}}}function Lt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const j=Nt(`script`),M=Nt(`binary`),Rt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Ke(e.id,t),install:(e,t)=>Te(e.id,t),isAvailable:e=>nt(e),probePackagePresence:(e,t)=>Ge(e.id,t),uninstall:(e,t)=>ye(e.id,t),update:(e,t)=>We(e.id,t),updateMany:(e,t)=>ce(e.map(e=>({packageName:e.id})),t)};function N(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function zt(e=Rt){return _({commands:{install:e=>N(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>N(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const P=zt(),Bt={install:(e,t)=>[`npm`,`install`,`-g`,t.distTagExplicit?`${e.id}@${t.distTag}`:e.id,...t.registry?[`--registry`,t.registry]:[]],uninstall:e=>[`npm`,`uninstall`,`-g`,e.id],update:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,`${e.id}@${t.distTag}`,...t.registry?[`--registry`,t.registry]:[]]:[`npm`,`update`,`-g`,e.id,...t.registry?[`--registry`,t.registry]:[]],updateMany:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e.id}@latest`)]:[`npm`,`update`,`-g`,...e.map(e=>e.id)]},Vt={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>ie(e,t),install:(e,t,n,r)=>ne(e,t,n,r),isAvailable:e=>Ye(e),probePackagePresence:(e,t)=>o(e,t),resolveLatestVersion:(e,t,n)=>u(e,t,{registry:n}),uninstall:(e,n)=>t(e,n),update:(e,t,n,r,i)=>re(e,t,n,r,i),updateMany:(e,t,n)=>ee(e,t,n)};function Ht(e=Vt){return _t({commands:Bt,displayName:`npm`,executable:`npm`,id:`npm`},e)}const F=Ht(),Ut={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Re(e.id,t),install:(e,t)=>Fe(e.id,t),isAvailable:e=>Qe(e),probePackagePresence:(e,t)=>Ae(e.id,t),uninstall:(e,t)=>ke(e.id,t),update:(e,t)=>Ue(e.id,t),updateMany:(e,t)=>Ce(e.map(e=>({packageName:e.id})),t)};function Wt(e=Ut){return _({commands:{install:e=>[`pip`,`install`,e.id],uninstall:e=>[`pip`,`uninstall`,`-y`,e.id],update:e=>[`pip`,`install`,`--upgrade`,e.id],updateMany:e=>[`pip`,`install`,`--upgrade`,...e.map(e=>e.id)]},displayName:`pip`,executable:`pip`,id:`pip`},e)}const I=Wt(),Gt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Be(e.id,t),install:(e,t)=>Ee(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>rt(e),probePackagePresence:(e,t)=>Pe(e.id,t),uninstall:(e,t)=>He(e.id,t),update:(e,t)=>Oe(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>De(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function L(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function Kt(e=Gt){return _({commands:{install:e=>L(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>L(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const R=Kt(),qt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Ve(e.id,t),install:(e,t)=>Ie(e.id,t),isAvailable:e=>Xe(e),probePackagePresence:(e,t)=>ze(e.id,t),uninstall:(e,t)=>je(e.id,t),update:(e,t)=>Le(e.id,t),updateMany:(e,t)=>we(e.map(e=>({packageName:e.id})),t)};function z(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Jt(e=qt){return _({commands:{install:e=>z(`install`,e),uninstall:e=>z(`uninstall`,e),update:e=>z(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const Yt=Jt(),Xt=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Zt={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Qt(e){let t=new Map;for(let n of e){if(t.has(n.id))throw Error(`Duplicate provider adapter id: ${n.id}`);t.set(n.id,n)}let n=Object.freeze([...e]),r=new Map(n.map(e=>[e.id,en(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function $t(e){return Qt(at.map(t=>{let n=e[t];if(n.id!==t)throw Error(`Provider registry key ${t} does not match adapter id ${n.id}`);return n}))}function en(e){return Object.freeze(Xt.filter(t=>typeof e[Zt[t]]==`function`))}const tn=$t({binary:M,brew:gt,bun:Ct,cargo:Dt,deno:jt,mise:P,npm:F,pip:I,script:j,uv:R,winget:Yt}),nn=[{name:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,binaryName:`amp`,selfUpdate:{command:[`amp`,`update`]},versionProbe:{command:[`amp`,`version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}]}},{name:`antigravity`,lookupAliases:[`agy`,`antigravity-cli`],displayName:`Antigravity CLI`,homepage:`https://antigravity.google/product/antigravity-cli`,binaryName:`agy`,selfUpdate:{command:[`agy`,`update`]},versionProbe:{command:[`agy`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://antigravity.google/cli/install.ps1`,kind:`script`,effect:{command:`irm https://antigravity.google/cli/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://antigravity.google/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://antigravity.google/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`}}}]}},{name:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,binaryName:`auggie`,selfUpdate:{command:[`auggie`,`upgrade`]},versionProbe:{command:[`auggie`,`--version`]},platforms:{macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@augmentcode/auggie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@augmentcode/auggie`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@augmentcode/auggie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@augmentcode/auggie`,kind:`package`}}]}},{name:`autohand`,lookupAliases:[`autohand-cli`],displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,binaryName:`autohand`,versionProbe:{command:[`autohand`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://autohand.ai/install.ps1`,kind:`script`,effect:{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://autohand.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://autohand.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}]}},{name:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,binaryName:`claude`,selfUpdate:{command:[`claude`,`update`],fallbackCommands:[[`claude`,`upgrade`]]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://claude.ai/install.ps1`,kind:`script`,effect:{command:`irm https://claude.ai/install.ps1 | iex`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`winget`,target:{id:`Anthropic.ClaudeCode`,kind:`id`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://claude.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://claude.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}]}},{name:`codebuddy`,lookupAliases:[`codebuddy-code`],displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,binaryName:`codebuddy`,selfUpdate:{command:[`codebuddy`,`update`]},versionProbe:{command:[`codebuddy`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://www.codebuddy.cn/cli/install.ps1`,kind:`script`,effect:{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}]}},{name:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,binaryName:`codewhale`,selfUpdate:{command:[`codewhale`,`update`]},versionProbe:{command:[`codewhale`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}}]}},{name:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`codex`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`codex`,kind:`formula`}}]}},{name:`commandcode`,lookupAliases:[`command-code`,`cmd`,`cmdc`],displayName:`Command Code`,homepage:`https://commandcode.ai/docs/quickstart`,binaryName:`command-code`,selfUpdate:{command:[`command-code`,`update`]},versionProbe:{command:[`command-code`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}]}},{name:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,binaryName:`copilot`,platforms:{windows:[{probes:[`executable-presence`],provider:`winget`,target:{id:`GitHub.Copilot`,kind:`id`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://gh.io/copilot-install`,kind:`script`,effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://gh.io/copilot-install`,kind:`script`,effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}]}},{name:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,binaryName:`crush`,selfUpdate:{command:[`crush`,`update`]},versionProbe:{command:[`crush`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`winget`,target:{id:`charmbracelet.crush`,kind:`id`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`charmbracelet/tap/crush`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`charmbracelet/tap/crush`,kind:`formula`}}]}},{name:`cursor`,lookupAliases:[`agent`],displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,binaryName:`agent`,selfUpdate:{command:[`agent`,`update`]},versionProbe:{command:[`agent`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cursor.com/install?win32=true`,kind:`script`,effect:{command:`irm 'https://cursor.com/install?win32=true' | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cursor.com/install`,kind:`script`,effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cursor.com/install`,kind:`script`,effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`}}}]}},{name:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,binaryName:`devin`,selfUpdate:{command:[`devin`,`update`]},versionProbe:{command:[`devin`,`version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://static.devin.ai/cli/setup.ps1`,kind:`script`,effect:{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://cli.devin.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://cli.devin.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`}}}]}},{name:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,binaryName:`droid`,selfUpdate:{command:[`droid`,`update`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://app.factory.ai/cli/windows`,kind:`script`,effect:{command:`irm https://app.factory.ai/cli/windows | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://app.factory.ai/cli`,kind:`script`,effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://app.factory.ai/cli`,kind:`script`,effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}]}},{name:`dsh`,lookupAliases:[`deepseek-harness`],displayName:`DeepSeek Harness`,homepage:`https://github.com/deepseek-ai/deepseek-harness`,binaryName:`dsh`,versionProbe:{command:[`dsh`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@deepseek-ai/dsh`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@deepseek-ai/dsh`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@deepseek-ai/dsh`,kind:`package`}}]}},{name:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,binaryName:`gemini`,platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`gemini-cli`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`gemini-cli`,kind:`formula`}}]}},{name:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,binaryName:`goose`,selfUpdate:{command:[`goose`,`update`]},versionProbe:{command:[`goose`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`,effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1`,kind:`script`,effect:{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`,effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`,effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}]}},{name:`grok`,lookupAliases:[`grok-build`],displayName:`Grok Build`,homepage:`https://docs.x.ai/build/overview`,binaryName:`grok`,selfUpdate:{command:[`grok`,`update`]},versionProbe:{command:[`grok`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://x.ai/cli/install.ps1`,kind:`script`,effect:{command:`irm https://x.ai/cli/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://x.ai/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://x.ai/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`}}}]}},{name:`hermes`,lookupAliases:[`hermes-agent`],displayName:`Hermes Agent`,homepage:`https://github.com/NousResearch/hermes-agent`,binaryName:`hermes`,selfUpdate:{command:[`hermes`,`update`]},versionProbe:{command:[`hermes`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://hermes-agent.nousresearch.com/install.ps1`,kind:`script`,effect:{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`}}}]}},{name:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,binaryName:`junie`,versionProbe:{command:[`junie`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://junie.jetbrains.com/install.ps1`,kind:`script`,effect:{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://junie.jetbrains.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://junie.jetbrains.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}]}},{name:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,binaryName:`kilo`,selfUpdate:{command:[`kilo`,`upgrade`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}]}},{name:`kimi`,lookupAliases:[`kimi-code`,`kimi-cli`],displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-code/`,binaryName:`kimi`,selfUpdate:{command:[`kimi`,`upgrade`]},versionProbe:{command:[`kimi`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://code.kimi.com/kimi-code/install.ps1`,kind:`script`,effect:{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}]}},{name:`kiro`,lookupAliases:[`kiro-cli`],displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,binaryName:`kiro-cli`,versionProbe:{command:[`kiro-cli`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cli.kiro.dev/install.ps1`,kind:`script`,effect:{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cli.kiro.dev/install`,kind:`script`,effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cli.kiro.dev/install`,kind:`script`,effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`}}}]}},{name:`mimo`,lookupAliases:[`mimocode`,`mimo-code`],displayName:`MiMoCode`,homepage:`https://github.com/XiaomiMiMo/MiMo-Code`,binaryName:`mimo`,versionProbe:{command:[`mimo`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://mimo.xiaomi.com/install`,kind:`script`,effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://mimo.xiaomi.com/install`,kind:`script`,effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}]}},{name:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,binaryName:`omp`,versionProbe:{command:[`omp`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://omp.sh/install.ps1`,kind:`script`,effect:{command:`irm https://omp.sh/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://omp.sh/install`,kind:`script`,effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://omp.sh/install`,kind:`script`,effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`}}}]}},{name:`openclaw`,displayName:`OpenClaw`,homepage:`https://github.com/openclaw/openclaw`,binaryName:`openclaw`,selfUpdate:{command:[`openclaw`,`update`]},versionProbe:{command:[`openclaw`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://openclaw.ai/install.ps1`,kind:`script`,effect:{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://openclaw.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://openclaw.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`}}}]}},{name:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,binaryName:`opencode`,selfUpdate:{command:[`opencode`,`upgrade`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://opencode.ai/install`,kind:`script`,effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://opencode.ai/install`,kind:`script`,effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}]}},{name:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,binaryName:`openhands`,versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://install.openhands.dev/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://install.openhands.dev/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`}}}]}},{name:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,binaryName:`pi`,selfUpdate:{command:[`pi`,`update`]},supersededPackages:{npm:[`@mariozechner/pi-coding-agent`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}}]}},{name:`qoder`,lookupAliases:[`qodercli`],displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,binaryName:`qodercli`,selfUpdate:{command:[`qodercli`,`update`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://qoder.com/install`,kind:`script`,effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://qoder.com/install`,kind:`script`,effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}]}},{name:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,binaryName:`qwen`,platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat`,kind:`script`,effect:{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`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`script`,effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qwen-code`,kind:`formula`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`script`,effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qwen-code`,kind:`formula`}}]}},{name:`reasonix`,lookupAliases:[`deepseek-reasonix`],displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,binaryName:`reasonix`,selfUpdate:{command:[`reasonix`,`update`]},versionProbe:{command:[`reasonix`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}]}},{name:`vibe`,lookupAliases:[`mistral-vibe`],displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,binaryName:`vibe`,versionProbe:{command:[`vibe`,`--version`]},platforms:{macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://mistral.ai/vibe/install.sh`,kind:`script`,effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://mistral.ai/vibe/install.sh`,kind:`script`,effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`}}}]}}],B=d.string().min(1),V=d.array(B).min(1);d.enum([`windows`,`macos`,`linux`]);const rn=d.enum([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]),an=d.enum([`package`,`cask`,`id`]),H={binaryName:B.optional(),packageInstallArgs:d.array(B).min(1).optional(),packageName:B.optional(),packageTargetKind:an.optional()},on=d.object({...H,type:rn}).strict(),sn=d.object({...H,command:B,type:d.literal(`script`)}).strict(),cn=d.object({...H,command:B,type:d.literal(`binary`)}).strict(),U=d.discriminatedUnion(`type`,[on,sn,cn]),ln=d.enum([`executable-presence`,`installed-version`,`package-presence`,`target-version`]),un=d.array(ln).min(1).refine(e=>new Set(e).size===e.length,{message:`candidate probes must be unique`}).optional(),dn=d.object({command:V,kind:d.literal(`executable`)}).strict(),fn=d.object({command:B,kind:d.literal(`shell-script`)}).strict(),pn=d.discriminatedUnion(`kind`,[dn,fn]);function W(e,t={}){return d.object({arguments:d.array(B).min(1).optional(),binaryName:B.optional(),...t.effect?{effect:pn}:{},id:B,kind:d.literal(e)}).strict()}function G(e,t){return d.object({legacy:d.object({packageNameInMethod:d.literal(!0).optional()}).strict().optional(),probes:un,provider:d.literal(e),target:t}).strict()}const mn=d.discriminatedUnion(`provider`,[G(`bun`,W(`package`)),G(`npm`,W(`package`)),G(`brew`,d.union([W(`formula`),W(`cask`)])),G(`cargo`,W(`package`)),G(`deno`,W(`tool`)),G(`mise`,W(`tool`)),G(`pip`,W(`package`)),G(`uv`,W(`tool`)),G(`winget`,W(`id`)),G(`script`,W(`script`,{effect:!0})),G(`binary`,W(`binary`,{effect:!0}))]),K=d.union([U,mn]),hn=d.object({linux:d.array(K).min(1).optional(),macos:d.array(K).min(1).optional(),windows:d.array(K).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),gn=d.object({cargo:B.optional(),deno:B.optional(),mise:B.optional(),npm:B.optional(),pip:B.optional(),uv:B.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`packages must include at least one package identifier`}),q=d.array(B).min(1).refine(e=>new Set(e).size===e.length,{message:`superseded package identifiers must be unique`}),_n=d.object({cargo:q.optional(),deno:q.optional(),mise:q.optional(),npm:q.optional(),pip:q.optional(),uv:q.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`supersededPackages must include at least one package identifier`}),vn=d.object({command:V,fallbackCommands:d.array(V).min(1).optional(),versionAfter:d.enum([`same-process`,`respawn`]).optional()}).strict(),yn=d.object({command:V.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),bn=d.object({linux:d.array(U).min(1).optional(),macos:d.array(U).min(1).optional(),windows:d.array(U).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),J=d.object({binaryName:B,displayName:B,homepage:d.url().startsWith(`https://`),lookupAliases:d.array(B).min(1).optional(),name:B.regex(/^[a-z0-9][a-z0-9-]*$/),packages:gn.optional(),platforms:bn,selfUpdate:vn.optional(),versionProbe:yn.optional()}).strict(),xn=J.extend({platforms:hn,supersededPackages:_n.optional()}).strict(),Sn=d.array(xn).min(1),Y=d.array(J).min(1),Cn={...ot(Y),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},wn={},Tn=Sn.parse(nn),En=Tn.map(Q),Dn=new Map(En.map(e=>[e.name,e])),On=new Map(Tn.flatMap(e=>e.supersededPackages?[[e.name,e.supersededPackages]]:[]));function kn(){return En}function X(e){let t=Dn.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function An(e){return On.get(e)}function Z(e){if(e===`bun`||e===`npm`)return`npm`;if(e===`cargo`||e===`deno`||e===`mise`||e===`pip`||e===`uv`)return e}function Q(e){let t=wn[e.name],n=In(e.versionProbe,t),r=Mn(e);Nn(e,r);let i=Object.fromEntries(Object.entries(e.platforms).map(([e,t])=>[e,t?.map(jn)])),{supersededPackages:a,...o}=e;return{...o,...r?{packages:r}:{},platforms:i,versionProbe:n}}function jn(e){if(`type`in e)return e;let{provider:t,target:n}=e;if(t===`script`||t===`binary`){let e=n.effect;if(!Pn(e))throw Error(`${t} catalog candidate requires an execution effect`);let r=e.kind===`shell-script`?e.command:Fn(e.command);return{...n.binaryName?{binaryName:n.binaryName}:{},command:r,type:t}}let r=Z(t);return{...n.arguments?{packageInstallArgs:[...n.arguments]}:{},...n.binaryName?{binaryName:n.binaryName}:{},...!r||e.legacy?.packageNameInMethod?{packageName:n.id}:{},...n.kind===`cask`||n.kind===`id`?{packageTargetKind:n.kind}:{},type:t}}function Mn(e){let t={...e.packages};for(let n of Object.values(e.platforms))for(let r of n??[]){if(`type`in r)continue;let n=Z(r.provider);if(!n)continue;let i=t[n];if(i&&i!==r.target.id)throw Error(`${e.name} binds conflicting ${n} package targets: ${i} and ${r.target.id}`);t[n]=r.target.id}return Object.keys(t).length>0?t:void 0}function Nn(e,t){if(!(!e.supersededPackages||!t))for(let[n,r]of Object.entries(e.supersededPackages)){let i=t[n];if(i&&r?.includes(i))throw Error(`${e.name} declares ${n} package ${i} as both current and superseded`)}}function Pn(e){return!e||typeof e!=`object`||!(`kind`in e)||!(`command`in e)?!1:e.kind===`shell-script`?typeof e.command==`string`:e.kind===`executable`&&Array.isArray(e.command)&&e.command.every(e=>typeof e==`string`)}function Fn(e){return e.map(e=>e.includes(` `)?JSON.stringify(e):e).join(` `)}function In(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}X(`amp`),X(`antigravity`),X(`auggie`);const Ln=X(`autohand`),Rn=X(`claude`),zn=X(`codebuddy`),Bn=X(`codewhale`),Vn=X(`codex`);X(`commandcode`);const Hn=X(`copilot`);X(`crush`);const Un=X(`cursor`),Wn=X(`devin`),Gn=X(`droid`);X(`dsh`);const Kn=X(`gemini`);X(`goose`);const qn=X(`grok`),Jn=X(`hermes`),Yn=X(`junie`),Xn=X(`kilo`);X(`kimi`),X(`kiro`);const Zn=X(`mimo`),Qn=X(`omp`),$n=X(`openclaw`),er=X(`opencode`),tr=X(`openhands`),nr=X(`pi`),rr=X(`qoder`);X(`qwen`);const ir=X(`reasonix`),ar=X(`vibe`),[or,sr,cr,lr]=Sn.parse([{name:`deepcode`,displayName:`Deep Code CLI`,homepage:`https://github.com/lessweb/deepcode-cli`,binaryName:`deepcode`,versionProbe:{command:[`deepcode`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}]}},{name:`genie`,displayName:`Genie`,homepage:`https://jsr.io/@nicorio/genie`,binaryName:`genie`,platforms:{windows:[{provider:`deno`,target:{id:`jsr:@nicorio/genie`,kind:`tool`,arguments:[`-A`]},probes:[`executable-presence`]}],macos:[{provider:`deno`,target:{id:`jsr:@nicorio/genie`,kind:`tool`,arguments:[`-A`]},probes:[`executable-presence`]}],linux:[{provider:`deno`,target:{id:`jsr:@nicorio/genie`,kind:`tool`,arguments:[`-A`]},probes:[`executable-presence`]}]}},{name:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,binaryName:`jcode`,versionProbe:{command:[`jcode`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1`,kind:`script`,effect:{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`brew`,target:{id:`1jehuang/jcode/jcode`,kind:`formula`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`}}}]}},{name:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,binaryName:`vtcode`,selfUpdate:{command:[`vtcode`,`update`]},versionProbe:{command:[`vtcode`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1`,kind:`script`,effect:{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}]}}]),ur=Q(or),dr=Q(sr),fr=Q(cr),pr=Q(lr);Object.freeze([`deepcode`,`genie`,`jcode`,`vtcode`]);const $=kn();function mr(){return $}function hr(e){let t=$.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1));if(t)return t;let n=_r(e);return $.find(e=>_r(e.displayName)===n)}function gr(e){return hr(e)}function _r(e){return e.trim().toLowerCase()}export{ar as A,R as B,Qn as C,nr as D,tr as E,J as F,j as G,F as H,Cn as I,Ct as J,jt as K,Y as L,kn as M,An as N,rr as O,Z as P,tn as R,Zn as S,er as T,P as U,I as V,M as W,gt as Y,Kn as _,dr as a,Yn as b,Ln as c,Bn as d,Vn as f,Gn as g,Wn as h,ur as i,X as j,ir as k,Rn as l,Un as m,gr as n,fr as o,Hn as p,Dt as q,mr as r,pr as s,hr as t,zn as u,qn as v,$n as w,Xn as x,Jn as y,Yt as z};
|
|
1
|
+
import{n as e}from"./child-process-DzIdysOm.mjs";import{a as t,c as n,f as r,g as i,h as a,i as o,m as s,o as ee,p as te,r as ne,s as re,t as ie,u as ae}from"./npm-PO9Nwgt_.mjs";import{A as oe,B as se,C as ce,D as le,E as c,F as ue,H as de,I as fe,L as pe,M as me,N as he,O as ge,P as _e,R as ve,S as ye,T as be,U as xe,V as Se,_ as Ce,a as we,b as Te,c as Ee,d as De,f as Oe,g as ke,h as Ae,i as je,j as Me,k as Ne,l as Pe,m as Fe,n as Ie,o as Le,p as Re,r as ze,s as Be,t as Ve,u as He,v as Ue,w as We,x as Ge,y as Ke,z as qe}from"./winget-BA9H6Ve-.mjs";import{a as Je,c as Ye,d as Xe,i as Ze,l as Qe,n as $e,o as et,r as tt,s as nt,t as l,u as rt}from"./detect-CbD8V1su.mjs";import{r as it}from"./registry-vhJzh8dW.mjs";import{Z as u}from"./output-PUVIMxAA.mjs";import{t as at}from"./types-DAYz9yrG.mjs";import{toJSONSchema as ot,z as d}from"zod";function f(e){return e.kind===`cancelled`||e.kind===`timed-out`}function p(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function m(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:g(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:g(e.signal)}),e.signal.addEventListener(`abort`,r,{once:!0})}),a=[Promise.resolve().then(t).then(e=>({kind:`resolved`,value:e})).catch(e=>({kind:`rejected`,reason:st(e)})),i];e.timeoutMs!==void 0&&a.push(new Promise(t=>{n=setTimeout(()=>t({kind:`timed-out`,timeoutMs:e.timeoutMs}),e.timeoutMs)}));let o=await Promise.race(a);return n&&clearTimeout(n),e.signal.removeEventListener(`abort`,r),o}async function h(t,n){if(t.signal.aborted)return{kind:`cancelled`,reason:g(t.signal)};try{return{kind:`resolved`,value:await n()}}catch(t){return e(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t.timeoutMs}:{kind:`cancelled`,...t.reason?{reason:t.reason}:{}}:{kind:`rejected`,reason:st(t)}}}function g(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}function st(e){return e instanceof Error?e.message:String(e)}function _(e,t){let n=async n=>{let r=await v(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(f(r))return p(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[ft(e.id,`${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return x({evidence:[pt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await v(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&f(i)?p(i):x({evidence:[pt(e.id,n.target.id,`present`)],kind:`present`,target:n.target,...i?.kind===`resolved`&&i.value?{version:i.value}:{}})};return{availability:async n=>{let r=await v(n,t.contextualObservation,()=>t.isAvailable(n));return f(r)?p(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:x({executable:e.executable})},id:e.id,install:n=>y(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>y(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>y(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>lt(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?x({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):x({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function v(e,t,n){return t?h(e,n):m(e,n)}function ct(e,t,n){return t?h(e,n):m(e,n)}async function y(e,t,n,r,i,a){let o=await ct(t.context,i,()=>a(t.target,t.context));if(f(o))return p(o);let s=dt(e.id,r);return o.kind===`rejected`?b(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?x({evidence:s,target:t.target}):ut(o.value,e,t.target.id,n,r,s)}async function lt(e,t,n){let r=e.commands.updateMany(n.targets),i=await ct(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(f(i))return p(i);let a=dt(e.id,r);return i.kind===`rejected`?b(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?x(n.targets.map(e=>({evidence:a,target:e}))):ut(i.value,e,void 0,`update`,r,a)}function ut(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=b(t,n,r,i,a);return{...o,...e,command:e.command??i,evidence:e.evidence??a,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function b(e,t,n,r,i,a){return{command:r,evidence:i,kind:`failed`,reason:`${e.id} ${n} failed${t?` for ${t}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function dt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function ft(e,t){return{kind:`provider`,value:`${e}:${t}`}}function pt(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function x(e){return{kind:`success`,value:e}}function S(e){return e.kind===`cask`?`cask`:`package`}const mt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>ve(e.id,S(e),t),install:(e,t)=>qe(e.id,S(e),t),isAvailable:e=>tt(e),probePackagePresence:(e,t)=>se(e.id,S(e),t),uninstall:(e,t)=>Se(e.id,S(e),t),update:(e,t)=>xe(e.id,S(e),t),updateMany:(e,t)=>de(e.map(e=>({packageName:e.id,packageTargetKind:S(e)})),t)};function C(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function ht(e=mt){return _({commands:{install:e=>C(`install`,e),uninstall:e=>C(`uninstall`,e),update:e=>C(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>C(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const gt=ht();function _t(e,t){let n=k(`provider`,e.id),r=async n=>{let r=await w(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(f(r))return p(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[k(`provider`,`${e.id}:${n.target.id}:presence-unknown`)],kind:`indeterminate`,reason:`${e.id} could not determine whether ${n.target.id} is installed`};if(r.value===`absent`)return A({evidence:[k(`package`,`${e.id}:${n.target.id}:absent`)],kind:`absent`,target:n.target});let i=await w(n.context,t.contextualPackageObservation,()=>t.getInstalledVersion(n.target.id,n.context));if(f(i))return p(i);let a=i.kind===`resolved`?i.value:void 0;return A({evidence:[k(`package`,a?`${e.id}:${n.target.id}@${a}`:`${e.id}:${n.target.id}:present`)],kind:`present`,target:n.target,...a?{version:a}:{}})};return{availability:async n=>{let r=await w(n,t.contextualPackageObservation,()=>t.isAvailable(n));return f(r)?p(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:A({executable:e.executable})},id:e.id,install:n=>{let r=O(n.options),i=e.commands.install(n.target,r);return E(e,n.context,n.target,i,t.contextualMutation,()=>t.install(n.target.id,n.options?.distTag,r.registry,n.context))},observe:r,resolveLatestVersion:async r=>{let i=O(r.options),a=await m(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return f(a)?p(a):a.kind===`rejected`||!a.value?{evidence:[n],kind:`indeterminate`,reason:`${e.id} could not resolve the ${i.distTag} version for ${r.target.id}`}:A({evidence:[n,k(`package`,`${e.id}:${r.target.id}@${i.distTag}=${a.value}`)],version:a.value})},uninstall:n=>{let r=e.commands.uninstall(n.target);return E(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context,n.target))},update:n=>{let r=O(n.options),i=e.commands.update(n.target,r);return E(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>vt(e,t,n),verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?A({evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):A({evidence:n.value.evidence??[],kind:`satisfied`}):n}}}function w(e,t,n){return t?h(e,n):m(e,n)}function T(e,t,n){return t?h(e,n):m(e,n)}async function vt(e,t,n){let r=O(n.options),i=e.commands.updateMany(n.targets,r),a=[k(`provider`,e.id),k(`command`,i.join(` `))],o=await T(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return f(o)?p(o):o.kind===`rejected`?D(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?A(n.targets.map(e=>({evidence:a,target:e}))):yt(o.value,e,i,a,`update-many`)}async function E(e,t,n,r,i,a){let o=await T(t,i,a);if(f(o))return p(o);let s=[k(`provider`,e.id),k(`command`,r.join(` `))];return o.kind===`rejected`?D(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?A({evidence:s,target:n}):yt(o.value,e,r,s,r[1]??`operation`,n.id)}function yt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=D(t,n,r,i,a);return{...o,...e,command:e.command??n,evidence:e.evidence??r,reason:e.reason.trim()?e.reason:o.reason,remediation:e.remediation??o.remediation}}function D(e,t,n,r,i,a){let o=r===`add`?`install`:r===`remove`?`uninstall`:r;return{command:t,evidence:n,kind:`failed`,reason:`${e.id} ${o} failed${i?` for ${i}`:``}${a?`: ${a}`:``}`,remediation:`Review ${e.displayName} output and retry the operation.`,retryable:!1}}function O(e){return{distTag:e?.distTag??`latest`,distTagExplicit:e?.distTag!==void 0,registry:it(e?.registry),updateStrategy:e?.updateStrategy??`latest-major`}}function k(e,t){return{kind:e,value:t}}function A(e){return{kind:`success`,value:e}}const bt={install:(e,t)=>[`bun`,`add`,`-g`,...t.registry?[`--registry`,t.registry]:[],t.distTagExplicit?`${e.id}@${t.distTag}`:e.id],uninstall:e=>[`bun`,`remove`,`-g`,e.id],update:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...t.registry?[`--registry`,t.registry]:[],t.distTag===`latest`?e.id:`${e.id}@${t.distTag}`],updateMany:(e,t)=>[`bun`,`update`,`-g`,...t.updateStrategy===`latest-major`?[`--latest`]:[],...e.map(e=>e.id)]},xt={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>n(e,t),install:(e,t,n,r)=>ae(e,t,n,r),isAvailable:e=>Ze(e),probePackagePresence:(e,t)=>r(e,void 0,t),resolveLatestVersion:(e,t,n)=>u(e,t,{registry:n}),uninstall:(e,t,n)=>te(e,t,n?.binaryName),update:(e,t,n,r,i)=>a(e,t,n,r,i),updateMany:(e,t,n)=>s(e,t,n)};function St(e=xt){return _t({commands:bt,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const Ct=St(),wt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>me(e.id,t),install:(e,t)=>he(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>Je(e),probePackagePresence:(e,t)=>_e(e.id,t),uninstall:(e,t)=>ue(e.id,t),update:(e,t)=>pe(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>fe(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function Tt(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Et(e=wt){return _({commands:{install:e=>Tt(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Tt(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const Dt=Et(),Ot={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>be(c(e.id,e.binaryName),t),install:(e,t)=>le(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>et(e),probePackagePresence:(e,t)=>ge(c(e.id,e.binaryName),t),uninstall:(e,t)=>Ne(c(e.id,e.binaryName),t),update:(e,t)=>Me(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>oe(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},...e.binaryName?{binaryName:e.binaryName}:{},packageName:e.id})),t)};function kt(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function At(e=Ot){return _({commands:{install:e=>kt(e),uninstall:e=>[`deno`,`uninstall`,`--global`,c(e.id,e.binaryName)],update:e=>kt(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const jt=At(),Mt={contextualExecution:!0,execute:(e,t)=>i(Ft(e,l()),t,`install effect failed`),isExecutablePresent:$e};function Nt(e,t={}){let n={...Mt,...t,contextualExecution:t.execute?t.contextualExecution??!1:!0},r=async t=>{let r=t.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await m(t.context,()=>n.isExecutablePresent(r));return f(i)?p(i):i.kind===`rejected`?{kind:`failed`,reason:`${e} executable probe failed for ${t.target.id}: ${i.reason}`,retryable:!0}:{kind:`success`,value:{evidence:[{kind:`executable`,value:r}],kind:i.value?`present`:`absent`,target:t.target}}};return{availability:async e=>It(e),id:e,install:async t=>{let r=t.target.effect;if(!r)return{kind:`failed`,reason:`${e} install target ${t.target.id} has no execution effect`,remediation:`Select a candidate with an explicit shell-script or executable effect.`,retryable:!1};let i=await Pt(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(f(i))return p(i);let a=Ft(r,l()),o=Lt(e,a);if(i.kind===`rejected`)return{command:a,evidence:o,kind:`failed`,reason:`${e} install failed for ${t.target.id}: ${i.reason}`,remediation:`Review the installer output and upstream installation instructions.`,retryable:!1};let s=i.value;return s.kind===`success`?{kind:`success`,value:{evidence:o,target:t.target}}:s.kind===`failed`?{...s,command:s.command??a,evidence:s.evidence??o,remediation:s.remediation??`Review the installer output and upstream installation instructions.`}:s},observe:r,verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?{kind:`success`,value:{evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e}`}}:{kind:`success`,value:{evidence:n.value.evidence??[],kind:`satisfied`}}:n}}}function Pt(e,t,n){return t?h(e,n):m(e,n)}function Ft(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function It(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:l()===`windows`?`powershell.exe`:`sh`}}}function Lt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const j=Nt(`script`),M=Nt(`binary`),Rt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Ke(e.id,t),install:(e,t)=>Te(e.id,t),isAvailable:e=>nt(e),probePackagePresence:(e,t)=>Ge(e.id,t),uninstall:(e,t)=>ye(e.id,t),update:(e,t)=>We(e.id,t),updateMany:(e,t)=>ce(e.map(e=>({packageName:e.id})),t)};function N(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function zt(e=Rt){return _({commands:{install:e=>N(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>N(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const P=zt(),Bt={install:(e,t)=>[`npm`,`install`,`-g`,t.distTagExplicit?`${e.id}@${t.distTag}`:e.id,...t.registry?[`--registry`,t.registry]:[]],uninstall:e=>[`npm`,`uninstall`,`-g`,e.id],update:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,`${e.id}@${t.distTag}`,...t.registry?[`--registry`,t.registry]:[]]:[`npm`,`update`,`-g`,e.id,...t.registry?[`--registry`,t.registry]:[]],updateMany:(e,t)=>t.updateStrategy===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e.id}@latest`)]:[`npm`,`update`,`-g`,...e.map(e=>e.id)]},Vt={contextualMutation:!0,contextualPackageObservation:!0,getInstalledVersion:(e,t)=>ie(e,t),install:(e,t,n,r)=>ne(e,t,n,r),isAvailable:e=>Ye(e),probePackagePresence:(e,t)=>o(e,t),resolveLatestVersion:(e,t,n)=>u(e,t,{registry:n}),uninstall:(e,n)=>t(e,n),update:(e,t,n,r,i)=>re(e,t,n,r,i),updateMany:(e,t,n)=>ee(e,t,n)};function Ht(e=Vt){return _t({commands:Bt,displayName:`npm`,executable:`npm`,id:`npm`},e)}const F=Ht(),Ut={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Re(e.id,t),install:(e,t)=>Fe(e.id,t),isAvailable:e=>Qe(e),probePackagePresence:(e,t)=>Ae(e.id,t),uninstall:(e,t)=>ke(e.id,t),update:(e,t)=>Ue(e.id,t),updateMany:(e,t)=>Ce(e.map(e=>({packageName:e.id})),t)};function Wt(e=Ut){return _({commands:{install:e=>[`pip`,`install`,e.id],uninstall:e=>[`pip`,`uninstall`,`-y`,e.id],update:e=>[`pip`,`install`,`--upgrade`,e.id],updateMany:e=>[`pip`,`install`,`--upgrade`,...e.map(e=>e.id)]},displayName:`pip`,executable:`pip`,id:`pip`},e)}const I=Wt(),Gt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Be(e.id,t),install:(e,t)=>Ee(e.id,e.arguments?[...e.arguments]:void 0,t),isAvailable:e=>rt(e),probePackagePresence:(e,t)=>Pe(e.id,t),uninstall:(e,t)=>He(e.id,t),update:(e,t)=>Oe(e.id,e.arguments?[...e.arguments]:void 0,t),updateMany:(e,t)=>De(e.map(e=>({...e.arguments?{packageInstallArgs:[...e.arguments]}:{},packageName:e.id})),t)};function L(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function Kt(e=Gt){return _({commands:{install:e=>L(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>L(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const R=Kt(),qt={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>Ve(e.id,t),install:(e,t)=>Ie(e.id,t),isAvailable:e=>Xe(e),probePackagePresence:(e,t)=>ze(e.id,t),uninstall:(e,t)=>je(e.id,t),update:(e,t)=>Le(e.id,t),updateMany:(e,t)=>we(e.map(e=>({packageName:e.id})),t)};function z(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Jt(e=qt){return _({commands:{install:e=>z(`install`,e),uninstall:e=>z(`uninstall`,e),update:e=>z(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const Yt=Jt(),Xt=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Zt={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Qt(e){let t=new Map;for(let n of e){if(t.has(n.id))throw Error(`Duplicate provider adapter id: ${n.id}`);t.set(n.id,n)}let n=Object.freeze([...e]),r=new Map(n.map(e=>[e.id,en(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function $t(e){return Qt(at.map(t=>{let n=e[t];if(n.id!==t)throw Error(`Provider registry key ${t} does not match adapter id ${n.id}`);return n}))}function en(e){return Object.freeze(Xt.filter(t=>typeof e[Zt[t]]==`function`))}const tn=$t({binary:M,brew:gt,bun:Ct,cargo:Dt,deno:jt,mise:P,npm:F,pip:I,script:j,uv:R,winget:Yt}),nn=[{name:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,binaryName:`amp`,selfUpdate:{command:[`amp`,`update`]},versionProbe:{command:[`amp`,`version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}]}},{name:`antigravity`,lookupAliases:[`agy`,`antigravity-cli`],displayName:`Antigravity CLI`,homepage:`https://antigravity.google/product/antigravity-cli`,binaryName:`agy`,selfUpdate:{command:[`agy`,`update`]},versionProbe:{command:[`agy`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://antigravity.google/cli/install.ps1`,kind:`script`,effect:{command:`irm https://antigravity.google/cli/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://antigravity.google/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://antigravity.google/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`}}}]}},{name:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,binaryName:`auggie`,selfUpdate:{command:[`auggie`,`upgrade`]},versionProbe:{command:[`auggie`,`--version`]},platforms:{macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@augmentcode/auggie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@augmentcode/auggie`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@augmentcode/auggie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@augmentcode/auggie`,kind:`package`}}]}},{name:`autohand`,lookupAliases:[`autohand-cli`],displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,binaryName:`autohand`,versionProbe:{command:[`autohand`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://autohand.ai/install.ps1`,kind:`script`,effect:{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://autohand.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://autohand.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}]}},{name:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,binaryName:`claude`,selfUpdate:{command:[`claude`,`update`],fallbackCommands:[[`claude`,`upgrade`]]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://claude.ai/install.ps1`,kind:`script`,effect:{command:`irm https://claude.ai/install.ps1 | iex`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`winget`,target:{id:`Anthropic.ClaudeCode`,kind:`id`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://claude.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://claude.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}]}},{name:`codebuddy`,lookupAliases:[`codebuddy-code`],displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,binaryName:`codebuddy`,selfUpdate:{command:[`codebuddy`,`update`]},versionProbe:{command:[`codebuddy`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://www.codebuddy.cn/cli/install.ps1`,kind:`script`,effect:{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}]}},{name:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,binaryName:`codewhale`,selfUpdate:{command:[`codewhale`,`update`]},versionProbe:{command:[`codewhale`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}}]}},{name:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,binaryName:`codex`,selfUpdate:{command:[`codex`,`--upgrade`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`codex`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`codex`,kind:`formula`}}]}},{name:`commandcode`,lookupAliases:[`command-code`,`cmd`,`cmdc`],displayName:`Command Code`,homepage:`https://commandcode.ai/docs/quickstart`,binaryName:`command-code`,selfUpdate:{command:[`command-code`,`update`]},versionProbe:{command:[`command-code`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}]}},{name:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,binaryName:`copilot`,platforms:{windows:[{probes:[`executable-presence`],provider:`winget`,target:{id:`GitHub.Copilot`,kind:`id`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://gh.io/copilot-install`,kind:`script`,effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://gh.io/copilot-install`,kind:`script`,effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}]}},{name:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,binaryName:`crush`,selfUpdate:{command:[`crush`,`update`]},versionProbe:{command:[`crush`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`winget`,target:{id:`charmbracelet.crush`,kind:`id`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`charmbracelet/tap/crush`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`charmbracelet/tap/crush`,kind:`formula`}}]}},{name:`cursor`,lookupAliases:[`agent`],displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,binaryName:`agent`,selfUpdate:{command:[`agent`,`update`]},versionProbe:{command:[`agent`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cursor.com/install?win32=true`,kind:`script`,effect:{command:`irm 'https://cursor.com/install?win32=true' | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cursor.com/install`,kind:`script`,effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cursor.com/install`,kind:`script`,effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`}}}]}},{name:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,binaryName:`devin`,selfUpdate:{command:[`devin`,`update`]},versionProbe:{command:[`devin`,`version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://static.devin.ai/cli/setup.ps1`,kind:`script`,effect:{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://cli.devin.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://cli.devin.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`}}}]}},{name:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,binaryName:`droid`,selfUpdate:{command:[`droid`,`update`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://app.factory.ai/cli/windows`,kind:`script`,effect:{command:`irm https://app.factory.ai/cli/windows | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://app.factory.ai/cli`,kind:`script`,effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://app.factory.ai/cli`,kind:`script`,effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}]}},{name:`dsh`,lookupAliases:[`deepseek-harness`],displayName:`DeepSeek Harness`,homepage:`https://github.com/deepseek-ai/deepseek-harness`,binaryName:`dsh`,versionProbe:{command:[`dsh`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@deepseek-ai/dsh`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@deepseek-ai/dsh`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@deepseek-ai/dsh`,kind:`package`}}]}},{name:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,binaryName:`gemini`,platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`gemini-cli`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`gemini-cli`,kind:`formula`}}]}},{name:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,binaryName:`goose`,selfUpdate:{command:[`goose`,`update`]},versionProbe:{command:[`goose`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`,effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1`,kind:`script`,effect:{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`,effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`,effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}]}},{name:`grok`,lookupAliases:[`grok-build`],displayName:`Grok Build`,homepage:`https://docs.x.ai/build/overview`,binaryName:`grok`,selfUpdate:{command:[`grok`,`update`]},versionProbe:{command:[`grok`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://x.ai/cli/install.ps1`,kind:`script`,effect:{command:`irm https://x.ai/cli/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://x.ai/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://x.ai/cli/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`}}}]}},{name:`hermes`,lookupAliases:[`hermes-agent`],displayName:`Hermes Agent`,homepage:`https://github.com/NousResearch/hermes-agent`,binaryName:`hermes`,selfUpdate:{command:[`hermes`,`update`]},versionProbe:{command:[`hermes`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://hermes-agent.nousresearch.com/install.ps1`,kind:`script`,effect:{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`}}}]}},{name:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,binaryName:`junie`,versionProbe:{command:[`junie`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://junie.jetbrains.com/install.ps1`,kind:`script`,effect:{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://junie.jetbrains.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://junie.jetbrains.com/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}]}},{name:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,binaryName:`kilo`,selfUpdate:{command:[`kilo`,`upgrade`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}]}},{name:`kimi`,lookupAliases:[`kimi-code`,`kimi-cli`],displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-code/`,binaryName:`kimi`,selfUpdate:{command:[`kimi`,`upgrade`]},versionProbe:{command:[`kimi`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://code.kimi.com/kimi-code/install.ps1`,kind:`script`,effect:{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}]}},{name:`kiro`,lookupAliases:[`kiro-cli`],displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,binaryName:`kiro-cli`,versionProbe:{command:[`kiro-cli`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cli.kiro.dev/install.ps1`,kind:`script`,effect:{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cli.kiro.dev/install`,kind:`script`,effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://cli.kiro.dev/install`,kind:`script`,effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`}}}]}},{name:`mimo`,lookupAliases:[`mimocode`,`mimo-code`],displayName:`MiMoCode`,homepage:`https://github.com/XiaomiMiMo/MiMo-Code`,binaryName:`mimo`,versionProbe:{command:[`mimo`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://mimo.xiaomi.com/install`,kind:`script`,effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://mimo.xiaomi.com/install`,kind:`script`,effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}]}},{name:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,binaryName:`omp`,versionProbe:{command:[`omp`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://omp.sh/install.ps1`,kind:`script`,effect:{command:`irm https://omp.sh/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://omp.sh/install`,kind:`script`,effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://omp.sh/install`,kind:`script`,effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`}}}]}},{name:`openclaw`,displayName:`OpenClaw`,homepage:`https://github.com/openclaw/openclaw`,binaryName:`openclaw`,selfUpdate:{command:[`openclaw`,`update`]},versionProbe:{command:[`openclaw`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://openclaw.ai/install.ps1`,kind:`script`,effect:{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://openclaw.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://openclaw.ai/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`}}}]}},{name:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,binaryName:`opencode`,selfUpdate:{command:[`opencode`,`upgrade`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://opencode.ai/install`,kind:`script`,effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://opencode.ai/install`,kind:`script`,effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}]}},{name:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,binaryName:`openhands`,versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://install.openhands.dev/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://install.openhands.dev/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`}}}]}},{name:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,binaryName:`pi`,selfUpdate:{command:[`pi`,`update`]},supersededPackages:{npm:[`@mariozechner/pi-coding-agent`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@earendil-works/pi-coding-agent`,kind:`package`}}]}},{name:`qoder`,lookupAliases:[`qodercli`],displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,binaryName:`qodercli`,selfUpdate:{command:[`qodercli`,`update`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://qoder.com/install`,kind:`script`,effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://qoder.com/install`,kind:`script`,effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}]}},{name:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,binaryName:`qwen`,platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat`,kind:`script`,effect:{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`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`script`,effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qwen-code`,kind:`formula`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`script`,effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qwen-code`,kind:`formula`}}]}},{name:`reasonix`,lookupAliases:[`deepseek-reasonix`],displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,binaryName:`reasonix`,selfUpdate:{command:[`reasonix`,`update`]},versionProbe:{command:[`reasonix`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}]}},{name:`vibe`,lookupAliases:[`mistral-vibe`],displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,binaryName:`vibe`,versionProbe:{command:[`vibe`,`--version`]},platforms:{macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://mistral.ai/vibe/install.sh`,kind:`script`,effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{id:`https://mistral.ai/vibe/install.sh`,kind:`script`,effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`}}}]}}],B=d.string().min(1),V=d.array(B).min(1);d.enum([`windows`,`macos`,`linux`]);const rn=d.enum([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]),an=d.enum([`package`,`cask`,`id`]),H={binaryName:B.optional(),packageInstallArgs:d.array(B).min(1).optional(),packageName:B.optional(),packageTargetKind:an.optional()},on=d.object({...H,type:rn}).strict(),sn=d.object({...H,command:B,type:d.literal(`script`)}).strict(),cn=d.object({...H,command:B,type:d.literal(`binary`)}).strict(),U=d.discriminatedUnion(`type`,[on,sn,cn]),ln=d.enum([`executable-presence`,`installed-version`,`package-presence`,`target-version`]),un=d.array(ln).min(1).refine(e=>new Set(e).size===e.length,{message:`candidate probes must be unique`}).optional(),dn=d.object({command:V,kind:d.literal(`executable`)}).strict(),fn=d.object({command:B,kind:d.literal(`shell-script`)}).strict(),pn=d.discriminatedUnion(`kind`,[dn,fn]);function W(e,t={}){return d.object({arguments:d.array(B).min(1).optional(),binaryName:B.optional(),...t.effect?{effect:pn}:{},id:B,kind:d.literal(e)}).strict()}function G(e,t){return d.object({legacy:d.object({packageNameInMethod:d.literal(!0).optional()}).strict().optional(),probes:un,provider:d.literal(e),target:t}).strict()}const mn=d.discriminatedUnion(`provider`,[G(`bun`,W(`package`)),G(`npm`,W(`package`)),G(`brew`,d.union([W(`formula`),W(`cask`)])),G(`cargo`,W(`package`)),G(`deno`,W(`tool`)),G(`mise`,W(`tool`)),G(`pip`,W(`package`)),G(`uv`,W(`tool`)),G(`winget`,W(`id`)),G(`script`,W(`script`,{effect:!0})),G(`binary`,W(`binary`,{effect:!0}))]),K=d.union([U,mn]),hn=d.object({linux:d.array(K).min(1).optional(),macos:d.array(K).min(1).optional(),windows:d.array(K).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),gn=d.object({cargo:B.optional(),deno:B.optional(),mise:B.optional(),npm:B.optional(),pip:B.optional(),uv:B.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`packages must include at least one package identifier`}),q=d.array(B).min(1).refine(e=>new Set(e).size===e.length,{message:`superseded package identifiers must be unique`}),_n=d.object({cargo:q.optional(),deno:q.optional(),mise:q.optional(),npm:q.optional(),pip:q.optional(),uv:q.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`supersededPackages must include at least one package identifier`}),vn=d.object({command:V,fallbackCommands:d.array(V).min(1).optional(),versionAfter:d.enum([`same-process`,`respawn`]).optional()}).strict(),yn=d.object({command:V.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),bn=d.object({linux:d.array(U).min(1).optional(),macos:d.array(U).min(1).optional(),windows:d.array(U).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),J=d.object({binaryName:B,displayName:B,homepage:d.url().startsWith(`https://`),lookupAliases:d.array(B).min(1).optional(),name:B.regex(/^[a-z0-9][a-z0-9-]*$/),packages:gn.optional(),platforms:bn,selfUpdate:vn.optional(),versionProbe:yn.optional()}).strict(),xn=J.extend({platforms:hn,supersededPackages:_n.optional()}).strict(),Sn=d.array(xn).min(1),Y=d.array(J).min(1),Cn={...ot(Y),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},wn={},Tn=Sn.parse(nn),En=Tn.map(Q),Dn=new Map(En.map(e=>[e.name,e])),On=new Map(Tn.flatMap(e=>e.supersededPackages?[[e.name,e.supersededPackages]]:[]));function kn(){return En}function X(e){let t=Dn.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function An(e){return On.get(e)}function Z(e){if(e===`bun`||e===`npm`)return`npm`;if(e===`cargo`||e===`deno`||e===`mise`||e===`pip`||e===`uv`)return e}function Q(e){let t=wn[e.name],n=In(e.versionProbe,t),r=Mn(e);Nn(e,r);let i=Object.fromEntries(Object.entries(e.platforms).map(([e,t])=>[e,t?.map(jn)])),{supersededPackages:a,...o}=e;return{...o,...r?{packages:r}:{},platforms:i,versionProbe:n}}function jn(e){if(`type`in e)return e;let{provider:t,target:n}=e;if(t===`script`||t===`binary`){let e=n.effect;if(!Pn(e))throw Error(`${t} catalog candidate requires an execution effect`);let r=e.kind===`shell-script`?e.command:Fn(e.command);return{...n.binaryName?{binaryName:n.binaryName}:{},command:r,type:t}}let r=Z(t);return{...n.arguments?{packageInstallArgs:[...n.arguments]}:{},...n.binaryName?{binaryName:n.binaryName}:{},...!r||e.legacy?.packageNameInMethod?{packageName:n.id}:{},...n.kind===`cask`||n.kind===`id`?{packageTargetKind:n.kind}:{},type:t}}function Mn(e){let t={...e.packages};for(let n of Object.values(e.platforms))for(let r of n??[]){if(`type`in r)continue;let n=Z(r.provider);if(!n)continue;let i=t[n];if(i&&i!==r.target.id)throw Error(`${e.name} binds conflicting ${n} package targets: ${i} and ${r.target.id}`);t[n]=r.target.id}return Object.keys(t).length>0?t:void 0}function Nn(e,t){if(!(!e.supersededPackages||!t))for(let[n,r]of Object.entries(e.supersededPackages)){let i=t[n];if(i&&r?.includes(i))throw Error(`${e.name} declares ${n} package ${i} as both current and superseded`)}}function Pn(e){return!e||typeof e!=`object`||!(`kind`in e)||!(`command`in e)?!1:e.kind===`shell-script`?typeof e.command==`string`:e.kind===`executable`&&Array.isArray(e.command)&&e.command.every(e=>typeof e==`string`)}function Fn(e){return e.map(e=>e.includes(` `)?JSON.stringify(e):e).join(` `)}function In(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}X(`amp`),X(`antigravity`),X(`auggie`);const Ln=X(`autohand`),Rn=X(`claude`),zn=X(`codebuddy`),Bn=X(`codewhale`),Vn=X(`codex`);X(`commandcode`);const Hn=X(`copilot`);X(`crush`);const Un=X(`cursor`),Wn=X(`devin`),Gn=X(`droid`);X(`dsh`);const Kn=X(`gemini`);X(`goose`);const qn=X(`grok`),Jn=X(`hermes`),Yn=X(`junie`),Xn=X(`kilo`);X(`kimi`),X(`kiro`);const Zn=X(`mimo`),Qn=X(`omp`),$n=X(`openclaw`),er=X(`opencode`),tr=X(`openhands`),nr=X(`pi`),rr=X(`qoder`);X(`qwen`);const ir=X(`reasonix`),ar=X(`vibe`),[or,sr,cr,lr]=Sn.parse([{name:`deepcode`,displayName:`Deep Code CLI`,homepage:`https://github.com/lessweb/deepcode-cli`,binaryName:`deepcode`,versionProbe:{command:[`deepcode`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}]}},{name:`genie`,displayName:`Genie`,homepage:`https://jsr.io/@nicorio/genie`,binaryName:`genie`,platforms:{windows:[{provider:`deno`,target:{id:`jsr:@nicorio/genie`,kind:`tool`,arguments:[`-A`]},probes:[`executable-presence`]}],macos:[{provider:`deno`,target:{id:`jsr:@nicorio/genie`,kind:`tool`,arguments:[`-A`]},probes:[`executable-presence`]}],linux:[{provider:`deno`,target:{id:`jsr:@nicorio/genie`,kind:`tool`,arguments:[`-A`]},probes:[`executable-presence`]}]}},{name:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,binaryName:`jcode`,versionProbe:{command:[`jcode`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1`,kind:`script`,effect:{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`brew`,target:{id:`1jehuang/jcode/jcode`,kind:`formula`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`}}}]}},{name:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,binaryName:`vtcode`,selfUpdate:{command:[`vtcode`,`update`]},versionProbe:{command:[`vtcode`,`--version`]},platforms:{windows:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1`,kind:`script`,effect:{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}],linux:[{probes:[`executable-presence`],provider:`script`,target:{id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`,effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`}}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}]}}]),ur=Q(or),dr=Q(sr),fr=Q(cr),pr=Q(lr);Object.freeze([`deepcode`,`genie`,`jcode`,`vtcode`]);const $=kn();function mr(){return $}function hr(e){let t=$.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1));if(t)return t;let n=_r(e);return $.find(e=>_r(e.displayName)===n)}function gr(e){return hr(e)}function _r(e){return e.trim().toLowerCase()}export{ar as A,R as B,Qn as C,nr as D,tr as E,J as F,j as G,F as H,Cn as I,Ct as J,jt as K,Y as L,kn as M,An as N,rr as O,Z as P,tn as R,Zn as S,er as T,P as U,I as V,M as W,gt as Y,Kn as _,dr as a,Yn as b,Ln as c,Bn as d,Vn as f,Gn as g,Wn as h,ur as i,X as j,ir as k,Rn as l,Un as m,gr as n,fr as o,Hn as p,Dt as q,mr as r,pr as s,hr as t,zn as u,qn as v,$n as w,Xn as x,Jn as y,Yt as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./capabilities-w7Fbc-bE.mjs";export{e as capabilitiesCommand};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./detect-
|
|
1
|
+
import{t as e}from"./detect-CbD8V1su.mjs";import{r as t}from"./agents-M0IK-EAw.mjs";import{W as n,i as r,n as i,s as a}from"./output-PUVIMxAA.mjs";import{i as o,n as s,r as c,t as l}from"./human-BbO37wBs.mjs";import{t as u}from"./cli-operation-context-CzjG_eom.mjs";import{n as d,t as f}from"./provider-observations-CIGwqiZL.mjs";import{t as p}from"./color-CLDVRyIs.mjs";import m from"node:process";function h(e=n()){let t=new Map(e.map(e=>[e.name,new Set(e.effects)])),r=new Map(e.map(e=>[e.name,new Set(e.flags)]));return{effects:new Set(e.flatMap(e=>e.effects)),effectsByCommand:t,flags:new Set(e.flatMap(e=>e.flags)),flagsByCommand:r}}function g(e,t){let n=e.effectsByCommand.get(`upgrade`),r=e.flagsByCommand.get(`upgrade`),i=e.flagsByCommand.get(`exec`);return{assumeYes:e.flags.has(`--yes`),cacheBypass:e.flags.has(`--no-cache`),cacheRefresh:e.flags.has(`--refresh`),channels:r?.has(`--channel`)?[`stable`,`beta`]:[],colorModes:e.flags.has(`--color`)?[`auto`,`always`,`never`]:[],dryRun:e.flags.has(`--dry-run`),execInstallPolicies:i?.has(`--install`)?[`never`,`if-missing`,`always`]:[],freshnessMetadata:e.effects.has(`network`)&&e.flags.has(`--refresh`)&&e.flags.has(`--no-cache`),idempotencyKey:e.flags.has(`--idempotency-key`),logLevels:e.flags.has(`--log-level`)?[`silent`,`error`,`warn`,`info`,`debug`]:[],quietLogs:e.flags.has(`--quiet`),selfUpgrade:t.canAutoUpdateSelf&&!!(n?.has(`mutation`)&&n.has(`network`)),timeout:e.flags.has(`--timeout`)}}async function _(){let n=u(),o,s;try{[o,s]=await n.run(()=>Promise.all([f({context:n.context}),a({context:n.context})]))}finally{n.dispose()}let c=d(o,e=>{let t=e.availability.kind===`success`;return{available:t,reason:t?void 0:v(e.id)}}),l=g(h(),{canAutoUpdateSelf:s.canAutoUpdate});return r(i({action:`capabilities`,data:{agents:t().map(e=>e.name),features:l,installers:c,outputModes:[`human`,`json`,`ndjson`],platform:{arch:m.arch,os:e()}},target:{kind:`system`,name:`capabilities`}}),y)}function v(e){return e===`winget`&&m.platform!==`win32`||e===`brew`&&m.platform===`win32`?`not-on-platform`:`not-found`}function y(e){if(!e.data)return;let t=l();console.log(p.bold(`
|
|
2
2
|
Quantex Capabilities
|
|
3
3
|
`));for(let n of s([{label:`Platform`,value:`${e.data.platform.os}/${e.data.platform.arch}`},{label:`Output`,value:e.data.outputModes.join(`, `)},{label:`Agents`,value:`${e.data.agents.length} registered (qtx list)`}],{labelStyle:p.bold,width:t}))console.log(n);let n=Object.entries(e.data.installers).map(([e,t])=>({availability:t,name:e}));console.log(p.bold(`
|
|
4
4
|
Installers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,o as t}from"./providers-
|
|
1
|
+
import{a as e,o as t}from"./providers-GfRcOIdh.mjs";import{t as n}from"./agent-inspection-BGC8hn92.mjs";function r(e){let t=n(e),r=e.agent.selfUpdate?[e.agent.selfUpdate.command,...e.agent.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return{agent:e.agent,inspection:t,summary:{agent:{aliases:e.agent.lookupAliases??[],binaryName:e.agent.binaryName,displayName:e.agent.displayName,installMethods:i(e.agent,t.methods),name:e.agent.name,packageName:e.agent.packages?.npm,selfUpdateCommands:r},inspection:{binaryPath:t.binaryPath,installed:t.inPath,installedVersion:t.installedVersion,latestVersion:t.latestVersion,lifecycle:t.lifecycle,sourceLabel:t.inPath?t.sourceLabel:void 0,updateLabel:t.updateLabel}}}}function i(n,r){return r.map(r=>({command:e(n,r),label:t(r),type:r.type}))}export{i as n,r as t};
|
package/dist/cli.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{n as e}from"./child-process-DzIdysOm.mjs";import{n as t}from"./agents-1xVrcX2T.mjs";import{a as n,n as r,o as i,s as a,t as o}from"./cli-context-DI43ouBg.mjs";import{t as s}from"./config-jsaRCEWF.mjs";import{$ as c,C as l,G as u,J as d,K as f,W as p,_ as m,b as h,i as g,n as ee,p as te,r as _,t as v,v as ne,w as y}from"./output-C0TF6WTW.mjs";import{a as re,l as ie,o as ae}from"./providers-BrKmtcci.mjs";import{n as oe,t as se}from"./cli-operation-context-CzjG_eom.mjs";import{t as b}from"./color-CLDVRyIs.mjs";import{a as ce,i as x,n as le,o as S,r as C,t as ue}from"./user-output-CF4UAX0c.mjs";import{t as de}from"./package-manager-BdBKbZci.mjs";import{r as fe}from"./provider-binding-DW-oviNl.mjs";import{t as pe}from"./lifecycle-observations-D78ZkqEX.mjs";import{n as w,t as me}from"./errors-CISYuFuT.mjs";import{t as he}from"./installation-compatibility-vSytV42c.mjs";import{n as ge,t as _e}from"./version-cache-BPRXYft0.mjs";import{d as T,f as E,i as D,n as ve,o as ye,t as be}from"./lifecycle-policy-CPJ-uQku.mjs";import{n as xe}from"./lifecycle-errors-Elpn7QSu.mjs";import{join as O}from"node:path";import k from"node:process";import{mkdir as Se,readFile as A,rename as j,rm as M,writeFile as Ce}from"node:fs/promises";import{createHash as we,randomUUID as Te}from"node:crypto";import{Command as Ee}from"commander";import De from"prompts";function Oe(e){return e.executable.present?{decision:e.dryRun?`dry-run`:`launch`}:e.installPolicy===`never`?{decision:`reject`,errorCode:`AGENT_NOT_INSTALLED`}:e.installPolicy===`prompt`&&!e.interactive?{decision:`reject`,errorCode:`INTERACTION_REQUIRED`}:e.dryRun?{decision:`dry-run`}:{decision:e.installPolicy===`prompt`?`prompt-install`:`install-and-launch`}}async function ke(e,t){let n=await t.observe(e.agentName);if(n.kind===`failure`)return{error:n.error,kind:`observation-failed`};if(!n.value)return{kind:`not-found`};let r=n.value,i=Oe({dryRun:t.dryRun,executable:r.executable,installPolicy:e.installPolicy,interactive:t.interactive,observation:r.observation});if(i.decision===`reject`)return i.errorCode===`AGENT_NOT_INSTALLED`?{kind:`not-installed`,observed:r}:{kind:`interaction-required`,observed:r};let a=()=>[r.executable.path??r.agent.binaryName,...e.args];if(i.decision===`dry-run`)return{argv:a(),kind:`dry-run`,observed:r,wouldInstall:!r.executable.present};if(i.decision===`prompt-install`&&!await t.confirmInstall(r))return{kind:`install-declined`,observed:r};if(i.decision===`install-and-launch`||i.decision===`prompt-install`){await t.onInstallStart?.(r);let n=Ae(await t.install(r),r);if(n)return n;let i=await t.observe(e.agentName);if(i.kind===`failure`)return{error:i.error,kind:`observation-failed`};if(!i.value)return{kind:`install-failed`,observed:r,reason:`agent-missing-after-install`};if(r=i.value,!r.executable.present)return{kind:`install-failed`,observed:r,reason:`executable-absent-after-install`}}return je(await t.process.run({argv:a(),signal:t.signal,stdio:t.stdio,timeoutMs:t.timeoutMs}),r,t.timeoutMs)}function Ae(e,t){switch(e.kind){case`success`:return;case`cancelled`:return{kind:`cancelled`,observed:t,phase:`install`,reason:e.reason};case`timed-out`:return{kind:`timed-out`,observed:t,phase:`install`,timeoutMs:e.timeoutMs};case`failed`:case`indeterminate`:return{kind:`install-failed`,observed:t,reason:e.reason};case`unsupported`:return{kind:`install-failed`,observed:t,reason:e.reason??`Missing installation capability: ${e.capability}`}}}function je(e,t,n){return e.kind===`failure`?e.error.kind===`cancelled`?{kind:`cancelled`,observed:t,phase:`launch`,reason:e.error.message}:e.error.kind===`timed-out`?{kind:`timed-out`,observed:t,phase:`launch`,reason:e.error.message,timeoutMs:n??0}:{kind:`launch-failed`,observed:t,reason:e.error.message}:e.value.exitCode===null?{kind:`launch-failed`,observed:t,reason:e.value.terminationSignal?`Agent terminated by ${e.value.terminationSignal}.`:`Agent process exited without an exit code.`}:{exitCode:e.value.exitCode,kind:`exited`,observed:t,stderr:e.value.stderr,stdout:e.value.stdout}}const Me={cancelOperations:o,createInstallationExecutor:()=>he(),createObservationService:pe,createOperationContext:se,createProcessPort:ge};function Ne(e,t=Me){let n=t.createOperationContext(),r=t.createObservationService(n.context,{resolveLatestVersion:!1}),i=t.createProcessPort(),a=t.createInstallationExecutor();return{dispose:n.dispose,execute:o=>ke(o,{confirmInstall:e.confirmInstall,dryRun:e.dryRun,install:r=>Fe(r,e.timeoutMs??n.context.timeoutMs,a,{cancelOperations:t.cancelOperations,outputMode:e.outputMode,signal:n.context.signal}),interactive:e.interactive,observe:e=>Pe(e,r),onInstallStart:e.onInstallStart,process:i,signal:n.context.signal,stdio:e.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:e.timeoutMs})}}async function Pe(e,t){try{let n=await t.resolveAgentObservation(e);return{kind:`success`,value:n?{agent:n.agent,executable:n.pathExecutable,installedState:n.installedState,methods:n.methods,observation:n.observation}:void 0}}catch(e){return{error:ze(e),kind:`failure`}}}async function Fe(t,n,r,i){try{if(t.executable.present)return{kind:`success`,value:void 0};let e=await Re(r.execute({mode:`apply`,name:t.agent.name,operation:`install`,outputPolicy:oe(i.outputMode),providerTimeoutMs:n,resolveAdoption:Le,signal:i.signal}),n,i.cancelOperations);return e?Ie(e):{kind:`timed-out`,timeoutMs:n}}catch(t){return e(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n??0}:{kind:`cancelled`,reason:t.message}:{kind:`failed`,reason:N(t,`Failed to install agent.`),retryable:!1}}}function Ie(e){if(e.kind===`failure`)return e.error.code===`cancelled`?{kind:`cancelled`,reason:e.error.message}:e.error.code===`timed-out`?{kind:`timed-out`,timeoutMs:typeof e.error.details?.timeoutMs==`number`?e.error.details.timeoutMs:0}:{kind:`failed`,reason:e.error.message||`Failed to initialize the install lifecycle engine.`,retryable:e.error.retryable};let t=e.value;return t.kind===`success`?{kind:`success`,value:void 0}:t.kind===`agent-not-found`?{kind:`failed`,reason:`Unknown agent: ${t.name}`,retryable:!1}:t.error.code===`decision-indeterminate`||t.error.code===`decision-conflict`?{kind:`indeterminate`,reason:t.error.reason}:{kind:`failed`,reason:t.error.reason||`Failed to install agent.`,retryable:t.error.retryable}}async function Le(e){let t=ie([...e.methods],e.resolvedBinaryPath??e.pathExecutable.path);if(!t)return;let n=fe(e.agent,t);if(n)return{binding:n,installedState:de(e.agent,t)}}async function Re(e,t,n){if(t===void 0)return e;let r;try{let i=await Promise.race([e.then(e=>({kind:`completed`,value:e})),new Promise(e=>{r=setTimeout(()=>e({kind:`timed-out`}),t)})]);if(i.kind===`completed`)return i.value;let a=await Be(e,Math.max(1,Math.min(t,250)));if(a!==void 0)return a;await n();return}finally{r&&clearTimeout(r)}}function ze(t){return t instanceof h?{code:`STATE_READ_ERROR`,details:{stateFilePath:y()},kind:`invalid-data`,message:t.message}:e(t)?{kind:t.kind,message:t.message}:{kind:`failed`,message:N(t,`Failed to observe agent execution state.`)}}function N(e,t){return e instanceof Error&&e.message.trim()?e.message:t}async function Be(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function P(){return O(s(),`idempotency`)}function F(e){return O(P(),`${He(e)}.json`)}async function I(e,t={}){let n=F(e),r;try{r=await A(n,`utf8`)}catch(e){if(We(e)&&e.code===`ENOENT`)return{kind:`missing`};throw e}let i;try{i=JSON.parse(r)}catch{return{kind:`invalid`,reason:`invalid-json`}}let a=T(i);return a.kind===`invalid`?a:Date.parse(a.record.expiresAt)<=L(t).getTime()?(await M(n),{kind:`expired`,record:a.record}):a}async function Ve(e,t,n={}){let r=L(n),i=n.ttlMs??864e5,a=T({...t,createdAt:r.toISOString(),expiresAt:new Date(r.getTime()+i).toISOString(),schemaVersion:1});if(a.kind===`invalid`)throw TypeError(`Invalid versioned idempotency record: ${a.reason}`);let o=P(),s=F(e),c=`${s}.${process.pid}.${Te()}.tmp`,l=n.fileSystem?.writeFile??Ce;await Se(o,{recursive:!0});try{await l(c,Ue(a.record),`utf8`),await j(c,s)}catch(e){throw await M(c,{force:!0}),e}}function He(e){return we(`sha256`).update(e,`utf8`).digest(`hex`)}function L(e){let t=e.now?.()??new Date;if(!Number.isFinite(t.getTime()))throw TypeError(`Idempotency clock must return a valid date.`);return t}function Ue(e){return`${JSON.stringify(e,(e,t)=>typeof t!=`object`||!t||Array.isArray(t)?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])),2)}\n`}function We(e){return e instanceof Error&&`code`in e}async function Ge(e){let t=E(e.request),n=E(e.resolvedPlan);switch(e.loaded.kind){case`missing`:return{fingerprints:z(t,n),kind:`reconcile`,reason:`missing`};case`expired`:return{fingerprints:R(e.loaded.record,t,n),kind:`reconcile`,reason:`expired`};case`invalid`:return{fingerprints:z(t,n),invalidReason:e.loaded.reason,kind:`reject`,reason:`invalid-evidence`};case`valid`:return Ke(e,e.loaded.record,t,n)}}async function Ke(e,t,n,r){let i=R(t,n,r);if(t.request.fingerprint!==n)return{fingerprints:i,kind:`reject`,reason:`request-mismatch`};if(t.resolvedPlan.fingerprint!==r)return{fingerprints:i,kind:`reconcile`,reason:`resolved-plan-changed`};switch((await e.validateLive({postcondition:t.postcondition.payload,receipt:t.receipt.payload})).kind){case`satisfied`:return{fingerprints:i,kind:`replay`,result:structuredClone(t.result)};case`drifted`:return{fingerprints:i,kind:`reconcile`,reason:`live-drifted`};case`inconclusive`:return{fingerprints:i,kind:`reconcile`,reason:`live-inconclusive`}}}function R(e,t,n){return{existingPlan:e.resolvedPlan.fingerprint,existingRequest:e.request.fingerprint,requestedPlan:n,requestedRequest:t}}function z(e,t){return{existingPlan:void 0,existingRequest:void 0,requestedPlan:t,requestedRequest:e}}const qe=new Set([`doctor`,`upgrade`]);async function Je(e,t={cache:_e(),getSelfState:l,now:Date.now,resolveFacts:ne}){if(!e.ok||qe.has(e.action))return;let n=r();if(n.outputMode!==`human`||n.quiet)return;let i=await t.resolveFacts(),a=t.now(),o=await te({cache:t.cache,facts:i,nowMs:a,signal:new AbortController().signal});if(!o||!c(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();Ye(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||x(b.yellow(`Quantex CLI ${o.targetVersion} is available (current ${i.currentVersion}). Run \`quantex upgrade\`.`))}function Ye(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}function Xe(e){return e.warnings.some(e=>e.code===`DRY_RUN`)}async function Ze(e){try{return await Qe(e)}catch(t){if(t instanceof h)return nt(e,t);throw t}}async function Qe(e){return lt(e,()=>B(e))}async function B(e){let t=r().timeoutMs,n={expired:!1},i=!1,a,o=async()=>{let o=await et(e,()=>n.expired);return n.expired&&t!==void 0?G(e,t):o.replayedResult?(i=!0,o.replayedResult):(a={action:e.action,...o.policy?{idempotencyPolicy:o.policy}:{},run:e.run,...e.target?{target:e.target}:{}},r().cancelled?tt(e):e.run())},s=t===void 0?await o():await $e(e,o,t,n);return i||!a?s:it(a,s)}async function $e(e,t,n,r){let i;try{let a=new Promise(t=>{i=setTimeout(()=>{r.expired=!0,t(G(e,n))},n)}),o=dt(t,()=>a),s=await Promise.race([o,a]);if(!s.ok&&s.error?.code===`TIMEOUT`){let t=await ut(o,n);s=t&&t.error?.code!==`TIMEOUT`?t:await pt(e,n)}return i!==void 0&&(clearTimeout(i),i=void 0),s}finally{i&&clearTimeout(i)}}async function et(e,t=()=>!1){let n=r();if(!n.idempotencyKey||n.dryRun||!W(e.action)||!e.idempotencyPolicy)return{};let i=await I(n.idempotencyKey);if(n.cancelled||t())return{};if(i.kind===`invalid`)return{replayedResult:g(H(e,n.idempotencyKey,i.reason),V,{force:!0})};let a=typeof e.idempotencyPolicy==`function`?await e.idempotencyPolicy():e.idempotencyPolicy;if(n.cancelled||t())return{};let o=await Ge({loaded:i,request:a.request,resolvedPlan:a.resolvedPlan,validateLive:a.validateLive});if(n.cancelled||t())return{};if(o.kind===`reconcile`)return{policy:a};if(o.kind===`reject`)return{replayedResult:st(e,n.idempotencyKey,o,i)};let s=ct(o.result);return g(s,V,{force:!0}),{replayedResult:s}}function tt(e){return v({action:e.action,error:{code:`CANCELLED`,message:`Command was cancelled before execution could start.`},target:e.target})}async function nt(e,t){return g(v({action:e.action,...xe(t,y(),e.target)}),rt)}function rt(e){e.error&&console.error(b.red(e.error.message))}async function it(e,t){if(r().cancelled)return t;let n=await at(e,t);try{await Je({action:e.action,ok:n.ok})}catch{}return n}function V(e){e.error&&console.error(b.red(e.error.message))}async function at(e,t){let n=r();if(!n.idempotencyKey||!W(e.action)||!t.ok||n.dryRun||Xe(t)||!e.idempotencyPolicy)return t;let i=await e.idempotencyPolicy.captureEvidence(t);if(!i)return t;let a=await I(n.idempotencyKey);return ot(e,n.idempotencyKey,a)||(await Ve(n.idempotencyKey,{postcondition:U(i.postcondition),receipt:U(i.receipt),request:U(e.idempotencyPolicy.request),resolvedPlan:U(e.idempotencyPolicy.resolvedPlan),result:t}),t)}function ot(e,t,n){if(!e.idempotencyPolicy)return;let r=E(e.idempotencyPolicy.request);if(n.kind===`invalid`)return g(H(e,t,n.reason),V,{force:!0});if(!(n.kind!==`valid`||n.record.request.fingerprint===r))return g(v({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{conflict:`concurrent-request-mismatch`,existingAction:n.record.request.payload.action,idempotencyKey:t},message:`Idempotency key ${t} changed while the command was running; replay evidence was not overwritten.`},target:e.target}),V,{force:!0})}function st(e,t,n,r){return n.reason===`invalid-evidence`?g(H(e,t,n.invalidReason),V,{force:!0}):g(v({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.kind===`valid`?r.record.request.payload.action:void 0,idempotencyKey:t,reason:`request-mismatch`},message:`Idempotency key ${t} was already used for a different canonical request.`},target:e.target}),V,{force:!0})}function H(e,t,n){return v({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{idempotencyKey:t,invalidReason:n,reason:`invalid-evidence`},message:`Idempotency key ${t} contains invalid replay evidence (${n}).`},target:e.target})}function ct(e){let t=r();return{...e,meta:{...e.meta,mode:t.outputMode,runId:t.runId,timestamp:new Date().toISOString()}}}function U(e){return{fingerprint:E(e),payload:e}}function W(e){return e===`ensure`||e===`install`||e===`uninstall`||e===`update`}async function lt(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=mt(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);k.once(`SIGINT`,a),k.once(`SIGTERM`,o),r=()=>{k.off(`SIGINT`,a),k.off(`SIGTERM`,o)}});return await Promise.race([ft(t,()=>n),i])}finally{r?.()}}async function ut(e,t){let n=Math.min(t,250);return await Promise.race([e,new Promise(e=>{setTimeout(()=>e(void 0),n)})])}async function dt(t,n){try{return await t()}catch(t){if(e(t)&&t.kind===`timed-out`||r().cancelled)return n();throw t}}async function ft(e,t){try{let n=await e(),i=t();return r().cancelled&&i?i:n}catch(e){let n=t();if(r().cancelled&&n)return n;throw e}}function G(e,t){return v({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target})}async function pt(e,t){return await o(),_({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),g(G(e,t),V,{force:!0})}async function mt(e,t){return await o(),_({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),g(v({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),V,{force:!0})}const ht={cancelOperations:o,createExecutionService:Ne};async function K(e,t,n={},i=ht){let a=r(),o=n.nonInteractive?!1:a.interactive,s=n.assumeYes??ue(),c=n.dryRun??le(),l=n.install??`prompt`,u,d=i.createExecutionService({confirmInstall:async e=>s?!0:!!(await De({initial:!0,message:`${e.agent.displayName} is not installed. Would you like to install it?`,name:`install`,type:`confirm`})).install,dryRun:c,interactive:o,onInstallStart:e=>{x(b.cyan(`Installing ${e.agent.displayName}...`))},outputMode:a.outputMode,timeoutMs:a.timeoutMs}),f=e=>{u??=e,i.cancelOperations()},p=()=>f(`SIGINT`),m=()=>f(`SIGTERM`);k.once(`SIGINT`,p),k.once(`SIGTERM`,m);try{return gt(await d.execute({agentName:e,args:t,installPolicy:l}),{agentName:e,args:t,cancellationSignal:u,installPolicy:l,interactive:o})}finally{k.off(`SIGINT`,p),k.off(`SIGTERM`,m),d.dispose()}}function gt(e,t){if(e.kind===`not-found`)return J({agent:{name:t.agentName},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t.agentName}`,execution:q(t,!1)}),w(`AGENT_NOT_FOUND`);if(e.kind===`observation-failed`)return _t(t.agentName,e.error);let{observed:n}=e,r=n.agent;if(e.kind===`not-installed`||e.kind===`interaction-required`){let i=e.kind===`interaction-required`;return J({agent:r,errorCode:i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`,errorMessage:i?`${r.displayName} is not installed and interactive installation is disabled.`:`${r.displayName} is not installed.`,execution:{...q(t,!1),installGuidance:yt(r,n.methods,t.args)}}),w(i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`)}switch(e.kind){case`install-declined`:return ce(b.yellow(`Installation cancelled.`)),1;case`install-failed`:return C(b.red(`Failed to install ${r.displayName}.`)),w(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&S(b.cyan(`Dry run: would install ${r.displayName}.`)),bt({agent:r,execution:q(t,!0),message:`Dry run: would run ${e.argv.join(` `)}`}),0;case`launch-failed`:return C(b.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return C(b.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),w(`CANCELLED`);case`timed-out`:return C(b.red(e.phase===`install`?`Installing ${r.displayName} timed out after ${e.timeoutMs}ms.`:`${r.displayName} timed out after ${e.timeoutMs}ms.`)),w(`TIMEOUT`);case`exited`:return e.exitCode}}function q(e,t){return{args:e.args,installPolicy:e.installPolicy,installed:t,interactive:e.interactive,launched:!1}}function _t(e,t){let n=vt(t.code)?t.code:`INSTALL_FAILED`;return r().outputMode===`human`?C(b.red(t.message)):g(v({action:`exec`,error:{code:n,details:t.details,message:t.message},target:{kind:`agent`,name:e}}),()=>{}),w(n)}function vt(e){return e!==void 0&&me.includes(e)}function yt(e,t,n){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:re(e,t),label:ae(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...n].join(` `)}}function J(e){if(r().outputMode===`human`){C(b.red(e.errorMessage));let t=e.execution.installGuidance;t&&(S(b.dim(`Try: ${t.suggestedEnsureCommand}`)),S(b.dim(`Or: ${t.suggestedExecCommand}`)));return}g(v({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function bt(e){if(r().outputMode===`human`){S(b.cyan(e.message));return}g(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}const xt={capabilities:async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-CNRjwfBz.mjs`);await Y({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-BdWPLakC.mjs`);await Y({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-Dp5vWO4u.mjs`),[n,r,i]=e;await Y({action:`config`,run:()=>t(n,r,i),target:{kind:`config`,name:r}})},doctor:async()=>{let{doctorCommand:e}=await import(`./doctor-2AK-8DXd.mjs`);await Y({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],[{ensureCommandWithRoute:n},{selectInstallationEngineRoute:r}]=await Promise.all([import(`./ensure-CgQQCiv-.mjs`),import(`./installation-routing-B16E-ssd.mjs`)]),i=r(`ensure`);await Y({action:`ensure`,idempotencyPolicy:()=>D(`ensure`,t),run:()=>n(t,i),target:{kind:`agent`,name:t}})},exec:async(...e)=>{let[t,n,r,i]=e,a=r.install??`never`;if(a!==`never`&&a!==`if-missing`&&a!==`always`){k.stdout.write(`${b.red(`Unknown install policy: ${a}`)}\n`),k.exitCode=2;return}let o=Ct(i);k.exitCode=await K(t,o.length>0?o:n,{install:a,nonInteractive:i.optsWithGlobals().nonInteractive})},info:async(...e)=>{let t=e[0],{infoCommand:n}=await import(`./info-1VdVWaZU.mjs`);await Y({action:`info`,run:()=>n(t),target:{kind:`agent`,name:t}})},inspect:async(...e)=>{let t=e[0],{inspectCommand:n}=await import(`./inspect-DvcoLIJ6.mjs`);await Y({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let[{installCommandWithRoute:t},{selectInstallationEngineRoute:n}]=await Promise.all([import(`./install-CllMI5Vl.mjs`),import(`./installation-routing-B16E-ssd.mjs`)]),r=n(`install`),i=ye(e[0]),a=i.length===1;await Y({action:`install`,...a?{idempotencyPolicy:()=>D(`install`,i[0])}:{idempotencyPolicy:()=>ve(i)},run:()=>t(i,r),target:a?{kind:`agent`,name:i[0]}:{kind:`agent`,name:i.join(`,`)}})},list:async()=>{let{listCommand:e}=await import(`./list-CmbDbwzJ.mjs`);await Y({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-BvxcLaLm.mjs`);await Y({action:`resolve`,run:()=>n(t),target:{kind:`agent`,name:t}})},schema:async(...e)=>{let t=e[0],{schemaCommand:n}=await import(`./schema-Dg3sXQ1u.mjs`);await Y({action:`schema`,run:()=>n(t),target:{kind:`system`,name:`schema`}})},uninstall:async(...e)=>{let t=e[0],{uninstallCommand:n}=await import(`./uninstall-SDNnTH6W.mjs`);await Y({action:`uninstall`,idempotencyPolicy:()=>be(t),run:()=>n(t),target:{kind:`agent`,name:t}})},update:async(...e)=>{let[t,n]=e,{createUpdateCommandInvocation:r}=await import(`./update-B966hXRX.mjs`),i=r(t,n.all??!1,n.managed??!1);try{await Y({action:`update`,...i.idempotencyPolicy?{idempotencyPolicy:i.idempotencyPolicy}:{},run:i.run,target:{kind:`agent`,name:t}})}finally{i.dispose()}},upgrade:async(...e)=>{let t=e[0],{resolveUpgradeChannelOption:n,upgradeCommand:r}=await import(`./upgrade-CykBo6ap.mjs`);await Y({action:`upgrade`,run:()=>r({channel:n(t.channel),check:t.check??!1}),target:{kind:`self`,name:`quantex`}})}};function St(e){return xt[e]}function Ct(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}async function Y(e){let{getExitCodeForResult:t}=await import(`./errors-euUlFXri.mjs`);k.exitCode=t(await Ze(e))}function wt(){let e=p();d(e,e.map(e=>e.schema.name));let t=new Ee;t.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`);for(let e of u())t.option(e.flags,e.description,e.defaultValue);t.version(m()),t.hook(`preAction`,(e,t)=>{try{a(i(f(t.optsWithGlobals())))}catch(e){k.stdout.write(`${b.red(e instanceof Error?e.message:String(e))}\n`),k.exit(2)}}),t.hook(`postAction`,()=>{n()});for(let n of e){let e=t.command(n.name).description(n.description);for(let t of n.aliases)e.alias(t);for(let t of n.arguments)e.argument(t.syntax,t.description);n.allowUnknownOptions&&e.allowUnknownOption();for(let t of n.options)e.option(t.flags,t.description,t.defaultValue);e.action(St(n.handlerId))}return t}const Tt=new Map(u().map(e=>[Dt(e.flags),e]));function Et(e,t,n){let r={},i=0;for(;i<e.length;){let a=e[i],o=Tt.get(a);if(o){if(o.value===`string`){let t=e[i+1];if(!t)return Ot(a);r[o.id]=t,i+=2}else r[o.id]=!0,i+=1;continue}if(a.startsWith(`-`)||t.has(a))return;let s=Z(r.output);return r.json===!0||s===`json`||s===`ndjson`||n.agentFriendly&&s!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(i+1),agentName:a,color:Z(r.color),dryRun:X(r.dryRun),idempotencyKey:Z(r.idempotencyKey),logLevel:Z(r.logLevel),noCache:X(r.noCache),nonInteractive:X(r.nonInteractive),quiet:X(r.quiet),refresh:X(r.refresh),runId:Z(r.runId),timeout:Z(r.timeout),yes:X(r.yes)}}}function Dt(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Global option requires a long flag: ${e}`);return t[0]}function X(e){return e===!0}function Z(e){return typeof e==`string`?e:void 0}function Ot(e){return{agentArgs:[],agentName:``,error:`${e} requires a value`}}const Q=wt(),kt=new Set([...Q.commands.map(e=>e.name()),...Q.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),$=Et(k.argv.slice(2),kt,{agentFriendly:k.stdin.isTTY===!1||k.stdout.isTTY===!1});if($?.error&&(console.log(b.red($.error)),k.exit(2)),$&&t($.agentName)){try{a(i({color:$.color,dryRun:$.dryRun,idempotencyKey:$.idempotencyKey,logLevel:$.logLevel,noCache:$.noCache,nonInteractive:$.nonInteractive,quiet:$.quiet,refresh:$.refresh,runId:$.runId,timeout:$.timeout,yes:$.yes}))}catch(e){console.log(b.red(e instanceof Error?e.message:String(e))),k.exit(2)}try{let e=await K($.agentName,$.agentArgs,{assumeYes:$.yes,dryRun:$.dryRun,nonInteractive:$.nonInteractive});k.exit(e)}finally{n()}}await Q.parseAsync();export{};
|
|
2
|
+
import{n as e}from"./child-process-DzIdysOm.mjs";import{n as t}from"./agents-M0IK-EAw.mjs";import{a as n,n as r,o as i,s as a,t as o}from"./cli-context-DI43ouBg.mjs";import{t as s}from"./config-jsaRCEWF.mjs";import{$ as c,C as l,G as u,J as d,K as f,W as p,_ as m,b as h,i as g,n as ee,p as te,r as _,t as v,v as ne,w as y}from"./output-PUVIMxAA.mjs";import{a as re,l as ie,o as ae}from"./providers-GfRcOIdh.mjs";import{n as oe,t as se}from"./cli-operation-context-CzjG_eom.mjs";import{t as b}from"./color-CLDVRyIs.mjs";import{a as ce,i as x,n as le,o as S,r as C,t as ue}from"./user-output-CF4UAX0c.mjs";import{t as de}from"./package-manager-NlPhhpQl.mjs";import{r as fe}from"./provider-binding-DW-oviNl.mjs";import{t as pe}from"./lifecycle-observations-xZ--ogpK.mjs";import{n as w,t as me}from"./errors-CISYuFuT.mjs";import{d as T,f as E,i as D,n as he,o as ge,t as _e}from"./lifecycle-policy-BMJz8c77.mjs";import{n as ve,t as ye}from"./version-cache-BbKTS491.mjs";import{n as be}from"./lifecycle-errors-D9MEtJ8Y.mjs";import{t as xe}from"./installation-compatibility--84wtWNO.mjs";import{join as O}from"node:path";import k from"node:process";import{mkdir as Se,readFile as A,rename as j,rm as M,writeFile as Ce}from"node:fs/promises";import{createHash as we,randomUUID as Te}from"node:crypto";import{Command as Ee}from"commander";import De from"prompts";function Oe(e){return e.executable.present?{decision:e.dryRun?`dry-run`:`launch`}:e.installPolicy===`never`?{decision:`reject`,errorCode:`AGENT_NOT_INSTALLED`}:e.installPolicy===`prompt`&&!e.interactive?{decision:`reject`,errorCode:`INTERACTION_REQUIRED`}:e.dryRun?{decision:`dry-run`}:{decision:e.installPolicy===`prompt`?`prompt-install`:`install-and-launch`}}function N(){return O(s(),`idempotency`)}function P(e){return O(N(),`${Ae(e)}.json`)}async function F(e,t={}){let n=P(e),r;try{r=await A(n,`utf8`)}catch(e){if(Me(e)&&e.code===`ENOENT`)return{kind:`missing`};throw e}let i;try{i=JSON.parse(r)}catch{return{kind:`invalid`,reason:`invalid-json`}}let a=T(i);return a.kind===`invalid`?a:Date.parse(a.record.expiresAt)<=I(t).getTime()?(await M(n),{kind:`expired`,record:a.record}):a}async function ke(e,t,n={}){let r=I(n),i=n.ttlMs??864e5,a=T({...t,createdAt:r.toISOString(),expiresAt:new Date(r.getTime()+i).toISOString(),schemaVersion:1});if(a.kind===`invalid`)throw TypeError(`Invalid versioned idempotency record: ${a.reason}`);let o=N(),s=P(e),c=`${s}.${process.pid}.${Te()}.tmp`,l=n.fileSystem?.writeFile??Ce;await Se(o,{recursive:!0});try{await l(c,je(a.record),`utf8`),await j(c,s)}catch(e){throw await M(c,{force:!0}),e}}function Ae(e){return we(`sha256`).update(e,`utf8`).digest(`hex`)}function I(e){let t=e.now?.()??new Date;if(!Number.isFinite(t.getTime()))throw TypeError(`Idempotency clock must return a valid date.`);return t}function je(e){return`${JSON.stringify(e,(e,t)=>typeof t!=`object`||!t||Array.isArray(t)?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])),2)}\n`}function Me(e){return e instanceof Error&&`code`in e}async function Ne(e){let t=E(e.request),n=E(e.resolvedPlan);switch(e.loaded.kind){case`missing`:return{fingerprints:R(t,n),kind:`reconcile`,reason:`missing`};case`expired`:return{fingerprints:L(e.loaded.record,t,n),kind:`reconcile`,reason:`expired`};case`invalid`:return{fingerprints:R(t,n),invalidReason:e.loaded.reason,kind:`reject`,reason:`invalid-evidence`};case`valid`:return Pe(e,e.loaded.record,t,n)}}async function Pe(e,t,n,r){let i=L(t,n,r);if(t.request.fingerprint!==n)return{fingerprints:i,kind:`reject`,reason:`request-mismatch`};if(t.resolvedPlan.fingerprint!==r)return{fingerprints:i,kind:`reconcile`,reason:`resolved-plan-changed`};switch((await e.validateLive({postcondition:t.postcondition.payload,receipt:t.receipt.payload})).kind){case`satisfied`:return{fingerprints:i,kind:`replay`,result:structuredClone(t.result)};case`drifted`:return{fingerprints:i,kind:`reconcile`,reason:`live-drifted`};case`inconclusive`:return{fingerprints:i,kind:`reconcile`,reason:`live-inconclusive`}}}function L(e,t,n){return{existingPlan:e.resolvedPlan.fingerprint,existingRequest:e.request.fingerprint,requestedPlan:n,requestedRequest:t}}function R(e,t){return{existingPlan:void 0,existingRequest:void 0,requestedPlan:t,requestedRequest:e}}const Fe=new Set([`doctor`,`upgrade`]);async function Ie(e,t={cache:ye(),getSelfState:l,now:Date.now,resolveFacts:ne}){if(!e.ok||Fe.has(e.action))return;let n=r();if(n.outputMode!==`human`||n.quiet)return;let i=await t.resolveFacts(),a=t.now(),o=await te({cache:t.cache,facts:i,nowMs:a,signal:new AbortController().signal});if(!o||!c(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();Le(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||x(b.yellow(`Quantex CLI ${o.targetVersion} is available (current ${i.currentVersion}). Run \`quantex upgrade\`.`))}function Le(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}function Re(e){return e.warnings.some(e=>e.code===`DRY_RUN`)}async function ze(e){try{return await Be(e)}catch(t){if(t instanceof h)return We(e,t);throw t}}async function Be(e){return Ze(e,()=>z(e))}async function z(e){let t=r().timeoutMs,n={expired:!1},i=!1,a,o=async()=>{let o=await He(e,()=>n.expired);return n.expired&&t!==void 0?W(e,t):o.replayedResult?(i=!0,o.replayedResult):(a={action:e.action,...o.policy?{idempotencyPolicy:o.policy}:{},run:e.run,...e.target?{target:e.target}:{}},r().cancelled?Ue(e):e.run())},s=t===void 0?await o():await Ve(e,o,t,n);return i||!a?s:Ke(a,s)}async function Ve(e,t,n,r){let i;try{let a=new Promise(t=>{i=setTimeout(()=>{r.expired=!0,t(W(e,n))},n)}),o=$e(t,()=>a),s=await Promise.race([o,a]);if(!s.ok&&s.error?.code===`TIMEOUT`){let t=await Qe(o,n);s=t&&t.error?.code!==`TIMEOUT`?t:await tt(e,n)}return i!==void 0&&(clearTimeout(i),i=void 0),s}finally{i&&clearTimeout(i)}}async function He(e,t=()=>!1){let n=r();if(!n.idempotencyKey||n.dryRun||!U(e.action)||!e.idempotencyPolicy)return{};let i=await F(n.idempotencyKey);if(n.cancelled||t())return{};if(i.kind===`invalid`)return{replayedResult:g(V(e,n.idempotencyKey,i.reason),B,{force:!0})};let a=typeof e.idempotencyPolicy==`function`?await e.idempotencyPolicy():e.idempotencyPolicy;if(n.cancelled||t())return{};let o=await Ne({loaded:i,request:a.request,resolvedPlan:a.resolvedPlan,validateLive:a.validateLive});if(n.cancelled||t())return{};if(o.kind===`reconcile`)return{policy:a};if(o.kind===`reject`)return{replayedResult:Ye(e,n.idempotencyKey,o,i)};let s=Xe(o.result);return g(s,B,{force:!0}),{replayedResult:s}}function Ue(e){return v({action:e.action,error:{code:`CANCELLED`,message:`Command was cancelled before execution could start.`},target:e.target})}async function We(e,t){return g(v({action:e.action,...be(t,y(),e.target)}),Ge)}function Ge(e){e.error&&console.error(b.red(e.error.message))}async function Ke(e,t){if(r().cancelled)return t;let n=await qe(e,t);try{await Ie({action:e.action,ok:n.ok})}catch{}return n}function B(e){e.error&&console.error(b.red(e.error.message))}async function qe(e,t){let n=r();if(!n.idempotencyKey||!U(e.action)||!t.ok||n.dryRun||Re(t)||!e.idempotencyPolicy)return t;let i=await e.idempotencyPolicy.captureEvidence(t);if(!i)return t;let a=await F(n.idempotencyKey);return Je(e,n.idempotencyKey,a)||(await ke(n.idempotencyKey,{postcondition:H(i.postcondition),receipt:H(i.receipt),request:H(e.idempotencyPolicy.request),resolvedPlan:H(e.idempotencyPolicy.resolvedPlan),result:t}),t)}function Je(e,t,n){if(!e.idempotencyPolicy)return;let r=E(e.idempotencyPolicy.request);if(n.kind===`invalid`)return g(V(e,t,n.reason),B,{force:!0});if(!(n.kind!==`valid`||n.record.request.fingerprint===r))return g(v({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{conflict:`concurrent-request-mismatch`,existingAction:n.record.request.payload.action,idempotencyKey:t},message:`Idempotency key ${t} changed while the command was running; replay evidence was not overwritten.`},target:e.target}),B,{force:!0})}function Ye(e,t,n,r){return n.reason===`invalid-evidence`?g(V(e,t,n.invalidReason),B,{force:!0}):g(v({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.kind===`valid`?r.record.request.payload.action:void 0,idempotencyKey:t,reason:`request-mismatch`},message:`Idempotency key ${t} was already used for a different canonical request.`},target:e.target}),B,{force:!0})}function V(e,t,n){return v({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{idempotencyKey:t,invalidReason:n,reason:`invalid-evidence`},message:`Idempotency key ${t} contains invalid replay evidence (${n}).`},target:e.target})}function Xe(e){let t=r();return{...e,meta:{...e.meta,mode:t.outputMode,runId:t.runId,timestamp:new Date().toISOString()}}}function H(e){return{fingerprint:E(e),payload:e}}function U(e){return e===`ensure`||e===`install`||e===`uninstall`||e===`update`}async function Ze(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=nt(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);k.once(`SIGINT`,a),k.once(`SIGTERM`,o),r=()=>{k.off(`SIGINT`,a),k.off(`SIGTERM`,o)}});return await Promise.race([et(t,()=>n),i])}finally{r?.()}}async function Qe(e,t){let n=Math.min(t,250);return await Promise.race([e,new Promise(e=>{setTimeout(()=>e(void 0),n)})])}async function $e(t,n){try{return await t()}catch(t){if(e(t)&&t.kind===`timed-out`||r().cancelled)return n();throw t}}async function et(e,t){try{let n=await e(),i=t();return r().cancelled&&i?i:n}catch(e){let n=t();if(r().cancelled&&n)return n;throw e}}function W(e,t){return v({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target})}async function tt(e,t){return await o(),_({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),g(W(e,t),B,{force:!0})}async function nt(e,t){return await o(),_({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),g(v({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),B,{force:!0})}async function rt(e,t){let n=await t.observe(e.agentName);if(n.kind===`failure`)return{error:n.error,kind:`observation-failed`};if(!n.value)return{kind:`not-found`};let r=n.value,i=Oe({dryRun:t.dryRun,executable:r.executable,installPolicy:e.installPolicy,interactive:t.interactive,observation:r.observation});if(i.decision===`reject`)return i.errorCode===`AGENT_NOT_INSTALLED`?{kind:`not-installed`,observed:r}:{kind:`interaction-required`,observed:r};let a=()=>[r.executable.path??r.agent.binaryName,...e.args];if(i.decision===`dry-run`)return{argv:a(),kind:`dry-run`,observed:r,wouldInstall:!r.executable.present};if(i.decision===`prompt-install`&&!await t.confirmInstall(r))return{kind:`install-declined`,observed:r};if(i.decision===`install-and-launch`||i.decision===`prompt-install`){await t.onInstallStart?.(r);let n=it(await t.install(r),r);if(n)return n;let i=await t.observe(e.agentName);if(i.kind===`failure`)return{error:i.error,kind:`observation-failed`};if(!i.value)return{kind:`install-failed`,observed:r,reason:`agent-missing-after-install`};if(r=i.value,!r.executable.present)return{kind:`install-failed`,observed:r,reason:`executable-absent-after-install`}}return at(await t.process.run({argv:a(),signal:t.signal,stdio:t.stdio,timeoutMs:t.timeoutMs}),r,t.timeoutMs)}function it(e,t){switch(e.kind){case`success`:return;case`cancelled`:return{kind:`cancelled`,observed:t,phase:`install`,reason:e.reason};case`timed-out`:return{kind:`timed-out`,observed:t,phase:`install`,timeoutMs:e.timeoutMs};case`failed`:case`indeterminate`:return{kind:`install-failed`,observed:t,reason:e.reason};case`unsupported`:return{kind:`install-failed`,observed:t,reason:e.reason??`Missing installation capability: ${e.capability}`}}}function at(e,t,n){return e.kind===`failure`?e.error.kind===`cancelled`?{kind:`cancelled`,observed:t,phase:`launch`,reason:e.error.message}:e.error.kind===`timed-out`?{kind:`timed-out`,observed:t,phase:`launch`,reason:e.error.message,timeoutMs:n??0}:{kind:`launch-failed`,observed:t,reason:e.error.message}:e.value.exitCode===null?{kind:`launch-failed`,observed:t,reason:e.value.terminationSignal?`Agent terminated by ${e.value.terminationSignal}.`:`Agent process exited without an exit code.`}:{exitCode:e.value.exitCode,kind:`exited`,observed:t,stderr:e.value.stderr,stdout:e.value.stdout}}const ot={cancelOperations:o,createInstallationExecutor:()=>xe(),createObservationService:pe,createOperationContext:se,createProcessPort:ve};function st(e,t=ot){let n=t.createOperationContext(),r=t.createObservationService(n.context,{resolveLatestVersion:!1}),i=t.createProcessPort(),a=t.createInstallationExecutor();return{dispose:n.dispose,execute:o=>rt(o,{confirmInstall:e.confirmInstall,dryRun:e.dryRun,install:r=>lt(r,e.timeoutMs??n.context.timeoutMs,a,{cancelOperations:t.cancelOperations,outputMode:e.outputMode,signal:n.context.signal}),interactive:e.interactive,observe:e=>ct(e,r),onInstallStart:e.onInstallStart,process:i,signal:n.context.signal,stdio:e.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:e.timeoutMs})}}async function ct(e,t){try{let n=await t.resolveAgentObservation(e);return{kind:`success`,value:n?{agent:n.agent,executable:n.pathExecutable,installedState:n.installedState,methods:n.methods,observation:n.observation}:void 0}}catch(e){return{error:pt(e),kind:`failure`}}}async function lt(t,n,r,i){try{if(t.executable.present)return{kind:`success`,value:void 0};let e=await ft(r.execute({mode:`apply`,name:t.agent.name,operation:`install`,outputPolicy:oe(i.outputMode),providerTimeoutMs:n,resolveAdoption:dt,signal:i.signal}),n,i.cancelOperations);return e?ut(e):{kind:`timed-out`,timeoutMs:n}}catch(t){return e(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n??0}:{kind:`cancelled`,reason:t.message}:{kind:`failed`,reason:G(t,`Failed to install agent.`),retryable:!1}}}function ut(e){if(e.kind===`failure`)return e.error.code===`cancelled`?{kind:`cancelled`,reason:e.error.message}:e.error.code===`timed-out`?{kind:`timed-out`,timeoutMs:typeof e.error.details?.timeoutMs==`number`?e.error.details.timeoutMs:0}:{kind:`failed`,reason:e.error.message||`Failed to initialize the install lifecycle engine.`,retryable:e.error.retryable};let t=e.value;return t.kind===`success`?{kind:`success`,value:void 0}:t.kind===`agent-not-found`?{kind:`failed`,reason:`Unknown agent: ${t.name}`,retryable:!1}:t.error.code===`decision-indeterminate`||t.error.code===`decision-conflict`?{kind:`indeterminate`,reason:t.error.reason}:{kind:`failed`,reason:t.error.reason||`Failed to install agent.`,retryable:t.error.retryable}}async function dt(e){let t=ie([...e.methods],e.resolvedBinaryPath??e.pathExecutable.path);if(!t)return;let n=fe(e.agent,t);if(n)return{binding:n,installedState:de(e.agent,t)}}async function ft(e,t,n){if(t===void 0)return e;let r;try{let i=await Promise.race([e.then(e=>({kind:`completed`,value:e})),new Promise(e=>{r=setTimeout(()=>e({kind:`timed-out`}),t)})]);if(i.kind===`completed`)return i.value;let a=await mt(e,Math.max(1,Math.min(t,250)));if(a!==void 0)return a;await n();return}finally{r&&clearTimeout(r)}}function pt(t){return t instanceof h?{code:`STATE_READ_ERROR`,details:{stateFilePath:y()},kind:`invalid-data`,message:t.message}:e(t)?{kind:t.kind,message:t.message}:{kind:`failed`,message:G(t,`Failed to observe agent execution state.`)}}function G(e,t){return e instanceof Error&&e.message.trim()?e.message:t}async function mt(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}const ht={cancelOperations:o,createExecutionService:st};async function K(e,t,n={},i=ht){let a=r(),o=n.nonInteractive?!1:a.interactive,s=n.assumeYes??ue(),c=n.dryRun??le(),l=n.install??`prompt`,u,d=i.createExecutionService({confirmInstall:async e=>s?!0:!!(await De({initial:!0,message:`${e.agent.displayName} is not installed. Would you like to install it?`,name:`install`,type:`confirm`})).install,dryRun:c,interactive:o,onInstallStart:e=>{x(b.cyan(`Installing ${e.agent.displayName}...`))},outputMode:a.outputMode,timeoutMs:a.timeoutMs}),f=e=>{u??=e,i.cancelOperations()},p=()=>f(`SIGINT`),m=()=>f(`SIGTERM`);k.once(`SIGINT`,p),k.once(`SIGTERM`,m);try{return gt(await d.execute({agentName:e,args:t,installPolicy:l}),{agentName:e,args:t,cancellationSignal:u,installPolicy:l,interactive:o})}finally{k.off(`SIGINT`,p),k.off(`SIGTERM`,m),d.dispose()}}function gt(e,t){if(e.kind===`not-found`)return J({agent:{name:t.agentName},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t.agentName}`,execution:q(t,!1)}),w(`AGENT_NOT_FOUND`);if(e.kind===`observation-failed`)return _t(t.agentName,e.error);let{observed:n}=e,r=n.agent;if(e.kind===`not-installed`||e.kind===`interaction-required`){let i=e.kind===`interaction-required`;return J({agent:r,errorCode:i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`,errorMessage:i?`${r.displayName} is not installed and interactive installation is disabled.`:`${r.displayName} is not installed.`,execution:{...q(t,!1),installGuidance:yt(r,n.methods,t.args)}}),w(i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`)}switch(e.kind){case`install-declined`:return ce(b.yellow(`Installation cancelled.`)),1;case`install-failed`:return C(b.red(`Failed to install ${r.displayName}.`)),w(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&S(b.cyan(`Dry run: would install ${r.displayName}.`)),bt({agent:r,execution:q(t,!0),message:`Dry run: would run ${e.argv.join(` `)}`}),0;case`launch-failed`:return C(b.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return C(b.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),w(`CANCELLED`);case`timed-out`:return C(b.red(e.phase===`install`?`Installing ${r.displayName} timed out after ${e.timeoutMs}ms.`:`${r.displayName} timed out after ${e.timeoutMs}ms.`)),w(`TIMEOUT`);case`exited`:return e.exitCode}}function q(e,t){return{args:e.args,installPolicy:e.installPolicy,installed:t,interactive:e.interactive,launched:!1}}function _t(e,t){let n=vt(t.code)?t.code:`INSTALL_FAILED`;return r().outputMode===`human`?C(b.red(t.message)):g(v({action:`exec`,error:{code:n,details:t.details,message:t.message},target:{kind:`agent`,name:e}}),()=>{}),w(n)}function vt(e){return e!==void 0&&me.includes(e)}function yt(e,t,n){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:re(e,t),label:ae(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...n].join(` `)}}function J(e){if(r().outputMode===`human`){C(b.red(e.errorMessage));let t=e.execution.installGuidance;t&&(S(b.dim(`Try: ${t.suggestedEnsureCommand}`)),S(b.dim(`Or: ${t.suggestedExecCommand}`)));return}g(v({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function bt(e){if(r().outputMode===`human`){S(b.cyan(e.message));return}g(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}const xt={capabilities:async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-DdzOucOL.mjs`);await Y({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-DSjvy4Bk.mjs`);await Y({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-DiKH7R9Y.mjs`),[n,r,i]=e;await Y({action:`config`,run:()=>t(n,r,i),target:{kind:`config`,name:r}})},doctor:async()=>{let{doctorCommand:e}=await import(`./doctor-CmTohDAe.mjs`);await Y({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],[{ensureCommandWithRoute:n},{selectInstallationEngineRoute:r}]=await Promise.all([import(`./ensure-tfMV3Ohr.mjs`),import(`./installation-routing-B16E-ssd.mjs`)]),i=r(`ensure`);await Y({action:`ensure`,idempotencyPolicy:()=>D(`ensure`,t),run:()=>n(t,i),target:{kind:`agent`,name:t}})},exec:async(...e)=>{let[t,n,r,i]=e,a=r.install??`never`;if(a!==`never`&&a!==`if-missing`&&a!==`always`){k.stdout.write(`${b.red(`Unknown install policy: ${a}`)}\n`),k.exitCode=2;return}let o=Ct(i);k.exitCode=await K(t,o.length>0?o:n,{install:a,nonInteractive:i.optsWithGlobals().nonInteractive})},info:async(...e)=>{let t=e[0],{infoCommand:n}=await import(`./info-MZu-jL3s.mjs`);await Y({action:`info`,run:()=>n(t),target:{kind:`agent`,name:t}})},inspect:async(...e)=>{let t=e[0],{inspectCommand:n}=await import(`./inspect-Bwwy2d7a.mjs`);await Y({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let[{installCommandWithRoute:t},{selectInstallationEngineRoute:n}]=await Promise.all([import(`./install-D6HUqnaB.mjs`),import(`./installation-routing-B16E-ssd.mjs`)]),r=n(`install`),i=ge(e[0]),a=i.length===1;await Y({action:`install`,...a?{idempotencyPolicy:()=>D(`install`,i[0])}:{idempotencyPolicy:()=>he(i)},run:()=>t(i,r),target:a?{kind:`agent`,name:i[0]}:{kind:`agent`,name:i.join(`,`)}})},list:async()=>{let{listCommand:e}=await import(`./list-C0ELcSkZ.mjs`);await Y({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-DLdjUMyk.mjs`);await Y({action:`resolve`,run:()=>n(t),target:{kind:`agent`,name:t}})},schema:async(...e)=>{let t=e[0],{schemaCommand:n}=await import(`./schema-urQvQbNJ.mjs`);await Y({action:`schema`,run:()=>n(t),target:{kind:`system`,name:`schema`}})},uninstall:async(...e)=>{let t=e[0],{uninstallCommand:n}=await import(`./uninstall-C04YMfwl.mjs`);await Y({action:`uninstall`,idempotencyPolicy:()=>_e(t),run:()=>n(t),target:{kind:`agent`,name:t}})},update:async(...e)=>{let[t,n]=e,{createUpdateCommandInvocation:r}=await import(`./update-CMjaldgI.mjs`),i=r(t,n.all??!1,n.managed??!1);try{await Y({action:`update`,...i.idempotencyPolicy?{idempotencyPolicy:i.idempotencyPolicy}:{},run:i.run,target:{kind:`agent`,name:t}})}finally{i.dispose()}},upgrade:async(...e)=>{let t=e[0],{resolveUpgradeChannelOption:n,upgradeCommand:r}=await import(`./upgrade-BrOGjSft.mjs`);await Y({action:`upgrade`,run:()=>r({channel:n(t.channel),check:t.check??!1}),target:{kind:`self`,name:`quantex`}})}};function St(e){return xt[e]}function Ct(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}async function Y(e){let{getExitCodeForResult:t}=await import(`./errors-euUlFXri.mjs`);k.exitCode=t(await ze(e))}function wt(){let e=p();d(e,e.map(e=>e.schema.name));let t=new Ee;t.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`);for(let e of u())t.option(e.flags,e.description,e.defaultValue);t.version(m()),t.hook(`preAction`,(e,t)=>{try{a(i(f(t.optsWithGlobals())))}catch(e){k.stdout.write(`${b.red(e instanceof Error?e.message:String(e))}\n`),k.exit(2)}}),t.hook(`postAction`,()=>{n()});for(let n of e){let e=t.command(n.name).description(n.description);for(let t of n.aliases)e.alias(t);for(let t of n.arguments)e.argument(t.syntax,t.description);n.allowUnknownOptions&&e.allowUnknownOption();for(let t of n.options)e.option(t.flags,t.description,t.defaultValue);e.action(St(n.handlerId))}return t}const Tt=new Map(u().map(e=>[Dt(e.flags),e]));function Et(e,t,n){let r={},i=0;for(;i<e.length;){let a=e[i],o=Tt.get(a);if(o){if(o.value===`string`){let t=e[i+1];if(!t)return Ot(a);r[o.id]=t,i+=2}else r[o.id]=!0,i+=1;continue}if(a.startsWith(`-`)||t.has(a))return;let s=Z(r.output);return r.json===!0||s===`json`||s===`ndjson`||n.agentFriendly&&s!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(i+1),agentName:a,color:Z(r.color),dryRun:X(r.dryRun),idempotencyKey:Z(r.idempotencyKey),logLevel:Z(r.logLevel),noCache:X(r.noCache),nonInteractive:X(r.nonInteractive),quiet:X(r.quiet),refresh:X(r.refresh),runId:Z(r.runId),timeout:Z(r.timeout),yes:X(r.yes)}}}function Dt(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Global option requires a long flag: ${e}`);return t[0]}function X(e){return e===!0}function Z(e){return typeof e==`string`?e:void 0}function Ot(e){return{agentArgs:[],agentName:``,error:`${e} requires a value`}}const Q=wt(),kt=new Set([...Q.commands.map(e=>e.name()),...Q.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),$=Et(k.argv.slice(2),kt,{agentFriendly:k.stdin.isTTY===!1||k.stdout.isTTY===!1});if($?.error&&(console.log(b.red($.error)),k.exit(2)),$&&t($.agentName)){try{a(i({color:$.color,dryRun:$.dryRun,idempotencyKey:$.idempotencyKey,logLevel:$.logLevel,noCache:$.noCache,nonInteractive:$.nonInteractive,quiet:$.quiet,refresh:$.refresh,runId:$.runId,timeout:$.timeout,yes:$.yes}))}catch(e){console.log(b.red(e instanceof Error?e.message:String(e))),k.exit(2)}try{let e=await K($.agentName,$.agentArgs,{assumeYes:$.yes,dryRun:$.dryRun,nonInteractive:$.nonInteractive});k.exit(e)}finally{n()}}await Q.parseAsync();export{};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{W as e,i as t,n,q as r}from"./output-
|
|
1
|
+
import{W as e,i as t,n,q as r}from"./output-PUVIMxAA.mjs";import{i,r as a,t as o}from"./human-BbO37wBs.mjs";import{t as s}from"./color-CLDVRyIs.mjs";async function c(){return t(n({action:`commands`,data:{commands:e().map(r)},target:{kind:`system`,name:`commands`}}),l)}function l(e){if(!e.data)return;let t=o();console.log(s.bold(`
|
|
2
2
|
Quantex Commands
|
|
3
3
|
`));for(let n of a(e.data.commands,[{header:`Command`,maxWidth:24,minWidth:8,value:e=>s.cyan(e.name)},{header:`Summary`,minWidth:16,value:e=>e.summary,wrap:!0}],{headerStyle:s.bold,width:t}))console.log(n);console.log();for(let e of i(s.dim(`Contracts: qtx commands --json · Schemas: qtx schema <command>`),{indent:` `,width:t}))console.log(e);console.log()}export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./commands-D3-X-CL4.mjs";export{e as commandsCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./registry-vhJzh8dW.mjs";import{a as t,i as n,o as r,r as i,s as a}from"./config-jsaRCEWF.mjs";import{i as o,n as s,t as c}from"./output-
|
|
1
|
+
import{r as e}from"./registry-vhJzh8dW.mjs";import{a as t,i as n,o as r,r as i,s as a}from"./config-jsaRCEWF.mjs";import{i as o,n as s,t as c}from"./output-PUVIMxAA.mjs";import{t as l}from"./color-CLDVRyIs.mjs";async function u(l,u,f){if(!l)return o(s({action:`config`,data:{action:`list`,config:await t()},target:{kind:`config`}}),d);switch(l){case`get`:{if(!u)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await t())[u];return o(s({action:`config`,data:{action:`get`,key:u,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!i(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, mise, or uv`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!n(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!e(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let a={};try{a=await t()}catch{}return a[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?e(f):f,await r(a),o(s({action:`config`,data:{action:`set`,key:u,value:a[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await r(a),o(s({action:`config`,data:{action:`reset`,config:a},target:{kind:`config`}}),d);default:return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:l},message:`Unknown action: ${l}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(l.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(l.bold(`
|
|
2
2
|
Current Configuration:
|
|
3
3
|
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?l.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(l.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(l.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|