quantex-cli 1.8.12 → 1.9.1

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 (70) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/{agent-installation-pNsgwXb9.mjs → agent-installation-BJJU5uXF.mjs} +1 -1
  4. package/dist/agents-C7P-xA0v.mjs +1 -0
  5. package/dist/agents-CB6EgrCq.mjs +1 -0
  6. package/dist/capabilities-Crhw_Blt.mjs +1 -0
  7. package/dist/{capabilities-BFPcyntd.mjs → capabilities-DRpX0oYJ.mjs} +1 -1
  8. package/dist/child-process-DzIdysOm.mjs +1 -0
  9. package/dist/{cli-operation-context-BFEu635L.mjs → cli-operation-context-BS5a069W.mjs} +1 -1
  10. package/dist/cli-operation-context-yd4c0OQH.mjs +1 -0
  11. package/dist/cli.mjs +1 -1
  12. package/dist/{commands-D1q4K0yE.mjs → commands-CEzaL8Yd.mjs} +1 -1
  13. package/dist/commands-xtFP6b7b.mjs +1 -0
  14. package/dist/config-BLkuHAGk.mjs +3 -0
  15. package/dist/{core-installation-cli-C0ae3SUn.mjs → core-installation-cli-CkmOzkYO.mjs} +1 -1
  16. package/dist/{core-read-observations-CHHS7xq2.mjs → core-read-observations-py_L86ID.mjs} +1 -1
  17. package/dist/{detect-DL6buUVi.mjs → detect-BUVMt8jZ.mjs} +1 -1
  18. package/dist/{doctor-aF8IIiYS.mjs → doctor-DWkPOpd3.mjs} +1 -1
  19. package/dist/{ensure-B4ynayjb.mjs → ensure-B1bA6QVE.mjs} +1 -1
  20. package/dist/ensure-BADZwjFz.mjs +1 -0
  21. package/dist/file-store-XNyirRRY.mjs +2 -0
  22. package/dist/index.d.mts +1 -1
  23. package/dist/index.mjs +1 -1
  24. package/dist/{info-EVHBg1nm.mjs → info-C18_hff4.mjs} +1 -1
  25. package/dist/{inspect-DJfaLc06.mjs → inspect-C9j-GclY.mjs} +1 -1
  26. package/dist/inspect-c7uT6XE1.mjs +1 -0
  27. package/dist/{install-DMpMUIwN.mjs → install-D1BMnGhP.mjs} +1 -1
  28. package/dist/{installation-compatibility-B2FzfkdC.mjs → installation-compatibility-Mc1ZlVS1.mjs} +1 -1
  29. package/dist/{installation-production-DnHYEiSa.mjs → installation-production-BuCazkkr.mjs} +1 -1
  30. package/dist/installation-provider-registry-Ca45gNu5.mjs +1 -0
  31. package/dist/{lifecycle-observations-Be3ngmis.mjs → lifecycle-observations-CfxGqoG1.mjs} +1 -1
  32. package/dist/{lifecycle-policy-B2DJsLmz.mjs → lifecycle-policy-CqPn6tyi.mjs} +1 -1
  33. package/dist/{list-CwjEeX3F.mjs → list-CWw2-6sr.mjs} +1 -1
  34. package/dist/mutation-recipe-catalog-DP_XMSYe.mjs +1 -0
  35. package/dist/npm-DUDR-Khz.mjs +5 -0
  36. package/dist/output-V8N4qh1L.mjs +5 -0
  37. package/dist/production-observation-DCU7IJZl.mjs +1 -0
  38. package/dist/{provider-evidence-Bn54ONe7.mjs → provider-evidence-B67K3coo.mjs} +1 -1
  39. package/dist/{provider-observation-registry-BaeYlsr4.mjs → provider-observation-registry-DRRQKxkl.mjs} +3 -3
  40. package/dist/{provider-observations-wolD6I6_.mjs → provider-observations-Csayzb91.mjs} +1 -1
  41. package/dist/{providers-AFXil8bm.mjs → providers-Dm1YYCk4.mjs} +1 -1
  42. package/dist/{resolve-CPLHsCmS.mjs → resolve-D0GUoUxE.mjs} +1 -1
  43. package/dist/resolve-DcQY7beJ.mjs +1 -0
  44. package/dist/{schema-di33Hdvd.mjs → schema-CbhvnjCG.mjs} +1 -1
  45. package/dist/schema-D-0a1QKv.mjs +1 -0
  46. package/dist/{uninstall-CiqF5NbQ.mjs → uninstall-BknTn1R8.mjs} +1 -1
  47. package/dist/unmanaged-install-compatibility-wJLJfXlr.mjs +1 -0
  48. package/dist/{update-Dbrry2-1.mjs → update-1wac4HvD.mjs} +1 -1
  49. package/dist/{upgrade-CuLiLc-z.mjs → upgrade-DQFtQVSO.mjs} +1 -1
  50. package/dist/{version-cache-CvZ20yUD.mjs → version-cache-jjIoeyWQ.mjs} +1 -1
  51. package/dist/{winget-Q_NhfOhY.mjs → winget-C8yBIi3u.mjs} +2 -2
  52. package/package.json +4 -4
  53. package/dist/agents-BX-dLvjD.mjs +0 -1
  54. package/dist/agents-DqoBOUq7.mjs +0 -1
  55. package/dist/capabilities-C-oWByEQ.mjs +0 -1
  56. package/dist/child-process-CBKnpMWt.mjs +0 -1
  57. package/dist/cli-operation-context-D-7o4gXx.mjs +0 -1
  58. package/dist/commands-h2c3xqyY.mjs +0 -1
  59. package/dist/config-BYgYHkKM.mjs +0 -3
  60. package/dist/ensure-BgQ_jxNF.mjs +0 -1
  61. package/dist/file-store-BdnwPxOg.mjs +0 -2
  62. package/dist/inspect-Cwz0pYtQ.mjs +0 -1
  63. package/dist/installation-provider-registry-AmLxw9hr.mjs +0 -1
  64. package/dist/mutation-recipe-catalog-CAvXPw6l.mjs +0 -1
  65. package/dist/npm-CJQfKklg.mjs +0 -4
  66. package/dist/output-DXP9RqRk.mjs +0 -5
  67. package/dist/production-observation-3CRKMj-q.mjs +0 -1
  68. package/dist/resolve-DkwAXDXK.mjs +0 -1
  69. package/dist/schema-DNGyzkMA.mjs +0 -1
  70. package/dist/unmanaged-install-compatibility-a4mdM5HM.mjs +0 -1
@@ -1,2 +1,2 @@
1
- import{i as e,n as t,o as n,r}from"./child-process-CBKnpMWt.mjs";import{_ as i,g as a}from"./npm-CJQfKklg.mjs";import{join as o}from"node:path";import s from"node:process";import{access as c,constants as l}from"node:fs/promises";import{homedir as u}from"node:os";function d(e){return e===`cask`?[`--cask`]:[]}function ee(e){return e===`cask`?[`--cask`]:[`--formula`]}function f(e,t,n,r){return a([`brew`,e,...d(n),t],r,`brew ${e} failed`)}function te(e,t,n){return f(`install`,e,t,n)}function ne(e,t,n){return f(`upgrade`,e,t,n)}function re(e,t){return i(e.map(e=>[`brew`,`upgrade`,...d(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function ie(e,t,n){return f(`uninstall`,e,t,n)}async function p(i,a,o){try{let t=n([`brew`,`list`,...ee(a),`--versions`,i],{detached:o!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:c,stderr:l,stdout:u}=o?await e(t,o):await r(t),d=g(u);return c===0?d?{presence:`present`,version:d}:{presence:`present`}:c===1&&_(l)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function m(e,t,n){return(await p(e,t,n)).presence}async function h(e,t,n){return(await p(e,t,n)).version}function g(e){let t=e.trim().split(`
2
- `).find(e=>e.trim());if(!t)return;let n=t.trim().split(/\s+/);if(n.length<2)return;let r=n.at(-1);return r&&/^\d/.test(r)?r:void 0}function _(e){let t=e.toLowerCase();return t.includes(`no such keg`)||t.includes(`is not installed`)}function v(e,t,n,r){return a([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function y(e,t,n){return v(`install`,e,t??[],n)}function ae(e,t,n){return y(e,[`--force`,...t??[]],n)}function oe(e,t){return i(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function se(e,t){return v(`uninstall`,e,[],t)}async function b(i,a){try{let t=n([`cargo`,`install`,`--list`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stdout:c}=a?await e(t,a):await r(t);if(o!==0)return{presence:`unknown`};let l=ue(c,i);return l?{presence:`present`,version:l}:de(c,i)?{presence:`present`}:{presence:`absent`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function ce(e,t){return(await b(e,t)).presence}async function le(e,t){return(await b(e,t)).version}function ue(e,t){let n=x(e,t);if(!n)return;let r=n[1];return r&&/^\d/.test(r)?r:void 0}function de(e,t){return x(e,t)!==void 0}function x(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),r=RegExp(`^${n}\\s+v([^:\\s]+):\\s*$`,`m`);return e.match(r)??void 0}function S(e,t,n,r){let i=[`deno`,`install`,`--global`];return n.force&&i.push(`--force`),i.push(...t,e),a(i,r,`deno ${n.force?`update`:`install`} failed`)}function fe(e,t,n){return S(e,t??[],{},n)}function C(e,t,n){return S(e,t??[],{force:!0},n)}function w(e,t){return i(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function T(e,t){return a([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}async function E(e,n){if(!e.trim())return{presence:`unknown`};try{return await c(o(A(),`bin`,e),l.F_OK),{presence:`present`}}catch(e){if(t(e))throw e;return j(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)?{presence:`absent`}:{presence:`unknown`}}}async function D(e,t){return(await E(e,t)).presence}async function O(e,t){return(await E(e,t)).version}function k(e,t){if(t?.trim())return t.trim();let n=e.trim().split(`/`).pop()?.replace(/@.*$/,``);return n&&n.length>0?n:e.trim()}function A(){let e=s.env.DENO_INSTALL_ROOT?.trim();return e&&e.length>0?e:o(u(),`.deno`)}function j(e){return typeof e==`object`&&!!e&&`code`in e}function M(e,t,n){return a([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function N(e,t){return M(e,!1,t)}function P(e,t){return M(e,!0,t)}function F(e,t){return i(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function I(e,t){return a([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function L(i,a){try{let t=n([`mise`,`ls`,`--installed`,`--json`,i],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await e(t,a):await r(t);if(!o.trim())return{presence:`unknown`};try{let e=JSON.parse(o);if(!H(e))return{presence:`unknown`};let t=V(e,i),n=t?e[t]:void 0;if(!Array.isArray(n)||n.length===0)return{presence:`absent`};let r=B(o,i);return r?{presence:`present`,version:r}:{presence:`present`}}catch{return{presence:`unknown`}}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function R(e,t){return(await L(e,t)).presence}async function z(e,t){return(await L(e,t)).version}function B(e,t){try{let n=JSON.parse(e);if(!H(n))return;let r=V(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(H(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function V(e,t){if(Array.isArray(e[t]))return t;let n=t.split(`:`).pop()?.split(`/`).pop();if(n)return Object.keys(e).find(t=>t===n&&Array.isArray(e[t]))}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let U=null;async function W(r){if(U)return{kind:`success`,value:U};for(let i of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await e(n([...i,`--version`],{detached:s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),r);if(t===0)return U=i,{kind:`success`,value:i}}catch(e){if(t(e))return e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??r.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}}return U=[`pip`],{kind:`success`,value:U}}async function G(e,t){let n=await W(t);return n.kind===`success`?a([...n.value,...e],t,`pip command failed`):n}function pe(e,t){return G([`install`,e],t)}function me(e,t){return G([`install`,`--upgrade`,e],t)}async function he(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await W(t);return n.kind===`success`?i(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function ge(e,t){return G([`uninstall`,`-y`,e],t)}async function K(i,a){let o=a??{signal:new AbortController().signal,timeoutMs:5e3};try{let t=await W(o);if(t.kind!==`success`)return{presence:`unknown`};let c=n([...t.value,`show`,i],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:l,stderr:u,stdout:d}=a?await e(c,a):await r(c);if(l===0){let e=ye(d);return e?{presence:`present`,version:e}:{presence:`present`}}return l===1&&be(u)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function _e(e,t){return(await K(e,t)).presence}async function ve(e,t){return(await K(e,t)).version}function ye(e){for(let t of e.split(/\r?\n/)){let e=/^Version:\s*(.+)\s*$/i.exec(t.trim());if(e?.[1])return e[1].trim()}}function be(e){let t=e.toLowerCase();return t.includes(`package(s) not found`)||t.includes(`not found`)}function q(e,t,n,r){return a([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function xe(e,t,n){return q(`install`,e,t??[],n)}function Se(e,t,n){return q(`upgrade`,e,t??[],n)}function Ce(e,t){return i(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function we(e,t){return a([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function J(i,a){try{let t=n([`uv`,`tool`,`list`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await e(t,a):await r(t);if(!o.trim())return{presence:`unknown`};let c=Oe(o,i);return c?{presence:`present`,version:c}:De(o)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function Te(e,t){return(await J(e,t)).presence}async function Ee(e,t){return(await J(e,t)).version}function De(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function Oe(e,t){let n=Y(t);for(let t of e.split(/\r?\n/)){let e=t.trim(),r=/^(\S+)\s+v([^\s]+)/.exec(e);if(!r)continue;let[,i,a]=r;if(Y(i)===n)return a}}function Y(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}function X(e,t,n){return a([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function ke(e,t){return X(`install`,e,t)}function Z(e,t){return X(`upgrade`,e,t)}function Ae(e,t){return i(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function je(e,t){return X(`uninstall`,e,t)}async function Q(i,a){try{let t=n([`winget`,`list`,`--id`,i,`-e`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stderr:c,stdout:l}=a?await e(t,a):await r(t);if(o===0){let e=Pe(l,i);return e?{presence:`present`,version:e}:l.toLowerCase().includes(i.toLowerCase())?{presence:`present`}:{presence:`unknown`}}return $(c)||$(l)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function Me(e,t){return(await Q(e,t)).presence}async function Ne(e,t){return(await Q(e,t)).version}function Pe(e,t){let n=t.toLowerCase();for(let t of e.split(/\r?\n/)){let e=t.trim();if(!e||e.toLowerCase().startsWith(`name`)||e.startsWith(`-`))continue;let r=e.split(/\s{2,}|\t+/).map(e=>e.trim()).filter(Boolean);if(r.length<2)continue;let i=r.findIndex(e=>e.toLowerCase()===n);if(i<0)continue;let a=r[i+1];return a&&a.length>0?a:void 0}}function $(e){let t=e.toLowerCase();return t.includes(`no installed package found`)||t.includes(`no package found matching input criteria`)||t.includes(`no installed package matched`)}export{w as A,m as B,F as C,fe as D,k as E,se as F,re as H,oe as I,ae as L,le as M,y as N,D as O,ce as P,h as R,I as S,O as T,ne as U,ie as V,he as _,Ae as a,N as b,xe as c,Ce as d,Se as f,ge as g,_e as h,je as i,C as j,T as k,Te as l,pe as m,ke as n,Z as o,ve as p,Me as r,Ee as s,Ne as t,we as u,me as v,P as w,R as x,z as y,te as z};
1
+ import{i as e,n as t,o as n,r}from"./child-process-DzIdysOm.mjs";import{_ as i,g as a}from"./npm-DUDR-Khz.mjs";import{join as o}from"node:path";import s from"node:process";import{access as c,constants as l}from"node:fs/promises";import{homedir as u}from"node:os";function d(e){return e===`cask`?[`--cask`]:[]}function ee(e){return e===`cask`?[`--cask`]:[`--formula`]}function f(e,t,n,r){return a([`brew`,e,...d(n),t],r,`brew ${e} failed`)}function te(e,t,n){return f(`install`,e,t,n)}function ne(e,t,n){return f(`upgrade`,e,t,n)}function re(e,t){return i(e.map(e=>[`brew`,`upgrade`,...d(e.packageTargetKind),e.packageName]),t,`brew update failed`)}function ie(e,t,n){return f(`uninstall`,e,t,n)}async function p(i,a,o){try{let t=n([`brew`,`list`,...ee(a),`--versions`,i],{detached:o!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:c,stderr:l,stdout:u}=o?await e(t,o):await r(t),d=g(u);return c===0?d?{presence:`present`,version:d}:{presence:`present`}:c===1&&_(l)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function m(e,t,n){return(await p(e,t,n)).presence}async function h(e,t,n){return(await p(e,t,n)).version}function g(e){let t=e.trim().split(`
2
+ `).find(e=>e.trim());if(!t)return;let n=t.trim().split(/\s+/);if(n.length<2)return;let r=n.at(-1);return r&&/^\d/.test(r)?r:void 0}function _(e){let t=e.toLowerCase();return t.includes(`no such keg`)||t.includes(`is not installed`)}function v(e,t,n,r){return a([`cargo`,e,t,...n],r,`cargo ${e} failed`)}function y(e,t,n){return v(`install`,e,t??[],n)}function ae(e,t,n){return y(e,[`--force`,...t??[]],n)}function oe(e,t){return i(e.map(e=>[`cargo`,`install`,e.packageName,`--force`,...e.packageInstallArgs??[]]),t,`cargo update failed`)}function se(e,t){return v(`uninstall`,e,[],t)}async function b(i,a){try{let t=n([`cargo`,`install`,`--list`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stdout:c}=a?await e(t,a):await r(t);if(o!==0)return{presence:`unknown`};let l=ue(c,i);return l?{presence:`present`,version:l}:de(c,i)?{presence:`present`}:{presence:`absent`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function ce(e,t){return(await b(e,t)).presence}async function le(e,t){return(await b(e,t)).version}function ue(e,t){let n=x(e,t);if(!n)return;let r=n[1];return r&&/^\d/.test(r)?r:void 0}function de(e,t){return x(e,t)!==void 0}function x(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),r=RegExp(`^${n}\\s+v([^:\\s]+):\\s*$`,`m`);return e.match(r)??void 0}function S(e,t,n,r){let i=[`deno`,`install`,`--global`];return n.force&&i.push(`--force`),i.push(...t,e),a(i,r,`deno ${n.force?`update`:`install`} failed`)}function fe(e,t,n){return S(e,t??[],{},n)}function C(e,t,n){return S(e,t??[],{force:!0},n)}function w(e,t){return i(e.map(e=>[`deno`,`install`,`--global`,`--force`,...e.packageInstallArgs??[],e.packageName]),t,`deno update failed`)}function T(e,t){return a([`deno`,`uninstall`,`--global`,e],t,`deno uninstall failed`)}async function E(e,n){if(!e.trim())return{presence:`unknown`};try{return await c(o(A(),`bin`,e),l.F_OK),{presence:`present`}}catch(e){if(t(e))throw e;return j(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)?{presence:`absent`}:{presence:`unknown`}}}async function D(e,t){return(await E(e,t)).presence}async function O(e,t){return(await E(e,t)).version}function k(e,t){if(t?.trim())return t.trim();let n=e.trim().split(`/`).pop()?.replace(/@.*$/,``);return n&&n.length>0?n:e.trim()}function A(){let e=s.env.DENO_INSTALL_ROOT?.trim();return e&&e.length>0?e:o(u(),`.deno`)}function j(e){return typeof e==`object`&&!!e&&`code`in e}function M(e,t,n){return a([`mise`,`use`,`--global`,...t?[`--force`]:[],e],n,`mise ${t?`update`:`install`} failed`)}function N(e,t){return M(e,!1,t)}function P(e,t){return M(e,!0,t)}function F(e,t){return i(e.map(e=>[`mise`,`use`,`--global`,`--force`,e.packageName]),t,`mise update failed`)}function I(e,t){return a([`mise`,`unuse`,`--global`,e],t,`mise uninstall failed`)}async function L(i,a){try{let t=n([`mise`,`ls`,`--installed`,`--json`,i],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await e(t,a):await r(t);if(!o.trim())return{presence:`unknown`};try{let e=JSON.parse(o);if(!H(e))return{presence:`unknown`};let t=V(e,i),n=t?e[t]:void 0;if(!Array.isArray(n)||n.length===0)return{presence:`absent`};let r=B(o,i);return r?{presence:`present`,version:r}:{presence:`present`}}catch{return{presence:`unknown`}}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function R(e,t){return(await L(e,t)).presence}async function z(e,t){return(await L(e,t)).version}function B(e,t){try{let n=JSON.parse(e);if(!H(n))return;let r=V(n,t),i=r?n[r]:void 0;if(!Array.isArray(i))return;for(let e of i)if(H(e)&&typeof e.version==`string`&&e.version.length>0)return e.version;return}catch{return}}function V(e,t){if(Array.isArray(e[t]))return t;let n=t.split(`:`).pop()?.split(`/`).pop();if(n)return Object.keys(e).find(t=>t===n&&Array.isArray(e[t]))}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}let U=null;async function W(r){if(U)return{kind:`success`,value:U};for(let i of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]])try{let{exitCode:t}=await e(n([...i,`--version`],{detached:s.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),r);if(t===0)return U=i,{kind:`success`,value:i}}catch(e){if(t(e))return e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??r.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}}return U=[`pip`],{kind:`success`,value:U}}async function G(e,t){let n=await W(t);return n.kind===`success`?a([...n.value,...e],t,`pip command failed`):n}function pe(e,t){return G([`install`,e],t)}function me(e,t){return G([`install`,`--upgrade`,e],t)}async function he(e,t){if(e.length===0)return{kind:`success`,value:void 0};let n=await W(t);return n.kind===`success`?i(e.map(e=>[...n.value,`install`,`--upgrade`,e.packageName]),t,`pip update failed`):n}function ge(e,t){return G([`uninstall`,`-y`,e],t)}async function K(i,a){let o=a??{signal:new AbortController().signal,timeoutMs:5e3};try{let t=await W(o);if(t.kind!==`success`)return{presence:`unknown`};let c=n([...t.value,`show`,i],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:l,stderr:u,stdout:d}=a?await e(c,a):await r(c);if(l===0){let e=ye(d);return e?{presence:`present`,version:e}:{presence:`present`}}return l===1&&be(u)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function _e(e,t){return(await K(e,t)).presence}async function ve(e,t){return(await K(e,t)).version}function ye(e){for(let t of e.split(/\r?\n/)){let e=/^Version:\s*(.+)\s*$/i.exec(t.trim());if(e?.[1])return e[1].trim()}}function be(e){let t=e.toLowerCase();return t.includes(`package(s) not found`)||t.includes(`not found`)}function q(e,t,n,r){return a([`uv`,`tool`,e,t,...n],r,`uv ${e} failed`)}function xe(e,t,n){return q(`install`,e,t??[],n)}function Se(e,t,n){return q(`upgrade`,e,t??[],n)}function Ce(e,t){return i(e.map(e=>[`uv`,`tool`,`upgrade`,e.packageName,...e.packageInstallArgs??[]]),t,`uv update failed`)}function we(e,t){return a([`uv`,`tool`,`uninstall`,e],t,`uv uninstall failed`)}async function J(i,a){try{let t=n([`uv`,`tool`,`list`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),o=a?await e(t,a):await r(t),{stdout:c}=o;if(Oe(o))return{presence:`absent`};if(!c.trim())return{presence:`unknown`};let l=ke(c,i);return l?{presence:`present`,version:l}:De(c)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function Te(e,t){return(await J(e,t)).presence}async function Ee(e,t){return(await J(e,t)).version}function De(e){return e.split(/\r?\n/).some(e=>/^\S+\s+v[^\s]+/.test(e.trim()))}function Oe(e){if(e.exitCode!==0)return!1;let t=`${e.stdout}\n${e.stderr}`.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);return t.length===1&&/^no tools installed\.?$/i.test(t[0])}function ke(e,t){let n=Y(t);for(let t of e.split(/\r?\n/)){let e=t.trim(),r=/^(\S+)\s+v([^\s]+)/.exec(e);if(!r)continue;let[,i,a]=r;if(Y(i)===n)return a}}function Y(e){return e.toLowerCase().replaceAll(/[-_.]+/g,`-`)}function X(e,t,n){return a([`winget`,e,`--id`,t,`-e`],n,`winget ${e} failed`)}function Z(e,t){return X(`install`,e,t)}function Ae(e,t){return X(`upgrade`,e,t)}function je(e,t){return i(e.map(e=>[`winget`,`upgrade`,`--id`,e.packageName,`-e`]),t,`winget update failed`)}function Me(e,t){return X(`uninstall`,e,t)}async function Q(i,a){try{let t=n([`winget`,`list`,`--id`,i,`-e`],{detached:a!==void 0&&s.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`]}),{exitCode:o,stderr:c,stdout:l}=a?await e(t,a):await r(t);if(o===0){let e=Fe(l,i);return e?{presence:`present`,version:e}:l.toLowerCase().includes(i.toLowerCase())?{presence:`present`}:{presence:`unknown`}}return $(c)||$(l)?{presence:`absent`}:{presence:`unknown`}}catch(e){if(t(e))throw e;return{presence:`unknown`}}}async function Ne(e,t){return(await Q(e,t)).presence}async function Pe(e,t){return(await Q(e,t)).version}function Fe(e,t){let n=t.toLowerCase();for(let t of e.split(/\r?\n/)){let e=t.trim();if(!e||e.toLowerCase().startsWith(`name`)||e.startsWith(`-`))continue;let r=e.split(/\s{2,}|\t+/).map(e=>e.trim()).filter(Boolean);if(r.length<2)continue;let i=r.findIndex(e=>e.toLowerCase()===n);if(i<0)continue;let a=r[i+1];return a&&a.length>0?a:void 0}}function $(e){let t=e.toLowerCase();return t.includes(`no installed package found`)||t.includes(`no package found matching input criteria`)||t.includes(`no installed package matched`)}export{w as A,m as B,F as C,fe as D,k as E,se as F,re as H,oe as I,ae as L,le as M,y as N,D as O,ce as P,h as R,I as S,O as T,ne as U,ie as V,he as _,je as a,N as b,xe as c,Ce as d,Se as f,ge as g,_e as h,Me as i,C as j,T as k,Te as l,pe as m,Z as n,Ae as o,ve as p,Ne as r,Ee as s,Pe as t,we as u,me as v,P as w,R as x,z as y,te as z};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quantex-cli",
3
- "version": "1.8.12",
3
+ "version": "1.9.1",
4
4
  "description": "Agent-friendly lifecycle CLI for AI coding assistant CLIs: install, inspect, update, uninstall, run, and automate Codex, Claude Code, Gemini, Cursor, OpenCode, and more",
5
5
  "keywords": [
6
6
  "agent-cli",
@@ -110,11 +110,11 @@
110
110
  },
111
111
  "devDependencies": {
112
112
  "@fission-ai/openspec": "1.3.1",
113
- "@types/bun": "^1.3.11",
113
+ "@types/bun": "^1.3.14",
114
114
  "@types/cross-spawn": "^6.0.6",
115
115
  "@types/node": "^25.0.1",
116
116
  "@types/prompts": "^2.4.9",
117
- "bun-types": "1.3.11",
117
+ "bun-types": "1.3.14",
118
118
  "lint-staged": "^16.2.7",
119
119
  "oxfmt": "0.47.0",
120
120
  "oxlint": "^1.62.0",
@@ -140,5 +140,5 @@
140
140
  "engines": {
141
141
  "node": ">=20"
142
142
  },
143
- "packageManager": "bun@1.3.11"
143
+ "packageManager": "bun@1.3.14"
144
144
  }
@@ -1 +0,0 @@
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-CJQfKklg.mjs";import{B as o,E as s,M as c,O as ee,P as te,R as ne,T as re,h as ie,l as ae,p as oe,r as se,s as l,t as u,x as ce,y as le}from"./winget-Q_NhfOhY.mjs";import{d,h as ue,o as de}from"./file-store-BdnwPxOg.mjs";import{t as f}from"./detect-DL6buUVi.mjs";import{B as fe,G as pe,H as me,K as he,L as ge,R as _e,U as ve,V as ye,W as be,n as xe,q as Se,r as Ce,z as we}from"./agents-DqoBOUq7.mjs";import{i as Te,n as p}from"./cli-context-DI43ouBg.mjs";import{$ as Ee,O as m,P as h,Q as De,R as g,tt as Oe}from"./output-DXP9RqRk.mjs";import{c as ke,d as _,h as Ae,m as je,p as v,s as Me,u as y,v as b}from"./providers-AFXil8bm.mjs";import{n as x,t as S}from"./cli-operation-context-BFEu635L.mjs";import Ne from"node:process";import{AsyncLocalStorage as Pe}from"node:async_hooks";function C(n,r={}){let i=t(n,x(p().outputMode),r),a=Te(()=>e(i.proc));return{...i,cleanup:()=>{a(),i.cleanup()}}}async function w(e){let t=p();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function T(e){let t=f(),n=typeof e==`function`?e(t):e;try{return Ne.platform===`win32`?await w(C([`powershell.exe`,`-Command`,n]))===0:await w(C([`sh`,`-c`,n]))===0}catch{return!1}}function E(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>D(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?D(i,i=>t.install({context:i,target:O(e,n,void 0,r)})):N(`install`),uninstall:async(e,n,r,i)=>t.uninstall?D(i,i=>t.uninstall({context:i,target:O(e,n,r?.binaryName)})):N(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return N(`update`);let a=k(r);return D(i,i=>t.update({context:i,...a?{options:a}:{},target:O(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return N(`update-many`);let i=k(n);return D(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>O(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function D(e,t){if(e)return t(e);let n=S();try{return await t(n.context)}finally{n.dispose()}}function O(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function k(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function A(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=>D(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?D(a,a=>t.install({context:a,target:i(e,n,r)})):N(`install`),uninstall:async(e,n,r,a)=>t.uninstall?D(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):N(`uninstall`),update:async(e,n,r,a)=>t.update?D(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):N(`update`),updateMany:async(e,n,r)=>t.updateMany?D(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):N(`update-many`)}}const j={brew:A(`brew`,Se,e=>e===`cask`?`cask`:`formula`,{getInstalledVersion:(e,t)=>ne(e,t),probePackagePresence:(e,t)=>o(e,t)}),bun:E(`bun`,he,{getInstalledVersion:e=>n(e),probePackagePresence:e=>r(e)}),cargo:A(`cargo`,pe,()=>`package`,{getInstalledVersion:e=>c(e),probePackagePresence:e=>te(e)}),deno:A(`deno`,be,()=>`tool`,{getInstalledVersion:e=>re(s(e)),probePackagePresence:e=>ee(s(e))}),mise:A(`mise`,ye,()=>`tool`,{getInstalledVersion:e=>le(e),probePackagePresence:e=>ce(e)}),npm:E(`npm`,fe,{getInstalledVersion:e=>a(e),probePackagePresence:e=>i(e)}),pip:A(`pip`,we,()=>`package`,{getInstalledVersion:e=>oe(e),probePackagePresence:e=>ie(e)}),uv:A(`uv`,_e,()=>`tool`,{getInstalledVersion:e=>l(e),probePackagePresence:e=>ae(e)}),winget:A(`winget`,ge,()=>`id`,{getInstalledVersion:e=>u(e),probePackagePresence:e=>se(e)})},Fe=Object.fromEntries(Object.entries(j).map(([e,t])=>[e,Le(t)]));function Ie(e){return Fe[e]}function M(e){return j[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 N(e){return{kind:`unsupported`,operation:e}}const Re={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},P=new Pe;function F(e){return P.getStore()?e():de(Re,()=>P.run(!0,e))}async function ze(){return(await d()).defaultPackageManager}async function I(){return{npmBunUpdateStrategy:(await d()).npmBunUpdateStrategy}}async function L(e){let t=f(),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 R(e,t,n,r,i,a,o,s){if(!s){let s=S();try{return await R(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=M(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 z(e,t,n,r){if(b(t.type)){let i=_(e,t);return i?R(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`&&!je(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`?ve:me,a=S();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 B(e,t){if(e.packageName)return e.packageName;if(!(!t||!b(e.installType)))return _(t,{type:e.installType})}async function V(e,t,n){if(b(e.installType)){let r=B(e,n?.agent);return r?R(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 T(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function H(e,t){if(!b(t.type))return;let n=_(e,t);n&&await R(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 T(e.join(` `)))return!0;return!1}function U(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(p().cancelled)return null;let n=U(e,t);return p().cancelled?null:(await g(n),p().cancelled?(await h(e.name),null):n)}async function W(e,t){return F(async()=>{let n=t?[...t]:await L(e),r;for(let t of n){if(p().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await z(e,t,`install`);if(n.kind===`success`)return p().cancelled?(await H(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:U(e,t)}};let i=X(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,p().cancelled)return await H(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function He(e){return F(async()=>{let t=await W(e);if(t.kind!==`success`||!t.value.installedState)return Y(t);try{return p().cancelled?(await q(e,t.value.installedState),{success:!1}):(await g(t.value.installedState),p().cancelled?(await h(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 F(async()=>{let{npmBunUpdateStrategy:n}=await I(),r=await L(e),i=t&&b(t.installType)?B(t,e):void 0,a=t?await V(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return p().cancelled||(await g(t),p().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 z(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||!b(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 F(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=M(e);return await r.isAvailable()?(await r.updateMany(n,await I())).kind===`success`:!1})}async function Ke(e,t,n){let r=M(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function qe(e,t){if(!b(e.installType))return!1;let n=M(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=B(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 F(async()=>{let t=await m(e.name);return t?G(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function G(e,t){if(!v(t.installType))return await h(e.name),{kind:`success`,value:{installedState:t}};let n=await V(t,`uninstall`,{agent:e});return n.kind===`success`||await qe(t,e)?(await h(e.name),{kind:`success`,value:{installedState:t}}):X(n)}async function K(e,t){let n=await V(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:X(n)}async function q(e,t){if(!v(t.installType)||!b(t.installType))return;let n=B(t,e);n&&await R(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,J())}function J(){let e=p(),t=e.timeoutMs;return{outputPolicy:x(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([L(e),m(e.name),ue(e.binaryName)]),i=r!==void 0,[a,o]=await Promise.all([i?Ye(e,n,r):Promise.resolve(void 0),Xe(e,n,t)]);return{agent:e,methods:t,installedState:n,inPath:i,installedVersion:a,latestVersion:o,binaryPath:r,resolvedBinaryPath:await Ee(r),sourceLabel:Me(n),updateLabel:ke(e,n),lifecycle:n?Ae(n.installType):`unmanaged`}}async function Q(e){return Promise.all(e.map(Z))}async function Ye(e,t,n){if(t&&b(t.installType)&&t.packageName){let e=await Ke(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return Oe(e.binaryName,e.versionProbe,void 0,n)}async function Xe(e,t,n){let r=y(e,t,n);if(r)return De(r)}function $(e){return xe(e)}async function Ze(e){let t=$(e);if(t)return{agent:t,inspection:await Z(t)}}async function Qe(){return Q(Ce())}export{Ie as _,Q as a,He as c,q as d,Je as f,F as g,Ge as h,Z as i,W as l,We as m,$ as n,U as o,G as p,Ze as r,L as s,Qe as t,K as u,C as v,w as y};
@@ -1 +0,0 @@
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-CJQfKklg.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-Q_NhfOhY.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-DL6buUVi.mjs";import{r as it}from"./registry-vhJzh8dW.mjs";import{Q as at}from"./output-DXP9RqRk.mjs";import{t as ot}from"./types-D0YMPN5w.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 +0,0 @@
1
- import{t as e}from"./capabilities-BFPcyntd.mjs";export{e as capabilitiesCommand};
@@ -1 +0,0 @@
1
- import e from"cross-spawn";import{spawn as t}from"node:child_process";import{accessSync as n,constants as r}from"node:fs";import{delimiter as i,join as a}from"node:path";import o from"node:process";import{text as s}from"node:stream/consumers";function c(e){return e.outputPolicy??`discard`}var l=class extends Error{kind;reason;timeoutMs;constructor(e){super(e.kind===`timed-out`?`Process timed out after ${e.timeoutMs}ms.`:`Process was cancelled.`),this.name=`ProcessInterruptionError`,this.kind=e.kind,e.kind===`timed-out`?this.timeoutMs=e.timeoutMs:this.reason=e.reason}};function u(e){return e instanceof l}function d(e,t,n={}){if(t===`inherit`){let t=m(e,{...n,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:()=>void 0,outputDrained:Promise.resolve(),proc:t}}let r=m(e,{...n,stdio:t===`stderr`?[`ignore`,`pipe`,`pipe`]:[`ignore`,`ignore`,`ignore`]});return{cleanup:()=>void 0,outputDrained:t===`stderr`?Promise.all([y(r.stdout),y(r.stderr)]).then(()=>void 0):Promise.resolve(),proc:r}}function f(e,t,n={}){return p(d(e,c(t),n),t)}async function p(e,t){let n,r=()=>n??=T(e.proc,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>E(e.proc)});if(t.signal.aborted)throw await r(),e.cleanup(),i?.(),new l({kind:`cancelled`,reason:v(t.signal)});let a,o,s,c=!1,u=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>n(e===`timed-out`?new l({kind:e,timeoutMs:t.timeoutMs}):new l({kind:e,reason:v(t.signal)}))))},o=()=>s(`cancelled`),t.signal.addEventListener(`abort`,o,{once:!0}),t.timeoutMs!==void 0&&(a=setTimeout(()=>s(`timed-out`),t.timeoutMs))});try{let t=Promise.all([e.proc.exited,e.outputDrained]).then(([e])=>c?u:e);return await Promise.race([t,u])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.(),e.cleanup()}}function m(n,r={}){let[i,...a]=n,s=i?h(i,r):void 0;if(!s)throw Error(`spawnCommand requires a non-empty command array.`);let c=S(s),l=r.detached||c?void 0:C();if(l)return w([s,...a],{...r,env:r.env??o.env},l);let u=(c?e:t)(s,a,{...r,env:r.env??o.env});return{get exitCode(){return u.exitCode},pid:u.pid,stderr:u.stderr,stdout:u.stdout,exited:b(u),kill:u.kill.bind(u),unref:()=>u.unref()}}function h(e,t){if(!t.detached||o.platform===`win32`||e.includes(`/`))return e;for(let t of(o.env.PATH??``).split(i)){let i=a(t,e);try{return n(i,r.X_OK),i}catch{}}return e}async function g(e){let[t,n,r]=await Promise.all([x(e.stdout),x(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function _(e,t){let n,r=()=>n??=T(e,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>E(e)});if(t.signal.aborted)throw await r(),i?.(),new l({kind:`cancelled`,reason:v(t.signal)});let a,o,s,c=!1,u=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>setTimeout(()=>n(e===`timed-out`?new l({kind:e,timeoutMs:t.timeoutMs}):new l({kind:e,reason:v(t.signal)})),10)))},o=()=>s(`cancelled`),t.signal.addEventListener(`abort`,o,{once:!0}),t.timeoutMs!==void 0&&(a=setTimeout(()=>s(`timed-out`),t.timeoutMs))});try{let t=g(e).then(e=>c?u:e);return await Promise.race([t,u])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.()}}function v(e){return typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)}async function y(e){if(!e)return;let t=await x(e);t&&o.stderr.write(t)}async function b(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function x(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():s(e):``}function S(e,t=o.platform){return t===`win32`?/\.(?:bat|cmd)$/i.test(e)?!0:e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e):!1}function C(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function w(e,t,n){let r=n([...e],t);return{get exitCode(){return r.exitCode},pid:r.pid,stderr:r.stderr,stdout:r.stdout,exited:r.exited.then(()=>typeof r.exitCode==`number`?r.exitCode:1),kill:e=>r.kill?.(e)??!1,unref:()=>r.unref?.()}}async function T(e,n){o.platform===`win32`&&e.pid!==void 0&&await O(e.pid,t,2e3),D(e,`SIGTERM`);let r=n===void 0?2e3:Math.max(10,Math.min(n,250));if(o.platform!==`win32`&&e.pid!==void 0)await new Promise(e=>setTimeout(e,r));else{let t=e.exited.then(()=>!0).catch(()=>!0);if(await Promise.race([t,new Promise(e=>setTimeout(()=>e(!1),r))]))return}D(e,`SIGKILL`),await k(e.exited.then(()=>void 0).catch(()=>void 0),250)}async function E(e){o.platform===`win32`&&e.pid!==void 0&&await O(e.pid,t,250),D(e,`SIGKILL`),await k(e.exited.then(()=>void 0).catch(()=>void 0),250)}function D(e,t){if(o.platform!==`win32`&&e.pid!==void 0)try{o.kill(-e.pid,t);return}catch{}try{e.kill?.(t)}catch{}}async function O(e,n=t,r=2e3){let i=n(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o,s,c=await Promise.race([new Promise(e=>{o=()=>e(`finished`),i.once(`close`,o)}),new Promise(e=>{s=()=>e(`finished`),i.once(`error`,s)}),new Promise(e=>{a=setTimeout(()=>e(`timed-out`),Math.max(10,r))})]);if(a&&clearTimeout(a),i.removeListener(`close`,o),i.removeListener(`error`,s),c===`timed-out`)try{i.kill(`SIGKILL`)}catch{}}async function k(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}export{f as a,T as c,_ as i,u as n,m as o,g as r,d as s,l as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./cli-operation-context-BFEu635L.mjs";export{e as createCliOperationContext};
@@ -1 +0,0 @@
1
- import{t as e}from"./commands-D1q4K0yE.mjs";export{e as commandsCommand};
@@ -1,3 +0,0 @@
1
- import{d as e,f as t,l as n,p as r,u as i}from"./file-store-BdnwPxOg.mjs";import{r as a}from"./registry-vhJzh8dW.mjs";import{i as o,n as s,t as c}from"./output-DXP9RqRk.mjs";import{t as l}from"./color-iQl4CJwm.mjs";async function u(l,u,f){if(!l)return o(s({action:`config`,data:{action:`list`,config:await e()},target:{kind:`config`}}),d);switch(l){case`get`:{if(!u)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let t=(await e())[u];return o(s({action:`config`,data:{action:`get`,key:u,value:typeof t==`number`||typeof t==`string`?t:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!n(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!i(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!a(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let r={};try{r=await e()}catch{}return r[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?a(f):f,await t(r),o(s({action:`config`,data:{action:`set`,key:u,value:r[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await t(r),o(s({action:`config`,data:{action:`reset`,config:r},target:{kind:`config`}}),d);default:return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:l},message:`Unknown action: ${l}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(l.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(l.bold(`
2
- Current Configuration:
3
- `)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?l.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(l.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(l.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./ensure-B4ynayjb.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
@@ -1,2 +0,0 @@
1
- import{i as e,n as t,o as n,r}from"./child-process-CBKnpMWt.mjs";import{n as i,t as a}from"./executable-search-paths-Do0aoA1z.mjs";import{r as o}from"./registry-vhJzh8dW.mjs";import{a as s,i as c,n as l,o as u,r as d}from"./schema-BBnWVY6R.mjs";import{constants as f,mkdirSync as p,writeFileSync as m}from"node:fs";import{dirname as ee,join as h}from"node:path";import g from"node:process";import{access as _,mkdir as v,readFile as y,rename as b,rm as x,writeFile as S}from"node:fs/promises";import{homedir as C}from"node:os";function te(){return{env:g.env,homeDir:C(),platform:g.platform}}async function w(i,a){try{let t=n([g.platform===`win32`?`where`:`which`,i],{detached:a!==void 0&&g.platform!==`win32`}),{exitCode:o,stdout:s}=a?await e(t,a):await r(t);return o===0&&s.trim().split(`
2
- `)[0]?.trim()||void 0}catch(e){if(t(e))throw e;return}}async function T(e,t){let n=a(e,t);for(let e of i(t))for(let t of n){let n=h(e,t);try{return await _(n,f.X_OK),n}catch{}}}async function E(e,t){let n=await w(e,t);if(n)return n;if(!t?.signal.aborted)return T(e,te())}async function D(e,t){return await E(e,t)!==void 0}const O={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function k(){return h(g.env.HOME||g.env.USERPROFILE||C(),`.quantex`)}function A(){return h(k(),`config.json`)}async function ne(){let e={...O,...await N()};return{...e,defaultPackageManager:j(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:P(e.networkRetries,2),networkTimeoutMs:P(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?o(e.selfUpdateRegistry):void 0,versionCacheTtlHours:P(e.versionCacheTtlHours,6)}}function j(e){return e===`bun`||e===`mise`||e===`npm`}function re(e){return e===`latest-major`||e===`respect-semver`}async function M(e){await v(k(),{recursive:!0}),await S(A(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function N(){try{let e=await y(A(),`utf8`),t=JSON.parse(e);return F(t)?t:{}}catch{return{}}}function P(e,t){if(typeof e==`number`&&Number.isInteger(e)&&e>0)return e;if(typeof e==`string`){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>0)return t}return t}function F(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var I=class extends Error{lockPath;resource;constructor(e,t){super(`Another quantex process is already using the ${e} lock.`),this.name=`ResourceLockError`,this.lockPath=t,this.resource=e}};function L(e){return e instanceof I}function R(e,t){let n=t.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),r=n.length>0?n:[`default`],i=r.slice(0,-1),a=`${r.at(-1)}.lock`;return h(e,`locks`,...i,a)}async function z(e,t){let n=R(e,t.scope);return await v(ee(n),{recursive:!0}),await V(t.resource,n),async()=>{await x(n,{force:!0,recursive:!0})}}async function B(e){return await z(k(),e)}async function V(e,t){try{p(t,{recursive:!1}),H(t);return}catch(e){if(!q(e))throw e}if(!await U(t))throw new I(e,t);try{p(t,{recursive:!1}),H(t)}catch(n){throw q(n)?new I(e,t):n}}function H(e){m(h(e,`owner.json`),`${JSON.stringify({pid:g.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function U(e){let t;try{t=await W(e)}catch{return!1}return t&&K(t.pid)?!1:(await x(e,{force:!0,recursive:!0}),!0)}async function W(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await G(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await G(e)}async function G(e){try{let t=await y(h(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(J(e))return;throw e}}function K(e){try{return g.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function q(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function J(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Y(e,t,n){let r=await z(e,t);try{return await n()}finally{await r()}}async function ie(e,t){return await Y(k(),e,t)}var ae=class extends Error{backupFilePath;primaryError;recoveryError;constructor(e){super(`Failed to restore the original Quantex state after a persistence failure.`,{cause:e.recoveryError}),this.name=`StateRecoveryError`,this.backupFilePath=e.backupFilePath,this.primaryError=e.primaryError,this.recoveryError=e.recoveryError}},oe=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:X(e)}async save(e){let t=c(e);if(t.source!==`current`)throw Error(`Refusing to persist an unversioned state document.`);let{backupFilePath:n,directoryPath:r,stateFilePath:i,tempFileSuffix:a}=this.options,o=`${n}.tmp-${a}`,s=`${i}.tmp-${a}`,l=`${i}.restore-${a}`,u=await this.readOptional(i),d=u===void 0?void 0:c(X(u)),f=`${JSON.stringify(t.document,null,2)}\n`,p=!1;await this.options.fileSystem.makeDirectory(r);try{u!==void 0&&d?.source===`legacy`&&(await this.options.fileSystem.writeText(o,u),await this.validateBackup(o,u),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,u)),await this.options.fileSystem.writeText(s,f),Z(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),p=!0,Z(await this.options.fileSystem.readText(i))}catch(e){let t;try{p&&await this.restoreOriginal(u,l,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,s,l)}throw t===void 0?e:new ae({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,s,l)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(Q(e))return;throw e}}async validateBackup(e,t){let n=await this.options.fileSystem.readText(e);if(n!==t)throw Error(`State migration backup does not match the original state.`);c(X(n))}async restoreOriginal(e,t,n){if(e===void 0){if(await this.options.fileSystem.remove(n),await this.readOptional(n)!==void 0)throw Error(`New state remained after rollback removal.`);return}await this.options.fileSystem.writeText(t,e),await this.options.fileSystem.rename(t,n);let r=await this.options.fileSystem.readText(n);if(r!==e)throw Error(`Restored state does not match the original state.`);c(X(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},se=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?l():c(e).document}async loadProjection(){return s(await this.loadDocument())}async saveDocument(e){let t=c(e);if(t.source!==`current`)throw Error(`State documents must use the current state schema.`);await this.persistence.save(t.document)}async saveProjection(e){let t=u(await this.loadDocument(),e);await this.saveDocument(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=d(e.targetId,e),n=await this.loadDocument(),r=c({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(r.document)}async setAgentLifecycleEvidence(e,t){let n=d(t.targetId,t);if(e.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let r=await this.loadDocument(),i=c({...r,installedAgents:{...r.installedAgents,[e.agentName]:e},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}});if(i.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.saveDocument({...t,lifecycleReceipts:n})}};function X(e){return JSON.parse(e)}function Z(e){if(c(X(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function Q(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}const ce={async makeDirectory(e){await v(e,{recursive:!0})},async readText(e){return y(e,`utf8`)},async remove(e){await x(e,{force:!0})},async rename(e,t){await b(e,t)},async writeText(e,t){await S(e,t,`utf8`)}};function $(e){return h(e,`state.json`)}function le(e,t=String(g.pid)){let n=$(e);return new se(new oe({backupFilePath:`${n}.v1.bak`,directoryPath:e,fileSystem:ce,stateFilePath:n,tempFileSuffix:t}))}export{L as a,A as c,ne as d,M as f,E as h,z as i,j as l,D as m,$ as n,ie as o,O as p,B as r,k as s,le as t,re as u};
@@ -1 +0,0 @@
1
- import{t as e}from"./inspect-DJfaLc06.mjs";export{e as inspectCommand};
@@ -1 +0,0 @@
1
- import{a as e,g as t,p as n,r,u as i}from"./npm-CJQfKklg.mjs";import{D as a,E as o,F as s,N as c,S as l,V as u,b as d,c as f,g as p,i as m,k as h,m as g,n as _,u as v,z as y}from"./winget-Q_NhfOhY.mjs";import{r as b}from"./registry-vhJzh8dW.mjs";import{t as x}from"./types-D0YMPN5w.mjs";import{t as S}from"./provider-observation-registry-BaeYlsr4.mjs";const C=Object.freeze([`availability`,`observe`,`install`,`uninstall`,`verify`]),w=Object.freeze([`availability`,`observe`,`install`,`verify`]),T=Object.freeze([]),E={bun:{install:e=>i(e.target.id,e.options?.distTag,e.options?.registry,e.context),installCommand:e=>{let t=b(e.options?.registry),n=e.options?.distTag?`${e.target.id}@${e.options.distTag}`:e.target.id;return[`bun`,`add`,`-g`,...t?[`--registry`,t]:[],n]},uninstall:e=>n(e.target.id,e.context),uninstallCommand:e=>[`bun`,`remove`,`-g`,e.target.id]},brew:{install:e=>y(e.target.id,F(e.target),e.context),installCommand:e=>I(`install`,e.target),uninstall:e=>u(e.target.id,F(e.target),e.context),uninstallCommand:e=>I(`uninstall`,e.target)},cargo:{install:e=>c(e.target.id,P(e.target),e.context),installCommand:e=>[`cargo`,`install`,e.target.id,...e.target.arguments??[]],uninstall:e=>s(e.target.id,e.context),uninstallCommand:e=>[`cargo`,`uninstall`,e.target.id]},deno:{install:e=>a(e.target.id,P(e.target),e.context),installCommand:e=>[`deno`,`install`,`--global`,...e.target.arguments??[],e.target.id],uninstall:e=>h(o(e.target.id,e.target.binaryName),e.context),uninstallCommand:e=>[`deno`,`uninstall`,`--global`,o(e.target.id,e.target.binaryName)]},mise:{install:e=>d(e.target.id,e.context),installCommand:e=>[`mise`,`use`,`--global`,e.target.id],uninstall:e=>l(e.target.id,e.context),uninstallCommand:e=>[`mise`,`unuse`,`--global`,e.target.id]},npm:{install:e=>r(e.target.id,e.options?.distTag,e.options?.registry,e.context),installCommand:e=>{let t=b(e.options?.registry);return[`npm`,`install`,`-g`,e.options?.distTag?`${e.target.id}@${e.options.distTag}`:e.target.id,...t?[`--registry`,t]:[]]},uninstall:t=>e(t.target.id,t.context),uninstallCommand:e=>[`npm`,`uninstall`,`-g`,e.target.id]},pip:{install:e=>g(e.target.id,e.context),installCommand:e=>[`pip`,`install`,e.target.id],uninstall:e=>p(e.target.id,e.context),uninstallCommand:e=>[`pip`,`uninstall`,`-y`,e.target.id]},uv:{install:e=>f(e.target.id,P(e.target),e.context),installCommand:e=>[`uv`,`tool`,`install`,e.target.id,...e.target.arguments??[]],uninstall:e=>v(e.target.id,e.context),uninstallCommand:e=>[`uv`,`tool`,`uninstall`,e.target.id]},winget:{install:e=>_(e.target.id,e.context),installCommand:e=>L(`install`,e.target),uninstall:e=>m(e.target.id,e.context),uninstallCommand:e=>L(`uninstall`,e.target)}};function D(e={}){let n=e.observationRegistry??S(),r=e.platform??z(),i=e.executeEffect??((e,n)=>t(e,n,`install effect failed`)),a=x.map(e=>{let t=n.get(e);if(!t)throw Error(`Core observation registry is missing first-party provider ${e}.`);return e===`binary`||e===`script`?k(e,t,r,i):O(e,t,E[e])}),o=Object.freeze([...a]),s=new Map(o.map(e=>[e.id,e]));return Object.freeze({get:e=>s.get(e),getCapabilities:e=>s.has(e)?e===`binary`||e===`script`?w:C:T,list:()=>o})}function O(e,t,n){let r={availability:t.availability,id:e,install:t=>A(e,t.target,n.installCommand(t),()=>n.install(t)),observe:t.observe,uninstall:t=>A(e,t.target,n.uninstallCommand(t),()=>n.uninstall(t)),verify:e=>j(t,e)};return Object.freeze(r)}function k(e,t,n,r){let i={availability:t.availability,id:e,async install(t){let i=t.target.effect;if(!i)return{evidence:[{kind:`provider`,value:e}],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 a=R(i,n);return A(e,t.target,a,()=>r(a,t.context))},observe:t.observe,verify:e=>j(t,e)};return Object.freeze(i)}async function A(e,t,n,r){let i=await r();if(i.kind===`success`)return{kind:`success`,value:{evidence:M(e,n),target:t}};if(i.kind!==`failed`)return i;let a=i.command??n;return{...i,command:a,evidence:N(e,a,i.evidence)}}async function j(e,t){let n=await e.observe(t);if(n.kind!==`success`)return n;let r=n.value.evidence??[];return{kind:`success`,value:n.value.kind===`absent`?{evidence:r,kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}:{evidence:r,kind:`satisfied`}}}function M(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function N(e,t,n){let r=M(e,t);return n?.length?[...r,...n.filter(e=>!r.some(t=>t.kind===e.kind&&t.value===e.value))]:r}function P(e){return e.arguments?[...e.arguments]:void 0}function F(e){return e.kind===`cask`?`cask`:`package`}function I(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function L(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function R(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}function z(){switch(process.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}export{D as createCoreInstallationProviderRegistry};
@@ -1 +0,0 @@
1
- const e=[{name:`amp`,platforms:{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`}}],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`}}],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`}}]}},{name:`antigravity`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`},id:`https://antigravity.google/cli/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`},id:`https://antigravity.google/cli/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://antigravity.google/cli/install.ps1 | iex`,kind:`shell-script`},id:`https://antigravity.google/cli/install.ps1`,kind:`script`}}]}},{name:`auggie`,platforms:{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`}}],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`}}]}},{name:`autohand`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`},id:`https://autohand.ai/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`},id:`https://autohand.ai/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,kind:`shell-script`},id:`https://autohand.ai/install.ps1`,kind:`script`}}]}},{name:`claude`,platforms:{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:{effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`},id:`https://claude.ai/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}],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:{effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`},id:`https://claude.ai/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}],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:{effect:{command:`irm https://claude.ai/install.ps1 | iex`,kind:`shell-script`},id:`https://claude.ai/install.ps1`,kind:`script`}},{probes:[`executable-presence`],provider:`winget`,target:{id:`Anthropic.ClaudeCode`,kind:`id`}}]}},{name:`codebuddy`,platforms:{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:{effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`},id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}],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:{effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`},id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}],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:{effect:{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,kind:`shell-script`},id:`https://www.codebuddy.cn/cli/install.ps1`,kind:`script`}}]}},{name:`codewhale`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{probes:[`executable-presence`],provider:`cargo`,target:{arguments:[`--locked`],id:`codewhale-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{probes:[`executable-presence`],provider:`cargo`,target:{arguments:[`--locked`],id:`codewhale-cli`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{probes:[`executable-presence`],provider:`cargo`,target:{arguments:[`--locked`],id:`codewhale-cli`,kind:`package`}}]}},{name:`codex`,platforms:{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`}}],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`}}],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`}}]}},{name:`commandcode`,platforms:{linux:[{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`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}]}},{name:`copilot`,platforms:{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:{effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`},id:`https://gh.io/copilot-install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}],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:{effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`},id:`https://gh.io/copilot-install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}],windows:[{probes:[`executable-presence`],provider:`winget`,target:{id:`GitHub.Copilot`,kind:`id`}}]}},{name:`crush`,platforms:{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`}}],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`}}],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`}}]}},{name:`cursor`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`},id:`https://cursor.com/install`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`},id:`https://cursor.com/install`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm 'https://cursor.com/install?win32=true' | iex`,kind:`shell-script`},id:`https://cursor.com/install?win32=true`,kind:`script`}}]}},{name:`deepcode`,platforms:{linux:[{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`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}]}},{name:`devin`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`},id:`https://cli.devin.ai/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`},id:`https://cli.devin.ai/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,kind:`shell-script`},id:`https://static.devin.ai/cli/setup.ps1`,kind:`script`}}]}},{name:`droid`,platforms:{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:{effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`},id:`https://app.factory.ai/cli`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}],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:{effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`},id:`https://app.factory.ai/cli`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}],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:{effect:{command:`irm https://app.factory.ai/cli/windows | iex`,kind:`shell-script`},id:`https://app.factory.ai/cli/windows`,kind:`script`}}]}},{name:`forgecode`,platforms:{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:{effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`},id:`https://forgecode.dev/cli`,kind:`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:{effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`},id:`https://forgecode.dev/cli`,kind:`script`}}],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:{effect:{command:`irm https://forgecode.dev/cli | iex`,kind:`shell-script`},id:`https://forgecode.dev/cli`,kind:`script`}}]}},{name:`gemini`,platforms:{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`}}],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`}}],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`}}]}},{name:`genie`,platforms:{linux:[{probes:[`executable-presence`],provider:`deno`,target:{arguments:[`-A`],id:`jsr:@nicorio/genie`,kind:`tool`}}],macos:[{probes:[`executable-presence`],provider:`deno`,target:{arguments:[`-A`],id:`jsr:@nicorio/genie`,kind:`tool`}}],windows:[{probes:[`executable-presence`],provider:`deno`,target:{arguments:[`-A`],id:`jsr:@nicorio/genie`,kind:`tool`}}]}},{name:`goose`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`},id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`},id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`},id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`script`,target:{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`},id:`https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1`,kind:`script`}}]}},{name:`grok`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`},id:`https://x.ai/cli/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`},id:`https://x.ai/cli/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://x.ai/cli/install.ps1 | iex`,kind:`shell-script`},id:`https://x.ai/cli/install.ps1`,kind:`script`}}]}},{name:`hermes`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`},id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`},id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,kind:`shell-script`},id:`https://hermes-agent.nousresearch.com/install.ps1`,kind:`script`}}]}},{name:`jcode`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`brew`,target:{id:`1jehuang/jcode/jcode`,kind:`formula`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,kind:`shell-script`},id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1`,kind:`script`}}]}},{name:`junie`,platforms:{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:{effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`},id:`https://junie.jetbrains.com/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}],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:{effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`},id:`https://junie.jetbrains.com/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}],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:{effect:{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,kind:`shell-script`},id:`https://junie.jetbrains.com/install.ps1`,kind:`script`}}]}},{name:`kilo`,platforms:{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`}}],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`}}],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`}}]}},{name:`kimi`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`},id:`https://code.kimi.com/kimi-code/install.sh`,kind:`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:{effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`},id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,kind:`shell-script`},id:`https://code.kimi.com/kimi-code/install.ps1`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}]}},{name:`kiro`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`},id:`https://cli.kiro.dev/install`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`},id:`https://cli.kiro.dev/install`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,kind:`shell-script`},id:`https://cli.kiro.dev/install.ps1`,kind:`script`}}]}},{name:`mimo`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`},id:`https://mimo.xiaomi.com/install`,kind:`script`}},{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:{effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`},id:`https://mimo.xiaomi.com/install`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}]}},{name:`omp`,platforms:{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:{effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`},id:`https://omp.sh/install`,kind:`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:{effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`},id:`https://omp.sh/install`,kind:`script`}}],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:{effect:{command:`irm https://omp.sh/install.ps1 | iex`,kind:`shell-script`},id:`https://omp.sh/install.ps1`,kind:`script`}}]}},{name:`openclaw`,platforms:{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:{effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`},id:`https://openclaw.ai/install.sh`,kind:`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:{effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`},id:`https://openclaw.ai/install.sh`,kind:`script`}}],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:{effect:{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,kind:`shell-script`},id:`https://openclaw.ai/install.ps1`,kind:`script`}}]}},{name:`opencode`,platforms:{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:{effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`},id:`https://opencode.ai/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}],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:{effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`},id:`https://opencode.ai/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}],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`}}]}},{name:`openhands`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{arguments:[`--python`,`3.12`],id:`openhands`,kind:`tool`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`},id:`https://install.openhands.dev/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{arguments:[`--python`,`3.12`],id:`openhands`,kind:`tool`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`},id:`https://install.openhands.dev/install.sh`,kind:`script`}}]}},{name:`pi`,platforms:{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`}}],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`}}],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`}}]}},{name:`qoder`,platforms:{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:{effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`},id:`https://qoder.com/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}],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:{effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`},id:`https://qoder.com/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}],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`}}]}},{name:`qwen`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`},id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`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`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`},id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`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`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{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`},id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat`,kind:`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`}}]}},{name:`reasonix`,platforms:{linux:[{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`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}]}},{name:`vibe`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`},id:`https://mistral.ai/vibe/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`}},{probes:[`executable-presence`],provider:`pip`,target:{id:`mistral-vibe`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`},id:`https://mistral.ai/vibe/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`}},{probes:[`executable-presence`],provider:`pip`,target:{id:`mistral-vibe`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`}},{probes:[`executable-presence`],provider:`pip`,target:{id:`mistral-vibe`,kind:`package`}}]}},{name:`vtcode`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`cargo`,target:{id:`vtcode`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`cargo`,target:{id:`vtcode`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}],windows:[{probes:[`executable-presence`],provider:`cargo`,target:{id:`vtcode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,kind:`shell-script`},id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1`,kind:`script`}}]}}];export{e as coreMutationRecipeCatalog};
@@ -1,4 +0,0 @@
1
- import{a as e,i as t,n,o as r,r as i}from"./child-process-CBKnpMWt.mjs";import{r as a}from"./registry-vhJzh8dW.mjs";import{join as o}from"node:path";import s from"node:process";import{readFile as c}from"node:fs/promises";import{homedir as l}from"node:os";async function u(t,r,i){try{let n=await e(t,r,{detached:process.platform!==`win32`});return n===0?{kind:`success`,value:void 0}:{command:t,exitCode:n,kind:`failed`,reason:`${i} with exit code ${n}`,retryable:!1}}catch(e){return n(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??r.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:{command:t,kind:`failed`,reason:`${i}: ${f(e)}`,retryable:!1}}}async function d(e,t,n){for(let r of e){let e=await u(r,t,n);if(e.kind!==`success`)return e}return{kind:`success`,value:void 0}}function f(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}async function p(e){let{createCliOperationContext:t}=await import(`./cli-operation-context-D-7o4gXx.mjs`),n=t();try{return(await e(n.context)).kind===`success`}finally{n.dispose()}}async function m(e,t,n){return p(r=>h(e,t,n,r))}function h(e,t,n,r){let i=t?`${e}@${t}`:e,o=a(n);return E([`bun`,`add`,`-g`,...o?[`--registry`,o]:[],i],[e],r)}function g(e,t,n,r,i){let o=n===`latest`?e:`${e}@${n}`,s=a(r);return E([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...s?[`--registry`,s]:[],o],[e],i)}function _(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):E([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function v(e,t){return u([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`)}const y={readGlobalManifest:()=>c(o(s.env.BUN_INSTALL_GLOBAL_DIR??o(l(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function b(e,a=y,o){try{let n=r([`bun`,`pm`,`-g`,`ls`],{detached:o!==void 0&&s.platform!==`win32`,stdio:M()}),{stderr:c,stdout:l}=o?await t(n,o):await i(n);if(!l.trim()){if(c.includes(`No package.json was found for directory`))return{presence:`absent`};if(c.includes(`Lockfile not found`))try{return{presence:w(await a.readGlobalManifest(),e)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let u=T(l,e);return u?{presence:`present`,version:u}:C(l,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(n(e))throw e;return{presence:`unknown`}}}async function x(e,t=y,n){return(await b(e,t,n)).presence}async function S(e,t){return(await b(e,y,t)).version}function C(e,t){let n=`${t}@`;return e.split(`
2
- `).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function w(e,t){let n=JSON.parse(e);if(typeof n!=`object`||!n||Array.isArray(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(typeof r!=`object`||!r||Array.isArray(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}function T(e,t){let n=`${t}@`;for(let t of e.split(`
3
- `)){let e=t.trim().split(/\s+/).at(-1);if(!e?.startsWith(n))continue;let r=e.slice(n.length);if(r)return r}}async function E(e,t,n){let r=[...new Set(t)],i=e[1]===`add`,a=i?await D(r,n):void 0,o=await u(e,n,`bun mutation failed`);if(o.kind!==`success`)return o;let s=await k(r,n);return s.kind!==`success`&&i&&a&&await O(r.filter(e=>a.get(e)===`absent`),n),s}async function D(e,t){let n=new Map;for(let r of e)n.set(r,await x(r,void 0,t));return n}async function O(e,t){for(let n of new Set(e))await u([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function k(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await A(t);if(r.kind!==`success`)return r;let i=j(r.value),a=n.filter(e=>i.has(e));return a.length===0?{kind:`success`,value:void 0}:u([`bun`,`pm`,`-g`,`trust`,...a],t,`bun trust failed`)}async function A(e){let i=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:n,stdout:a}=await t(r(i,{detached:s.platform!==`win32`,stdio:M()}),e);return n===0?{kind:`success`,value:a}:{command:i,exitCode:n,kind:`failed`,reason:`bun trust inspection failed with exit code ${n}`,retryable:!1}}catch(t){return n(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...t.reason?{reason:t.reason}:{}}:{command:i,kind:`failed`,reason:t instanceof Error&&t.message.trim()?t.message:`bun trust inspection failed`,retryable:!1}}}function j(e){let t=new Set;for(let n of e.split(`
4
- `)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function M(){return[`ignore`,`pipe`,`pipe`]}async function N(e,t,n){return p(r=>P(e,t,n,r))}function P(e,t,n,r){let i=t?`${e}@${t}`:e,o=a(n);return u([`npm`,`install`,`-g`,i,...o?[`--registry`,o]:[]],r,`npm install failed`)}function F(e,t,n,r,i){let o=a(r);return u(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...o?[`--registry`,o]:[]]:[`npm`,`update`,`-g`,e,...o?[`--registry`,o]:[]],i,`npm update failed`)}function I(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):u(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e],n,`npm batch update failed`)}function L(e,t){return u([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function R(e,a){try{let n=r([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{detached:a!==void 0&&process.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await t(n,a):await i(n);if(!o.trim())return{presence:`unknown`};try{let t=JSON.parse(o);if(!t||typeof t!=`object`||Array.isArray(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};if(t.dependencies&&Object.hasOwn(t.dependencies,e)){let t=V(o,e);return t?{presence:`present`,version:t}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch(e){if(n(e))throw e;return{presence:`unknown`}}}async function z(e,t){return(await R(e,t)).presence}async function B(e,t){return(await R(e,t)).version}function V(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}export{d as _,L as a,S as c,j as d,x as f,u as g,g as h,z as i,m as l,_ as m,N as n,I as o,v as p,P as r,F as s,B as t,h as u};