quantex-cli 1.10.0 → 1.11.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 (59) hide show
  1. package/README.md +3 -7
  2. package/README.zh-CN.md +3 -7
  3. package/dist/{agent-installation-BIf8WGed.mjs → agent-installation-fKY9rZiy.mjs} +1 -1
  4. package/dist/agents-CbaEEQf0.mjs +1 -0
  5. package/dist/{agents-Dqss403b.mjs → agents-_Jz2GL-G.mjs} +1 -1
  6. package/dist/{capabilities-CKeFXlZQ.mjs → capabilities-CptqKRVw.mjs} +1 -1
  7. package/dist/capabilities-pQIJmimx.mjs +1 -0
  8. package/dist/cli.mjs +1 -1
  9. package/dist/commands-BRk3qXnq.mjs +1 -0
  10. package/dist/{commands-B5Z2z29h.mjs → commands-DoVb6smF.mjs} +1 -1
  11. package/dist/{config-IDvuzbXN.mjs → config-BVQ-3CxQ.mjs} +1 -1
  12. package/dist/{core-installation-cli-D0T3R90X.mjs → core-installation-cli-BtjoY01X.mjs} +1 -1
  13. package/dist/{core-read-observations-CwugnFtn.mjs → core-read-observations-BNCduEh8.mjs} +1 -1
  14. package/dist/doctor-DqFcWerq.mjs +4 -0
  15. package/dist/{ensure-DUp9iPBJ.mjs → ensure-C4-qPt-b.mjs} +1 -1
  16. package/dist/ensure-zoSTITKY.mjs +1 -0
  17. package/dist/index.d.mts +95 -93
  18. package/dist/index.mjs +1 -1
  19. package/dist/{info-BwGWPWwX.mjs → info-Dxtw-911.mjs} +1 -1
  20. package/dist/inspect-pHkywlVy.mjs +5 -0
  21. package/dist/inspect-tRrgeBHP.mjs +1 -0
  22. package/dist/{install-vhY8vk_J.mjs → install-_JIPLQxT.mjs} +1 -1
  23. package/dist/{installation-compatibility-DoDbUtFm.mjs → installation-compatibility-BnanRlky.mjs} +1 -1
  24. package/dist/{installation-production-DMs7Bidg.mjs → installation-production-BBJukMkB.mjs} +1 -1
  25. package/dist/{lifecycle-observations-v4Yw4tS3.mjs → lifecycle-observations-D5ssgFhb.mjs} +1 -1
  26. package/dist/lifecycle-policy-BlDPpwko.mjs +1 -0
  27. package/dist/list-H3YlwwIF.mjs +3 -0
  28. package/dist/messages-D6r2o7w-.mjs +1 -0
  29. package/dist/mutation-recipe-catalog-DfkeFj0q.mjs +1 -0
  30. package/dist/{output-pOJ9U7C5.mjs → output-BFYw3cWv.mjs} +2 -2
  31. package/dist/production-observation-BOalSjcd.mjs +1 -0
  32. package/dist/{provider-evidence-DXNe-aXl.mjs → provider-evidence-C5jSkQz1.mjs} +1 -1
  33. package/dist/{provider-observations-Cig-U-yt.mjs → provider-observations-Dbm-Ct3d.mjs} +1 -1
  34. package/dist/providers-Bwo6FFIw.mjs +1 -0
  35. package/dist/{resolve-CTaJLIdJ.mjs → resolve-CtzhgrFl.mjs} +1 -1
  36. package/dist/resolve-DnqWf3C3.mjs +1 -0
  37. package/dist/schema-CYEswP3Y.mjs +1 -0
  38. package/dist/{schema-Diew1l38.mjs → schema-Cxk5MX_Z.mjs} +1 -1
  39. package/dist/{uninstall-CYaqYpUe.mjs → uninstall-C7NcuH2y.mjs} +1 -1
  40. package/dist/{unmanaged-install-compatibility-MC_rGtQA.mjs → unmanaged-install-compatibility-DYqGYSXK.mjs} +1 -1
  41. package/dist/update-BdC8LNVP.mjs +1 -0
  42. package/dist/{upgrade-rMVaNHuO.mjs → upgrade-dDdi9OJq.mjs} +1 -1
  43. package/package.json +4 -11
  44. package/dist/agents-vJvtQ83q.mjs +0 -1
  45. package/dist/capabilities-dq2H2h0T.mjs +0 -1
  46. package/dist/commands-V3_i42ap.mjs +0 -1
  47. package/dist/doctor-C2XDBGvH.mjs +0 -4
  48. package/dist/ensure-D5UxE-xc.mjs +0 -1
  49. package/dist/inspect-BfQSMM2F.mjs +0 -5
  50. package/dist/inspect-Jra1x8Xy.mjs +0 -1
  51. package/dist/lifecycle-policy-BZ0wnnRm.mjs +0 -1
  52. package/dist/list-8tXa5T55.mjs +0 -3
  53. package/dist/messages-CoROK9f4.mjs +0 -1
  54. package/dist/mutation-recipe-catalog-DP_XMSYe.mjs +0 -1
  55. package/dist/production-observation-BxoPjRie.mjs +0 -1
  56. package/dist/providers-Cm4gsCbZ.mjs +0 -1
  57. package/dist/resolve-BDaf2ALP.mjs +0 -1
  58. package/dist/schema-CrkSsXHT.mjs +0 -1
  59. package/dist/update-DuePJ0Bz.mjs +0 -1
@@ -0,0 +1,4 @@
1
+ import{n as e,r as t}from"./messages-D6r2o7w-.mjs";import{W as n,et as r,i,n as a,s as o,u as s}from"./output-BFYw3cWv.mjs";import{i as c,n as l,r as u,t as d}from"./human-BL2-F6cA.mjs";import{t as f}from"./cli-operation-context-BS5a069W.mjs";import{n as p,t as m}from"./provider-observations-Dbm-Ct3d.mjs";import{t as h}from"./color-iQl4CJwm.mjs";import{r as g,t as _}from"./core-read-observations-BNCduEh8.mjs";async function v(){let n=f(),c,l,u;try{[c,l,u]=await n.run(()=>Promise.all([m({context:n.context}),o({context:n.context}),_(n.context)]))}finally{n.dispose()}let d=p(c,e=>e.availability.kind===`success`),{brew:h,bun:v,cargo:x,deno:S}=d,{mise:C,npm:w,pip:T,uv:E,winget:D}=d,O=l.latestVersion?r(l.latestVersion,l.currentVersion):!1,k=u.map(e=>({inspection:g(e),observation:e})),A=k.filter(({inspection:e})=>e.inPath).map(({inspection:e})=>({displayName:e.agent.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion),sourceLabel:e.sourceLabel})),j=[],M=`docs/runbooks/quantex-troubleshooting.md`,N=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!v&&!w&&!h&&!x&&!S&&!C&&!T&&!E&&!D&&j.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:M,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(l.installSource===`bun`&&!v||l.installSource===`npm`&&!w)&&j.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:N,message:`Quantex CLI is tracked as a ${l.installSource} install, but ${l.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:b(l.installSource,l.updateChannel)}),l.canAutoUpdate||j.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:N,message:`Quantex CLI cannot auto-update from install source "${l.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),O&&l.recommendedUpgradeCommand){let e=s(l);j.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:N,message:e?`Quantex CLI ${l.currentVersion} is behind ${l.latestVersion}. Run ${l.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${l.currentVersion} is behind ${l.latestVersion}. Run ${l.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[l.recommendedUpgradeCommand]})}for(let{inspection:n,observation:r}of k.filter(e=>e.inspection.inPath)){if(r.observation.drift.kind===`untracked`&&j.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:M,message:`${n.agent.displayName} is detected on disk but not tracked as a managed Quantex install. Use \`quantex inspect ${n.agent.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${n.agent.name} --json`,`quantex install ${n.agent.name}`]}),!(n.installedVersion&&n.latestVersion&&n.installedVersion!==n.latestVersion)||n.lifecycle===`managed`)continue;let i=e(n.agent,n.agent.selfUpdate?`self-update`:`manual-hint`)??t(n.agent);j.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:M,message:`${n.agent.displayName} ${n.installedVersion} is behind ${n.latestVersion}, but the current source is ${n.sourceLabel}. ${i}`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:n.agent.selfUpdate?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n.agent.selfUpdate?[n.agent.selfUpdate.command.join(` `)]:[]})}return i(a({action:`doctor`,data:{agents:A,issues:j,installers:d,self:{canAutoUpdate:l.canAutoUpdate,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,outdated:!!O,recoveryHint:O?s(l):void 0}},target:{kind:`system`,name:`doctor`}}),y)}function y(e){if(!e.data)return;let t=d();console.log(h.bold(`
2
+ Quantex CLI Environment Check
3
+ `));let n=Object.entries(e.data.installers).map(([e,t])=>({available:t,name:e}));console.log(h.bold(`Managed Installers
4
+ `));for(let e of u(n,[{header:`Installer`,value:e=>e.name},{header:`Status`,value:e=>e.available?h.green(`available`):h.red(`not found`)}],{headerStyle:h.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?h.green(`supported`):h.yellow(`unsupported`)},...e.data.self.latestVersion?[{label:`Latest`,value:`${e.data.self.latestVersion}${e.data.self.outdated?h.yellow(` (update available)`):``}`}]:[],...e.data.self.recoveryHint?[{label:`Recovery`,value:e.data.self.recoveryHint}]:[]];console.log(`\n${h.bold(`Quantex CLI`)}\n`);for(let e of l(r,{labelStyle:h.bold,width:t}))console.log(e);if(console.log(`\n${h.bold(`Installed Agents`)}\n`),e.data.agents.length===0)console.log(h.dim(` No agents installed`));else for(let n of u(e.data.agents,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Version`,maxWidth:24,value:e=>e.outdated&&e.latestVersion?h.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=>h.dim(e.sourceLabel)}],{headerStyle:h.bold,width:t}))console.log(n);if(console.log(`\n${h.bold(`Issues`)}\n`),e.data.issues.length===0)console.log(h.green(` No issues found.`));else for(let n of e.data.issues){for(let e of c(h.yellow(n.message),{continuationIndent:` `,indent:` - `,width:t}))console.log(e);if(n.suggestedCommands.length>0)for(let e of c(h.dim(`Next: ${n.suggestedCommands.join(` | `)}`),{indent:` `,width:t}))console.log(e)}console.log()}function b(e,t){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}export{v as doctorCommand};
@@ -1 +1 @@
1
- import{a as e}from"./file-store-XNyirRRY.mjs";import{i as t,n,r,t as i}from"./output-pOJ9U7C5.mjs";import{l as a}from"./providers-Cm4gsCbZ.mjs";import{t as o}from"./color-iQl4CJwm.mjs";import{g as s,n as c}from"./agents-Dqss403b.mjs";import{t as l}from"./agent-installation-BIf8WGed.mjs";import{n as u}from"./lifecycle-observations-v4Yw4tS3.mjs";import{t as d}from"./lifecycle-errors-BtlAp_sz.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-DLbKXqDm.mjs";import{i as g,n as _,r as v,t as y}from"./installation-failure-diagnostics-BJnxrzTa.mjs";import{n as b,r as x}from"./installation-routing-n62Du1fV.mjs";import{t as S}from"./unmanaged-install-compatibility-MC_rGtQA.mjs";async function C(e){return await w(e,x(`ensure`))}async function w(n,r){if(b(`ensure`,r),r.engine===`core`){let e=await S(n);if(e)return t(k(e),j);let{createCoreInstallationCliSession:r}=await import(`./core-installation-cli-D0T3R90X.mjs`),i=r(`ensure`);try{return t(await i.execute(n,{emitStartedEvent:!0}),j)}finally{i.dispose()}}if(!c(n)||m())return T(n);try{return await s(()=>T(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),j);throw r}}async function T(n){let r=await u(n);if(!r)return t(i({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:n},message:`Unknown agent: ${n}`},target:{kind:`agent`,name:n}}),j);let{agent:o}=r,s=r.pathExecutable.present,c=r.installedState,f=s&&!c?a(r.methods,r.resolvedBinaryPath??r.pathExecutable.path):void 0;if(s&&!c&&!f)return t(k(o),j);let p=c&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?O(o):D(o,p===`adopt`,!!c),j);p!==`satisfied`&&E(o);try{return t(A(o,p,await l({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:c,lifecycle:r.observation,methods:r.methods},operation:`ensure`,route:p})),j)}catch(n){if(e(n))return t(i({action:`ensure`,data:{agent:{displayName:o.displayName,name:o.name},changed:!1,installed:s},...d(n,{kind:`agent`,name:o.name})}),j);throw n}}function E(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function D(e,t,r){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:r?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function O(e){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function k(e){return n({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 A(e,t,r){if(r.kind===`success`){if(t===`satisfied`)return O(e);let i=r.value.value.installedState;return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:r.value.changed,installState:r.value.changed?{installType:i.installType,packageName:i.packageName}:void 0,installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let a=`reason`in r&&r.reason?{reason:r.reason}:{},o=`reason`in r&&!!r.reason?.endsWith(`-after-ensure`),s=r.kind===`cancelled`?{code:`CANCELLED`,message:`Ensure was cancelled before tracking could complete.`}:r.kind===`failed`&&r.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:v(a,`state-write-failed`),message:`Failed to record verified state for ${e.displayName}.`}:o&&(r.kind===`failed`||r.kind===`indeterminate`)?{code:`INSTALL_FAILED`,details:v(a,`verification-failed`),message:`${e.displayName} could not be verified after ensure completed.`}:r.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:v(a,`decision-indeterminate`),message:_(`Quantex could not determine the installed state of ${e.displayName}.`,a.reason)}:{code:`INSTALL_FAILED`,details:v(a,g(a.reason)?y:void 0),message:_(`Failed to install ${e.displayName}.`,a.reason)};return i({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:s,target:{kind:`agent`,name:e.name}})}function j(e){if(e.error){h(o.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){p(o.green(t.message));continue}if(t.code===`DRY_RUN`){f(o.cyan(t.message));continue}f(o.yellow(t.message))}return}if(e.data.changed){p(o.cyan(`Installing ${e.data.agent.displayName}...`)),p(o.green(`${e.data.agent.displayName} is now installed.`));return}p(o.green(`${e.data.agent.displayName} is already installed.`))}}export{w as n,C as t};
1
+ import{a as e}from"./file-store-XNyirRRY.mjs";import{i as t,n,r,t as i}from"./output-BFYw3cWv.mjs";import{l as a}from"./providers-Bwo6FFIw.mjs";import{t as o}from"./color-iQl4CJwm.mjs";import{g as s,n as c}from"./agents-_Jz2GL-G.mjs";import{t as l}from"./agent-installation-fKY9rZiy.mjs";import{n as u}from"./lifecycle-observations-D5ssgFhb.mjs";import{t as d}from"./lifecycle-errors-BtlAp_sz.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-DLbKXqDm.mjs";import{i as g,n as _,r as v,t as y}from"./installation-failure-diagnostics-BJnxrzTa.mjs";import{n as b,r as x}from"./installation-routing-n62Du1fV.mjs";import{t as S}from"./unmanaged-install-compatibility-DYqGYSXK.mjs";async function C(e){return await w(e,x(`ensure`))}async function w(n,r){if(b(`ensure`,r),r.engine===`core`){let e=await S(n);if(e)return t(k(e),j);let{createCoreInstallationCliSession:r}=await import(`./core-installation-cli-BtjoY01X.mjs`),i=r(`ensure`);try{return t(await i.execute(n,{emitStartedEvent:!0}),j)}finally{i.dispose()}}if(!c(n)||m())return T(n);try{return await s(()=>T(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),j);throw r}}async function T(n){let r=await u(n);if(!r)return t(i({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:n},message:`Unknown agent: ${n}`},target:{kind:`agent`,name:n}}),j);let{agent:o}=r,s=r.pathExecutable.present,c=r.installedState,f=s&&!c?a(r.methods,r.resolvedBinaryPath??r.pathExecutable.path):void 0;if(s&&!c&&!f)return t(k(o),j);let p=c&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?O(o):D(o,p===`adopt`,!!c),j);p!==`satisfied`&&E(o);try{return t(A(o,p,await l({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:c,lifecycle:r.observation,methods:r.methods},operation:`ensure`,route:p})),j)}catch(n){if(e(n))return t(i({action:`ensure`,data:{agent:{displayName:o.displayName,name:o.name},changed:!1,installed:s},...d(n,{kind:`agent`,name:o.name})}),j);throw n}}function E(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function D(e,t,r){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:r?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function O(e){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function k(e){return n({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 A(e,t,r){if(r.kind===`success`){if(t===`satisfied`)return O(e);let i=r.value.value.installedState;return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:r.value.changed,installState:r.value.changed?{installType:i.installType,packageName:i.packageName}:void 0,installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let a=`reason`in r&&r.reason?{reason:r.reason}:{},o=`reason`in r&&!!r.reason?.endsWith(`-after-ensure`),s=r.kind===`cancelled`?{code:`CANCELLED`,message:`Ensure was cancelled before tracking could complete.`}:r.kind===`failed`&&r.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:v(a,`state-write-failed`),message:`Failed to record verified state for ${e.displayName}.`}:o&&(r.kind===`failed`||r.kind===`indeterminate`)?{code:`INSTALL_FAILED`,details:v(a,`verification-failed`),message:`${e.displayName} could not be verified after ensure completed.`}:r.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:v(a,`decision-indeterminate`),message:_(`Quantex could not determine the installed state of ${e.displayName}.`,a.reason)}:{code:`INSTALL_FAILED`,details:v(a,g(a.reason)?y:void 0),message:_(`Failed to install ${e.displayName}.`,a.reason)};return i({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:s,target:{kind:`agent`,name:e.name}})}function j(e){if(e.error){h(o.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){p(o.green(t.message));continue}if(t.code===`DRY_RUN`){f(o.cyan(t.message));continue}f(o.yellow(t.message))}return}if(e.data.changed){p(o.cyan(`Installing ${e.data.agent.displayName}...`)),p(o.green(`${e.data.agent.displayName} is now installed.`));return}p(o.green(`${e.data.agent.displayName} is already installed.`))}}export{w as n,C as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./ensure-C4-qPt-b.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
package/dist/index.d.mts CHANGED
@@ -62,14 +62,11 @@ declare const codewhale: AgentDefinition;
62
62
  declare const codex: AgentDefinition;
63
63
  declare const copilot: AgentDefinition;
64
64
  declare const cursor: AgentDefinition;
65
- declare const deepcode: AgentDefinition;
66
65
  declare const devin: AgentDefinition;
67
66
  declare const droid: AgentDefinition;
68
67
  declare const gemini: AgentDefinition;
69
- declare const genie: AgentDefinition;
70
68
  declare const grok: AgentDefinition;
71
69
  declare const hermes: AgentDefinition;
72
- declare const jcode: AgentDefinition;
73
70
  declare const junie: AgentDefinition;
74
71
  declare const kilo: AgentDefinition;
75
72
  declare const mimo: AgentDefinition;
@@ -81,7 +78,6 @@ declare const pi: AgentDefinition;
81
78
  declare const qoder: AgentDefinition;
82
79
  declare const reasonix: AgentDefinition;
83
80
  declare const vibe: AgentDefinition;
84
- declare const vtcode: AgentDefinition;
85
81
  //#endregion
86
82
  //#region src/agents/schema.d.ts
87
83
  declare const agentCatalogEntrySchema: z.ZodObject<{
@@ -625,11 +621,106 @@ declare const agentCatalogJsonSchema: {
625
621
  declare function getCatalogAgents(): AgentDefinition[];
626
622
  declare function getCatalogAgent(name: string): AgentDefinition;
627
623
  //#endregion
624
+ //#region src/agents/withdrawn/index.d.ts
625
+ declare const deepcode: AgentDefinition;
626
+ declare const genie: AgentDefinition;
627
+ declare const jcode: AgentDefinition;
628
+ declare const vtcode: AgentDefinition;
629
+ //#endregion
628
630
  //#region src/agents/index.d.ts
629
631
  declare function getAllAgents(): AgentDefinition[];
630
632
  declare function getAgentByLookupName(name: string): AgentDefinition | undefined;
631
633
  declare function getAgentByNameOrAlias(name: string): AgentDefinition | undefined;
632
634
  //#endregion
635
+ //#region src/cli-context.d.ts
636
+ type OutputMode = 'human' | 'json' | 'ndjson';
637
+ type CacheMode = 'default' | 'no-cache' | 'refresh';
638
+ type FreshnessSource = 'cache' | 'network';
639
+ type ColorMode = 'always' | 'auto' | 'never';
640
+ type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'warn';
641
+ interface CliFreshness {
642
+ fetchedAt: string;
643
+ source: FreshnessSource;
644
+ staleAfter: string;
645
+ }
646
+ interface CliContext {
647
+ assumeYes?: boolean;
648
+ cacheMode?: CacheMode;
649
+ cancelled?: boolean;
650
+ colorMode?: ColorMode;
651
+ dryRun?: boolean;
652
+ freshness?: CliFreshness;
653
+ idempotencyKey?: string;
654
+ interactive: boolean;
655
+ logLevel?: LogLevel;
656
+ outputMode: OutputMode;
657
+ quiet?: boolean;
658
+ runId: string;
659
+ timeoutMs?: number;
660
+ }
661
+ interface CliContextOptions {
662
+ idempotencyKey?: string;
663
+ json?: boolean;
664
+ noCache?: boolean;
665
+ nonInteractive?: boolean;
666
+ output?: string;
667
+ color?: string;
668
+ dryRun?: boolean;
669
+ logLevel?: string;
670
+ quiet?: boolean;
671
+ refresh?: boolean;
672
+ runId?: string;
673
+ timeout?: string;
674
+ yes?: boolean;
675
+ }
676
+ declare function getCliContext(): CliContext;
677
+ declare function setCliContext(context: CliContext): void;
678
+ declare function resetCliContext(): void;
679
+ declare function resolveCliContext(options?: CliContextOptions): CliContext;
680
+ //#endregion
681
+ //#region src/errors.d.ts
682
+ declare const cliErrorCodes: readonly ["AGENT_NOT_FOUND", "AGENT_NOT_INSTALLED", "CANCELLED", "INSTALL_FAILED", "INTERACTION_REQUIRED", "INVALID_ARGUMENT", "MANUAL_ACTION_REQUIRED", "NETWORK_ERROR", "RESOURCE_LOCKED", "STATE_READ_ERROR", "TIMEOUT", "UNINSTALL_FAILED", "UNINSTALL_UNMANAGED", "UPDATE_FAILED", "UPGRADE_FAILED"];
683
+ type CliErrorCode = (typeof cliErrorCodes)[number];
684
+ declare function getExitCodeForError(code: CliErrorCode): number;
685
+ declare function getExitCodeForResult(result: Pick<CommandResult, 'ok' | 'error' | 'exitCode'>): number;
686
+ //#endregion
687
+ //#region src/output/types.d.ts
688
+ interface CommandTarget {
689
+ kind: 'agent' | 'config' | 'self' | 'system';
690
+ name?: string;
691
+ }
692
+ interface CommandWarning {
693
+ code: string;
694
+ details?: Record<string, unknown>;
695
+ message: string;
696
+ }
697
+ interface CommandError {
698
+ code: CliErrorCode;
699
+ details?: Record<string, unknown>;
700
+ message: string;
701
+ }
702
+ interface CommandMeta {
703
+ fetchedAt?: string;
704
+ mode: OutputMode;
705
+ runId: string;
706
+ schemaVersion: string;
707
+ source?: FreshnessSource;
708
+ staleAfter?: string;
709
+ timestamp: string;
710
+ version: string;
711
+ }
712
+ interface CommandResult<T = unknown> {
713
+ action: string;
714
+ data?: T;
715
+ error: CommandError | null;
716
+ exitCode?: number;
717
+ meta: CommandMeta;
718
+ ok: boolean;
719
+ target?: CommandTarget;
720
+ warnings: CommandWarning[];
721
+ }
722
+ type HumanRenderer<T> = (result: CommandResult<T>) => void;
723
+ //#endregion
633
724
  //#region src/providers/types.d.ts
634
725
  interface ProviderOperationContext {
635
726
  readonly registerCleanup?: (cleanup: ProviderResourceCleanup) => () => void;
@@ -827,95 +918,6 @@ declare function resolveAgentUpdateProvider(context: AgentUpdateContext): AgentU
827
918
  declare function getAgentUpdateStrategy(context: AgentUpdateContext): AgentUpdateProvider['strategy'];
828
919
  declare function canResolveAgentUpdate(context: AgentUpdateContext): boolean;
829
920
  //#endregion
830
- //#region src/cli-context.d.ts
831
- type OutputMode = 'human' | 'json' | 'ndjson';
832
- type CacheMode = 'default' | 'no-cache' | 'refresh';
833
- type FreshnessSource = 'cache' | 'network';
834
- type ColorMode = 'always' | 'auto' | 'never';
835
- type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'warn';
836
- interface CliFreshness {
837
- fetchedAt: string;
838
- source: FreshnessSource;
839
- staleAfter: string;
840
- }
841
- interface CliContext {
842
- assumeYes?: boolean;
843
- cacheMode?: CacheMode;
844
- cancelled?: boolean;
845
- colorMode?: ColorMode;
846
- dryRun?: boolean;
847
- freshness?: CliFreshness;
848
- idempotencyKey?: string;
849
- interactive: boolean;
850
- logLevel?: LogLevel;
851
- outputMode: OutputMode;
852
- quiet?: boolean;
853
- runId: string;
854
- timeoutMs?: number;
855
- }
856
- interface CliContextOptions {
857
- idempotencyKey?: string;
858
- json?: boolean;
859
- noCache?: boolean;
860
- nonInteractive?: boolean;
861
- output?: string;
862
- color?: string;
863
- dryRun?: boolean;
864
- logLevel?: string;
865
- quiet?: boolean;
866
- refresh?: boolean;
867
- runId?: string;
868
- timeout?: string;
869
- yes?: boolean;
870
- }
871
- declare function getCliContext(): CliContext;
872
- declare function setCliContext(context: CliContext): void;
873
- declare function resetCliContext(): void;
874
- declare function resolveCliContext(options?: CliContextOptions): CliContext;
875
- //#endregion
876
- //#region src/errors.d.ts
877
- declare const cliErrorCodes: readonly ["AGENT_NOT_FOUND", "AGENT_NOT_INSTALLED", "CANCELLED", "INSTALL_FAILED", "INTERACTION_REQUIRED", "INVALID_ARGUMENT", "MANUAL_ACTION_REQUIRED", "NETWORK_ERROR", "RESOURCE_LOCKED", "STATE_READ_ERROR", "TIMEOUT", "UNINSTALL_FAILED", "UNINSTALL_UNMANAGED", "UPDATE_FAILED", "UPGRADE_FAILED"];
878
- type CliErrorCode = (typeof cliErrorCodes)[number];
879
- declare function getExitCodeForError(code: CliErrorCode): number;
880
- declare function getExitCodeForResult(result: Pick<CommandResult, 'ok' | 'error' | 'exitCode'>): number;
881
- //#endregion
882
- //#region src/output/types.d.ts
883
- interface CommandTarget {
884
- kind: 'agent' | 'config' | 'self' | 'system';
885
- name?: string;
886
- }
887
- interface CommandWarning {
888
- code: string;
889
- details?: Record<string, unknown>;
890
- message: string;
891
- }
892
- interface CommandError {
893
- code: CliErrorCode;
894
- details?: Record<string, unknown>;
895
- message: string;
896
- }
897
- interface CommandMeta {
898
- fetchedAt?: string;
899
- mode: OutputMode;
900
- runId: string;
901
- schemaVersion: string;
902
- source?: FreshnessSource;
903
- staleAfter?: string;
904
- timestamp: string;
905
- version: string;
906
- }
907
- interface CommandResult<T = unknown> {
908
- action: string;
909
- data?: T;
910
- error: CommandError | null;
911
- exitCode?: number;
912
- meta: CommandMeta;
913
- ok: boolean;
914
- target?: CommandTarget;
915
- warnings: CommandWarning[];
916
- }
917
- type HumanRenderer<T> = (result: CommandResult<T>) => void;
918
- //#endregion
919
921
  //#region src/commands/capabilities.d.ts
920
922
  interface CapabilitiesData {
921
923
  agents: string[];
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{n as e,t}from"./messages-CoROK9f4.mjs";import{c as n,d as r,f as i,s as a}from"./file-store-XNyirRRY.mjs";import{c as o,i as s,n as c,o as l,t as ee}from"./detect-BUVMt8jZ.mjs";import{A as te,C as ne,D as re,E as ie,F as ae,M as oe,N as se,O as ce,P as le,S as ue,T as u,_ as d,a as f,b as p,c as m,d as h,f as g,g as _,h as v,i as y,j as b,k as x,l as S,m as C,n as w,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P}from"./agents-vJvtQ83q.mjs";import{a as F,n as I,o as L,s as R}from"./cli-context-DI43ouBg.mjs";import{B as z,C as B,D as V,E as H,F as U,H as de,I as fe,L as pe,N as me,P as he,Q as ge,R as _e,U as ve,V as ye,X as be,Z as xe,_ as Se,a as Ce,c as we,g as Te,h as Ee,i as De,j 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-pOJ9U7C5.mjs";import{_ as W,d as Re,f as ze,g as Be,h as Ve,i as G,m as He,n as Ue,p as We,r as Ge,t as Ke,v as qe}from"./providers-Cm4gsCbZ.mjs";import{t as Je}from"./capabilities-CKeFXlZQ.mjs";import{t as Ye}from"./commands-B5Z2z29h.mjs";import{_ as Xe,a as Ze,c as Qe,f as $e,h as et,i as K,m as tt,n as nt,r as rt,s as it,t as q,v as at,y as ot}from"./agents-Dqss403b.mjs";import{t as st}from"./update-planner-Cr9XVW1l.mjs";import{t as ct}from"./ensure-DUp9iPBJ.mjs";import{t as lt}from"./inspect-BfQSMM2F.mjs";import{t as ut}from"./resolve-CTaJLIdJ.mjs";import{n as dt,t as ft}from"./schema-Diew1l38.mjs";import{n as pt,r as mt}from"./errors-fT9JApTf.mjs";function J(e,t={}){let n=W(),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=G({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=W().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=G({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=Re(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 ot(at([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{se as agentCatalogEntrySchema,le as agentCatalogJsonSchema,ae as agentCatalogSchema,Ke as agentUpdateProviders,y as autohand,Ee as canAutoUpdateSelf,ze as canLookupLatestVersionForInstallType,Ue as canResolveAgentUpdate,We as canUninstallInstallType,He as canUpdateInstallType,Je as capabilitiesCommand,f as claude,T as codebuddy,O as codewhale,m as codex,Ye as commandsCommand,S as copilot,Ne as createErrorResult,pe as createReleaseManifest,je as createSuccessResult,J as createUpdatePlan,A as cursor,h as deepcode,Te as detectSelfInstallSource,g as devin,E as droid,De as emitCommandResult,ct as ensureCommand,yt as execCommand,_e as formatChecksums,C as gemini,v as genie,k as getAgentByLookupName,w as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,D as getAllAgents,be as getBinaryPath,U as getBinaryReleaseAssetName,fe as getBinaryReleaseDownloadUrl,b as getCatalogAgent,oe as getCatalogAgents,I as getCliContext,a as getConfigDir,n as getConfigFilePath,pt as getExitCodeForError,mt as getExitCodeForResult,Ve as getInstallLifecycle,Ie as getInstalledAgentState,xe as getInstalledVersion,Be as getInstallerCapabilities,ge as getLatestVersion,Xe as getManagedInstaller,e as getManualAgentUpdateMessage,Ce as getManualSelfUpgradeCommand,it as getOrderedInstallMethods,ee as getPlatform,ft as getSchemaCatalog,B as getSelfState,Ae as getSelfUpgradeRecoveryHint,Pe as getSelfUpgradeRecoveryHintForInspection,Se as getSelfVersion,Z as getSingleAgentUpdateStatus,Fe as getStateFilePath,_ as grok,d as hermes,K as inspectAgent,Ze as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Me as inspectSelf,Qe as installAgent,c as isBinaryInPath,s as isBunAvailable,l as isDenoAvailable,Y as isInspectionUpdateAvailable,qe as isManagedInstallType,o as isNpmAvailable,j as jcode,P as junie,p as kilo,r as loadConfig,H as loadState,N as mimo,Le as normalizeRepositoryUrl,ue as omp,ne as openclaw,M as opencode,u as openhands,z as parseBinaryTarget,ye as parseChecksums,ie as pi,ht as planAgentUpdates,re as qoder,ce as reasonix,V as removeInstalledAgentState,F as resetCliContext,nt as resolveAgent,rt as resolveAgentInspection,G as resolveAgentUpdateProvider,L as resolveCliContext,ut as resolveCommand,de as resolveReleaseChannel,i as saveConfig,ke as saveState,dt as schemaCommand,R as setCliContext,Oe as setInstalledAgentState,me as setSelfInstallSource,he as setSelfUpdateNoticeState,$e as uninstallAgent,tt as updateAgent,et as updateAgentsByType,we as upgradeSelf,ve as validateReleaseManifest,x as vibe,te as vtcode};
1
+ import{n as e,r as t}from"./messages-D6r2o7w-.mjs";import{c as n,d as r,f as i,s as a}from"./file-store-XNyirRRY.mjs";import{c as o,i as s,n as c,o as l,t as ee}from"./detect-BUVMt8jZ.mjs";import{A as te,C as ne,D as re,E as ie,F as ae,I as oe,L as se,M as ce,O as le,S as ue,T as u,_ as d,a as f,b as p,c as m,d as h,f as g,g as _,h as v,i as y,j as b,k as x,l as S,m as C,n as w,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P}from"./agents-CbaEEQf0.mjs";import{a as F,n as I,o as L,s as R}from"./cli-context-DI43ouBg.mjs";import{B as z,C as B,D as V,E as H,F as U,H as de,I as fe,L as pe,N as me,P as he,Q as ge,R as _e,U as ve,V as ye,X as be,Z as xe,_ as Se,a as Ce,c as we,g as Te,h as Ee,i as De,j 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-BFYw3cWv.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-Bwo6FFIw.mjs";import{t as Je}from"./capabilities-CptqKRVw.mjs";import{t as Ye}from"./commands-DoVb6smF.mjs";import{_ as Xe,a as Ze,c as Qe,f as $e,h as et,i as K,m as tt,n as nt,r as rt,s as it,t as q,v as at,y as ot}from"./agents-_Jz2GL-G.mjs";import{t as st}from"./update-planner-Cr9XVW1l.mjs";import{t as ct}from"./ensure-C4-qPt-b.mjs";import{t as lt}from"./inspect-pHkywlVy.mjs";import{t as ut}from"./resolve-CtzhgrFl.mjs";import{n as dt,t as ft}from"./schema-Cxk5MX_Z.mjs";import{n as pt,r as mt}from"./errors-fT9JApTf.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 ot(at([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{ae as agentCatalogEntrySchema,oe as agentCatalogJsonSchema,se as agentCatalogSchema,Ke as agentUpdateProviders,m as autohand,Ee as canAutoUpdateSelf,We as canLookupLatestVersionForInstallType,Ue as canResolveAgentUpdate,He as canUninstallInstallType,Ve as canUpdateInstallType,Je as capabilitiesCommand,S as claude,A as codebuddy,h as codewhale,g as codex,Ye as commandsCommand,E as copilot,Ne as createErrorResult,pe as createReleaseManifest,je as createSuccessResult,J as createUpdatePlan,C as cursor,y as deepcode,Te as detectSelfInstallSource,v as devin,_ as droid,De as emitCommandResult,ct as ensureCommand,yt as execCommand,_e as formatChecksums,d as gemini,f as genie,k as getAgentByLookupName,w as getAgentByNameOrAlias,e as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,D as getAllAgents,be as getBinaryPath,U as getBinaryReleaseAssetName,fe as getBinaryReleaseDownloadUrl,b as getCatalogAgent,ce as getCatalogAgents,I as getCliContext,a as getConfigDir,n as getConfigFilePath,pt as getExitCodeForError,mt as getExitCodeForResult,Be as getInstallLifecycle,Ie as getInstalledAgentState,xe as getInstalledVersion,Re as getInstallerCapabilities,ge as getLatestVersion,Xe as getManagedInstaller,t as getManualAgentUpdateMessage,Ce as getManualSelfUpgradeCommand,it as getOrderedInstallMethods,ee as getPlatform,ft as getSchemaCatalog,B as getSelfState,Ae as getSelfUpgradeRecoveryHint,Pe as getSelfUpgradeRecoveryHintForInspection,Se as getSelfVersion,Z as getSingleAgentUpdateStatus,Fe as getStateFilePath,j as grok,P as hermes,K as inspectAgent,Ze as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Me as inspectSelf,Qe as installAgent,c as isBinaryInPath,s as isBunAvailable,l as isDenoAvailable,Y as isInspectionUpdateAvailable,qe as isManagedInstallType,o as isNpmAvailable,T as jcode,p as junie,N as kilo,r as loadConfig,H as loadState,ue as mimo,Le as normalizeRepositoryUrl,ne as omp,M as openclaw,u as opencode,ie as openhands,z as parseBinaryTarget,ye as parseChecksums,re as pi,ht as planAgentUpdates,le as qoder,x as reasonix,V as removeInstalledAgentState,F as resetCliContext,nt as resolveAgent,rt as resolveAgentInspection,W as resolveAgentUpdateProvider,L as resolveCliContext,ut as resolveCommand,de as resolveReleaseChannel,i as saveConfig,ke as saveState,dt as schemaCommand,R as setCliContext,Oe as setInstalledAgentState,me as setSelfInstallSource,he as setSelfUpdateNoticeState,$e as uninstallAgent,tt as updateAgent,et as updateAgentsByType,we as upgradeSelf,ve as validateReleaseManifest,te as vibe,O as vtcode};
@@ -1,3 +1,3 @@
1
- import{i as e,n as t,t as n}from"./output-pOJ9U7C5.mjs";import{a as r,o as i}from"./providers-Cm4gsCbZ.mjs";import{n as a,r as o,t as s}from"./human-BL2-F6cA.mjs";import{t as c}from"./color-iQl4CJwm.mjs";import{n as l,r as u}from"./core-read-observations-CwugnFtn.mjs";async function d(a){let o=await l(a);if(!o)return e(n({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),f);let{agent:s}=o,c=u(o),d=s.selfUpdate?[s.selfUpdate.command,...s.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return e(t({action:`info`,data:{agent:{aliases:s.lookupAliases??[],binaryName:s.binaryName,displayName:s.displayName,installMethods:c.methods.map(e=>({command:r(s,e),label:i(e),type:e.type})),name:s.name,packageName:s.packages?.npm,selfUpdateCommands:d},inspection:{binaryPath:c.binaryPath,installed:c.inPath,installedVersion:c.installedVersion,latestVersion:c.latestVersion,lifecycle:c.lifecycle,sourceLabel:c.inPath?c.sourceLabel:void 0}},target:{kind:`agent`,name:s.name}}),f)}function f(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:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},{label:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.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 a(n,{labelStyle:c.bold,width:t}))console.log(e);if(console.log(c.bold(`
1
+ import{i as e,n as t,t as n}from"./output-BFYw3cWv.mjs";import{a as r,o as i}from"./providers-Bwo6FFIw.mjs";import{n as a,r as o,t as s}from"./human-BL2-F6cA.mjs";import{t as c}from"./color-iQl4CJwm.mjs";import{n as l,r as u}from"./core-read-observations-BNCduEh8.mjs";async function d(a){let o=await l(a);if(!o)return e(n({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),f);let{agent:s}=o,c=u(o),d=s.selfUpdate?[s.selfUpdate.command,...s.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return e(t({action:`info`,data:{agent:{aliases:s.lookupAliases??[],binaryName:s.binaryName,displayName:s.displayName,installMethods:c.methods.map(e=>({command:r(s,e),label:i(e),type:e.type})),name:s.name,packageName:s.packages?.npm,selfUpdateCommands:d},inspection:{binaryPath:c.binaryPath,installed:c.inPath,installedVersion:c.installedVersion,latestVersion:c.latestVersion,lifecycle:c.lifecycle,sourceLabel:c.inPath?c.sourceLabel:void 0}},target:{kind:`agent`,name:s.name}}),f)}function f(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:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},{label:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.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 a(n,{labelStyle:c.bold,width:t}))console.log(e);if(console.log(c.bold(`
2
2
  Install Methods
3
3
  `)),e.data.agent.installMethods.length===0)console.log(c.dim(` No managed install methods`));else for(let n of o(e.data.agent.installMethods,[{header:`Method`,maxWidth:24,minWidth:8,value:e=>c.green(e.label)},{header:`Command`,minWidth:16,value:e=>e.command,wrap:!0}],{headerStyle:c.bold,width:t}))console.log(n);console.log()}export{d as infoCommand};
@@ -0,0 +1,5 @@
1
+ import{t as e}from"./messages-D6r2o7w-.mjs";import{i as t,n,t as r}from"./output-BFYw3cWv.mjs";import{a as i,f as a,o}from"./providers-Bwo6FFIw.mjs";import{n as s,r as c,t as l}from"./human-BL2-F6cA.mjs";import{t as u}from"./color-iQl4CJwm.mjs";import{a as d}from"./user-output-DLbKXqDm.mjs";import{n as f,r as p}from"./core-read-observations-BNCduEh8.mjs";async function m(e){let a=await f(e);if(!a)return t(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),g);let{agent:s}=a,c=p(a),l=s.selfUpdate?[s.selfUpdate.command,...s.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return t(n({action:`inspect`,data:{agent:{aliases:s.lookupAliases??[],binaryName:s.binaryName,displayName:s.displayName,installMethods:c.methods.map(e=>({command:i(s,e),label:o(e),type:e.type})),name:s.name,packageName:s.packages?.npm,selfUpdateCommands:l},capabilities:{canAutoInstall:c.methods.length>0,canAutoUninstall:c.inPath&&c.lifecycle===`managed`,canRun:c.inPath,canSelfUpdate:l.length>0},inspection:{binaryPath:c.binaryPath,installed:c.inPath,installedVersion:c.installedVersion,latestVersion:c.latestVersion,lifecycle:c.lifecycle,sourceLabel:c.inPath?c.sourceLabel:void 0,updateLabel:c.updateLabel}},target:{kind:`agent`,name:s.name},warnings:h(s,c.installedState)}),g)}function h(t,n){let r=a(t,n);return r?[e(t,r)]:[]}function g(e){if(e.error){console.log(u.red(e.error.message));return}if(!e.data)return;let t=l();console.log(u.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?u.green(`yes`):u.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 s(n,{labelStyle:u.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(u.bold(`
2
+ Capabilities
3
+ `));for(let e of c(r,[{header:`Capability`,minWidth:8,value:e=>e.capability},{header:`Available`,value:e=>e.value?u.green(`yes`):u.dim(`no`)}],{headerStyle:u.bold,width:t}))console.log(e);if(console.log(u.bold(`
4
+ Install Methods
5
+ `)),e.data.agent.installMethods.length===0)console.log(u.dim(` No managed install methods`));else for(let n of c(e.data.agent.installMethods,[{header:`Method`,maxWidth:24,minWidth:8,value:e=>u.green(e.label)},{header:`Command`,minWidth:16,value:e=>e.command,wrap:!0}],{headerStyle:u.bold,width:t}))console.log(n);console.log();for(let t of e.warnings)d(u.yellow(t.message))}export{m as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./inspect-pHkywlVy.mjs";export{e as inspectCommand};
@@ -1 +1 @@
1
- import{a as e}from"./file-store-XNyirRRY.mjs";import{n as t}from"./cli-context-DI43ouBg.mjs";import{i as n,n as r,r as i,t as a}from"./output-pOJ9U7C5.mjs";import{l as o}from"./providers-Cm4gsCbZ.mjs";import{t as s}from"./color-iQl4CJwm.mjs";import{g as c,n as l}from"./agents-Dqss403b.mjs";import{t as u}from"./agent-installation-BIf8WGed.mjs";import{n as d}from"./lifecycle-observations-v4Yw4tS3.mjs";import{t as f}from"./lifecycle-errors-BtlAp_sz.mjs";import{a as p,i as m,n as h,r as g}from"./user-output-DLbKXqDm.mjs";import{i as _,n as v,r as y,t as b}from"./installation-failure-diagnostics-BJnxrzTa.mjs";import{n as x,r as S}from"./installation-routing-n62Du1fV.mjs";import{t as C}from"./unmanaged-install-compatibility-MC_rGtQA.mjs";import{o as w}from"./lifecycle-policy-BZ0wnnRm.mjs";async function T(e){return await E(e,S(`install`))}async function E(e,t){x(`install`,t);let n=t.engine===`core`?(await import(`./core-installation-cli-D0T3R90X.mjs`)).createCoreInstallationCliSession(`install`):void 0;try{return await D(e,n)}finally{n?.dispose()}}async function D(e,o){let s=w(Array.isArray(e)?e:[e]);if(s.length<=1)return n(await O(s[0],{emitStartedEvent:!0},o),z);i({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let e of s){if(t().cancelled)break;let n=F(e,await O(e,{},o));if(c.push(n),i({action:`install`,data:n,target:{kind:`agent`,name:n.agent.name},type:`progress`}),t().cancelled)break}let l={results:c,scope:`batch`,summary:L(c)};return t().cancelled&&c.length<s.length?n(a({action:`install`,data:l,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),B):n(c.some(e=>!e.ok)?a({action:`install`,data:l,error:R(c),target:{kind:`agent`}}):r({action:`install`,data:l,target:{kind:`agent`}}),B)}async function O(n,r={},i){if(i){let e=await C(n);return e?N(e):await i.execute(n,r)}if(t().cancelled||!l(n)||h())return k(n,r);try{return await c(()=>k(n,r))}catch(t){if(e(t))return a({action:`install`,...f(t,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}});throw t}}async function k(n,r){if(t().cancelled)return a({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:n}});let i=await d(n);if(!i)return a({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:n},message:`Unknown agent: ${n}`},target:{kind:`agent`,name:n}});let{agent:s}=i,c=i.pathExecutable.present,l=i.installedState,p=c&&!l?o(i.methods,i.resolvedBinaryPath??i.pathExecutable.path):void 0;if(c&&!l&&!p)return N(s);let m=l&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?j(s):M(s,m===`adopt`,!!l);m!==`satisfied`&&P(s,r.emitStartedEvent);try{return A(s,m,await u({adoptableMethod:p,agent:s,observation:{inPath:c,installedState:l,lifecycle:i.observation,methods:i.methods},operation:`install`,route:m}))}catch(t){if(e(t))return a({action:`install`,data:{agent:{displayName:s.displayName,name:s.name},changed:!1,installed:c},...f(t,{kind:`agent`,name:s.name})});throw t}}function A(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return j(e);let i=n.value.value.installedState;return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:{installType:i.installType,packageName:i.packageName},installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let i=`reason`in n&&n.reason?{reason:n.reason}:{},o=`reason`in n&&!!n.reason?.endsWith(`-after-install`),s=n.kind===`cancelled`?{code:`CANCELLED`,message:`Install was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:y(i,`state-write-failed`),message:`Failed to record verified state for ${e.displayName}.`}:o&&(n.kind===`failed`||n.kind===`indeterminate`)?{code:`INSTALL_FAILED`,details:y(i,`verification-failed`),message:`${e.displayName} could not be verified after installation.`}:n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:y(i,`decision-indeterminate`),message:v(`Quantex could not determine the installed state of ${e.displayName}.`,i.reason)}:{code:`INSTALL_FAILED`,details:y(i,_(i.reason)?b:void 0),message:v(`Failed to install ${e.displayName}.`,i.reason)};return a({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:s,target:{kind:`agent`,name:e.name}})}function j(e){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function M(e,t,n){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function N(e){return r({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 P(e,t=!1){t&&i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function F(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:I(t),warnings:r}}function I(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 L(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 R(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 z(e){if(e.error){g(s.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){m(s.green(t.message));continue}if(t.code===`DRY_RUN`){p(s.cyan(t.message));continue}p(s.yellow(t.message))}return}m(s.cyan(`Installing ${e.data.agent.displayName}...`)),m(s.green(`${e.data.agent.displayName} installed successfully!`))}}function B(e){if(!e.data){e.error&&g(s.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:m(s.cyan(`Installing ${t.agent.displayName}...`)),m(s.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:m(s.green(V(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(s.yellow(V(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(s.cyan(V(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:p(s.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:g(s.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}H(e.data.summary)}function V(e,t){return e[0]?.message??t}function H(e){let t=[e.installed?`installed ${e.installed}`:void 0,e.alreadyInstalled?`already installed ${e.alreadyInstalled}`:void 0,e.trackedExistingInstall?`tracked existing ${e.trackedExistingInstall}`:void 0,e.untrackedExistingInstall?`untracked existing ${e.untrackedExistingInstall}`:void 0,e.failed?`failed ${e.failed}`:void 0,e.locked?`locked ${e.locked}`:void 0,e.planned?`planned ${e.planned}`:void 0].filter(Boolean);t.length>0&&m(s.bold(`Summary: ${t.join(`, `)}`))}export{T as installCommand,E as installCommandWithRoute};
1
+ import{a as e}from"./file-store-XNyirRRY.mjs";import{n as t}from"./cli-context-DI43ouBg.mjs";import{i as n,n as r,r as i,t as a}from"./output-BFYw3cWv.mjs";import{l as o}from"./providers-Bwo6FFIw.mjs";import{t as s}from"./color-iQl4CJwm.mjs";import{g as c,n as l}from"./agents-_Jz2GL-G.mjs";import{t as u}from"./agent-installation-fKY9rZiy.mjs";import{n as d}from"./lifecycle-observations-D5ssgFhb.mjs";import{t as f}from"./lifecycle-errors-BtlAp_sz.mjs";import{a as p,i as m,n as h,r as g}from"./user-output-DLbKXqDm.mjs";import{i as _,n as v,r as y,t as b}from"./installation-failure-diagnostics-BJnxrzTa.mjs";import{n as x,r as S}from"./installation-routing-n62Du1fV.mjs";import{t as C}from"./unmanaged-install-compatibility-DYqGYSXK.mjs";import{o as w}from"./lifecycle-policy-BlDPpwko.mjs";async function T(e){return await E(e,S(`install`))}async function E(e,t){x(`install`,t);let n=t.engine===`core`?(await import(`./core-installation-cli-BtjoY01X.mjs`)).createCoreInstallationCliSession(`install`):void 0;try{return await D(e,n)}finally{n?.dispose()}}async function D(e,o){let s=w(Array.isArray(e)?e:[e]);if(s.length<=1)return n(await O(s[0],{emitStartedEvent:!0},o),z);i({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let e of s){if(t().cancelled)break;let n=F(e,await O(e,{},o));if(c.push(n),i({action:`install`,data:n,target:{kind:`agent`,name:n.agent.name},type:`progress`}),t().cancelled)break}let l={results:c,scope:`batch`,summary:L(c)};return t().cancelled&&c.length<s.length?n(a({action:`install`,data:l,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),B):n(c.some(e=>!e.ok)?a({action:`install`,data:l,error:R(c),target:{kind:`agent`}}):r({action:`install`,data:l,target:{kind:`agent`}}),B)}async function O(n,r={},i){if(i){let e=await C(n);return e?N(e):await i.execute(n,r)}if(t().cancelled||!l(n)||h())return k(n,r);try{return await c(()=>k(n,r))}catch(t){if(e(t))return a({action:`install`,...f(t,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}});throw t}}async function k(n,r){if(t().cancelled)return a({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:n}});let i=await d(n);if(!i)return a({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:n},message:`Unknown agent: ${n}`},target:{kind:`agent`,name:n}});let{agent:s}=i,c=i.pathExecutable.present,l=i.installedState,p=c&&!l?o(i.methods,i.resolvedBinaryPath??i.pathExecutable.path):void 0;if(c&&!l&&!p)return N(s);let m=l&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?j(s):M(s,m===`adopt`,!!l);m!==`satisfied`&&P(s,r.emitStartedEvent);try{return A(s,m,await u({adoptableMethod:p,agent:s,observation:{inPath:c,installedState:l,lifecycle:i.observation,methods:i.methods},operation:`install`,route:m}))}catch(t){if(e(t))return a({action:`install`,data:{agent:{displayName:s.displayName,name:s.name},changed:!1,installed:c},...f(t,{kind:`agent`,name:s.name})});throw t}}function A(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return j(e);let i=n.value.value.installedState;return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:{installType:i.installType,packageName:i.packageName},installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let i=`reason`in n&&n.reason?{reason:n.reason}:{},o=`reason`in n&&!!n.reason?.endsWith(`-after-install`),s=n.kind===`cancelled`?{code:`CANCELLED`,message:`Install was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:y(i,`state-write-failed`),message:`Failed to record verified state for ${e.displayName}.`}:o&&(n.kind===`failed`||n.kind===`indeterminate`)?{code:`INSTALL_FAILED`,details:y(i,`verification-failed`),message:`${e.displayName} could not be verified after installation.`}:n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:y(i,`decision-indeterminate`),message:v(`Quantex could not determine the installed state of ${e.displayName}.`,i.reason)}:{code:`INSTALL_FAILED`,details:y(i,_(i.reason)?b:void 0),message:v(`Failed to install ${e.displayName}.`,i.reason)};return a({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:s,target:{kind:`agent`,name:e.name}})}function j(e){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function M(e,t,n){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function N(e){return r({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 P(e,t=!1){t&&i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function F(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:I(t),warnings:r}}function I(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 L(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 R(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 z(e){if(e.error){g(s.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){m(s.green(t.message));continue}if(t.code===`DRY_RUN`){p(s.cyan(t.message));continue}p(s.yellow(t.message))}return}m(s.cyan(`Installing ${e.data.agent.displayName}...`)),m(s.green(`${e.data.agent.displayName} installed successfully!`))}}function B(e){if(!e.data){e.error&&g(s.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:m(s.cyan(`Installing ${t.agent.displayName}...`)),m(s.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:m(s.green(V(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(s.yellow(V(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(s.cyan(V(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:p(s.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:g(s.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}H(e.data.summary)}function V(e,t){return e[0]?.message??t}function H(e){let t=[e.installed?`installed ${e.installed}`:void 0,e.alreadyInstalled?`already installed ${e.alreadyInstalled}`:void 0,e.trackedExistingInstall?`tracked existing ${e.trackedExistingInstall}`:void 0,e.untrackedExistingInstall?`untracked existing ${e.untrackedExistingInstall}`:void 0,e.failed?`failed ${e.failed}`:void 0,e.locked?`locked ${e.locked}`:void 0,e.planned?`planned ${e.planned}`:void 0].filter(Boolean);t.length>0&&m(s.bold(`Summary: ${t.join(`, `)}`))}export{T as installCommand,E as installCommandWithRoute};
@@ -1 +1 @@
1
- import{t as e}from"./invocation-DXH0mQUH.mjs";import{n as t}from"./production-observation-BxoPjRie.mjs";function n(n={}){let a=t(n.configDir),o=n.loadPorts??r,s,c=()=>(s??=o(a),s);return Object.freeze({execute(t){return e({signal:t.signal},async e=>{let[n,r]=await Promise.all([import(`./installation-executor-BHtW4ZTn.mjs`),c()]);return await n.executeCoreInstallation({mode:t.mode,name:t.name,operation:t.operation},e,i(r,t.outputPolicy,t.providerTimeoutMs),{...t.onMutationStart?{onMutationStart:t.onMutationStart}:{},...t.resolveAdoption?{resolveAdoption:t.resolveAdoption}:{}})})}})}async function r(e){return await(await import(`./installation-production-DMs7Bidg.mjs`)).loadProductionCoreInstallationPorts(e)}function i(e,t,n){let r=e=>({...e,outputPolicy:t,...n===void 0?{}:{timeoutMs:n}}),i=e=>({...e,outputPolicy:t});return{...e,compensate:(t,n)=>e.compensate(t,i(n)),install:(t,n)=>e.install(t,r(n)),observe:(t,r,i)=>e.observe(t,n===void 0?r:{...r,timeoutMs:n},i),resolveRecipe:t=>e.resolveRecipe({...t,context:r(t.context)}),verify:(t,n)=>e.verify(t,r(n))}}export{n as createCoreInstallationCompatibilityExecutor};
1
+ import{t as e}from"./invocation-DXH0mQUH.mjs";import{n as t}from"./production-observation-BOalSjcd.mjs";function n(n={}){let a=t(n.configDir),o=n.loadPorts??r,s,c=()=>(s??=o(a),s);return Object.freeze({execute(t){return e({signal:t.signal},async e=>{let[n,r]=await Promise.all([import(`./installation-executor-BHtW4ZTn.mjs`),c()]);return await n.executeCoreInstallation({mode:t.mode,name:t.name,operation:t.operation},e,i(r,t.outputPolicy,t.providerTimeoutMs),{...t.onMutationStart?{onMutationStart:t.onMutationStart}:{},...t.resolveAdoption?{resolveAdoption:t.resolveAdoption}:{}})})}})}async function r(e){return await(await import(`./installation-production-BBJukMkB.mjs`)).loadProductionCoreInstallationPorts(e)}function i(e,t,n){let r=e=>({...e,outputPolicy:t,...n===void 0?{}:{timeoutMs:n}}),i=e=>({...e,outputPolicy:t});return{...e,compensate:(t,n)=>e.compensate(t,i(n)),install:(t,n)=>e.install(t,r(n)),observe:(t,r,i)=>e.observe(t,n===void 0?r:{...r,timeoutMs:n},i),resolveRecipe:t=>e.resolveRecipe({...t,context:r(t.context)}),verify:(t,n)=>e.verify(t,r(n))}}export{n as createCoreInstallationCompatibilityExecutor};
@@ -1 +1 @@
1
- import{i as e,t}from"./file-store-XNyirRRY.mjs";import{t as n}from"./detect-BUVMt8jZ.mjs";import{i as r}from"./schema-BBnWVY6R.mjs";import{a as i,o as a,r as o}from"./provider-binding-BmBPz4YE.mjs";import{t as s}from"./production-observation-BxoPjRie.mjs";import{isDeepStrictEqual as c}from"node:util";async function l(){let{coreMutationRecipeCatalog:e}=await import(`./mutation-recipe-catalog-DP_XMSYe.mjs`);return e}async function u(e){if(e.context.signal.aborted)return D(e.context.signal);let t=e.catalog.filter(t=>t.name===e.observed.agent.name);if(t.length!==1)return O(t.length===0?`No mutation recipes are registered for ${e.observed.agent.name}.`:`Multiple mutation recipe entries are registered for ${e.observed.agent.name}.`,!1);let n=t[0].platforms[e.platform]??[];if(n.length===0)return O(`${e.observed.agent.displayName} has no ${e.operation} recipe for ${e.platform}.`,!1);let r;try{r=n.map(t=>g(e.observed,t))}catch(e){return O(j(e,`Mutation recipe projection failed.`),!1)}if(e.directive.decision===`reinstall`)return d(e,r);let i=f(e.observed,r);return i.kind===`blocked`?i:p(e,i.candidates)}async function d(e,t){let n=e.observed.installedState;if(!n)return O(`Stale installation evidence has no schema-v2 installed-agent source.`,!1);let r=a(e.observed.agent,n);if(!r)return O(`The recorded installed-agent source cannot be resolved.`,!1);let o=e.directive.decision===`reinstall`?e.directive.requiredBinding:void 0;if(!o)return O(`The stale decision has no exact required provider source.`,!1);if(!x(r,o,e.observed.agent.binaryName,w(o)))return O(`The stale decision no longer matches the installed-agent source.`,!1);if(e.observed.persistedBinding&&!x(r,e.observed.persistedBinding,e.observed.agent.binaryName,w(e.observed.persistedBinding)))return O(`Persisted provider evidence conflicts with the installed-agent source.`,!1);if(e.observed.receipt){let t=i(e.observed.receipt);if(!t||!x(r,t,e.observed.agent.binaryName,!1))return O(`The lifecycle receipt conflicts with the installed-agent source.`,!1)}let s=t.filter(t=>x(t.recipe.binding,r,e.observed.agent.binaryName,!0));return s.length===1?m(e,s[0],!1):O(s.length===0?`The exact recorded source is no longer present in the mutation catalog.`:`The mutation catalog contains multiple recipes for the exact recorded source.`,!1)}function f(e,t){let n=new Set(t.map((e,t)=>t)),r=[];for(let i of e.methods){let a=o(e.agent,i);if(!a)return O(`An ordered install method cannot be resolved to a provider recipe.`,!1);let s=[...n].find(n=>x(t[n].recipe.binding,a,e.agent.binaryName,!0));if(s===void 0)return O(`The ordered install methods and generated mutation recipes do not match.`,!1);r.push(t[s]),n.delete(s)}return n.size>0?O(`The generated mutation recipes contain candidates absent from the ordered install methods.`,!1):{candidates:r,kind:`ready`}}async function p(e,t){let n=[],r=!1;for(let i of t){let t=await m(e,i,!0);if(t.kind===`ready`||t.kind===`interrupted`||!t.reason.startsWith(`provider-unavailable:`))return t;n.push(t.reason.slice(21)),r||=t.retryable}return O(n.length>0?`No installation provider is currently available: ${n.join(`; `)}`:`No usable ${e.operation} recipe is available.`,r)}async function m(e,t,n){let r=e.providerRegistry.get(t.recipe.binding.providerId);if(!r)return O(`Provider ${t.recipe.binding.providerId} is not registered.`,!1);if(!r.install||!r.verify)return O(`Provider ${r.id} does not implement both install and verify.`,!1);let i=await h(()=>r.availability(e.context),r,`availability`,e.context);if(i.kind===`interrupted`)return E(i.outcome);if(i.kind===`threw`)return O(i.reason,!1);if(i.outcome.kind===`cancelled`||i.outcome.kind===`timed-out`)return E(i.outcome);if(i.outcome.kind===`unavailable`){let e=`${r.id}: ${i.outcome.reason}`;return O(n?`provider-unavailable:${e}`:`The exact recorded provider is unavailable: ${e}`,i.outcome.retryable??!0)}if(i.outcome.kind!==`success`)return O(k(r,`availability`,i.outcome),A(i.outcome));if(e.context.signal.aborted)return D(e.context.signal);let a=await h(()=>r.observe({context:e.context,target:t.recipe.binding.target}),r,`observation`,e.context);return a.kind===`interrupted`?E(a.outcome):a.kind===`threw`?O(a.reason,!1):a.outcome.kind===`cancelled`||a.outcome.kind===`timed-out`?E(a.outcome):a.outcome.kind===`success`?!S(a.outcome.value.target,t.recipe.binding.target)||!C(a.outcome.value.target.arguments,t.recipe.binding.target.arguments)?O(`Provider ${r.id} returned evidence for a different target.`,!1):a.outcome.value.kind===`present`?O(`Provider ${r.id} reports the selected target became present before mutation.`,!0):{kind:`ready`,recipe:t.recipe}:O(k(r,`observation`,a.outcome),A(a.outcome))}async function h(e,t,n,r){try{return{kind:`outcome`,outcome:await e()}}catch(e){let i=T(e,r);return i?{kind:`interrupted`,outcome:i}:{kind:`threw`,reason:`Provider ${t.id} ${n} rejected: ${j(e,`unexpected provider rejection`)}`}}}function g(e,t){let n=_(e,t);return{recipe:{binding:{providerId:t.provider,target:n},compensation:t.provider===`script`||t.provider===`binary`?`manual`:`provider-uninstall`,installedState:v(e,t,n),ownership:`created-on-success`}}}function _(e,t){let n=t.provider===`script`||t.provider===`binary`,r=t.target.effect;if(n&&!r)throw Error(`${t.provider} recipe is missing its execution effect.`);if(!n&&r)throw Error(`${t.provider} recipe unexpectedly contains an execution effect.`);let i=n?y(r):t.target.id,a=t.provider===`deno`||n;return{...t.target.arguments?.length?{arguments:[...t.target.arguments]}:{},...t.target.binaryName||a?{binaryName:t.target.binaryName??e.agent.binaryName}:{},...r?{effect:r.kind===`executable`?{command:[...r.command],kind:r.kind}:{command:r.command,kind:r.kind}}:{},id:i,kind:t.target.kind}}function v(e,t,n){return t.provider===`script`||t.provider===`binary`?{agentName:e.agent.name,...t.target.binaryName?{binaryName:t.target.binaryName}:{},command:n.id,installType:t.provider}:{agentName:e.agent.name,...t.target.binaryName||t.provider===`deno`?{binaryName:t.target.binaryName??e.agent.binaryName}:{},installType:t.provider,...t.target.arguments?.length?{packageInstallArgs:[...t.target.arguments]}:{},packageName:t.target.id,...t.target.kind===`cask`||t.target.kind===`id`?{packageTargetKind:t.target.kind}:{}}}function y(e){return e.kind===`shell-script`?e.command:e.command.map(b).join(` `)}function b(e){return e.includes(` `)?JSON.stringify(e):e}function x(e,t,n,r){return e.providerId===t.providerId&&S(e.target,t.target,n)&&(!r||C(e.target.arguments,t.target.arguments))}function S(e,t,n){return e.id===t.id&&e.kind===t.kind&&(e.binaryName??n)===(t.binaryName??n)}function C(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((e,t)=>e===r[t])}function w(e){return(e.target.arguments?.length??0)>0}function T(e,t){if(e&&typeof e==`object`&&`kind`in e){if(e.kind===`timed-out`){let n=`timeoutMs`in e&&typeof e.timeoutMs==`number`?e.timeoutMs:t.timeoutMs;if(n!==void 0&&Number.isInteger(n)&&n>0)return{kind:`timed-out`,timeoutMs:n}}if(e.kind===`cancelled`){let t=`reason`in e?e.reason:void 0;return{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}if(t.signal.aborted){let e=t.signal.reason;return{kind:`cancelled`,...e===void 0?{}:{reason:j(e,`cancelled`)}}}}function E(e){return{kind:`interrupted`,outcome:e}}function D(e){let t=e.reason instanceof Error?e.reason.message:e.reason;return{kind:`interrupted`,outcome:{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}function O(e,t){return{kind:`blocked`,reason:e,retryable:t}}function k(e,t,n){return`reason`in n&&n.reason?`Provider ${e.id} ${t} failed: ${n.reason}`:n.kind===`unsupported`?`Provider ${e.id} does not support ${n.operation}.`:`Provider ${e.id} ${t} returned ${n.kind}.`}function A(e){return e.kind===`failed`?e.retryable:e.kind===`unavailable`?e.retryable??!0:!1}function j(e,t){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:t}async function M(e,t,n,r){if(t.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let i=await r();try{let r=P(await e.loadDocument());return new N(e,r,P({...r,installedAgents:{...r.installedAgents,[t.agentName]:t},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}}),i)}catch(e){return await F(i,e,`Failed to release the state lock after record preparation.`)}}var N=class{applyPromise;commitPromise;rawApplyPromise;releasePromise;rollbackPromise;terminal;constructor(e,t,n,r){this.store=e,this.original=t,this.next=n,this.releaseStateLock=r}apply(){if(this.terminal===`rollback`)throw Error(`Cannot apply an installation record after rollback started.`);return this.applyPromise?this.applyPromise:(this.rawApplyPromise=Promise.resolve().then(()=>this.store.saveDocument(this.next)),this.applyPromise=this.rawApplyPromise.catch(async e=>{this.terminal=`rollback`;try{await this.startRollback()}catch(t){throw I(e,t,`State recording failed and the original document could not be restored cleanly.`)}throw e}),this.applyPromise)}commit(){return this.terminal===`rollback`?this.startRollback().then(()=>{throw Error(`Cannot commit an installation record after rollback started.`)}):this.applyPromise?this.commitPromise?this.commitPromise:(this.terminal=`commit`,this.commitPromise=this.applyPromise.then(()=>this.releaseOnce()),this.commitPromise):(this.terminal=`rollback`,this.startRollback().then(()=>{throw Error(`Cannot commit an installation record before apply completes.`)}))}rollback(){return this.terminal===`commit`?this.commitPromise??Promise.resolve():(this.terminal=`rollback`,this.startRollback())}startRollback(){return this.rollbackPromise??=this.runRollback(),this.rollbackPromise}async runRollback(){if(!this.rawApplyPromise){await this.releaseOnce();return}await this.rawApplyPromise.catch(()=>void 0);let e;try{await this.store.saveDocument(this.original)}catch(t){e=t}try{await this.releaseOnce()}catch(t){throw e===void 0?t:I(e,t,`Failed to restore the original state and release its lock.`)}if(e!==void 0)throw e}releaseOnce(){return this.releasePromise??=Promise.resolve().then(()=>this.releaseStateLock()),this.releasePromise}};function P(e){let t=r(e);if(t.source!==`current`)throw Error(`Core mutations require the current state schema.`);return t.document}async function F(e,t,n){try{await e()}catch(e){throw I(t,e,n)}throw t}function I(e,t,n){return AggregateError([e,t],n,{cause:e})}async function L(e){let[t,n]=await Promise.all([l(),import(`./installation-provider-registry-Ca45gNu5.mjs`)]);return R({configDir:e,providerRegistry:n.createCoreInstallationProviderRegistry(),recipeCatalog:t})}function R(r){let i=r.acquireResourceLock??e,a=r.clock??(()=>new Date().toISOString()),o=r.platform??n(),c=r.providerRegistry,l=r.readPorts??s({providerRegistry:c}),d=r.stateStore??t(r.configDir);return{compensate:(e,t)=>V(c,e,t),install:(e,t)=>z(c,e,`install`,t),observe:(e,t,n)=>l.inspectAgent(e,{...t,configDir:r.configDir},n),prepareRecord:({before:e,context:t,recipe:n,verified:o})=>H({acquireLock:i,before:e,clock:a,configDir:r.configDir,context:t,recipe:n,stateStore:d,verified:o}),resolveRecipe:e=>u({...e,catalog:r.recipeCatalog,platform:o,providerRegistry:c}),verify:(e,t)=>B(c,e,t),withMutationLock:(e,t,n)=>K(i,r.configDir,{resource:`agent lifecycle`,scope:[`agent-lifecycle`]},t,n)}}async function z(e,t,n,r){let i=e.get(t.binding.providerId),a=i?.[n];return!i||!a?J(n,t):await q(()=>a({context:r,target:t.binding.target}),r,n)}async function B(e,t,n){let r=e.get(t.binding.providerId);return r?.verify?await q(()=>r.verify({context:n,target:t.binding.target}),n,`verify`):J(`verify`,t)}async function V(e,t,n){if(t.compensation===`manual`)return J(`uninstall`,t);let r=e.get(t.binding.providerId);if(!r?.uninstall)return J(`uninstall`,t);let i=await q(()=>r.uninstall({context:n,target:t.binding.target}),n,`uninstall`);if(i.kind!==`success`)return i;let a=await q(()=>r.observe({context:n,target:t.binding.target}),n,`observe`);return a.kind===`success`&&a.value.kind===`absent`&&X(a.value.target,t.binding.target)?i:{kind:`failed`,reason:Q(a,`Compensation did not verify the selected target as absent.`),remediation:`Inspect and remove the selected provider target manually before retrying.`,retryable:!1}}async function H(e){let t=U(e.recipe,e.verified,e.clock),n,r;return r=await M(e.stateStore,e.recipe.installedState,t,async()=>{n=await G(e.acquireLock,e.configDir,{resource:`state`,scope:[`state`]},e.context);try{return W(await e.stateStore.loadDocument(),e.before),n.release}catch(e){throw await n.release(),e}}),n?.transferCleanup(()=>r.rollback()),r}function U(e,t,n){let r=t.observation,i=t.resolvedBinaryPath??(r.kind===`present`?r.executablePath:t.executable.path),a=r.kind===`present`?r.version:t.executable.version;return{...e.binding.target.binaryName?{executableName:e.binding.target.binaryName}:{},...i?{executablePath:i}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.installedState.agentName,verifiedAt:r.observedAt??n(),...a?{version:a}:{}}}function W(e,t){let n=t.agent.name;if(!c(e.installedAgents[n],t.installedState)||!c(e.lifecycleReceipts[n],t.receipt))throw Error(`Recorded agent evidence changed while the lifecycle mutation was in progress.`)}async function G(e,t,n,r){let i=await e(t,n),a,o=()=>s(),s=()=>(a??=Promise.resolve().then(()=>i()),a),c=r.registerCleanup({cleanup:()=>o(),force:()=>o()});return{release:async()=>{c(),await s()},transferCleanup(e){o=e}}}async function K(e,t,n,r,i){let a=await G(e,t,n,r),o,s=new Promise(e=>{o=e});a.transferCleanup(async()=>{await s,await a.release()});try{return await i()}finally{o(),await a.release()}}async function q(e,t,n){try{return await e()}catch(e){return t.signal.aborted?{kind:`cancelled`,...t.signal.reason===void 0?{}:{reason:$(t.signal.reason)}}:Y(e)||{kind:`failed`,reason:`${n} provider rejected: ${$(e)}`,retryable:!1}}}function J(e,t){return{kind:`unsupported`,operation:e,reason:`Provider ${t.binding.providerId} does not support ${e}.`}}function Y(e){if(!(!e||typeof e!=`object`||!(`kind`in e))){if(e.kind===`cancelled`)return{kind:`cancelled`,...`reason`in e&&e.reason!==void 0?{reason:$(e.reason)}:{}};if(e.kind===`timed-out`&&`timeoutMs`in e&&typeof e.timeoutMs==`number`)return{kind:`timed-out`,timeoutMs:e.timeoutMs}}}function X(e,t){return e.id===t.id&&e.kind===t.kind&&e.binaryName===t.binaryName&&Z(e.arguments,t.arguments)}function Z(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}function Q(e,t){return e.kind!==`success`&&`reason`in e&&e.reason?e.reason:t}function $(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core provider operation failed.`}export{L as loadProductionCoreInstallationPorts};
1
+ import{i as e,t}from"./file-store-XNyirRRY.mjs";import{t as n}from"./detect-BUVMt8jZ.mjs";import{i as r}from"./schema-BBnWVY6R.mjs";import{a as i,o as a,r as o}from"./provider-binding-BmBPz4YE.mjs";import{t as s}from"./production-observation-BOalSjcd.mjs";import{isDeepStrictEqual as c}from"node:util";async function l(){let{coreMutationRecipeCatalog:e}=await import(`./mutation-recipe-catalog-DfkeFj0q.mjs`);return e}async function u(e){if(e.context.signal.aborted)return D(e.context.signal);let t=e.catalog.filter(t=>t.name===e.observed.agent.name);if(t.length!==1)return O(t.length===0?`No mutation recipes are registered for ${e.observed.agent.name}.`:`Multiple mutation recipe entries are registered for ${e.observed.agent.name}.`,!1);let n=t[0].platforms[e.platform]??[];if(n.length===0)return O(`${e.observed.agent.displayName} has no ${e.operation} recipe for ${e.platform}.`,!1);let r;try{r=n.map(t=>g(e.observed,t))}catch(e){return O(j(e,`Mutation recipe projection failed.`),!1)}if(e.directive.decision===`reinstall`)return d(e,r);let i=f(e.observed,r);return i.kind===`blocked`?i:p(e,i.candidates)}async function d(e,t){let n=e.observed.installedState;if(!n)return O(`Stale installation evidence has no schema-v2 installed-agent source.`,!1);let r=a(e.observed.agent,n);if(!r)return O(`The recorded installed-agent source cannot be resolved.`,!1);let o=e.directive.decision===`reinstall`?e.directive.requiredBinding:void 0;if(!o)return O(`The stale decision has no exact required provider source.`,!1);if(!x(r,o,e.observed.agent.binaryName,w(o)))return O(`The stale decision no longer matches the installed-agent source.`,!1);if(e.observed.persistedBinding&&!x(r,e.observed.persistedBinding,e.observed.agent.binaryName,w(e.observed.persistedBinding)))return O(`Persisted provider evidence conflicts with the installed-agent source.`,!1);if(e.observed.receipt){let t=i(e.observed.receipt);if(!t||!x(r,t,e.observed.agent.binaryName,!1))return O(`The lifecycle receipt conflicts with the installed-agent source.`,!1)}let s=t.filter(t=>x(t.recipe.binding,r,e.observed.agent.binaryName,!0));return s.length===1?m(e,s[0],!1):O(s.length===0?`The exact recorded source is no longer present in the mutation catalog.`:`The mutation catalog contains multiple recipes for the exact recorded source.`,!1)}function f(e,t){let n=new Set(t.map((e,t)=>t)),r=[];for(let i of e.methods){let a=o(e.agent,i);if(!a)return O(`An ordered install method cannot be resolved to a provider recipe.`,!1);let s=[...n].find(n=>x(t[n].recipe.binding,a,e.agent.binaryName,!0));if(s===void 0)return O(`The ordered install methods and generated mutation recipes do not match.`,!1);r.push(t[s]),n.delete(s)}return n.size>0?O(`The generated mutation recipes contain candidates absent from the ordered install methods.`,!1):{candidates:r,kind:`ready`}}async function p(e,t){let n=[],r=!1;for(let i of t){let t=await m(e,i,!0);if(t.kind===`ready`||t.kind===`interrupted`||!t.reason.startsWith(`provider-unavailable:`))return t;n.push(t.reason.slice(21)),r||=t.retryable}return O(n.length>0?`No installation provider is currently available: ${n.join(`; `)}`:`No usable ${e.operation} recipe is available.`,r)}async function m(e,t,n){let r=e.providerRegistry.get(t.recipe.binding.providerId);if(!r)return O(`Provider ${t.recipe.binding.providerId} is not registered.`,!1);if(!r.install||!r.verify)return O(`Provider ${r.id} does not implement both install and verify.`,!1);let i=await h(()=>r.availability(e.context),r,`availability`,e.context);if(i.kind===`interrupted`)return E(i.outcome);if(i.kind===`threw`)return O(i.reason,!1);if(i.outcome.kind===`cancelled`||i.outcome.kind===`timed-out`)return E(i.outcome);if(i.outcome.kind===`unavailable`){let e=`${r.id}: ${i.outcome.reason}`;return O(n?`provider-unavailable:${e}`:`The exact recorded provider is unavailable: ${e}`,i.outcome.retryable??!0)}if(i.outcome.kind!==`success`)return O(k(r,`availability`,i.outcome),A(i.outcome));if(e.context.signal.aborted)return D(e.context.signal);let a=await h(()=>r.observe({context:e.context,target:t.recipe.binding.target}),r,`observation`,e.context);return a.kind===`interrupted`?E(a.outcome):a.kind===`threw`?O(a.reason,!1):a.outcome.kind===`cancelled`||a.outcome.kind===`timed-out`?E(a.outcome):a.outcome.kind===`success`?!S(a.outcome.value.target,t.recipe.binding.target)||!C(a.outcome.value.target.arguments,t.recipe.binding.target.arguments)?O(`Provider ${r.id} returned evidence for a different target.`,!1):a.outcome.value.kind===`present`?O(`Provider ${r.id} reports the selected target became present before mutation.`,!0):{kind:`ready`,recipe:t.recipe}:O(k(r,`observation`,a.outcome),A(a.outcome))}async function h(e,t,n,r){try{return{kind:`outcome`,outcome:await e()}}catch(e){let i=T(e,r);return i?{kind:`interrupted`,outcome:i}:{kind:`threw`,reason:`Provider ${t.id} ${n} rejected: ${j(e,`unexpected provider rejection`)}`}}}function g(e,t){let n=_(e,t);return{recipe:{binding:{providerId:t.provider,target:n},compensation:t.provider===`script`||t.provider===`binary`?`manual`:`provider-uninstall`,installedState:v(e,t,n),ownership:`created-on-success`}}}function _(e,t){let n=t.provider===`script`||t.provider===`binary`,r=t.target.effect;if(n&&!r)throw Error(`${t.provider} recipe is missing its execution effect.`);if(!n&&r)throw Error(`${t.provider} recipe unexpectedly contains an execution effect.`);let i=n?y(r):t.target.id,a=t.provider===`deno`||n;return{...t.target.arguments?.length?{arguments:[...t.target.arguments]}:{},...t.target.binaryName||a?{binaryName:t.target.binaryName??e.agent.binaryName}:{},...r?{effect:r.kind===`executable`?{command:[...r.command],kind:r.kind}:{command:r.command,kind:r.kind}}:{},id:i,kind:t.target.kind}}function v(e,t,n){return t.provider===`script`||t.provider===`binary`?{agentName:e.agent.name,...t.target.binaryName?{binaryName:t.target.binaryName}:{},command:n.id,installType:t.provider}:{agentName:e.agent.name,...t.target.binaryName||t.provider===`deno`?{binaryName:t.target.binaryName??e.agent.binaryName}:{},installType:t.provider,...t.target.arguments?.length?{packageInstallArgs:[...t.target.arguments]}:{},packageName:t.target.id,...t.target.kind===`cask`||t.target.kind===`id`?{packageTargetKind:t.target.kind}:{}}}function y(e){return e.kind===`shell-script`?e.command:e.command.map(b).join(` `)}function b(e){return e.includes(` `)?JSON.stringify(e):e}function x(e,t,n,r){return e.providerId===t.providerId&&S(e.target,t.target,n)&&(!r||C(e.target.arguments,t.target.arguments))}function S(e,t,n){return e.id===t.id&&e.kind===t.kind&&(e.binaryName??n)===(t.binaryName??n)}function C(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((e,t)=>e===r[t])}function w(e){return(e.target.arguments?.length??0)>0}function T(e,t){if(e&&typeof e==`object`&&`kind`in e){if(e.kind===`timed-out`){let n=`timeoutMs`in e&&typeof e.timeoutMs==`number`?e.timeoutMs:t.timeoutMs;if(n!==void 0&&Number.isInteger(n)&&n>0)return{kind:`timed-out`,timeoutMs:n}}if(e.kind===`cancelled`){let t=`reason`in e?e.reason:void 0;return{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}if(t.signal.aborted){let e=t.signal.reason;return{kind:`cancelled`,...e===void 0?{}:{reason:j(e,`cancelled`)}}}}function E(e){return{kind:`interrupted`,outcome:e}}function D(e){let t=e.reason instanceof Error?e.reason.message:e.reason;return{kind:`interrupted`,outcome:{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}function O(e,t){return{kind:`blocked`,reason:e,retryable:t}}function k(e,t,n){return`reason`in n&&n.reason?`Provider ${e.id} ${t} failed: ${n.reason}`:n.kind===`unsupported`?`Provider ${e.id} does not support ${n.operation}.`:`Provider ${e.id} ${t} returned ${n.kind}.`}function A(e){return e.kind===`failed`?e.retryable:e.kind===`unavailable`?e.retryable??!0:!1}function j(e,t){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:t}async function M(e,t,n,r){if(t.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let i=await r();try{let r=P(await e.loadDocument());return new N(e,r,P({...r,installedAgents:{...r.installedAgents,[t.agentName]:t},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}}),i)}catch(e){return await F(i,e,`Failed to release the state lock after record preparation.`)}}var N=class{applyPromise;commitPromise;rawApplyPromise;releasePromise;rollbackPromise;terminal;constructor(e,t,n,r){this.store=e,this.original=t,this.next=n,this.releaseStateLock=r}apply(){if(this.terminal===`rollback`)throw Error(`Cannot apply an installation record after rollback started.`);return this.applyPromise?this.applyPromise:(this.rawApplyPromise=Promise.resolve().then(()=>this.store.saveDocument(this.next)),this.applyPromise=this.rawApplyPromise.catch(async e=>{this.terminal=`rollback`;try{await this.startRollback()}catch(t){throw I(e,t,`State recording failed and the original document could not be restored cleanly.`)}throw e}),this.applyPromise)}commit(){return this.terminal===`rollback`?this.startRollback().then(()=>{throw Error(`Cannot commit an installation record after rollback started.`)}):this.applyPromise?this.commitPromise?this.commitPromise:(this.terminal=`commit`,this.commitPromise=this.applyPromise.then(()=>this.releaseOnce()),this.commitPromise):(this.terminal=`rollback`,this.startRollback().then(()=>{throw Error(`Cannot commit an installation record before apply completes.`)}))}rollback(){return this.terminal===`commit`?this.commitPromise??Promise.resolve():(this.terminal=`rollback`,this.startRollback())}startRollback(){return this.rollbackPromise??=this.runRollback(),this.rollbackPromise}async runRollback(){if(!this.rawApplyPromise){await this.releaseOnce();return}await this.rawApplyPromise.catch(()=>void 0);let e;try{await this.store.saveDocument(this.original)}catch(t){e=t}try{await this.releaseOnce()}catch(t){throw e===void 0?t:I(e,t,`Failed to restore the original state and release its lock.`)}if(e!==void 0)throw e}releaseOnce(){return this.releasePromise??=Promise.resolve().then(()=>this.releaseStateLock()),this.releasePromise}};function P(e){let t=r(e);if(t.source!==`current`)throw Error(`Core mutations require the current state schema.`);return t.document}async function F(e,t,n){try{await e()}catch(e){throw I(t,e,n)}throw t}function I(e,t,n){return AggregateError([e,t],n,{cause:e})}async function L(e){let[t,n]=await Promise.all([l(),import(`./installation-provider-registry-Ca45gNu5.mjs`)]);return R({configDir:e,providerRegistry:n.createCoreInstallationProviderRegistry(),recipeCatalog:t})}function R(r){let i=r.acquireResourceLock??e,a=r.clock??(()=>new Date().toISOString()),o=r.platform??n(),c=r.providerRegistry,l=r.readPorts??s({providerRegistry:c}),d=r.stateStore??t(r.configDir);return{compensate:(e,t)=>V(c,e,t),install:(e,t)=>z(c,e,`install`,t),observe:(e,t,n)=>l.inspectAgent(e,{...t,configDir:r.configDir},n),prepareRecord:({before:e,context:t,recipe:n,verified:o})=>H({acquireLock:i,before:e,clock:a,configDir:r.configDir,context:t,recipe:n,stateStore:d,verified:o}),resolveRecipe:e=>u({...e,catalog:r.recipeCatalog,platform:o,providerRegistry:c}),verify:(e,t)=>B(c,e,t),withMutationLock:(e,t,n)=>K(i,r.configDir,{resource:`agent lifecycle`,scope:[`agent-lifecycle`]},t,n)}}async function z(e,t,n,r){let i=e.get(t.binding.providerId),a=i?.[n];return!i||!a?J(n,t):await q(()=>a({context:r,target:t.binding.target}),r,n)}async function B(e,t,n){let r=e.get(t.binding.providerId);return r?.verify?await q(()=>r.verify({context:n,target:t.binding.target}),n,`verify`):J(`verify`,t)}async function V(e,t,n){if(t.compensation===`manual`)return J(`uninstall`,t);let r=e.get(t.binding.providerId);if(!r?.uninstall)return J(`uninstall`,t);let i=await q(()=>r.uninstall({context:n,target:t.binding.target}),n,`uninstall`);if(i.kind!==`success`)return i;let a=await q(()=>r.observe({context:n,target:t.binding.target}),n,`observe`);return a.kind===`success`&&a.value.kind===`absent`&&X(a.value.target,t.binding.target)?i:{kind:`failed`,reason:Q(a,`Compensation did not verify the selected target as absent.`),remediation:`Inspect and remove the selected provider target manually before retrying.`,retryable:!1}}async function H(e){let t=U(e.recipe,e.verified,e.clock),n,r;return r=await M(e.stateStore,e.recipe.installedState,t,async()=>{n=await G(e.acquireLock,e.configDir,{resource:`state`,scope:[`state`]},e.context);try{return W(await e.stateStore.loadDocument(),e.before),n.release}catch(e){throw await n.release(),e}}),n?.transferCleanup(()=>r.rollback()),r}function U(e,t,n){let r=t.observation,i=t.resolvedBinaryPath??(r.kind===`present`?r.executablePath:t.executable.path),a=r.kind===`present`?r.version:t.executable.version;return{...e.binding.target.binaryName?{executableName:e.binding.target.binaryName}:{},...i?{executablePath:i}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.installedState.agentName,verifiedAt:r.observedAt??n(),...a?{version:a}:{}}}function W(e,t){let n=t.agent.name;if(!c(e.installedAgents[n],t.installedState)||!c(e.lifecycleReceipts[n],t.receipt))throw Error(`Recorded agent evidence changed while the lifecycle mutation was in progress.`)}async function G(e,t,n,r){let i=await e(t,n),a,o=()=>s(),s=()=>(a??=Promise.resolve().then(()=>i()),a),c=r.registerCleanup({cleanup:()=>o(),force:()=>o()});return{release:async()=>{c(),await s()},transferCleanup(e){o=e}}}async function K(e,t,n,r,i){let a=await G(e,t,n,r),o,s=new Promise(e=>{o=e});a.transferCleanup(async()=>{await s,await a.release()});try{return await i()}finally{o(),await a.release()}}async function q(e,t,n){try{return await e()}catch(e){return t.signal.aborted?{kind:`cancelled`,...t.signal.reason===void 0?{}:{reason:$(t.signal.reason)}}:Y(e)||{kind:`failed`,reason:`${n} provider rejected: ${$(e)}`,retryable:!1}}}function J(e,t){return{kind:`unsupported`,operation:e,reason:`Provider ${t.binding.providerId} does not support ${e}.`}}function Y(e){if(!(!e||typeof e!=`object`||!(`kind`in e))){if(e.kind===`cancelled`)return{kind:`cancelled`,...`reason`in e&&e.reason!==void 0?{reason:$(e.reason)}:{}};if(e.kind===`timed-out`&&`timeoutMs`in e&&typeof e.timeoutMs==`number`)return{kind:`timed-out`,timeoutMs:e.timeoutMs}}}function X(e,t){return e.id===t.id&&e.kind===t.kind&&e.binaryName===t.binaryName&&Z(e.arguments,t.arguments)}function Z(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}function Q(e,t){return e.kind!==`success`&&`reason`in e&&e.reason?e.reason:t}function $(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core provider operation failed.`}export{L as loadProductionCoreInstallationPorts};
@@ -1 +1 @@
1
- import{h as e}from"./file-store-XNyirRRY.mjs";import{t}from"./detect-BUVMt8jZ.mjs";import{I as n,n as r,r as i}from"./agents-vJvtQ83q.mjs";import{$ as a,Q as o,S as s,tt as c,x as l}from"./output-pOJ9U7C5.mjs";import{u}from"./providers-Cm4gsCbZ.mjs";import{t as d}from"./cli-operation-context-BS5a069W.mjs";import{s as f}from"./agents-Dqss403b.mjs";import{r as p}from"./provider-binding-BmBPz4YE.mjs";import{t as m}from"./agent-observation-CmpP7VL_.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,o={}){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:s,signal:e.signal,timeoutMs:e.timeoutMs},o)}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?o(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
1
+ import{h as e}from"./file-store-XNyirRRY.mjs";import{t}from"./detect-BUVMt8jZ.mjs";import{R as n,n as r,r as i}from"./agents-CbaEEQf0.mjs";import{$ as a,Q as o,S as s,tt as c,x as l}from"./output-BFYw3cWv.mjs";import{u}from"./providers-Bwo6FFIw.mjs";import{t as d}from"./cli-operation-context-BS5a069W.mjs";import{s as f}from"./agents-_Jz2GL-G.mjs";import{r as p}from"./provider-binding-BmBPz4YE.mjs";import{t as m}from"./agent-observation-CmpP7VL_.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,o={}){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:s,signal:e.signal,timeoutMs:e.timeoutMs},o)}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?o(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-BUVMt8jZ.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-D0YMPN5w.mjs";import{f as i}from"./providers-Bwo6FFIw.mjs";import{t as a}from"./cli-operation-context-BS5a069W.mjs";import{n as o}from"./agents-_Jz2GL-G.mjs";import{a as s,t as c}from"./provider-binding-BmBPz4YE.mjs";import{t as l}from"./provider-evidence-C5jSkQz1.mjs";import{n as u}from"./lifecycle-observations-D5ssgFhb.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};
@@ -0,0 +1,3 @@
1
+ import{t as e}from"./messages-D6r2o7w-.mjs";import{et as t,i as n,n as r}from"./output-BFYw3cWv.mjs";import{f as i}from"./providers-Bwo6FFIw.mjs";import{i as a,r as o,t as s}from"./human-BL2-F6cA.mjs";import{t as c}from"./color-iQl4CJwm.mjs";import{a as l}from"./user-output-DLbKXqDm.mjs";import{r as u,t as d}from"./core-read-observations-BNCduEh8.mjs";async function f(){let t=(await d()).map(u);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
+ AI Agents:
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};
@@ -0,0 +1 @@
1
+ function e(e){return`${e.displayName} uses a manually managed install source. Please check for updates manually.`}function t(e){return`${e.displayName} is detected on disk but not tracked as a Quantex-managed install. Use \`quantex inspect ${e.name} --json\` to confirm the source, then reinstall through Quantex if you want \`quantex update --all\` to manage it.`}function n(e,t){let n=t.currentPackage?`which upstream replaced with ${t.currentPackage}`:`which upstream no longer publishes`;return`${e.displayName} is installed from ${t.recordedPackage}, ${n}. Quantex cannot compare versions across the rename. Run \`quantex uninstall ${e.name}\` then \`quantex install ${e.name}\` to move onto the current package.`}function r(e,t){return{code:`AGENT_PACKAGE_SUPERSEDED`,details:{agentName:e.name,...t.currentPackage?{currentPackage:t.currentPackage}:{},recordedPackage:t.recordedPackage,suggestedAction:`reinstall-agent`,suggestedCommands:[`quantex uninstall ${e.name}`,`quantex install ${e.name}`]},message:n(e,t)}}function i(e,t){if(t===`self-update`&&e.selfUpdate)return`Try running ${e.selfUpdate.command.join(` `)} directly.`;if(t===`manual-hint`)return`Check ${e.homepage} for the recommended update path.`}export{t as a,n as i,i as n,e as r,r as t};