quantex-cli 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +5 -5
  2. package/README.zh-CN.md +5 -5
  3. package/dist/{agent-installation-BJZMra9R.mjs → agent-installation-CC7b92Lg.mjs} +1 -1
  4. package/dist/agent-observation-CRB402ql.mjs +1 -0
  5. package/dist/{agents-By5JY7Ag.mjs → agents-D_evv3iI.mjs} +1 -1
  6. package/dist/{agents-BI24Key0.mjs → agents-T-kpsmCW.mjs} +1 -1
  7. package/dist/{capabilities-BlqBiPop.mjs → capabilities-grYk5oHD.mjs} +1 -1
  8. package/dist/capabilities-wSW7O9K9.mjs +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/{commands-DKzuPw63.mjs → commands-BuUDcQrt.mjs} +1 -1
  11. package/dist/commands-sYTYFFCw.mjs +1 -0
  12. package/dist/{config-CXeBOFPx.mjs → config-BxpAHhRY.mjs} +1 -1
  13. package/dist/{core-installation-cli-CIT1j1OX.mjs → core-installation-cli-C9ej33OW.mjs} +1 -1
  14. package/dist/{core-read-observations-ay6fH_jo.mjs → core-read-observations-BQLHb148.mjs} +1 -1
  15. package/dist/{doctor-DRTbrTkG.mjs → doctor-CuljlwNn.mjs} +1 -1
  16. package/dist/ensure-ChKutOVG.mjs +1 -0
  17. package/dist/ensure-CrY2orgM.mjs +1 -0
  18. package/dist/errors-BE_UKvvM.mjs +1 -0
  19. package/dist/index.mjs +1 -1
  20. package/dist/{info-Cn78O6q-.mjs → info-Btit6nFi.mjs} +1 -1
  21. package/dist/{inspect-BBFC6wE8.mjs → inspect-C0MzsPU2.mjs} +1 -1
  22. package/dist/inspect-kPreC_XR.mjs +1 -0
  23. package/dist/install-oVJ4PYF7.mjs +1 -0
  24. package/dist/{installation-compatibility-C9t_3UJd.mjs → installation-compatibility-BUIdD4fg.mjs} +1 -1
  25. package/dist/installation-executor-DvXaa9X4.mjs +1 -0
  26. package/dist/{installation-production-DjMHDYgw.mjs → installation-production-BXWTdqW5.mjs} +1 -1
  27. package/dist/{installation-provider-registry-CDXCr6z9.mjs → installation-provider-registry-Cs3gM0wK.mjs} +1 -1
  28. package/dist/installation-routing-BV8ZnVFY.mjs +1 -0
  29. package/dist/installation-routing-Cyn08Qdm.mjs +1 -0
  30. package/dist/{lifecycle-observations-D1BlIZpI.mjs → lifecycle-observations-DuXTdiJE.mjs} +1 -1
  31. package/dist/{lifecycle-policy-C55MZFH-.mjs → lifecycle-policy-BwXMvFde.mjs} +1 -1
  32. package/dist/{list-CzXrCt7G.mjs → list-B9P46aKI.mjs} +1 -1
  33. package/dist/{output-CDT7Z3i4.mjs → output-Bf3N0Tjs.mjs} +1 -1
  34. package/dist/{production-observation-BI5nkqSV.mjs → production-observation-CU1HQ10p.mjs} +1 -1
  35. package/dist/{provider-evidence-CF-G5vyd.mjs → provider-evidence-BnvMbSP7.mjs} +1 -1
  36. package/dist/provider-observation-registry-l4duFenx.mjs +3 -0
  37. package/dist/{provider-observations-DVnT0_AA.mjs → provider-observations-CYYOshQ4.mjs} +1 -1
  38. package/dist/{providers-CLE8qdcG.mjs → providers-gOIzOEnz.mjs} +1 -1
  39. package/dist/resolve-9iHuKOrC.mjs +1 -0
  40. package/dist/{resolve-yZwFJmTd.mjs → resolve-DqExBCue.mjs} +1 -1
  41. package/dist/schema-BZLalYTL.mjs +1 -0
  42. package/dist/{schema-BwNDotNa.mjs → schema-D9JJUXYr.mjs} +1 -1
  43. package/dist/{uninstall-BcjU7c2O.mjs → uninstall-DPlb_f05.mjs} +1 -1
  44. package/dist/unmanaged-install-compatibility-BGcxxHZb.mjs +1 -0
  45. package/dist/{update-BuX-23-J.mjs → update-C8mg46ew.mjs} +1 -1
  46. package/dist/{upgrade-_1P0IdSo.mjs → upgrade-lmvEjYEd.mjs} +1 -1
  47. package/package.json +2 -2
  48. package/dist/agent-observation-Dz5Kg6wp.mjs +0 -1
  49. package/dist/capabilities-qyUtok9v.mjs +0 -1
  50. package/dist/commands-C3fUf2YS.mjs +0 -1
  51. package/dist/ensure-BU0EBpDm.mjs +0 -1
  52. package/dist/ensure-D44Eh4au.mjs +0 -1
  53. package/dist/errors-BPUDjG_X.mjs +0 -1
  54. package/dist/inspect-CkNhGY9b.mjs +0 -1
  55. package/dist/install-CwxLFFhS.mjs +0 -1
  56. package/dist/installation-executor-CEJOF0yv.mjs +0 -1
  57. package/dist/installation-routing-B8x9uR8E.mjs +0 -1
  58. package/dist/installation-routing-CTnk2lRW.mjs +0 -1
  59. package/dist/provider-observation-registry-1U2y28GT.mjs +0 -3
  60. package/dist/resolve-Cb9rNGbg.mjs +0 -1
  61. package/dist/schema-Cn5CfEai.mjs +0 -1
  62. /package/dist/{errors-INAZXcDR.mjs → errors-D-W3vO4v.mjs} +0 -0
  63. /package/dist/{invocation-BAq2_Yd5.mjs → invocation-hZT7H6Sx.mjs} +0 -0
  64. /package/dist/{mutation-recipe-catalog-CDgpiu0Q.mjs → mutation-recipe-catalog-Cr-4qobK.mjs} +0 -0
  65. /package/dist/{version-cache-sKuW8Zs1.mjs → version-cache-BdkaOTM-.mjs} +0 -0
package/README.md CHANGED
@@ -40,12 +40,12 @@ The internal engine can evolve without changing the maintained v1 command syntax
40
40
 
41
41
  ## TypeScript Core SDK preview
42
42
 
43
- Quantex is extracting a non-interactive TypeScript SDK under the provisional package identity `@quantex/core`. It is currently a private, independently packable workspace: clean tarball consumers are validated under Node.js, Bun, and TypeScript NodeNext, but public registry installation is deliberately disabled until a separate activation change confirms the final package name and publisher authority. CLI npm and GitHub releases do not depend on that activation.
43
+ Quantex provides a non-interactive TypeScript SDK as [`quantex-core`](https://www.npmjs.com/package/quantex-core). It is independently versioned and validated through clean Node.js, Bun, and TypeScript NodeNext consumers. CLI npm and GitHub releases remain independent from Core publication.
44
44
 
45
- The 1.2 SDK stage established the read-only, ESM-only `createQuantex`, `list`, and `inspect` surface. The 1.3 integration surface adds gated `install` and `ensure` methods while retaining Node.js 20+ and Bun support. The import below describes the validated package API; it becomes a public registry import only after Core activation:
45
+ The 1.2 SDK stage established the read-only, ESM-only `createQuantex`, `list`, and `inspect` surface. The 1.3 integration surface adds gated `install` and `ensure` methods while retaining Node.js 20+ and Bun support. The import below is the published package API:
46
46
 
47
47
  ```ts
48
- import { createQuantex } from '@quantex/core'
48
+ import { createQuantex } from 'quantex-core'
49
49
 
50
50
  const quantex = createQuantex()
51
51
  const result = await quantex.inspect('codex')
@@ -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, and Quantex self-upgrade. The SDK still does not publish `update`, `uninstall`, or `run`, and stable CLI mutations continue to use the maintained legacy engine until the promotion gates pass.
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, and Quantex self-upgrade. The SDK still does not publish `update`, `uninstall`, or `run`; their CLI implementations remain on the maintained legacy path.
64
64
 
65
- The compatibility transition is staged across 1.2-1.5: 1.2 introduces read-only Core, 1.3 may add gated mutation families, 1.4 is the earliest Core can become the CLI default, and 1.5 provides a second default soak. 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; when Core routing is promoted, rollback uses the preserved whole-invocation legacy route through 1.5. Removing maintained v1 surfaces requires a separate later-major proposal after the documented soak gates.
65
+ The compatibility transition is staged across 1.2-1.5: 1.2 introduces read-only Core, 1.3 adds gated mutation families, 1.4 makes Core the CLI apply default for `install` and `ensure`, and 1.5 provides a second default soak. Existing v1 `--dry-run` planning stays on legacy and makes no lifecycle side effect. 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. During the soak, an operator can retry either promoted command through the retained whole-invocation legacy route: `QUANTEX_INSTALLATION_ENGINE=legacy qtx ensure codex`. Removing maintained v1 surfaces requires a separate later-major proposal after the documented soak gates.
66
66
 
67
67
  ## Agent Quick Start
68
68
 
package/README.zh-CN.md CHANGED
@@ -40,12 +40,12 @@ Quantex 是一个 `human-friendly + agent-friendly` 的 AI 编程助手 CLI life
40
40
 
41
41
  ## TypeScript Core SDK 预览
42
42
 
43
- Quantex 正在抽离一个非交互式 TypeScript SDK,暂定包身份为 `@quantex/core`。它目前是 private、可独立打包的 workspace:干净 tarball consumer 已在 Node.js、Bun TypeScript NodeNext 下验证,但在单独的激活变更确认最终包名和发布权限前,公开 registry 安装会保持禁用。CLI 的 npm 与 GitHub 发布不依赖这项激活。
43
+ Quantex 提供非交互式 TypeScript SDK:[`quantex-core`](https://www.npmjs.com/package/quantex-core)。它独立版本化,并已通过 Node.js、Bun TypeScript NodeNext 的干净 consumer 验证;CLI 的 npm 与 GitHub 发布仍与 Core 发布相互独立。
44
44
 
45
- 1.2 阶段确立了只读、仅 ESM 的 `createQuantex`、`list` 和 `inspect` surface。1.3 集成 surface 在保持 Node.js 20+ 与 Bun 支持的同时,新增经过 gate 的 `install` 和 `ensure`。下面的 import 表示已验证的包 API;只有完成 Core 激活后,它才会成为公开 registry import
45
+ 1.2 阶段确立了只读、仅 ESM 的 `createQuantex`、`list` 和 `inspect` surface。1.3 集成 surface 在保持 Node.js 20+ 与 Bun 支持的同时,新增经过 gate 的 `install` 和 `ensure`。下面的 import 表示已发布的包 API:
46
46
 
47
47
  ```ts
48
- import { createQuantex } from '@quantex/core'
48
+ import { createQuantex } from 'quantex-core'
49
49
 
50
50
  const quantex = createQuantex()
51
51
  const result = await quantex.inspect('codex')
@@ -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 展示、退出码策略、命令行执行和 Quantex 自升级。SDK 仍未提供 `update`、`uninstall` 或 `run`;在 promotion gates 通过前,稳定 CLI 变更命令继续使用受维护的 legacy engine。
63
+ Core 不提示、不打印、不调用 `process.exit`,也不决定 CLI 退出码;它只向调用方返回类型化结果。`install` 与 `ensure` 默认执行 apply,也提供显式且无副作用的 preview;它们会保留 PATH-only external agent,并返回包含阶段与副作用状态的类型化失败。`qtx` / `quantex` CLI 仍负责提示、human 与 JSON/NDJSON 展示、退出码策略、命令行执行和 Quantex 自升级。SDK 仍未提供 `update`、`uninstall` 或 `run`;它们的 CLI 实现继续使用受维护的 legacy 路径。
64
64
 
65
- 兼容过渡跨越 1.2-1.5:1.2 引入只读 Core,1.3 可以添加经过 gate 的变更方法组,1.4 Core 最早可成为 CLI 默认引擎的版本,1.5 提供第二个默认版本的观察期。持久化 state schema 在整个 1.x 中保持为 version 2。引擎必须在单次调用前选定,变更操作一旦开始产生副作用就绝不会切换引擎重试;当 Core routing 晋级后,回滚通过保留至 1.5 的 whole-invocation legacy route 完成。删除受维护的 v1 surface 必须等待已记录的观察 gate 通过,并在后续 major 版本另行提案。
65
+ 兼容过渡跨越 1.2-1.5:1.2 引入只读 Core,1.3 新增经过 gate 的变更方法组,1.4 Core 成为 CLI `install` 与 `ensure` 的 apply 默认引擎,1.5 提供第二个默认版本的观察期。既有 v1 `--dry-run` 规划继续走 legacy,且不会产生任何生命周期副作用。持久化 state schema 在整个 1.x 中保持为 version 2。引擎必须在单次调用前选定,变更操作一旦开始产生副作用就绝不会切换引擎重试。观察期内,若需要兼容性重试,可通过保留的 whole-invocation legacy route 执行:`QUANTEX_INSTALLATION_ENGINE=legacy qtx ensure codex`。删除受维护的 v1 surface 必须等待已记录的观察 gate 通过,并在后续 major 版本另行提案。
66
66
 
67
67
  ## Agent 快速接入
68
68
 
@@ -1 +1 @@
1
- import{n as e}from"./detect-BdnZzKbm.mjs";import{n as t}from"./cli-context-xudTdmO7.mjs";import{A as n}from"./output-CDT7Z3i4.mjs";import{t as r}from"./cli-operation-context-QEqKxWgM.mjs";import{d as i,g as a,l as o,o as s,u as c}from"./agents-BI24Key0.mjs";import{a as l}from"./provider-binding-DMLQQGPh.mjs";import{t as u}from"./provider-evidence-CF-G5vyd.mjs";function d(e){let t=f(e);return{decision:t,plan:{id:`${e.intent.kind}-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:h(t,e)}}}function f(e){let{intent:t,observation:n}=e;return n.kind===`indeterminate`||n.drift.kind===`indeterminate`||n.drift.kind===`conflicting-source`||p(e)?`blocked`:t.kind===`uninstall`?n.kind===`absent`?n.drift.kind===`recorded-absent`?`clear-ghost`:`preserve-unmanaged`:!n.providerId||!y(e)?`preserve-unmanaged`:m(e,`uninstall`)?`uninstall`:`unsupported`:n.kind===`present`?n.drift.kind===`untracked`?n.providerId?`adopt`:`preserve-unmanaged`:`satisfied`:!v(e)||!y(e)?`blocked`:m(e,`install`)?`install`:`unsupported`}function p(e){let{observation:t,provider:n}=e;return t.kind!==`present`||n===void 0?!1:t.providerId!==void 0&&t.providerId!==n.providerId||t.providerTargetId!==void 0&&t.providerTargetId!==n.targetId||t.providerTargetKind!==void 0&&t.providerTargetKind!==n.targetKind}function m(e,t){return e.provider===void 0||e.provider.capabilities.includes(t)}function h(e,t){switch(e){case`install`:return[g(`install`,t,_(`package-present`,t))];case`uninstall`:return[g(`uninstall`,t,_(`package-absent`,t))];case`adopt`:return[b(`adopt-${t.intent.targetId}`,[{executable:t.observation.kind===`present`?t.observation.executablePath??t.intent.targetId:t.intent.targetId,kind:`executable-present`}])];case`clear-ghost`:return[b(`clear-ghost-${t.intent.targetId}`,[])];case`blocked`:case`preserve-unmanaged`:case`satisfied`:case`unsupported`:return[]}}function g(e,t,n){let r=v(t),i=y(t);return{dependsOn:[],effects:[{capability:`${r}-${e}`,kind:`provider-mutation`,providerId:r,targetId:i}],id:`${e}-${t.intent.targetId}`,kind:`operation`,postconditions:[n],preconditions:[]}}function _(e,t){return{kind:e,providerId:v(t),targetId:y(t)}}function v(e){return e.observation.kind===`present`?e.observation.providerId??e.provider?.providerId??e.providerId:e.provider?.providerId??e.providerId}function y(e){return e.observation.kind===`present`?e.observation.providerTargetId??e.provider?.targetId??e.providerTargetId:e.provider?.targetId??e.providerTargetId}function b(e,t){return{dependsOn:[],effects:[],id:e,kind:`operation`,postconditions:t,preconditions:[]}}async function x(e){let t=await e.execute();if(t.kind!==`success`)return t;let n;try{n=await e.verify(t.value,e.plan)}catch{return await S(e,t.value),{kind:`failed`,reason:`verification-failed`,retryable:!0}}if(n.kind!==`satisfied`)return await S(e,t.value),n.kind===`indeterminate`?{kind:`indeterminate`,reason:n.reason}:{kind:`failed`,reason:n.reason,retryable:!1};let r=e.createReceipt(n,t.value);try{await e.recordReceipt(r,t.value)}catch{return await S(e,t.value),{kind:`failed`,reason:`receipt-write-failed`,retryable:!0}}return{kind:`success`,value:{...t.value,receipt:r,verification:n}}}async function S(e,t){if(!(!t.changed||!e.compensate))try{await e.compensate(t)}catch{}}function C(e){let{adoptableMethod:t,agent:r,observation:o,operation:s,route:c}=e,f=o.installedState?void 0:o.methods[0],p=o.installedState??t??f,m=D(o.lifecycle,r,t),h=d({intent:{kind:s,targetId:r.name},observation:m,providerId:O(p),providerTargetId:k(r,p)});return h.decision===c?a(async()=>{if(c===`install`&&o.installedState&&!o.inPath){let e=l(r,o.installedState);if(!e)return{kind:`indeterminate`,reason:`tracked-provider-binding-unresolved`};let t=await E(t=>u(e,t));if(t.kind!==`success`||t.value.kind!==`absent`)return{kind:`indeterminate`,reason:`tracked-provider-not-conclusively-absent`}}return x({createReceipt:(e,t)=>{let n=l(r,t.value.installedState);if(!n)throw Error(`Cannot resolve provider binding for ${r.name}.`);let i=e.observation.kind===`present`?e.observation:void 0;return{...n.target.binaryName?{executableName:n.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:n.providerId,providerTargetId:n.target.id,providerTargetKind:n.target.kind,schemaVersion:1,targetId:r.name,verifiedAt:new Date().toISOString(),...i?.executablePath?{executablePath:i.executablePath}:{},...i?.version?{version:i.version}:{}}},compensate:e=>c===`install`?i(r,e.value.installedState):Promise.resolve(),execute:async()=>w(r,c,o.installedState,t,f),plan:h.plan,recordReceipt:(e,t)=>n(t.value.installedState,e),verify:async e=>T(r,e.value.installedState,s,h.plan.steps[0]?.postconditions[0])})}):Promise.resolve({kind:`indeterminate`,reason:`planned-${h.decision}-cannot-execute-${c}`})}async function w(e,n,r,i,a){if(n===`satisfied`&&r)return{kind:`success`,value:{changed:!1,value:{installedState:r}}};if(n===`adopt`&&i)return t().cancelled?{kind:`cancelled`,reason:`tracking-cancelled`}:{kind:`success`,value:{changed:!0,value:{installedState:s(e,i)}}};if(n===`install`&&r){let t=await c(e,r);return t.kind===`success`&&t.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:t.value.installedState}}}:t.kind===`success`?{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:t}if(!a)return{kind:`indeterminate`,reason:`install-method-unresolved`};let l=await o(e,[a]);return l.kind===`success`?l.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:l.value.installedState}}}:{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:l}async function T(t,n,r,i){let a=i??{executable:t.binaryName,kind:`executable-present`},o=l(t,n);if(!o)return{kind:`indeterminate`,postcondition:a,reason:`provider-binding-unresolved-after-${r}`};let[s,c]=await E(n=>Promise.all([e(t.binaryName,n),u(o,n)])),d=c.kind===`success`&&c.value.kind===`present`,f=c.kind===`success`?c.value:void 0,p=s&&d?{drift:{kind:`none`},executablePath:f?.kind===`present`?f.executablePath:void 0,kind:`present`,providerId:o.providerId,providerTargetId:o.target.id,targetId:t.name,version:f?.kind===`present`?f.version:void 0}:{drift:{kind:`recorded-absent`},kind:`absent`,targetId:t.name};return s&&d?{kind:`satisfied`,observation:p,postcondition:a}:{kind:`unsatisfied`,observation:p,postcondition:a,reason:s?`provider-target-not-present-after-${r}`:`binary-not-found-after-${r}`}}async function E(e){let t=r();try{return await e(t.context)}finally{t.dispose()}}function D(e,t,n){return e.kind!==`present`||!n?e:{...e,providerId:O(n),providerTargetId:k(t,n)}}function O(e){if(e)return`installType`in e?e.installType:e.type}function k(e,t){if(t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;let n=O(t);if(n===`bun`||n===`npm`)return e.packages?.npm??e.binaryName;if(n===`cargo`)return e.packages?.cargo??e.binaryName;if(n===`deno`)return e.packages?.deno??e.binaryName;if(n===`mise`)return e.packages?.mise??e.binaryName;if(n===`pip`)return e.packages?.pip??e.binaryName;if(n===`uv`)return e.packages?.uv??e.binaryName}return e.binaryName}export{C as t};
1
+ import{n as e}from"./detect-BdnZzKbm.mjs";import{n as t}from"./cli-context-xudTdmO7.mjs";import{A as n}from"./output-Bf3N0Tjs.mjs";import{t as r}from"./cli-operation-context-QEqKxWgM.mjs";import{d as i,g as a,l as o,o as s,u as c}from"./agents-T-kpsmCW.mjs";import{a as l}from"./provider-binding-DMLQQGPh.mjs";import{t as u}from"./provider-evidence-BnvMbSP7.mjs";function d(e){let t=f(e);return{decision:t,plan:{id:`${e.intent.kind}-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:h(t,e)}}}function f(e){let{intent:t,observation:n}=e;return n.kind===`indeterminate`||n.drift.kind===`indeterminate`||n.drift.kind===`conflicting-source`||p(e)?`blocked`:t.kind===`uninstall`?n.kind===`absent`?n.drift.kind===`recorded-absent`?`clear-ghost`:`preserve-unmanaged`:!n.providerId||!y(e)?`preserve-unmanaged`:m(e,`uninstall`)?`uninstall`:`unsupported`:n.kind===`present`?n.drift.kind===`untracked`?n.providerId?`adopt`:`preserve-unmanaged`:`satisfied`:!v(e)||!y(e)?`blocked`:m(e,`install`)?`install`:`unsupported`}function p(e){let{observation:t,provider:n}=e;return t.kind!==`present`||n===void 0?!1:t.providerId!==void 0&&t.providerId!==n.providerId||t.providerTargetId!==void 0&&t.providerTargetId!==n.targetId||t.providerTargetKind!==void 0&&t.providerTargetKind!==n.targetKind}function m(e,t){return e.provider===void 0||e.provider.capabilities.includes(t)}function h(e,t){switch(e){case`install`:return[g(`install`,t,_(`package-present`,t))];case`uninstall`:return[g(`uninstall`,t,_(`package-absent`,t))];case`adopt`:return[b(`adopt-${t.intent.targetId}`,[{executable:t.observation.kind===`present`?t.observation.executablePath??t.intent.targetId:t.intent.targetId,kind:`executable-present`}])];case`clear-ghost`:return[b(`clear-ghost-${t.intent.targetId}`,[])];case`blocked`:case`preserve-unmanaged`:case`satisfied`:case`unsupported`:return[]}}function g(e,t,n){let r=v(t),i=y(t);return{dependsOn:[],effects:[{capability:`${r}-${e}`,kind:`provider-mutation`,providerId:r,targetId:i}],id:`${e}-${t.intent.targetId}`,kind:`operation`,postconditions:[n],preconditions:[]}}function _(e,t){return{kind:e,providerId:v(t),targetId:y(t)}}function v(e){return e.observation.kind===`present`?e.observation.providerId??e.provider?.providerId??e.providerId:e.provider?.providerId??e.providerId}function y(e){return e.observation.kind===`present`?e.observation.providerTargetId??e.provider?.targetId??e.providerTargetId:e.provider?.targetId??e.providerTargetId}function b(e,t){return{dependsOn:[],effects:[],id:e,kind:`operation`,postconditions:t,preconditions:[]}}async function x(e){let t=await e.execute();if(t.kind!==`success`)return t;let n;try{n=await e.verify(t.value,e.plan)}catch{return await S(e,t.value),{kind:`failed`,reason:`verification-failed`,retryable:!0}}if(n.kind!==`satisfied`)return await S(e,t.value),n.kind===`indeterminate`?{kind:`indeterminate`,reason:n.reason}:{kind:`failed`,reason:n.reason,retryable:!1};let r=e.createReceipt(n,t.value);try{await e.recordReceipt(r,t.value)}catch{return await S(e,t.value),{kind:`failed`,reason:`receipt-write-failed`,retryable:!0}}return{kind:`success`,value:{...t.value,receipt:r,verification:n}}}async function S(e,t){if(!(!t.changed||!e.compensate))try{await e.compensate(t)}catch{}}function C(e){let{adoptableMethod:t,agent:r,observation:o,operation:s,route:c}=e,f=o.installedState?void 0:o.methods[0],p=o.installedState??t??f,m=D(o.lifecycle,r,t),h=d({intent:{kind:s,targetId:r.name},observation:m,providerId:O(p),providerTargetId:k(r,p)});return h.decision===c?a(async()=>{if(c===`install`&&o.installedState&&!o.inPath){let e=l(r,o.installedState);if(!e)return{kind:`indeterminate`,reason:`tracked-provider-binding-unresolved`};let t=await E(t=>u(e,t));if(t.kind!==`success`||t.value.kind!==`absent`)return{kind:`indeterminate`,reason:`tracked-provider-not-conclusively-absent`}}return x({createReceipt:(e,t)=>{let n=l(r,t.value.installedState);if(!n)throw Error(`Cannot resolve provider binding for ${r.name}.`);let i=e.observation.kind===`present`?e.observation:void 0;return{...n.target.binaryName?{executableName:n.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:n.providerId,providerTargetId:n.target.id,providerTargetKind:n.target.kind,schemaVersion:1,targetId:r.name,verifiedAt:new Date().toISOString(),...i?.executablePath?{executablePath:i.executablePath}:{},...i?.version?{version:i.version}:{}}},compensate:e=>c===`install`?i(r,e.value.installedState):Promise.resolve(),execute:async()=>w(r,c,o.installedState,t,f),plan:h.plan,recordReceipt:(e,t)=>n(t.value.installedState,e),verify:async e=>T(r,e.value.installedState,s,h.plan.steps[0]?.postconditions[0])})}):Promise.resolve({kind:`indeterminate`,reason:`planned-${h.decision}-cannot-execute-${c}`})}async function w(e,n,r,i,a){if(n===`satisfied`&&r)return{kind:`success`,value:{changed:!1,value:{installedState:r}}};if(n===`adopt`&&i)return t().cancelled?{kind:`cancelled`,reason:`tracking-cancelled`}:{kind:`success`,value:{changed:!0,value:{installedState:s(e,i)}}};if(n===`install`&&r){let t=await c(e,r);return t.kind===`success`&&t.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:t.value.installedState}}}:t.kind===`success`?{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:t}if(!a)return{kind:`indeterminate`,reason:`install-method-unresolved`};let l=await o(e,[a]);return l.kind===`success`?l.value.installedState?{kind:`success`,value:{changed:!0,value:{installedState:l.value.installedState}}}:{kind:`failed`,reason:`installed-state-missing`,retryable:!1}:l}async function T(t,n,r,i){let a=i??{executable:t.binaryName,kind:`executable-present`},o=l(t,n);if(!o)return{kind:`indeterminate`,postcondition:a,reason:`provider-binding-unresolved-after-${r}`};let[s,c]=await E(n=>Promise.all([e(t.binaryName,n),u(o,n)])),d=c.kind===`success`&&c.value.kind===`present`,f=c.kind===`success`?c.value:void 0,p=s&&d?{drift:{kind:`none`},executablePath:f?.kind===`present`?f.executablePath:void 0,kind:`present`,providerId:o.providerId,providerTargetId:o.target.id,targetId:t.name,version:f?.kind===`present`?f.version:void 0}:{drift:{kind:`recorded-absent`},kind:`absent`,targetId:t.name};return s&&d?{kind:`satisfied`,observation:p,postcondition:a}:{kind:`unsatisfied`,observation:p,postcondition:a,reason:s?`provider-target-not-present-after-${r}`:`binary-not-found-after-${r}`}}async function E(e){let t=r();try{return await e(t.context)}finally{t.dispose()}}function D(e,t,n){return e.kind!==`present`||!n?e:{...e,providerId:O(n),providerTargetId:k(t,n)}}function O(e){if(e)return`installType`in e?e.installType:e.type}function k(e,t){if(t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;let n=O(t);if(n===`bun`||n===`npm`)return e.packages?.npm??e.binaryName;if(n===`cargo`)return e.packages?.cargo??e.binaryName;if(n===`deno`)return e.packages?.deno??e.binaryName;if(n===`mise`)return e.packages?.mise??e.binaryName;if(n===`pip`)return e.packages?.pip??e.binaryName;if(n===`uv`)return e.packages?.uv??e.binaryName}return e.binaryName}export{C as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./schema-hCKyxJjR.mjs";import{a as t,i as n,n as r,t as i}from"./provider-binding-DMLQQGPh.mjs";async function a(e,a){let[s,v,y]=await Promise.all([a.inspectExecutable(e),a.readInstalledState(e.name),a.readReceipt(e.name)]),b=a.clock(),x=r(e,a.platform),S=x.bindings,C=o(S,a.observationBinding,e.binaryName),w=C?[C]:S,T=v?t(e,v):void 0,E=y?n(y):void 0,D=E??T,O={catalogMethods:S,executable:s,installedState:v,pathExecutable:s,persistedBinding:D,receipt:y};if(v&&!T||y&&!E)return{...O,capabilities:[],observation:u(e,b,`Persisted provider binding cannot be resolved.`)};if(T&&E&&!i(T,E,e.binaryName))return{...O,capabilities:[],observation:s.present?l(e,s,b,{kind:`conflicting-source`,observedProviderId:T.providerId,recordedProviderId:E.providerId}):{drift:{kind:`conflicting-source`,observedProviderId:T.providerId,recordedProviderId:E.providerId},kind:`absent`,observedAt:b,targetId:e.name}};let k=D;if(k){let t=await c(k,a),n=a.providerRegistry.getCapabilities(k.providerId);if(t.kind!==`success`)return{...O,binding:k,capabilities:n,observation:u(e,b,g(t)),providerOutcome:t};let r=t.value;if(!m(k,r))return{...O,binding:k,capabilities:n,observation:h(e,s,b),providerOutcome:t};if(r.kind===`absent`&&!s.present)return{...O,binding:k,capabilities:n,observation:{drift:{kind:`recorded-absent`},kind:`absent`,observedAt:b,targetId:e.name},providerOutcome:t};let i=r.kind!==(s.present?`present`:`absent`)||r.kind===`present`&&s.present&&r.executablePath!==void 0&&s.path!==void 0&&r.executablePath!==s.path||r.kind===`present`&&f(r.version,s.version)||y?.executablePath!==void 0&&s.path!==void 0&&y.executablePath!==s.path||p(e,v,y,k),o=d(s,r);return{...O,binding:k,capabilities:n,executable:o,observation:l(e,o,b,i?{kind:`conflicting-source`,observedProviderId:r.kind===`present`?k.providerId:void 0,recordedProviderId:k.providerId}:{kind:`none`},r.kind===`present`?k:void 0),providerOutcome:t}}let A=await Promise.all(w.map(async e=>({binding:e,outcome:await c(e,a)}))),j=A.find(e=>e.outcome.kind===`success`&&!m(e.binding,e.outcome.value));if(j)return{...O,capabilities:[],observation:h(e,s,b),providerOutcome:j.outcome};let M=A.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),N=A.filter(e=>e.binding.providerId!==`binary`&&e.binding.providerId!==`script`),P=N.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),F=N.some(e=>e.outcome.kind!==`success`),I=P.length>0?P:F?[]:M;if(I.length>1)return{...O,capabilities:[],observation:s.present?l(e,s,b,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:b,reason:`Multiple catalog providers report the agent as present.`,targetId:e.name}};if(!C&&x.unresolvedCandidates.length>0)return{...O,capabilities:[],observation:u(e,b,`A catalog provider binding cannot be resolved.`)};let L=A.map(e=>e.outcome).find(_),R=A.map(e=>e.outcome).find(e=>e.kind===`cancelled`||e.kind===`timed-out`);if(R)return{...O,capabilities:[],observation:u(e,b,g(R)),providerOutcome:R};let z=I[0];if(z){let t=z.binding,n=z.outcome.value,r=d(s,n),i=!s.present||n.executablePath!==void 0&&s.path!==void 0&&n.executablePath!==s.path||f(n.version,s.version);return{...O,binding:t,capabilities:a.providerRegistry.getCapabilities(t.providerId),executable:r,observation:l(e,r,b,i?{kind:`conflicting-source`,observedProviderId:t.providerId}:{kind:`untracked`},t),providerOutcome:z.outcome}}let B=C??a.preferredCatalogBinding,V=B?A.find(t=>i(t.binding,B,e.binaryName)&&t.outcome.kind===`success`&&t.outcome.value.kind===`absent`):void 0;return!s.present&&M.length===0&&L&&V?{...O,capabilities:[],observation:{drift:{kind:`none`},kind:`absent`,observedAt:b,targetId:e.name},providerOutcome:V.outcome}:L?{...O,capabilities:[],observation:u(e,b,g(L)),providerOutcome:L}:{...O,capabilities:[],observation:s.present?l(e,s,b,{kind:`untracked`}):{drift:{kind:`none`},kind:`absent`,observedAt:b,targetId:e.name}}}function o(e,t,n){if(t)return e.find(e=>i(e,t,n)&&s(e.target.arguments,t.target.arguments))}function s(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}async function c(e,t){try{if(t.observeProvider)return await t.observeProvider(e,{registry:t.providerRegistry,signal:t.signal,timeoutMs:t.timeoutMs});let n=t.providerRegistry.get(e.providerId);return n?await n.observe({context:{signal:t.signal,timeoutMs:t.timeoutMs},target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}catch(e){return{kind:`failed`,reason:v(e),retryable:!1}}}function l(e,t,n,r,i){return{drift:r,...t.path?{executablePath:t.path}:{},kind:`present`,observedAt:n,...i?{providerId:i.providerId,providerTargetId:i.target.id,providerTargetKind:i.target.kind}:{},targetId:e.name,...t.version?{version:t.version}:{}}}function u(e,t,n){return{drift:{kind:`indeterminate`,reason:n},kind:`indeterminate`,observedAt:t,reason:n,targetId:e.name}}function d(e,t){return t.kind===`absent`?e:{path:e.path??t.executablePath,present:!0,version:e.version??t.version}}function f(t,n){if(t===void 0||n===void 0)return!1;let r=e(t,n);return r===void 0?t!==n:r!==0}function p(e,t,n,r){let i=[e.binaryName,t?.binaryName,n?.executableName,r.target.binaryName].filter(e=>e!==void 0);return new Set(i).size>1}function m(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function h(e,t,n){return t.present?l(e,t,n,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:n,reason:`Provider evidence does not match the requested target identity.`,targetId:e.name}}function g(e){switch(e.kind){case`unsupported`:return e.reason??`Provider does not support ${e.operation}.`;case`unavailable`:case`failed`:case`indeterminate`:return e.reason;case`cancelled`:return e.reason??`Provider observation was cancelled.`;case`timed-out`:return`Provider observation timed out after ${e.timeoutMs}ms.`}}function _(e){return e.kind!==`success`}function v(e){return e instanceof Error&&e.message.trim().length>0?`Provider observation rejected: ${e.message.trim().slice(0,500)}`:`Provider observation rejected unexpectedly.`}export{a as t};
@@ -1 +1 @@
1
- import{n as e}from"./child-process-CBKnpMWt.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-BMnWqkaW.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-C-UHM_On.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-BdnZzKbm.mjs";import{r as it}from"./registry-N9jeGQcX.mjs";import{G as at}from"./output-CDT7Z3i4.mjs";import{t as ot}from"./types-D3y_n7iy.mjs";import{toJSONSchema as st,z as u}from"zod";function d(e){return e.kind===`cancelled`||e.kind===`timed-out`}function f(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function p(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:h(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:h(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:ct(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 m(t,n){if(t.signal.aborted)return{kind:`cancelled`,reason:h(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:ct(t)}}}function h(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 ct(e){return e instanceof Error?e.message:String(e)}function g(e,t){let n=async n=>{let r=await _(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(d(r))return f(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[pt(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 b({evidence:[mt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await _(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&d(i)?f(i):b({evidence:[mt(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 _(n,t.contextualObservation,()=>t.isAvailable(n));return d(r)?f(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:b({executable:e.executable})},id:e.id,install:n=>v(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>v(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>v(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>ut(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?b({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):b({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function _(e,t,n){return t?m(e,n):p(e,n)}function lt(e,t,n){return t?m(e,n):p(e,n)}async function v(e,t,n,r,i,a){let o=await lt(t.context,i,()=>a(t.target,t.context));if(d(o))return f(o);let s=ft(e.id,r);return o.kind===`rejected`?y(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?b({evidence:s,target:t.target}):dt(o.value,e,t.target.id,n,r,s)}async function ut(e,t,n){let r=e.commands.updateMany(n.targets),i=await lt(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(d(i))return f(i);let a=ft(e.id,r);return i.kind===`rejected`?y(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?b(n.targets.map(e=>({evidence:a,target:e}))):dt(i.value,e,void 0,`update`,r,a)}function dt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=y(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 y(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 ft(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function pt(e,t){return{kind:`provider`,value:`${e}:${t}`}}function mt(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function b(e){return{kind:`success`,value:e}}function x(e){return e.kind===`cask`?`cask`:`package`}const ht={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>ve(e.id,x(e),t),install:(e,t)=>qe(e.id,x(e),t),isAvailable:e=>tt(e),probePackagePresence:(e,t)=>se(e.id,x(e),t),uninstall:(e,t)=>Se(e.id,x(e),t),update:(e,t)=>xe(e.id,x(e),t),updateMany:(e,t)=>de(e.map(e=>({packageName:e.id,packageTargetKind:x(e)})),t)};function S(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function gt(e=ht){return g({commands:{install:e=>S(`install`,e),uninstall:e=>S(`uninstall`,e),update:e=>S(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>S(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const C=gt();function _t(e,t){let n=O(`provider`,e.id),r=async n=>{let r=await w(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(d(r))return f(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[O(`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 k({evidence:[O(`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(d(i))return f(i);let a=i.kind===`resolved`?i.value:void 0;return k({evidence:[O(`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 d(r)?f(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:k({executable:e.executable})},id:e.id,install:n=>{let r=D(n.options),i=e.commands.install(n.target,r);return T(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=D(r.options),a=await p(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return d(a)?f(a):a.kind===`rejected`||!a.value?{evidence:[n],kind:`indeterminate`,reason:`${e.id} could not resolve the ${i.distTag} version for ${r.target.id}`}:k({evidence:[n,O(`package`,`${e.id}:${r.target.id}@${i.distTag}=${a.value}`)],version:a.value})},uninstall:n=>{let r=e.commands.uninstall(n.target);return T(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context))},update:n=>{let r=D(n.options),i=e.commands.update(n.target,r);return T(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>yt(e,t,n),verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?k({evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):k({evidence:n.value.evidence??[],kind:`satisfied`}):n}}}function w(e,t,n){return t?m(e,n):p(e,n)}function vt(e,t,n){return t?m(e,n):p(e,n)}async function yt(e,t,n){let r=D(n.options),i=e.commands.updateMany(n.targets,r),a=[O(`provider`,e.id),O(`command`,i.join(` `))],o=await vt(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return d(o)?f(o):o.kind===`rejected`?E(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?k(n.targets.map(e=>({evidence:a,target:e}))):bt(o.value,e,i,a,`update-many`)}async function T(e,t,n,r,i,a){let o=await vt(t,i,a);if(d(o))return f(o);let s=[O(`provider`,e.id),O(`command`,r.join(` `))];return o.kind===`rejected`?E(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?k({evidence:s,target:n}):bt(o.value,e,r,s,r[1]??`operation`,n.id)}function bt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=E(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 E(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 D(e){return{distTag:e?.distTag??`latest`,distTagExplicit:e?.distTag!==void 0,registry:it(e?.registry),updateStrategy:e?.updateStrategy??`latest-major`}}function O(e,t){return{kind:e,value:t}}function k(e){return{kind:`success`,value:e}}const xt={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)]},St={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)=>at(e,t,{registry:n}),uninstall:(e,t)=>te(e,t),update:(e,t,n,r,i)=>a(e,t,n,r,i),updateMany:(e,t,n)=>s(e,t,n)};function Ct(e=St){return _t({commands:xt,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const wt=Ct(),Tt={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 Et(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Dt(e=Tt){return g({commands:{install:e=>Et(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Et(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const Ot=Dt(),kt={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 A(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function At(e=kt){return g({commands:{install:e=>A(e),uninstall:e=>[`deno`,`uninstall`,`--global`,c(e.id,e.binaryName)],update:e=>A(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const j=At(),jt={contextualExecution:!0,execute:(e,t)=>i(N(e,l()),t,`install effect failed`),isExecutablePresent:$e};function M(e,t={}){let n={...jt,...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 p(t.context,()=>n.isExecutablePresent(r));return d(i)?f(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=>Nt(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 Mt(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(d(i))return f(i);let a=N(r,l()),o=Pt(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 Mt(e,t,n){return t?m(e,n):p(e,n)}function N(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function Nt(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:l()===`windows`?`powershell.exe`:`sh`}}}function Pt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const P=M(`script`),F=M(`binary`),Ft={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 I(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function It(e=Ft){return g({commands:{install:e=>I(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>I(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const L=It(),Lt={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)]},Rt={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)=>at(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 zt(e=Rt){return _t({commands:Lt,displayName:`npm`,executable:`npm`,id:`npm`},e)}const R=zt(),Bt={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 Vt(e=Bt){return g({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 z=Vt(),Ht={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 B(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function Ut(e=Ht){return g({commands:{install:e=>B(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>B(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const V=Ut(),Wt={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 H(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Gt(e=Wt){return g({commands:{install:e=>H(`install`,e),uninstall:e=>H(`uninstall`,e),update:e=>H(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const Kt=Gt(),qt=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Jt={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Yt(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,Zt(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function Xt(e){return Yt(ot.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 Zt(e){return Object.freeze(qt.filter(t=>typeof e[Jt[t]]==`function`))}const Qt=Xt({binary:F,brew:C,bun:wt,cargo:Ot,deno:j,mise:L,npm:R,pip:z,script:P,uv:V,winget:Kt}),$t=[{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/`,packages:{npm:`autohand-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`}}}],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`}}}],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`}}}]}},{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`}},{provider:`cargo`,target:{id:`codewhale-cli`,kind:`package`,arguments:[`--locked`]},probes:[`executable-presence`]}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{provider:`cargo`,target:{id:`codewhale-cli`,kind:`package`,arguments:[`--locked`]},probes:[`executable-presence`]}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{provider:`cargo`,target:{id:`codewhale-cli`,kind:`package`,arguments:[`--locked`]},probes:[`executable-presence`]}]}},{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`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}}],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`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}},{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`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}},{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:`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:`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`],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`],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`],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:`forgecode`,lookupAliases:[`forge`],displayName:`ForgeCode`,homepage:`https://forgecode.dev`,binaryName:`forge`,selfUpdate:{command:[`forge`,`update`]},versionProbe:{command:[`forge`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://forgecode.dev/cli`,kind:`script`,effect:{command:`irm https://forgecode.dev/cli | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://forgecode.dev/cli`,kind:`script`,effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://forgecode.dev/cli`,kind:`script`,effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`}}}]}},{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:`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:`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`],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:`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`],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`],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:`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:`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`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`],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`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`],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`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`],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`,selfUpdate:{command:[`uv`,`tool`,`upgrade`,`openhands`,`--python`,`3.12`]},versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[{provider:`uv`,target:{id:`openhands`,kind:`tool`,arguments:[`--python`,`3.12`]},probes:[`executable-presence`,`installed-version`,`package-presence`]},{probes:[`executable-presence`],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:[{provider:`uv`,target:{id:`openhands`,kind:`tool`,arguments:[`--python`,`3.12`]},probes:[`executable-presence`,`installed-version`,`package-presence`]},{probes:[`executable-presence`],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`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/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:{windows:[{provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`},probes:[`executable-presence`,`installed-version`,`package-presence`],legacy:{packageNameInMethod:!0}},{provider:`pip`,target:{id:`mistral-vibe`,kind:`package`},probes:[`executable-presence`],legacy:{packageNameInMethod:!0}}],macos:[{probes:[`executable-presence`],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`}}},{provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`},probes:[`executable-presence`,`installed-version`,`package-presence`],legacy:{packageNameInMethod:!0}},{provider:`pip`,target:{id:`mistral-vibe`,kind:`package`},probes:[`executable-presence`],legacy:{packageNameInMethod:!0}}],linux:[{probes:[`executable-presence`],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`}}},{provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`},probes:[`executable-presence`,`installed-version`,`package-presence`],legacy:{packageNameInMethod:!0}},{provider:`pip`,target:{id:`mistral-vibe`,kind:`package`},probes:[`executable-presence`],legacy:{packageNameInMethod:!0}}]}},{name:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,binaryName:`vtcode`,selfUpdate:{command:[`vtcode`,`update`]},versionProbe:{command:[`vtcode`,`--version`]},platforms:{windows:[{provider:`cargo`,target:{id:`vtcode`,kind:`package`},probes:[`executable-presence`]},{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`}}},{provider:`cargo`,target:{id:`vtcode`,kind:`package`},probes:[`executable-presence`]},{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`}}},{provider:`cargo`,target:{id:`vtcode`,kind:`package`},probes:[`executable-presence`]},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}]}}],U=u.string().min(1),W=u.array(U).min(1);u.enum([`windows`,`macos`,`linux`]);const en=u.enum([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]),tn=u.enum([`package`,`cask`,`id`]),G={binaryName:U.optional(),packageInstallArgs:u.array(U).min(1).optional(),packageName:U.optional(),packageTargetKind:tn.optional()},nn=u.object({...G,type:en}).strict(),rn=u.object({...G,command:U,type:u.literal(`script`)}).strict(),an=u.object({...G,command:U,type:u.literal(`binary`)}).strict(),K=u.discriminatedUnion(`type`,[nn,rn,an]),on=u.enum([`executable-presence`,`installed-version`,`package-presence`,`target-version`]),sn=u.array(on).min(1).refine(e=>new Set(e).size===e.length,{message:`candidate probes must be unique`}).optional(),cn=u.object({command:W,kind:u.literal(`executable`)}).strict(),ln=u.object({command:U,kind:u.literal(`shell-script`)}).strict(),un=u.discriminatedUnion(`kind`,[cn,ln]);function q(e,t={}){return u.object({arguments:u.array(U).min(1).optional(),binaryName:U.optional(),...t.effect?{effect:un}:{},id:U,kind:u.literal(e)}).strict()}function J(e,t){return u.object({legacy:u.object({packageNameInMethod:u.literal(!0).optional()}).strict().optional(),probes:sn,provider:u.literal(e),target:t}).strict()}const dn=u.discriminatedUnion(`provider`,[J(`bun`,q(`package`)),J(`npm`,q(`package`)),J(`brew`,u.union([q(`formula`),q(`cask`)])),J(`cargo`,q(`package`)),J(`deno`,q(`tool`)),J(`mise`,q(`tool`)),J(`pip`,q(`package`)),J(`uv`,q(`tool`)),J(`winget`,q(`id`)),J(`script`,q(`script`,{effect:!0})),J(`binary`,q(`binary`,{effect:!0}))]),Y=u.union([K,dn]),fn=u.object({linux:u.array(Y).min(1).optional(),macos:u.array(Y).min(1).optional(),windows:u.array(Y).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),pn=u.object({cargo:U.optional(),deno:U.optional(),mise:U.optional(),npm:U.optional(),pip:U.optional(),uv:U.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`packages must include at least one package identifier`}),mn=u.object({command:W,fallbackCommands:u.array(W).min(1).optional(),versionAfter:u.enum([`same-process`,`respawn`]).optional()}).strict(),hn=u.object({command:W.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),gn=u.object({linux:u.array(K).min(1).optional(),macos:u.array(K).min(1).optional(),windows:u.array(K).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),X=u.object({binaryName:U,displayName:U,homepage:u.url().startsWith(`https://`),lookupAliases:u.array(U).min(1).optional(),name:U.regex(/^[a-z0-9][a-z0-9-]*$/),packages:pn.optional(),platforms:gn,selfUpdate:mn.optional(),versionProbe:hn.optional()}).strict(),_n=X.extend({platforms:fn}).strict(),vn=u.array(_n).min(1),yn=u.array(X).min(1),bn={...st(yn),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},xn={},Sn=vn.parse($t).map(Tn),Cn=new Map(Sn.map(e=>[e.name,e]));function wn(){return Sn}function Z(e){let t=Cn.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function Tn(e){let t=xn[e.name],n=An(e.versionProbe,t),r=Dn(e),i=Object.fromEntries(Object.entries(e.platforms).map(([e,t])=>[e,t?.map(En)]));return{...e,...r?{packages:r}:{},platforms:i,versionProbe:n}}function En(e){if(`type`in e)return e;let{provider:t,target:n}=e;if(t===`script`||t===`binary`){let e=n.effect;if(!On(e))throw Error(`${t} catalog candidate requires an execution effect`);let r=e.kind===`shell-script`?e.command:kn(e.command);return{...n.binaryName?{binaryName:n.binaryName}:{},command:r,type:t}}let r=Q(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 Dn(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=Q(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 Q(e){if(e===`bun`||e===`npm`)return`npm`;if(e===`cargo`||e===`deno`||e===`mise`||e===`pip`||e===`uv`)return e}function On(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 kn(e){return e.map(e=>e.includes(` `)?JSON.stringify(e):e).join(` `)}function An(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}Z(`amp`),Z(`antigravity`),Z(`auggie`);const jn=Z(`autohand`),Mn=Z(`claude`),Nn=Z(`codebuddy`),Pn=Z(`codewhale`),Fn=Z(`codex`);Z(`commandcode`);const In=Z(`copilot`);Z(`crush`);const Ln=Z(`cursor`),Rn=Z(`deepcode`),zn=Z(`devin`),Bn=Z(`droid`);Z(`forgecode`);const Vn=Z(`gemini`),Hn=Z(`genie`);Z(`goose`);const Un=Z(`grok`),Wn=Z(`hermes`),Gn=Z(`jcode`),Kn=Z(`junie`),qn=Z(`kilo`);Z(`kimi`),Z(`kiro`);const Jn=Z(`mimo`),Yn=Z(`omp`),Xn=Z(`openclaw`),Zn=Z(`opencode`),Qn=Z(`openhands`),$n=Z(`pi`),er=Z(`qoder`);Z(`qwen`);const tr=Z(`reasonix`),nr=Z(`vibe`),rr=Z(`vtcode`),$=wn();function ir(){return $}function ar(e){let t=$.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1));if(t)return t;let n=sr(e);return $.find(e=>sr(e.displayName)===n)}function or(e){return ar(e)}function sr(e){return e.trim().toLowerCase()}export{rr as A,R as B,Xn as C,er as D,$n as E,yn as F,Ot as G,F as H,Qt as I,wt as K,Kt as L,wn as M,X as N,tr as O,bn as P,V as R,Yn as S,Qn as T,P as U,L as V,j as W,Wn as _,Mn as a,qn as b,Fn as c,Rn as d,zn as f,Un as g,Hn as h,jn as i,Z as j,nr as k,In as l,Vn as m,or as n,Nn as o,Bn as p,C as q,ir as r,Pn as s,ar as t,Ln as u,Gn as v,Zn as w,Jn as x,Kn as y,z};
1
+ import{n as e}from"./child-process-CBKnpMWt.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-BMnWqkaW.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-C-UHM_On.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-BdnZzKbm.mjs";import{r as it}from"./registry-N9jeGQcX.mjs";import{G as at}from"./output-Bf3N0Tjs.mjs";import{t as ot}from"./types-D3y_n7iy.mjs";import{toJSONSchema as st,z as u}from"zod";function d(e){return e.kind===`cancelled`||e.kind===`timed-out`}function f(e){return e.kind===`cancelled`?{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:e}async function p(e,t){if(e.signal.aborted)return{kind:`cancelled`,reason:h(e.signal)};let n,r,i=new Promise(t=>{r=()=>t({kind:`cancelled`,reason:h(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:ct(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 m(t,n){if(t.signal.aborted)return{kind:`cancelled`,reason:h(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:ct(t)}}}function h(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 ct(e){return e instanceof Error?e.message:String(e)}function g(e,t){let n=async n=>{let r=await _(n.context,t.contextualObservation,()=>t.probePackagePresence(n.target,n.context));if(d(r))return f(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[pt(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 b({evidence:[mt(e.id,n.target.id,`absent`)],kind:`absent`,target:n.target});let i=t.getInstalledVersion?await _(n.context,t.contextualObservation,()=>t.getInstalledVersion(n.target,n.context)):void 0;return i&&d(i)?f(i):b({evidence:[mt(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 _(n,t.contextualObservation,()=>t.isAvailable(n));return d(r)?f(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:b({executable:e.executable})},id:e.id,install:n=>v(e,n,`install`,e.commands.install(n.target),t.contextualMutation,t.install),observe:n,uninstall:n=>v(e,n,`uninstall`,e.commands.uninstall(n.target),t.contextualMutation,t.uninstall),update:n=>v(e,n,`update`,e.commands.update(n.target),t.contextualMutation,t.update),updateMany:n=>ut(e,t,n),verify:async t=>{let r=await n(t);return r.kind===`success`?r.value.kind===`absent`?b({evidence:r.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):b({evidence:r.value.evidence??[],kind:`satisfied`}):r}}}function _(e,t,n){return t?m(e,n):p(e,n)}function lt(e,t,n){return t?m(e,n):p(e,n)}async function v(e,t,n,r,i,a){let o=await lt(t.context,i,()=>a(t.target,t.context));if(d(o))return f(o);let s=ft(e.id,r);return o.kind===`rejected`?y(e,t.target.id,n,r,s,o.reason):o.value.kind===`success`?b({evidence:s,target:t.target}):dt(o.value,e,t.target.id,n,r,s)}async function ut(e,t,n){let r=e.commands.updateMany(n.targets),i=await lt(n.context,t.contextualMutation,()=>t.updateMany(n.targets,n.context));if(d(i))return f(i);let a=ft(e.id,r);return i.kind===`rejected`?y(e,void 0,`update`,r,a,i.reason):i.value.kind===`success`?b(n.targets.map(e=>({evidence:a,target:e}))):dt(i.value,e,void 0,`update`,r,a)}function dt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=y(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 y(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 ft(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function pt(e,t){return{kind:`provider`,value:`${e}:${t}`}}function mt(e,t,n){return{kind:`package`,value:`${e}:${t}:${n}`}}function b(e){return{kind:`success`,value:e}}function x(e){return e.kind===`cask`?`cask`:`package`}const ht={contextualMutation:!0,contextualObservation:!0,getInstalledVersion:(e,t)=>ve(e.id,x(e),t),install:(e,t)=>qe(e.id,x(e),t),isAvailable:e=>tt(e),probePackagePresence:(e,t)=>se(e.id,x(e),t),uninstall:(e,t)=>Se(e.id,x(e),t),update:(e,t)=>xe(e.id,x(e),t),updateMany:(e,t)=>de(e.map(e=>({packageName:e.id,packageTargetKind:x(e)})),t)};function S(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function gt(e=ht){return g({commands:{install:e=>S(`install`,e),uninstall:e=>S(`uninstall`,e),update:e=>S(`upgrade`,e),updateMany:e=>[`brew`,`upgrade`,...e.flatMap(e=>S(`upgrade`,e).slice(2))]},displayName:`Homebrew`,executable:`brew`,id:`brew`},e)}const C=gt();function _t(e,t){let n=O(`provider`,e.id),r=async n=>{let r=await w(n.context,t.contextualPackageObservation,()=>t.probePackagePresence(n.target.id,n.context));if(d(r))return f(r);if(r.kind===`rejected`||r.value===`unknown`)return{evidence:[O(`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 k({evidence:[O(`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(d(i))return f(i);let a=i.kind===`resolved`?i.value:void 0;return k({evidence:[O(`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 d(r)?f(r):r.kind===`rejected`||!r.value?{kind:`unavailable`,reason:`${e.id} executable is unavailable`}:k({executable:e.executable})},id:e.id,install:n=>{let r=D(n.options),i=e.commands.install(n.target,r);return T(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=D(r.options),a=await p(r.context,()=>t.resolveLatestVersion(r.target.id,i.distTag,i.registry));return d(a)?f(a):a.kind===`rejected`||!a.value?{evidence:[n],kind:`indeterminate`,reason:`${e.id} could not resolve the ${i.distTag} version for ${r.target.id}`}:k({evidence:[n,O(`package`,`${e.id}:${r.target.id}@${i.distTag}=${a.value}`)],version:a.value})},uninstall:n=>{let r=e.commands.uninstall(n.target);return T(e,n.context,n.target,r,t.contextualMutation,()=>t.uninstall(n.target.id,n.context))},update:n=>{let r=D(n.options),i=e.commands.update(n.target,r);return T(e,n.context,n.target,i,t.contextualMutation,()=>t.update(n.target.id,r.updateStrategy,r.distTag,r.registry,n.context))},updateMany:n=>yt(e,t,n),verify:async t=>{let n=await r(t);return n.kind===`success`?n.value.kind===`absent`?k({evidence:n.value.evidence??[],kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}):k({evidence:n.value.evidence??[],kind:`satisfied`}):n}}}function w(e,t,n){return t?m(e,n):p(e,n)}function vt(e,t,n){return t?m(e,n):p(e,n)}async function yt(e,t,n){let r=D(n.options),i=e.commands.updateMany(n.targets,r),a=[O(`provider`,e.id),O(`command`,i.join(` `))],o=await vt(n.context,t.contextualMutation,()=>t.updateMany(n.targets.map(e=>e.id),r.updateStrategy,n.context));return d(o)?f(o):o.kind===`rejected`?E(e,i,a,`update-many`,void 0,o.reason):o.value.kind===`success`?k(n.targets.map(e=>({evidence:a,target:e}))):bt(o.value,e,i,a,`update-many`)}async function T(e,t,n,r,i,a){let o=await vt(t,i,a);if(d(o))return f(o);let s=[O(`provider`,e.id),O(`command`,r.join(` `))];return o.kind===`rejected`?E(e,r,s,r[1]??`operation`,n.id,o.reason):o.value.kind===`success`?k({evidence:s,target:n}):bt(o.value,e,r,s,r[1]??`operation`,n.id)}function bt(e,t,n,r,i,a){if(e.kind!==`failed`)return e;let o=E(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 E(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 D(e){return{distTag:e?.distTag??`latest`,distTagExplicit:e?.distTag!==void 0,registry:it(e?.registry),updateStrategy:e?.updateStrategy??`latest-major`}}function O(e,t){return{kind:e,value:t}}function k(e){return{kind:`success`,value:e}}const xt={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)]},St={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)=>at(e,t,{registry:n}),uninstall:(e,t)=>te(e,t),update:(e,t,n,r,i)=>a(e,t,n,r,i),updateMany:(e,t,n)=>s(e,t,n)};function Ct(e=St){return _t({commands:xt,displayName:`Bun`,executable:`bun`,id:`bun`},e)}const wt=Ct(),Tt={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 Et(e,t=!1){return[`cargo`,`install`,e.id,...t?[`--force`]:[],...e.arguments??[]]}function Dt(e=Tt){return g({commands:{install:e=>Et(e),uninstall:e=>[`cargo`,`uninstall`,e.id],update:e=>Et(e,!0),updateMany:e=>[`cargo`,`install`,...e.flatMap(e=>[e.id,`--force`,...e.arguments??[]])]},displayName:`Cargo`,executable:`cargo`,id:`cargo`},e)}const Ot=Dt(),kt={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 A(e,t=!1){return[`deno`,`install`,`--global`,...t?[`--force`]:[],...e.arguments??[],e.id]}function At(e=kt){return g({commands:{install:e=>A(e),uninstall:e=>[`deno`,`uninstall`,`--global`,c(e.id,e.binaryName)],update:e=>A(e,!0),updateMany:e=>[`deno`,`install`,`--global`,`--force`,...e.flatMap(e=>[...e.arguments??[],e.id])]},displayName:`Deno`,executable:`deno`,id:`deno`},e)}const j=At(),jt={contextualExecution:!0,execute:(e,t)=>i(N(e,l()),t,`install effect failed`),isExecutablePresent:$e};function M(e,t={}){let n={...jt,...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 p(t.context,()=>n.isExecutablePresent(r));return d(i)?f(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=>Nt(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 Mt(t.context,n.contextualExecution,()=>n.execute(r,t.context));if(d(i))return f(i);let a=N(r,l()),o=Pt(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 Mt(e,t,n){return t?m(e,n):p(e,n)}function N(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}async function Nt(e){return e.signal.aborted?{kind:`cancelled`,reason:String(e.signal.reason)}:{kind:`success`,value:{executable:l()===`windows`?`powershell.exe`:`sh`}}}function Pt(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}const P=M(`script`),F=M(`binary`),Ft={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 I(e,t=!1){return[`mise`,`use`,`--global`,...t?[`--force`]:[],e.id]}function It(e=Ft){return g({commands:{install:e=>I(e),uninstall:e=>[`mise`,`unuse`,`--global`,e.id],update:e=>I(e,!0),updateMany:e=>[`mise`,`use`,`--global`,`--force`,...e.map(e=>e.id)]},displayName:`mise`,executable:`mise`,id:`mise`},e)}const L=It(),Lt={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)]},Rt={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)=>at(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 zt(e=Rt){return _t({commands:Lt,displayName:`npm`,executable:`npm`,id:`npm`},e)}const R=zt(),Bt={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 Vt(e=Bt){return g({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 z=Vt(),Ht={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 B(e,t){return[`uv`,`tool`,e,t.id,...t.arguments??[]]}function Ut(e=Ht){return g({commands:{install:e=>B(`install`,e),uninstall:e=>[`uv`,`tool`,`uninstall`,e.id],update:e=>B(`upgrade`,e),updateMany:e=>[`uv`,`tool`,`upgrade`,...e.flatMap(e=>[e.id,...e.arguments??[]])]},displayName:`uv`,executable:`uv`,id:`uv`},e)}const V=Ut(),Wt={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 H(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function Gt(e=Wt){return g({commands:{install:e=>H(`install`,e),uninstall:e=>H(`uninstall`,e),update:e=>H(`upgrade`,e),updateMany:e=>[`winget`,`upgrade`,...e.flatMap(e=>[`--id`,e.id,`-e`])]},displayName:`winget`,executable:`winget`,id:`winget`},e)}const Kt=Gt(),qt=Object.freeze([`availability`,`observe`,`resolve-latest-version`,`install`,`update`,`update-many`,`uninstall`,`verify`]),Jt={availability:`availability`,install:`install`,observe:`observe`,"resolve-latest-version":`resolveLatestVersion`,uninstall:`uninstall`,update:`update`,"update-many":`updateMany`,verify:`verify`};function Yt(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,Zt(e)]));return Object.freeze({get(e){return t.get(e)},getCapabilities(e){return r.get(e)??Object.freeze([])},list(){return n}})}function Xt(e){return Yt(ot.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 Zt(e){return Object.freeze(qt.filter(t=>typeof e[Jt[t]]==`function`))}const Qt=Xt({binary:F,brew:C,bun:wt,cargo:Ot,deno:j,mise:L,npm:R,pip:z,script:P,uv:V,winget:Kt}),$t=[{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/`,packages:{npm:`autohand-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`}}}],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`}}}],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`}}}]}},{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`}},{provider:`cargo`,target:{id:`codewhale-cli`,kind:`package`,arguments:[`--locked`]},probes:[`executable-presence`]}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{provider:`cargo`,target:{id:`codewhale-cli`,kind:`package`,arguments:[`--locked`]},probes:[`executable-presence`]}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{provider:`cargo`,target:{id:`codewhale-cli`,kind:`package`,arguments:[`--locked`]},probes:[`executable-presence`]}]}},{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`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}}],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`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}},{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`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}},{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:`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:`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`],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`],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`],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:`forgecode`,lookupAliases:[`forge`],displayName:`ForgeCode`,homepage:`https://forgecode.dev`,binaryName:`forge`,selfUpdate:{command:[`forge`,`update`]},versionProbe:{command:[`forge`,`--version`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://forgecode.dev/cli`,kind:`script`,effect:{command:`irm https://forgecode.dev/cli | iex`,kind:`shell-script`}}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://forgecode.dev/cli`,kind:`script`,effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`}}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{id:`https://forgecode.dev/cli`,kind:`script`,effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`}}}]}},{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:`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:`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`],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:`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`],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`],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:`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:`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`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`],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`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`],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`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@jetbrains/junie`,kind:`package`}},{probes:[`executable-presence`],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`,selfUpdate:{command:[`uv`,`tool`,`upgrade`,`openhands`,`--python`,`3.12`]},versionProbe:{command:[`openhands`,`--version`]},platforms:{macos:[{provider:`uv`,target:{id:`openhands`,kind:`tool`,arguments:[`--python`,`3.12`]},probes:[`executable-presence`,`installed-version`,`package-presence`]},{probes:[`executable-presence`],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:[{provider:`uv`,target:{id:`openhands`,kind:`tool`,arguments:[`--python`,`3.12`]},probes:[`executable-presence`,`installed-version`,`package-presence`]},{probes:[`executable-presence`],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`]},platforms:{windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}],linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/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:{windows:[{provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`},probes:[`executable-presence`,`installed-version`,`package-presence`],legacy:{packageNameInMethod:!0}},{provider:`pip`,target:{id:`mistral-vibe`,kind:`package`},probes:[`executable-presence`],legacy:{packageNameInMethod:!0}}],macos:[{probes:[`executable-presence`],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`}}},{provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`},probes:[`executable-presence`,`installed-version`,`package-presence`],legacy:{packageNameInMethod:!0}},{provider:`pip`,target:{id:`mistral-vibe`,kind:`package`},probes:[`executable-presence`],legacy:{packageNameInMethod:!0}}],linux:[{probes:[`executable-presence`],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`}}},{provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`},probes:[`executable-presence`,`installed-version`,`package-presence`],legacy:{packageNameInMethod:!0}},{provider:`pip`,target:{id:`mistral-vibe`,kind:`package`},probes:[`executable-presence`],legacy:{packageNameInMethod:!0}}]}},{name:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,binaryName:`vtcode`,selfUpdate:{command:[`vtcode`,`update`]},versionProbe:{command:[`vtcode`,`--version`]},platforms:{windows:[{provider:`cargo`,target:{id:`vtcode`,kind:`package`},probes:[`executable-presence`]},{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`}}},{provider:`cargo`,target:{id:`vtcode`,kind:`package`},probes:[`executable-presence`]},{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`}}},{provider:`cargo`,target:{id:`vtcode`,kind:`package`},probes:[`executable-presence`]},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}]}}],U=u.string().min(1),W=u.array(U).min(1);u.enum([`windows`,`macos`,`linux`]);const en=u.enum([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]),tn=u.enum([`package`,`cask`,`id`]),G={binaryName:U.optional(),packageInstallArgs:u.array(U).min(1).optional(),packageName:U.optional(),packageTargetKind:tn.optional()},nn=u.object({...G,type:en}).strict(),rn=u.object({...G,command:U,type:u.literal(`script`)}).strict(),an=u.object({...G,command:U,type:u.literal(`binary`)}).strict(),K=u.discriminatedUnion(`type`,[nn,rn,an]),on=u.enum([`executable-presence`,`installed-version`,`package-presence`,`target-version`]),sn=u.array(on).min(1).refine(e=>new Set(e).size===e.length,{message:`candidate probes must be unique`}).optional(),cn=u.object({command:W,kind:u.literal(`executable`)}).strict(),ln=u.object({command:U,kind:u.literal(`shell-script`)}).strict(),un=u.discriminatedUnion(`kind`,[cn,ln]);function q(e,t={}){return u.object({arguments:u.array(U).min(1).optional(),binaryName:U.optional(),...t.effect?{effect:un}:{},id:U,kind:u.literal(e)}).strict()}function J(e,t){return u.object({legacy:u.object({packageNameInMethod:u.literal(!0).optional()}).strict().optional(),probes:sn,provider:u.literal(e),target:t}).strict()}const dn=u.discriminatedUnion(`provider`,[J(`bun`,q(`package`)),J(`npm`,q(`package`)),J(`brew`,u.union([q(`formula`),q(`cask`)])),J(`cargo`,q(`package`)),J(`deno`,q(`tool`)),J(`mise`,q(`tool`)),J(`pip`,q(`package`)),J(`uv`,q(`tool`)),J(`winget`,q(`id`)),J(`script`,q(`script`,{effect:!0})),J(`binary`,q(`binary`,{effect:!0}))]),Y=u.union([K,dn]),fn=u.object({linux:u.array(Y).min(1).optional(),macos:u.array(Y).min(1).optional(),windows:u.array(Y).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),pn=u.object({cargo:U.optional(),deno:U.optional(),mise:U.optional(),npm:U.optional(),pip:U.optional(),uv:U.optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`packages must include at least one package identifier`}),mn=u.object({command:W,fallbackCommands:u.array(W).min(1).optional(),versionAfter:u.enum([`same-process`,`respawn`]).optional()}).strict(),hn=u.object({command:W.optional()}).strict().refine(e=>e.command!==void 0,{message:`versionProbe must include a serializable command`}),gn=u.object({linux:u.array(K).min(1).optional(),macos:u.array(K).min(1).optional(),windows:u.array(K).min(1).optional()}).strict().refine(e=>Object.values(e).some(Boolean),{message:`platforms must include at least one supported platform`}),X=u.object({binaryName:U,displayName:U,homepage:u.url().startsWith(`https://`),lookupAliases:u.array(U).min(1).optional(),name:U.regex(/^[a-z0-9][a-z0-9-]*$/),packages:pn.optional(),platforms:gn,selfUpdate:mn.optional(),versionProbe:hn.optional()}).strict(),_n=X.extend({platforms:fn}).strict(),vn=u.array(_n).min(1),yn=u.array(X).min(1),bn={...st(yn),$id:`https://github.com/Drswith/quantex-cli/schemas/agent-catalog.schema.json`,title:`Quantex Supported Agent Catalog`},xn={},Sn=vn.parse($t).map(Tn),Cn=new Map(Sn.map(e=>[e.name,e]));function wn(){return Sn}function Z(e){let t=Cn.get(e);if(!t)throw Error(`Unknown catalog agent: ${e}`);return t}function Tn(e){let t=xn[e.name],n=An(e.versionProbe,t),r=Dn(e),i=Object.fromEntries(Object.entries(e.platforms).map(([e,t])=>[e,t?.map(En)]));return{...e,...r?{packages:r}:{},platforms:i,versionProbe:n}}function En(e){if(`type`in e)return e;let{provider:t,target:n}=e;if(t===`script`||t===`binary`){let e=n.effect;if(!On(e))throw Error(`${t} catalog candidate requires an execution effect`);let r=e.kind===`shell-script`?e.command:kn(e.command);return{...n.binaryName?{binaryName:n.binaryName}:{},command:r,type:t}}let r=Q(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 Dn(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=Q(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 Q(e){if(e===`bun`||e===`npm`)return`npm`;if(e===`cargo`||e===`deno`||e===`mise`||e===`pip`||e===`uv`)return e}function On(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 kn(e){return e.map(e=>e.includes(` `)?JSON.stringify(e):e).join(` `)}function An(e,t){if(!(!e&&!t?.versionProbeParser))return{...e,...t?.versionProbeParser?{parser:t.versionProbeParser}:{}}}Z(`amp`),Z(`antigravity`),Z(`auggie`);const jn=Z(`autohand`),Mn=Z(`claude`),Nn=Z(`codebuddy`),Pn=Z(`codewhale`),Fn=Z(`codex`);Z(`commandcode`);const In=Z(`copilot`);Z(`crush`);const Ln=Z(`cursor`),Rn=Z(`deepcode`),zn=Z(`devin`),Bn=Z(`droid`);Z(`forgecode`);const Vn=Z(`gemini`),Hn=Z(`genie`);Z(`goose`);const Un=Z(`grok`),Wn=Z(`hermes`),Gn=Z(`jcode`),Kn=Z(`junie`),qn=Z(`kilo`);Z(`kimi`),Z(`kiro`);const Jn=Z(`mimo`),Yn=Z(`omp`),Xn=Z(`openclaw`),Zn=Z(`opencode`),Qn=Z(`openhands`),$n=Z(`pi`),er=Z(`qoder`);Z(`qwen`);const tr=Z(`reasonix`),nr=Z(`vibe`),rr=Z(`vtcode`),$=wn();function ir(){return $}function ar(e){let t=$.find(t=>t.name===e||(t.lookupAliases?.includes(e)??!1));if(t)return t;let n=sr(e);return $.find(e=>sr(e.displayName)===n)}function or(e){return ar(e)}function sr(e){return e.trim().toLowerCase()}export{rr as A,R as B,Xn as C,er as D,$n as E,yn as F,Ot as G,F as H,Qt as I,wt as K,Kt as L,wn as M,X as N,tr as O,bn as P,V as R,Yn as S,Qn as T,P as U,L as V,j as W,Wn as _,Mn as a,qn as b,Fn as c,Rn as d,zn as f,Un as g,Hn as h,jn as i,Z as j,nr as k,In as l,Vn as m,or as n,Nn as o,Bn as p,C as q,ir as r,Pn as s,ar as t,Ln as u,Gn as v,Zn as w,Jn as x,Kn as y,z};
@@ -1 +1 @@
1
- import{c as e,s as t}from"./child-process-CBKnpMWt.mjs";import{c as n,f as r,i,t as a}from"./npm-BMnWqkaW.mjs";import{B as o,E as s,M as c,O as ee,P as te,R as ne,T as l,h as re,l as ie,p as ae,r as oe,s as se,t as u,x as ce,y as le}from"./winget-C-UHM_On.mjs";import{n as ue,t as d}from"./detect-BdnZzKbm.mjs";import{B as de,G as fe,H as pe,K as me,L as he,R as ge,U as _e,V as ve,W as ye,n as be,q as xe,r as Se,z as Ce}from"./agents-By5JY7Ag.mjs";import{i as we,n as f}from"./cli-context-xudTdmO7.mjs";import{d as p,o as Te}from"./file-store-Caz7fnAB.mjs";import{D as m,G as Ee,K as De,U as Oe,W as ke,j as h,x as g}from"./output-CDT7Z3i4.mjs";import{c as Ae,d as _,h as je,m as Me,p as v,s as y,u as b,v as x}from"./providers-CLE8qdcG.mjs";import{n as S,t as C}from"./cli-operation-context-QEqKxWgM.mjs";import Ne from"node:process";import{AsyncLocalStorage as Pe}from"node:async_hooks";function w(n,r={}){let i=t(n,S(f().outputMode),r),a=we(()=>e(i.proc));return{...i,cleanup:()=>{a(),i.cleanup()}}}async function T(e){let t=f();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function E(e){let t=d(),n=typeof e==`function`?e(t):e;try{return Ne.platform===`win32`?await T(w([`powershell.exe`,`-Command`,n]))===0:await T(w([`sh`,`-c`,n]))===0}catch{return!1}}function D(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>O(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?O(i,i=>t.install({context:i,target:k(e,n,void 0,r)})):P(`install`),uninstall:async(e,n,r,i)=>t.uninstall?O(i,i=>t.uninstall({context:i,target:k(e,n,r?.binaryName)})):P(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return P(`update`);let a=A(r);return O(i,i=>t.update({context:i,...a?{options:a}:{},target:k(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return P(`update-many`);let i=A(n);return O(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>k(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function O(e,t){if(e)return t(e);let n=C();try{return await t(n.context)}finally{n.dispose()}}function k(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function A(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function j(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>O(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?O(a,a=>t.install({context:a,target:i(e,n,r)})):P(`install`),uninstall:async(e,n,r,a)=>t.uninstall?O(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):P(`uninstall`),update:async(e,n,r,a)=>t.update?O(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):P(`update`),updateMany:async(e,n,r)=>t.updateMany?O(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):P(`update-many`)}}const M={brew:j(`brew`,xe,e=>e===`cask`?`cask`:`formula`,{getInstalledVersion:(e,t)=>ne(e,t),probePackagePresence:(e,t)=>o(e,t)}),bun:D(`bun`,me,{getInstalledVersion:e=>n(e),probePackagePresence:e=>r(e)}),cargo:j(`cargo`,fe,()=>`package`,{getInstalledVersion:e=>c(e),probePackagePresence:e=>te(e)}),deno:j(`deno`,ye,()=>`tool`,{getInstalledVersion:e=>l(s(e)),probePackagePresence:e=>ee(s(e))}),mise:j(`mise`,ve,()=>`tool`,{getInstalledVersion:e=>le(e),probePackagePresence:e=>ce(e)}),npm:D(`npm`,de,{getInstalledVersion:e=>a(e),probePackagePresence:e=>i(e)}),pip:j(`pip`,Ce,()=>`package`,{getInstalledVersion:e=>ae(e),probePackagePresence:e=>re(e)}),uv:j(`uv`,ge,()=>`tool`,{getInstalledVersion:e=>se(e),probePackagePresence:e=>ie(e)}),winget:j(`winget`,he,()=>`id`,{getInstalledVersion:e=>u(e),probePackagePresence:e=>oe(e)})},Fe=Object.fromEntries(Object.entries(M).map(([e,t])=>[e,Le(t)]));function Ie(e){return Fe[e]}function N(e){return M[e]}function Le(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function P(e){return{kind:`unsupported`,operation:e}}const Re={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},F=new Pe;function I(e){return F.getStore()?e():Te(Re,()=>F.run(!0,e))}async function ze(){return(await p()).defaultPackageManager}async function L(){return{npmBunUpdateStrategy:(await p()).npmBunUpdateStrategy}}async function R(e){let t=d(),n=e.platforms[t];if(!n)return[];let r=await ze();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function z(e,t,n,r,i,a,o,s){if(!s){let s=C();try{return await z(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=N(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function B(e,t,n,r){if(x(t.type)){let i=_(e,t);return i?z(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):{kind:`failed`,reason:`package target is missing for ${e.name}`,retryable:!1}}if(n===`update`&&!Me(t.type))return{kind:`unsupported`,operation:`update`};if(!t.command)return{kind:`failed`,reason:`install effect is missing for ${e.name}`,retryable:!1};let i=t.type===`script`?_e:pe,a=C();try{return await i.install?.({context:a.context,target:{binaryName:t.binaryName??e.binaryName,effect:{command:t.command,kind:`shell-script`},id:e.name,kind:t.type}})??{kind:`unsupported`,operation:n}}finally{a.dispose()}}function V(e,t){if(e.packageName)return e.packageName;if(!(!t||!x(e.installType)))return _(t,{type:e.installType})}async function H(e,t,n){if(x(e.installType)){let r=V(e,n?.agent);return r?z(e.installType,r,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await E(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function U(e,t){if(!x(t.type))return;let n=_(e,t);n&&await z(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,J())}async function Be(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await E(e.join(` `)))return!0;return!1}function W(e,t){let n={agentName:e.name,installType:t.type,packageName:_(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function Ve(e,t){if(f().cancelled)return null;let n=W(e,t);return f().cancelled?null:(await h(n),f().cancelled?(await m(e.name),null):n)}async function G(e,t){return I(async()=>{let n=t?[...t]:await R(e),r;for(let t of n){if(f().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await B(e,t,`install`);if(n.kind===`success`)return f().cancelled?(await U(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:W(e,t)}};let i=X(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,f().cancelled)return await U(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function He(e){return I(async()=>{let t=await G(e);if(t.kind!==`success`||!t.value.installedState)return Y(t);try{return f().cancelled?(await q(e,t.value.installedState),{success:!1}):(await h(t.value.installedState),f().cancelled?(await m(e.name),await q(e,t.value.installedState),{success:!1}):Y(t))}catch(n){throw await q(e,t.value.installedState),n}})}async function Ue(e,t){return I(async()=>{let{npmBunUpdateStrategy:n}=await L(),r=await R(e),i=t&&x(t.installType)?V(t,e):void 0,a=t?await H(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return f().cancelled||(await h(t),f().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return X(a);if(!t)for(let t of r){let r=await B(e,t,`update`,n);if(r.kind===`success`){let n=await Ve(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return X(r)}return(!t||!x(t.installType)||i)&&await Be(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function We(e,t){return Y(await Ue(e,t))}async function Ge(e,t){return I(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=N(e);return await r.isAvailable()?(await r.updateMany(n,await L())).kind===`success`:!1})}async function Ke(e,t,n){let r=N(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function qe(e,t){if(!x(e.installType))return!1;let n=N(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=V(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Je(e){return(await I(async()=>{let t=await g(e.name);return t?K(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function K(e,t){if(!v(t.installType))return await m(e.name),{kind:`success`,value:{installedState:t}};let n=await H(t,`uninstall`,{agent:e});return n.kind===`success`||await qe(t,e)?(await m(e.name),{kind:`success`,value:{installedState:t}}):X(n)}async function Ye(e,t){let n=await H(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:X(n)}async function q(e,t){if(!v(t.installType)||!x(t.installType))return;let n=V(t,e);n&&await z(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,J())}function J(){let e=f(),t=e.timeoutMs;return{outputPolicy:S(e.outputMode),signal:new AbortController().signal,timeoutMs:t===void 0?5e3:Math.max(10,Math.min(t,5e3))}}function Y(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function X(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}async function Z(e){let[t,n,r]=await Promise.all([R(e),g(e.name),ue(e.binaryName)]),[i,a,o]=await Promise.all([r?Xe(e,n):Promise.resolve(void 0),r?Oe(e.binaryName):Promise.resolve(void 0),Ze(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:o,binaryPath:a,resolvedBinaryPath:await De(a),sourceLabel:y(n),updateLabel:Ae(e,n),lifecycle:n?je(n.installType):`unmanaged`}}async function Q(e){return Promise.all(e.map(Z))}async function Xe(e,t){if(t&&x(t.installType)&&t.packageName){let e=await Ke(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ke(e.binaryName,e.versionProbe)}async function Ze(e,t,n){let r=b(e,t,n);if(r)return Ee(r)}function $(e){return be(e)}async function Qe(e){let t=$(e);if(t)return{agent:t,inspection:await Z(t)}}async function $e(){return Q(Se())}export{Ie as _,Q as a,He as c,q as d,Je as f,I as g,Ge as h,Z as i,G as l,We as m,$ as n,W as o,K as p,Qe as r,R as s,$e as t,Ye as u,w as v,T as y};
1
+ import{c as e,s as t}from"./child-process-CBKnpMWt.mjs";import{c as n,f as r,i,t as a}from"./npm-BMnWqkaW.mjs";import{B as o,E as s,M as c,O as ee,P as te,R as ne,T as l,h as re,l as ie,p as ae,r as oe,s as se,t as u,x as ce,y as le}from"./winget-C-UHM_On.mjs";import{n as ue,t as d}from"./detect-BdnZzKbm.mjs";import{B as de,G as fe,H as pe,K as me,L as he,R as ge,U as _e,V as ve,W as ye,n as be,q as xe,r as Se,z as Ce}from"./agents-D_evv3iI.mjs";import{i as we,n as f}from"./cli-context-xudTdmO7.mjs";import{d as p,o as Te}from"./file-store-Caz7fnAB.mjs";import{D as m,G as Ee,K as De,U as Oe,W as ke,j as h,x as g}from"./output-Bf3N0Tjs.mjs";import{c as Ae,d as _,h as je,m as Me,p as v,s as y,u as b,v as x}from"./providers-gOIzOEnz.mjs";import{n as S,t as C}from"./cli-operation-context-QEqKxWgM.mjs";import Ne from"node:process";import{AsyncLocalStorage as Pe}from"node:async_hooks";function w(n,r={}){let i=t(n,S(f().outputMode),r),a=we(()=>e(i.proc));return{...i,cleanup:()=>{a(),i.cleanup()}}}async function T(e){let t=f();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function E(e){let t=d(),n=typeof e==`function`?e(t):e;try{return Ne.platform===`win32`?await T(w([`powershell.exe`,`-Command`,n]))===0:await T(w([`sh`,`-c`,n]))===0}catch{return!1}}function D(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>O(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?O(i,i=>t.install({context:i,target:k(e,n,void 0,r)})):P(`install`),uninstall:async(e,n,r,i)=>t.uninstall?O(i,i=>t.uninstall({context:i,target:k(e,n,r?.binaryName)})):P(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return P(`update`);let a=A(r);return O(i,i=>t.update({context:i,...a?{options:a}:{},target:k(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return P(`update-many`);let i=A(n);return O(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>k(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function O(e,t){if(e)return t(e);let n=C();try{return await t(n.context)}finally{n.dispose()}}function k(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function A(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function j(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>O(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?O(a,a=>t.install({context:a,target:i(e,n,r)})):P(`install`),uninstall:async(e,n,r,a)=>t.uninstall?O(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):P(`uninstall`),update:async(e,n,r,a)=>t.update?O(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):P(`update`),updateMany:async(e,n,r)=>t.updateMany?O(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):P(`update-many`)}}const M={brew:j(`brew`,xe,e=>e===`cask`?`cask`:`formula`,{getInstalledVersion:(e,t)=>ne(e,t),probePackagePresence:(e,t)=>o(e,t)}),bun:D(`bun`,me,{getInstalledVersion:e=>n(e),probePackagePresence:e=>r(e)}),cargo:j(`cargo`,fe,()=>`package`,{getInstalledVersion:e=>c(e),probePackagePresence:e=>te(e)}),deno:j(`deno`,ye,()=>`tool`,{getInstalledVersion:e=>l(s(e)),probePackagePresence:e=>ee(s(e))}),mise:j(`mise`,ve,()=>`tool`,{getInstalledVersion:e=>le(e),probePackagePresence:e=>ce(e)}),npm:D(`npm`,de,{getInstalledVersion:e=>a(e),probePackagePresence:e=>i(e)}),pip:j(`pip`,Ce,()=>`package`,{getInstalledVersion:e=>ae(e),probePackagePresence:e=>re(e)}),uv:j(`uv`,ge,()=>`tool`,{getInstalledVersion:e=>se(e),probePackagePresence:e=>ie(e)}),winget:j(`winget`,he,()=>`id`,{getInstalledVersion:e=>u(e),probePackagePresence:e=>oe(e)})},Fe=Object.fromEntries(Object.entries(M).map(([e,t])=>[e,Le(t)]));function Ie(e){return Fe[e]}function N(e){return M[e]}function Le(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function P(e){return{kind:`unsupported`,operation:e}}const Re={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},F=new Pe;function I(e){return F.getStore()?e():Te(Re,()=>F.run(!0,e))}async function ze(){return(await p()).defaultPackageManager}async function L(){return{npmBunUpdateStrategy:(await p()).npmBunUpdateStrategy}}async function R(e){let t=d(),n=e.platforms[t];if(!n)return[];let r=await ze();return r?[...n.filter(e=>e.type===r),...n.filter(e=>e.type!==r)]:[...n]}async function z(e,t,n,r,i,a,o,s){if(!s){let s=C();try{return await z(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=N(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function B(e,t,n,r){if(x(t.type)){let i=_(e,t);return i?z(t.type,i,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,n,r):{kind:`failed`,reason:`package target is missing for ${e.name}`,retryable:!1}}if(n===`update`&&!Me(t.type))return{kind:`unsupported`,operation:`update`};if(!t.command)return{kind:`failed`,reason:`install effect is missing for ${e.name}`,retryable:!1};let i=t.type===`script`?_e:pe,a=C();try{return await i.install?.({context:a.context,target:{binaryName:t.binaryName??e.binaryName,effect:{command:t.command,kind:`shell-script`},id:e.name,kind:t.type}})??{kind:`unsupported`,operation:n}}finally{a.dispose()}}function V(e,t){if(e.packageName)return e.packageName;if(!(!t||!x(e.installType)))return _(t,{type:e.installType})}async function H(e,t,n){if(x(e.installType)){let r=V(e,n?.agent);return r?z(e.installType,r,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await E(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function U(e,t){if(!x(t.type))return;let n=_(e,t);n&&await z(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,J())}async function Be(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await E(e.join(` `)))return!0;return!1}function W(e,t){let n={agentName:e.name,installType:t.type,packageName:_(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function Ve(e,t){if(f().cancelled)return null;let n=W(e,t);return f().cancelled?null:(await h(n),f().cancelled?(await m(e.name),null):n)}async function G(e,t){return I(async()=>{let n=t?[...t]:await R(e),r;for(let t of n){if(f().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await B(e,t,`install`);if(n.kind===`success`)return f().cancelled?(await U(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:W(e,t)}};let i=X(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,f().cancelled)return await U(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function He(e){return I(async()=>{let t=await G(e);if(t.kind!==`success`||!t.value.installedState)return Y(t);try{return f().cancelled?(await q(e,t.value.installedState),{success:!1}):(await h(t.value.installedState),f().cancelled?(await m(e.name),await q(e,t.value.installedState),{success:!1}):Y(t))}catch(n){throw await q(e,t.value.installedState),n}})}async function Ue(e,t){return I(async()=>{let{npmBunUpdateStrategy:n}=await L(),r=await R(e),i=t&&x(t.installType)?V(t,e):void 0,a=t?await H(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return f().cancelled||(await h(t),f().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return X(a);if(!t)for(let t of r){let r=await B(e,t,`update`,n);if(r.kind===`success`){let n=await Ve(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return X(r)}return(!t||!x(t.installType)||i)&&await Be(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function We(e,t){return Y(await Ue(e,t))}async function Ge(e,t){return I(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=N(e);return await r.isAvailable()?(await r.updateMany(n,await L())).kind===`success`:!1})}async function Ke(e,t,n){let r=N(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function qe(e,t){if(!x(e.installType))return!1;let n=N(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=V(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Je(e){return(await I(async()=>{let t=await g(e.name);return t?K(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function K(e,t){if(!v(t.installType))return await m(e.name),{kind:`success`,value:{installedState:t}};let n=await H(t,`uninstall`,{agent:e});return n.kind===`success`||await qe(t,e)?(await m(e.name),{kind:`success`,value:{installedState:t}}):X(n)}async function Ye(e,t){let n=await H(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:X(n)}async function q(e,t){if(!v(t.installType)||!x(t.installType))return;let n=V(t,e);n&&await z(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,J())}function J(){let e=f(),t=e.timeoutMs;return{outputPolicy:S(e.outputMode),signal:new AbortController().signal,timeoutMs:t===void 0?5e3:Math.max(10,Math.min(t,5e3))}}function Y(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function X(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}async function Z(e){let[t,n,r]=await Promise.all([R(e),g(e.name),ue(e.binaryName)]),[i,a,o]=await Promise.all([r?Xe(e,n):Promise.resolve(void 0),r?Oe(e.binaryName):Promise.resolve(void 0),Ze(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:r,installedVersion:i,latestVersion:o,binaryPath:a,resolvedBinaryPath:await De(a),sourceLabel:y(n),updateLabel:Ae(e,n),lifecycle:n?je(n.installType):`unmanaged`}}async function Q(e){return Promise.all(e.map(Z))}async function Xe(e,t){if(t&&x(t.installType)&&t.packageName){let e=await Ke(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return ke(e.binaryName,e.versionProbe)}async function Ze(e,t,n){let r=b(e,t,n);if(r)return Ee(r)}function $(e){return be(e)}async function Qe(e){let t=$(e);if(t)return{agent:t,inspection:await Z(t)}}async function $e(){return Q(Se())}export{Ie as _,Q as a,He as c,q as d,Je as f,I as g,Ge as h,Z as i,G as l,We as m,$ as n,W as o,K as p,Qe as r,R as s,$e as t,Ye as u,w as v,T as y};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./detect-BdnZzKbm.mjs";import{r as t}from"./agents-By5JY7Ag.mjs";import{R as n,i as r,n as i,s as a}from"./output-CDT7Z3i4.mjs";import{t as o}from"./cli-operation-context-QEqKxWgM.mjs";import{n as s,t as c}from"./provider-observations-DVnT0_AA.mjs";import{t as l}from"./color-BAlKATeY.mjs";import u from"node:process";function d(e=n()){let t=new Map(e.map(e=>[e.name,new Set(e.effects)])),r=new Map(e.map(e=>[e.name,new Set(e.flags)]));return{effects:new Set(e.flatMap(e=>e.effects)),effectsByCommand:t,flags:new Set(e.flatMap(e=>e.flags)),flagsByCommand:r}}function f(e,t){let n=e.effectsByCommand.get(`upgrade`),r=e.flagsByCommand.get(`upgrade`),i=e.flagsByCommand.get(`exec`);return{assumeYes:e.flags.has(`--yes`),cacheBypass:e.flags.has(`--no-cache`),cacheRefresh:e.flags.has(`--refresh`),channels:r?.has(`--channel`)?[`stable`,`beta`]:[],colorModes:e.flags.has(`--color`)?[`auto`,`always`,`never`]:[],dryRun:e.flags.has(`--dry-run`),execInstallPolicies:i?.has(`--install`)?[`never`,`if-missing`,`always`]:[],freshnessMetadata:e.effects.has(`network`)&&e.flags.has(`--refresh`)&&e.flags.has(`--no-cache`),idempotencyKey:e.flags.has(`--idempotency-key`),logLevels:e.flags.has(`--log-level`)?[`silent`,`error`,`warn`,`info`,`debug`]:[],quietLogs:e.flags.has(`--quiet`),selfUpgrade:t.canAutoUpdateSelf&&!!(n?.has(`mutation`)&&n.has(`network`)),timeout:e.flags.has(`--timeout`)}}async function p(){let n=o(),l,p;try{[l,p]=await n.run(()=>Promise.all([c({context:n.context}),a({context:n.context})]))}finally{n.dispose()}let g=s(l,e=>{let t=e.availability.kind===`success`;return{available:t,reason:t?void 0:m(e.id)}}),_=f(d(),{canAutoUpdateSelf:p.canAutoUpdate});return r(i({action:`capabilities`,data:{agents:t().map(e=>e.name),features:_,installers:g,outputModes:[`human`,`json`,`ndjson`],platform:{arch:u.arch,os:e()}},target:{kind:`system`,name:`capabilities`}}),h)}function m(e){return e===`winget`&&u.platform!==`win32`||e===`brew`&&u.platform===`win32`?`not-on-platform`:`not-found`}function h(e){e.data&&(console.log(l.bold(`
1
+ import{t as e}from"./detect-BdnZzKbm.mjs";import{r as t}from"./agents-D_evv3iI.mjs";import{R as n,i as r,n as i,s as a}from"./output-Bf3N0Tjs.mjs";import{t as o}from"./cli-operation-context-QEqKxWgM.mjs";import{n as s,t as c}from"./provider-observations-CYYOshQ4.mjs";import{t as l}from"./color-BAlKATeY.mjs";import u from"node:process";function d(e=n()){let t=new Map(e.map(e=>[e.name,new Set(e.effects)])),r=new Map(e.map(e=>[e.name,new Set(e.flags)]));return{effects:new Set(e.flatMap(e=>e.effects)),effectsByCommand:t,flags:new Set(e.flatMap(e=>e.flags)),flagsByCommand:r}}function f(e,t){let n=e.effectsByCommand.get(`upgrade`),r=e.flagsByCommand.get(`upgrade`),i=e.flagsByCommand.get(`exec`);return{assumeYes:e.flags.has(`--yes`),cacheBypass:e.flags.has(`--no-cache`),cacheRefresh:e.flags.has(`--refresh`),channels:r?.has(`--channel`)?[`stable`,`beta`]:[],colorModes:e.flags.has(`--color`)?[`auto`,`always`,`never`]:[],dryRun:e.flags.has(`--dry-run`),execInstallPolicies:i?.has(`--install`)?[`never`,`if-missing`,`always`]:[],freshnessMetadata:e.effects.has(`network`)&&e.flags.has(`--refresh`)&&e.flags.has(`--no-cache`),idempotencyKey:e.flags.has(`--idempotency-key`),logLevels:e.flags.has(`--log-level`)?[`silent`,`error`,`warn`,`info`,`debug`]:[],quietLogs:e.flags.has(`--quiet`),selfUpgrade:t.canAutoUpdateSelf&&!!(n?.has(`mutation`)&&n.has(`network`)),timeout:e.flags.has(`--timeout`)}}async function p(){let n=o(),l,p;try{[l,p]=await n.run(()=>Promise.all([c({context:n.context}),a({context:n.context})]))}finally{n.dispose()}let g=s(l,e=>{let t=e.availability.kind===`success`;return{available:t,reason:t?void 0:m(e.id)}}),_=f(d(),{canAutoUpdateSelf:p.canAutoUpdate});return r(i({action:`capabilities`,data:{agents:t().map(e=>e.name),features:_,installers:g,outputModes:[`human`,`json`,`ndjson`],platform:{arch:u.arch,os:e()}},target:{kind:`system`,name:`capabilities`}}),h)}function m(e){return e===`winget`&&u.platform!==`win32`||e===`brew`&&u.platform===`win32`?`not-on-platform`:`not-found`}function h(e){e.data&&(console.log(l.bold(`
2
2
  Quantex Capabilities
3
3
  `)),console.log(` Platform: ${e.data.platform.os}/${e.data.platform.arch}`),console.log(` Output Modes: ${e.data.outputModes.join(`, `)}`),console.log(` Agents: ${e.data.agents.join(`, `)}`),console.log(l.bold(`
4
4
  Installers:`)),console.log(` bun: ${g(e.data.installers.bun)}`),console.log(` npm: ${g(e.data.installers.npm)}`),console.log(` brew: ${g(e.data.installers.brew)}`),console.log(` cargo: ${g(e.data.installers.cargo)}`),console.log(` deno: ${g(e.data.installers.deno)}`),console.log(` mise: ${g(e.data.installers.mise)}`),console.log(` pip: ${g(e.data.installers.pip)}`),console.log(` uv: ${g(e.data.installers.uv)}`),console.log(` winget: ${g(e.data.installers.winget)}`),console.log(l.bold(`
@@ -0,0 +1 @@
1
+ import{t as e}from"./capabilities-grYk5oHD.mjs";export{e as capabilitiesCommand};