quantex-cli 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +10 -10
  2. package/README.zh-CN.md +10 -10
  3. package/dist/agent-installation-CC7b92Lg.mjs +1 -0
  4. package/dist/agent-observation-CRB402ql.mjs +1 -0
  5. package/dist/agents-D_evv3iI.mjs +1 -0
  6. package/dist/agents-T-kpsmCW.mjs +1 -0
  7. package/dist/capabilities-grYk5oHD.mjs +5 -0
  8. package/dist/capabilities-wSW7O9K9.mjs +1 -0
  9. package/dist/child-process-CBKnpMWt.mjs +1 -0
  10. package/dist/cli-context-xudTdmO7.mjs +1 -0
  11. package/dist/cli-operation-context-9cYbrgIi.mjs +1 -0
  12. package/dist/cli-operation-context-QEqKxWgM.mjs +1 -0
  13. package/dist/cli.mjs +1 -1
  14. package/dist/color-BAlKATeY.mjs +1 -0
  15. package/dist/commands-BuUDcQrt.mjs +3 -0
  16. package/dist/commands-sYTYFFCw.mjs +1 -0
  17. package/dist/config-BxpAHhRY.mjs +3 -0
  18. package/dist/core-installation-cli-C9ej33OW.mjs +1 -0
  19. package/dist/core-read-observations-BQLHb148.mjs +1 -0
  20. package/dist/detect-BdnZzKbm.mjs +1 -0
  21. package/dist/doctor-CuljlwNn.mjs +3 -0
  22. package/dist/ensure-ChKutOVG.mjs +1 -0
  23. package/dist/ensure-CrY2orgM.mjs +1 -0
  24. package/dist/errors-BE_UKvvM.mjs +1 -0
  25. package/dist/file-store-Caz7fnAB.mjs +1 -0
  26. package/dist/index.mjs +2 -2
  27. package/dist/info-Btit6nFi.mjs +2 -0
  28. package/dist/inspect-C0MzsPU2.mjs +3 -0
  29. package/dist/inspect-kPreC_XR.mjs +1 -0
  30. package/dist/install-oVJ4PYF7.mjs +1 -0
  31. package/dist/installation-compatibility-BUIdD4fg.mjs +1 -0
  32. package/dist/installation-executor-DvXaa9X4.mjs +1 -0
  33. package/dist/installation-production-BXWTdqW5.mjs +1 -0
  34. package/dist/installation-provider-registry-Cs3gM0wK.mjs +1 -0
  35. package/dist/installation-routing-BV8ZnVFY.mjs +1 -0
  36. package/dist/installation-routing-Cyn08Qdm.mjs +1 -0
  37. package/dist/invocation-hZT7H6Sx.mjs +1 -0
  38. package/dist/lifecycle-observations-DuXTdiJE.mjs +1 -0
  39. package/dist/lifecycle-policy-BwXMvFde.mjs +1 -0
  40. package/dist/list-B9P46aKI.mjs +3 -0
  41. package/dist/mutation-recipe-catalog-Cr-4qobK.mjs +1 -0
  42. package/dist/npm-BMnWqkaW.mjs +4 -0
  43. package/dist/output-Bf3N0Tjs.mjs +5 -0
  44. package/dist/production-observation-CU1HQ10p.mjs +1 -0
  45. package/dist/provider-binding-DMLQQGPh.mjs +1 -0
  46. package/dist/provider-evidence-BnvMbSP7.mjs +1 -0
  47. package/dist/provider-observation-registry-l4duFenx.mjs +3 -0
  48. package/dist/{provider-observations-CRG1GCgp.mjs → provider-observations-CYYOshQ4.mjs} +1 -1
  49. package/dist/providers-gOIzOEnz.mjs +1 -0
  50. package/dist/registry-N9jeGQcX.mjs +1 -0
  51. package/dist/resolve-9iHuKOrC.mjs +1 -0
  52. package/dist/resolve-DqExBCue.mjs +1 -0
  53. package/dist/schema-BZLalYTL.mjs +1 -0
  54. package/dist/schema-D9JJUXYr.mjs +3 -0
  55. package/dist/schema-hCKyxJjR.mjs +1 -0
  56. package/dist/types-D3y_n7iy.mjs +1 -0
  57. package/dist/uninstall-DPlb_f05.mjs +1 -0
  58. package/dist/unmanaged-install-compatibility-BGcxxHZb.mjs +1 -0
  59. package/dist/update-C8mg46ew.mjs +1 -0
  60. package/dist/{update-planner-IgFzteV-.mjs → update-planner-D1_UjTb8.mjs} +1 -1
  61. package/dist/upgrade-lmvEjYEd.mjs +1 -0
  62. package/dist/user-output-C4bJjtc-.mjs +1 -0
  63. package/dist/version-cache-BdkaOTM-.mjs +1 -0
  64. package/dist/winget-C-UHM_On.mjs +2 -0
  65. package/package.json +2 -2
  66. package/dist/agent-installation-Dsz_I5Li.mjs +0 -1
  67. package/dist/agent-observation-DRzJavrO.mjs +0 -1
  68. package/dist/agents-CBoMqbP1.mjs +0 -2
  69. package/dist/agents-DvfpsVAI.mjs +0 -1
  70. package/dist/capabilities-CQZ0SLgD.mjs +0 -1
  71. package/dist/capabilities-C_gPEld2.mjs +0 -5
  72. package/dist/color-1gXmuBdm.mjs +0 -8
  73. package/dist/commands-84XyphJp.mjs +0 -1
  74. package/dist/commands-DiZ3IIz4.mjs +0 -3
  75. package/dist/config-C335pFul.mjs +0 -3
  76. package/dist/core-read-observations-Cm0FpEpL.mjs +0 -3
  77. package/dist/doctor-YObQVc1Y.mjs +0 -3
  78. package/dist/ensure-BqcmFFyN.mjs +0 -1
  79. package/dist/ensure-CSntyBTb.mjs +0 -1
  80. package/dist/errors-BrmJuMg3.mjs +0 -1
  81. package/dist/info-B4Gr79vU.mjs +0 -2
  82. package/dist/inspect-DSnK5oMu.mjs +0 -1
  83. package/dist/inspect-DyCXX7Tp.mjs +0 -3
  84. package/dist/install-BKh0kreC.mjs +0 -1
  85. package/dist/lifecycle-observations-31JWXSir.mjs +0 -1
  86. package/dist/lifecycle-policy-ZKxZhM5R.mjs +0 -1
  87. package/dist/list-BrePsdOM.mjs +0 -3
  88. package/dist/provider-binding-BvvHuohl.mjs +0 -1
  89. package/dist/resolve-B594qXY6.mjs +0 -1
  90. package/dist/resolve-CCeMk9aY.mjs +0 -1
  91. package/dist/schema-C2S3d_Cu.mjs +0 -3
  92. package/dist/schema-CgTSwXpy.mjs +0 -1
  93. package/dist/uninstall-5ZK3juO1.mjs +0 -1
  94. package/dist/update-DQR-B9S-.mjs +0 -1
  95. package/dist/upgrade-kK57LorF.mjs +0 -1
  96. package/dist/user-output-uK6ichvR.mjs +0 -1
  97. package/dist/version-cache-CJ0R5HZJ.mjs +0 -1
  98. /package/dist/{errors-BD4Gc9Rp.mjs → errors-D-W3vO4v.mjs} +0 -0
  99. /package/dist/{lifecycle-errors-Cal_j4yT.mjs → lifecycle-errors-DGA1j4MM.mjs} +0 -0
@@ -1,3 +0,0 @@
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};
@@ -1 +0,0 @@
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};
@@ -1 +0,0 @@
1
- import{t as e}from"./ensure-BqcmFFyN.mjs";export{e as ensureCommand};
@@ -1 +0,0 @@
1
- import{r as e}from"./errors-BD4Gc9Rp.mjs";export{e as getExitCodeForResult};
@@ -1,2 +0,0 @@
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};
@@ -1 +0,0 @@
1
- import{t as e}from"./inspect-DyCXX7Tp.mjs";export{e as inspectCommand};
@@ -1,3 +0,0 @@
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};
@@ -1 +0,0 @@
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};
@@ -1 +0,0 @@
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};
@@ -1 +0,0 @@
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};
@@ -1,3 +0,0 @@
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};
@@ -1 +0,0 @@
1
- import{I as e,L as t}from"./agents-CBoMqbP1.mjs";const n=Object.freeze(e.list().filter(t=>{let n=e.getCapabilities(t.id);return n.includes(`update`)&&n.includes(`uninstall`)}).map(e=>e.id));function r(t){let n=e.getCapabilities(t);if(!n.includes(`install`))throw Error(`First-party provider ${t} must implement install`);let r=n.includes(`update`),i=n.includes(`uninstall`);return{canInstall:!0,canLookupLatestVersion:n.includes(`resolve-latest-version`),canUninstall:i,canUpdate:r,lifecycle:r&&i?`managed`:`unmanaged`}}function i(){return n}function a(e){return n.includes(e)}function o(e){return r(e).lifecycle}function s(e){return r(e).canUpdate}function c(e){return r(e).canUninstall}function l(e){return r(e).canLookupLatestVersion}function u(e,t){return e?t===`cask`?` (${e} cask)`:t===`id`?` (${e} id)`:` (${e})`:``}function d(e,t){if(t.packageName)return t.packageName;if(t.type===`cargo`)return e.packages?.cargo;if(t.type===`deno`)return e.packages?.deno;if(t.type===`mise`)return e.packages?.mise;if(t.type===`pip`)return e.packages?.pip;if(t.type===`uv`)return e.packages?.uv;if(t.type===`bun`||t.type===`npm`)return e.packages?.npm}function f(e){return e?s(e.installType):!1}function p(e,t){return f(t)||!!e.selfUpdate}function m(e){return!!e&&l(e.installType)}function h(e){return e.length>0&&e.every(e=>l(e.type))}function g(e){return a(e.type)?`${o(e.type)}/${e.type}${u(e.packageName,e.packageTargetKind)}`:e.type===`script`?`unmanaged/script`:`unmanaged/binary`}function _(e){return e?a(e.installType)?`managed via ${e.installType}${u(e.packageName,e.packageTargetKind)}`:e.installType===`script`?`script installer`:`binary installer`:`detected in PATH`}function v(e,t){let n=A({agent:e,installedState:t,methods:[]});return n===`managed`?`managed update`:n===`self-update`?`command update`:`manual update`}function y(e,t){if(t.type===`bun`){let n=d(e,t);return n?`bun add -g ${n}`:``}if(t.type===`npm`){let n=d(e,t);return n?`npm i -g ${n}`:``}if(t.type===`brew`)return t.packageName?t.packageTargetKind===`cask`?`brew install --cask ${t.packageName}`:`brew install ${t.packageName}`:``;if(t.type===`cargo`){let n=d(e,t);return n?[`cargo`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}if(t.type===`deno`){let n=d(e,t);return n?[`deno`,`install`,`--global`,...t.packageInstallArgs??[],n].join(` `):``}if(t.type===`mise`){let n=d(e,t);return n?`mise use --global ${n}`:``}if(t.type===`pip`){let n=d(e,t);return n?`pip install ${n}`:``}if(t.type===`uv`){let n=d(e,t);return n?[`uv`,`tool`,`install`,n,...t.packageInstallArgs??[]].join(` `):``}return t.type===`winget`?t.packageName?`winget install --id ${t.packageName} -e`:``:t.command??``}function b(e,t,n){if(t)return m(t)&&(t.packageName||e.packages?.npm)||void 0;if(!(!e.packages?.npm||!h(n)))return e.packages.npm}function x(e,t){let n=S(t);if(n){let t=e.find(e=>e.type===n);if(t)return t}if(e.length!==1)return;let[r]=e;if(!(r.type!==`script`&&r.type!==`binary`))return r}function S(e){if(!e)return;let t=e.replaceAll(`\\`,`/`);if(t.includes(`/.bun/bin/`)||t.includes(`/.bun/install/global/`))return`bun`;if(t.includes(`/.local/share/mise/shims/`)||t.includes(`/.mise/shims/`))return`mise`;if(C(t))return`npm`}function C(e){return e.includes(`/node_modules/.bin/`)?!1:e.includes(`/lib/node_modules/`)||e.includes(`/AppData/Roaming/npm/`)||e.includes(`/.nvm/versions/node/`)||e.includes(`/.fnm/node-versions/`)||e.includes(`/.volta/tools/image/node/`)}function w(e){if(e.installedState)return a(e.installedState.installType)?e.installedState.installType:void 0;for(let t of e.methods)if(a(t.type)&&s(t.type))return t.type}const T={strategy:`managed`,canHandle:e=>!!w(e),getManagedInstallerType:e=>w(e)},E={strategy:`self-update`,canHandle:e=>!f(e.installedState)&&!!e.agent.selfUpdate},D={strategy:`manual-hint`,canHandle:()=>!0},O=[T,E,D];function k(e){return O.find(t=>t.canHandle(e))??D}function A(e){return k(e).strategy}function j(e){return p(e.agent,e.installedState)}function M(e,t){let n=z(t.installType);if(!n)return;let r=L(e,t);if(r)return{providerId:n,target:{...t.packageInstallArgs?.length?{arguments:t.packageInstallArgs}:{},...t.binaryName||n===`binary`||n===`script`||n===`deno`?{binaryName:t.binaryName??e.binaryName}:{},id:r,kind:R(n,t.packageTargetKind)}}}function N(e){let t=z(e.providerId);if(!(!t||e.providerTargetId.length===0)&&!(t===`brew`&&e.providerTargetKind!==`cask`&&e.providerTargetKind!==`formula`))return{providerId:t,target:{...e.executableName?{binaryName:e.executableName}:{},id:e.providerTargetId,kind:e.providerTargetKind??R(t)}}}function P(e,t){return M(e,{agentName:e.name,...t.binaryName?{binaryName:t.binaryName}:{},...t.command?{command:t.command}:{},installType:t.type,...t.packageInstallArgs?{packageInstallArgs:t.packageInstallArgs}:{},...t.packageName?{packageName:t.packageName}:{},...t.packageTargetKind?{packageTargetKind:t.packageTargetKind}:{}})}function F(e,t){let n=(e.platforms[t]??[]).map(t=>({binding:P(e,t),method:t})),r=n.map(e=>e.binding).filter(e=>e!==void 0);return{bindings:r.filter((t,n)=>r.findIndex(n=>I(n,t,e.binaryName))===n),unresolvedCandidates:n.filter(e=>e.binding===void 0).map(e=>e.method)}}function I(e,t,n){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&(e.target.binaryName??n)===(t.target.binaryName??n)}function L(e,t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;switch(t.installType){case`bun`:case`npm`:return e.packages?.npm;case`cargo`:return e.packages?.cargo;case`deno`:return e.packages?.deno;case`mise`:return e.packages?.mise;case`pip`:return e.packages?.pip;case`uv`:return e.packages?.uv;case`binary`:case`script`:return e.binaryName;case`brew`:case`winget`:return}}function R(e,t){switch(e){case`binary`:return`binary`;case`brew`:return t===`cask`?`cask`:`formula`;case`deno`:case`mise`:case`uv`:return`tool`;case`script`:return`script`;case`winget`:return`id`;case`bun`:case`cargo`:case`npm`:case`pip`:return`package`}}function z(e){return t.includes(e)?e:void 0}export{a as C,i as S,l as _,M as a,o as b,A as c,g as d,_ as f,d as g,b as h,N as i,k as l,x as m,F as n,O as o,v as p,P as r,j as s,I as t,y as u,c as v,r as x,s as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./resolve-CCeMk9aY.mjs";export{e as resolveCommand};
@@ -1 +0,0 @@
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:`resolve`,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);if(!d.inPath||!d.binaryPath){let n=d.methods.map(e=>({command:a(u,e),label:i(e),type:e.type})).filter(e=>e.command);return e(t({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:n,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:n,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},message:`${u.displayName} is not installed.`},target:{kind:`agent`,name:u.name}}),l)}return e(n({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:d.binaryPath,installed:!0,installSource:d.installedState?.installType??`detected-in-path`,installedVersion:d.installedVersion,lifecycle:d.lifecycle,sourceLabel:d.sourceLabel,suggestedLaunchCommand:[d.binaryPath]}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(r.red(e.error.message));let t=e.data?.resolution.installGuidance;if(t){console.log(r.dim(`Try: ${t.suggestedEnsureCommand}`));for(let e of t.installMethods)console.log(r.dim(`Install: [${e.label}] ${e.command}`))}return}e.data&&(console.log(r.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Path: ${e.data.resolution.binaryPath}`),console.log(` Source: ${e.data.resolution.sourceLabel}`),console.log(` Lifecycle: ${e.data.resolution.lifecycle}`),console.log(` Install Type: ${e.data.resolution.installSource}`),e.data.resolution.installedVersion&&console.log(` Version: ${e.data.resolution.installedVersion}`),console.log(` Launch: ${e.data.resolution.suggestedLaunchCommand.join(` `)}`),console.log())}export{c as t};
@@ -1,3 +0,0 @@
1
- import{W as e,a as t,n,r,t as i}from"./color-1gXmuBdm.mjs";async function a(e){let i=s(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(n({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),o):t(r({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),o)}function o(e){if(e.error){console.log(i.red(e.error.message));return}if(e.data){console.log(i.bold(`
2
- Quantex Schemas
3
- `));for(let t of e.data.commands)console.log(` ${i.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function s(){return e().map(e=>e.schema)}export{a as n,s as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./schema-C2S3d_Cu.mjs";export{e as schemaCommand};
@@ -1 +0,0 @@
1
- import{C as e,M as t,N as n,Nt as r,O as i,S as a,a as o,k as s,n as c,r as l,t as u,z as d}from"./color-1gXmuBdm.mjs";import{lt as f}from"./agents-CBoMqbP1.mjs";import{a as p,i as m,v as h}from"./provider-binding-BvvHuohl.mjs";import{_ as g,m as _,n as v,o as y}from"./agents-DvfpsVAI.mjs";import{t as b}from"./lifecycle-errors-Cal_j4yT.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-uK6ichvR.mjs";const T=e=>new Promise(t=>setTimeout(t,e));async function E(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??T,i=Math.max(0,t.delayMs??100);for(let a=0;a<n;a+=1){if(t.signal?.aborted||t.isCancelled?.())return!1;let o=await e();if(t.signal?.aborted||t.isCancelled?.())return!1;if(o)return!0;a+1<n&&await r(i)}return!1}async function D(u){let y=v(u);if(!y)return o(c({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:u},message:`Unknown agent: ${u}`},target:{kind:`agent`,name:u}}),P);try{return await g(async()=>{let[c,d]=await Promise.all([a(y.name),e(y.name)]);if(!c&&!d)return o(N(u,y),P);let g=await f(y.binaryName),v=c?p(y,c):void 0,b=d?m(d):void 0;if(c&&!v||d&&!b)return o(A(y,`indeterminate-source`,`Cannot resolve provider evidence for ${y.displayName}.`),P);if(v&&b&&!O(v,b))return o(A(y,`conflicting-source`,`Recorded sources disagree for ${y.displayName}.`),P);let x=v??b,S=await k(x);return S.kind===`success`?S.value.kind===`absent`?g?o(A(y,`conflicting-source`,`${y.displayName} is on PATH but its recorded provider target is absent.`),P):C()?o(j(y,`would reconcile stale lifecycle evidence`),P):(c&&await i(y.name),d&&await s(y.name),o(M(y),P)):c?C()?o(j(y,`would uninstall ${y.displayName}`),P):h(c.installType)?(d||await n({...x.target.binaryName?{executableName:x.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:x.providerId,providerTargetId:x.target.id,providerTargetKind:x.target.kind,schemaVersion:1,targetId:y.name,verifiedAt:new Date().toISOString(),...S.value.executablePath?{executablePath:S.value.executablePath}:{},...S.value.version?{version:S.value.version}:{}}),(await _(y,c)).kind===`success`?await E(async()=>{let e=await k(x);return e.kind!==`success`||e.value.kind!==`absent`?!1:!await f(y.binaryName)},{isCancelled:()=>!!r().cancelled})?(await s(y.name),o(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)):(await t(c),o(A(y,`verification-failed`,`${y.displayName} is still present after provider removal.`),P)):o(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P)):(await _(y,c)).kind===`success`?(await s(y.name),o(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)):o(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P):o(A(y,`indeterminate-source`,`Cannot safely reconstruct ${y.displayName}'s uninstall source.`),P):o(A(y,`indeterminate-source`,`Cannot verify provider state for ${y.displayName}.`),P)})}catch(e){if(d(e))return o(c({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!1},...b(e,{kind:`agent`,name:y.name})}),P);throw e}}function O(e,t){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&e.target.binaryName===t.target.binaryName}async function k(e){let t=r(),n=new AbortController;return t.cancelled&&n.abort(`cli-cancelled`),y(e,{signal:n.signal,timeoutMs:t.timeoutMs})}function A(e,t,n){return c({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:t},message:n},target:{kind:`agent`,name:e.name}})}function j(e,t){return l({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${t}.`}]})}function M(e){return l({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.displayName} was already absent; stale lifecycle evidence was removed.`}]})}function N(e,t){return c({action:`uninstall`,data:{agent:{displayName:t.displayName,name:t.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:t.displayName,input:e,lifecycle:`unmanaged`,name:t.name},message:`${t.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${t.name} for details.`},target:{kind:`agent`,name:t.name}})}function P(e){if(e.error){w(u.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)x(u.yellow(t.message));return}S(u.cyan(`Uninstalling ${e.data.agent.displayName}...`)),S(u.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{D as uninstallCommand};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{Ct as r,E as i,Nt as a,a as o,i as s,n as c,r as l,t as u,ut as d,xt as f,z as p}from"./color-1gXmuBdm.mjs";import{I as m,r as h}from"./agents-CBoMqbP1.mjs";import{c as g}from"./provider-binding-BvvHuohl.mjs";import{_,n as v}from"./agents-DvfpsVAI.mjs";import{t as y}from"./update-planner-IgFzteV-.mjs";import{t as b}from"./lifecycle-observations-31JWXSir.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-uK6ichvR.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-ZKxZhM5R.mjs";async function j(e){let t;for(let n of e.commands){let r=await f(n,e.context,`agent self-update failed`);if(r.kind===`success`)return{kind:`success`,value:{evidence:[{kind:`command`,value:n.join(` `)}],target:e.target}};if(r.kind===`cancelled`||r.kind===`timed-out`)return r;t=r}return t??{kind:`unsupported`,operation:`update`,reason:`No self-update command is configured.`}}async function M(){let e=N();try{return await e.run()}finally{e.dispose()}}function N(){let e=r(),t=0,n=!1,a=!1,o,s,c,l,u=()=>{!n||a||t>0||(a=!0,e.dispose())},f=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,u()}},g=()=>(c??=d().then(t=>{let n=b(e.context);return{classifyMutationLockError:e=>p(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,listRegisteredAgentNames:()=>h().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:m,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:i.write}}),c),v=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(s??=f(async()=>D(await g())),s);return{dispose(){n||(n=!0,u())},getOutcome:()=>o,async observe(e){return f(async()=>(await g()).observe(e))},prepare:v,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(l??=(async()=>{let e=await v();return o=await f(async()=>k(e,await g())),o})(),l)}}}async function P(e){let t=F(e);try{return await t.run()}finally{t.dispose()}}function F(e){let t=r(),n=0,a=!1,o=!1,s,c,l,u,f=()=>{!a||o||n>0||(o=!0,t.dispose())},p=async e=>{if(a)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},h=()=>(l??=d().then(e=>{let n=b(t.context);return{clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:m,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:i.write}}),l),g=()=>a?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(c??=p(async()=>A(e,await h())),c);return{dispose(){a||(a=!0,f())},getOutcome:()=>s,async observe(e){return p(async()=>(await h()).observe(e))},prepare:g,run(){return a?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(u??=(async()=>{let e=await g();return s=e.kind===`planned`?await p(async()=>E(e.planned,await h())):e,s})(),u)}}}async function I(e,t,n={runBatch:M,runSingle:P}){if(t)return R(n);if(!e)return o(c({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Z);let r=v(e);return r?z(r,n):o(c({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Z)}function L(e,t){if(t){let t=N();return{dispose:t.dispose,idempotencyPolicy:()=>O(t),run:()=>I(e,!0,{runBatch:()=>t.run(),runSingle:P})}}if(!e)return{dispose(){},run:()=>I(e,t)};let n=F(e);return{dispose:n.dispose,idempotencyPolicy:()=>T(e,n),run:()=>I(e,!1,{runBatch:M,runSingle:()=>n.run()})}}async function R(e){s({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=H(t),r=G(t);return Y(t)?o(c({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`},warnings:r}),Z):n.some(e=>e.status===`failed`||e.status===`locked`)?o(c({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`},warnings:r}),Z):o(l({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`},warnings:r}),Z)}async function z(e,t){s({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!p(t))throw t;return o(c({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),Z)}let r=V(n);if(n.kind===`unknown-agent`)return o(c({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),Z);if(r?.observation.kind===`absent`){let t=r.observation.drift.kind===`recorded-absent`?[K(e)]:[];return o(c({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Z)}let i=B(e,n);return X([],i),n.kind===`cancelled`?o(c({action:`update`,data:{results:[i],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Z):i.status===`failed`||i.status===`locked`?o(c({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Z):o(l({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name}}),Z)}function B(n,r){let i=V(r),a=`plan`in r?r.plan:void 0,o=i?.observation.kind===`present`?i.observation.version:void 0,s=q(a),c=J(a)??i?.binding?.providerId;switch(r.kind){case`updated`:return{displayName:n.displayName,installedVersion:o,latestVersion:r.receipt.version??s,name:n.name,status:`updated`,strategy:c};case`up-to-date`:return{displayName:n.displayName,installedVersion:r.receipt.version??o,name:n.name,status:`up-to-date`,strategy:c};case`dry-run`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Dry run: would update ${n.displayName}.`,name:n.name,status:`planned`,strategy:c};case`not-executed`:return r.plan.planning.decision===`up-to-date`?{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`up-to-date`}:{displayName:n.displayName,installedVersion:o,latestVersion:s,message:e(n),name:n.name,status:`manual-required`};case`blocked`:return r.category===`untracked`?{displayName:n.displayName,installedVersion:o,message:t(n),name:n.name,status:`manual-required`}:r.category===`manual-required`?{displayName:n.displayName,installedVersion:o,message:e(n),name:n.name,status:`manual-required`}:{displayName:n.displayName,installedVersion:o,message:r.reason,name:n.name,status:`failed`};case`cancelled`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.reason??`Update was cancelled before it could complete.`,name:n.name,status:`failed`,strategy:c};case`timed-out`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Update timed out after ${r.timeoutMs}ms.`,name:n.name,status:`failed`,strategy:c};case`provider-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`failed`,strategy:c};case`verification-failed`:case`receipt-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.kind===`receipt-failed`?r.reason:r.verification.reason,name:n.name,status:`failed`,strategy:c};case`unknown-agent`:return{displayName:n.displayName,name:n.name,status:`failed`}}}function V(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function H(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);if(e){let t=U(e);t&&X(r,t)}else a&&X(r,W(a))}return r}function U(e){let t=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=v(e.agentName);if(!r)return{displayName:t?.agent.displayName??e.agentName,name:e.agentName,status:`failed`};let i=e.execution;if(e.planning.kind===`blocked`&&e.planning.category===`stale-state`)return;if(i?.kind===`locked`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:q(i.plan),message:i.reason,name:r.name,resource:i.resource,status:`locked`,strategy:J(i.plan)};if(i?.kind===`unexpected-failure`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:q(i.plan),message:i.reason,name:r.name,status:`failed`,strategy:J(i.plan)};let a=i??(e.planning.kind===`planned`?{kind:`not-executed`,plan:e.planning.planned}:e.planning),o=B(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=n(r,g({agent:r,installedState:t?.installedState,methods:[...t?.methods??[]]}))),o}function W(e){let t=v(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:q(e.planning.planned),message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:J(e.planning.planned)}}function G(e){return e.plan.targets.flatMap(e=>e.outcome.kind!==`blocked`||e.outcome.category!==`stale-state`?[]:[K(v(e.agentName)??e.outcome.before.agent)])}function K(e){return{code:`AGENT_STALE_STATE`,details:{agentName:e.name,suggestedAction:`reconcile-agent-state`,suggestedCommands:[`quantex uninstall ${e.name}`]},message:`${e.displayName} is not installed but has stale lifecycle evidence. Run \`quantex uninstall ${e.name}\` to reconcile it.`}}function q(e){return e?.strategy===`managed-provider`?e.plannedTargetVersion:void 0}function J(e){if(e)return e.strategy===`self-update`?`self-update`:`managed/${e.binding.providerId}`}function Y(e){return a().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function X(e,t){e.push(t),s({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Z(e){if(!e.data){e.error&&w(u.red(e.error.message));return}for(let t of e.warnings)x(u.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:S(u.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:x(u.yellow(`${t.displayName}: manual action required.`)),t.message&&x(u.cyan(`Next step: ${t.message}`));break;case`planned`:x(u.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${Q(t.installedVersion,t.latestVersion)}`));break;case`updated`:S(u.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),S(u.green(`${t.displayName} updated successfully!`));break;case`failed`:S(u.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),w(u.red(`Failed to update ${t.displayName}.`)),t.hint&&x(u.cyan(`Next step: ${t.hint}`));break;case`locked`:x(u.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&$(e.data.results),!e.data.results.length&&e.error&&w(u.red(e.error.message))}function Q(e,t){return e?` (${e} -> ${t??`latest`})`:``}function $(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&S(u.bold(`Summary: ${n.join(`, `)}`))}export{L as createUpdateCommandInvocation};
@@ -1 +0,0 @@
1
- import{At as e,Nt as t,Ot as n,Pt as r,a as i,b as a,d as o,f as s,h as c,l,n as u,p as d,pt as f,r as p,t as m,wt as h}from"./color-1gXmuBdm.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-uK6ichvR.mjs";import{n as b,t as x}from"./version-cache-CJ0R5HZJ.mjs";const S={platform:process.platform,spawn:(e,t)=>n(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:e,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=t(),n=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&n.cancel(`cancelled`);let i=r(()=>n.cancel(`cancelled`)),a=!1,o={plan:e=>d({context:e.context,metadataCache:e.metadataCache,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>l(e,t)};return{dispose(){a||(a=!0,i())},run:e=>k(e,n,o)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:c(),network:T(),persistence:a(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}function P(e){if(e===`stable`||e===`beta`)return e}async function F(e={}){let t=v(),n=j(),r=await n.run({check:e.check??!1,dryRun:t,updateChannel:e.channel}).finally(()=>n.dispose());if(r.kind===`interrupted`)throw new h({kind:`cancelled`,reason:r.error.message});let a=r.plan,c=s(a),l=L(c),d=z(c);if(a.status===`up-to-date`)return i(p({action:`upgrade`,data:{canAutoUpdate:c.canAutoUpdate,channel:c.updateChannel,currentVersion:c.currentVersion,installSource:c.installSource,latestVersion:c.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...l,...d?[d]:[]]}),I);if(e.check||t)return a.status===`update-available`?i(p({action:`upgrade`,data:{canAutoUpdate:c.canAutoUpdate,channel:c.updateChannel,currentVersion:c.currentVersion,installSource:c.installSource,latestVersion:c.latestVersion,status:`update-available`},exitCode:e.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...l,...d?[d]:[],...t?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),I):i(u({action:`upgrade`,data:{canAutoUpdate:c.canAutoUpdate,channel:c.updateChannel,currentVersion:c.currentVersion,installSource:c.installSource,status:`check-unavailable`},error:{code:`NETWORK_ERROR`,message:`Unable to determine the latest Quantex CLI version.`},target:{kind:`self`,name:`quantex`},warnings:[...l,...d?[d]:[]]}),I);if(a.status===`manual-required`){let e=o(c);return i(u({action:`upgrade`,data:{canAutoUpdate:c.canAutoUpdate,channel:c.updateChannel,currentVersion:c.currentVersion,installSource:c.installSource,latestVersion:c.latestVersion,recoveryHint:e,status:`manual-required`},error:{code:`MANUAL_ACTION_REQUIRED`,message:`Quantex CLI cannot auto-update from the current install source: ${c.installSource}.`},target:{kind:`self`,name:`quantex`},warnings:[...l,...d?[d]:[]]}),I)}if(r.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let f=r.result;if(f.success)return i(p({action:`upgrade`,data:{canAutoUpdate:c.canAutoUpdate,channel:c.updateChannel,currentVersion:c.currentVersion,installSource:c.installSource,latestVersion:c.latestVersion,status:`updated`},target:{kind:`self`,name:`quantex`},warnings:[...l,...d?[d]:[]]}),I);let m=o(c,f);return i(u({action:`upgrade`,data:{canAutoUpdate:c.canAutoUpdate,channel:c.updateChannel,currentVersion:c.currentVersion,installSource:c.installSource,latestVersion:c.latestVersion,recoveryHint:m,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:f.error?.kind?{kind:f.error.kind}:void 0,message:f.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...l,...m?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${m}`}]:[]]}),I)}function I(e){if(!e.data){e.error&&y(m.red(e.error.message));return}if(e.data.status===`up-to-date`){_(m.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),R(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;g(m.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),R(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(m.yellow(e.error.message)),R(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){g(m.yellow(e.error.message)),e.data.recoveryHint&&g(m.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(_(m.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){_(m.green(`Quantex CLI upgraded successfully.`)),R(e.warnings);return}y(m.red(`Failed to upgrade Quantex CLI.`)),g(m.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)g(m.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function L(e){return!e.latestVersion||!e.upstreamLatestVersion||e.latestVersion===e.upstreamLatestVersion||e.installSource!==`bun`&&e.installSource!==`npm`?[]:[{code:`MIRROR_LAG`,details:{installableLatestVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion},message:`The selected registry currently installs ${e.latestVersion}, while upstream npm has ${e.upstreamLatestVersion}. Retry later or set selfUpdateRegistry / QTX_SELF_UPDATE_REGISTRY to another registry if you need the upstream release now.`}]}function R(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(m.yellow(t.message))}function z(e){if(!e.latestVersion)return;let t=f(e.latestVersion,e.currentVersion);if(!(t===void 0||t>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:e.currentVersion,latestVersion:e.latestVersion},message:`The resolved latest version ${e.latestVersion} is older than the installed Quantex CLI ${e.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{P as resolveUpgradeChannelOption,F as upgradeCommand};
@@ -1 +0,0 @@
1
- import{Nt as e}from"./color-1gXmuBdm.mjs";import t from"node:process";const n={debug:4,error:1,info:3,silent:0,warn:2};function r(e){o(`info`)&&t.stdout.write(`${e}\n`)}function i(e){o(`warn`)&&t.stdout.write(`${e}\n`)}function a(e){o(`error`)&&t.stdout.write(`${e}\n`)}function o(t){let r=e();return r.outputMode===`human`?r.quiet&&t===`info`?!1:n[r.logLevel??`info`]>=n[t]:!0}function s(){return!!e().assumeYes}function c(){return!!e().dryRun}function l(e){t.stdout.write(`${e}\n`)}export{i as a,r as i,c as n,l as o,a as r,s as t};
@@ -1 +0,0 @@
1
- import{At as e,Et as t,Nt as n,Ot as r,ot as i}from"./color-1gXmuBdm.mjs";import{dirname as a,join as o}from"node:path";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";const u={platform:process.platform,spawn:(e,t)=>r(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:e,writeStderr:e=>{process.stderr.write(e)}};function d(e=u){return{async run(n){if(n.signal.aborted)return p(n.signal);let r;try{r=e.spawn(n.argv,{...n.cwd?{cwd:n.cwd}:{},detached:e.platform!==`win32`,...n.env?{env:{...process.env,...n.env}}:{},stdio:n.stdio})}catch(e){return m(`failed`,g(e,`Failed to launch agent process.`))}let i=t(r),a,o,s=new Promise(e=>{o=()=>e({kind:`cancelled`}),n.signal.addEventListener(`abort`,o,{once:!0}),n.signal.aborted&&o()}),c=i.then(e=>({kind:`completed`,result:e})),l=n.timeoutMs===void 0?void 0:new Promise(e=>{a=setTimeout(()=>e({kind:`timed-out`}),n.timeoutMs)});try{let t=await Promise.race(l?[c,s,l]:[c,s]);if(t.kind===`completed`)return f(t.result,n,e);if(t.kind===`cancelled`)return await e.terminate(r),await i.catch(()=>void 0),p(n.signal);let a=await v(c,_(n.timeoutMs));return a?f(a.result,n,e):(await e.terminate(r),await i.catch(()=>void 0),m(`timed-out`,`Agent process timed out after ${n.timeoutMs}ms.`))}finally{a&&clearTimeout(a),n.signal.removeEventListener(`abort`,o)}}}}function f(e,t,n){t.forwardPipedOutput!==!1&&(t.stdio?.[1]===`pipe`&&e.stdout&&n.writeStderr?.(e.stdout),t.stdio?.[2]===`pipe`&&e.stderr&&n.writeStderr?.(e.stderr));let r=new TextEncoder;return{kind:`success`,value:{exitCode:e.exitCode,...e.stderr?{stderr:r.encode(e.stderr)}:{},...e.stdout?{stdout:r.encode(e.stdout)}:{}}}}function p(e){return m(`cancelled`,h(e)??`Agent process was cancelled.`)}function m(e,t){return{error:{kind:e,message:t},kind:`failure`}}function h(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function g(e,t){return e instanceof Error&&e.message.trim()?e.message:t}function _(e){return Math.max(1,Math.min(e,250))}async function v(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function y(e={}){let t=e.filePath??o(i(),`cache`,`versions.json`),r=e.getCacheMode??(()=>n().cacheMode??`default`),a=e.now??Date.now;return{async read(e){let n=T(e.signal);if(n)return n;if(r()===`no-cache`)return C({kind:`miss`});try{let n=await b(t),r=T(e.signal);if(r)return r;let i=n.entries[e.key];if(!i||i.expiresAt<=a())return C({kind:`miss`});try{return C({expiresAtMs:i.expiresAt,kind:`hit`,value:JSON.parse(i.body)})}catch{return w(`invalid-data`,`Cached value for ${e.key} is not valid JSON.`)}}catch(e){return E(e,`Failed to read the version cache.`)}},async remove(e){let n=T(e.signal);if(n)return n;if(r()===`no-cache`)return C(void 0);try{let n=await b(t);return T(e.signal)||(Object.hasOwn(n.entries,e.key)?(delete n.entries[e.key],await x(t,n),T(e.signal)??C(void 0)):C(void 0))}catch(e){return E(e,`Failed to remove a version cache entry.`)}},async write(e){let n=T(e.signal);if(n)return n;if(r()===`no-cache`)return C(void 0);try{let n=await b(t),r=T(e.signal);if(r)return r;let i=a(),o=JSON.stringify(e.value);return o===void 0?w(`invalid-data`,`Cached value for ${e.key} is not JSON serializable.`):(n.entries[e.key]={body:o,expiresAt:e.expiresAtMs??2**53-1,fetchedAt:i},await x(t,n),T(e.signal)??C(void 0))}catch(e){return E(e,`Failed to write the version cache.`)}}}}async function b(e){try{return S(JSON.parse(await c(e,`utf8`)))}catch(e){if(D(e)||e instanceof SyntaxError)return{entries:{}};throw e}}async function x(e,t){await s(a(e),{recursive:!0}),await l(e,`${JSON.stringify(t,null,2)}\n`,`utf8`)}function S(e){if(!O(e)||!O(e.entries))return{entries:{}};let t={};for(let[n,r]of Object.entries(e.entries))!O(r)||typeof r.body!=`string`||!k(r.expiresAt)||(t[n]={body:r.body,etag:typeof r.etag==`string`?r.etag:void 0,expiresAt:r.expiresAt,fetchedAt:k(r.fetchedAt)?r.fetchedAt:void 0});return{entries:t}}function C(e){return{kind:`success`,value:e}}function w(e,t,n){return{error:{code:n,kind:e,message:t},kind:`failure`}}function T(e){return e.aborted?w(`cancelled`,`Cache operation was cancelled.`):void 0}function E(e,t){return w(`failed`,t,O(e)&&typeof e.code==`string`?e.code:void 0)}function D(e){return O(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function O(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function k(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}export{d as n,y as t};