quantex-cli 1.13.0 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/{agent-inspection-FouaG2Iz.mjs → agent-inspection-D8YF0G7l.mjs} +1 -1
  2. package/dist/{agents-DqDXuTf0.mjs → agents-1xVrcX2T.mjs} +1 -1
  3. package/dist/{agents-Dd4G-47n.mjs → agents-BdSn7xtP.mjs} +1 -1
  4. package/dist/{capabilities-YTL8Nroj.mjs → capabilities-B9akfoAg.mjs} +1 -1
  5. package/dist/capabilities-CNRjwfBz.mjs +1 -0
  6. package/dist/{cli-read-projection-DOFWDJDZ.mjs → cli-read-projection-DBrxiinB.mjs} +1 -1
  7. package/dist/cli.mjs +1 -1
  8. package/dist/commands-BdWPLakC.mjs +1 -0
  9. package/dist/{commands-D6ixcs0U.mjs → commands-DdO5wqaC.mjs} +1 -1
  10. package/dist/{config-DUeu2PRE.mjs → config-Dp5vWO4u.mjs} +1 -1
  11. package/dist/{core-installation-cli-BF2QdfHE.mjs → core-installation-cli-BU30R3W7.mjs} +1 -1
  12. package/dist/{doctor-DXpczWOV.mjs → doctor-2AK-8DXd.mjs} +1 -1
  13. package/dist/{ensure-CPWDOyF2.mjs → ensure-CHQo_W-B.mjs} +1 -1
  14. package/dist/ensure-CgQQCiv-.mjs +1 -0
  15. package/dist/index.mjs +1 -1
  16. package/dist/{info-DXcPuaGM.mjs → info-1VdVWaZU.mjs} +1 -1
  17. package/dist/{inspect-DZMJfYDG.mjs → inspect-Cmh8P2cH.mjs} +1 -1
  18. package/dist/inspect-DvcoLIJ6.mjs +1 -0
  19. package/dist/{install-DmKhdgRw.mjs → install-CllMI5Vl.mjs} +1 -1
  20. package/dist/{lifecycle-observations-orGecdi1.mjs → lifecycle-observations-D78ZkqEX.mjs} +1 -1
  21. package/dist/{lifecycle-policy-jVfC5DFa.mjs → lifecycle-policy-CPJ-uQku.mjs} +1 -1
  22. package/dist/{list-BPx1_Y-v.mjs → list-CmbDbwzJ.mjs} +1 -1
  23. package/dist/{output-CbB-lipw.mjs → output-C0TF6WTW.mjs} +2 -2
  24. package/dist/{package-manager-6SgDzwkw.mjs → package-manager-BdBKbZci.mjs} +1 -1
  25. package/dist/{provider-evidence-DxydUqAR.mjs → provider-evidence-C_k-kzoO.mjs} +1 -1
  26. package/dist/{provider-observations-DzRKCxpH.mjs → provider-observations-2EeSQRbX.mjs} +1 -1
  27. package/dist/{providers-DUaztLRJ.mjs → providers-BrKmtcci.mjs} +1 -1
  28. package/dist/{resolve-iQLTTM2u.mjs → resolve-BVga-Ro4.mjs} +1 -1
  29. package/dist/resolve-BvxcLaLm.mjs +1 -0
  30. package/dist/schema-Dg3sXQ1u.mjs +1 -0
  31. package/dist/{schema-C7Q6DeFc.mjs → schema-ShDMW_sj.mjs} +1 -1
  32. package/dist/{uninstall-wNejJx5C.mjs → uninstall-SDNnTH6W.mjs} +1 -1
  33. package/dist/{unmanaged-install-compatibility-cMT5elJV.mjs → unmanaged-install-compatibility-gE_Y2JWk.mjs} +1 -1
  34. package/dist/{update-DC18mjYw.mjs → update-B966hXRX.mjs} +1 -1
  35. package/dist/{upgrade-CZHbCBUm.mjs → upgrade-CykBo6ap.mjs} +1 -1
  36. package/package.json +1 -1
  37. package/dist/capabilities-OcvdqVp1.mjs +0 -1
  38. package/dist/commands-BFpfOP6I.mjs +0 -1
  39. package/dist/ensure-RiH3rJ1Q.mjs +0 -1
  40. package/dist/inspect-BBNpi7tS.mjs +0 -1
  41. package/dist/resolve-BhL4HG0c.mjs +0 -1
  42. package/dist/schema-C5Ka2AH1.mjs +0 -1
@@ -1,4 +1,4 @@
1
- import{s as e}from"./schema-BBnWVY6R.mjs";import{U as t,i as n,n as r,s as i,u as a}from"./output-CbB-lipw.mjs";import{i as o,n as s,r as c,t as l}from"./human-BbO37wBs.mjs";import{t as u}from"./cli-operation-context-CzjG_eom.mjs";import{n as d,t as f}from"./provider-observations-DzRKCxpH.mjs";import{t as p}from"./color-CLDVRyIs.mjs";import{n as m,t as h}from"./agent-inspection-FouaG2Iz.mjs";function g(e){let{installers:t,self:n}=e,{brew:r,bun:i,cargo:a,deno:o,mise:s,npm:c,pip:l,uv:u,winget:d}=t,f=n.latestVersion?v(n.latestVersion,n.currentVersion):!1,p=e.agents.filter(e=>e.inPath).map(e=>({displayName:e.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:_(e),sourceLabel:e.sourceLabel})),m=[];if(!i&&!c&&!r&&!a&&!o&&!s&&!l&&!u&&!d&&m.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:e.docs.troubleshooting,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:[]}),(n.installSource===`bun`&&!i||n.installSource===`npm`&&!c)&&m.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI is tracked as a ${n.installSource} install, but ${n.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:y(n.installSource,n.updateChannel,n.packageName)}),n.canAutoUpdate||m.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI cannot auto-update from install source "${n.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:[]}),f&&n.recommendedUpgradeCommand){let t=n.recoveryHint;m.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:e.docs.selfUpgrade,message:t?`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand} or follow: ${t}`:`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[n.recommendedUpgradeCommand]})}for(let t of e.agents.filter(e=>e.inPath)){if(t.untracked&&m.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:e.docs.troubleshooting,message:`${t.displayName} is detected on disk but not tracked as a managed Quantex install. Use \`quantex inspect ${t.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${t.name} --json`,`quantex install ${t.name}`]}),!_(t)||t.lifecycle===`managed`)continue;let n=t.selfUpdateCommand!==void 0,r=n?`Try running ${t.selfUpdateCommand} directly.`:`Check ${t.homepage} for the recommended update path.`;m.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:e.docs.troubleshooting,message:`${t.displayName} ${t.installedVersion} is behind ${t.latestVersion}, but the current source is ${t.sourceLabel}. ${r}`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:n?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n&&t.selfUpdateCommand?[t.selfUpdateCommand]:[]})}return{agents:p,issues:m,installers:t,self:{canAutoUpdate:n.canAutoUpdate,currentVersion:n.currentVersion,installSource:n.installSource,latestVersion:n.latestVersion,outdated:!!f,recoveryHint:f?n.recoveryHint:void 0}}}function _(e){return!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion)}function v(t,n){return e(t,n)===1}function y(e,t,n){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}async function b(){let e=u(),n,r,o;try{[n,r,o]=await e.run(()=>Promise.all([f({context:e.context}),i({context:e.context}),m(e.context)]))}finally{e.dispose()}let s=d(n,e=>e.availability.kind===`success`);return g({agents:o.map(e=>{let t=h(e);return{displayName:t.agent.displayName,homepage:t.agent.homepage,inPath:t.inPath,installedVersion:t.installedVersion,latestVersion:t.latestVersion,lifecycle:t.lifecycle,name:t.agent.name,selfUpdateCommand:t.agent.selfUpdate?t.agent.selfUpdate.command.join(` `):void 0,sourceLabel:t.sourceLabel,untracked:e.observation.drift.kind===`untracked`}}),docs:{selfUpgrade:`docs/runbooks/release-and-self-upgrade-debugging.md`,troubleshooting:`docs/runbooks/quantex-troubleshooting.md`},installers:s,self:{canAutoUpdate:r.canAutoUpdate,currentVersion:r.currentVersion,installSource:r.installSource,latestVersion:r.latestVersion,packageName:t,recommendedUpgradeCommand:r.recommendedUpgradeCommand,recoveryHint:a(r),updateChannel:r.updateChannel}})}async function x(){return n(r({action:`doctor`,data:await b(),target:{kind:`system`,name:`doctor`}}),S)}function S(e){if(!e.data)return;let t=l();console.log(p.bold(`
1
+ import{s as e}from"./schema-BBnWVY6R.mjs";import{U as t,i as n,n as r,s as i,u as a}from"./output-C0TF6WTW.mjs";import{i as o,n as s,r as c,t as l}from"./human-BbO37wBs.mjs";import{t as u}from"./cli-operation-context-CzjG_eom.mjs";import{n as d,t as f}from"./provider-observations-2EeSQRbX.mjs";import{t as p}from"./color-CLDVRyIs.mjs";import{n as m,t as h}from"./agent-inspection-D8YF0G7l.mjs";function g(e){let{installers:t,self:n}=e,{brew:r,bun:i,cargo:a,deno:o,mise:s,npm:c,pip:l,uv:u,winget:d}=t,f=n.latestVersion?v(n.latestVersion,n.currentVersion):!1,p=e.agents.filter(e=>e.inPath).map(e=>({displayName:e.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:_(e),sourceLabel:e.sourceLabel})),m=[];if(!i&&!c&&!r&&!a&&!o&&!s&&!l&&!u&&!d&&m.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:e.docs.troubleshooting,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:[]}),(n.installSource===`bun`&&!i||n.installSource===`npm`&&!c)&&m.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI is tracked as a ${n.installSource} install, but ${n.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:y(n.installSource,n.updateChannel,n.packageName)}),n.canAutoUpdate||m.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI cannot auto-update from install source "${n.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:[]}),f&&n.recommendedUpgradeCommand){let t=n.recoveryHint;m.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:e.docs.selfUpgrade,message:t?`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand} or follow: ${t}`:`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[n.recommendedUpgradeCommand]})}for(let t of e.agents.filter(e=>e.inPath)){if(t.untracked&&m.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:e.docs.troubleshooting,message:`${t.displayName} is detected on disk but not tracked as a managed Quantex install. Use \`quantex inspect ${t.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${t.name} --json`,`quantex install ${t.name}`]}),!_(t)||t.lifecycle===`managed`)continue;let n=t.selfUpdateCommand!==void 0,r=n?`Try running ${t.selfUpdateCommand} directly.`:`Check ${t.homepage} for the recommended update path.`;m.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:e.docs.troubleshooting,message:`${t.displayName} ${t.installedVersion} is behind ${t.latestVersion}, but the current source is ${t.sourceLabel}. ${r}`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:n?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n&&t.selfUpdateCommand?[t.selfUpdateCommand]:[]})}return{agents:p,issues:m,installers:t,self:{canAutoUpdate:n.canAutoUpdate,currentVersion:n.currentVersion,installSource:n.installSource,latestVersion:n.latestVersion,outdated:!!f,recoveryHint:f?n.recoveryHint:void 0}}}function _(e){return!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion)}function v(t,n){return e(t,n)===1}function y(e,t,n){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}async function b(){let e=u(),n,r,o;try{[n,r,o]=await e.run(()=>Promise.all([f({context:e.context}),i({context:e.context}),m(e.context)]))}finally{e.dispose()}let s=d(n,e=>e.availability.kind===`success`);return g({agents:o.map(e=>{let t=h(e);return{displayName:t.agent.displayName,homepage:t.agent.homepage,inPath:t.inPath,installedVersion:t.installedVersion,latestVersion:t.latestVersion,lifecycle:t.lifecycle,name:t.agent.name,selfUpdateCommand:t.agent.selfUpdate?t.agent.selfUpdate.command.join(` `):void 0,sourceLabel:t.sourceLabel,untracked:e.observation.drift.kind===`untracked`}}),docs:{selfUpgrade:`docs/runbooks/release-and-self-upgrade-debugging.md`,troubleshooting:`docs/runbooks/quantex-troubleshooting.md`},installers:s,self:{canAutoUpdate:r.canAutoUpdate,currentVersion:r.currentVersion,installSource:r.installSource,latestVersion:r.latestVersion,packageName:t,recommendedUpgradeCommand:r.recommendedUpgradeCommand,recoveryHint:a(r),updateChannel:r.updateChannel}})}async function x(){return n(r({action:`doctor`,data:await b(),target:{kind:`system`,name:`doctor`}}),S)}function S(e){if(!e.data)return;let t=l();console.log(p.bold(`
2
2
  Quantex CLI Environment Check
3
3
  `));let n=Object.entries(e.data.installers).map(([e,t])=>({available:t,name:e}));console.log(p.bold(`Managed Installers
4
4
  `));for(let e of c(n,[{header:`Installer`,value:e=>e.name},{header:`Status`,value:e=>e.available?p.green(`available`):p.red(`not found`)}],{headerStyle:p.bold,width:t}))console.log(e);let r=[{label:`Version`,value:e.data.self.currentVersion},{label:`Source`,value:e.data.self.installSource},{label:`Auto-update`,value:e.data.self.canAutoUpdate?p.green(`supported`):p.yellow(`unsupported`)},...e.data.self.latestVersion?[{label:`Latest`,value:`${e.data.self.latestVersion}${e.data.self.outdated?p.yellow(` (update available)`):``}`}]:[],...e.data.self.recoveryHint?[{label:`Recovery`,value:e.data.self.recoveryHint}]:[]];console.log(`\n${p.bold(`Quantex CLI`)}\n`);for(let e of s(r,{labelStyle:p.bold,width:t}))console.log(e);if(console.log(`\n${p.bold(`Installed Agents`)}\n`),e.data.agents.length===0)console.log(p.dim(` No agents installed`));else for(let n of c(e.data.agents,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Version`,maxWidth:24,value:e=>e.outdated&&e.latestVersion?p.yellow(`${e.installedVersion??`unknown`} → ${e.latestVersion}`):e.installedVersion??`unknown`},{header:`Lifecycle`,optional:!0,priority:2,value:e=>e.lifecycle},{header:`Source`,optional:!0,priority:1,value:e=>p.dim(e.sourceLabel)}],{headerStyle:p.bold,width:t}))console.log(n);if(console.log(`\n${p.bold(`Issues`)}\n`),e.data.issues.length===0)console.log(p.green(` No issues found.`));else for(let n of e.data.issues){for(let e of o(p.yellow(n.message),{continuationIndent:` `,indent:` - `,width:t}))console.log(e);if(n.suggestedCommands.length>0)for(let e of o(p.dim(`Next: ${n.suggestedCommands.join(` | `)}`),{indent:` `,width:t}))console.log(e)}console.log()}export{x as doctorCommand};
@@ -1 +1 @@
1
- import{i as e,n as t}from"./output-CbB-lipw.mjs";import{t as n}from"./color-CLDVRyIs.mjs";import{a as r,i,r as a}from"./user-output-CF4UAX0c.mjs";import{n as o,r as s}from"./installation-routing-CuPHXckO.mjs";import{t as c}from"./unmanaged-install-compatibility-cMT5elJV.mjs";async function l(e){return await u(e,s(`ensure`))}async function u(t,n){o(`ensure`,n);let r=await c(t);if(r)return e(d(r),f);let{createCoreInstallationCliSession:i}=await import(`./core-installation-cli-BF2QdfHE.mjs`),a=i(`ensure`);try{return e(await a.execute(t,{emitStartedEvent:!0}),f)}finally{a.dispose()}}function d(e){return t({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 f(e){if(e.error){a(n.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`){i(n.green(t.message));continue}if(t.code===`DRY_RUN`){r(n.cyan(t.message));continue}r(n.yellow(t.message))}return}if(e.data.changed){i(n.cyan(`Installing ${e.data.agent.displayName}...`)),i(n.green(`${e.data.agent.displayName} is now installed.`));return}i(n.green(`${e.data.agent.displayName} is already installed.`))}}export{u as n,l as t};
1
+ import{i as e,n as t}from"./output-C0TF6WTW.mjs";import{t as n}from"./color-CLDVRyIs.mjs";import{a as r,i,r as a}from"./user-output-CF4UAX0c.mjs";import{n as o,r as s}from"./installation-routing-CuPHXckO.mjs";import{t as c}from"./unmanaged-install-compatibility-gE_Y2JWk.mjs";async function l(e){return await u(e,s(`ensure`))}async function u(t,n){o(`ensure`,n);let r=await c(t);if(r)return e(d(r),f);let{createCoreInstallationCliSession:i}=await import(`./core-installation-cli-BU30R3W7.mjs`),a=i(`ensure`);try{return e(await a.execute(t,{emitStartedEvent:!0}),f)}finally{a.dispose()}}function d(e){return t({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 f(e){if(e.error){a(n.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`){i(n.green(t.message));continue}if(t.code===`DRY_RUN`){r(n.cyan(t.message));continue}r(n.yellow(t.message))}return}if(e.data.changed){i(n.cyan(`Installing ${e.data.agent.displayName}...`)),i(n.green(`${e.data.agent.displayName} is now installed.`));return}i(n.green(`${e.data.agent.displayName} is already installed.`))}}export{u as n,l as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./ensure-CHQo_W-B.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{n as e,r as t}from"./messages-D6r2o7w-.mjs";import{c as n,i as r,n as i,o as a,t as o}from"./detect-Dou6fit1.mjs";import{A as s,C as c,D as l,E as ee,F as te,I as ne,L as re,M as ie,O as ae,S as oe,T as se,_ as ce,a as le,b as ue,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"./agents-DqDXuTf0.mjs";import{a as j,n as M,o as N,s as P}from"./cli-context-DI43ouBg.mjs";import{a as F,n as I,o as L,t as R}from"./config-jsaRCEWF.mjs";import{A as z,B,C as V,D as H,E as U,F as de,H as fe,I as pe,L as me,M as he,N as ge,P as _e,R as ve,V as ye,X as be,Y as xe,Z as Se,_ as Ce,a as we,c as Te,g as Ee,h as De,i as Oe,k as ke,l as Ae,n as je,o as Me,t as Ne,u as Pe,w as Fe,x as Ie,z as Le}from"./output-CbB-lipw.mjs";import{_ as Re,d as ze,g as Be,h as Ve,i as W,m as He,n as Ue,p as We,r as Ge,t as Ke,v as G,y as qe}from"./providers-DUaztLRJ.mjs";import{t as Je}from"./capabilities-YTL8Nroj.mjs";import{t as Ye}from"./commands-D6ixcs0U.mjs";import{a as Xe,c as Ze,d as Qe,f as $e,i as et,r as tt,s as nt,u as rt}from"./package-manager-6SgDzwkw.mjs";import{a as it,i as K,n as at,r as ot,t as q}from"./agents-Dd4G-47n.mjs";import{t as st}from"./update-planner-Bnlt3KKP.mjs";import{t as ct}from"./ensure-CPWDOyF2.mjs";import{t as lt}from"./inspect-DZMJfYDG.mjs";import{t as ut}from"./resolve-iQLTTM2u.mjs";import{n as dt,t as ft}from"./schema-C7Q6DeFc.mjs";import{n as pt,r as mt}from"./errors-CISYuFuT.mjs";function J(e,t={}){let n=G(),r=n.reduce((e,t)=>(e[t]=[],e),{}),i=[],a=[],o=[],s=[];for(let n of e){if(!n.inPath)continue;if(t.skipUntrackedInPath&&!n.installedState){o.push(n);continue}let e=X(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=W({agent:n.agent,installedState:n.installedState,methods:n.methods}),l=c.strategy===`managed`?c.getManagedInstallerType?.({agent:n.agent,installedState:n.installedState,methods:n.methods}):void 0;if(l){let e={inspection:n,installerType:l,strategy:`grouped`};r[l].push(e);continue}i.push({inspection:n,strategy:c.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...n.flatMap(e=>r[e]),...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:o,upToDate:s}}function Y(e){return X(e)===`upgrade`}function X(e){return st({intent:{kind:`update`,targetId:`compatibility-update`,targetVersion:e.latestVersion},observation:{drift:{kind:`none`},kind:`present`,providerId:`compatibility`,providerTargetId:`compatibility-update`,providerTargetKind:`package`,targetId:`compatibility-update`,version:e.installedVersion},provider:{capabilities:[`observe`,`update`,`verify`],providerId:`compatibility`,targetId:`compatibility-update`,targetKind:`package`}}).decision}async function Z(e){let t=await K(e);return{agent:e,inspection:t,updateAvailable:Y(t)}}async function ht(){return gt(await q(),{skipUntrackedInPath:!0})}function gt(e,t={}){let n=J(e,t),r=[],i=G().map(e=>_t(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>$(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>$(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function _t(e,t,n){if(t.length===0)return;let r=t.map(e=>$(e.inspection)),i=r.filter(Q);if(n.push(...r.filter(e=>!Q(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function Q(e){return!!e.package?.packageName}function $(e){let t=W({agent:e.agent,installedState:e.installedState,methods:e.methods}),n=t.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:n,package:n?vt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function vt(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let i=n.find(e=>e.type===r);if(!i)return;let a=ze(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function yt(e,t){try{let n=await $e(Qe([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{te as agentCatalogEntrySchema,ne as agentCatalogJsonSchema,re as agentCatalogSchema,Ke as agentUpdateProviders,u as autohand,De as canAutoUpdateSelf,We as canLookupLatestVersionForInstallType,Ue as canResolveAgentUpdate,He as canUninstallInstallType,Ve as canUpdateInstallType,Je as capabilitiesCommand,v as claude,E as codebuddy,d as codewhale,f as codex,Ye as commandsCommand,S as copilot,Ne as createErrorResult,pe as createReleaseManifest,je as createSuccessResult,J as createUpdatePlan,y as cursor,h as deepcode,Ee as detectSelfInstallSource,m as devin,p as droid,Oe as emitCommandResult,ct as ensureCommand,yt as execCommand,me as formatChecksums,ce as gemini,le as genie,T as getAgentByLookupName,b as getAgentByNameOrAlias,e as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,C as getAllAgents,xe as getBinaryPath,_e as getBinaryReleaseAssetName,de as getBinaryReleaseDownloadUrl,g as getCatalogAgent,ie as getCatalogAgents,M as getCliContext,R as getConfigDir,I as getConfigFilePath,pt as getExitCodeForError,mt as getExitCodeForResult,Be as getInstallLifecycle,Ie as getInstalledAgentState,be as getInstalledVersion,Re as getInstallerCapabilities,Se as getLatestVersion,rt as getManagedInstaller,t as getManualAgentUpdateMessage,we as getManualSelfUpgradeCommand,tt as getOrderedInstallMethods,o as getPlatform,ft as getSchemaCatalog,V as getSelfState,Ae as getSelfUpgradeRecoveryHint,Pe as getSelfUpgradeRecoveryHintForInspection,Ce as getSelfVersion,Z as getSingleAgentUpdateStatus,Fe as getStateFilePath,D as grok,A as hermes,K as inspectAgent,it as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Me as inspectSelf,et as installAgent,i as isBinaryInPath,r as isBunAvailable,a as isDenoAvailable,Y as isInspectionUpdateAvailable,qe as isManagedInstallType,n as isNpmAvailable,x as jcode,ue as junie,k as kilo,F as loadConfig,U as loadState,oe as mimo,ve as normalizeRepositoryUrl,c as omp,O as openclaw,se as opencode,ee as openhands,Le as parseBinaryTarget,B as parseChecksums,l as pi,ht as planAgentUpdates,ae as qoder,_ as reasonix,H as removeInstalledAgentState,j as resetCliContext,at as resolveAgent,ot as resolveAgentInspection,W as resolveAgentUpdateProvider,N as resolveCliContext,ut as resolveCommand,ye as resolveReleaseChannel,L as saveConfig,ke as saveState,dt as schemaCommand,P as setCliContext,z as setInstalledAgentState,he as setSelfInstallSource,ge as setSelfUpdateNoticeState,Xe as uninstallAgent,nt as updateAgent,Ze as updateAgentsByType,Te as upgradeSelf,fe as validateReleaseManifest,s as vibe,w as vtcode};
1
+ import{n as e,r as t}from"./messages-D6r2o7w-.mjs";import{c as n,i as r,n as i,o as a,t as o}from"./detect-Dou6fit1.mjs";import{A as s,C as c,D as l,E as ee,F as te,I as ne,L as re,M as ie,O as ae,S as oe,T as se,_ as ce,a as le,b as ue,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"./agents-1xVrcX2T.mjs";import{a as j,n as M,o as N,s as P}from"./cli-context-DI43ouBg.mjs";import{a as F,n as I,o as L,t as R}from"./config-jsaRCEWF.mjs";import{A as z,B,C as V,D as H,E as U,F as de,H as fe,I as pe,L as me,M as he,N as ge,P as _e,R as ve,V as ye,X as be,Y as xe,Z as Se,_ as Ce,a as we,c as Te,g as Ee,h as De,i as Oe,k as ke,l as Ae,n as je,o as Me,t as Ne,u as Pe,w as Fe,x as Ie,z as Le}from"./output-C0TF6WTW.mjs";import{_ as Re,d as ze,g as Be,h as Ve,i as W,m as He,n as Ue,p as We,r as Ge,t as Ke,v as G,y as qe}from"./providers-BrKmtcci.mjs";import{t as Je}from"./capabilities-B9akfoAg.mjs";import{t as Ye}from"./commands-DdO5wqaC.mjs";import{a as Xe,c as Ze,d as Qe,f as $e,i as et,r as tt,s as nt,u as rt}from"./package-manager-BdBKbZci.mjs";import{a as it,i as K,n as at,r as ot,t as q}from"./agents-BdSn7xtP.mjs";import{t as st}from"./update-planner-Bnlt3KKP.mjs";import{t as ct}from"./ensure-CHQo_W-B.mjs";import{t as lt}from"./inspect-Cmh8P2cH.mjs";import{t as ut}from"./resolve-BVga-Ro4.mjs";import{n as dt,t as ft}from"./schema-ShDMW_sj.mjs";import{n as pt,r as mt}from"./errors-CISYuFuT.mjs";function J(e,t={}){let n=G(),r=n.reduce((e,t)=>(e[t]=[],e),{}),i=[],a=[],o=[],s=[];for(let n of e){if(!n.inPath)continue;if(t.skipUntrackedInPath&&!n.installedState){o.push(n);continue}let e=X(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=W({agent:n.agent,installedState:n.installedState,methods:n.methods}),l=c.strategy===`managed`?c.getManagedInstallerType?.({agent:n.agent,installedState:n.installedState,methods:n.methods}):void 0;if(l){let e={inspection:n,installerType:l,strategy:`grouped`};r[l].push(e);continue}i.push({inspection:n,strategy:c.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...n.flatMap(e=>r[e]),...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:o,upToDate:s}}function Y(e){return X(e)===`upgrade`}function X(e){return st({intent:{kind:`update`,targetId:`compatibility-update`,targetVersion:e.latestVersion},observation:{drift:{kind:`none`},kind:`present`,providerId:`compatibility`,providerTargetId:`compatibility-update`,providerTargetKind:`package`,targetId:`compatibility-update`,version:e.installedVersion},provider:{capabilities:[`observe`,`update`,`verify`],providerId:`compatibility`,targetId:`compatibility-update`,targetKind:`package`}}).decision}async function Z(e){let t=await K(e);return{agent:e,inspection:t,updateAvailable:Y(t)}}async function ht(){return gt(await q(),{skipUntrackedInPath:!0})}function gt(e,t={}){let n=J(e,t),r=[],i=G().map(e=>_t(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>$(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>$(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function _t(e,t,n){if(t.length===0)return;let r=t.map(e=>$(e.inspection)),i=r.filter(Q);if(n.push(...r.filter(e=>!Q(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function Q(e){return!!e.package?.packageName}function $(e){let t=W({agent:e.agent,installedState:e.installedState,methods:e.methods}),n=t.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:n,package:n?vt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function vt(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let i=n.find(e=>e.type===r);if(!i)return;let a=ze(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function yt(e,t){try{let n=await $e(Qe([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{te as agentCatalogEntrySchema,ne as agentCatalogJsonSchema,re as agentCatalogSchema,Ke as agentUpdateProviders,u as autohand,De as canAutoUpdateSelf,We as canLookupLatestVersionForInstallType,Ue as canResolveAgentUpdate,He as canUninstallInstallType,Ve as canUpdateInstallType,Je as capabilitiesCommand,v as claude,E as codebuddy,d as codewhale,f as codex,Ye as commandsCommand,S as copilot,Ne as createErrorResult,pe as createReleaseManifest,je as createSuccessResult,J as createUpdatePlan,y as cursor,h as deepcode,Ee as detectSelfInstallSource,m as devin,p as droid,Oe as emitCommandResult,ct as ensureCommand,yt as execCommand,me as formatChecksums,ce as gemini,le as genie,T as getAgentByLookupName,b as getAgentByNameOrAlias,e as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,C as getAllAgents,xe as getBinaryPath,_e as getBinaryReleaseAssetName,de as getBinaryReleaseDownloadUrl,g as getCatalogAgent,ie as getCatalogAgents,M as getCliContext,R as getConfigDir,I as getConfigFilePath,pt as getExitCodeForError,mt as getExitCodeForResult,Be as getInstallLifecycle,Ie as getInstalledAgentState,be as getInstalledVersion,Re as getInstallerCapabilities,Se as getLatestVersion,rt as getManagedInstaller,t as getManualAgentUpdateMessage,we as getManualSelfUpgradeCommand,tt as getOrderedInstallMethods,o as getPlatform,ft as getSchemaCatalog,V as getSelfState,Ae as getSelfUpgradeRecoveryHint,Pe as getSelfUpgradeRecoveryHintForInspection,Ce as getSelfVersion,Z as getSingleAgentUpdateStatus,Fe as getStateFilePath,D as grok,A as hermes,K as inspectAgent,it as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Me as inspectSelf,et as installAgent,i as isBinaryInPath,r as isBunAvailable,a as isDenoAvailable,Y as isInspectionUpdateAvailable,qe as isManagedInstallType,n as isNpmAvailable,x as jcode,ue as junie,k as kilo,F as loadConfig,U as loadState,oe as mimo,ve as normalizeRepositoryUrl,c as omp,O as openclaw,se as opencode,ee as openhands,Le as parseBinaryTarget,B as parseChecksums,l as pi,ht as planAgentUpdates,ae as qoder,_ as reasonix,H as removeInstalledAgentState,j as resetCliContext,at as resolveAgent,ot as resolveAgentInspection,W as resolveAgentUpdateProvider,N as resolveCliContext,ut as resolveCommand,ye as resolveReleaseChannel,L as saveConfig,ke as saveState,dt as schemaCommand,P as setCliContext,z as setInstalledAgentState,he as setSelfInstallSource,ge as setSelfUpdateNoticeState,Xe as uninstallAgent,nt as updateAgent,Ze as updateAgentsByType,Te as upgradeSelf,fe as validateReleaseManifest,s as vibe,w as vtcode};
@@ -1,3 +1,3 @@
1
- import{i as e,n as t,t as n}from"./output-CbB-lipw.mjs";import{n as r,r as i,t as a}from"./human-BbO37wBs.mjs";import{t as o}from"./color-CLDVRyIs.mjs";import{r as s}from"./agent-inspection-FouaG2Iz.mjs";import{t as c}from"./cli-read-projection-DOFWDJDZ.mjs";async function l(r){let i=await s(r);if(!i)return e(n({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),u);let{agent:a,summary:o}=c(i);return e(t({action:`info`,data:{agent:o.agent,inspection:{binaryPath:o.inspection.binaryPath,installed:o.inspection.installed,installedVersion:o.inspection.installedVersion,latestVersion:o.inspection.latestVersion,lifecycle:o.inspection.lifecycle,sourceLabel:o.inspection.sourceLabel}},target:{kind:`agent`,name:a.name}}),u)}function u(e){if(e.error){console.log(o.red(e.error.message));return}if(!e.data)return;let t=a();console.log(o.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Aliases`,value:e.data.agent.aliases.join(`, `)||`—`},{label:`Package`,value:e.data.agent.packageName??`—`},{label:`Binary`,value:e.data.agent.binaryName},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},{label:`Installed`,value:e.data.inspection.installed?o.green(`yes`):o.red(`no`)},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installed?[{label:`Lifecycle`,value:e.data.inspection.lifecycle}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of r(n,{labelStyle:o.bold,width:t}))console.log(e);if(console.log(o.bold(`
1
+ import{i as e,n as t,t as n}from"./output-C0TF6WTW.mjs";import{n as r,r as i,t as a}from"./human-BbO37wBs.mjs";import{t as o}from"./color-CLDVRyIs.mjs";import{r as s}from"./agent-inspection-D8YF0G7l.mjs";import{t as c}from"./cli-read-projection-DBrxiinB.mjs";async function l(r){let i=await s(r);if(!i)return e(n({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),u);let{agent:a,summary:o}=c(i);return e(t({action:`info`,data:{agent:o.agent,inspection:{binaryPath:o.inspection.binaryPath,installed:o.inspection.installed,installedVersion:o.inspection.installedVersion,latestVersion:o.inspection.latestVersion,lifecycle:o.inspection.lifecycle,sourceLabel:o.inspection.sourceLabel}},target:{kind:`agent`,name:a.name}}),u)}function u(e){if(e.error){console.log(o.red(e.error.message));return}if(!e.data)return;let t=a();console.log(o.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Aliases`,value:e.data.agent.aliases.join(`, `)||`—`},{label:`Package`,value:e.data.agent.packageName??`—`},{label:`Binary`,value:e.data.agent.binaryName},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},{label:`Installed`,value:e.data.inspection.installed?o.green(`yes`):o.red(`no`)},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installed?[{label:`Lifecycle`,value:e.data.inspection.lifecycle}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of r(n,{labelStyle:o.bold,width:t}))console.log(e);if(console.log(o.bold(`
2
2
  Install Methods
3
3
  `)),e.data.agent.installMethods.length===0)console.log(o.dim(` No managed install methods`));else for(let n of i(e.data.agent.installMethods,[{header:`Method`,maxWidth:24,minWidth:8,value:e=>o.green(e.label)},{header:`Command`,minWidth:16,value:e=>e.command,wrap:!0}],{headerStyle:o.bold,width:t}))console.log(n);console.log()}export{l as infoCommand};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./messages-D6r2o7w-.mjs";import{i as t,n,t as r}from"./output-CbB-lipw.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{n as a,r as o,t as s}from"./human-BbO37wBs.mjs";import{t as c}from"./color-CLDVRyIs.mjs";import{a as l}from"./user-output-CF4UAX0c.mjs";import{r as u}from"./agent-inspection-FouaG2Iz.mjs";import{t as d}from"./cli-read-projection-DOFWDJDZ.mjs";async function f(e){let i=await u(e);if(!i)return t(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),m);let{agent:a,inspection:o,summary:s}=d(i);return t(n({action:`inspect`,data:{agent:s.agent,capabilities:{canAutoInstall:o.methods.length>0,canAutoUninstall:o.inPath&&o.lifecycle===`managed`,canRun:o.inPath,canSelfUpdate:s.agent.selfUpdateCommands.length>0},inspection:s.inspection},target:{kind:`agent`,name:a.name},warnings:p(a,o.installedState)}),m)}function p(t,n){let r=i(t,n);return r?[e(t,r)]:[]}function m(e){if(e.error){console.log(c.red(e.error.message));return}if(!e.data)return;let t=s();console.log(c.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Aliases`,value:e.data.agent.aliases.join(`, `)||`—`},{label:`Package`,value:e.data.agent.packageName??`—`},{label:`Binary`,value:e.data.agent.binaryName},{label:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.red(`no`)},{label:`Update mode`,value:e.data.inspection.updateLabel},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of a(n,{labelStyle:c.bold,width:t}))console.log(e);let r=[{capability:`Auto install`,value:e.data.capabilities.canAutoInstall},{capability:`Self update`,value:e.data.capabilities.canSelfUpdate},{capability:`Auto uninstall`,value:e.data.capabilities.canAutoUninstall},{capability:`Runnable`,value:e.data.capabilities.canRun}];console.log(c.bold(`
1
+ import{t as e}from"./messages-D6r2o7w-.mjs";import{i as t,n,t as r}from"./output-C0TF6WTW.mjs";import{f as i}from"./providers-BrKmtcci.mjs";import{n as a,r as o,t as s}from"./human-BbO37wBs.mjs";import{t as c}from"./color-CLDVRyIs.mjs";import{a as l}from"./user-output-CF4UAX0c.mjs";import{r as u}from"./agent-inspection-D8YF0G7l.mjs";import{t as d}from"./cli-read-projection-DBrxiinB.mjs";async function f(e){let i=await u(e);if(!i)return t(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),m);let{agent:a,inspection:o,summary:s}=d(i);return t(n({action:`inspect`,data:{agent:s.agent,capabilities:{canAutoInstall:o.methods.length>0,canAutoUninstall:o.inPath&&o.lifecycle===`managed`,canRun:o.inPath,canSelfUpdate:s.agent.selfUpdateCommands.length>0},inspection:s.inspection},target:{kind:`agent`,name:a.name},warnings:p(a,o.installedState)}),m)}function p(t,n){let r=i(t,n);return r?[e(t,r)]:[]}function m(e){if(e.error){console.log(c.red(e.error.message));return}if(!e.data)return;let t=s();console.log(c.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Aliases`,value:e.data.agent.aliases.join(`, `)||`—`},{label:`Package`,value:e.data.agent.packageName??`—`},{label:`Binary`,value:e.data.agent.binaryName},{label:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.red(`no`)},{label:`Update mode`,value:e.data.inspection.updateLabel},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of a(n,{labelStyle:c.bold,width:t}))console.log(e);let r=[{capability:`Auto install`,value:e.data.capabilities.canAutoInstall},{capability:`Self update`,value:e.data.capabilities.canSelfUpdate},{capability:`Auto uninstall`,value:e.data.capabilities.canAutoUninstall},{capability:`Runnable`,value:e.data.capabilities.canRun}];console.log(c.bold(`
2
2
  Capabilities
3
3
  `));for(let e of o(r,[{header:`Capability`,minWidth:8,value:e=>e.capability},{header:`Available`,value:e=>e.value?c.green(`yes`):c.dim(`no`)}],{headerStyle:c.bold,width:t}))console.log(e);if(console.log(c.bold(`
4
4
  Install Methods
@@ -0,0 +1 @@
1
+ import{t as e}from"./inspect-Cmh8P2cH.mjs";export{e as inspectCommand};
@@ -1 +1 @@
1
- import{n as e}from"./cli-context-DI43ouBg.mjs";import{i as t,n,r,t as i}from"./output-CbB-lipw.mjs";import{t as a}from"./color-CLDVRyIs.mjs";import{a as o,i as s,r as c}from"./user-output-CF4UAX0c.mjs";import{n as l,r as u}from"./installation-routing-CuPHXckO.mjs";import{t as d}from"./unmanaged-install-compatibility-cMT5elJV.mjs";import{o as f}from"./lifecycle-policy-jVfC5DFa.mjs";async function p(e){return await m(e,u(`install`))}async function m(e,t){l(`install`,t);let{createCoreInstallationCliSession:n}=await import(`./core-installation-cli-BF2QdfHE.mjs`),r=n(`install`);try{return await h(e,r)}finally{r.dispose()}}async function h(a,o){let s=f(Array.isArray(a)?a:[a]);if(s.length<=1)return t(await g(s[0],{emitStartedEvent:!0},o),S);r({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let t of s){if(e().cancelled)break;let n=v(t,await g(t,{},o));if(c.push(n),r({action:`install`,data:n,target:{kind:`agent`,name:n.agent.name},type:`progress`}),e().cancelled)break}let l={results:c,scope:`batch`,summary:b(c)};return e().cancelled&&c.length<s.length?t(i({action:`install`,data:l,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),C):t(c.some(e=>!e.ok)?i({action:`install`,data:l,error:x(c),target:{kind:`agent`}}):n({action:`install`,data:l,target:{kind:`agent`}}),C)}async function g(e,t={},n){let r=await d(e);return r?_(r):await n.execute(e,t)}function _(e){return n({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 v(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:y(t),warnings:r}}function y(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 b(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 x(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 S(e){if(e.error){c(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`){s(a.green(t.message));continue}if(t.code===`DRY_RUN`){o(a.cyan(t.message));continue}o(a.yellow(t.message))}return}s(a.cyan(`Installing ${e.data.agent.displayName}...`)),s(a.green(`${e.data.agent.displayName} installed successfully!`))}}function C(e){if(!e.data){e.error&&c(a.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:s(a.cyan(`Installing ${t.agent.displayName}...`)),s(a.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:s(a.green(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:o(a.yellow(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:o(a.cyan(w(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:o(a.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:c(a.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}T(e.data.summary)}function w(e,t){return e[0]?.message??t}function T(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&&s(a.bold(`Summary: ${t.join(`, `)}`))}export{p as installCommand,m as installCommandWithRoute};
1
+ import{n as e}from"./cli-context-DI43ouBg.mjs";import{i as t,n,r,t as i}from"./output-C0TF6WTW.mjs";import{t as a}from"./color-CLDVRyIs.mjs";import{a as o,i as s,r as c}from"./user-output-CF4UAX0c.mjs";import{n as l,r as u}from"./installation-routing-CuPHXckO.mjs";import{t as d}from"./unmanaged-install-compatibility-gE_Y2JWk.mjs";import{o as f}from"./lifecycle-policy-CPJ-uQku.mjs";async function p(e){return await m(e,u(`install`))}async function m(e,t){l(`install`,t);let{createCoreInstallationCliSession:n}=await import(`./core-installation-cli-BU30R3W7.mjs`),r=n(`install`);try{return await h(e,r)}finally{r.dispose()}}async function h(a,o){let s=f(Array.isArray(a)?a:[a]);if(s.length<=1)return t(await g(s[0],{emitStartedEvent:!0},o),S);r({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let t of s){if(e().cancelled)break;let n=v(t,await g(t,{},o));if(c.push(n),r({action:`install`,data:n,target:{kind:`agent`,name:n.agent.name},type:`progress`}),e().cancelled)break}let l={results:c,scope:`batch`,summary:b(c)};return e().cancelled&&c.length<s.length?t(i({action:`install`,data:l,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),C):t(c.some(e=>!e.ok)?i({action:`install`,data:l,error:x(c),target:{kind:`agent`}}):n({action:`install`,data:l,target:{kind:`agent`}}),C)}async function g(e,t={},n){let r=await d(e);return r?_(r):await n.execute(e,t)}function _(e){return n({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 v(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:y(t),warnings:r}}function y(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 b(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 x(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 S(e){if(e.error){c(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`){s(a.green(t.message));continue}if(t.code===`DRY_RUN`){o(a.cyan(t.message));continue}o(a.yellow(t.message))}return}s(a.cyan(`Installing ${e.data.agent.displayName}...`)),s(a.green(`${e.data.agent.displayName} installed successfully!`))}}function C(e){if(!e.data){e.error&&c(a.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:s(a.cyan(`Installing ${t.agent.displayName}...`)),s(a.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:s(a.green(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:o(a.yellow(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:o(a.cyan(w(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:o(a.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:c(a.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}T(e.data.summary)}function w(e,t){return e[0]?.message??t}function T(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&&s(a.bold(`Summary: ${t.join(`, `)}`))}export{p as installCommand,m as installCommandWithRoute};
@@ -1 +1 @@
1
- import{c as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./detect-Dou6fit1.mjs";import{R as n,n as r,r as i}from"./agents-DqDXuTf0.mjs";import{Q as a,S as o,Z as s,et as c,x as l}from"./output-CbB-lipw.mjs";import{u}from"./providers-DUaztLRJ.mjs";import{t as d}from"./cli-operation-context-CzjG_eom.mjs";import{r as f}from"./package-manager-6SgDzwkw.mjs";import{r as p}from"./provider-binding-DW-oviNl.mjs";import{t as m}from"./agent-observation-CcBKTAZT.mjs";function h(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,resolveExecutablePath:t=>e.getResolvedBinaryPath(t),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 g(e,t){return t?_(t).resolveAgentObservation(e):v(t=>t.resolveAgentObservation(e))}function _(e,s={}){return h({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>x(t,n,r,e),getOrderedInstallMethods:f,getPlatform:t,getResolvedBinaryPath:t=>a(t,e),inspectExecutable:(t,n)=>y(t,n,e),observeAgentLifecycle:m,providerRegistry:n,readInstalledState:l,readReceipt:o,signal:e.signal,timeoutMs:e.timeoutMs},s)}async function v(e){let t=d(),n=_(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function y(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let o=await b(t,n,r,i);return{path:await a(i,r)??i,present:!0,version:o}}async function b(e,t,n,r){return c(e.binaryName,e.versionProbe,n,r)}async function x(e,t,n,r){let i=u(e,t,n);return i?s(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
1
+ import{c as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./detect-Dou6fit1.mjs";import{R as n,n as r,r as i}from"./agents-1xVrcX2T.mjs";import{Q as a,S as o,Z as s,et as c,x as l}from"./output-C0TF6WTW.mjs";import{u}from"./providers-BrKmtcci.mjs";import{t as d}from"./cli-operation-context-CzjG_eom.mjs";import{r as f}from"./package-manager-BdBKbZci.mjs";import{r as p}from"./provider-binding-DW-oviNl.mjs";import{t as m}from"./agent-observation-CcBKTAZT.mjs";function h(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,resolveExecutablePath:t=>e.getResolvedBinaryPath(t),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 g(e,t){return t?_(t).resolveAgentObservation(e):v(t=>t.resolveAgentObservation(e))}function _(e,s={}){return h({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>x(t,n,r,e),getOrderedInstallMethods:f,getPlatform:t,getResolvedBinaryPath:t=>a(t,e),inspectExecutable:(t,n)=>y(t,n,e),observeAgentLifecycle:m,providerRegistry:n,readInstalledState:l,readReceipt:o,signal:e.signal,timeoutMs:e.timeoutMs},s)}async function v(e){let t=d(),n=_(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function y(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let o=await b(t,n,r,i);return{path:await a(i,r)??i,present:!0,version:o}}async function b(e,t,n,r){return c(e.binaryName,e.versionProbe,n,r)}async function x(e,t,n,r){let i=u(e,t,n);return i?s(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
@@ -1 +1 @@
1
- import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-Dou6fit1.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-DAYz9yrG.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{t as a}from"./cli-operation-context-CzjG_eom.mjs";import{n as o}from"./agents-Dd4G-47n.mjs";import{a as s,t as c}from"./provider-binding-DW-oviNl.mjs";import{t as l}from"./provider-evidence-DxydUqAR.mjs";import{n as u}from"./lifecycle-observations-orGecdi1.mjs";import{createHash as d}from"node:crypto";function f(e,t={}){let n=m(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(g)}}function p(e){return d(`sha256`).update(h(m(e)),`utf8`).digest(`hex`)}function m(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(m)}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(g).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,m(n)]]}))}function h(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(h).join(`,`)}]`:`{${Object.keys(e).sort(g).map(t=>`${JSON.stringify(t)}:${h(e[t])}`).join(`,`)}}`}function g(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 _(e){if(e.length===0||!e.every(x))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 v(e){if(e.length===0||!e.every(C))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(!O(e))return y(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return y(`legacy-record`);if(e.schemaVersion!==1)return y(`unsupported-schema`);if(!A(e,ee))return y(`malformed-record`);if(!w(e.createdAt)||!w(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return y(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return y(`failed-result`);if(t===`malformed`||!b(e.request)||!b(e.resolvedPlan)||!b(e.receipt)||!b(e.postcondition))return y(`malformed-record`);if(!ce(e.request.payload)||!T(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return y(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(p(t.payload)!==t.fingerprint)return y(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function y(e){return{kind:`invalid`,reason:e}}function ie(e){return!O(e)||!j(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!D(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&&!E(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!O(e)||!j(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&D(e.runId)&&D(e.schemaVersion)&&w(e.timestamp)&&D(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||w(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||w(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return O(e)&&j(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||D(e.name))}function se(e){return O(e)&&j(e,[`code`,`details`,`message`])&&D(e.code)&&D(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||T(e.details))}function b(e){return O(e)&&A(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return O(e)&&A(e,[`action`,`options`,`targets`])&&D(e.action)&&T(e.options)&&Array.isArray(e.targets)&&e.targets.every(D)?p(f({action:e.action,options:e.options,targets:e.targets}))===p(e):!1}function le(e){return T(e)?x(e)||S(e):!1}function x(e){return T(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&D(e.providerId)&&D(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||D(e.version))}function S(e){return T(e)?A(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,x):!1}function ue(e){return!T(e)||!D(e.kind)?!1:e.kind===`all-of`?A(e,ne)&&de(e.items,C):C(e)}function C(e){if(!T(e)||!D(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return D(e.providerId)&&D(e.targetId);case`executable-absent`:case`executable-present`:return D(e.executable);case`version-satisfies`:return D(e.expectedVersion)&&D(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(p);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:p(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 w(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function T(e){return O(e)&&E(e)}function E(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(!k(r)||!E(r.value,t))return!1}return!0}return O(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return k(r)&&E(r.value,t)}):!1}finally{t.delete(e)}}function D(e){return typeof e==`string`&&e.length>0}function O(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`&&k(Reflect.getOwnPropertyDescriptor(e,t)))}function k(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function A(e,t){return Reflect.ownKeys(e).length===t.length&&j(e,t)&&t.every(t=>Object.hasOwn(e,t))}function j(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:B(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:Me(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(R),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:F(r,t),outcome:t})}let r=new Map;for(let e of n){let t=ke(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(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(t,n){let r=await n.observe(t);if(!r)return{agentName:t,kind:`unknown-agent`};if(n.signal.aborted)return{before:r,kind:`cancelled`,reason:B(n.signal)};let a=xe(r);if(!a){let e=r.observation.kind===`absent`&&r.observation.drift.kind===`recorded-absent`;return{before:r,category:e?`stale-state`:r.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${r.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${r.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}let o=i(r.agent,r.installedState);if(o)return{before:r,category:`superseded-package`,kind:`blocked`,reason:e(r.agent,o)};if(we(r.installedState)&&r.agent.selfUpdate){let e=M(r);return e?{kind:`planned`,planned:{before:r,beforeVersion:e,binding:a,commands:[r.agent.selfUpdate.command,...r.agent.selfUpdate.fallbackCommands??[]],planning:Te(r),strategy:`self-update`}}:{before:r,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${r.agent.displayName} self-update because its installed version is unknown.`}}let s=n.providerRegistry.get(a.providerId);if(!s?.resolveLatestVersion)return{before:r,category:`manual-required`,kind:`blocked`,reason:`Provider ${a.providerId} cannot resolve an update target version.`};let c=await s.resolveLatestVersion({context:P(n),target:a.target});if(c.kind!==`success`)return Ee(r,c);let l={capabilities:n.providerRegistry.getCapabilities(a.providerId),providerId:a.providerId,targetId:a.target.id,targetKind:a.target.kind},u=n.planLifecycleUpdate({intent:{kind:`update`,targetId:r.agent.name,targetVersion:c.value.version},observation:r.observation,provider:l});return{kind:`planned`,planned:{before:r,binding:a,plannedTargetVersion:c.value.version,planning:u,providerOptions:n.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:B(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:P(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:B(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:B(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=N(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:je(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:P(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:B(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:B(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=N(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:je(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`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,t){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,t.binding))return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(t.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains ${t.observation.drift.kind} drift.`};if(t.observation.kind!==`present`||!t.executable.present)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[t.observation.version,t.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>n(e,a)!==0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(t=>(n(t,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:t.observation,postcondition:r}}function Ce(e,t){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!z(e.binding,t.binding)||t.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(t.observation.kind!==`present`||!t.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=M(t),a=i?n(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:t.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function M(e){let t=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=t[0];return r&&t.every(e=>n(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 N(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 P(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 F(e,t){let n=`update-target:agent=${L(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=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};beforeVersion=${L(t.planned.beforeVersion)};commands=${t.planned.commands.map(I).join(`|`)};plan=${L(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${r.decision};plan=${L(r.plan.id)};version=${L(i)};${Ae(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(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=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${I(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${I(e.command)};evidence=${Oe(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${Oe(e.evidence)};reason=${L(e.reason)}`}}function I(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function Oe(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function ke(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=${L(t.binding.providerId)};${Ae(t.providerOptions)}`}function Ae(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(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 R(e,t){return e<t?-1:e>t?1:0}function z(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 B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Me(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ne(e,t=e=>o(e)?.name){return[...f({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Pe(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=K(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 J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:F(r,n),targetId:r},async validateLive(e){let n=We(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Fe(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=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:v(i.map(e=>e.postcondition)),receipt:_(i.map(e=>e.receipt))}},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Ge(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Ie(e,t={}){let n=t.observe??u,r=Ne(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:v(t.map(e=>e.postcondition)),receipt:_(t.map(e=>e.receipt))}},request:f({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:ze((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=Le(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?p(a.evidence.postcondition)===p(i.postcondition)&&p(a.evidence.receipt)===p(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Le(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(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 Re(e){try{return p(v(e.items))===p(e)}catch{return!1}}function V(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 H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function ze(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=Be(n[e],r[e]);if(t!==0)return t}return 0})}function Be(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 Ve(e,n={}){let r=n.observe??u,i=await r(e),a=i?.agent.name??e,o=i?Ke(i):void 0,s=n.observeProviderTarget??Ye,c=n.isExecutablePresent??t;return{async captureEvidence(){if(o&&Qe(await Xe(s,o.binding),o.binding)&&await Ze(c,o.executableName)===!1)return Je(o)},request:f({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=qe({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=He(n.observation);if(i!==`clear`)return{kind:i};let o=await Xe(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let l=await Ze(c,t.executableName);return l===void 0?{kind:`inconclusive`}:l?{kind:`drifted`}:{kind:`satisfied`}}}}function He(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 Ue(e,t,n={}){let r=await(n.observe??u)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??u)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:f({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??u)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?p(r.evidence)===p(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(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=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([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=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(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 W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function We(e,t){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||n(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==t||i!==t||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!$e(c)||!et(s)||!$(c,s)))return{agentTargetId:t,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Ge(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=We({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(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=q(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=W([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 q(e,t,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==t.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:t.providerId,target:{id:t.providerTargetId,kind:t.providerTargetKind}};if(!c(i,e.binding,e.agent.binaryName)||!c(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==t.providerId||e.observation.providerTargetId!==t.providerTargetId||e.observation.providerTargetKind!==t.providerTargetKind||r.targetId!==t.agentTargetId||r.providerId!==t.providerId||r.providerTargetId!==t.providerTargetId||r.providerTargetKind!==t.providerTargetKind)return`drifted`;let a=W([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let o=n(a[0],t.expectedVersion);return o===void 0?`inconclusive`:o<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ke(e){let t=e.receipt?s(e.receipt):void 0;if(!(!t||!e.binding||!c(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 qe(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(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||!$e(o)||!et(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Je(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 Ye(e){let t=a();try{return await t.run(()=>l(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Xe(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ze(e,t){try{return await e(t)}catch{return}}function Qe(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`&&!S(e.receipt)}function $e(e){return r.includes(e)}function et(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{Pe as a,ve as c,re as d,p as f,Ue as i,he as l,Ie as n,Ne as o,Fe as r,pe as s,Ve as t,_e as u};
1
+ import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-Dou6fit1.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-DAYz9yrG.mjs";import{f as i}from"./providers-BrKmtcci.mjs";import{t as a}from"./cli-operation-context-CzjG_eom.mjs";import{n as o}from"./agents-BdSn7xtP.mjs";import{a as s,t as c}from"./provider-binding-DW-oviNl.mjs";import{t as l}from"./provider-evidence-C_k-kzoO.mjs";import{n as u}from"./lifecycle-observations-D78ZkqEX.mjs";import{createHash as d}from"node:crypto";function f(e,t={}){let n=m(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(g)}}function p(e){return d(`sha256`).update(h(m(e)),`utf8`).digest(`hex`)}function m(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(m)}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(g).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,m(n)]]}))}function h(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(h).join(`,`)}]`:`{${Object.keys(e).sort(g).map(t=>`${JSON.stringify(t)}:${h(e[t])}`).join(`,`)}}`}function g(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 _(e){if(e.length===0||!e.every(x))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 v(e){if(e.length===0||!e.every(C))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(!O(e))return y(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return y(`legacy-record`);if(e.schemaVersion!==1)return y(`unsupported-schema`);if(!A(e,ee))return y(`malformed-record`);if(!w(e.createdAt)||!w(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return y(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return y(`failed-result`);if(t===`malformed`||!b(e.request)||!b(e.resolvedPlan)||!b(e.receipt)||!b(e.postcondition))return y(`malformed-record`);if(!ce(e.request.payload)||!T(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return y(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(p(t.payload)!==t.fingerprint)return y(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function y(e){return{kind:`invalid`,reason:e}}function ie(e){return!O(e)||!j(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!D(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&&!E(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!O(e)||!j(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&D(e.runId)&&D(e.schemaVersion)&&w(e.timestamp)&&D(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||w(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||w(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return O(e)&&j(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||D(e.name))}function se(e){return O(e)&&j(e,[`code`,`details`,`message`])&&D(e.code)&&D(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||T(e.details))}function b(e){return O(e)&&A(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return O(e)&&A(e,[`action`,`options`,`targets`])&&D(e.action)&&T(e.options)&&Array.isArray(e.targets)&&e.targets.every(D)?p(f({action:e.action,options:e.options,targets:e.targets}))===p(e):!1}function le(e){return T(e)?x(e)||S(e):!1}function x(e){return T(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&D(e.providerId)&&D(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||D(e.version))}function S(e){return T(e)?A(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,x):!1}function ue(e){return!T(e)||!D(e.kind)?!1:e.kind===`all-of`?A(e,ne)&&de(e.items,C):C(e)}function C(e){if(!T(e)||!D(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return D(e.providerId)&&D(e.targetId);case`executable-absent`:case`executable-present`:return D(e.executable);case`version-satisfies`:return D(e.expectedVersion)&&D(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(p);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:p(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 w(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function T(e){return O(e)&&E(e)}function E(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(!k(r)||!E(r.value,t))return!1}return!0}return O(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return k(r)&&E(r.value,t)}):!1}finally{t.delete(e)}}function D(e){return typeof e==`string`&&e.length>0}function O(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`&&k(Reflect.getOwnPropertyDescriptor(e,t)))}function k(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function A(e,t){return Reflect.ownKeys(e).length===t.length&&j(e,t)&&t.every(t=>Object.hasOwn(e,t))}function j(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:B(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:Me(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(R),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:F(r,t),outcome:t})}let r=new Map;for(let e of n){let t=ke(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(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(t,n){let r=await n.observe(t);if(!r)return{agentName:t,kind:`unknown-agent`};if(n.signal.aborted)return{before:r,kind:`cancelled`,reason:B(n.signal)};let a=xe(r);if(!a){let e=r.observation.kind===`absent`&&r.observation.drift.kind===`recorded-absent`;return{before:r,category:e?`stale-state`:r.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${r.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${r.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}let o=i(r.agent,r.installedState);if(o)return{before:r,category:`superseded-package`,kind:`blocked`,reason:e(r.agent,o)};if(we(r.installedState)&&r.agent.selfUpdate){let e=M(r);return e?{kind:`planned`,planned:{before:r,beforeVersion:e,binding:a,commands:[r.agent.selfUpdate.command,...r.agent.selfUpdate.fallbackCommands??[]],planning:Te(r),strategy:`self-update`}}:{before:r,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${r.agent.displayName} self-update because its installed version is unknown.`}}let s=n.providerRegistry.get(a.providerId);if(!s?.resolveLatestVersion)return{before:r,category:`manual-required`,kind:`blocked`,reason:`Provider ${a.providerId} cannot resolve an update target version.`};let c=await s.resolveLatestVersion({context:P(n),target:a.target});if(c.kind!==`success`)return Ee(r,c);let l={capabilities:n.providerRegistry.getCapabilities(a.providerId),providerId:a.providerId,targetId:a.target.id,targetKind:a.target.kind},u=n.planLifecycleUpdate({intent:{kind:`update`,targetId:r.agent.name,targetVersion:c.value.version},observation:r.observation,provider:l});return{kind:`planned`,planned:{before:r,binding:a,plannedTargetVersion:c.value.version,planning:u,providerOptions:n.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:B(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:P(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:B(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:B(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=N(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:je(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:P(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:B(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:B(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=N(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:je(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`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,t){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,t.binding))return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(t.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains ${t.observation.drift.kind} drift.`};if(t.observation.kind!==`present`||!t.executable.present)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[t.observation.version,t.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>n(e,a)!==0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(t=>(n(t,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:t.observation,postcondition:r}}function Ce(e,t){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!z(e.binding,t.binding)||t.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(t.observation.kind!==`present`||!t.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=M(t),a=i?n(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:t.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function M(e){let t=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=t[0];return r&&t.every(e=>n(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 N(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 P(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 F(e,t){let n=`update-target:agent=${L(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=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};beforeVersion=${L(t.planned.beforeVersion)};commands=${t.planned.commands.map(I).join(`|`)};plan=${L(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${r.decision};plan=${L(r.plan.id)};version=${L(i)};${Ae(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(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=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${I(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${I(e.command)};evidence=${Oe(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${Oe(e.evidence)};reason=${L(e.reason)}`}}function I(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function Oe(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function ke(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=${L(t.binding.providerId)};${Ae(t.providerOptions)}`}function Ae(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(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 R(e,t){return e<t?-1:e>t?1:0}function z(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 B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Me(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ne(e,t=e=>o(e)?.name){return[...f({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Pe(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=K(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 J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:F(r,n),targetId:r},async validateLive(e){let n=We(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Fe(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=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:v(i.map(e=>e.postcondition)),receipt:_(i.map(e=>e.receipt))}},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Ge(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Ie(e,t={}){let n=t.observe??u,r=Ne(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:v(t.map(e=>e.postcondition)),receipt:_(t.map(e=>e.receipt))}},request:f({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:ze((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=Le(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?p(a.evidence.postcondition)===p(i.postcondition)&&p(a.evidence.receipt)===p(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Le(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(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 Re(e){try{return p(v(e.items))===p(e)}catch{return!1}}function V(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 H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function ze(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=Be(n[e],r[e]);if(t!==0)return t}return 0})}function Be(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 Ve(e,n={}){let r=n.observe??u,i=await r(e),a=i?.agent.name??e,o=i?Ke(i):void 0,s=n.observeProviderTarget??Ye,c=n.isExecutablePresent??t;return{async captureEvidence(){if(o&&Qe(await Xe(s,o.binding),o.binding)&&await Ze(c,o.executableName)===!1)return Je(o)},request:f({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=qe({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=He(n.observation);if(i!==`clear`)return{kind:i};let o=await Xe(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let l=await Ze(c,t.executableName);return l===void 0?{kind:`inconclusive`}:l?{kind:`drifted`}:{kind:`satisfied`}}}}function He(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 Ue(e,t,n={}){let r=await(n.observe??u)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??u)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:f({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??u)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?p(r.evidence)===p(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(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=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([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=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(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 W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function We(e,t){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||n(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==t||i!==t||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!$e(c)||!et(s)||!$(c,s)))return{agentTargetId:t,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Ge(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=We({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(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=q(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=W([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 q(e,t,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==t.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:t.providerId,target:{id:t.providerTargetId,kind:t.providerTargetKind}};if(!c(i,e.binding,e.agent.binaryName)||!c(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==t.providerId||e.observation.providerTargetId!==t.providerTargetId||e.observation.providerTargetKind!==t.providerTargetKind||r.targetId!==t.agentTargetId||r.providerId!==t.providerId||r.providerTargetId!==t.providerTargetId||r.providerTargetKind!==t.providerTargetKind)return`drifted`;let a=W([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let o=n(a[0],t.expectedVersion);return o===void 0?`inconclusive`:o<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ke(e){let t=e.receipt?s(e.receipt):void 0;if(!(!t||!e.binding||!c(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 qe(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(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||!$e(o)||!et(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Je(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 Ye(e){let t=a();try{return await t.run(()=>l(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Xe(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ze(e,t){try{return await e(t)}catch{return}}function Qe(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`&&!S(e.receipt)}function $e(e){return r.includes(e)}function et(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{Pe as a,ve as c,re as d,p as f,Ue as i,he as l,Ie as n,Ne as o,Fe as r,pe as s,Ve as t,_e as u};
@@ -1,3 +1,3 @@
1
- import{t as e}from"./messages-D6r2o7w-.mjs";import{$ as t,i as n,n as r}from"./output-CbB-lipw.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{i as a,r as o,t as s}from"./human-BbO37wBs.mjs";import{t as c}from"./color-CLDVRyIs.mjs";import{a as l}from"./user-output-CF4UAX0c.mjs";import{n as u,t as d}from"./agent-inspection-FouaG2Iz.mjs";async function f(){let t=(await u()).map(d);return n(r({action:`list`,data:{agents:t.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`},warnings:t.flatMap(t=>{let n=i(t.agent,t.installedState);return n?[e(t.agent,n)]:[]})}),p)}function p(e){let t=e.data?.agents??[],n=s(),r=new Set(e.warnings.filter(e=>e.code===`AGENT_PACKAGE_SUPERSEDED`).map(e=>e.details?.agentName).filter(e=>typeof e==`string`));console.log(c.bold(`
1
+ import{t as e}from"./messages-D6r2o7w-.mjs";import{$ as t,i as n,n as r}from"./output-C0TF6WTW.mjs";import{f as i}from"./providers-BrKmtcci.mjs";import{i as a,r as o,t as s}from"./human-BbO37wBs.mjs";import{t as c}from"./color-CLDVRyIs.mjs";import{a as l}from"./user-output-CF4UAX0c.mjs";import{n as u,t as d}from"./agent-inspection-D8YF0G7l.mjs";async function f(){let t=(await u()).map(d);return n(r({action:`list`,data:{agents:t.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`},warnings:t.flatMap(t=>{let n=i(t.agent,t.installedState);return n?[e(t.agent,n)]:[]})}),p)}function p(e){let t=e.data?.agents??[],n=s(),r=new Set(e.warnings.filter(e=>e.code===`AGENT_PACKAGE_SUPERSEDED`).map(e=>e.details?.agentName).filter(e=>typeof e==`string`));console.log(c.bold(`
2
2
  AI Agents:
3
3
  `));for(let e of o(t,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Installed`,minWidth:5,value:e=>e.installed?c.green(`yes`):c.dim(`no`)},{header:`Version`,maxWidth:22,optional:!0,priority:2,value:e=>e.installed?c.dim(e.installedVersion??`unknown`):c.dim(`—`)},{header:`Source`,optional:!0,priority:2,value:e=>c.dim(e.installed?g(e.sourceLabel):`—`)},{header:`Managed`,optional:!0,priority:1,value:e=>e.installed?c.cyan(m(e.updateLabel)):c.dim(`—`)},{header:`Available`,optional:!0,priority:0,value:e=>h(e,r)}],{headerStyle:c.bold,width:n}))console.log(e);let i=t.filter(e=>e.installed).length,u=`${i} installed · ${t.length-i} not installed`;console.log();for(let e of a(c.dim(u),{indent:` `,width:n}))console.log(e);for(let e of a(c.dim(`Details: qtx inspect <agent>`),{indent:` `,width:n}))console.log(e);console.log();for(let t of e.warnings)l(c.yellow(t.message))}function m(e){return e.replace(/ update$/u,``)}function h(e,n){return n.has(e.name)?c.yellow(`migrate`):!e.installed||!e.installedVersion||!e.latestVersion?c.dim(`—`):t(e.latestVersion,e.installedVersion)?c.cyan(e.latestVersion):c.dim(`—`)}function g(e){return/^managed via ([^ (]+)/u.exec(e)?.[1]||(e===`script installer`?`script`:e===`binary installer`?`binary`:e===`detected on disk`?`detected`:`—`)}export{f as listCommand};