quantex-cli 1.8.11 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/{agent-installation-BoKWsqnP.mjs → agent-installation-Dm25ZdED.mjs} +1 -1
  4. package/dist/agents-BsZ6Btoz.mjs +1 -0
  5. package/dist/agents-DaVS3Aew.mjs +1 -0
  6. package/dist/{capabilities-BSnulBhT.mjs → capabilities-BJWlwSs3.mjs} +1 -1
  7. package/dist/capabilities-D_KZ-hf1.mjs +1 -0
  8. package/dist/child-process-DzIdysOm.mjs +1 -0
  9. package/dist/{cli-operation-context-BFEu635L.mjs → cli-operation-context-BS5a069W.mjs} +1 -1
  10. package/dist/cli-operation-context-yd4c0OQH.mjs +1 -0
  11. package/dist/cli.mjs +1 -1
  12. package/dist/commands-BhT-7H1H.mjs +1 -0
  13. package/dist/{commands-BbQe_ON8.mjs → commands-Cw5QrXUT.mjs} +1 -1
  14. package/dist/config-BF7ZuXbc.mjs +3 -0
  15. package/dist/core-installation-cli-CZaccIUT.mjs +1 -0
  16. package/dist/{core-read-observations-BcPmZ6hJ.mjs → core-read-observations-DvEtQMVm.mjs} +1 -1
  17. package/dist/{detect-DL6buUVi.mjs → detect-BUVMt8jZ.mjs} +1 -1
  18. package/dist/{doctor-B7r6ZBdF.mjs → doctor-Cev-MvMX.mjs} +1 -1
  19. package/dist/ensure-B7-EENvT.mjs +1 -0
  20. package/dist/ensure-CM1-qViK.mjs +1 -0
  21. package/dist/errors-BsSS_i9A.mjs +1 -0
  22. package/dist/file-store-XNyirRRY.mjs +2 -0
  23. package/dist/index.d.mts +1 -1
  24. package/dist/index.mjs +1 -1
  25. package/dist/{info-Dqc_WWr1.mjs → info-Os5AmVrH.mjs} +1 -1
  26. package/dist/inspect-CIb7g97P.mjs +1 -0
  27. package/dist/{inspect-DqDfHKBz.mjs → inspect-weteHfEU.mjs} +1 -1
  28. package/dist/install-CT8fm61Q.mjs +1 -0
  29. package/dist/{installation-compatibility-Dwjt5KJ4.mjs → installation-compatibility-Mc1ZlVS1.mjs} +1 -1
  30. package/dist/installation-failure-diagnostics-BJnxrzTa.mjs +1 -0
  31. package/dist/{installation-production-DWjxO4ah.mjs → installation-production-BuCazkkr.mjs} +1 -1
  32. package/dist/installation-provider-registry-Ca45gNu5.mjs +1 -0
  33. package/dist/installation-routing-B1snz7YR.mjs +1 -0
  34. package/dist/{lifecycle-observations-BuscaBUl.mjs → lifecycle-observations-CSHMWKz8.mjs} +1 -1
  35. package/dist/{lifecycle-policy-6lSEToTF.mjs → lifecycle-policy-ClcUaPip.mjs} +1 -1
  36. package/dist/{list-C-IEbM27.mjs → list-BemHv4RN.mjs} +1 -1
  37. package/dist/mutation-recipe-catalog-DP_XMSYe.mjs +1 -0
  38. package/dist/npm-DUDR-Khz.mjs +5 -0
  39. package/dist/{output-CStNLacz.mjs → output-CgTs7pIh.mjs} +2 -2
  40. package/dist/production-observation-DCU7IJZl.mjs +1 -0
  41. package/dist/{provider-evidence-DsrZZTeP.mjs → provider-evidence-BbMX487J.mjs} +1 -1
  42. package/dist/{provider-observation-registry-HX9uxCCQ.mjs → provider-observation-registry-DRRQKxkl.mjs} +3 -3
  43. package/dist/{provider-observations-Cc63tE6E.mjs → provider-observations-BBUf9znX.mjs} +1 -1
  44. package/dist/{providers-DvgNZrfR.mjs → providers-YdECz092.mjs} +1 -1
  45. package/dist/{resolve-dq8p6snD.mjs → resolve-CM2JyH_y.mjs} +1 -1
  46. package/dist/resolve-D7ni6-jQ.mjs +1 -0
  47. package/dist/schema-D6SdLCAJ.mjs +1 -0
  48. package/dist/{schema-BG5mYDpo.mjs → schema-DlZF54O1.mjs} +1 -1
  49. package/dist/{uninstall-DPJQiKjB.mjs → uninstall-JnynBCH-.mjs} +1 -1
  50. package/dist/unmanaged-install-compatibility-BEXuxk1_.mjs +1 -0
  51. package/dist/{update-DkNFmDA5.mjs → update-sq4eqQik.mjs} +1 -1
  52. package/dist/{upgrade-DCH9zij3.mjs → upgrade-NjZNP9Vx.mjs} +1 -1
  53. package/dist/{version-cache-BYowbdA-.mjs → version-cache-jjIoeyWQ.mjs} +1 -1
  54. package/dist/{winget-Q_NhfOhY.mjs → winget-C8yBIi3u.mjs} +2 -2
  55. package/package.json +4 -4
  56. package/dist/agents-D9f3aOA9.mjs +0 -1
  57. package/dist/agents-Dx9g8ynW.mjs +0 -1
  58. package/dist/capabilities-D4Yrva1H.mjs +0 -1
  59. package/dist/child-process-CBKnpMWt.mjs +0 -1
  60. package/dist/cli-operation-context-D-7o4gXx.mjs +0 -1
  61. package/dist/commands-D5plvean.mjs +0 -1
  62. package/dist/config-MrVPBftr.mjs +0 -3
  63. package/dist/core-installation-cli-BdaOA0l4.mjs +0 -1
  64. package/dist/ensure-CZZYl1C8.mjs +0 -1
  65. package/dist/ensure-Ctt9j7pc.mjs +0 -1
  66. package/dist/errors-DR1Ig4IH.mjs +0 -1
  67. package/dist/file-store-BdnwPxOg.mjs +0 -2
  68. package/dist/inspect-B5H663Ab.mjs +0 -1
  69. package/dist/install-Ca5HBRPs.mjs +0 -1
  70. package/dist/installation-provider-registry-Cs4njYSh.mjs +0 -1
  71. package/dist/installation-routing-CLQZ8rZo.mjs +0 -1
  72. package/dist/mutation-recipe-catalog-CH1AfoI8.mjs +0 -1
  73. package/dist/npm-CJQfKklg.mjs +0 -4
  74. package/dist/production-observation-C2NQE3L8.mjs +0 -1
  75. package/dist/resolve-cmJqUIsH.mjs +0 -1
  76. package/dist/schema-BpXcR8pV.mjs +0 -1
  77. package/dist/unmanaged-install-compatibility-1ER3psYi.mjs +0 -1
  78. /package/dist/{errors-G0M6J6q-.mjs → errors-fT9JApTf.mjs} +0 -0
  79. /package/dist/{installation-executor-CUGhYtyj.mjs → installation-executor-pEUKT8U8.mjs} +0 -0
  80. /package/dist/{installation-routing-D6Zo0bsn.mjs → installation-routing-n62Du1fV.mjs} +0 -0
  81. /package/dist/{invocation-DDozaggZ.mjs → invocation-DXH0mQUH.mjs} +0 -0
@@ -0,0 +1,2 @@
1
+ import{i as e,n as t,o as n,r}from"./child-process-DzIdysOm.mjs";import{n as i,t as a}from"./executable-search-paths-Do0aoA1z.mjs";import{r as o}from"./registry-vhJzh8dW.mjs";import{a as s,i as c,n as l,o as u,r as d}from"./schema-BBnWVY6R.mjs";import{constants as f,mkdirSync as p,writeFileSync as m}from"node:fs";import{dirname as ee,join as h}from"node:path";import g from"node:process";import{access as _,mkdir as v,readFile as y,rename as b,rm as x,writeFile as S}from"node:fs/promises";import{homedir as C}from"node:os";function te(){return{env:g.env,homeDir:C(),platform:g.platform}}async function w(i,a){try{let t=n([g.platform===`win32`?`where`:`which`,i],{detached:a!==void 0&&g.platform!==`win32`}),{exitCode:o,stdout:s}=a?await e(t,a):await r(t);return o===0&&s.trim().split(`
2
+ `)[0]?.trim()||void 0}catch(e){if(t(e))throw e;return}}async function T(e,t){let n=a(e,t);for(let e of i(t))for(let t of n){let n=h(e,t);try{return await _(n,f.X_OK),n}catch{}}}async function E(e,t){let n=await w(e,t);if(n)return n;if(!t?.signal.aborted)return T(e,te())}async function D(e,t){return await E(e,t)!==void 0}const O={defaultPackageManager:`bun`,networkRetries:2,networkTimeoutMs:1e4,npmBunUpdateStrategy:`latest-major`,selfUpdateChannel:`stable`,selfUpdateRegistry:void 0,versionCacheTtlHours:6};function k(){return h(g.env.HOME||g.env.USERPROFILE||C(),`.quantex`)}function A(){return h(k(),`config.json`)}async function ne(){let e={...O,...await N()};return{...e,defaultPackageManager:j(e.defaultPackageManager)?e.defaultPackageManager:`bun`,networkRetries:P(e.networkRetries,2),networkTimeoutMs:P(e.networkTimeoutMs,1e4),npmBunUpdateStrategy:e.npmBunUpdateStrategy===`respect-semver`?`respect-semver`:`latest-major`,selfUpdateChannel:e.selfUpdateChannel===`beta`?`beta`:`stable`,selfUpdateRegistry:typeof e.selfUpdateRegistry==`string`?o(e.selfUpdateRegistry):void 0,versionCacheTtlHours:P(e.versionCacheTtlHours,6)}}function j(e){return e===`bun`||e===`mise`||e===`npm`||e===`uv`}function re(e){return e===`latest-major`||e===`respect-semver`}async function M(e){await v(k(),{recursive:!0}),await S(A(),`${JSON.stringify(e,null,2)}\n`,`utf8`)}async function N(){try{let e=await y(A(),`utf8`),t=JSON.parse(e);return F(t)?t:{}}catch{return{}}}function P(e,t){if(typeof e==`number`&&Number.isInteger(e)&&e>0)return e;if(typeof e==`string`){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>0)return t}return t}function F(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var I=class extends Error{lockPath;resource;constructor(e,t){super(`Another quantex process is already using the ${e} lock.`),this.name=`ResourceLockError`,this.lockPath=t,this.resource=e}};function L(e){return e instanceof I}function R(e,t){let n=t.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),r=n.length>0?n:[`default`],i=r.slice(0,-1),a=`${r.at(-1)}.lock`;return h(e,`locks`,...i,a)}async function z(e,t){let n=R(e,t.scope);return await v(ee(n),{recursive:!0}),await V(t.resource,n),async()=>{await x(n,{force:!0,recursive:!0})}}async function B(e){return await z(k(),e)}async function V(e,t){try{p(t,{recursive:!1}),H(t);return}catch(e){if(!q(e))throw e}if(!await U(t))throw new I(e,t);try{p(t,{recursive:!1}),H(t)}catch(n){throw q(n)?new I(e,t):n}}function H(e){m(h(e,`owner.json`),`${JSON.stringify({pid:g.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function U(e){let t;try{t=await W(e)}catch{return!1}return t&&K(t.pid)?!1:(await x(e,{force:!0,recursive:!0}),!0)}async function W(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await G(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await G(e)}async function G(e){try{let t=await y(h(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(J(e))return;throw e}}function K(e){try{return g.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function q(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function J(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function Y(e,t,n){let r=await z(e,t);try{return await n()}finally{await r()}}async function ie(e,t){return await Y(k(),e,t)}var ae=class extends Error{backupFilePath;primaryError;recoveryError;constructor(e){super(`Failed to restore the original Quantex state after a persistence failure.`,{cause:e.recoveryError}),this.name=`StateRecoveryError`,this.backupFilePath=e.backupFilePath,this.primaryError=e.primaryError,this.recoveryError=e.recoveryError}},oe=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:X(e)}async save(e){let t=c(e);if(t.source!==`current`)throw Error(`Refusing to persist an unversioned state document.`);let{backupFilePath:n,directoryPath:r,stateFilePath:i,tempFileSuffix:a}=this.options,o=`${n}.tmp-${a}`,s=`${i}.tmp-${a}`,l=`${i}.restore-${a}`,u=await this.readOptional(i),d=u===void 0?void 0:c(X(u)),f=`${JSON.stringify(t.document,null,2)}\n`,p=!1;await this.options.fileSystem.makeDirectory(r);try{u!==void 0&&d?.source===`legacy`&&(await this.options.fileSystem.writeText(o,u),await this.validateBackup(o,u),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,u)),await this.options.fileSystem.writeText(s,f),Z(await this.options.fileSystem.readText(s)),await this.options.fileSystem.rename(s,i),p=!0,Z(await this.options.fileSystem.readText(i))}catch(e){let t;try{p&&await this.restoreOriginal(u,l,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,s,l)}throw t===void 0?e:new ae({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,s,l)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(Q(e))return;throw e}}async validateBackup(e,t){let n=await this.options.fileSystem.readText(e);if(n!==t)throw Error(`State migration backup does not match the original state.`);c(X(n))}async restoreOriginal(e,t,n){if(e===void 0){if(await this.options.fileSystem.remove(n),await this.readOptional(n)!==void 0)throw Error(`New state remained after rollback removal.`);return}await this.options.fileSystem.writeText(t,e),await this.options.fileSystem.rename(t,n);let r=await this.options.fileSystem.readText(n);if(r!==e)throw Error(`Restored state does not match the original state.`);c(X(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},se=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?l():c(e).document}async loadProjection(){return s(await this.loadDocument())}async saveDocument(e){let t=c(e);if(t.source!==`current`)throw Error(`State documents must use the current state schema.`);await this.persistence.save(t.document)}async saveProjection(e){let t=u(await this.loadDocument(),e);await this.saveDocument(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=d(e.targetId,e),n=await this.loadDocument(),r=c({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(r.document)}async setAgentLifecycleEvidence(e,t){let n=d(t.targetId,t);if(e.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let r=await this.loadDocument(),i=c({...r,installedAgents:{...r.installedAgents,[e.agentName]:e},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}});if(i.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.saveDocument({...t,lifecycleReceipts:n})}};function X(e){return JSON.parse(e)}function Z(e){if(c(X(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function Q(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}const ce={async makeDirectory(e){await v(e,{recursive:!0})},async readText(e){return y(e,`utf8`)},async remove(e){await x(e,{force:!0})},async rename(e,t){await b(e,t)},async writeText(e,t){await S(e,t,`utf8`)}};function $(e){return h(e,`state.json`)}function le(e,t=String(g.pid)){let n=$(e);return new se(new oe({backupFilePath:`${n}.v1.bak`,directoryPath:e,fileSystem:ce,stateFilePath:n,tempFileSuffix:t}))}export{L as a,A as c,ne as d,M as f,E as h,z as i,j as l,D as m,$ as n,ie as o,O as p,B as r,k as s,le as t,re as u};
package/dist/index.d.mts CHANGED
@@ -1106,7 +1106,7 @@ declare function schemaCommand(commandName?: string): Promise<CommandResult<Sche
1106
1106
  declare function getSchemaCatalog(): readonly SchemaDocument[];
1107
1107
  //#endregion
1108
1108
  //#region src/config/index.d.ts
1109
- type DefaultPackageManager = 'bun' | 'mise' | 'npm';
1109
+ type DefaultPackageManager = 'bun' | 'mise' | 'npm' | 'uv';
1110
1110
  type NpmBunUpdateStrategy = 'latest-major' | 'respect-semver';
1111
1111
  interface QuantexConfig {
1112
1112
  defaultPackageManager: DefaultPackageManager;
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-BdnwPxOg.mjs";import{c as o,i as s,n as c,o as l,t as ee}from"./detect-DL6buUVi.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-D9f3aOA9.mjs";import{a as F,n as I,o as L,s as R}from"./cli-context-DI43ouBg.mjs";import{A as z,B,C as V,H,I as U,N as de,O as fe,P as pe,Q as me,R as he,S as ge,U as _e,V as ve,X as ye,Z as be,_ as xe,a as Se,c as Ce,d as we,f as Te,g as Ee,h as De,i as Oe,j as ke,l as Ae,m as je,n as Me,o as Ne,p as Pe,t as Fe,u as Ie,w as Le}from"./output-CStNLacz.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-DvgNZrfR.mjs";import{t as Je}from"./capabilities-BSnulBhT.mjs";import{t as Ye}from"./commands-BbQe_ON8.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-Dx9g8ynW.mjs";import{t as st}from"./update-planner-Cr9XVW1l.mjs";import{t as ct}from"./ensure-Ctt9j7pc.mjs";import{t as lt}from"./inspect-DqDfHKBz.mjs";import{t as ut}from"./resolve-dq8p6snD.mjs";import{n as dt,t as ft}from"./schema-BG5mYDpo.mjs";import{n as pt,r as mt}from"./errors-G0M6J6q-.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,ge 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,Fe as createErrorResult,we as createReleaseManifest,Me as createSuccessResult,J as createUpdatePlan,A as cursor,h as deepcode,V as detectSelfInstallSource,g as devin,E as droid,Oe as emitCommandResult,ct as ensureCommand,yt as execCommand,Te as formatChecksums,C as gemini,v as genie,k as getAgentByLookupName,w as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,D as getAllAgents,ye as getBinaryPath,H as getBinaryReleaseAssetName,_e 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,fe as getInstalledAgentState,be as getInstalledVersion,Be as getInstallerCapabilities,me as getLatestVersion,Xe as getManagedInstaller,e as getManualAgentUpdateMessage,Se as getManualSelfUpgradeCommand,it as getOrderedInstallMethods,ee as getPlatform,ft as getSchemaCatalog,z as getSelfState,Ae as getSelfUpgradeRecoveryHint,Ie as getSelfUpgradeRecoveryHintForInspection,Le as getSelfVersion,Z as getSingleAgentUpdateStatus,ke as getStateFilePath,_ as grok,d as hermes,K as inspectAgent,Ze as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Ne 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,de as loadState,N as mimo,Pe as normalizeRepositoryUrl,ue as omp,ne as openclaw,M as opencode,u as openhands,je as parseBinaryTarget,De as parseChecksums,ie as pi,ht as planAgentUpdates,re as qoder,ce as reasonix,pe as removeInstalledAgentState,F as resetCliContext,nt as resolveAgent,rt as resolveAgentInspection,G as resolveAgentUpdateProvider,L as resolveCliContext,ut as resolveCommand,Ee as resolveReleaseChannel,i as saveConfig,U as saveState,dt as schemaCommand,R as setCliContext,he as setInstalledAgentState,B as setSelfInstallSource,ve as setSelfUpdateNoticeState,$e as uninstallAgent,tt as updateAgent,et as updateAgentsByType,Ce as upgradeSelf,xe as validateReleaseManifest,x as vibe,te as vtcode};
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-DaVS3Aew.mjs";import{a as F,n as I,o as L,s as R}from"./cli-context-DI43ouBg.mjs";import{A as z,B,C as V,H,I as U,N as de,O as fe,P as pe,Q as me,R as he,S as ge,U as _e,V as ve,X as ye,Z as be,_ as xe,a as Se,c as Ce,d as we,f as Te,g as Ee,h as De,i as Oe,j as ke,l as Ae,m as je,n as Me,o as Ne,p as Pe,t as Fe,u as Ie,w as Le}from"./output-CgTs7pIh.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-YdECz092.mjs";import{t as Je}from"./capabilities-BJWlwSs3.mjs";import{t as Ye}from"./commands-Cw5QrXUT.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-BsZ6Btoz.mjs";import{t as st}from"./update-planner-Cr9XVW1l.mjs";import{t as ct}from"./ensure-CM1-qViK.mjs";import{t as lt}from"./inspect-weteHfEU.mjs";import{t as ut}from"./resolve-CM2JyH_y.mjs";import{n as dt,t as ft}from"./schema-DlZF54O1.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,ge 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,Fe as createErrorResult,we as createReleaseManifest,Me as createSuccessResult,J as createUpdatePlan,A as cursor,h as deepcode,V as detectSelfInstallSource,g as devin,E as droid,Oe as emitCommandResult,ct as ensureCommand,yt as execCommand,Te as formatChecksums,C as gemini,v as genie,k as getAgentByLookupName,w as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,D as getAllAgents,ye as getBinaryPath,H as getBinaryReleaseAssetName,_e 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,fe as getInstalledAgentState,be as getInstalledVersion,Be as getInstallerCapabilities,me as getLatestVersion,Xe as getManagedInstaller,e as getManualAgentUpdateMessage,Se as getManualSelfUpgradeCommand,it as getOrderedInstallMethods,ee as getPlatform,ft as getSchemaCatalog,z as getSelfState,Ae as getSelfUpgradeRecoveryHint,Ie as getSelfUpgradeRecoveryHintForInspection,Le as getSelfVersion,Z as getSingleAgentUpdateStatus,ke as getStateFilePath,_ as grok,d as hermes,K as inspectAgent,Ze as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Ne 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,de as loadState,N as mimo,Pe as normalizeRepositoryUrl,ue as omp,ne as openclaw,M as opencode,u as openhands,je as parseBinaryTarget,De as parseChecksums,ie as pi,ht as planAgentUpdates,re as qoder,ce as reasonix,pe as removeInstalledAgentState,F as resetCliContext,nt as resolveAgent,rt as resolveAgentInspection,G as resolveAgentUpdateProvider,L as resolveCliContext,ut as resolveCommand,Ee as resolveReleaseChannel,i as saveConfig,U as saveState,dt as schemaCommand,R as setCliContext,he as setInstalledAgentState,B as setSelfInstallSource,ve as setSelfUpdateNoticeState,$e as uninstallAgent,tt as updateAgent,et as updateAgentsByType,Ce as upgradeSelf,xe as validateReleaseManifest,x as vibe,te as vtcode};
@@ -1,3 +1,3 @@
1
- import{i as e,n as t,t as n}from"./output-CStNLacz.mjs";import{a as r,o as i}from"./providers-DvgNZrfR.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-BcPmZ6hJ.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-CgTs7pIh.mjs";import{a as r,o as i}from"./providers-YdECz092.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-DvEtQMVm.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 @@
1
+ import{t as e}from"./inspect-weteHfEU.mjs";export{e as inspectCommand};
@@ -1,4 +1,4 @@
1
- import{i as e,n as t,t as n}from"./output-CStNLacz.mjs";import{a as r,o as i}from"./providers-DvgNZrfR.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-BcPmZ6hJ.mjs";async function d(a){let o=await l(a);if(!o)return e(n({action:`inspect`,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:`inspect`,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},capabilities:{canAutoInstall:c.methods.length>0,canAutoUninstall:c.inPath&&c.lifecycle===`managed`,canRun:c.inPath,canSelfUpdate:d.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}}),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:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.red(`no`)},{label:`Update mode`,value:e.data.inspection.updateLabel},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of a(n,{labelStyle:c.bold,width:t}))console.log(e);let r=[{capability:`Auto install`,value:e.data.capabilities.canAutoInstall},{capability:`Self update`,value:e.data.capabilities.canSelfUpdate},{capability:`Auto uninstall`,value:e.data.capabilities.canAutoUninstall},{capability:`Runnable`,value:e.data.capabilities.canRun}];console.log(c.bold(`
1
+ import{i as e,n as t,t as n}from"./output-CgTs7pIh.mjs";import{a as r,o as i}from"./providers-YdECz092.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-DvEtQMVm.mjs";async function d(a){let o=await l(a);if(!o)return e(n({action:`inspect`,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:`inspect`,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},capabilities:{canAutoInstall:c.methods.length>0,canAutoUninstall:c.inPath&&c.lifecycle===`managed`,canRun:c.inPath,canSelfUpdate:d.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}}),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:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.red(`no`)},{label:`Update mode`,value:e.data.inspection.updateLabel},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of a(n,{labelStyle:c.bold,width:t}))console.log(e);let r=[{capability:`Auto install`,value:e.data.capabilities.canAutoInstall},{capability:`Self update`,value:e.data.capabilities.canSelfUpdate},{capability:`Auto uninstall`,value:e.data.capabilities.canAutoUninstall},{capability:`Runnable`,value:e.data.capabilities.canRun}];console.log(c.bold(`
2
2
  Capabilities
3
3
  `));for(let e of o(r,[{header:`Capability`,minWidth:8,value:e=>e.capability},{header:`Available`,value:e=>e.value?c.green(`yes`):c.dim(`no`)}],{headerStyle:c.bold,width:t}))console.log(e);if(console.log(c.bold(`
4
4
  Install Methods
@@ -0,0 +1 @@
1
+ import{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-CgTs7pIh.mjs";import{l as o}from"./providers-YdECz092.mjs";import{t as s}from"./color-iQl4CJwm.mjs";import{g as c,n as l}from"./agents-BsZ6Btoz.mjs";import{t as u}from"./agent-installation-Dm25ZdED.mjs";import{n as d}from"./lifecycle-observations-CSHMWKz8.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-BEXuxk1_.mjs";import{o as w}from"./lifecycle-policy-ClcUaPip.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-CZaccIUT.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-DDozaggZ.mjs";import{n as t}from"./production-observation-C2NQE3L8.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-CUGhYtyj.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-DWjxO4ah.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-DCU7IJZl.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-pEUKT8U8.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-BuCazkkr.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};
@@ -0,0 +1 @@
1
+ const e=`provider-unavailable`;function t(e,t){let n=e.reason?.trim(),r=e.remediation?.trim(),i={...t?{lifecycle:t}:{},...n?{reason:n}:{},...r?{remediation:r}:{}};return Object.keys(i).length>0?i:void 0}function n(e,t){let n=t?.trim();return n?`${e.replace(/\.$/,``)}: ${n}`:e}function r(e){return e?.trimStart().startsWith(`No installation provider is currently available`)??!1}export{r as i,n,t as r,e as t};
@@ -1 +1 @@
1
- import{i as e,t}from"./file-store-BdnwPxOg.mjs";import{t as n}from"./detect-DL6buUVi.mjs";import{i as r}from"./schema-BBnWVY6R.mjs";import{a as i,i as a,r as o}from"./provider-binding-DV5J36pp.mjs";import{t as s}from"./production-observation-C2NQE3L8.mjs";import{isDeepStrictEqual as c}from"node:util";async function l(){let{coreMutationRecipeCatalog:e}=await import(`./mutation-recipe-catalog-CH1AfoI8.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=i(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=a(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-Cs4njYSh.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,i as a,r as o}from"./provider-binding-DV5J36pp.mjs";import{t as s}from"./production-observation-DCU7IJZl.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=i(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=a(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};
@@ -0,0 +1 @@
1
+ import{a as e,g as t,p as n,r,u as i}from"./npm-DUDR-Khz.mjs";import{D as a,E as o,F as s,N as c,S as l,V as u,b as d,c as f,g as p,i as m,k as h,m as g,n as _,u as v,z as y}from"./winget-C8yBIi3u.mjs";import{r as b}from"./registry-vhJzh8dW.mjs";import{t as x}from"./types-D0YMPN5w.mjs";import{t as S}from"./provider-observation-registry-DRRQKxkl.mjs";const C=Object.freeze([`availability`,`observe`,`install`,`uninstall`,`verify`]),w=Object.freeze([`availability`,`observe`,`install`,`verify`]),T=Object.freeze([]),E={bun:{install:e=>i(e.target.id,e.options?.distTag,e.options?.registry,e.context),installCommand:e=>{let t=b(e.options?.registry),n=e.options?.distTag?`${e.target.id}@${e.options.distTag}`:e.target.id;return[`bun`,`add`,`-g`,...t?[`--registry`,t]:[],n]},uninstall:e=>n(e.target.id,e.context,e.target.binaryName),uninstallCommand:e=>[`bun`,`remove`,`-g`,e.target.id]},brew:{install:e=>y(e.target.id,F(e.target),e.context),installCommand:e=>I(`install`,e.target),uninstall:e=>u(e.target.id,F(e.target),e.context),uninstallCommand:e=>I(`uninstall`,e.target)},cargo:{install:e=>c(e.target.id,P(e.target),e.context),installCommand:e=>[`cargo`,`install`,e.target.id,...e.target.arguments??[]],uninstall:e=>s(e.target.id,e.context),uninstallCommand:e=>[`cargo`,`uninstall`,e.target.id]},deno:{install:e=>a(e.target.id,P(e.target),e.context),installCommand:e=>[`deno`,`install`,`--global`,...e.target.arguments??[],e.target.id],uninstall:e=>h(o(e.target.id,e.target.binaryName),e.context),uninstallCommand:e=>[`deno`,`uninstall`,`--global`,o(e.target.id,e.target.binaryName)]},mise:{install:e=>d(e.target.id,e.context),installCommand:e=>[`mise`,`use`,`--global`,e.target.id],uninstall:e=>l(e.target.id,e.context),uninstallCommand:e=>[`mise`,`unuse`,`--global`,e.target.id]},npm:{install:e=>r(e.target.id,e.options?.distTag,e.options?.registry,e.context),installCommand:e=>{let t=b(e.options?.registry);return[`npm`,`install`,`-g`,e.options?.distTag?`${e.target.id}@${e.options.distTag}`:e.target.id,...t?[`--registry`,t]:[]]},uninstall:t=>e(t.target.id,t.context),uninstallCommand:e=>[`npm`,`uninstall`,`-g`,e.target.id]},pip:{install:e=>g(e.target.id,e.context),installCommand:e=>[`pip`,`install`,e.target.id],uninstall:e=>p(e.target.id,e.context),uninstallCommand:e=>[`pip`,`uninstall`,`-y`,e.target.id]},uv:{install:e=>f(e.target.id,P(e.target),e.context),installCommand:e=>[`uv`,`tool`,`install`,e.target.id,...e.target.arguments??[]],uninstall:e=>v(e.target.id,e.context),uninstallCommand:e=>[`uv`,`tool`,`uninstall`,e.target.id]},winget:{install:e=>_(e.target.id,e.context),installCommand:e=>L(`install`,e.target),uninstall:e=>m(e.target.id,e.context),uninstallCommand:e=>L(`uninstall`,e.target)}};function D(e={}){let n=e.observationRegistry??S(),r=e.platform??z(),i=e.executeEffect??((e,n)=>t(e,n,`install effect failed`)),a=x.map(e=>{let t=n.get(e);if(!t)throw Error(`Core observation registry is missing first-party provider ${e}.`);return e===`binary`||e===`script`?k(e,t,r,i):O(e,t,E[e])}),o=Object.freeze([...a]),s=new Map(o.map(e=>[e.id,e]));return Object.freeze({get:e=>s.get(e),getCapabilities:e=>s.has(e)?e===`binary`||e===`script`?w:C:T,list:()=>o})}function O(e,t,n){let r={availability:t.availability,id:e,install:t=>A(e,t.target,n.installCommand(t),()=>n.install(t)),observe:t.observe,uninstall:t=>A(e,t.target,n.uninstallCommand(t),()=>n.uninstall(t)),verify:e=>j(t,e)};return Object.freeze(r)}function k(e,t,n,r){let i={availability:t.availability,id:e,async install(t){let i=t.target.effect;if(!i)return{evidence:[{kind:`provider`,value:e}],kind:`failed`,reason:`${e} install target ${t.target.id} has no execution effect`,remediation:`Select a candidate with an explicit shell-script or executable effect.`,retryable:!1};let a=R(i,n);return A(e,t.target,a,()=>r(a,t.context))},observe:t.observe,verify:e=>j(t,e)};return Object.freeze(i)}async function A(e,t,n,r){let i=await r();if(i.kind===`success`)return{kind:`success`,value:{evidence:M(e,n),target:t}};if(i.kind!==`failed`)return i;let a=i.command??n;return{...i,command:a,evidence:N(e,a,i.evidence)}}async function j(e,t){let n=await e.observe(t);if(n.kind!==`success`)return n;let r=n.value.evidence??[];return{kind:`success`,value:n.value.kind===`absent`?{evidence:r,kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}:{evidence:r,kind:`satisfied`}}}function M(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function N(e,t,n){let r=M(e,t);return n?.length?[...r,...n.filter(e=>!r.some(t=>t.kind===e.kind&&t.value===e.value))]:r}function P(e){return e.arguments?[...e.arguments]:void 0}function F(e){return e.kind===`cask`?`cask`:`package`}function I(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function L(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function R(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}function z(){switch(process.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}export{D as createCoreInstallationProviderRegistry};
@@ -0,0 +1 @@
1
+ import{n as e,r as t,t as n}from"./installation-routing-n62Du1fV.mjs";export{n as createCoreInstallationTestRoute,e as reportInstallationEngineRoute,t as selectInstallationEngineRoute};
@@ -1 +1 @@
1
- import{h as e}from"./file-store-BdnwPxOg.mjs";import{t}from"./detect-DL6buUVi.mjs";import{I as n,n as r,r as i}from"./agents-D9f3aOA9.mjs";import{$ as a,O as o,Q as s,k as c,tt as l}from"./output-CStNLacz.mjs";import{u}from"./providers-DvgNZrfR.mjs";import{t as d}from"./cli-operation-context-BFEu635L.mjs";import{s as f}from"./agents-Dx9g8ynW.mjs";import{r as p}from"./provider-binding-DV5J36pp.mjs";import{t as m}from"./agent-observation-CwtWTGGR.mjs";function h(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?p(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,resolveExecutablePath:t=>e.getResolvedBinaryPath(t),signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function g(e,t){return t?_(t).resolveAgentObservation(e):v(t=>t.resolveAgentObservation(e))}function _(e,s={}){return h({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>x(t,n,r,e),getOrderedInstallMethods:f,getPlatform:t,getResolvedBinaryPath:t=>a(t,e),inspectExecutable:(t,n)=>y(t,n,e),observeAgentLifecycle:m,providerRegistry:n,readInstalledState:o,readReceipt:c,signal:e.signal,timeoutMs:e.timeoutMs},s)}async function v(e){let t=d(),n=_(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function y(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let o=await b(t,n,r,i);return{path:await a(i,r)??i,present:!0,version:o}}async function b(e,t,n,r){return l(e.binaryName,e.versionProbe,n,r)}async function x(e,t,n,r){let i=u(e,t,n);return i?s(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
1
+ import{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-DaVS3Aew.mjs";import{$ as a,O as o,Q as s,k as c,tt as l}from"./output-CgTs7pIh.mjs";import{u}from"./providers-YdECz092.mjs";import{t as d}from"./cli-operation-context-BS5a069W.mjs";import{s as f}from"./agents-BsZ6Btoz.mjs";import{r as p}from"./provider-binding-DV5J36pp.mjs";import{t as m}from"./agent-observation-CwtWTGGR.mjs";function h(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?p(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,resolveExecutablePath:t=>e.getResolvedBinaryPath(t),signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function g(e,t){return t?_(t).resolveAgentObservation(e):v(t=>t.resolveAgentObservation(e))}function _(e,s={}){return h({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>x(t,n,r,e),getOrderedInstallMethods:f,getPlatform:t,getResolvedBinaryPath:t=>a(t,e),inspectExecutable:(t,n)=>y(t,n,e),observeAgentLifecycle:m,providerRegistry:n,readInstalledState:o,readReceipt:c,signal:e.signal,timeoutMs:e.timeoutMs},s)}async function v(e){let t=d(),n=_(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function y(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let o=await b(t,n,r,i);return{path:await a(i,r)??i,present:!0,version:o}}async function b(e,t,n,r){return l(e.binaryName,e.versionProbe,n,r)}async function x(e,t,n,r){let i=u(e,t,n);return i?s(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
@@ -1 +1 @@
1
- import{n as e}from"./detect-DL6buUVi.mjs";import{s as t}from"./schema-BBnWVY6R.mjs";import{t as n}from"./types-D0YMPN5w.mjs";import{t as r}from"./cli-operation-context-BFEu635L.mjs";import{n as i}from"./agents-Dx9g8ynW.mjs";import{i as a,t as o}from"./provider-binding-DV5J36pp.mjs";import{t as s}from"./provider-evidence-DsrZZTeP.mjs";import{n as c}from"./lifecycle-observations-BuscaBUl.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:z(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:je(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(L),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Oe(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>L(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:z(t.signal)};let r=xe(n);if(!r){let e=n.observation.kind===`absent`&&n.observation.drift.kind===`recorded-absent`;return{before:n,category:e?`stale-state`:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${n.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${n.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}if(we(n.installedState)&&n.agent.selfUpdate){let e=A(n);return e?{kind:`planned`,planned:{before:n,beforeVersion:e,binding:r,commands:[n.agent.selfUpdate.command,...n.agent.selfUpdate.fallbackCommands??[]],planning:Te(n),strategy:`self-update`}}:{before:n,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${n.agent.displayName} self-update because its installed version is unknown.`}}let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return Ee(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:z(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=j(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:Ae(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:M(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=j(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:Ae(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&R(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!R(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function Ce(e,n){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!R(e.binding,n.binding)||n.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(n.observation.kind!==`present`||!n.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=A(n),a=i?t(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:n.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function A(e){let n=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=n[0];return r&&n.every(e=>t(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function j(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${I(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};beforeVersion=${I(t.planned.beforeVersion)};commands=${t.planned.commands.map(P).join(`|`)};plan=${I(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};decision=${r.decision};plan=${I(r.plan.id)};version=${I(i)};${ke(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${I(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${I(t.reason)}`:t.kind===`cancelled`?`${n};reason=${I(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${I(e.operation)};reason=${I(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${I(e.reason)};retryable=${I(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${I(e.exitCode)};reason=${I(e.reason)};remediation=${I(e.remediation)};retryable=${I(e.retryable)}`;case`cancelled`:return`cancelled;reason=${I(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${I(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${I(e.reason)}`}}function P(e){return e?`argv:${e.map(I).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${I(e.kind)}:value=${I(e.value)}`).sort(L).join(`,`)}`:`undefined`}function Oe(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${I(t.binding.providerId)};${ke(t.providerOptions)}`}function ke(e){return`distTag=${I(e?.distTag)};registry=${I(e?.registry)};updateStrategy=${I(e?.updateStrategy)}`}function I(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function L(e,t){return e<t?-1:e>t?1:0}function R(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function z(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Ae(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Me(e,t=e=>i(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Ne(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:i(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=G(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await q(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=G(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Ue(e,r);if(!n)return{kind:`inconclusive`};let i=await q(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:K(i.observation,n)}}}}async function Pe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=G(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await q(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=G(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=We(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await q(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:K(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Fe(e,t={}){let n=t.observe??c,r=Me(e,t.resolveTarget),i=await Promise.all(r.map(e=>J(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await J(n,e);return t.kind===`success`&&t.observation?H(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Re((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ie(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await J(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=H(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ie(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Le(e){try{return d(g(e.items))===d(e)}catch{return!1}}function B(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function V(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Re(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=ze(n[e],r[e]);if(t!==0)return t}return 0})}function ze(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Be(t,n={}){let r=n.observe??c,i=await r(t),a=i?.agent.name??t,o=i?Ge(i):void 0,s=n.observeProviderTarget??Je,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Xe(await Y(s,o.binding),o.binding)&&await Ye(l,o.executableName)===!1)return qe(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Ke({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await J(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=Ve(n.observation);if(i!==`clear`)return{kind:i};let o=await Y(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let c=await Ye(l,t.executableName);return c===void 0?{kind:`inconclusive`}:c?{kind:`drifted`}:{kind:`satisfied`}}}}function Ve(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function He(e,t,n={}){let r=await(n.observe??c)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??c)(i);if(!e)return;let t=H(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??c)(i);if(!t)return{kind:`inconclusive`};let r=H(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function H(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=U([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=U([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=U([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=U([o.executablePath,W(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function U(e){return[...new Set(e.filter(e=>e!==void 0))]}function W(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ue(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=W(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=W(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ze(c)||!Qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function We(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=Ue({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function G(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=K(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=U([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function K(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!o(i,e.binding,e.agent.binaryName)||!o(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let a=U([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let s=t(a[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function q(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ge(e){let t=e.receipt?a(e.receipt):void 0;if(!(!t||!e.binding||!o(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Ke(e,t){let n=W(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=W(e.receipt,`executableName`),a=W(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ze(o)||!Qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function qe(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Je(e){let t=r();try{return await t.run(()=>s(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Y(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ye(e,t){try{return await e(t)}catch{return}}function Xe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ze(e){return n.includes(e)}function Qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Ne as a,ve as c,re as d,d as f,He as i,he as l,Fe as n,Me as o,Pe as r,pe as s,Be as t,_e as u};
1
+ import{n as e}from"./detect-BUVMt8jZ.mjs";import{s as t}from"./schema-BBnWVY6R.mjs";import{t as n}from"./types-D0YMPN5w.mjs";import{t as r}from"./cli-operation-context-BS5a069W.mjs";import{n as i}from"./agents-BsZ6Btoz.mjs";import{i as a,t as o}from"./provider-binding-DV5J36pp.mjs";import{t as s}from"./provider-evidence-BbMX487J.mjs";import{n as c}from"./lifecycle-observations-CSHMWKz8.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:z(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:je(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(L),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Oe(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>L(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:z(t.signal)};let r=xe(n);if(!r){let e=n.observation.kind===`absent`&&n.observation.drift.kind===`recorded-absent`;return{before:n,category:e?`stale-state`:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${n.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${n.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}if(we(n.installedState)&&n.agent.selfUpdate){let e=A(n);return e?{kind:`planned`,planned:{before:n,beforeVersion:e,binding:r,commands:[n.agent.selfUpdate.command,...n.agent.selfUpdate.fallbackCommands??[]],planning:Te(n),strategy:`self-update`}}:{before:n,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${n.agent.displayName} self-update because its installed version is unknown.`}}let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return Ee(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:z(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=j(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:Ae(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:M(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=j(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:Ae(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&R(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!R(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function Ce(e,n){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!R(e.binding,n.binding)||n.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(n.observation.kind!==`present`||!n.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=A(n),a=i?t(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:n.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function A(e){let n=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=n[0];return r&&n.every(e=>t(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function j(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${I(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};beforeVersion=${I(t.planned.beforeVersion)};commands=${t.planned.commands.map(P).join(`|`)};plan=${I(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};decision=${r.decision};plan=${I(r.plan.id)};version=${I(i)};${ke(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${I(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${I(t.reason)}`:t.kind===`cancelled`?`${n};reason=${I(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${I(e.operation)};reason=${I(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${I(e.reason)};retryable=${I(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${I(e.exitCode)};reason=${I(e.reason)};remediation=${I(e.remediation)};retryable=${I(e.retryable)}`;case`cancelled`:return`cancelled;reason=${I(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${I(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${I(e.reason)}`}}function P(e){return e?`argv:${e.map(I).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${I(e.kind)}:value=${I(e.value)}`).sort(L).join(`,`)}`:`undefined`}function Oe(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${I(t.binding.providerId)};${ke(t.providerOptions)}`}function ke(e){return`distTag=${I(e?.distTag)};registry=${I(e?.registry)};updateStrategy=${I(e?.updateStrategy)}`}function I(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function L(e,t){return e<t?-1:e>t?1:0}function R(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function z(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Ae(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Me(e,t=e=>i(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Ne(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:i(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=G(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await q(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=G(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Ue(e,r);if(!n)return{kind:`inconclusive`};let i=await q(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:K(i.observation,n)}}}}async function Pe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=G(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await q(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=G(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=We(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await q(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:K(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Fe(e,t={}){let n=t.observe??c,r=Me(e,t.resolveTarget),i=await Promise.all(r.map(e=>J(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await J(n,e);return t.kind===`success`&&t.observation?H(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Re((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ie(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await J(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=H(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ie(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Le(e){try{return d(g(e.items))===d(e)}catch{return!1}}function B(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function V(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Re(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=ze(n[e],r[e]);if(t!==0)return t}return 0})}function ze(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Be(t,n={}){let r=n.observe??c,i=await r(t),a=i?.agent.name??t,o=i?Ge(i):void 0,s=n.observeProviderTarget??Je,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Xe(await Y(s,o.binding),o.binding)&&await Ye(l,o.executableName)===!1)return qe(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Ke({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await J(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=Ve(n.observation);if(i!==`clear`)return{kind:i};let o=await Y(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let c=await Ye(l,t.executableName);return c===void 0?{kind:`inconclusive`}:c?{kind:`drifted`}:{kind:`satisfied`}}}}function Ve(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function He(e,t,n={}){let r=await(n.observe??c)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??c)(i);if(!e)return;let t=H(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??c)(i);if(!t)return{kind:`inconclusive`};let r=H(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function H(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=U([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=U([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=U([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=U([o.executablePath,W(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function U(e){return[...new Set(e.filter(e=>e!==void 0))]}function W(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ue(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=W(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=W(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ze(c)||!Qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function We(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=Ue({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function G(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=K(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=U([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function K(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!o(i,e.binding,e.agent.binaryName)||!o(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let a=U([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let s=t(a[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function q(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ge(e){let t=e.receipt?a(e.receipt):void 0;if(!(!t||!e.binding||!o(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Ke(e,t){let n=W(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=W(e.receipt,`executableName`),a=W(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ze(o)||!Qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function qe(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Je(e){let t=r();try{return await t.run(()=>s(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Y(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ye(e,t){try{return await e(t)}catch{return}}function Xe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ze(e){return n.includes(e)}function Qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Ne as a,ve as c,re as d,d as f,He as i,he as l,Fe as n,Me as o,Pe as r,pe as s,Be as t,_e as u};
@@ -1,3 +1,3 @@
1
- import{et as e,i as t,n}from"./output-CStNLacz.mjs";import{i as r,r as i,t as a}from"./human-BL2-F6cA.mjs";import{t as o}from"./color-iQl4CJwm.mjs";import{r as s,t as c}from"./core-read-observations-BcPmZ6hJ.mjs";async function l(){return t(n({action:`list`,data:{agents:(await c()).map(s).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`}}),u)}function u(e){let t=e.data?.agents??[],n=a();console.log(o.bold(`
1
+ import{et as e,i as t,n}from"./output-CgTs7pIh.mjs";import{i as r,r as i,t as a}from"./human-BL2-F6cA.mjs";import{t as o}from"./color-iQl4CJwm.mjs";import{r as s,t as c}from"./core-read-observations-DvEtQMVm.mjs";async function l(){return t(n({action:`list`,data:{agents:(await c()).map(s).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`}}),u)}function u(e){let t=e.data?.agents??[],n=a();console.log(o.bold(`
2
2
  AI Agents:
3
3
  `));for(let e of i(t,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Installed`,minWidth:5,value:e=>e.installed?o.green(`yes`):o.dim(`no`)},{header:`Version`,maxWidth:22,optional:!0,priority:2,value:e=>e.installed?o.dim(e.installedVersion??`unknown`):o.dim(`—`)},{header:`Source`,optional:!0,priority:2,value:e=>o.dim(e.installed?p(e.sourceLabel):`—`)},{header:`Managed`,optional:!0,priority:1,value:e=>e.installed?o.cyan(d(e.updateLabel)):o.dim(`—`)},{header:`Available`,optional:!0,priority:0,value:f}],{headerStyle:o.bold,width:n}))console.log(e);let s=t.filter(e=>e.installed).length,c=`${s} installed · ${t.length-s} not installed`;console.log();for(let e of r(o.dim(c),{indent:` `,width:n}))console.log(e);for(let e of r(o.dim(`Details: qtx inspect <agent>`),{indent:` `,width:n}))console.log(e);console.log()}function d(e){return e.replace(/ update$/u,``)}function f(t){return!t.installed||!t.installedVersion||!t.latestVersion?o.dim(`—`):e(t.latestVersion,t.installedVersion)?o.cyan(t.latestVersion):o.dim(`—`)}function p(e){return/^managed via ([^ (]+)/u.exec(e)?.[1]||(e===`script installer`?`script`:e===`binary installer`?`binary`:e===`detected on disk`?`detected`:`—`)}export{l as listCommand};
@@ -0,0 +1 @@
1
+ const e=[{name:`amp`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@sourcegraph/amp`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@sourcegraph/amp`,kind:`package`}}]}},{name:`antigravity`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`},id:`https://antigravity.google/cli/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,kind:`shell-script`},id:`https://antigravity.google/cli/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://antigravity.google/cli/install.ps1 | iex`,kind:`shell-script`},id:`https://antigravity.google/cli/install.ps1`,kind:`script`}}]}},{name:`auggie`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@augmentcode/auggie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@augmentcode/auggie`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@augmentcode/auggie`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@augmentcode/auggie`,kind:`package`}}]}},{name:`autohand`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`},id:`https://autohand.ai/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://autohand.ai/install.sh | bash`,kind:`shell-script`},id:`https://autohand.ai/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,kind:`shell-script`},id:`https://autohand.ai/install.ps1`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`autohand-cli`,kind:`package`}}]}},{name:`claude`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`},id:`https://claude.ai/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://claude.ai/install.sh | bash`,kind:`shell-script`},id:`https://claude.ai/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`claude-code`,kind:`cask`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@anthropic-ai/claude-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://claude.ai/install.ps1 | iex`,kind:`shell-script`},id:`https://claude.ai/install.ps1`,kind:`script`}},{probes:[`executable-presence`],provider:`winget`,target:{id:`Anthropic.ClaudeCode`,kind:`id`}}]}},{name:`codebuddy`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`},id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,kind:`shell-script`},id:`https://www.codebuddy.cn/cli/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`Tencent-CodeBuddy/tap/codebuddy-code`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@tencent-ai/codebuddy-code`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,kind:`shell-script`},id:`https://www.codebuddy.cn/cli/install.ps1`,kind:`script`}}]}},{name:`codewhale`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{probes:[`executable-presence`],provider:`cargo`,target:{arguments:[`--locked`],id:`codewhale-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{probes:[`executable-presence`],provider:`cargo`,target:{arguments:[`--locked`],id:`codewhale-cli`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`codewhale`,kind:`package`}},{probes:[`executable-presence`],provider:`cargo`,target:{arguments:[`--locked`],id:`codewhale-cli`,kind:`package`}}]}},{name:`codex`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`codex`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`codex`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@openai/codex`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`mise`,target:{id:`npm:@openai/codex`,kind:`tool`}}]}},{name:`commandcode`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`command-code`,kind:`package`}}]}},{name:`copilot`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`},id:`https://gh.io/copilot-install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@github/copilot`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://gh.io/copilot-install | bash`,kind:`shell-script`},id:`https://gh.io/copilot-install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`copilot-cli`,kind:`formula`}}],windows:[{probes:[`executable-presence`],provider:`winget`,target:{id:`GitHub.Copilot`,kind:`id`}}]}},{name:`crush`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`charmbracelet/tap/crush`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`charmbracelet/tap/crush`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@charmland/crush`,kind:`package`}},{probes:[`executable-presence`],provider:`winget`,target:{id:`charmbracelet.crush`,kind:`id`}}]}},{name:`cursor`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`},id:`https://cursor.com/install`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl https://cursor.com/install -fsS | bash`,kind:`shell-script`},id:`https://cursor.com/install`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm 'https://cursor.com/install?win32=true' | iex`,kind:`shell-script`},id:`https://cursor.com/install?win32=true`,kind:`script`}}]}},{name:`deepcode`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@vegamo/deepcode-cli`,kind:`package`}}]}},{name:`devin`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`},id:`https://cli.devin.ai/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,kind:`shell-script`},id:`https://cli.devin.ai/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,kind:`shell-script`},id:`https://static.devin.ai/cli/setup.ps1`,kind:`script`}}]}},{name:`droid`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`},id:`https://app.factory.ai/cli`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://app.factory.ai/cli | sh`,kind:`shell-script`},id:`https://app.factory.ai/cli`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`droid`,kind:`cask`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`droid`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://app.factory.ai/cli/windows | iex`,kind:`shell-script`},id:`https://app.factory.ai/cli/windows`,kind:`script`}}]}},{name:`forgecode`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`},id:`https://forgecode.dev/cli`,kind:`script`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://forgecode.dev/cli | sh`,kind:`shell-script`},id:`https://forgecode.dev/cli`,kind:`script`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`forgecode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://forgecode.dev/cli | iex`,kind:`shell-script`},id:`https://forgecode.dev/cli`,kind:`script`}}]}},{name:`gemini`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`gemini-cli`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`gemini-cli`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@google/gemini-cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@google/gemini-cli`,kind:`package`}}]}},{name:`genie`,platforms:{linux:[{probes:[`executable-presence`],provider:`deno`,target:{arguments:[`-A`],id:`jsr:@nicorio/genie`,kind:`tool`}}],macos:[{probes:[`executable-presence`],provider:`deno`,target:{arguments:[`-A`],id:`jsr:@nicorio/genie`,kind:`tool`}}],windows:[{probes:[`executable-presence`],provider:`deno`,target:{arguments:[`-A`],id:`jsr:@nicorio/genie`,kind:`tool`}}]}},{name:`goose`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`},id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`},id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`block-goose-cli`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,kind:`shell-script`},id:`https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,kind:`shell-script`},id:`https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1`,kind:`script`}}]}},{name:`grok`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`},id:`https://x.ai/cli/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,kind:`shell-script`},id:`https://x.ai/cli/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://x.ai/cli/install.ps1 | iex`,kind:`shell-script`},id:`https://x.ai/cli/install.ps1`,kind:`script`}}]}},{name:`hermes`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`},id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,kind:`shell-script`},id:`https://hermes-agent.nousresearch.com/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,kind:`shell-script`},id:`https://hermes-agent.nousresearch.com/install.ps1`,kind:`script`}}]}},{name:`jcode`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`brew`,target:{id:`1jehuang/jcode/jcode`,kind:`formula`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex`,kind:`shell-script`},id:`https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1`,kind:`script`}}]}},{name:`junie`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`},id:`https://junie.jetbrains.com/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,kind:`shell-script`},id:`https://junie.jetbrains.com/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`jetbrains-junie/junie/junie`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`],provider:`script`,target:{effect:{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,kind:`shell-script`},id:`https://junie.jetbrains.com/install.ps1`,kind:`script`}}]}},{name:`kilo`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@kilocode/cli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@kilocode/cli`,kind:`package`}}]}},{name:`kimi`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`},id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,kind:`shell-script`},id:`https://code.kimi.com/kimi-code/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,kind:`shell-script`},id:`https://code.kimi.com/kimi-code/install.ps1`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@moonshot-ai/kimi-code`,kind:`package`}}]}},{name:`kiro`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`},id:`https://cli.kiro.dev/install`,kind:`script`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://cli.kiro.dev/install | bash`,kind:`shell-script`},id:`https://cli.kiro.dev/install`,kind:`script`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,kind:`shell-script`},id:`https://cli.kiro.dev/install.ps1`,kind:`script`}}]}},{name:`mimo`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`},id:`https://mimo.xiaomi.com/install`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,kind:`shell-script`},id:`https://mimo.xiaomi.com/install`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mimo-ai/cli`,kind:`package`}}]}},{name:`omp`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`},id:`https://omp.sh/install`,kind:`script`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://omp.sh/install | sh`,kind:`shell-script`},id:`https://omp.sh/install`,kind:`script`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@oh-my-pi/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://omp.sh/install.ps1 | iex`,kind:`shell-script`},id:`https://omp.sh/install.ps1`,kind:`script`}}]}},{name:`openclaw`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`},id:`https://openclaw.ai/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,kind:`shell-script`},id:`https://openclaw.ai/install.sh`,kind:`script`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`openclaw`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,kind:`shell-script`},id:`https://openclaw.ai/install.ps1`,kind:`script`}}]}},{name:`opencode`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`},id:`https://opencode.ai/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://opencode.ai/install | bash`,kind:`shell-script`},id:`https://opencode.ai/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`anomalyco/tap/opencode`,kind:`formula`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`opencode-ai`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`opencode-ai`,kind:`package`}}]}},{name:`openhands`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{arguments:[`--python`,`3.12`],id:`openhands`,kind:`tool`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`},id:`https://install.openhands.dev/install.sh`,kind:`script`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{arguments:[`--python`,`3.12`],id:`openhands`,kind:`tool`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,kind:`shell-script`},id:`https://install.openhands.dev/install.sh`,kind:`script`}}]}},{name:`pi`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@mariozechner/pi-coding-agent`,kind:`package`}}]}},{name:`qoder`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`},id:`https://qoder.com/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://qoder.com/install | bash`,kind:`shell-script`},id:`https://qoder.com/install`,kind:`script`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qoderai/qoder/qodercli`,kind:`cask`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qoder-ai/qodercli`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qoder-ai/qodercli`,kind:`package`}}]}},{name:`qwen`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`},id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qwen-code`,kind:`formula`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,kind:`shell-script`},id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`qwen-code`,kind:`formula`}}],windows:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`,kind:`shell-script`},id:`https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`bun`,target:{id:`@qwen-code/qwen-code`,kind:`package`}},{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`@qwen-code/qwen-code`,kind:`package`}}]}},{name:`reasonix`,platforms:{linux:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}],macos:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`,`target-version`],provider:`npm`,target:{id:`reasonix`,kind:`package`}}]}},{name:`vibe`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`},id:`https://mistral.ai/vibe/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`}},{probes:[`executable-presence`],provider:`pip`,target:{id:`mistral-vibe`,kind:`package`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,kind:`shell-script`},id:`https://mistral.ai/vibe/install.sh`,kind:`script`}},{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`}},{probes:[`executable-presence`],provider:`pip`,target:{id:`mistral-vibe`,kind:`package`}}],windows:[{probes:[`executable-presence`,`installed-version`,`package-presence`],provider:`uv`,target:{id:`mistral-vibe`,kind:`tool`}},{probes:[`executable-presence`],provider:`pip`,target:{id:`mistral-vibe`,kind:`package`}}]}},{name:`vtcode`,platforms:{linux:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`cargo`,target:{id:`vtcode`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}],macos:[{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`curl -fsSL https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh | bash`,kind:`shell-script`},id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.sh`,kind:`script`}},{probes:[`executable-presence`],provider:`cargo`,target:{id:`vtcode`,kind:`package`}},{probes:[`executable-presence`],provider:`brew`,target:{id:`vtcode`,kind:`formula`}}],windows:[{probes:[`executable-presence`],provider:`cargo`,target:{id:`vtcode`,kind:`package`}},{probes:[`executable-presence`],provider:`script`,target:{effect:{command:`irm https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1 | iex`,kind:`shell-script`},id:`https://raw.githubusercontent.com/vinhnx/vtcode/main/scripts/install.ps1`,kind:`script`}}]}}];export{e as coreMutationRecipeCatalog};
@@ -0,0 +1,5 @@
1
+ import{a as e,i as t,n,o as r,r as i}from"./child-process-DzIdysOm.mjs";import{r as a}from"./registry-vhJzh8dW.mjs";import{basename as o,dirname as s,isAbsolute as c,join as l,relative as u,resolve as d,sep as f}from"node:path";import p from"node:process";import{lstat as m,readFile as h,readlink as g,unlink as _}from"node:fs/promises";import{homedir as v}from"node:os";async function y(t,r,i){try{let n=await e(t,r,{detached:process.platform!==`win32`});return n===0?{kind:`success`,value:void 0}:{command:t,exitCode:n,kind:`failed`,reason:`${i} with exit code ${n}`,retryable:!1}}catch(e){return n(e)?e.kind===`timed-out`?{kind:`timed-out`,timeoutMs:e.timeoutMs??r.timeoutMs??0}:{kind:`cancelled`,...e.reason?{reason:e.reason}:{}}:{command:t,kind:`failed`,reason:`${i}: ${x(e)}`,retryable:!1}}}async function b(e,t,n){for(let r of e){let e=await y(r,t,n);if(e.kind!==`success`)return e}return{kind:`success`,value:void 0}}function x(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}async function S(e){let{createCliOperationContext:t}=await import(`./cli-operation-context-yd4c0OQH.mjs`),n=t();try{return(await e(n.context)).kind===`success`}finally{n.dispose()}}async function C(e,t,n){return S(r=>w(e,t,n,r))}function w(e,t,n,r){let i=t?`${e}@${t}`:e,o=a(n);return W([`bun`,`add`,`-g`,...o?[`--registry`,o]:[],i],[e],r)}function T(e,t,n,r,i){let o=n===`latest`?e:`${e}@${n}`,s=a(r);return W([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...s?[`--registry`,s]:[],o],[e],i)}function E(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):W([`bun`,`update`,`-g`,...t===`latest-major`?[`--latest`]:[],...e],e,n)}function D(e,t,n){return O(e,t,n)}async function O(e,t,n){let r=n?await ee(e,n,t):void 0,i=await y([`bun`,`remove`,`-g`,e],t,`bun uninstall failed`);return i.kind===`success`&&r&&await z(e,void 0,t).catch(()=>`unknown`)===`absent`&&await te(r),i}async function ee(e,t,n){if(!(p.platform===`win32`||!I(t)))try{let r=await k(n);if(!r)return;let i=p.env.BUN_INSTALL_GLOBAL_DIR??l(v(),`.bun`,`install`,`global`),a=A(i,e);if(!a)return;let o=M(await h(l(a,`package.json`),`utf8`));if(!o||!N(o,e,t))return;let c=l(r,t),u=await m(c);if(!u.isSymbolicLink())return;let f=await g(c),_=j(i,d(s(c),f));return!_||!P(o,e,_)?void 0:{device:u.dev,inode:u.ino,linkPath:c,linkTarget:f}}catch{return}}async function te(e){try{let t=await m(e.linkPath);if(!t.isSymbolicLink()||t.dev!==e.device||t.ino!==e.inode||await g(e.linkPath)!==e.linkTarget)return;await _(e.linkPath)}catch{}}async function k(e){try{let{exitCode:n,stdout:i}=await t(r([`bun`,`pm`,`bin`,`-g`],{detached:p.platform!==`win32`,stdio:X()}),e);if(n!==0)return;let a=i.trim().split(`
2
+ `)[0]?.trim();return a&&c(a)?a:void 0}catch{return}}function A(e,t){let n=t.split(`/`);if(!(!(t.startsWith(`@`)?n.length===2:n.length===1)||n.some(e=>!e||e===`.`||e===`..`)))return l(e,`node_modules`,...n)}function j(e,t){let n=u(l(e,`node_modules`),t);if(!n||c(n)||n.startsWith(`..${f}`))return;let r=n.split(f);return r[0]?.startsWith(`@`)?r[1]?`${r[0]}/${r[1]}`:void 0:r[0]}function M(e){let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?t:void 0}function N(e,t,n){return typeof e.bin==`string`?t.split(`/`).at(-1)===n:F(e.bin)&&typeof e.bin[n]==`string`}function P(e,t,n){return n===t?!0:[`dependencies`,`optionalDependencies`].some(t=>{let r=e[t];return F(r)&&Object.hasOwn(r,n)})}function F(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function I(e){return e.length>0&&e===o(e)&&e!==`.`&&e!==`..`}const L={readGlobalManifest:()=>h(l(p.env.BUN_INSTALL_GLOBAL_DIR??l(v(),`.bun`,`install`,`global`),`package.json`),`utf8`)};async function R(e,a=L,o){try{let n=r([`bun`,`pm`,`-g`,`ls`],{detached:o!==void 0&&p.platform!==`win32`,stdio:X()}),{stderr:s,stdout:c}=o?await t(n,o):await i(n);if(!c.trim()){if(s.includes(`No package.json was found for directory`))return{presence:`absent`};if(s.includes(`Lockfile not found`))try{return{presence:H(await a.readGlobalManifest(),e)}}catch{return{presence:`unknown`}}return{presence:`unknown`}}let l=U(c,e);return l?{presence:`present`,version:l}:V(c,e)?{presence:`present`}:{presence:`absent`}}catch(e){if(n(e))throw e;return{presence:`unknown`}}}async function z(e,t=L,n){return(await R(e,t,n)).presence}async function B(e,t){return(await R(e,L,t)).version}function V(e,t){let n=`${t}@`;return e.split(`
3
+ `).some(e=>e.trim().split(/\s+/).at(-1)?.startsWith(n))}function H(e,t){let n=JSON.parse(e);if(typeof n!=`object`||!n||Array.isArray(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(typeof r!=`object`||!r||Array.isArray(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}function U(e,t){let n=`${t}@`;for(let t of e.split(`
4
+ `)){let e=t.trim().split(/\s+/).at(-1);if(!e?.startsWith(n))continue;let r=e.slice(n.length);if(r)return r}}async function W(e,t,n){let r=[...new Set(t)],i=e[1]===`add`,a=i?await G(r,n):void 0,o=await y(e,n,`bun mutation failed`);if(o.kind!==`success`)return o;let s=await q(r,n);return s.kind!==`success`&&i&&a&&await K(r.filter(e=>a.get(e)===`absent`),n),s}async function G(e,t){let n=new Map;for(let r of e)n.set(r,await z(r,void 0,t));return n}async function K(e,t){for(let n of new Set(e))await y([`bun`,`remove`,`-g`,n],t,`bun rollback failed`).catch(()=>void 0)}async function q(e,t){let n=[...new Set(e)];if(n.length===0)return{kind:`success`,value:void 0};let r=await J(t);if(r.kind!==`success`)return r;let i=Y(r.value),a=n.filter(e=>i.has(e));return a.length===0?{kind:`success`,value:void 0}:y([`bun`,`pm`,`-g`,`trust`,...a],t,`bun trust failed`)}async function J(e){let i=[`bun`,`pm`,`-g`,`untrusted`];try{let{exitCode:n,stdout:a}=await t(r(i,{detached:p.platform!==`win32`,stdio:X()}),e);return n===0?{kind:`success`,value:a}:{command:i,exitCode:n,kind:`failed`,reason:`bun trust inspection failed with exit code ${n}`,retryable:!1}}catch(t){return n(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:t.timeoutMs??e.timeoutMs??0}:{kind:`cancelled`,...t.reason?{reason:t.reason}:{}}:{command:i,kind:`failed`,reason:t instanceof Error&&t.message.trim()?t.message:`bun trust inspection failed`,retryable:!1}}}function Y(e){let t=new Set;for(let n of e.split(`
5
+ `)){let e=n.replaceAll(`\\`,`/`).match(/^\.\/node_modules\/(.+?) @/);e?.[1]&&t.add(e[1])}return t}function X(){return[`ignore`,`pipe`,`pipe`]}async function Z(e,t,n){return S(r=>Q(e,t,n,r))}function Q(e,t,n,r){let i=t?`${e}@${t}`:e,o=a(n);return y([`npm`,`install`,`-g`,i,...o?[`--registry`,o]:[]],r,`npm install failed`)}function ne(e,t,n,r,i){let o=a(r);return y(t===`latest-major`?[`npm`,`install`,`-g`,`${e}@${n}`,...o?[`--registry`,o]:[]]:[`npm`,`update`,`-g`,e,...o?[`--registry`,o]:[]],i,`npm update failed`)}function re(e,t,n){return e.length===0?Promise.resolve({kind:`success`,value:void 0}):y(t===`latest-major`?[`npm`,`install`,`-g`,...e.map(e=>`${e}@latest`)]:[`npm`,`update`,`-g`,...e],n,`npm batch update failed`)}function ie(e,t){return y([`npm`,`uninstall`,`-g`,e],t,`npm uninstall failed`)}async function $(e,a){try{let n=r([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],{detached:a!==void 0&&process.platform!==`win32`,stdio:[`ignore`,`pipe`,`ignore`]}),{stdout:o}=a?await t(n,a):await i(n);if(!o.trim())return{presence:`unknown`};try{let t=JSON.parse(o);if(!t||typeof t!=`object`||Array.isArray(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};if(t.dependencies&&Object.hasOwn(t.dependencies,e)){let t=se(o,e);return t?{presence:`present`,version:t}:{presence:`present`}}return{presence:`absent`}}catch{return{presence:`unknown`}}}catch(e){if(n(e))throw e;return{presence:`unknown`}}}async function ae(e,t){return(await $(e,t)).presence}async function oe(e,t){return(await $(e,t)).version}function se(e,t){let n=JSON.parse(e).dependencies?.[t]?.version;return typeof n==`string`?n:void 0}export{b as _,ie as a,B as c,Y as d,z as f,y as g,T as h,ae as i,C as l,E as m,Z as n,re as o,D as p,Q as r,ne as s,oe as t,w as u};