quantex-cli 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +28 -2
  2. package/README.zh-CN.md +28 -2
  3. package/dist/agent-installation-Dsz_I5Li.mjs +1 -0
  4. package/dist/agent-observation-DRzJavrO.mjs +1 -0
  5. package/dist/agents-CBoMqbP1.mjs +2 -0
  6. package/dist/agents-DvfpsVAI.mjs +1 -0
  7. package/dist/capabilities-CQZ0SLgD.mjs +1 -0
  8. package/dist/{capabilities-hjF4kpxs.mjs → capabilities-C_gPEld2.mjs} +4 -4
  9. package/dist/cli.mjs +1 -1
  10. package/dist/color-1gXmuBdm.mjs +8 -0
  11. package/dist/commands-84XyphJp.mjs +1 -0
  12. package/dist/{commands-DjMechiz.mjs → commands-DiZ3IIz4.mjs} +1 -1
  13. package/dist/config-C335pFul.mjs +3 -0
  14. package/dist/core-read-observations-Cm0FpEpL.mjs +3 -0
  15. package/dist/doctor-YObQVc1Y.mjs +3 -0
  16. package/dist/ensure-BqcmFFyN.mjs +1 -0
  17. package/dist/ensure-CSntyBTb.mjs +1 -0
  18. package/dist/errors-BrmJuMg3.mjs +1 -0
  19. package/dist/index.mjs +2 -2
  20. package/dist/{info-C4-95Kjx.mjs → info-B4Gr79vU.mjs} +2 -2
  21. package/dist/inspect-DSnK5oMu.mjs +1 -0
  22. package/dist/{inspect-Bzu6BDS6.mjs → inspect-DyCXX7Tp.mjs} +3 -3
  23. package/dist/install-BKh0kreC.mjs +1 -0
  24. package/dist/lifecycle-observations-31JWXSir.mjs +1 -0
  25. package/dist/lifecycle-policy-ZKxZhM5R.mjs +1 -0
  26. package/dist/list-BrePsdOM.mjs +3 -0
  27. package/dist/provider-binding-BvvHuohl.mjs +1 -0
  28. package/dist/{provider-observations-BG3wn0dF.mjs → provider-observations-CRG1GCgp.mjs} +1 -1
  29. package/dist/resolve-B594qXY6.mjs +1 -0
  30. package/dist/{resolve-D-NvixQn.mjs → resolve-CCeMk9aY.mjs} +1 -1
  31. package/dist/{schema-DuUjt16u.mjs → schema-C2S3d_Cu.mjs} +1 -1
  32. package/dist/schema-CgTSwXpy.mjs +1 -0
  33. package/dist/uninstall-5ZK3juO1.mjs +1 -0
  34. package/dist/update-DQR-B9S-.mjs +1 -0
  35. package/dist/{update-planner-9xPfJpjp.mjs → update-planner-IgFzteV-.mjs} +1 -1
  36. package/dist/{upgrade-DP2QHsnb.mjs → upgrade-kK57LorF.mjs} +1 -1
  37. package/dist/{user-output-C1JWMNEt.mjs → user-output-uK6ichvR.mjs} +1 -1
  38. package/dist/{version-cache-D0_L2X5L.mjs → version-cache-CJ0R5HZJ.mjs} +1 -1
  39. package/package.json +17 -6
  40. package/dist/agent-inspection-PCTn6Nc6.mjs +0 -1
  41. package/dist/agent-installation-Dp03CAn2.mjs +0 -1
  42. package/dist/agents-BrJ8oEkB.mjs +0 -1
  43. package/dist/agents-Dc-rbRUf.mjs +0 -1
  44. package/dist/capabilities-DywtqYKA.mjs +0 -1
  45. package/dist/color-BGZ_5A6s.mjs +0 -9
  46. package/dist/commands-J8gAQ8RH.mjs +0 -1
  47. package/dist/config-Cs1_DPwP.mjs +0 -3
  48. package/dist/doctor-D8y0PQ7s.mjs +0 -3
  49. package/dist/ensure-CGipmEmc.mjs +0 -1
  50. package/dist/ensure-NxyYe2vm.mjs +0 -1
  51. package/dist/errors-BzuGM14H.mjs +0 -1
  52. package/dist/inspect-FAr4x7oh.mjs +0 -1
  53. package/dist/install-CGHSS_yl.mjs +0 -1
  54. package/dist/lifecycle-observations-C1OLPUAV.mjs +0 -1
  55. package/dist/lifecycle-policy-emF59xDd.mjs +0 -1
  56. package/dist/list-BwTYgNzc.mjs +0 -3
  57. package/dist/provider-evidence-D7aplCd6.mjs +0 -1
  58. package/dist/resolve-DLrskjPy.mjs +0 -1
  59. package/dist/schema-xUwSt_FZ.mjs +0 -1
  60. package/dist/uninstall-DLAzYf0i.mjs +0 -1
  61. package/dist/update-l5KnwT41.mjs +0 -1
  62. /package/dist/{errors-DXzIacfk.mjs → errors-BD4Gc9Rp.mjs} +0 -0
  63. /package/dist/{lifecycle-errors-BXlHX_YF.mjs → lifecycle-errors-Cal_j4yT.mjs} +0 -0
@@ -0,0 +1,8 @@
1
+ import{createHash as e,randomUUID as t}from"node:crypto";import n from"node:process";import r from"cross-spawn";import{spawn as i}from"node:child_process";import{accessSync as a,constants as o,existsSync as s,mkdirSync as c,writeFileSync as l}from"node:fs";import{basename as u,delimiter as d,dirname as f,join as p,win32 as m}from"node:path";import{text as h}from"node:stream/consumers";import{chmod as ee,mkdir as g,mkdtemp as te,readFile as _,realpath as ne,rename as re,rm as v,stat as ie,writeFile as ae}from"node:fs/promises";import{homedir as oe}from"node:os";import{fileURLToPath as se}from"node:url";import{Buffer as ce}from"node:buffer";import le from"picocolors";function ue(e){let t=e.trim().match(/^(\d+)(ms|[smh])?$/);if(!t)return;let n=Number.parseInt(t[1],10),r=t[2]??`ms`;if(Number.isFinite(n))switch(r){case`ms`:return n;case`s`:return n*1e3;case`m`:return n*60*1e3;case`h`:return n*60*60*1e3;default:return}}let y,b=new Set;function x(){return y??=ve(),y}function de(e){b=new Set,y={...e,cacheMode:e.cacheMode??`default`,cancelled:e.cancelled??!1}}function fe(){y=void 0,b=new Set}function pe(e={}){let r=n.stdin.isTTY!==!1,i=n.stdout.isTTY!==!1,a=!r||!i,o=e.json||e.output===`json`?`json`:e.output===`ndjson`?`ndjson`:e.output===`human`?`human`:a?`json`:`human`,s=e.timeout===void 0?void 0:ue(e.timeout),c=ye(e.color),l=be(e.logLevel);if(e.timeout!==void 0&&s===void 0)throw Error(`Invalid timeout value: ${e.timeout}`);if(e.refresh&&e.noCache)throw Error(`Cannot combine --refresh with --no-cache.`);return{assumeYes:e.yes,cacheMode:e.noCache?`no-cache`:e.refresh?`refresh`:`default`,cancelled:!1,colorMode:c,dryRun:e.dryRun,idempotencyKey:e.idempotencyKey,interactive:!e.nonInteractive&&!a&&r&&i,logLevel:l,outputMode:o,quiet:e.quiet,runId:e.runId??n.env.QUANTEX_RUN_ID??t(),timeoutMs:s}}function me(){y&&(y.cancelled=!0)}async function he(){me();let e=[...b];b.clear(),await Promise.allSettled(e.map(e=>Promise.resolve().then(e)))}function ge(e){return b.add(e),()=>{b.delete(e)}}function _e(e){let t=x();if(!t.freshness){t.freshness=e;return}t.freshness={fetchedAt:t.freshness.fetchedAt<=e.fetchedAt?t.freshness.fetchedAt:e.fetchedAt,source:t.freshness.source===`network`&&e.source===`network`?`network`:`cache`,staleAfter:t.freshness.staleAfter<=e.staleAfter?t.freshness.staleAfter:e.staleAfter}}function ve(){return pe()}function ye(e){if(e===void 0||e===`auto`)return`auto`;if(e===`always`)return`always`;if(e===`never`)return`never`;throw Error(`Invalid color mode: ${e}`)}function be(e){if(e===void 0||e===`info`)return`info`;if(e===`silent`||e===`error`||e===`warn`||e===`debug`)return e;throw Error(`Invalid log level: ${e}`)}var S=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 C(e){return e instanceof S}function xe(e,t={}){if(x().outputMode===`human`){let n=w(e,{...t,stdio:[`inherit`,`inherit`,`inherit`]});return{cleanup:ge(()=>Me(n)),outputDrained:Promise.resolve(),proc:n}}let n=w(e,{...t,stdio:[`ignore`,`pipe`,`pipe`]});return{cleanup:ge(()=>Me(n)),outputDrained:Promise.all([Ee(n.stdout),Ee(n.stderr)]).then(()=>void 0),proc:n}}async function Se(e){let t=x();try{let n=await e.proc.exited;return await e.outputDrained,t.cancelled?1:n}finally{e.cleanup()}}async function Ce(e,t){let n,r=()=>n??=Ne(e.proc,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Pe(e.proc)});if(t.signal.aborted)throw await r(),e.cleanup(),i?.(),new S({kind:`cancelled`,reason:Te(t.signal)});let a,o,s,c=!1,l=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>n(e===`timed-out`?new S({kind:e,timeoutMs:t.timeoutMs}):new S({kind:e,reason:Te(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?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.(),e.cleanup()}}function w(e,t={}){let[a,...o]=e,s=a?we(a,t):void 0;if(!s)throw Error(`spawnCommand requires a non-empty command array.`);let c=ke(s),l=t.detached||c?void 0:Ae();if(l)return je([s,...o],{...t,env:t.env??n.env},l);let u=(c?r:i)(s,o,{...t,env:t.env??n.env});return{get exitCode(){return u.exitCode},pid:u.pid,stderr:u.stderr,stdout:u.stdout,exited:De(u),kill:u.kill.bind(u),unref:()=>u.unref()}}function we(e,t){if(!t.detached||n.platform===`win32`||e.includes(`/`))return e;for(let t of(n.env.PATH??``).split(d)){let n=p(t,e);try{return a(n,o.X_OK),n}catch{}}return e}async function T(e){let[t,n,r]=await Promise.all([Oe(e.stdout),Oe(e.stderr),e.exited]);return{exitCode:r,stderr:n,stdout:t}}async function E(e,t){let n,r=()=>n??=Ne(e,t.timeoutMs),i=t.registerCleanup?.({cleanup:r,force:()=>Pe(e)});if(t.signal.aborted)throw await r(),i?.(),new S({kind:`cancelled`,reason:Te(t.signal)});let a,o,s,c=!1,l=new Promise((e,n)=>{s=e=>{c||(c=!0,r().then(()=>setTimeout(()=>n(e===`timed-out`?new S({kind:e,timeoutMs:t.timeoutMs}):new S({kind:e,reason:Te(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=T(e).then(e=>c?l:e);return await Promise.race([t,l])}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o),i?.()}}function Te(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 Ee(e){if(!e)return;let t=await Oe(e);t&&n.stderr.write(t)}async function De(e){return new Promise((t,n)=>{e.once(`error`,n),e.once(`close`,e=>{t(typeof e==`number`?e:1)})})}async function Oe(e){return e?typeof e==`string`?e:typeof e.getReader==`function`?new Response(e).text():h(e):``}function ke(e,t=n.platform){return t===`win32`?/\.(?:bat|cmd)$/i.test(e)?!0:e.includes(`/`)||e.includes(`\\`)?!1:!/\.[a-z0-9]+$/i.test(e):!1}function Ae(){let e=globalThis.Bun?.spawn;return typeof e==`function`?e:void 0}function je(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 Me(e){await Ne(e)}async function Ne(e,t){n.platform===`win32`&&e.pid!==void 0&&await Le(Ie(e.pid),2e3),Fe(e,`SIGTERM`);let r=t===void 0?2e3:Math.max(10,Math.min(t,250));if(n.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}Fe(e,`SIGKILL`),await Le(e.exited.then(()=>void 0).catch(()=>void 0),250)}async function Pe(e){n.platform===`win32`&&e.pid!==void 0&&await Le(Ie(e.pid),250),Fe(e,`SIGKILL`),await Le(e.exited.then(()=>void 0).catch(()=>void 0),250)}function Fe(e,t){if(n.platform!==`win32`&&e.pid!==void 0)try{n.kill(-e.pid,t);return}catch{}try{e.kill?.(t)}catch{}}async function Ie(e,t=i){await new Promise(n=>{let r=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0});r.once(`error`,()=>n()),r.once(`close`,()=>n())})}async function Le(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function Re(){let e=x(),t=new AbortController,n=new Set;e.cancelled&&t.abort(`cancelled`);let r=ge(async()=>{t.abort(`cancelled`);let e=[...n];await Be(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.cleanup()))),500)||await Be(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.force?.()))),250)});return{context:{registerCleanup(e){return n.add(e),()=>n.delete(e)},signal:t.signal,timeoutMs:e.timeoutMs},dispose(){r(),n.clear()},async run(e){if(t.signal.aborted)throw ze(t.signal);let n,r=new Promise((e,r)=>{n=()=>r(ze(t.signal)),t.signal.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([Promise.resolve().then(e),r])}finally{t.signal.removeEventListener(`abort`,n)}}}}function ze(e){return new S({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:e.reason instanceof Error?e.reason.message:e.reason===void 0?void 0:String(e.reason)})}async function Be(e,t){let n;try{return await Promise.race([e.then(()=>!0),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}async function D(e,t,n){try{let r=await Ce(xe(e,{detached:process.platform!==`win32`}),t);return r===0?{kind:`success`,value:void 0}:{command:e,exitCode:r,kind:`failed`,reason:`${n} with exit code ${r}`,retryable:!1}}catch(r){return C(r)?r.kind===`timed-out`?{kind:`timed-out`,timeoutMs:r.timeoutMs??t.timeoutMs??0}:{kind:`cancelled`,...r.reason?{reason:r.reason}:{}}:{command:e,kind:`failed`,reason:`${n}: ${Ue(r)}`,retryable:!1}}}async function Ve(e,t,n){for(let r of e){let e=await D(r,t,n);if(e.kind!==`success`)return e}return{kind:`success`,value:void 0}}async function He(e){let t=Re();try{return(await e(t.context)).kind===`success`}finally{t.dispose()}}function Ue(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}const We=`https://registry.npmjs.org`;function O(e){if(e)try{return new URL(e.trim()).toString().replace(/\/+$/,``)}catch{return}}function Ge(e,t,n){return`${O(n)}/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async function Ke(e,t,n){return He(r=>qe(e,t,n,r))}function qe(e,t,n,r){let i=t?`${e}@${t}`:e,a=O(n);return it([`bun`,`add`,`-g`,...a?[`--registry`,a]:[],i],[e],r)}function Je(e,t,n,r,i){let a=n===`latest`?e:`${e}@${n}`,o=O(r);return it([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...o?[`--registry`,o]:[],a],[e],i)}function Ye(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):it([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function Xe(e,t){return D([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`)}const Ze={readGlobalManifest:()=>_(p(n.env.BUN_INSTALL_GLOBAL_DIR??p(oe(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function Qe(e,t=Ze,r){try{let i=w([`bun`,`pm`,`-g`,`ls`],{detached:r!==void 0&&n.platform!==`win32`,stdio:ut()}),{stderr:a,stdout:o}=r?await E(i,r):await T(i);if(!o.trim()){if(a.includes(`No package.json was found for directory`))return{presence:`absent`};if(a.includes(`Lockfile not found`))try{return{presence:nt(await t.readGlobalManifest(),e)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let s=rt(o,e);return s?{presence:`present`,version:s}:tt(o,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(C(e))throw e;return{presence:`unknown`}}}async function $e(e,t=Ze,n){return(await Qe(e,t,n)).presence}async function et(e,t){return(await Qe(e,Ze,t)).version}function tt(e,t){let n=`${t}@`;return e.split(`
2
+ `).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function nt(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 rt(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 it(e,t,n){let r=[...new Set(t)],i=e[1]===`add`,a=i?await at(r,n):void 0,o=await D(e,n,`bun mutation failed`);if(o.kind!==`success`)return o;let s=await st(r,n);return s.kind!==`success`&&i&&a&&await ot(r.filter(e=>a.get(e)===`absent`),n),s}async function at(e,t){let n=new Map;for(let r of e)n.set(r,await $e(r,void 0,t));return n}async function ot(e,t){for(let n of new Set(e))await D([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function st(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await ct(t);if(r.kind!==`success`)return r;let i=lt(r.value),a=n.filter(e=>i.has(e));return a.length===0?{kind:`success`,value:void 0}:D([`bun`,`pm`,`-g`,`trust`,...a],t,`bun trust failed`)}async function ct(e){let t=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:r,stdout:i}=await E(w(t,{detached:n.platform!==`win32`,stdio:ut()}),e);return r===0?{kind:`success`,value:i}:{command:t,exitCode:r,kind:`failed`,reason:`bun trust inspection failed with exit code ${r}`,retryable:!1}}catch(n){return C(n)?n.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...n.reason?{reason:n.reason}:{}}:{command:t,kind:`failed`,reason:n instanceof Error&&n.message.trim()?n.message:`bun trust inspection failed`,retryable:!1}}}function lt(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 ut(){return[`ignore`,`pipe`,`pipe`]}function dt(e,t){let n=ft(e),r=ft(t);if(!(!n||!r)){for(let e=0;e<3;e+=1){let t=n.core[e],i=r.core[e];if(t!==i)return t>i?1:-1}return pt(n.prerelease,r.prerelease)}}function ft(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9a-z.-]+))?$/iu);if(t)return{core:[BigInt(t[1]),BigInt(t[2]),BigInt(t[3])],prerelease:t[4]?t[4].split(`.`):[]}}function pt(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;if(n===i)continue;let a=/^\d+$/u.test(n),o=/^\d+$/u.test(i);if(a&&o){let e=BigInt(n),t=BigInt(i);if(e===t)continue;return e>t?1:-1}return a?-1:o||n>i?1:-1}return 0}const mt={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function k(){return p(n.env.HOME||n.env.USERPROFILE||oe(),`.quantex`)}function ht(){return p(k(),`config.json`)}async function A(){let e={...mt,...await yt()};return{...e,defaultPackageManager:gt(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:bt(e.networkRetries,2),networkTimeoutMs:bt(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:bt(e.versionCacheTtlHours,6)}}function gt(e){return e===`bun`||e===`mise`||e===`npm`}function _t(e){return e===`latest-major`||e===`respect-semver`}async function vt(e){await g(k(),{recursive:!0}),await ae(ht(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function yt(){try{let e=await _(ht(),`utf8`),t=JSON.parse(e);return xt(t)?t:{}}catch{return{}}}function bt(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 xt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var St=class extends Error{timeoutMs;constructor(e){super(`Network attempt timed out after ${e}ms.`),this.name=`NetworkAttemptTimeoutError`,this.timeoutMs=e}};async function Ct(e,t,n={}){let r=await wt(e,t,`json`,n);if(r)try{return JSON.parse(r)}catch{return}}async function wt(e,t,n=`text`,r={}){let i=r.context?.signal??r.signal;j(i);let a=await A();j(i);let o=a.versionCacheTtlHours*60*60*1e3,s=x().cacheMode,c=s===`no-cache`?{entries:{}}:await jt();j(i);let l=c.entries[t],u=Date.now();if(s===`default`&&l&&l.expiresAt>u)return j(i),Pt(l,o),l.body;let d=await Tt(e,{context:r.context,headers:s!==`no-cache`&&l?.etag?{"If-None-Match":l.etag}:void 0,mode:n,networkPort:r.networkPort,retries:a.networkRetries,signal:i,timeoutMs:a.networkTimeoutMs});if(j(i),!d)return l&&(j(i),Pt(l,o)),l?.body;if(d.status===304&&l)return j(i),c.entries[t]={...l,expiresAt:u+o,fetchedAt:u},s!==`no-cache`&&(j(i),await Mt(c)),j(i),Ft(u,u+o),l.body;if(!d.ok||!d.valid||d.body===void 0)return l&&(j(i),Pt(l,o)),l?.body;j(i);let f={body:d.body,etag:d.etag,expiresAt:u+o,fetchedAt:u};return s!==`no-cache`&&(c.entries[t]=f,j(i),await Mt(c)),j(i),Ft(u,u+o),d.body}async function Tt(e,t){let n=t.context?.timeoutMs===void 0?void 0:Date.now()+t.context.timeoutMs;for(let r=0;r<=t.retries;r++)try{return await Et(e,{...t,invocationDeadline:n})}catch(e){if(e instanceof S)throw e;if(r===t.retries)return}}async function Et(e,t){let n=t.networkPort;if(n)return Dt(e,{...t,networkPort:n});let r=new AbortController,i,a,o,s,c,l=new Promise((e,t)=>s=t),u=()=>c??=kt(Promise.resolve().then(async()=>{i?await i.cancel(o):a?.body&&!a.body.locked&&await a.body.cancel(o)}).then(()=>void 0).catch(()=>void 0),250),d=e=>{let n=e===`cancelled`?At(t.signal):e===`invocation-timeout`?new S({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new St(t.timeoutMs),i=o===void 0;return(i||o instanceof St&&n instanceof S)&&(o=n),i&&(r.abort(o),u().finally(()=>s(o))),u()},f=()=>void d(`cancelled`);t.signal?.addEventListener(`abort`,f,{once:!0});let p=t.context?.registerCleanup?.({cleanup:()=>d(`cancelled`),force:u}),m=Date.now()+t.timeoutMs,h=setTimeout(()=>void d(`network-timeout`),t.timeoutMs),ee=t.invocationDeadline===void 0?void 0:setTimeout(()=>void d(`invocation-timeout`),Math.max(0,t.invocationDeadline-Date.now())),g=async()=>{if(o||(t.signal?.aborted?await d(`cancelled`):t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?await d(`invocation-timeout`):Date.now()>=m&&await d(`network-timeout`),o))throw o};try{t.signal?.aborted&&await d(`cancelled`);let n=(async()=>{a=await fetch(e,{headers:t.headers,signal:r.signal}),await g();let n=a.status,o=a.headers?.get?.(`etag`)??void 0;if(!a.ok)return await u(),{etag:o,ok:!1,status:n,valid:!0};let s=await Ot(a,e=>i=e);await g();let c=!0;if(t.mode===`json`)try{JSON.parse(s)}catch{c=!1}return await g(),{body:s,etag:o,ok:!0,status:n,valid:c}})();try{return await Promise.race([n,l])}catch(e){throw o?(await u(),o):e}}finally{clearTimeout(h),ee&&clearTimeout(ee),t.signal?.removeEventListener(`abort`,f),p?.()}}async function Dt(e,t){if(t.signal?.aborted)throw At(t.signal);let n=Date.now();if(t.invocationDeadline!==void 0&&t.invocationDeadline<=n)throw new S({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0});let r=t.invocationDeadline===void 0?t.timeoutMs:Math.max(1,Math.min(t.timeoutMs,t.invocationDeadline-n)),i=t.signal??new AbortController().signal,a=await t.networkPort.request({headers:t.headers,signal:i,timeoutMs:r,url:e});if(a.kind===`failure`)throw t.signal?.aborted||a.error.kind===`cancelled`?At(t.signal):a.error.kind===`timed-out`?t.invocationDeadline!==void 0&&Date.now()>=t.invocationDeadline?new S({kind:`timed-out`,timeoutMs:t.context?.timeoutMs??0}):new St(t.timeoutMs):Error(a.error.message);let o=new TextDecoder().decode(a.value.body),s=!0;if(t.mode===`json`&&a.value.status>=200&&a.value.status<300)try{JSON.parse(o)}catch{s=!1}return{body:a.value.status>=200&&a.value.status<300?o:void 0,etag:a.value.headers.etag,ok:a.value.status>=200&&a.value.status<300,status:a.value.status,valid:s}}async function Ot(e,t){if(!e.body)return``;let n=e.body.getReader();t(n);let r=new TextDecoder,i=``;for(;;){let e=await n.read();if(e.done)break;i+=r.decode(e.value,{stream:!0})}return i+r.decode()}async function kt(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}function j(e){if(e?.aborted)throw At(e)}function At(e){return e?.reason instanceof S?e.reason:new S({kind:`cancelled`,reason:typeof e?.reason==`string`?e.reason:e?.reason instanceof Error?e.reason.message:e?.reason===void 0?void 0:String(e.reason)})}async function jt(){try{return JSON.parse(await _(Nt(),`utf8`))}catch{return{entries:{}}}}async function Mt(e){await g(p(k(),`cache`),{recursive:!0}),await ae(Nt(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}function Nt(){return p(k(),`cache`,`versions.json`)}function Pt(e,t){let n=e.fetchedAt??Math.max(0,e.expiresAt-t);_e({fetchedAt:new Date(n).toISOString(),source:`cache`,staleAfter:new Date(e.expiresAt).toISOString()})}function Ft(e,t){_e({fetchedAt:new Date(e).toISOString(),source:`network`,staleAfter:new Date(t).toISOString()})}const It=/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i;function Lt(e,t){if(t)return t(e);let n=e.trim().split(`
5
+ `)[0],r=n.match(It);return r?r[1]:n||void 0}function Rt(e,t){return dt(e,t)===1}async function zt(e,t,r){let i=t?.command??[e,`--version`];try{let e=w(i,{detached:r!==void 0&&n.platform!==`win32`}),{exitCode:a,stdout:o}=r?await E(e,r):await T(e);return a===0?Lt(o,t?.parser):void 0}catch(e){if(C(e))throw e;return}}async function Bt(e,t=`latest`,n={}){try{let r=O(n.registry)??`https://registry.npmjs.org`,i=await Ct(Ge(e,t,r),`npm:${r}:${e}:${t}`,{context:n.context,networkPort:n.networkPort});if(n.context?.signal.aborted)throw M(n.context.signal);return i?.version}catch(e){if(C(e))throw e;if(n.context?.signal.aborted)throw M(n.context.signal);return}}async function Vt(e,t){try{let r=w([n.platform===`win32`?`where`:`which`,e],{detached:t!==void 0&&n.platform!==`win32`}),{exitCode:i,stdout:a}=t?await E(r,t):await T(r);return i===0?a.trim().split(`
6
+ `)[0]:void 0}catch(e){if(C(e))throw e;return}}async function Ht(e,t){if(e){if(t?.signal.aborted)throw M(t.signal);try{let n=await ne(e);if(t?.signal.aborted)throw M(t.signal);return n}catch{if(t?.signal.aborted)throw M(t.signal);return e}}}function M(e){return new S({kind:`cancelled`,reason:typeof e.reason==`string`?e.reason:void 0})}async function Ut(e,t,n){return He(r=>Wt(e,t,n,r))}function Wt(e,t,n,r){let i=t?`${e}@${t}`:e,a=O(n);return D([`npm`,`install`,`-g`,i,...a?[`--registry`,a]:[]],r,`npm install failed`)}function Gt(e,t,n,r,i){let a=O(r);return D(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...a?[`--registry`,a]:[]]:[`npm`,`update`,`-g`,e,...a?[`--registry`,a]:[]],i,`npm update failed`)}function Kt(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):D(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e],n,`npm batch update failed`)}function qt(e,t){return D([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function Jt(e,t){try{let n=w([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{detached:t!==void 0&&process.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:r}=t?await E(n,t):await T(n);if(!r.trim())return{presence:`unknown`};try{let t=JSON.parse(r);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=Zt(r,e);return t?{presence:`present`,version:t}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch(e){if(C(e))throw e;return{presence:`unknown`}}}async function Yt(e,t){return(await Jt(e,t)).presence}async function Xt(e,t){return(await Jt(e,t)).version}function Zt(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}const N={additionalProperties:!1,properties:{action:{type:`string`},data:{type:`object`},error:{additionalProperties:!1,properties:{code:{type:`string`},message:{type:`string`}},required:[`code`,`message`],type:`object`},exitCode:{type:`integer`},meta:{additionalProperties:!1,properties:{mode:{type:`string`},runId:{type:`string`},schemaVersion:{type:`string`},source:{type:`string`},fetchedAt:{type:`string`},staleAfter:{type:`string`},timestamp:{type:`string`},version:{type:`string`}},required:[`mode`,`runId`,`schemaVersion`,`timestamp`,`version`],type:`object`},ok:{type:`boolean`},target:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},warnings:{items:{additionalProperties:!1,properties:{code:{type:`string`},message:{type:`string`}},required:[`code`,`message`],type:`object`},type:`array`}},required:[`action`,`error`,`meta`,`ok`,`warnings`],type:`object`},P={additionalProperties:!1,properties:{action:{type:`string`},data:{type:`object`},meta:{additionalProperties:!1,properties:{mode:{type:`string`},runId:{type:`string`},schemaVersion:{type:`string`},source:{type:`string`},fetchedAt:{type:`string`},staleAfter:{type:`string`},timestamp:{type:`string`},version:{type:`string`}},required:[`mode`,`runId`,`schemaVersion`,`timestamp`,`version`],type:`object`},target:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},type:{type:`string`}},required:[`action`,`meta`,`type`],type:`object`},F={additionalProperties:!1,properties:{available:{type:`boolean`},reason:{type:`string`}},required:[`available`],type:`object`},Qt={brew:F,bun:F,cargo:F,deno:F,mise:F,npm:F,pip:F,uv:F,winget:F},$t=[`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`],en=[{dataSchema:{additionalProperties:!1,properties:{agents:{items:{type:`string`},type:`array`},features:{additionalProperties:!1,properties:{assumeYes:{type:`boolean`},cacheBypass:{type:`boolean`},cacheRefresh:{type:`boolean`},channels:{items:{type:`string`},type:`array`},colorModes:{items:{type:`string`},type:`array`},dryRun:{type:`boolean`},execInstallPolicies:{items:{type:`string`},type:`array`},freshnessMetadata:{type:`boolean`},idempotencyKey:{type:`boolean`},logLevels:{items:{type:`string`},type:`array`},quietLogs:{type:`boolean`},selfUpgrade:{type:`boolean`},timeout:{type:`boolean`}},required:[`assumeYes`,`cacheBypass`,`cacheRefresh`,`channels`,`colorModes`,`dryRun`,`execInstallPolicies`,`freshnessMetadata`,`idempotencyKey`,`logLevels`,`quietLogs`,`selfUpgrade`,`timeout`],type:`object`},installers:{additionalProperties:!1,properties:Qt,required:$t,type:`object`},outputModes:{items:{type:`string`},type:`array`},platform:{additionalProperties:!1,properties:{arch:{type:`string`},os:{type:`string`}},required:[`arch`,`os`],type:`object`}},required:[`agents`,`features`,`installers`,`outputModes`,`platform`],type:`object`},description:`Environment and surface capabilities`,envelopeSchema:N,name:`capabilities`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{commands:{items:{additionalProperties:!1,properties:{flags:{items:{type:`string`},type:`array`},name:{type:`string`},outputSchemaRef:{type:`string`},stability:{type:`string`},summary:{type:`string`}},required:[`flags`,`name`,`outputSchemaRef`,`stability`,`summary`],type:`object`},type:`array`}},required:[`commands`],type:`object`},description:`Stable command catalog`,envelopeSchema:N,name:`commands`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{action:{type:`string`},config:{type:`object`},key:{type:`string`},value:{type:[`number`,`string`]}},required:[`action`],type:`object`},description:`Configuration read or mutation result`,envelopeSchema:N,name:`config`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agents:{items:{additionalProperties:!1,properties:{displayName:{type:`string`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},outdated:{type:`boolean`},sourceLabel:{type:`string`}},required:[`displayName`,`lifecycle`,`outdated`,`sourceLabel`],type:`object`},type:`array`},installers:{additionalProperties:!1,properties:{brew:{type:`boolean`},bun:{type:`boolean`},cargo:{type:`boolean`},deno:{type:`boolean`},mise:{type:`boolean`},npm:{type:`boolean`},pip:{type:`boolean`},uv:{type:`boolean`},winget:{type:`boolean`}},required:$t,type:`object`},issues:{items:{additionalProperties:!1,properties:{blocking:{type:`boolean`},category:{type:`string`},code:{type:`string`},docsRef:{type:`string`},message:{type:`string`},severity:{type:`string`},subject:{additionalProperties:!1,properties:{kind:{type:`string`},name:{type:`string`}},required:[`kind`],type:`object`},suggestedAction:{type:`string`},suggestedCommands:{items:{type:`string`},type:`array`}},required:[`blocking`,`category`,`code`,`message`,`severity`,`subject`,`suggestedAction`,`suggestedCommands`],type:`object`},type:`array`},self:{additionalProperties:!1,properties:{canAutoUpdate:{type:`boolean`},currentVersion:{type:`string`},installSource:{type:`string`},latestVersion:{type:`string`},outdated:{type:`boolean`},recoveryHint:{type:`string`}},required:[`canAutoUpdate`,`currentVersion`,`installSource`,`outdated`],type:`object`}},required:[`agents`,`installers`,`issues`,`self`],type:`object`},description:`Diagnostic state and remediation guidance for the current environment`,envelopeSchema:N,name:`doctor`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{binaryName:{type:`string`},displayName:{type:`string`},name:{type:`string`}},required:[`name`],type:`object`},execution:{additionalProperties:!1,properties:{args:{items:{type:`string`},type:`array`},installGuidance:{additionalProperties:!1,properties:{docsRef:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},suggestedAction:{type:`string`},suggestedEnsureCommand:{type:`string`},suggestedExecCommand:{type:`string`}},required:[`docsRef`,`installMethods`,`suggestedAction`,`suggestedEnsureCommand`,`suggestedExecCommand`],type:`object`},installPolicy:{type:`string`},installed:{type:`boolean`},interactive:{type:`boolean`},launched:{type:`boolean`}},required:[`args`,`installPolicy`,`installed`,`interactive`,`launched`],type:`object`}},required:[`agent`,`execution`],type:`object`},description:`Preflight contract for managed agent execution`,envelopeSchema:N,name:`exec`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},installState:{type:`object`},installed:{type:`boolean`}},required:[`agent`,`changed`,`installed`],type:`object`},description:`Ensure result for an agent`,envelopeSchema:N,name:`ensure`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{aliases:{items:{type:`string`},type:`array`},binaryName:{type:`string`},displayName:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},name:{type:`string`},packageName:{type:`string`},selfUpdateCommands:{items:{type:`string`},type:`array`}},required:[`aliases`,`binaryName`,`displayName`,`installMethods`,`name`,`selfUpdateCommands`],type:`object`},inspection:{additionalProperties:!1,properties:{binaryPath:{type:`string`},installed:{type:`boolean`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},sourceLabel:{type:`string`}},required:[`installed`,`lifecycle`],type:`object`}},required:[`agent`,`inspection`],type:`object`},description:`Human-friendly details for an agent`,envelopeSchema:N,name:`info`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},capabilities:{type:`object`},inspection:{type:`object`}},required:[`agent`,`capabilities`,`inspection`],type:`object`},description:`Structured inspection result for an agent`,envelopeSchema:N,name:`inspect`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},installState:{type:`object`},installed:{type:`boolean`},results:{items:{additionalProperties:!1,properties:{agent:{type:`object`},changed:{type:`boolean`},error:{type:`object`},input:{type:`string`},installState:{type:`object`},installed:{type:`boolean`},ok:{type:`boolean`},status:{type:`string`},warnings:{items:{type:`object`},type:`array`}},required:[`agent`,`changed`,`input`,`installed`,`ok`,`status`,`warnings`],type:`object`},type:`array`},scope:{type:`string`},summary:{type:`object`}},type:`object`},description:`Install result for one or more agents`,envelopeSchema:N,name:`install`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agents:{items:{additionalProperties:!1,properties:{binaryName:{type:`string`},displayName:{type:`string`},installed:{type:`boolean`},installedVersion:{type:`string`},latestVersion:{type:`string`},lifecycle:{type:`string`},name:{type:`string`},sourceLabel:{type:`string`},updateLabel:{type:`string`}},required:[`binaryName`,`displayName`,`installed`,`lifecycle`,`name`,`sourceLabel`,`updateLabel`],type:`object`},type:`array`}},required:[`agents`],type:`object`},description:`Supported agent catalog`,envelopeSchema:N,name:`list`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{type:`object`},resolution:{additionalProperties:!1,properties:{binaryPath:{type:`string`},installGuidance:{additionalProperties:!1,properties:{docsRef:{type:`string`},installMethods:{items:{additionalProperties:!1,properties:{command:{type:`string`},label:{type:`string`},type:{type:`string`}},required:[`command`,`label`,`type`],type:`object`},type:`array`},suggestedAction:{type:`string`},suggestedEnsureCommand:{type:`string`}},required:[`docsRef`,`installMethods`,`suggestedAction`,`suggestedEnsureCommand`],type:`object`},installed:{type:`boolean`},installSource:{type:`string`},installedVersion:{type:`string`},lifecycle:{type:`string`},sourceLabel:{type:`string`},suggestedLaunchCommand:{items:{type:`string`},type:`array`}},required:[`binaryPath`,`installed`,`installSource`,`lifecycle`,`sourceLabel`,`suggestedLaunchCommand`],type:`object`}},required:[`agent`,`resolution`],type:`object`},description:`Resolved executable entrypoint for an agent`,envelopeSchema:N,name:`resolve`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{commands:{items:{additionalProperties:!1,properties:{dataSchema:{type:`object`},description:{type:`string`},envelopeSchema:{type:`object`},name:{type:`string`},ndjsonEventSchema:{type:`object`}},required:[`dataSchema`,`description`,`envelopeSchema`,`name`],type:`object`},type:`array`}},required:[`commands`],type:`object`},description:`Structured schema catalog`,envelopeSchema:N,name:`schema`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{results:{items:{additionalProperties:!1,properties:{displayName:{type:`string`},hint:{type:`string`},installedVersion:{type:`string`},latestVersion:{type:`string`},message:{type:`string`},name:{type:`string`},resource:{type:`string`},status:{type:`string`},strategy:{type:`string`}},required:[`displayName`,`name`,`status`],type:`object`},type:`array`},scope:{type:`string`}},required:[`results`,`scope`],type:`object`},description:`Update result for one or all agents`,envelopeSchema:N,name:`update`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{agent:{additionalProperties:!1,properties:{displayName:{type:`string`},name:{type:`string`}},required:[`displayName`,`name`],type:`object`},changed:{type:`boolean`}},required:[`agent`,`changed`],type:`object`},description:`Uninstall result for an agent`,envelopeSchema:N,name:`uninstall`,ndjsonEventSchema:P},{dataSchema:{additionalProperties:!1,properties:{canAutoUpdate:{type:`boolean`},channel:{type:`string`},currentVersion:{type:`string`},installSource:{type:`string`},latestVersion:{type:`string`},recoveryHint:{type:`string`},status:{type:`string`}},required:[`canAutoUpdate`,`channel`,`currentVersion`,`installSource`,`status`],type:`object`},description:`Quantex self-upgrade status`,envelopeSchema:N,name:`upgrade`,ndjsonEventSchema:P}],tn=[{description:`Output structured JSON`,flags:`--json`,id:`json`,value:`boolean`},{description:`Output mode: human, json, or ndjson`,flags:`--output <mode>`,id:`output`,value:`string`},{description:`Disable interactive prompts and confirmations`,flags:`--non-interactive`,id:`nonInteractive`,value:`boolean`},{description:`Automatically accept safe default confirmations`,flags:`--yes`,id:`yes`,value:`boolean`},{description:`Suppress non-essential human logs`,flags:`--quiet`,id:`quiet`,value:`boolean`},{description:`Color mode: auto, always, or never`,flags:`--color <mode>`,id:`color`,value:`string`},{description:`Log level: silent, error, warn, info, or debug`,flags:`--log-level <level>`,id:`logLevel`,value:`string`},{description:`Show what would happen without making changes`,flags:`--dry-run`,id:`dryRun`,value:`boolean`},{description:`Refresh cached version metadata before returning results`,flags:`--refresh`,id:`refresh`,value:`boolean`},{commanderProperty:`cache`,description:`Bypass the local version cache for this command`,flags:`--no-cache`,id:`noCache`,negateCommanderValue:!0,value:`boolean`},{description:`Attach a run id to structured output and logs`,flags:`--run-id <id>`,id:`runId`,value:`string`},{description:`Deduplicate repeated mutating requests by client-supplied key`,flags:`--idempotency-key <key>`,id:`idempotencyKey`,value:`string`},{description:`Abort a command after the given duration, e.g. 500ms, 30s, 5m`,flags:`--timeout <duration>`,id:`timeout`,value:`string`}],nn=new Map(tn.map(e=>[e.id,e])),rn=new Map(en.map(e=>[e.name,e])),I=[`json`,`output`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],an=[`json`,`output`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],on=[L({aliases:[],description:`查看当前环境与 surface 能力`,effects:[`filesystem`,`network`,`process`],globalOptions:[`json`,`output`,`nonInteractive`,`quiet`,`color`,`logLevel`,`refresh`,`noCache`,`timeout`],name:`capabilities`,summary:`Return environment and surface capabilities`}),L({aliases:[],description:`查看命令目录与稳定能力`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`commands`,summary:`Return the stable command catalog`}),L({aliases:[],arguments:[{description:`Action: get, set, reset`,name:`action`,syntax:`[action]`},{description:`Config key`,name:`key`,syntax:`[key]`},{description:`Config value`,name:`value`,syntax:`[value]`}],catalogTokens:[`get`,`set`,`reset`],description:`配置管理`,effects:[`filesystem`,`mutation`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`config`,summary:`Read and modify Quantex configuration`}),L({aliases:[],description:`检查环境`,effects:[`filesystem`,`network`,`process`],globalOptions:I,name:`doctor`,summary:`Diagnose the current environment and installed tools`}),L({aliases:[],allowUnknownOptions:!0,arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`},{description:`Arguments passed through to the agent`,name:`args`,syntax:`[args...]`}],description:`以显式策略启动 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:[`nonInteractive`,`yes`,`quiet`,`color`,`logLevel`,`dryRun`,`output`],name:`exec`,options:[{defaultValue:`never`,description:`Install policy: never, if-missing, always`,flags:`--install <policy>`,id:`install`,value:`string`}],summary:`Run an agent with explicit install policy`}),L({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`确保指定 agent 已安装`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:an,name:`ensure`,summary:`Ensure an agent is installed`}),L({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 详细信息`,effects:[`filesystem`,`network`,`process`],globalOptions:I,name:`info`,summary:`Show human-friendly agent details`}),L({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`查看 agent 结构化状态`,effects:[`filesystem`,`network`,`process`],globalOptions:I,name:`inspect`,summary:`Return structured agent state`}),L({aliases:[`i`],arguments:[{description:`Agent names or aliases`,name:`agents`,syntax:`<agents...>`}],description:`安装指定 agent`,effects:[`filesystem`,`interaction`,`mutation`,`network`,`process`],globalOptions:an,name:`install`,summary:`Install one or more agents`}),L({aliases:[`ls`],description:`列出所有支持的 agent`,effects:[`filesystem`,`network`,`process`],globalOptions:I,name:`list`,summary:`List supported agents`}),L({aliases:[],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`解析 agent 可执行入口`,effects:[`filesystem`,`network`,`process`],globalOptions:I,name:`resolve`,summary:`Resolve an agent executable entrypoint`}),L({aliases:[],arguments:[{description:`Optional command name`,name:`command`,syntax:`[command]`}],description:`查看结构化输出 schema`,effects:[],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`timeout`],name:`schema`,summary:`Return structured output schemas`}),L({aliases:[`u`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`[agent]`}],description:`更新指定 agent`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`update`,options:[{description:`Update all installed agents`,flags:`--all`,id:`all`,value:`boolean`}],summary:`Update one or all agents`}),L({aliases:[`rm`],arguments:[{description:`Agent name or alias`,name:`agent`,syntax:`<agent>`}],description:`卸载指定 agent`,effects:[`filesystem`,`mutation`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`timeout`,`idempotencyKey`],name:`uninstall`,summary:`Uninstall an agent`}),L({aliases:[],description:`升级 Quantex CLI`,effects:[`filesystem`,`mutation`,`network`,`process`],globalOptions:[`json`,`output`,`quiet`,`color`,`logLevel`,`dryRun`,`refresh`,`noCache`,`timeout`,`idempotencyKey`],name:`upgrade`,options:[{description:`Only check whether an update is available`,flags:`--check`,id:`check`,value:`boolean`},{description:`Update channel: stable or beta`,flags:`--channel <channel>`,id:`channel`,value:`string`}],summary:`Upgrade Quantex CLI itself`})];function sn(){return on}function cn(){return tn}function ln(e){let t={...e};for(let n of tn){let r=n.commanderProperty??n.id;r in e&&(t[n.id]=n.negateCommanderValue?e[r]===!1:e[r],r!==n.id&&delete t[r])}return t}function un(e){return{flags:pn(e),name:e.name,outputSchemaRef:`#/commands/${e.schema.name}`,stability:e.stability,summary:e.summary}}function dn(e,t){let n=new Set,r=new Set;for(let t of e){if(n.has(t.name))throw Error(`Duplicate command name: ${t.name}`);n.add(t.name)}for(let t of e){let e=new Set,i=new Set,a=new Set,o=new Set;for(let e of t.aliases){if(n.has(e))throw Error(`Command alias collides with command name: ${e}`);if(r.has(e))throw Error(`Duplicate command alias: ${e}`);r.add(e)}for(let n of t.effects){if(e.has(n))throw Error(`Duplicate command effect: ${n}`);e.add(n)}for(let[e,n]of t.arguments.entries()){if(i.has(n.name))throw Error(`Duplicate command argument: ${t.name} ${n.name}`);if(i.add(n.name),n.syntax.includes(`...`)&&e!==t.arguments.length-1)throw Error(`Variadic command argument must be last: ${t.name} ${n.name}`)}let s=new Set;for(let e of t.globalOptions){let n=nn.get(e);if(!n)throw Error(`Unknown global option: ${t.name} ${e}`);let r=R(n.flags);if(s.has(r))throw Error(`Duplicate command global option: ${t.name} ${r}`);s.add(r)}for(let e of t.options){let n=R(e.flags);if(a.has(n))throw Error(`Duplicate command option: ${t.name} ${n}`);if(o.has(e.id))throw Error(`Duplicate command option id: ${t.name} ${e.id}`);if(s.has(n))throw Error(`Command option duplicates global option: ${t.name} ${n}`);mn(e,t.name),a.add(n),o.add(e.id)}if((t.globalOptions.includes(`dryRun`)||t.globalOptions.includes(`idempotencyKey`)||t.options.some(e=>e.id===`dryRun`||e.id===`idempotencyKey`))&&!e.has(`mutation`)){let e=t.globalOptions.includes(`dryRun`)?`--dry-run`:`--idempotency-key`;throw Error(`Command effect mismatch: ${t.name} exposes ${e} without mutation`)}let c=pn(t);if(c.length!==t.flags.length||c.some((e,n)=>e!==t.flags[n]))throw Error(`Command discovery option mismatch: ${t.name}`)}for(let t of e){if(!n.has(t.handlerId))throw Error(`Unresolved command handler: ${t.handlerId}`);if(!n.has(t.presenterId))throw Error(`Unresolved command presenter: ${t.presenterId}`)}let i=new Set(t);for(let t of e){if(!i.has(t.schemaName))throw Error(`Missing command schema: ${t.schemaName}`);if(t.schema.name!==t.schemaName)throw Error(`Command schema mismatch: ${t.name} ${t.schema.name}`)}}function L(e){let t=fn(e.name),n={...e,arguments:e.arguments??[],catalogTokens:e.catalogTokens??[],flags:[],handlerId:e.name,options:e.options??[],presenterId:e.name,schema:t,schemaName:e.name,stability:`stable`};return{...n,flags:pn(n)}}function fn(e){let t=rn.get(e);if(!t)throw Error(`Missing command schema: ${e}`);return t}function pn(e){return[...e.catalogTokens,...e.options.map(e=>R(e.flags)),...e.globalOptions.map(t=>{let n=nn.get(t);if(!n)throw Error(`Unknown global option: ${e.name} ${t}`);return R(n.flags)})]}function R(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Command option requires a long flag: ${e}`);return t[0]}function mn(e,t){let n=e.flags.includes(`<`)||e.flags.includes(`[`);if(e.value===`string`!==n)throw Error(`Command option value mismatch: ${t} ${R(e.flags)}`);if(e.value===`boolean`&&typeof e.defaultValue==`string`)throw Error(`Command option default mismatch: ${t} ${R(e.flags)}`)}const hn=new Map(sn().map(e=>[e.name,yn(e.presenterId)]));function gn(e){return hn.get(e)}function _n(e,t,n,r,i,a){if(t===`json`){i(e?.serializeJson(n)??JSON.stringify(n,null,2));return}if(t===`ndjson`){a(e?.toResultEvent(n)??bn(n));return}e?e.presentHuman(n,r):r(n)}function vn(e,t,n,r){if(t===`ndjson`)return r(e?.toEvent(n)??n)}function yn(e){return{presenterId:e,presentHuman:(e,t)=>t(e),serializeJson:e=>JSON.stringify(e,null,2),toEvent:e=>e,toResultEvent:bn}}function bn(e){return{action:e.action,data:e,target:e.target,type:`result`}}const z=`quantex-cli`,xn=`https://github.com/Drswith/quantex-cli`,Sn=`1.2.0`;function Cn(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function wn(e=n.execPath){if(u(Cn(e)).endsWith(`.exe`))return`quantex-windows-x64.exe`;if(n.platform===`darwin`)return n.arch===`arm64`?`quantex-darwin-arm64`:`quantex-darwin-x64`;if(n.platform===`linux`)return n.arch===`arm64`?`quantex-linux-arm64`:`quantex-linux-x64`}function Tn(e=n.execPath){let t=wn(e);if(t)return`${xn}/releases/latest/download/${t}`}function En(e,t,r=n.env){return e||(r.QUANTEX_UPDATE_CHANNEL===`beta`?`beta`:r.QUANTEX_UPDATE_CHANNEL===`stable`?`stable`:t===`beta`?`beta`:`stable`)}async function Dn(e,t,n){let r=await Ct(await On(e,t,n),`self:manifest:${e}`,{context:t,networkPort:n});if(!r)throw Error(`Failed to download release manifest.`);return r}async function On(e,t,n){if(e===`stable`)return`${xn}/releases/latest/download/manifest.json`;let r=(await kn(e,t,n)).assets.find(e=>e.name===`manifest.json`);if(!r?.browser_download_url)throw Error(`No manifest.json asset was found for the ${e} release channel.`);return r.browser_download_url}async function kn(e,t,n){let r=jn();if(!r)throw Error(`Failed to resolve the GitHub repository slug for Quantex releases.`);let i=await Ct(`https://api.github.com/repos/${r}/releases?per_page=20`,`self:github-releases`,{context:t,networkPort:n});if(!i)throw Error(`Failed to query GitHub releases.`);let a=i.find(t=>e===`beta`?t.prerelease:!t.prerelease);if(!a)throw Error(`No GitHub release was found for the ${e} channel.`);return a}function An(e,t=n.execPath){let r=n.platform,i=n.arch===`arm64`?`arm64`:`x64`,a=wn(t);return e.assets.find(e=>e.platform===r&&e.arch===i&&(!a||e.name===a))}function jn(){return xn.match(/github\.com\/([^/]+\/[^/]+)$/)?.[1]}var Mn=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 Nn(e){return e instanceof Mn}function Pn(e){let t=e.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),n=t.length>0?t:[`default`],r=n.slice(0,-1),i=`${n.at(-1)}.lock`;return p(k(),`locks`,...r,i)}async function B(e){let t=Pn(e.scope);return await g(f(t),{recursive:!0}),await Fn(e.resource,t),async()=>{await v(t,{force:!0,recursive:!0})}}async function Fn(e,t){try{c(t,{recursive:!1}),In(t);return}catch(e){if(!Vn(e))throw e}if(!await Ln(t))throw new Mn(e,t);try{c(t,{recursive:!1}),In(t)}catch(n){throw Vn(n)?new Mn(e,t):n}}function In(e){l(p(e,`owner.json`),`${JSON.stringify({pid:n.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function Ln(e){let t;try{t=await Rn(e)}catch{return!1}return t&&Bn(t.pid)?!1:(await v(e,{force:!0,recursive:!0}),!0)}async function Rn(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await zn(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await zn(e)}async function zn(e){try{let t=await _(p(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(Hn(e))return;throw e}}function Bn(e){try{return n.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function Vn(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function Hn(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Un(e,t){let n=await B(e);try{return await t()}finally{await n()}}const Wn=Object.freeze([`bun`,`npm`,`brew`,`cargo`,`deno`,`mise`,`pip`,`uv`,`winget`]);function Gn(e){return Wn.includes(e)}var V=class extends Error{constructor(e){super(e),this.name=`StateSchemaError`}};const Kn=new Set([`binary`,`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`script`,`uv`,`winget`]);function qn(){return{installedAgents:{},lifecycleReceipts:{},schemaVersion:2,self:{}}}function H(e){if(!W(e))throw new V(`root value must be an object.`);let t=e.schemaVersion===void 0?`legacy`:`current`;if(t===`current`&&e.schemaVersion!==2)throw new V(`unsupported schemaVersion "${String(e.schemaVersion)}".`);return{document:{installedAgents:Qn(e.installedAgents),lifecycleReceipts:t===`current`?Zn(e.lifecycleReceipts):{},schemaVersion:2,self:er(e.self)},source:t}}function Jn(e){return{installedAgents:e.installedAgents,self:e.self}}function Yn(e,t){let n=H(t).document;return{installedAgents:n.installedAgents,lifecycleReceipts:e.lifecycleReceipts,schemaVersion:2,self:n.self}}function Xn(e,t){if(!W(t))throw new V(`lifecycle receipt "${e}" must be an object.`);if(t.kind!==`lifecycle-receipt`)throw new V(`lifecycle receipt "${e}" has an invalid kind.`);if(t.schemaVersion!==1)throw new V(`lifecycle receipt "${e}" has an unsupported schemaVersion.`);if(!U(t.targetId)||t.targetId!==e)throw new V(`lifecycle receipt "${e}" has an invalid targetId.`);if(!U(t.providerId))throw new V(`lifecycle receipt "${e}" has an invalid providerId.`);if(!U(t.providerTargetId))throw new V(`lifecycle receipt "${e}" has an invalid providerTargetId.`);if(t.providerTargetKind!==void 0&&!rr(t.providerTargetKind))throw new V(`lifecycle receipt "${e}" has an invalid providerTargetKind.`);if(!ar(t.verifiedAt))throw new V(`lifecycle receipt "${e}" has an invalid verifiedAt.`);return{...U(t.executableName)?{executableName:t.executableName}:{},...U(t.executablePath)?{executablePath:t.executablePath}:{},kind:`lifecycle-receipt`,providerId:t.providerId,providerTargetId:t.providerTargetId,...rr(t.providerTargetKind)?{providerTargetKind:t.providerTargetKind}:{},schemaVersion:1,targetId:e,verifiedAt:t.verifiedAt,...U(t.version)?{version:t.version}:{}}}function Zn(e){if(!W(e))throw new V(`lifecycleReceipts must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Xn(e,t)]))}function Qn(e){if(e===void 0)return{};if(!W(e))throw new V(`installedAgents must be an object.`);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,$n(e,t)]))}function $n(e,t){if(!W(t))throw new V(`installed agent "${e}" must be an object.`);if(t.agentName!==e)throw new V(`installed agent "${e}" has an invalid agentName.`);if(!tr(t.installType))throw new V(`installed agent "${e}" has an invalid installType.`);let n={agentName:e,installType:t.installType};if(typeof t.binaryName==`string`&&(n.binaryName=t.binaryName),Array.isArray(t.packageInstallArgs)&&t.packageInstallArgs.every(or)&&(n.packageInstallArgs=t.packageInstallArgs),typeof t.packageName==`string`){if(t.packageName.length===0&&Gn(t.installType))throw new V(`installed agent "${e}" has an empty packageName.`);n.packageName=t.packageName}return nr(t.packageTargetKind)&&(n.packageTargetKind=t.packageTargetKind),typeof t.command==`string`&&(n.command=t.command),n}function er(e){if(!W(e))return{};let t={...e};return ir(e.installSource)?t.installSource=e.installSource:delete t.installSource,typeof e.updateNoticeAt==`string`?t.updateNoticeAt=e.updateNoticeAt:delete t.updateNoticeAt,typeof e.updateNoticeVersion==`string`?t.updateNoticeVersion=e.updateNoticeVersion:delete t.updateNoticeVersion,t}function tr(e){return typeof e==`string`&&Kn.has(e)}function nr(e){return e===`package`||e===`cask`||e===`id`}function rr(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function ir(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function U(e){return typeof e==`string`&&e.length>0}function ar(e){return U(e)&&Number.isFinite(Date.parse(e))}function or(e){return typeof e==`string`}function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var sr=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}},cr=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:G(e)}async save(e){let t=H(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}`,c=`${i}.restore-${a}`,l=await this.readOptional(i),u=l===void 0?void 0:H(G(l)),d=`${JSON.stringify(t.document,null,2)}\n`,f=!1;await this.options.fileSystem.makeDirectory(r);try{l!==void 0&&u?.source===`legacy`&&(await this.options.fileSystem.writeText(o,l),await this.validateBackup(o,l),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,l)),await this.options.fileSystem.writeText(s,d),ur(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),f=!0,ur(await this.options.fileSystem.readText(i))}catch(e){let t;try{f&&await this.restoreOriginal(l,c,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,s,c)}throw t===void 0?e:new sr({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,s,c)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(dr(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.`);H(G(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.`);H(G(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},lr=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?qn():H(e).document}async loadProjection(){return Jn(await this.loadDocument())}async saveProjection(e){let t=Yn(await this.loadDocument(),e);await this.persistence.save(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=Xn(e.targetId,e),n=await this.loadDocument(),r=H({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.persistence.save(r.document)}async setAgentLifecycleEvidence(e,t){let n=Xn(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=H({...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.persistence.save(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.persistence.save({...t,lifecycleReceipts:n})}};function G(e){return JSON.parse(e)}function ur(e){if(H(G(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function dr(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}var K=class extends Error{constructor(e,t){super(e,t),this.name=`StateFileError`}};const fr={installedAgents:{},self:{}};function pr(){return p(k(),`state.json`)}async function mr(){return Or()}async function hr(e){let t=await B({resource:`state`,scope:[`state`]});try{await kr(e)}finally{await t()}}async function gr(e){return(await mr()).installedAgents[e]}async function _r(e){try{return await q().getReceipt(e)}catch(e){throw e instanceof K?e:new K(`Failed to read Quantex state file.`,{cause:e})}}async function vr(e){let t=await B({resource:`state`,scope:[`state`]});try{await q().setReceipt(e)}catch(e){throw e instanceof K?e:new K(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}async function yr(e,t){let n=await B({resource:`state`,scope:[`state`]});try{await q().setAgentLifecycleEvidence(e,t)}catch(e){throw e instanceof K?e:new K(`Failed to write Quantex state file.`,{cause:e})}finally{await n()}}async function br(e){let t=await B({resource:`state`,scope:[`state`]});try{await q().removeReceipt(e)}catch(e){throw e instanceof K?e:new K(`Failed to write Quantex state file.`,{cause:e})}finally{await t()}}const xr=Object.freeze({read:_r,remove:br,write:vr});async function Sr(e){await J(t=>{t.installedAgents[e.agentName]=e})}async function Cr(e){await J(t=>{delete t.installedAgents[e]})}async function wr(){return(await mr()).self}async function Tr(e){await J(t=>{t.self.installSource=e})}async function Er(){await J(e=>{delete e.self.installSource})}async function Dr(e,t){await J(n=>{n.self.updateNoticeVersion=e,n.self.updateNoticeAt=t})}async function Or(){try{return await q().loadProjection()}catch(e){if(jr(e))return{...fr};throw e instanceof K?e:e instanceof V?new K(`Failed to read Quantex state file: ${e.message}`,{cause:e}):new K(`Failed to read Quantex state file.`,{cause:e})}}async function kr(e){try{await q().saveProjection(e)}catch(e){throw e instanceof K?e:new K(`Failed to write Quantex state file.`,{cause:e})}}const Ar={async makeDirectory(e){await g(e,{recursive:!0})},async readText(e){return _(e,`utf8`)},async remove(e){await v(e,{force:!0})},async rename(e,t){await re(e,t)},async writeText(e,t){await ae(e,t,`utf8`)}};function q(){let e=pr();return new lr(new cr({backupFilePath:`${e}.v1.bak`,directoryPath:k(),fileSystem:Ar,stateFilePath:e,tempFileSuffix:String(n.pid)}))}function jr(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function J(e){let t=await B({resource:`state`,scope:[`state`]});try{let t=await Or();await e(t),await kr(t)}finally{await t()}}const Mr=`self:install-source`,Nr={clearInstallSource:Er,getSelfState:wr,setInstallSource:Tr};function Pr(e=Nr){return{async load(t){let n=Fr(t.key,t.signal);if(n)return n;try{let t=(await e.getSelfState()).installSource;return Lr(t===void 0?{kind:`missing`}:{kind:`found`,snapshot:{value:t}})}catch(e){return Rr(`Failed to read the persisted self install source.`,e)}},async remove(t){let n=Fr(t.key,t.signal);if(n)return n;try{return await e.clearInstallSource(),Lr(void 0)}catch(e){return Rr(`Failed to remove the persisted self install source.`,e)}},async save(t){let n=Fr(t.key,t.signal);if(n)return n;if(!Ir(t.value))return Y({kind:`invalid-data`,message:`The persisted self install source is invalid.`});try{return await e.setInstallSource(t.value),Lr({})}catch(e){return Rr(`Failed to persist the self install source.`,e)}}}}function Fr(e,t){if(t.aborted)return Y({kind:`cancelled`,message:`Self install-source persistence was cancelled.`});if(e!==`self:install-source`)return Y({kind:`invalid-data`,message:`Unsupported self persistence key "${e}".`})}function Ir(e){return e===`binary`||e===`bun`||e===`npm`||e===`source`||e===`unknown`}function Lr(e){return{kind:`success`,value:e}}function Y(e){return{error:e,kind:`failure`}}function Rr(e,t){return Y({details:{cause:t},kind:`failed`,message:e})}const zr=z,Br=`/node_modules/${zr}`;async function Vr(e){return Ur(e,!0)}async function Hr(e){return Ur(e,!1)}async function Ur(e,t){let r=await Xr(),i=n.execPath,a=r.foundPackageJson?Yr(r.packageRoot):Yr(``,i),o=e?.persistence??Pr(),s=e?.signal??new AbortController().signal,c=await qr(o,s),l=t?await Kr(c,a,{persistence:o,signal:s}):Wr(c,a),u=await A(),d=En(e?.updateChannel,u.selfUpdateChannel);return{canAutoUpdate:Gr(l),currentVersion:r.version||`1.2.0`,executablePath:i,installSource:l,packageRoot:r.packageRoot,updateChannel:d}}function Wr(e,t){return t===`unknown`?e??t:t}function Gr(e){return e===`binary`||e===`bun`||e===`npm`}async function Kr(e,t,n){if(t!==`unknown`&&e!==t){let e=await(n?.persistence??Pr()).save({key:Mr,signal:n?.signal??new AbortController().signal,value:t});return e.kind===`failure`&&Jr(e.error),t}return Wr(e,t)}async function qr(e,t){let n=await e.load({key:Mr,signal:t});if(n.kind===`failure`&&Jr(n.error),n.value.kind===`missing`)return;let r=n.value.snapshot.value;if(r===`binary`||r===`bun`||r===`npm`||r===`source`||r===`unknown`)return r;throw Error(`The persisted self install source is invalid.`)}function Jr(e){let t=e.details?.cause;throw t instanceof Error?t:e.kind===`cancelled`?new S({kind:`cancelled`,reason:e.message}):e.kind===`timed-out`?new S({kind:`timed-out`,timeoutMs:0}):Error(e.message)}function Yr(e,t=n.execPath){let r=$r(e);return r.includes(`/.bun/install/global/`)?`bun`:r.includes(Br)?`npm`:r?`source`:ei(t)?`binary`:`unknown`}async function Xr(e=import.meta.url){let t=ti(e),n=f(t);for(;;){let e=p(n,`package.json`),t=await Qr(e);if(t?.name===zr)return{foundPackageJson:!0,packageJsonPath:e,packageRoot:n,version:t.version??`1.2.0`};let r=f(n);if(r===n)break;n=r}return{foundPackageJson:!1,packageJsonPath:p(f(t),`package.json`),packageRoot:f(t),version:Sn}}function Zr(){return Sn}async function Qr(e){try{return JSON.parse(await _(e,`utf8`))}catch{return}}function $r(e){return e.replaceAll(`\\`,`/`).toLowerCase()}function ei(e){let t=u($r(e));return t!==`bun`&&t!==`bun.exe`}function ti(e){try{return se(e)}catch{return n.execPath}}async function ni(){try{return await B({resource:`self upgrade`,scope:[`self-upgrade`]})}catch(e){if(Nn(e))return;throw e}}function ri(){return{async acquire(e){if(e.signal.aborted)return X(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);if(e.scope.length!==1||e.scope[0]!==`self-upgrade`)return X(`unavailable`,`Unsupported self-upgrade lock scope: ${e.scope.join(`/`)}`);let t=await ni();if(!t)return X(`conflict`,`Another qtx upgrade is already running.`);if(e.signal.aborted)return await t(),X(`cancelled`,`Self-upgrade lock acquisition was cancelled.`);let n=!1;return{kind:`success`,value:{async release(){if(n)return{kind:`success`,value:void 0};n=!0;try{return await t(),{kind:`success`,value:void 0}}catch(e){return X(`failed`,e instanceof Error?e.message:`Failed to release self-upgrade lock.`)}}}}}}}function X(e,t){return{error:{kind:e,message:t},kind:`failure`}}async function ii(e,t,r=n.env,i=n.cwd()){if(e!==`bun`&&e!==`npm`)return;let a=O(r.QTX_SELF_UPDATE_REGISTRY);return a?{isOverride:!0,registry:a,source:`quantex-env`}:t.selfUpdateRegistry?{isOverride:!0,registry:t.selfUpdateRegistry,source:`quantex-config`}:await ai(e,r,i)||{isOverride:!1,registry:We,source:`fallback`}}async function ai(e,t,n){if(e===`bun`){let e=oi(t,[`BUN_CONFIG_REGISTRY`,`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(e)return{isOverride:!1,registry:e,source:`bun-env`};let r=await si(n,t);if(r)return{isOverride:!1,registry:r,source:`bunfig`}}let r=oi(t,[`NPM_CONFIG_REGISTRY`,`npm_config_registry`]);if(r)return{isOverride:!1,registry:r,source:`npm-env`};let i=await li(n,t);if(i)return{isOverride:!1,registry:i,source:`npmrc`}}function oi(e,t){for(let n of t){let t=O(e[n]);if(t)return t}}async function si(e,t){let n=fi(t),r=t.XDG_CONFIG_HOME,i=di(e,`bunfig.toml`),a=[p(n,`.bunfig.toml`),r?p(r,`.bunfig.toml`):void 0];if(i){let e=await ci(i);if(e)return e}for(let e of a){if(!e||!s(e))continue;let t=await ci(e);if(t)return t}}async function ci(e){try{return pi(await _(e,`utf8`))}catch{return}}async function li(e,t){let n=fi(t),r=di(e,`.npmrc`),i=p(n,`.npmrc`);if(r){let e=await ui(r);if(e)return e}if(s(i))return ui(i)}async function ui(e){try{let t=(await _(e,`utf8`)).split(`
7
+ `).map(e=>e.trim());for(let e=t.length-1;e>=0;--e){let n=t[e];if(!n||n.startsWith(`#`)||n.startsWith(`;`))continue;let r=n.match(/^registry\s*=\s*(.+)$/);if(!r?.[1])continue;let i=O(r[1]);if(i)return i}}catch{}}function di(e,t){let n=e;for(;;){let e=p(n,t);if(s(e))return e;let r=f(n);if(r===n)return;n=r}}function fi(e){return e.HOME||e.USERPROFILE||oe()}function pi(e){let t=mi(e,[/(?:^|\n)\s*install\.registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*install\.registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*install\s*=\s*\{[\s\S]*?\bregistry\s*=\s*["']([^"'#\n]+)["'][\s\S]*?\}/,/(?:^|\n)\s*install\s*=\s*\{[\s\S]*?\bregistry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["'][\s\S]*?\}[\s\S]*?\}/]);if(t)return O(t);let n=e.match(/(?:^|\n)\s*\[install\]\s*\n([\s\S]*?)(?=\n\s*\[[^\]]+\]|\s*$)/)?.[1];if(n)return O(mi(n,[/(?:^|\n)\s*registry\s*=\s*["']([^"'#\n]+)["']/,/(?:^|\n)\s*registry\s*=\s*\{\s*url\s*=\s*["']([^"'#\n]+)["']/]))}function mi(e,t){for(let n of t){let t=e.match(n)?.[1];if(t)return t}}function hi(e){return`self:update-metadata:${e.installSource}:${e.updateChannel}`}function gi(e){return{canAutoUpdate:!0,expiresAtMs:e.expiresAtMs,fetchedAtMs:e.fetchedAtMs,installSource:e.facts.installSource,schemaVersion:1,targetVersion:e.targetVersion,updateChannel:e.facts.updateChannel}}function _i(e,t){if(bi(e)&&e.schemaVersion===1&&!(e.canAutoUpdate!==!0||!t.facts.canAutoUpdate)&&!(e.installSource!==t.facts.installSource||e.updateChannel!==t.facts.updateChannel)&&!(typeof e.targetVersion!=`string`||dt(e.targetVersion,e.targetVersion)!==0)&&!(!xi(e.fetchedAtMs)||!xi(e.expiresAtMs))&&!(e.fetchedAtMs>t.nowMs||e.expiresAtMs<=t.nowMs||e.fetchedAtMs>=e.expiresAtMs))return e}async function vi(e){let t=await e.cache.read({key:hi(e.facts),signal:e.signal});if(!(t.kind===`failure`||t.value.kind===`miss`)&&!(t.value.expiresAtMs!==void 0&&t.value.expiresAtMs<=e.nowMs))return _i(t.value.value,e)}function yi(e){return e.cache.write({expiresAtMs:e.metadata.expiresAtMs,key:hi(e.metadata),signal:e.signal,value:e.metadata})}function bi(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function xi(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}async function Si(e,t,n){let r=await A();if(e.installSource===`binary`)try{let r=t?await Dn(e.updateChannel,t,n):await Dn(e.updateChannel,void 0,n),i=An(r,e.executablePath);return i?{binaryAsset:i,targetVersion:r.version}:{resolutionError:{detail:{channel:e.updateChannel},kind:`unsupported`,message:`No binary asset is available for the current platform on the ${e.updateChannel} channel.`}}}catch(t){if(C(t))throw t;return{resolutionError:{kind:`network`,message:`Failed to resolve the ${e.updateChannel} release manifest.`}}}let i=e.updateChannel===`beta`?`beta`:`latest`,a=await Bt(z,i,{...t?{context:t}:{},networkPort:n,registry:We});if(e.installSource===`bun`||e.installSource===`npm`){let o=await ii(e.installSource,r);return{managedRegistry:o?.registry,managedRegistryIsOverride:o?.isOverride??!1,packageTag:i,targetVersion:await Bt(z,i,{...t?{context:t}:{},networkPort:n,registry:o?.registry}),upstreamLatestVersion:a,verificationCommand:ki(e.packageRoot)}}return{packageTag:i,targetVersion:a,upstreamLatestVersion:a}}async function Z(e){let t=e?.facts??await Vr({persistence:e?.persistencePort,signal:e?.context?.signal,updateChannel:e?.updateChannel}),n=e?.target??await Si(t,e?.context,e?.networkPort),r=n.targetVersion?Rt(n.targetVersion,t.currentVersion):!1,i={facts:t,status:Ei(t,n,r),target:n,updateAvailable:r};if(e?.metadataCache&&t.canAutoUpdate&&n.targetVersion){let r=e.nowMs??Date.now(),i=e.metadataTtlMs??(await A()).versionCacheTtlHours*60*60*1e3;await yi({cache:e.metadataCache,metadata:gi({expiresAtMs:r+i,facts:t,fetchedAtMs:r,targetVersion:n.targetVersion}),signal:e.context?.signal??new AbortController().signal})}return i}function Ci(e){return{canAutoUpdate:e.facts.canAutoUpdate,currentVersion:e.facts.currentVersion,executablePath:e.facts.executablePath,installSource:e.facts.installSource,latestVersion:e.target.targetVersion,managedRegistry:e.target.managedRegistry,managedRegistryIsOverride:e.target.managedRegistryIsOverride,packageRoot:e.facts.packageRoot,recommendedUpgradeCommand:e.facts.canAutoUpdate?`quantex upgrade`:void 0,upstreamLatestVersion:e.target.upstreamLatestVersion,updateChannel:e.facts.updateChannel}}async function wi(e,t,n){if(!t.success||e.facts.installSource!==`bun`&&e.facts.installSource!==`npm`)return t;let r=await Di(e,n);if(!r)return{error:{kind:`verify`,message:`Managed self-upgrade finished but Quantex could not verify the installed version afterwards.`},installSource:e.facts.installSource,success:!1};let i=t.newVersion??e.target.targetVersion;return i&&r!==i?{error:{detail:{expectedVersion:i,observedVersion:r},kind:`verify`,message:`Managed self-upgrade installed version ${r}, but expected ${i}.`},installSource:e.facts.installSource,success:!1}:!i&&r===e.facts.currentVersion&&e.target.targetVersion!==void 0?{error:{detail:{observedVersion:r},kind:`verify`,message:`Managed self-upgrade completed without changing the installed Quantex version.`},installSource:e.facts.installSource,success:!1}:{...t,newVersion:r}}function Ti(e){let t={canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel},n={managedRegistry:e.managedRegistry,managedRegistryIsOverride:e.managedRegistryIsOverride,packageTag:e.updateChannel===`beta`?`beta`:`latest`,targetVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion,verificationCommand:ki(e.packageRoot)},r=e.latestVersion?Rt(e.latestVersion,e.currentVersion):!1;return{facts:t,status:Ei(t,n,r),target:n,updateAvailable:r}}function Ei(e,t,n){return e.canAutoUpdate?t.targetVersion&&!n?`up-to-date`:t.targetVersion?`update-available`:`check-unavailable`:`manual-required`}async function Di(e,t){let n=t?.process;if(n&&t){let r={...t,process:n};if(e.target.verificationCommand){let t=await Oi(e.target.verificationCommand,r);if(t)return t}return Oi([e.facts.executablePath,`--version`],r)}if(e.target.verificationCommand){let t=await zt(e.facts.executablePath,{command:e.target.verificationCommand});if(t)return t}return zt(e.facts.executablePath)}async function Oi(e,t){let n=await t.process.run({argv:e,signal:t.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:t.timeoutMs});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new S({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new S({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return}if(n.value.exitCode!==0||!n.value.stdout)return;let r=new TextDecoder().decode(n.value.stdout).trim().split(`
8
+ `)[0];if(r)return r.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/i)?.[1]??r}function ki(e){if(e)return[n.execPath,p(e,`dist`,`cli.mjs`),`--version`]}async function Ai(e,t,r,i,a=Pi(t),o){let s=o?.networkPort,c=s&&o?await Ni(e,{...o,networkPort:s}):await Mi(e);if(c.kind===`failure`)return c.result;let l=c.binary;ji(o);let d=await te(p(f(t),`.quantex-upgrade-`)),m=p(d,u(t)),h=`${t}.bak`,g=!1,_=!1;try{ji(o);let s=await Fi(t),c=Vi(l);if(c!==Hi(r))return $(`checksum`,`Checksum mismatch for ${e}. Expected ${Hi(r)}, got ${c}.`);if(await ae(m,l),ji(o),n.platform===`win32`){let e=Ii(m,t,h,d,i,a);return _=e.success,e}await ee(m,s),ji(o),await v(h,{force:!0}),await re(t,h),g=!0,await re(m,t);let u=await Bi(t,i,o);return u.success?(g=!1,await v(h,{force:!0}),{success:!0}):(await zi(h,t),g=!1,u)}catch(e){if(g){try{await zi(h,t)}catch{}g=!1}if(e instanceof S)throw e;return $(Ri(e),`Failed to replace the current Quantex binary.`,e)}finally{(n.platform!==`win32`||!_)&&await v(d,{recursive:!0,force:!0})}}function ji(e){if(e?.signal.aborted)throw new S({kind:`cancelled`,reason:e.signal.reason instanceof Error?e.signal.reason.message:String(e.signal.reason??``)})}async function Mi(e){let t;try{t=await fetch(e)}catch(t){return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,t)}}return t.ok?{binary:ce.from(await t.arrayBuffer()),kind:`success`}:{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${t.status}.`)}}async function Ni(e,t){let n=await t.networkPort.request({signal:t.signal,timeoutMs:t.timeoutMs,url:e});if(n.kind===`failure`){if(n.error.kind===`cancelled`)throw new S({kind:`cancelled`,reason:n.error.message});if(n.error.kind===`timed-out`)throw new S({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return{kind:`failure`,result:$(`network`,`Failed to download ${e}.`,n.error)}}return n.value.status<200||n.value.status>=300?{kind:`failure`,result:$(`network`,`Failed to download ${e}: HTTP ${n.value.status}.`)}:{binary:ce.from(n.value.body),kind:`success`}}function Pi(e){if(n.platform!==`win32`)return;let t=m.basename(e).toLowerCase();if(t===`qtx.exe`)return m.join(m.dirname(e),`quantex.exe`);if(t===`quantex.exe`)return m.join(m.dirname(e),`qtx.exe`)}async function Fi(e){try{return(await ie(e)).mode&511}catch{return 493}}function Ii(e,t,r,i,a,o){try{return w([`powershell.exe`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-WindowStyle`,`Hidden`,`-Command`,Li(e,t,r,i,n.pid,a,o)],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}).unref(),{success:!0}}catch(e){return $(`locked`,`Failed to schedule Windows binary replacement.`,e)}}function Li(e,t,n,r,i,a,o){let s=Q(e),c=Q(t),l=Q(n),u=Q(r),d=Q(a??``),f=Q(o??``);return[`$ErrorActionPreference = 'Stop'`,`$pidToWait = ${i}`,`$tempPath = '${s}'`,`$targetPath = '${c}'`,`$backupPath = '${l}'`,`$tempDir = '${u}'`,`$expectedVersion = '${d}'`,`$peerPath = '${f}'`,`while (Get-Process -Id $pidToWait -ErrorAction SilentlyContinue) { Start-Sleep -Milliseconds 200 }`,`$backupReady = $false`,`for ($attempt = 0; $attempt -lt 50; $attempt++) {`,` try {`,` if (Test-Path -LiteralPath $backupPath) { Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue }`,` Move-Item -LiteralPath $targetPath -Destination $backupPath -Force -ErrorAction Stop`,` $backupReady = $true`,` break`,` }`,` catch {`,` Start-Sleep -Milliseconds 200`,` }`,`}`,`if (-not $backupReady) {`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`try {`,` Move-Item -LiteralPath $tempPath -Destination $targetPath -Force`,`}`,`catch {`,` if (Test-Path -LiteralPath $backupPath) {`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force -ErrorAction SilentlyContinue`,` }`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,`}`,`if ($expectedVersion -ne '') {`,` $output = & $targetPath --version 2>$null`,` if ($LASTEXITCODE -ne 0 -or ($output -notmatch [regex]::Escape($expectedVersion))) {`,` Remove-Item -LiteralPath $targetPath -Force -ErrorAction SilentlyContinue`,` Move-Item -LiteralPath $backupPath -Destination $targetPath -Force`,` Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`,` exit 1`,` }`,`}`,`if ($peerPath -ne '') {`,` Copy-Item -LiteralPath $targetPath -Destination $peerPath -Force`,`}`,`Remove-Item -LiteralPath $backupPath -Force -ErrorAction SilentlyContinue`,`Remove-Item -LiteralPath $tempDir -Force -Recurse -ErrorAction SilentlyContinue`].join(`; `)}function Q(e){return e.replaceAll(`'`,`''`)}function $(e,t,n){return{error:{detail:n,kind:e,message:t},success:!1}}function Ri(e){let t=typeof e==`object`&&e&&`code`in e?String(e.code):``;return t===`EACCES`||t===`EPERM`?`permission`:t===`EBUSY`?`locked`:`unknown`}async function zi(e,t){await v(t,{force:!0}),await re(e,t)}async function Bi(e,t,n){if(!t)return{success:!0};try{if(n?.processPort){let r=await n.processPort.run({argv:[e,`--version`],signal:n.signal,stdio:[`ignore`,`pipe`,`ignore`],timeoutMs:n.timeoutMs});if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new S({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new S({kind:`timed-out`,timeoutMs:n.timeoutMs??0});return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,r.error)}let i=r.value.stdout?new TextDecoder().decode(r.value.stdout):``;return r.value.exitCode===0?i.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${r.value.exitCode} during verification.`)}let{exitCode:r,stdout:i}=await T(w([e,`--version`],{stdio:[`ignore`,`pipe`,`ignore`]}));return r===0?i.includes(t)?{success:!0}:$(`verify`,`The upgraded Quantex binary reported an unexpected version during verification.`):$(`verify`,`The upgraded Quantex binary exited with code ${r} during verification.`)}catch(e){if(e instanceof S)throw e;return $(`verify`,`Failed to execute the upgraded Quantex binary for verification.`,e)}}function Vi(t){return e(`sha256`).update(t).digest(`hex`)}function Hi(e){return e.trim().toLowerCase()}const Ui={source:`binary`,canHandle:e=>Wi(e)===`binary`,getRecoveryHint:(e,t)=>{let n=t?.error?.detail&&typeof t.error.detail==`object`&&`downloadUrl`in t.error.detail?String(t.error.detail.downloadUrl):Tn(e.executablePath);if(n)return t?.error?.kind===`locked`?`close other qtx processes and retry, or download and replace the binary from ${n}`:t?.error?.kind===`permission`?`check write permission for the current binary path, or download and replace the binary from ${n}`:t?.error?.kind===`network`?`check network access and retry, or download and replace the binary from ${n}`:`download and replace the binary from ${n}`},async upgrade(e,t){let n=e.target.binaryAsset;if(!n)return{error:e.target.resolutionError??{kind:`unsupported`,message:`No release artifact is available for the current platform and architecture.`},installSource:e.facts.installSource,success:!1};let r=Pi(e.facts.executablePath),i=t?await Ai(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r,{networkPort:t.network,processPort:t.process,signal:t.signal,timeoutMs:t.timeoutMs}):await Ai(n.downloadUrl,e.facts.executablePath,n.checksum,e.target.targetVersion??`latest`,r);return{...!i.success&&i.error?{...i,error:{...i.error,detail:{...typeof i.error.detail==`object`&&i.error.detail?i.error.detail:{},downloadUrl:n.downloadUrl}}}:i,installSource:e.facts.installSource,newVersion:i.success?e.target.targetVersion:void 0}}};function Wi(e){return`facts`in e?e.facts.installSource:e.installSource}async function Gi(e,t){return t.process?(await qi(e,t,{forwardPipedOutput:!0,stdio:t.stdio}))?.exitCode===0:!1}async function Ki(e,t,n){if(!await Gi(e,n))return!1;let r=await qi([`bun`,`pm`,`-g`,`untrusted`],n,{forwardPipedOutput:!1,stdio:[`ignore`,`pipe`,`pipe`]});return!r||r.exitCode!==0?!1:lt(r.stdout?new TextDecoder().decode(r.stdout):``).has(t)?Gi([`bun`,`pm`,`-g`,`trust`,t],n):!0}async function qi(e,t,n){if(!t.process)return;let r=await t.process.run({argv:e,forwardPipedOutput:n.forwardPipedOutput,signal:t.signal,stdio:n.stdio,timeoutMs:t.timeoutMs});if(r.kind===`success`)return r.value;if(r.error.kind===`cancelled`)throw new S({kind:`cancelled`,reason:r.error.message});if(r.error.kind===`timed-out`)throw new S({kind:`timed-out`,timeoutMs:t.timeoutMs??0})}const Ji={source:`bun`,canHandle:e=>Yi(e)===`bun`,getRecoveryHint:e=>`bun add -g ${z}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await Ki([`bun`,`add`,`-g`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[],`${z}@${n}`],z,t):await Ke(z,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${z} through Bun.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function Yi(e){return`facts`in e?e.facts.installSource:e.installSource}const Xi={source:`npm`,canHandle:e=>Zi(e)===`npm`,getRecoveryHint:e=>`npm install -g ${z}@${e.updateChannel===`beta`?`beta`:`latest`}`,async upgrade(e,t){let n=e.target.packageTag??(e.facts.updateChannel===`beta`?`beta`:`latest`),r=t?.process?await Gi([`npm`,`install`,`-g`,`${z}@${n}`,...e.target.managedRegistry?[`--registry`,e.target.managedRegistry]:[]],t):await Ut(z,n,e.target.managedRegistry);return{error:r?void 0:{kind:`unknown`,message:`Failed to update ${z} through npm.`},installSource:e.facts.installSource,newVersion:r?e.target.targetVersion:void 0,success:r}}};function Zi(e){return`facts`in e?e.facts.installSource:e.installSource}const Qi={source:`source`,canHandle:e=>{let t=`facts`in e?e.facts.installSource:e.installSource;return t===`source`||t===`unknown`},getRecoveryHint:()=>void 0,async upgrade(e){return{error:{kind:`unsupported`,message:`Install source "${e.facts.installSource}" does not support auto-update.`},installSource:e.facts.installSource,success:!1}}},$i=[Ji,Xi,Ui,Qi];function ea(e){return $i.find(t=>t.canHandle(e))??Qi}function ta(e,t,n=`stable`){return ea({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n})}function na(e,t,n=`stable`,r){return r?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:ta(e,t,n).getRecoveryHint({canAutoUpdate:e===`binary`||e===`bun`||e===`npm`,currentVersion:``,executablePath:t,installSource:e,packageRoot:``,updateChannel:n},r)}function ra(e,t){return t?.error?.kind===`locked`?`another qtx upgrade is already running; wait for it to finish and retry`:ea(e).getRecoveryHint(e,t)}async function ia(e){return Ci(await Z({updateChannel:e?.updateChannel}))}async function aa(e){let t=await Hr({updateChannel:e?.updateChannel});return Ci(await Z({context:e?.context,facts:t}))}async function oa(e,t={}){let n=await la(e),r=t.lockPort?await t.lockPort.acquire({resource:`self upgrade`,scope:[`self-upgrade`],signal:t.signal??new AbortController().signal,timeoutMs:t.timeoutMs}):await sa();if(r.kind===`failure`){if(r.error.kind===`cancelled`)throw new S({kind:`cancelled`});if(r.error.kind===`timed-out`)throw new S({kind:`timed-out`,timeoutMs:t.timeoutMs??0});return{error:{kind:r.error.kind===`conflict`?`locked`:`unknown`,message:r.error.message},installSource:n.facts.installSource,success:!1}}let i;try{let e=t.networkPort!==void 0||t.processPort!==void 0,r=t.signal??new AbortController().signal;i=await wi(n,await ea(n).upgrade(n,e?{network:t.networkPort,process:t.processPort,signal:r,stdio:t.stdio,timeoutMs:t.timeoutMs}:void 0),t.processPort?{process:t.processPort,signal:r,timeoutMs:t.timeoutMs}:void 0)}catch(e){let t=await r.value.release();throw t.kind===`failure`?Error(`Self-upgrade failed and its lock could not be released: ${t.error.message}`,{cause:e}):e}let a=await r.value.release();if(a.kind===`failure`)throw Error(a.error.message);return i}async function sa(){let e=await ni();return e?{kind:`success`,value:{async release(){return await e(),{kind:`success`,value:void 0}}}}:{error:{kind:`conflict`,message:`Another qtx upgrade is already running.`},kind:`failure`}}function ca(e,t=n.execPath){return na(e,t)}async function la(e){return e?`facts`in e?e:e.installSource===`binary`?Z({facts:{canAutoUpdate:e.canAutoUpdate,currentVersion:e.currentVersion,executablePath:e.executablePath,installSource:e.installSource,packageRoot:e.packageRoot,updateChannel:e.updateChannel}}):Ti(e):Z()}function ua(e){return ma({...e,error:null,ok:!0})}function da(e){return ma({...e,ok:!1})}function fa(e,t,n={}){let r=x();return r.cancelled&&!n.force||_n(gn(e.action),r.outputMode,e,t,e=>console.log(e),e=>ga(e)),e}function pa(e,t={}){let n=x();if(!(n.cancelled&&!t.force))return vn(gn(e.action),n.outputMode,e,e=>ga(e))}function ma(e){let t=x();return{action:e.action,data:e.data,error:e.error??null,exitCode:e.exitCode,meta:{fetchedAt:t.freshness?.fetchedAt,mode:t.outputMode,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:Zr()},ok:e.ok,target:e.target,warnings:e.warnings??[]}}function ha(e){let t=x();return{action:e.action,data:e.data,meta:{fetchedAt:t.freshness?.fetchedAt,mode:`ndjson`,runId:t.runId,schemaVersion:`1`,source:t.freshness?.source,staleAfter:t.freshness?.staleAfter,timestamp:new Date().toISOString(),version:Zr()},target:e.target,type:e.type}}function ga(e){let t=ha(e);return _a(t),t}function _a(e){console.log(JSON.stringify(e))}const{createColors:va,isColorSupported:ya}=le;function ba(){let e=x().colorMode??`auto`;return va(e===`always`?!0:e===`never`?!1:ya)}const xa=new Proxy({},{get(e,t){let n=ba(),r=n[t];return typeof r==`function`?r.bind(n):r}});export{Kt as $,hr as A,Ne as At,Un as B,_r as C,Re as Ct,mr as D,E as Dt,xr as E,T as Et,Dr as F,fe as Ft,cn as G,Tn as H,V as I,pe as It,dn as J,ln as K,qn as L,de as Lt,Sr as M,he as Mt,vr as N,x as Nt,Cr as O,w as Ot,Tr as P,ge as Pt,qt as Q,H as R,gr as S,Ve as St,pr as T,C as Tt,z as U,wn as V,sn as W,Wt as X,Xt as Y,Yt as Z,Yr as _,Xe as _t,fa as a,Rt as at,Pr as b,O as bt,aa as c,gt as ct,ra as d,vt as dt,Gt as et,Ci as f,mt as ft,Gr as g,$e as gt,ri as h,qe as ht,pa as i,Ht as it,yr as j,Se as jt,br as k,xe as kt,oa as l,_t as lt,vi as m,et as mt,da as n,zt as nt,ca as o,k as ot,Z as p,dt as pt,un as q,ua as r,Bt as rt,ia as s,ht as st,xa as t,Vt as tt,na as u,A as ut,Zr as v,Ye as vt,wr as w,S as wt,K as x,D as xt,Hr as y,Je as yt,Nn as z};
@@ -0,0 +1 @@
1
+ import{t as e}from"./commands-DiZ3IIz4.mjs";export{e as commandsCommand};
@@ -1,3 +1,3 @@
1
- import{V as e,W as t,a as n,r,t as i}from"./color-BGZ_5A6s.mjs";async function a(){return n(r({action:`commands`,data:{commands:e().map(t)},target:{kind:`system`,name:`commands`}}),o)}function o(e){if(e.data){console.log(i.bold(`
1
+ import{W as e,a as t,q as n,r,t as i}from"./color-1gXmuBdm.mjs";async function a(){return t(r({action:`commands`,data:{commands:e().map(n)},target:{kind:`system`,name:`commands`}}),o)}function o(e){if(e.data){console.log(i.bold(`
2
2
  Quantex Commands
3
3
  `));for(let t of e.data.commands){let e=t.flags.length>0?i.dim(` [${t.flags.join(`, `)}]`):``;console.log(` ${i.cyan(t.name)}${e}`),console.log(` ${t.summary}`),console.log(` ${i.dim(t.outputSchemaRef)}`)}console.log()}}export{a as t};
@@ -0,0 +1,3 @@
1
+ import{a as e,bt as t,ct as n,dt as r,ft as i,lt as a,n as o,r as s,t as c,ut as l}from"./color-1gXmuBdm.mjs";async function u(c,u,f){if(!c)return e(s({action:`config`,data:{action:`list`,config:await l()},target:{kind:`config`}}),d);switch(c){case`get`:{if(!u)return e(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let t=(await l())[u];return e(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 e(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!n(f))return e(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!a(f))return e(o({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 e(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!t(f))return e(o({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 t=Number.parseInt(f,10);if(!Number.isInteger(t)||t<=0)return e(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${t}`}let i={};try{i=await l()}catch{}return i[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?t(f):f,await r(i),e(s({action:`config`,data:{action:`set`,key:u,value:i[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await r(i),e(s({action:`config`,data:{action:`reset`,config:i},target:{kind:`config`}}),d);default:return e(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.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(c.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?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
@@ -0,0 +1,3 @@
1
+ import{Ct as e,I as t,L as n,R as r,rt as i,wt as a,x as o}from"./color-1gXmuBdm.mjs";import{I as s,n as c}from"./agents-CBoMqbP1.mjs";import{b as l,f as u,h as d,p as f,r as p}from"./provider-binding-BvvHuohl.mjs";import{t as m}from"./agent-observation-DRzJavrO.mjs";import h from"node:process";import ee from"cross-spawn";import{spawn as g}from"node:child_process";import{isAbsolute as te,join as _,resolve as v}from"node:path";import{access as ne,readFile as y,realpath as b}from"node:fs/promises";import{homedir as x}from"node:os";import{once as S}from"node:events";function re(e){let t=e.pathExecutable;return{agent:e.agent,methods:e.methods,installedState:e.installedState,inPath:t.present,installedVersion:t.present?t.version:void 0,latestVersion:e.latestVersion,binaryPath:t.present?t.path:void 0,resolvedBinaryPath:t.present?e.resolvedBinaryPath:void 0,sourceLabel:u(e.installedState),updateLabel:f(e.agent,e.installedState),lifecycle:e.installedState?l(e.installedState.installType):`unmanaged`}}const C=Symbol(`core-invocation-interrupted`);async function ie(e,t){let n=e?.timeoutMs;if(n!==void 0&&(!Number.isInteger(n)||n<=0))return{error:{code:`invalid-request`,message:`timeoutMs must be a positive integer.`,retryable:!1},kind:`failure`};let r=new AbortController,i=new Set,a=Promise.resolve(),o=e?.signal,s=!1,c,l=()=>r.abort(o?.reason);if(o?.aborted?l():o?.addEventListener(`abort`,l,{once:!0}),!r.signal.aborted&&n!==void 0&&(c=setTimeout(()=>{s=!0,r.abort(`Timed out after ${n}ms.`)},n)),r.signal.aborted)return o?.removeEventListener(`abort`,l),{error:D(r.signal,!1,n),kind:`failure`};let u,d=e=>(e.length===0||(a=a.then(()=>w(e))),a),f=()=>{let e=[...i];return i.clear(),d(e)},p=new Promise(e=>{u=()=>{f().then(()=>e(C))},r.signal.addEventListener(`abort`,u,{once:!0}),r.signal.aborted&&u()}),m=Promise.resolve().then(()=>t({registerCleanup(e){return r.signal.aborted?(d([e]),()=>void 0):(i.add(e),()=>i.delete(e))},signal:r.signal,timeoutMs:n}));try{let e=await Promise.race([m,p]);return e===C||r.signal.aborted?(await p,await T(m,50),await f(),{error:D(r.signal,s,n),kind:`failure`}):{kind:`success`,value:e}}catch(e){let t=ae(e);if(r.signal.aborted||t)return r.signal.aborted||(s||=t===`timed-out`,r.abort(se(e))),await p,await T(m,50),await f(),{error:D(r.signal,s||t===`timed-out`,n??oe(e)),kind:`failure`};throw e}finally{c&&clearTimeout(c),o?.removeEventListener(`abort`,l),r.signal.removeEventListener(`abort`,u),i.clear()}}async function w(e){await E(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.cleanup()))),500)||await E(Promise.allSettled(e.map(e=>Promise.resolve().then(()=>e.force?.()))),500)}async function T(e,t){let n;try{await Promise.race([e.then(()=>void 0,()=>void 0),new Promise(e=>{n=setTimeout(e,t)})])}finally{n&&clearTimeout(n)}}async function E(e,t){let n;try{return await Promise.race([e.then(()=>!0),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}function D(e,t,n){return t?{code:`timed-out`,details:n===void 0?void 0:{timeoutMs:n},message:n===void 0?`The Core request timed out.`:`The Core request timed out after ${n}ms.`,retryable:!0}:{code:`cancelled`,details:e.reason===void 0?void 0:{reason:O(e.reason)},message:`The Core request was cancelled.`,retryable:!1}}function ae(e){if(!e||typeof e!=`object`||!(`kind`in e))return;let t=e.kind;return t===`cancelled`||t===`timed-out`?t:void 0}function oe(e){if(!(!e||typeof e!=`object`||!(`timeoutMs`in e)))return typeof e.timeoutMs==`number`?e.timeoutMs:void 0}function se(e){return!e||typeof e!=`object`||!(`reason`in e)?e:e.reason}function O(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return String(e)}catch{return`cancelled`}}const k=[{binaryName:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,name:`amp`,packages:{npm:`@sourcegraph/amp`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`amp`,`version`]}},{binaryName:`agy`,displayName:`Antigravity CLI`,homepage:`https://antigravity.google/product/antigravity-cli`,lookupAliases:[`agy`,`antigravity-cli`],name:`antigravity`,platforms:{linux:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://antigravity.google/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`agy`,`--version`]}},{binaryName:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,name:`auggie`,packages:{npm:`@augmentcode/auggie`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`auggie`,`--version`]}},{binaryName:`autohand`,displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,lookupAliases:[`autohand-cli`],name:`autohand`,packages:{npm:`autohand-cli`},platforms:{linux:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`}],windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`autohand`,`--version`]}},{binaryName:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,name:`claude`,packages:{npm:`@anthropic-ai/claude-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://claude.ai/install.ps1 | iex`,type:`script`},{packageName:`Anthropic.ClaudeCode`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`codebuddy`,displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,lookupAliases:[`codebuddy-code`],name:`codebuddy`,packages:{npm:`@tencent-ai/codebuddy-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`codebuddy`,`--version`]}},{binaryName:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,name:`codewhale`,packages:{npm:`codewhale`,cargo:`codewhale-cli`},platforms:{linux:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],macos:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}],windows:[{type:`npm`},{packageInstallArgs:[`--locked`],type:`cargo`}]},versionProbe:{command:[`codewhale`,`--version`]}},{binaryName:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,name:`codex`,packages:{npm:`@openai/codex`,mise:`npm:@openai/codex`},platforms:{linux:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{type:`mise`},{packageName:`codex`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{type:`mise`}]}},{binaryName:`command-code`,displayName:`Command Code`,homepage:`https://commandcode.ai/docs/quickstart`,lookupAliases:[`command-code`,`cmd`,`cmdc`],name:`commandcode`,packages:{npm:`command-code`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`command-code`,`--version`]}},{binaryName:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,name:`copilot`,packages:{npm:`@github/copilot`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],windows:[{packageName:`GitHub.Copilot`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,name:`crush`,packages:{npm:`@charmland/crush`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet.crush`,packageTargetKind:`id`,type:`winget`}]},versionProbe:{command:[`crush`,`--version`]}},{binaryName:`agent`,displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,lookupAliases:[`agent`],name:`cursor`,platforms:{linux:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],macos:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],windows:[{command:`irm 'https://cursor.com/install?win32=true' | iex`,type:`script`}]},versionProbe:{command:[`agent`,`--version`]}},{binaryName:`deepcode`,displayName:`Deep Code CLI`,homepage:`https://github.com/lessweb/deepcode-cli`,name:`deepcode`,packages:{npm:`@vegamo/deepcode-cli`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`deepcode`,`--version`]}},{binaryName:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,name:`devin`,platforms:{linux:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],windows:[{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,type:`script`}]},versionProbe:{command:[`devin`,`version`]}},{binaryName:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,name:`droid`,packages:{npm:`droid`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://app.factory.ai/cli/windows | iex`,type:`script`}]}},{binaryName:`forge`,displayName:`ForgeCode`,homepage:`https://forgecode.dev`,lookupAliases:[`forge`],name:`forgecode`,packages:{npm:`forgecode`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://forgecode.dev/cli | sh`,type:`script`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://forgecode.dev/cli | iex`,type:`script`}]},versionProbe:{command:[`forge`,`--version`]}},{binaryName:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,name:`gemini`,packages:{npm:`@google/gemini-cli`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`genie`,displayName:`Genie`,homepage:`https://jsr.io/@nicorio/genie`,name:`genie`,packages:{deno:`jsr:@nicorio/genie`},platforms:{linux:[{packageInstallArgs:[`-A`],type:`deno`}],macos:[{packageInstallArgs:[`-A`],type:`deno`}],windows:[{packageInstallArgs:[`-A`],type:`deno`}]}},{binaryName:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,name:`goose`,platforms:{linux:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],macos:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],windows:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,type:`script`}]},versionProbe:{command:[`goose`,`--version`]}},{binaryName:`grok`,displayName:`Grok Build`,homepage:`https://docs.x.ai/build/overview`,lookupAliases:[`grok-build`],name:`grok`,platforms:{linux:[{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://x.ai/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`grok`,`--version`]}},{binaryName:`hermes`,displayName:`Hermes Agent`,homepage:`https://github.com/NousResearch/hermes-agent`,lookupAliases:[`hermes-agent`],name:`hermes`,platforms:{linux:[{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,type:`script`}],windows:[{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,type:`script`}]},versionProbe:{command:[`hermes`,`--version`]}},{binaryName:`jcode`,displayName:`JCode`,homepage:`https://github.com/1jehuang/jcode`,name:`jcode`,platforms:{linux:[{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}],macos:[{packageName:`1jehuang/jcode/jcode`,type:`brew`},{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,type:`script`}],windows:[{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`jcode`,`--version`]}},{binaryName:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,name:`junie`,packages:{npm:`@jetbrains/junie`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,type:`script`}]},versionProbe:{command:[`junie`,`--version`]}},{binaryName:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,name:`kilo`,packages:{npm:`@kilocode/cli`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`kimi`,displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-code/`,lookupAliases:[`kimi-code`,`kimi-cli`],name:`kimi`,packages:{npm:`@moonshot-ai/kimi-code`},platforms:{linux:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`kimi`,`--version`]}},{binaryName:`kiro-cli`,displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,lookupAliases:[`kiro-cli`],name:`kiro`,platforms:{linux:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],windows:[{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,type:`script`}]},versionProbe:{command:[`kiro-cli`,`--version`]}},{binaryName:`mimo`,displayName:`MiMoCode`,homepage:`https://github.com/XiaomiMiMo/MiMo-Code`,lookupAliases:[`mimocode`,`mimo-code`],name:`mimo`,packages:{npm:`@mimo-ai/cli`},platforms:{linux:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`mimo`,`--version`]}},{binaryName:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,name:`omp`,packages:{npm:`@oh-my-pi/pi-coding-agent`},platforms:{linux:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],macos:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],windows:[{type:`bun`},{command:`irm https://omp.sh/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`omp`,`--version`]}},{binaryName:`openclaw`,displayName:`OpenClaw`,homepage:`https://github.com/openclaw/openclaw`,name:`openclaw`,packages:{npm:`openclaw`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],windows:[{type:`bun`},{type:`npm`},{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`openclaw`,`--version`]}},{binaryName:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,name:`opencode`,packages:{npm:`opencode-ai`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,name:`openhands`,packages:{uv:`openhands`},platforms:{linux:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}],macos:[{packageInstallArgs:[`--python`,`3.12`],type:`uv`},{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}]},versionProbe:{command:[`openhands`,`--version`]}},{binaryName:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,name:`pi`,packages:{npm:`@mariozechner/pi-coding-agent`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`qodercli`,displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,lookupAliases:[`qodercli`],name:`qoder`,packages:{npm:`@qoder-ai/qodercli`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,name:`qwen`,packages:{npm:`@qwen-code/qwen-code`},platforms:{linux:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],macos:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],windows:[{command:`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`,type:`script`},{type:`bun`},{type:`npm`}]}},{binaryName:`reasonix`,displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,lookupAliases:[`deepseek-reasonix`],name:`reasonix`,packages:{npm:`reasonix`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`reasonix`,`--version`]}},{binaryName:`vibe`,displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,lookupAliases:[`mistral-vibe`],name:`vibe`,packages:{uv:`mistral-vibe`,pip:`mistral-vibe`},platforms:{linux:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],macos:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`},{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}],windows:[{packageName:`mistral-vibe`,type:`uv`},{packageName:`mistral-vibe`,type:`pip`}]},versionProbe:{command:[`vibe`,`--version`]}},{binaryName:`vtcode`,displayName:`VTCode`,homepage:`https://github.com/vinhnx/vtcode`,name:`vtcode`,packages:{cargo:`vtcode`},platforms:{linux:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}],macos:[{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,type:`script`},{type:`cargo`},{packageName:`vtcode`,type:`brew`}],windows:[{type:`cargo`},{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`vtcode`,`--version`]}}];function A(){return k}function j(e){let t=k.find(t=>t.name===e||t.lookupAliases?.includes(e));if(t)return t;let n=M(e);return k.find(e=>M(e.displayName)===n)}function M(e){return e.trim().toLowerCase()}var N=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function P(e,t){if(t.signal.aborted)throw new N(R(t.signal));let[n,...r]=e;if(!n)throw Error(`A read-only command requires a non-empty argv array.`);let i=ee(n,r,{detached:h.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),a=[],o=[];i.stdout?.on(`data`,e=>a.push(Buffer.from(e))),i.stderr?.on(`data`,e=>o.push(Buffer.from(e)));let s=!1,c,l,u=()=>c??=ce(i),d=t.registerCleanup?.({cleanup:u,force:()=>l??=le(i)}),f,p=new Promise((e,n)=>{f=()=>{s||(s=!0,u().then(()=>n(new N(R(t.signal)))))},t.signal.addEventListener(`abort`,f,{once:!0}),t.signal.aborted&&f()}),m=new Promise((e,t)=>{i.once(`error`,t),i.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>s?p:e);try{return{exitCode:await Promise.race([m,p]),stderr:Buffer.concat(o).toString(`utf8`),stdout:Buffer.concat(a).toString(`utf8`)}}finally{t.signal.removeEventListener(`abort`,f),d?.()}}async function ce(e){h.platform===`win32`&&e.pid!==void 0&&await I(e.pid,g,100),F(e,`SIGTERM`),!await L(e,100)&&(F(e,`SIGKILL`),await L(e,250))}async function le(e){h.platform===`win32`&&e.pid!==void 0&&await I(e.pid,g,100),F(e,`SIGKILL`),await L(e,250)}function F(e,t){if(h.platform!==`win32`&&e.pid!==void 0)try{h.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function I(e,t=g,n=100){let r=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),i,a=S(r,`close`).then(()=>!0,()=>!1),o=new Promise(e=>{i=setTimeout(()=>e(!1),n)}),s=await Promise.race([a,o]);if(i&&clearTimeout(i),s)return!0;try{r.kill(`SIGKILL`)}catch{}return!1}async function L(e,t){if(e.exitCode!==null||e.signalCode!==null)return!0;let n;try{return await Promise.race([new Promise(t=>e.once(`close`,()=>t(!0))),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}function R(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const z={access:e=>ne(e),env:h.env,homeDir:x,platform:h.platform,readFile:e=>y(e,`utf8`),runCommand:P};function B(e=z){return V([H(`bun`,`bun`,e,(t,n)=>ue(t.id,n,e)),H(`npm`,`npm`,e,(t,n)=>de(t.id,n,e)),H(`brew`,`brew`,e,(t,n)=>fe(t,n,e)),H(`cargo`,`cargo`,e,(t,n)=>pe(t.id,n,e)),H(`deno`,`deno`,e,(t,n)=>me(t,n,e)),H(`mise`,`mise`,e,(t,n)=>he(t.id,n,e)),H(`pip`,`pip`,e,(t,n)=>ge(t.id,n,e)),H(`uv`,`uv`,e,(t,n)=>_e(t.id,n,e)),H(`winget`,`winget`,e,(t,n)=>ve(t.id,n,e)),U(`script`,e),U(`binary`,e)])}function V(e){let t=Object.freeze([...e]),n=new Map(t.map(e=>[e.id,e]));if(n.size!==t.length)throw Error(`Duplicate Core provider observation adapter id.`);let r=Object.freeze([`availability`,`observe`]),i=Object.freeze([]);return Object.freeze({get:e=>n.get(e),getCapabilities:e=>n.has(e)?r:i,list:()=>t})}function H(e,t,n,r){return{availability:e=>W(t,e,n),id:e,async observe(t){let n=await r(t.target,t.context);return n.presence===`unknown`?{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} could not determine whether ${t.target.id} is installed`}:K({evidence:[{kind:`package`,value:n.presence===`absent`?`${e}:${t.target.id}:absent`:n.version?`${e}:${t.target.id}@${n.version}`:`${e}:${t.target.id}:present`}],kind:n.presence,target:t.target,...n.version?{version:n.version}:{}})}}}function U(e,t){return{availability:async e=>e.signal.aborted?xe(e.signal):K({executable:t.platform===`win32`?`powershell.exe`:`sh`}),id:e,async observe(n){let r=n.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${n.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await G([t.platform===`win32`?`where`:`which`,r],n.context,t);return i?K({evidence:[{kind:`executable`,value:r}],kind:i.exitCode===0?`present`:`absent`,target:n.target}):{kind:`failed`,reason:`${e} executable probe failed for ${n.target.id}`,retryable:!0}}}}async function W(e,t,n){try{return(await n.runCommand([e,`--version`],t)).exitCode===0?K({executable:e}):{kind:`unavailable`,reason:`${e} executable is unavailable`}}catch(t){if(t instanceof N)throw t;return{kind:`unavailable`,reason:`${e} executable is unavailable`}}}async function ue(e,t,n){let r=await G([`bun`,`pm`,`-g`,`ls`],t,n);if(!r)return{presence:`unknown`};if(!r.stdout.trim()){if(r.stderr.includes(`No package.json was found for directory`))return{presence:`absent`};if(!r.stderr.includes(`Lockfile not found`))return{presence:`unknown`};try{let t=n.env.BUN_INSTALL_GLOBAL_DIR??_(n.homeDir(),`.bun`,`install`,`global`);return{presence:be(await n.readFile(_(t,`package.json`)),e)}}catch{return{presence:`unknown`}}}let i=ye(r.stdout,e);return i?{presence:`present`,version:i}:r.stdout.split(`
2
+ `).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:{presence:`absent`}}async function de(e,t,n){let r=await G([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!J(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};let n=t.dependencies?.[e];return n?typeof n.version==`string`?{presence:`present`,version:n.version}:{presence:`present`}:{presence:`absent`}}catch{return{presence:`unknown`}}}async function fe(e,t,n){let r=await G([`brew`,`list`,e.kind===`cask`?`--cask`:`--formula`,`--versions`,e.id],t,n);if(!r)return{presence:`unknown`};let i=r.stdout.trim().split(/\s+/u).at(-1);if(r.exitCode===0)return i&&/^\d/u.test(i)?{presence:`present`,version:i}:{presence:`present`};let a=r.stderr.toLowerCase();return a.includes(`no such keg`)||a.includes(`is not installed`)?{presence:`absent`}:{presence:`unknown`}}async function pe(e,t,n){let r=await G([`cargo`,`install`,`--list`],t,n);if(!r||r.exitCode!==0)return{presence:`unknown`};let i=e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),a=r.stdout.match(RegExp(`^${i}\\s+v([^:\\s]+):\\s*$`,`mu`))?.[1];return a?{presence:`present`,version:a}:{presence:`absent`}}async function me(e,t,n){if(t.signal.aborted)throw new N(Y(t.signal));let r=e.binaryName?.trim()||e.id.trim().split(`/`).pop()?.replace(/@.*$/u,``);if(!r)return{presence:`unknown`};let i=n.env.DENO_INSTALL_ROOT?.trim()||_(n.homeDir(),`.deno`);try{if(await n.access(_(i,`bin`,r)),t.signal.aborted)throw new N(Y(t.signal));return{presence:`present`}}catch(e){if(e instanceof N)throw e;return Se(e)?{presence:`absent`}:{presence:`unknown`}}}async function he(e,t,n){let r=await G([`mise`,`ls`,`--installed`,`--json`,e],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!J(t))return{presence:`unknown`};let n=e.split(`:`).pop()?.split(`/`).pop(),i=Array.isArray(t[e])?e:n&&Array.isArray(t[n])?n:void 0,a=i?t[i]:void 0;if(!Array.isArray(a)||a.length===0)return{presence:`absent`};let o=a.find(e=>J(e)&&typeof e.version==`string`);return J(o)&&typeof o.version==`string`?{presence:`present`,version:o.version}:{presence:`present`}}catch{return{presence:`unknown`}}}async function ge(e,t,n){for(let r of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]]){let i=await G([...r,`--version`],t,n);if(!i||i.exitCode!==0)continue;let a=await G([...r,`show`,e],t,n);if(!a)return{presence:`unknown`};if(a.exitCode===0){let e=a.stdout.split(/\r?\n/u).map(e=>/^Version:\s*(.+)\s*$/iu.exec(e.trim())?.[1]?.trim()).find(Boolean);return e?{presence:`present`,version:e}:{presence:`present`}}let o=a.stderr.toLowerCase();return o.includes(`package(s) not found`)||o.includes(`not found`)?{presence:`absent`}:{presence:`unknown`}}return{presence:`unknown`}}async function _e(e,t,n){let r=await G([`uv`,`tool`,`list`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};let i=q(e),a=!1;for(let e of r.stdout.split(/\r?\n/u)){let t=/^(\S+)\s+v([^\s]+)/u.exec(e.trim());if(t&&(a=!0,q(t[1])===i))return{presence:`present`,version:t[2]}}return a?{presence:`absent`}:{presence:`unknown`}}async function ve(e,t,n){let r=await G([`winget`,`list`,`--id`,e,`-e`],t,n);if(!r)return{presence:`unknown`};if(r.exitCode===0){let t=e.toLowerCase();for(let e of r.stdout.split(/\r?\n/u)){let n=e.trim().split(/\s{2,}|\t+/u).map(e=>e.trim()).filter(Boolean),r=n.findIndex(e=>e.toLowerCase()===t);if(r>=0)return n[r+1]?{presence:`present`,version:n[r+1]}:{presence:`present`}}return r.stdout.toLowerCase().includes(t)?{presence:`present`}:{presence:`unknown`}}let i=`${r.stdout}\n${r.stderr}`.toLowerCase();return[`no installed package found`,`no package found matching input criteria`,`no installed package matched`].some(e=>i.includes(e))?{presence:`absent`}:{presence:`unknown`}}async function G(e,t,n){try{return await n.runCommand(e,t)}catch(e){if(e instanceof N)throw e;return}}function ye(e,t){let n=`${t}@`;for(let t of e.split(`
3
+ `)){let e=t.trim().split(/\s+/u).at(-1);if(e?.startsWith(n)&&e.length>n.length)return e.slice(n.length)}}function be(e,t){try{let n=JSON.parse(e);if(!J(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(!J(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}catch{return`unknown`}}function K(e){return{kind:`success`,value:e}}function xe(e){let t=Y(e);return{kind:`cancelled`,...t?{reason:t}:{}}}function q(e){return e.toLowerCase().replaceAll(/[-_.]+/gu,`-`)}function J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Se(e){return e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function Y(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Ce(e){return e===void 0?_(h.env.HOME||h.env.USERPROFILE||x(),`.quantex`):te(e)?e:v(e)}function we(e={}){let t=e.providerRegistry??B();return{async inspectAgent(e,n){let r=j(e);if(r)return Ee(r,n,t)},async listAgents(e){return Z(e.signal),A()}}}async function Te(e){let i=_(e,`state.json`),a;try{a=await y(i,`utf8`)}catch(e){if(Ie(e))return n();throw e}let o;try{o=JSON.parse(a)}catch(e){throw new t(`state.json contains invalid JSON: ${Le(e)}`)}return r(o).document}async function Ee(e,t,n){let[r,i]=await Promise.all([Te(t.configDir),je(e,t.configDir,t.signal)]),a={registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs},o=await m(e,{clock:()=>new Date().toISOString(),inspectExecutable:()=>De(e,a),platform:X(),preferredCatalogBinding:i[0]?p(e,i[0]):void 0,providerRegistry:n,readInstalledState:async e=>r.installedAgents[e],readReceipt:async e=>r.lifecycleReceipts[e],signal:t.signal,timeoutMs:t.timeoutMs,observeProvider:async e=>{let t=n.get(e.providerId);return t?t.observe({context:a,target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}}),s=await Ae(o.pathExecutable.path,t.signal);return{agent:e,...o,methods:i,...s?{resolvedBinaryPath:s}:{}}}async function De(e,t){let n=await Oe(e.binaryName,t);if(!n)return{present:!1};let r=await ke(e,n,t);return{path:n,present:!0,...r?{version:r}:{}}}async function Oe(e,t){try{let n=await P([h.platform===`win32`?`where`:`which`,e],t);return n.exitCode===0&&n.stdout.trim().split(/\r?\n/u)[0]||void 0}catch(e){if(e instanceof N)throw e;return}}async function ke(e,t,n){let r=e.versionProbe?.command??[e.binaryName,`--version`],i=r[0]===e.binaryName?[t,...r.slice(1)]:r;try{let t=await P(i,n);return t.exitCode===0?Ne(t.stdout,e.versionProbe?.parser):void 0}catch(e){if(e instanceof N)throw e;return}}async function Ae(e,t){if(e){Z(t);try{let n=await b(e);return Z(t),n}catch{if(t.aborted)throw new N(Q(t));return e}}}async function je(e,t,n){let r=e.platforms[X()]??[],i=await Me(t,n);return[...r.filter(e=>e.type===i),...r.filter(e=>e.type!==i)]}async function Me(e,t){Z(t);try{let n=await y(_(e,`config.json`),`utf8`);Z(t);let r=JSON.parse(n);if(Fe(r)&&Pe(r.defaultPackageManager))return r.defaultPackageManager}catch(e){if(t.aborted)throw new N(Q(t));if(e instanceof N)throw e}return`bun`}function Ne(e,t){if(typeof t==`function`)return t(e);let n=e.trim().split(/\r?\n/u)[0];if(n)return n.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/iu)?.[1]??n}function X(){return h.platform===`win32`?`windows`:h.platform===`darwin`?`macos`:`linux`}function Pe(e){return e===`bun`||e===`mise`||e===`npm`}function Fe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ie(e){return!e||typeof e!=`object`||!(`code`in e)?!1:e.code===`ENOENT`||e.code===`ENOTDIR`}function Z(e){if(e.aborted)throw new N(Q(e))}function Q(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Le(e){return e instanceof Error&&e.message?e.message:String(e)}function $(e,t=Ve()){let n=n=>Be(e,t.configDir,n),r=async(e,n)=>{let r=c(e.agent.name)??e.agent,i=e.binding&&e.capabilities.length>0?s.getCapabilities(e.binding.providerId):e.capabilities;return{...e,agent:r,capabilities:i,latestVersion:await t.resolveLatestVersion(e.agent,e.installedState,e.methods,He(n)),methods:[...e.methods]}};return{observeRegisteredAgents(){return n(async e=>{let n=await t.core.listAgents({...e,configDir:t.configDir});return Promise.all(n.map(async n=>{let i=await t.core.inspectAgent(n.name,{...e,configDir:t.configDir});if(!i)throw Error(`Core did not resolve registered agent: ${n.name}`);return r(i,e)}))})},resolveAgentObservation(e){return n(async n=>{let i=await t.core.inspectAgent(e,{...n,configDir:t.configDir});return i?r(i,n):void 0})}}}function Re(e,t){return $(t).resolveAgentObservation(e)}function ze(e){return $(e).observeRegisteredAgents()}async function Be(t,n,r){let i=t?void 0:e(),a=t??i?.context;if(!a)throw Error(`CLI read operation context is unavailable.`);try{let e=await ie({signal:a.signal},e=>r({...e,timeoutMs:a.timeoutMs}));return e.kind===`failure`&&Ue(e.error,a.timeoutMs),e.value}catch(e){throw We(e,n)}finally{i?.dispose()}}function Ve(){return{configDir:Ce(),core:we({providerRegistry:s}),async resolveLatestVersion(e,t,n,r){let a=d(e,t,[...n]);return a?i(a,`latest`,{context:r}):void 0}}}function He(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ue(e,t){throw e.code===`cancelled`?new a({kind:`cancelled`,reason:typeof e.details?.reason==`string`?e.details.reason:void 0}):e.code===`timed-out`?new a({kind:`timed-out`,timeoutMs:typeof e.details?.timeoutMs==`number`?e.details.timeoutMs:t??0}):Error(e.message)}function We(e,n){return e instanceof o||e instanceof a?e:e instanceof t?new o(`Failed to read Quantex state file: ${e.message}`,{cause:e}):Ge(e,_(n,`state.json`))?new o(`Failed to read Quantex state file.`,{cause:e}):e}function Ge(e,t){return!e||typeof e!=`object`||!(`path`in e)?!1:String(e.path)===t}export{Re as n,re as r,ze as t};
@@ -0,0 +1,3 @@
1
+ import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{Ct as n,U as r,a as i,at as a,c as o,d as s,r as c,t as l}from"./color-1gXmuBdm.mjs";import{n as u,t as d}from"./provider-observations-CRG1GCgp.mjs";import{r as f,t as p}from"./core-read-observations-Cm0FpEpL.mjs";async function m(){let r=n(),l,m,_;try{[l,m,_]=await r.run(()=>Promise.all([d({context:r.context}),o({context:r.context}),p(r.context)]))}finally{r.dispose()}let v=u(l,e=>e.availability.kind===`success`),{brew:y,bun:b,cargo:x,deno:S}=v,{mise:C,npm:w,pip:T,uv:E,winget:D}=v,O=m.latestVersion?a(m.latestVersion,m.currentVersion):!1,k=_.map(e=>({inspection:f(e),observation:e})),A=k.filter(({inspection:e})=>e.inPath).map(({inspection:e})=>({displayName:e.agent.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion),sourceLabel:e.sourceLabel})),j=[],M=`docs/runbooks/quantex-troubleshooting.md`,N=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!b&&!w&&!y&&!x&&!S&&!C&&!T&&!E&&!D&&j.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:M,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(m.installSource===`bun`&&!b||m.installSource===`npm`&&!w)&&j.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:N,message:`Quantex CLI is tracked as a ${m.installSource} install, but ${m.installSource} is not available in PATH. Reinstall that package manager or reinstall Quantex from a supported source.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`restore-self-installer`,suggestedCommands:g(m.installSource,m.updateChannel)}),m.canAutoUpdate||j.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:N,message:`Quantex CLI cannot auto-update from install source "${m.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),O&&m.recommendedUpgradeCommand){let e=s(m);j.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:N,message:e?`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[m.recommendedUpgradeCommand]})}for(let{inspection:n,observation:r}of k.filter(e=>e.inspection.inPath)){if(r.observation.drift.kind===`untracked`&&j.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:M,message:`${n.agent.displayName} is available in PATH but not tracked as a managed Quantex install. Use \`quantex inspect ${n.agent.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${n.agent.name} --json`,`quantex install ${n.agent.name}`]}),!(n.installedVersion&&n.latestVersion&&n.installedVersion!==n.latestVersion)||n.lifecycle===`managed`)continue;let i=t(n.agent,n.agent.selfUpdate?`self-update`:`manual-hint`)??e(n.agent);j.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:M,message:`${n.agent.displayName} ${n.installedVersion} is behind ${n.latestVersion}, but the current source is ${n.sourceLabel}. ${i}`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:n.agent.selfUpdate?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n.agent.selfUpdate?[n.agent.selfUpdate.command.join(` `)]:[]})}return i(c({action:`doctor`,data:{agents:A,issues:j,installers:v,self:{canAutoUpdate:m.canAutoUpdate,currentVersion:m.currentVersion,installSource:m.installSource,latestVersion:m.latestVersion,outdated:!!O,recoveryHint:O?s(m):void 0}},target:{kind:`system`,name:`doctor`}}),h)}function h(e){if(e.data){if(console.log(l.bold(`
2
+ Quantex CLI Environment Check
3
+ `)),console.log(l.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?l.green(`available`):l.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?l.green(`available`):l.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?l.green(`available`):l.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?l.green(`available`):l.red(`not found`)}`),console.log(` deno: ${e.data.installers.deno?l.green(`available`):l.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?l.green(`available`):l.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?l.green(`available`):l.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?l.green(`available`):l.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?l.green(`available`):l.red(`not found`)}`),console.log(`\n${l.bold(`Quantex CLI:`)}`),console.log(` Version: ${e.data.self.currentVersion}`),console.log(` Source: ${e.data.self.installSource}`),console.log(` Auto-update: ${e.data.self.canAutoUpdate?l.green(`supported`):l.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?l.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${l.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(l.dim(` No agents installed`));else for(let t of e.data.agents)console.log(` ${t.displayName}: ${t.installedVersion??`unknown`} [${t.lifecycle}; ${t.sourceLabel}]${t.outdated?l.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${l.bold(`Issues:`)}`),e.data.issues.length===0)console.log(l.green(` No issues found.`));else for(let t of e.data.issues)console.log(l.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(l.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function g(e,t){let n=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${r}@${n}`]:e===`npm`?[`npm install -g ${r}@${n}`]:[]}export{m as doctorCommand};
@@ -0,0 +1 @@
1
+ import{a as e,i as t,n,r,t as i,z as a}from"./color-1gXmuBdm.mjs";import{m as o}from"./provider-binding-BvvHuohl.mjs";import{_ as s,n as c}from"./agents-DvfpsVAI.mjs";import{t as l}from"./agent-installation-Dsz_I5Li.mjs";import{n as u}from"./lifecycle-observations-31JWXSir.mjs";import{t as d}from"./lifecycle-errors-Cal_j4yT.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-uK6ichvR.mjs";async function g(t){if(!c(t)||m())return _(t);try{return await s(()=>_(t))}catch(r){if(a(r))return e(n({action:`ensure`,...d(r,{kind:`agent`,name:t}),target:{kind:`agent`,name:t}}),C);throw r}}async function _(t){let r=await u(t);if(!r)return e(n({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}}),C);let{agent:i}=r,s=r.pathExecutable.present,c=r.installedState,f=s&&!c?o(r.methods,r.resolvedBinaryPath??r.pathExecutable.path):void 0;if(s&&!c&&!f)return e(x(i),C);let p=c&&s?`satisfied`:f?`adopt`:`install`;if(m())return e(p===`satisfied`?b(i):y(i,p===`adopt`,!!c),C);p!==`satisfied`&&v(i);try{return e(S(i,p,await l({adoptableMethod:f,agent:i,observation:{inPath:s,installedState:c,lifecycle:r.observation,methods:r.methods},operation:`ensure`,route:p})),C)}catch(t){if(a(t))return e(n({action:`ensure`,data:{agent:{displayName:i.displayName,name:i.name},changed:!1,installed:s},...d(t,{kind:`agent`,name:i.name})}),C);throw t}}function v(e){t({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function y(e,t,n){return r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function b(e){return r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function x(e){return r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function S(e,t,i){if(i.kind===`success`){if(t===`satisfied`)return b(e);let n=i.value.value.installedState;return r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:i.value.changed,installState:i.value.changed?{installType:n.installType,packageName:n.packageName}:void 0,installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let a=i.kind===`cancelled`?{code:`CANCELLED`,message:`Ensure was cancelled before tracking could complete.`}:i.kind===`failed`&&i.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:i.kind===`failed`&&i.reason.endsWith(`-after-ensure`)||i.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after ensure completed.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:a,target:{kind:`agent`,name:e.name}})}function C(e){if(e.error){h(i.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){p(i.green(t.message));continue}if(t.code===`DRY_RUN`){f(i.cyan(t.message));continue}f(i.yellow(t.message))}return}if(e.data.changed){p(i.cyan(`Installing ${e.data.agent.displayName}...`)),p(i.green(`${e.data.agent.displayName} is now installed.`));return}p(i.green(`${e.data.agent.displayName} is already installed.`))}}export{g as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./ensure-BqcmFFyN.mjs";export{e as ensureCommand};
@@ -0,0 +1 @@
1
+ import{r as e}from"./errors-BD4Gc9Rp.mjs";export{e as getExitCodeForResult};
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{A as n,At as r,D as i,F as a,Ft as o,Gt as s,J as c,Jt as l,K as ee,Kt as te,M as ne,O as re,P as ie,Pt as ae,R as u,Rt as oe,S as se,T as ce,Y as d,Yt as le,_ as ue,a as de,at as f,cn as p,ct as m,d as h,dn as g,fn as _,g as v,in as y,it as b,jt as x,kt as S,l as C,lt as w,n as T,nt as E,o as D,on as O,ot as k,q as A,qt as j,r as M,rt as N,s as P,st as F,u as I,un as L,v as R,w as z,z as B,zt as V}from"./color-BGZ_5A6s.mjs";import{A as H,C as fe,D as pe,E as me,F as he,M as ge,N as _e,O as ve,P as ye,S as be,T as xe,_ as Se,a as Ce,b as we,c as Te,d as Ee,f as De,g as Oe,h as ke,i as Ae,j as U,k as je,l as Me,m as Ne,n as Pe,o as Fe,p as Ie,r as Le,s as Re,t as ze,u as Be,v as Ve,w as He,x as Ue,y as We}from"./agents-Dc-rbRUf.mjs";import{t as Ge}from"./capabilities-hjF4kpxs.mjs";import{t as Ke}from"./commands-DjMechiz.mjs";import{_ as qe,g as Je,l as Ye,m as Xe,u as Ze,y as Qe}from"./provider-evidence-D7aplCd6.mjs";import{t as $e}from"./update-planner-9xPfJpjp.mjs";import{a as et,i as W,n as tt,r as nt,t as G}from"./agents-BrJ8oEkB.mjs";import{t as rt}from"./ensure-NxyYe2vm.mjs";import{t as it}from"./inspect-Bzu6BDS6.mjs";import{t as at}from"./resolve-D-NvixQn.mjs";import{n as ot,t as st}from"./schema-DuUjt16u.mjs";import{n as ct,r as lt}from"./errors-DXzIacfk.mjs";function K(e,t={}){let n=m(),r=n.reduce((e,t)=>(e[t]=[],e),{}),i=[],a=[],o=[],s=[];for(let n of e){if(!n.inPath)continue;if(t.skipUntrackedInPath&&!n.installedState){o.push(n);continue}let e=J(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=d({agent:n.agent,installedState:n.installedState,methods:n.methods}),l=c.strategy===`managed`?c.getManagedInstallerType?.({agent:n.agent,installedState:n.installedState,methods:n.methods}):void 0;if(l){let e={inspection:n,installerType:l,strategy:`grouped`};r[l].push(e);continue}i.push({inspection:n,strategy:c.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...n.flatMap(e=>r[e]),...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:o,upToDate:s}}function q(e){return J(e)===`upgrade`}function J(e){return $e({intent:{kind:`update`,targetId:`compatibility-update`,targetVersion:e.latestVersion},observation:{drift:{kind:`none`},kind:`present`,providerId:`compatibility`,providerTargetId:`compatibility-update`,providerTargetKind:`package`,targetId:`compatibility-update`,version:e.installedVersion},provider:{capabilities:[`observe`,`update`,`verify`],providerId:`compatibility`,targetId:`compatibility-update`,targetKind:`package`}}).decision}const ut=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function dt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
2
- `)}\n`}function ft(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function Y(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function X(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function Z(e){return e.includes(`beta`)?`beta`:`stable`}function pt(e){let t=X(e.repositoryUrl),n=Z(e.version),r=e.files.map(n=>{let r=Y(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function mt(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of ut)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!Y(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}async function ht(e){let t=await W(e);return{agent:e,inspection:t,updateAvailable:q(t)}}async function gt(){return _t(await G(),{skipUntrackedInPath:!0})}function _t(e,t={}){let n=K(e,t),r=[],i=m().map(e=>vt(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>$(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>$(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function vt(e,t,n){if(t.length===0)return;let r=t.map(e=>$(e.inspection)),i=r.filter(Q);if(n.push(...r.filter(e=>!Q(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function Q(e){return!!e.package?.packageName}function $(e){let t=d({agent:e.agent,installedState:e.installedState,methods:e.methods}),n=t.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:n,package:n?yt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function yt(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let i=n.find(e=>e.type===r);if(!i)return;let a=E(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function bt(e,t){try{let n=await O(y([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{_e as agentCatalogEntrySchema,ye as agentCatalogJsonSchema,he as agentCatalogSchema,ee as agentUpdateProviders,Ae as autohand,v as canAutoUpdateSelf,N as canLookupLatestVersionForInstallType,A as canResolveAgentUpdate,b as canUninstallInstallType,f as canUpdateInstallType,Ge as capabilitiesCommand,Ce as claude,Fe as codebuddy,Re as codewhale,Te as codex,Ke as commandsCommand,Me as copilot,T as createErrorResult,pt as createReleaseManifest,M as createSuccessResult,K as createUpdatePlan,Be as cursor,Ee as deepcode,ue as detectSelfInstallSource,De as devin,Ie as droid,de as emitCommandResult,rt as ensureCommand,bt as execCommand,dt as formatChecksums,Ne as gemini,ke as genie,ze as getAgentByLookupName,Pe as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,c as getAgentUpdateStrategy,Le as getAllAgents,S as getBinaryPath,u as getBinaryReleaseAssetName,B as getBinaryReleaseDownloadUrl,U as getCatalogAgent,ge as getCatalogAgents,p as getCliContext,ae as getConfigDir,o as getConfigFilePath,ct as getExitCodeForError,lt as getExitCodeForResult,k as getInstallLifecycle,se as getInstalledAgentState,r as getInstalledVersion,F as getInstallerCapabilities,x as getLatestVersion,Qe as getManagedInstaller,e as getManualAgentUpdateMessage,D as getManualSelfUpgradeCommand,Ye as getOrderedInstallMethods,s as getPlatform,st as getSchemaCatalog,z as getSelfState,I as getSelfUpgradeRecoveryHint,h as getSelfUpgradeRecoveryHintForInspection,R as getSelfVersion,ht as getSingleAgentUpdateStatus,ce as getStateFilePath,Oe as grok,Se as hermes,W as inspectAgent,et as inspectAllAgents,it as inspectCommand,G as inspectRegisteredAgents,P as inspectSelf,Ze as installAgent,te as isBinaryInPath,j as isBunAvailable,l as isDenoAvailable,q as isInspectionUpdateAvailable,w as isManagedInstallType,le as isNpmAvailable,Ve as jcode,We as junie,we as kilo,oe as loadConfig,i as loadState,Ue as mimo,X as normalizeRepositoryUrl,be as omp,fe as openclaw,He as opencode,xe as openhands,Y as parseBinaryTarget,ft as parseChecksums,me as pi,gt as planAgentUpdates,pe as qoder,ve as reasonix,re as removeInstalledAgentState,L as resetCliContext,tt as resolveAgent,nt as resolveAgentInspection,d as resolveAgentUpdateProvider,g as resolveCliContext,at as resolveCommand,Z as resolveReleaseChannel,V as saveConfig,n as saveState,ot as schemaCommand,_ as setCliContext,ne as setInstalledAgentState,ie as setSelfInstallSource,a as setSelfUpdateNoticeState,Xe as uninstallAgent,Je as updateAgent,qe as updateAgentsByType,C as upgradeSelf,mt as validateReleaseManifest,je as vibe,H as vtcode};
1
+ import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{A as n,D as r,F as i,Ft as a,H as o,It as s,Lt as c,M as l,Nt as ee,O as te,P as ne,S as re,T as ie,V as ae,_ as oe,a as se,d as ce,dt as le,g as ue,jt as de,kt as fe,l as pe,n as u,nt as d,o as f,ot as p,r as m,rt as h,s as g,st as _,tt as v,u as y,ut as b,v as x,w as S}from"./color-1gXmuBdm.mjs";import{A as C,C as w,D as T,E,F as D,M as O,N as k,O as A,P as j,S as M,T as N,_ as P,a as F,b as I,c as L,ct as R,d as z,dt as B,f as me,ft as he,g as ge,h as _e,i as ve,j as ye,k as be,l as xe,lt as Se,m as Ce,n as we,o as Te,p as Ee,r as De,s as Oe,t as ke,u as Ae,ut as je,v as Me,w as V,x as Ne,y as Pe}from"./agents-CBoMqbP1.mjs";import{C as Fe,S as H,_ as Ie,b as Le,c as Re,g as ze,l as U,o as Be,s as Ve,v as He,x as Ue,y as We}from"./provider-binding-BvvHuohl.mjs";import{t as Ge}from"./capabilities-C_gPEld2.mjs";import{t as Ke}from"./commands-DiZ3IIz4.mjs";import{a as qe,c as Je,g as Ye,h as Xe,i as W,l as Ze,n as Qe,p as $e,r as et,t as G,v as tt}from"./agents-DvfpsVAI.mjs";import{t as nt}from"./update-planner-IgFzteV-.mjs";import{t as rt}from"./ensure-BqcmFFyN.mjs";import{t as it}from"./inspect-DyCXX7Tp.mjs";import{t as at}from"./resolve-CCeMk9aY.mjs";import{n as ot,t as st}from"./schema-C2S3d_Cu.mjs";import{n as ct,r as lt}from"./errors-BD4Gc9Rp.mjs";function K(e,t={}){let n=H(),r=n.reduce((e,t)=>(e[t]=[],e),{}),i=[],a=[],o=[],s=[];for(let n of e){if(!n.inPath)continue;if(t.skipUntrackedInPath&&!n.installedState){o.push(n);continue}let e=J(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=U({agent:n.agent,installedState:n.installedState,methods:n.methods}),l=c.strategy===`managed`?c.getManagedInstallerType?.({agent:n.agent,installedState:n.installedState,methods:n.methods}):void 0;if(l){let e={inspection:n,installerType:l,strategy:`grouped`};r[l].push(e);continue}i.push({inspection:n,strategy:c.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...n.flatMap(e=>r[e]),...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:o,upToDate:s}}function q(e){return J(e)===`upgrade`}function J(e){return nt({intent:{kind:`update`,targetId:`compatibility-update`,targetVersion:e.latestVersion},observation:{drift:{kind:`none`},kind:`present`,providerId:`compatibility`,providerTargetId:`compatibility-update`,providerTargetKind:`package`,targetId:`compatibility-update`,version:e.installedVersion},provider:{capabilities:[`observe`,`update`,`verify`],providerId:`compatibility`,targetId:`compatibility-update`,targetKind:`package`}}).decision}const ut=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function dt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
2
+ `)}\n`}function ft(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function Y(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function X(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function Z(e){return e.includes(`beta`)?`beta`:`stable`}function pt(e){let t=X(e.repositoryUrl),n=Z(e.version),r=e.files.map(n=>{let r=Y(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function mt(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of ut)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!Y(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}async function ht(e){let t=await W(e);return{agent:e,inspection:t,updateAvailable:q(t)}}async function gt(){return _t(await G(),{skipUntrackedInPath:!0})}function _t(e,t={}){let n=K(e,t),r=[],i=H().map(e=>vt(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>$(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>$(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function vt(e,t,n){if(t.length===0)return;let r=t.map(e=>$(e.inspection)),i=r.filter(Q);if(n.push(...r.filter(e=>!Q(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function Q(e){return!!e.package?.packageName}function $(e){let t=U({agent:e.agent,installedState:e.installedState,methods:e.methods}),n=t.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:n,package:n?yt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function yt(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let i=n.find(e=>e.type===r);if(!i)return;let a=ze(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function bt(e,t){try{let n=await de(fe([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{k as agentCatalogEntrySchema,j as agentCatalogJsonSchema,D as agentCatalogSchema,Be as agentUpdateProviders,ve as autohand,ue as canAutoUpdateSelf,Ie as canLookupLatestVersionForInstallType,Ve as canResolveAgentUpdate,He as canUninstallInstallType,We as canUpdateInstallType,Ge as capabilitiesCommand,F as claude,Te as codebuddy,Oe as codewhale,L as codex,Ke as commandsCommand,xe as copilot,u as createErrorResult,pt as createReleaseManifest,m as createSuccessResult,K as createUpdatePlan,Ae as cursor,z as deepcode,oe as detectSelfInstallSource,me as devin,Ee as droid,se as emitCommandResult,rt as ensureCommand,bt as execCommand,dt as formatChecksums,Ce as gemini,_e as genie,ke as getAgentByLookupName,we as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,Re as getAgentUpdateStrategy,De as getAllAgents,v as getBinaryPath,ae as getBinaryReleaseAssetName,o as getBinaryReleaseDownloadUrl,ye as getCatalogAgent,O as getCatalogAgents,ee as getCliContext,p as getConfigDir,_ as getConfigFilePath,ct as getExitCodeForError,lt as getExitCodeForResult,Le as getInstallLifecycle,re as getInstalledAgentState,d as getInstalledVersion,Ue as getInstallerCapabilities,h as getLatestVersion,tt as getManagedInstaller,e as getManualAgentUpdateMessage,f as getManualSelfUpgradeCommand,Je as getOrderedInstallMethods,R as getPlatform,st as getSchemaCatalog,S as getSelfState,y as getSelfUpgradeRecoveryHint,ce as getSelfUpgradeRecoveryHintForInspection,x as getSelfVersion,ht as getSingleAgentUpdateStatus,ie as getStateFilePath,ge as grok,P as hermes,W as inspectAgent,qe as inspectAllAgents,it as inspectCommand,G as inspectRegisteredAgents,g as inspectSelf,Ze as installAgent,Se as isBinaryInPath,je as isBunAvailable,B as isDenoAvailable,q as isInspectionUpdateAvailable,Fe as isManagedInstallType,he as isNpmAvailable,Me as jcode,Pe as junie,I as kilo,b as loadConfig,r as loadState,Ne as mimo,X as normalizeRepositoryUrl,M as omp,w as openclaw,V as opencode,N as openhands,Y as parseBinaryTarget,ft as parseChecksums,E as pi,gt as planAgentUpdates,T as qoder,A as reasonix,te as removeInstalledAgentState,a as resetCliContext,Qe as resolveAgent,et as resolveAgentInspection,U as resolveAgentUpdateProvider,s as resolveCliContext,at as resolveCommand,Z as resolveReleaseChannel,le as saveConfig,n as saveState,ot as schemaCommand,c as setCliContext,l as setInstalledAgentState,ne as setSelfInstallSource,i as setSelfUpdateNoticeState,$e as uninstallAgent,Xe as updateAgent,Ye as updateAgentsByType,pe as upgradeSelf,mt as validateReleaseManifest,be as vibe,C as vtcode};
@@ -1,2 +1,2 @@
1
- import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-BGZ_5A6s.mjs";import{r as o}from"./lifecycle-observations-C1OLPUAV.mjs";import{t as s}from"./agent-inspection-PCTn6Nc6.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return n(i({action:`info`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));return}if(e.data){console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),console.log(` Installed: ${e.data.inspection.installed?a.green(`Yes`):a.red(`No`)}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installed&&console.log(` Lifecycle: ${e.data.inspection.lifecycle}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(a.bold(`
2
- Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${a.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as infoCommand};
1
+ import{a as e,n as t,r as n,t as r}from"./color-1gXmuBdm.mjs";import{d as i,u as a}from"./provider-binding-BvvHuohl.mjs";import{n as o,r as s}from"./core-read-observations-Cm0FpEpL.mjs";async function c(r){let c=await o(r);if(!c)return e(t({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return e(n({action:`info`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(e=>({command:a(u,e),label:i(e),type:e.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(r.red(e.error.message));return}if(e.data){console.log(r.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),console.log(` Installed: ${e.data.inspection.installed?r.green(`Yes`):r.red(`No`)}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installed&&console.log(` Lifecycle: ${e.data.inspection.lifecycle}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(r.bold(`
2
+ Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${r.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as infoCommand};
@@ -0,0 +1 @@
1
+ import{t as e}from"./inspect-DyCXX7Tp.mjs";export{e as inspectCommand};
@@ -1,3 +1,3 @@
1
- import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-BGZ_5A6s.mjs";import{r as o}from"./lifecycle-observations-C1OLPUAV.mjs";import{t as s}from"./agent-inspection-PCTn6Nc6.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return n(i({action:`inspect`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},capabilities:{canAutoInstall:d.methods.length>0,canAutoUninstall:d.inPath&&d.lifecycle===`managed`,canRun:d.inPath,canSelfUpdate:f.length>0},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0,updateLabel:d.updateLabel}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));return}if(e.data){console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Installed: ${e.data.inspection.installed?a.green(`Yes`):a.red(`No`)}`),console.log(` Update Mode: ${e.data.inspection.updateLabel}`),console.log(` Self Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(a.bold(`
2
- Capabilities:`)),console.log(` auto-install: ${e.data.capabilities.canAutoInstall?`yes`:`no`}`),console.log(` self-update: ${e.data.capabilities.canSelfUpdate?`yes`:`no`}`),console.log(` auto-uninstall: ${e.data.capabilities.canAutoUninstall?`yes`:`no`}`),console.log(` runnable: ${e.data.capabilities.canRun?`yes`:`no`}`),console.log(a.bold(`
3
- Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${a.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as t};
1
+ import{a as e,n as t,r as n,t as r}from"./color-1gXmuBdm.mjs";import{d as i,u as a}from"./provider-binding-BvvHuohl.mjs";import{n as o,r as s}from"./core-read-observations-Cm0FpEpL.mjs";async function c(r){let c=await o(r);if(!c)return e(t({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return e(n({action:`inspect`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(e=>({command:a(u,e),label:i(e),type:e.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},capabilities:{canAutoInstall:d.methods.length>0,canAutoUninstall:d.inPath&&d.lifecycle===`managed`,canRun:d.inPath,canSelfUpdate:f.length>0},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0,updateLabel:d.updateLabel}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(r.red(e.error.message));return}if(e.data){console.log(r.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Installed: ${e.data.inspection.installed?r.green(`Yes`):r.red(`No`)}`),console.log(` Update Mode: ${e.data.inspection.updateLabel}`),console.log(` Self Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(r.bold(`
2
+ Capabilities:`)),console.log(` auto-install: ${e.data.capabilities.canAutoInstall?`yes`:`no`}`),console.log(` self-update: ${e.data.capabilities.canSelfUpdate?`yes`:`no`}`),console.log(` auto-uninstall: ${e.data.capabilities.canAutoUninstall?`yes`:`no`}`),console.log(` runnable: ${e.data.capabilities.canRun?`yes`:`no`}`),console.log(r.bold(`
3
+ Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${r.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as t};
@@ -0,0 +1 @@
1
+ import{Nt as e,a as t,i as n,n as r,r as i,t as a,z as o}from"./color-1gXmuBdm.mjs";import{m as s}from"./provider-binding-BvvHuohl.mjs";import{_ as c,n as l}from"./agents-DvfpsVAI.mjs";import{t as u}from"./agent-installation-Dsz_I5Li.mjs";import{n as d}from"./lifecycle-observations-31JWXSir.mjs";import{t as f}from"./lifecycle-errors-Cal_j4yT.mjs";import{a as p,i as m,n as h,r as g}from"./user-output-uK6ichvR.mjs";import{o as _}from"./lifecycle-policy-ZKxZhM5R.mjs";async function v(a){let o=_(Array.isArray(a)?a:[a]);if(o.length<=1)return t(await y(o[0],{emitStartedEvent:!0}),A);n({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let s=[];for(let t of o){if(e().cancelled)break;let r=E(t,await y(t));if(s.push(r),n({action:`install`,data:r,target:{kind:`agent`,name:r.agent.name},type:`progress`}),e().cancelled)break}let c={results:s,scope:`batch`,summary:O(s)};return e().cancelled&&s.length<o.length?t(r({action:`install`,data:c,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),j):t(s.some(e=>!e.ok)?r({action:`install`,data:c,error:k(s),target:{kind:`agent`}}):i({action:`install`,data:c,target:{kind:`agent`}}),j)}async function y(t,n={}){if(e().cancelled||!l(t)||h())return b(t,n);try{return await c(()=>b(t,n))}catch(e){if(o(e))return r({action:`install`,...f(e,{kind:`agent`,name:t}),target:{kind:`agent`,name:t}});throw e}}async function b(t,n){if(e().cancelled)return r({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:t}});let i=await d(t);if(!i)return r({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}});let{agent:a}=i,c=i.pathExecutable.present,l=i.installedState,p=c&&!l?s(i.methods,i.resolvedBinaryPath??i.pathExecutable.path):void 0;if(c&&!l&&!p)return w(a);let m=l&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?S(a):C(a,m===`adopt`,!!l);m!==`satisfied`&&T(a,n.emitStartedEvent);try{return x(a,m,await u({adoptableMethod:p,agent:a,observation:{inPath:c,installedState:l,lifecycle:i.observation,methods:i.methods},operation:`install`,route:m}))}catch(e){if(o(e))return r({action:`install`,data:{agent:{displayName:a.displayName,name:a.name},changed:!1,installed:c},...f(e,{kind:`agent`,name:a.name})});throw e}}function x(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return S(e);let r=n.value.value.installedState;return i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:{installType:r.installType,packageName:r.packageName},installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let a=n.kind===`cancelled`?{code:`CANCELLED`,message:`Install was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:n.kind===`failed`&&n.reason.endsWith(`-after-install`)||n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after installation.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:a,target:{kind:`agent`,name:e.name}})}function S(e){return i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function C(e,t,n){return i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function w(e){return i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function T(e,t=!1){t&&n({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function E(e,t){let n=t.data,r=t.warnings.map(e=>({code:e.code,message:e.message}));return{agent:n?.agent??{displayName:e,name:t.target?.name??e},changed:n?.changed??!1,error:t.error?{code:t.error.code,message:t.error.message}:void 0,input:e,installState:n?.installState,installed:n?.installed??!1,ok:t.ok,status:D(t),warnings:r}}function D(e){return e.ok?e.warnings.some(e=>e.code===`TRACKED_EXISTING_INSTALL`)?`tracked-existing-install`:e.warnings.some(e=>e.code===`UNTRACKED_EXISTING_INSTALL`)?`untracked-existing-install`:e.warnings.some(e=>e.code===`ALREADY_INSTALLED`)?`already-installed`:e.warnings.some(e=>e.code===`DRY_RUN`)?`planned`:`installed`:e.error?.code===`RESOURCE_LOCKED`?`locked`:`failed`}function O(e){let t={alreadyInstalled:0,failed:0,installed:0,locked:0,planned:0,trackedExistingInstall:0,untrackedExistingInstall:0};for(let n of e)switch(n.status){case`already-installed`:t.alreadyInstalled+=1;break;case`failed`:t.failed+=1;break;case`installed`:t.installed+=1;break;case`locked`:t.locked+=1;break;case`planned`:t.planned+=1;break;case`tracked-existing-install`:t.trackedExistingInstall+=1;break;case`untracked-existing-install`:t.untrackedExistingInstall+=1;break}return t}function k(e){let t=e.filter(e=>!e.ok),n=new Set(t.map(e=>e.error?.code));return n.size===1&&n.has(`RESOURCE_LOCKED`)?{code:`RESOURCE_LOCKED`,details:{failedAgents:t.map(e=>e.input)},message:`One or more agents could not be installed because another Quantex process is already using the agent lifecycle lock.`}:{code:`INSTALL_FAILED`,details:{failedAgents:t.map(e=>e.input)},message:`One or more agents failed to install.`}}function A(e){if(e.error){g(a.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){m(a.green(t.message));continue}if(t.code===`DRY_RUN`){p(a.cyan(t.message));continue}p(a.yellow(t.message))}return}m(a.cyan(`Installing ${e.data.agent.displayName}...`)),m(a.green(`${e.data.agent.displayName} installed successfully!`))}}function j(e){if(!e.data){e.error&&g(a.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:m(a.cyan(`Installing ${t.agent.displayName}...`)),m(a.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:m(a.green(M(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(a.yellow(M(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(a.cyan(M(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:p(a.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:g(a.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}N(e.data.summary)}function M(e,t){return e[0]?.message??t}function N(e){let t=[e.installed?`installed ${e.installed}`:void 0,e.alreadyInstalled?`already installed ${e.alreadyInstalled}`:void 0,e.trackedExistingInstall?`tracked existing ${e.trackedExistingInstall}`:void 0,e.untrackedExistingInstall?`untracked existing ${e.untrackedExistingInstall}`:void 0,e.failed?`failed ${e.failed}`:void 0,e.locked?`locked ${e.locked}`:void 0,e.planned?`planned ${e.planned}`:void 0].filter(Boolean);t.length>0&&m(a.bold(`Summary: ${t.join(`, `)}`))}export{v as installCommand};
@@ -0,0 +1 @@
1
+ import{C as e,Ct as t,S as n,it as r,nt as i,rt as a,tt as o}from"./color-1gXmuBdm.mjs";import{I as s,ct as c,lt as l,n as u,r as d}from"./agents-CBoMqbP1.mjs";import{h as f,r as p}from"./provider-binding-BvvHuohl.mjs";import{c as m}from"./agents-DvfpsVAI.mjs";import{t as h}from"./agent-observation-DRzJavrO.mjs";function g(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?p(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function _(e,t){return t?v(t).resolveAgentObservation(e):y(t=>t.resolveAgentObservation(e))}function v(t,i={}){return g({clock:()=>new Date().toISOString(),getAllAgents:d,getAgentByNameOrAlias:u,getLatestVersion:(e,n,r)=>S(e,n,r,t),getOrderedInstallMethods:m,getPlatform:c,getResolvedBinaryPath:e=>r(e,t),inspectExecutable:(e,n)=>b(e,n,t),observeAgentLifecycle:h,providerRegistry:s,readInstalledState:n,readReceipt:e,signal:t.signal,timeoutMs:t.timeoutMs},i)}async function y(e){let n=t(),r=v(n.context);try{return await n.run(()=>e(r))}finally{n.dispose()}}async function b(e,t,n){let r=await l(e.binaryName,n);if(!r)return{present:!1};let[i,a]=await Promise.all([o(e.binaryName,n),x(e,t,n)]);return{path:i,present:r,version:a}}async function x(e,t,n){return i(e.binaryName,e.versionProbe,n)}async function S(e,t,n,r){let i=f(e,t,n);return i?a(i,`latest`,{context:r}):void 0}export{_ as n,v as t};
@@ -0,0 +1 @@
1
+ import{Ct as e,pt as t}from"./color-1gXmuBdm.mjs";import{L as n,lt as r}from"./agents-CBoMqbP1.mjs";import{i,t as a}from"./provider-binding-BvvHuohl.mjs";import{n as o,o as s}from"./agents-DvfpsVAI.mjs";import{n as c}from"./lifecycle-observations-31JWXSir.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:z(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:je(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(L),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Oe(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>L(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:z(t.signal)};let r=xe(n);if(!r){let e=n.observation.kind===`absent`&&n.observation.drift.kind===`recorded-absent`;return{before:n,category:e?`stale-state`:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${n.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${n.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}if(we(n.installedState)&&n.agent.selfUpdate){let e=A(n);return e?{kind:`planned`,planned:{before:n,beforeVersion:e,binding:r,commands:[n.agent.selfUpdate.command,...n.agent.selfUpdate.fallbackCommands??[]],planning:Te(n),strategy:`self-update`}}:{before:n,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${n.agent.displayName} self-update because its installed version is unknown.`}}let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return Ee(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:z(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=j(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:Ae(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:M(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=j(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:Ae(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&R(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!R(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function Ce(e,n){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!R(e.binding,n.binding)||n.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(n.observation.kind!==`present`||!n.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=A(n),a=i?t(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:n.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function A(e){let n=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=n[0];return r&&n.every(e=>t(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function j(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${I(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};beforeVersion=${I(t.planned.beforeVersion)};commands=${t.planned.commands.map(P).join(`|`)};plan=${I(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};decision=${r.decision};plan=${I(r.plan.id)};version=${I(i)};${ke(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${I(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${I(t.reason)}`:t.kind===`cancelled`?`${n};reason=${I(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${I(e.operation)};reason=${I(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${I(e.reason)};retryable=${I(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${I(e.exitCode)};reason=${I(e.reason)};remediation=${I(e.remediation)};retryable=${I(e.retryable)}`;case`cancelled`:return`cancelled;reason=${I(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${I(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${I(e.reason)}`}}function P(e){return e?`argv:${e.map(I).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${I(e.kind)}:value=${I(e.value)}`).sort(L).join(`,`)}`:`undefined`}function Oe(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${I(t.binding.providerId)};${ke(t.providerOptions)}`}function ke(e){return`distTag=${I(e?.distTag)};registry=${I(e?.registry)};updateStrategy=${I(e?.updateStrategy)}`}function I(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function L(e,t){return e<t?-1:e>t?1:0}function R(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function z(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Ae(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Me(e,t=e=>o(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Ne(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:o(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=G(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await q(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=G(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Ue(e,r);if(!n)return{kind:`inconclusive`};let i=await q(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:K(i.observation,n)}}}}async function Pe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=G(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await q(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=G(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=We(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await q(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:K(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Fe(e,t={}){let n=t.observe??c,r=Me(e,t.resolveTarget),i=await Promise.all(r.map(e=>J(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await J(n,e);return t.kind===`success`&&t.observation?H(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Re((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ie(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await J(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=H(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ie(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Le(e){try{return d(g(e.items))===d(e)}catch{return!1}}function B(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function V(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Re(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=ze(n[e],r[e]);if(t!==0)return t}return 0})}function ze(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Be(e,t={}){let n=t.observe??c,i=await n(e),a=i?.agent.name??e,o=i?Ge(i):void 0,s=t.observeProviderTarget??Je,l=t.isExecutablePresent??r;return{async captureEvidence(){if(o&&Xe(await Y(s,o.binding),o.binding)&&await Ye(l,o.executableName)===!1)return qe(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Ke({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let r=await J(n,a);if(r.kind===`failed`||!r.observation)return{kind:`inconclusive`};let i=Ve(r.observation);if(i!==`clear`)return{kind:i};let o=await Y(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let c=await Ye(l,t.executableName);return c===void 0?{kind:`inconclusive`}:c?{kind:`drifted`}:{kind:`satisfied`}}}}function Ve(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function He(e,t,n={}){let r=await(n.observe??c)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??c)(i);if(!e)return;let t=H(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??c)(i);if(!t)return{kind:`inconclusive`};let r=H(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function H(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=U([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=U([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=U([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=U([o.executablePath,W(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function U(e){return[...new Set(e.filter(e=>e!==void 0))]}function W(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ue(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=W(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=W(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ze(c)||!Qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function We(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=Ue({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function G(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=K(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=U([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function K(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!a(i,e.binding,e.agent.binaryName)||!a(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let o=U([e.executable.version,e.observation.version]);if(o.length===0)return`inconclusive`;if(o.length>1)return`drifted`;let s=t(o[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function q(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ge(e){let t=e.receipt?i(e.receipt):void 0;if(!(!t||!e.binding||!a(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Ke(e,t){let n=W(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=W(e.receipt,`executableName`),a=W(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ze(o)||!Qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function qe(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Je(t){let n=e();try{return await n.run(()=>s(t,{signal:n.context.signal,timeoutMs:n.context.timeoutMs}))}finally{n.dispose()}}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Y(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ye(e,t){try{return await e(t)}catch{return}}function Xe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ze(e){return n.includes(e)}function Qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Ne as a,ve as c,re as d,d as f,He as i,he as l,Fe as n,Me as o,Pe as r,pe as s,Be as t,_e as u};
@@ -0,0 +1,3 @@
1
+ import{a as e,r as t,t as n}from"./color-1gXmuBdm.mjs";import{r,t as i}from"./core-read-observations-Cm0FpEpL.mjs";async function a(){return e(t({action:`list`,data:{agents:(await i()).map(r).map(e=>({binaryName:e.agent.binaryName,displayName:e.agent.displayName,installed:e.inPath,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,name:e.agent.name,sourceLabel:e.sourceLabel,updateLabel:e.updateLabel}))},target:{kind:`system`,name:`agents`}}),o)}function o(e){console.log(n.bold(`
2
+ AI Agents:
3
+ `));for(let t of e.data?.agents??[]){let e=t.displayName.padEnd(18),r=t.installed?n.green(`installed`):n.gray(`not installed`),i=t.installed?n.dim(t.installedVersion??`unknown version`):``,a=t.installed?n.cyan(t.updateLabel):``,o=t.installed?n.dim(t.sourceLabel):``;console.log(` ${e} ${r} ${i}${a?` ${a}`:``}${o?` ${o}`:``}`)}console.log()}export{a as listCommand};