quantex-cli 1.12.0 → 1.13.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.
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/{agent-inspection-2y2K-DCH.mjs → agent-inspection-FouaG2Iz.mjs} +1 -1
- package/dist/{agent-observation-CmB6ofFL.mjs → agent-observation-CcBKTAZT.mjs} +1 -1
- package/dist/{agents-CESJI54l.mjs → agents-Dd4G-47n.mjs} +1 -1
- package/dist/{agents-iJvqIhMa.mjs → agents-DqDXuTf0.mjs} +1 -1
- package/dist/capabilities-OcvdqVp1.mjs +1 -0
- package/dist/{capabilities-DIRMPhTg.mjs → capabilities-YTL8Nroj.mjs} +1 -1
- package/dist/{cli-read-projection-Cj1sCG7X.mjs → cli-read-projection-DOFWDJDZ.mjs} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/commands-BFpfOP6I.mjs +1 -0
- package/dist/{commands-BQuwJ1s0.mjs → commands-D6ixcs0U.mjs} +1 -1
- package/dist/{config-CW3EEuhm.mjs → config-DUeu2PRE.mjs} +1 -1
- package/dist/{core-installation-cli-B-UNzCXn.mjs → core-installation-cli-BF2QdfHE.mjs} +1 -1
- package/dist/{doctor-CFLfa3z8.mjs → doctor-DXpczWOV.mjs} +1 -1
- package/dist/ensure-CPWDOyF2.mjs +1 -0
- package/dist/ensure-RiH3rJ1Q.mjs +1 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-DP2wtQYw.mjs → info-DXcPuaGM.mjs} +1 -1
- package/dist/inspect-BBNpi7tS.mjs +1 -0
- package/dist/{inspect-OQUNwZEP.mjs → inspect-DZMJfYDG.mjs} +1 -1
- package/dist/install-DmKhdgRw.mjs +1 -0
- package/dist/installation-compatibility-X6JPRI5_.mjs +1 -0
- package/dist/{installation-compatibility-BBIt-_Gy.mjs → installation-compatibility-vSytV42c.mjs} +1 -1
- package/dist/installation-executor-4u0aboZw.mjs +1 -0
- package/dist/{installation-production-Dy8XTuRy.mjs → installation-production-DxkcDNwa.mjs} +1 -1
- package/dist/installation-routing-B16E-ssd.mjs +1 -0
- package/dist/installation-routing-CuPHXckO.mjs +1 -0
- package/dist/{lifecycle-observations-DIBfXLT1.mjs → lifecycle-observations-orGecdi1.mjs} +1 -1
- package/dist/{lifecycle-policy-0Wodv3-H.mjs → lifecycle-policy-jVfC5DFa.mjs} +1 -1
- package/dist/{list-aak6ch3E.mjs → list-BPx1_Y-v.mjs} +1 -1
- package/dist/{output-CLgmLN2q.mjs → output-CbB-lipw.mjs} +2 -2
- package/dist/{package-manager-uPteT1B0.mjs → package-manager-6SgDzwkw.mjs} +1 -1
- package/dist/{production-observation-CLYtqs1E.mjs → production-observation-v7S1oqsN.mjs} +1 -1
- package/dist/{provider-evidence-AfeylhA4.mjs → provider-evidence-DxydUqAR.mjs} +1 -1
- package/dist/{provider-observations-CY8vphIo.mjs → provider-observations-DzRKCxpH.mjs} +1 -1
- package/dist/{providers-CjFAR4Vt.mjs → providers-DUaztLRJ.mjs} +1 -1
- package/dist/resolve-BhL4HG0c.mjs +1 -0
- package/dist/{resolve-BihHZ39p.mjs → resolve-iQLTTM2u.mjs} +1 -1
- package/dist/schema-C5Ka2AH1.mjs +1 -0
- package/dist/{schema-rHlg-voJ.mjs → schema-C7Q6DeFc.mjs} +1 -1
- package/dist/{uninstall-USu8oluL.mjs → uninstall-wNejJx5C.mjs} +1 -1
- package/dist/{unmanaged-install-compatibility-KGtKiyzS.mjs → unmanaged-install-compatibility-cMT5elJV.mjs} +1 -1
- package/dist/{update-aRYrYbRj.mjs → update-DC18mjYw.mjs} +1 -1
- package/dist/{upgrade-CI-MZFjs.mjs → upgrade-CZHbCBUm.mjs} +1 -1
- package/package.json +1 -1
- package/dist/capabilities-CMnop3RC.mjs +0 -1
- package/dist/commands-BPpo5qw8.mjs +0 -1
- package/dist/ensure-BfY3mjy5.mjs +0 -1
- package/dist/ensure-CsRGwJHS.mjs +0 -1
- package/dist/inspect-DVgAp7qL.mjs +0 -1
- package/dist/install-D5IP8S3z.mjs +0 -1
- package/dist/installation-compatibility-CBA7XDvH.mjs +0 -1
- package/dist/installation-executor-BS0GowyT.mjs +0 -1
- package/dist/installation-routing-BhB6puwg.mjs +0 -1
- package/dist/installation-routing-D_8D3v0X.mjs +0 -1
- package/dist/resolve-Cf5ZZLZM.mjs +0 -1
- package/dist/schema-DxgWH0za.mjs +0 -1
- /package/dist/{provider-binding-DB7IXxJp.mjs → provider-binding-DW-oviNl.mjs} +0 -0
- /package/dist/{update-planner-Cr9XVW1l.mjs → update-planner-Bnlt3KKP.mjs} +0 -0
- /package/dist/{user-output-c8fjdhfk.mjs → user-output-CF4UAX0c.mjs} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{W as e,i as t,n,q as r}from"./output-
|
|
1
|
+
import{W as e,i as t,n,q as r}from"./output-CbB-lipw.mjs";import{i,r as a,t as o}from"./human-BbO37wBs.mjs";import{t as s}from"./color-CLDVRyIs.mjs";async function c(){return t(n({action:`commands`,data:{commands:e().map(r)},target:{kind:`system`,name:`commands`}}),l)}function l(e){if(!e.data)return;let t=o();console.log(s.bold(`
|
|
2
2
|
Quantex Commands
|
|
3
3
|
`));for(let n of a(e.data.commands,[{header:`Command`,maxWidth:24,minWidth:8,value:e=>s.cyan(e.name)},{header:`Summary`,minWidth:16,value:e=>e.summary,wrap:!0}],{headerStyle:s.bold,width:t}))console.log(n);console.log();for(let e of i(s.dim(`Contracts: qtx commands --json · Schemas: qtx schema <command>`),{indent:` `,width:t}))console.log(e);console.log()}export{c as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./registry-vhJzh8dW.mjs";import{a as t,i as n,o as r,r as i,s as a}from"./config-jsaRCEWF.mjs";import{i as o,n as s,t as c}from"./output-
|
|
1
|
+
import{r as e}from"./registry-vhJzh8dW.mjs";import{a as t,i as n,o as r,r as i,s as a}from"./config-jsaRCEWF.mjs";import{i as o,n as s,t as c}from"./output-CbB-lipw.mjs";import{t as l}from"./color-CLDVRyIs.mjs";async function u(l,u,f){if(!l)return o(s({action:`config`,data:{action:`list`,config:await t()},target:{kind:`config`}}),d);switch(l){case`get`:{if(!u)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await t())[u];return o(s({action:`config`,data:{action:`get`,key:u,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!i(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, mise, or uv`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!n(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!e(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let a={};try{a=await t()}catch{}return a[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?e(f):f,await r(a),o(s({action:`config`,data:{action:`set`,key:u,value:a[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await r(a),o(s({action:`config`,data:{action:`reset`,config:a},target:{kind:`config`}}),d);default:return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:l},message:`Unknown action: ${l}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(l.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(l.bold(`
|
|
2
2
|
Current Configuration:
|
|
3
3
|
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?l.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(l.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(l.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./schema-BBnWVY6R.mjs";import{i as n,n as r}from"./cli-context-DI43ouBg.mjs";import{b as i,n as a,r as o,t as s,w as c}from"./output-
|
|
1
|
+
import{a as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./schema-BBnWVY6R.mjs";import{i as n,n as r}from"./cli-context-DI43ouBg.mjs";import{b as i,n as a,r as o,t as s,w as c}from"./output-CbB-lipw.mjs";import{l}from"./providers-DUaztLRJ.mjs";import{n as u}from"./cli-operation-context-CzjG_eom.mjs";import{t as d}from"./package-manager-6SgDzwkw.mjs";import{n as f}from"./agents-Dd4G-47n.mjs";import{r as p}from"./provider-binding-DW-oviNl.mjs";import{n as m,t as h}from"./lifecycle-errors-Elpn7QSu.mjs";import{i as g,n as _,r as v,t as y}from"./installation-failure-diagnostics-DjaKNCw3.mjs";import b from"node:process";function x(e,t={}){let i=r(),a=new AbortController,o=new Set,s=t.loadExecutor??B,c=!1,l,u=()=>(l??=s(),l);i.cancelled&&a.abort(`cancelled`);let d=n(async()=>{a.abort(`cancelled`),await Promise.allSettled(o)});return{dispose(){c||(c=!0,d())},async execute(t,n={}){if(c)return M(e,t);if(a.signal.aborted)return j(e,t);let r=S(u,e,t,a.signal,n.emitStartedEvent??!1);o.add(r);try{return await r}finally{o.delete(r)}}}}async function S(e,t,n,i,a){try{let o=await e(),s=r(),c={mode:s.dryRun?`preview`:`apply`,name:n,onMutationStart:a?e=>z(t,e.before.agent):void 0,operation:t,outputPolicy:u(s.outputMode),providerTimeoutMs:s.timeoutMs,resolveAdoption:w,signal:i};return C(t,n,await o.execute(c))}catch(e){return V(t,e),P(t,n,e)}}function C(e,t,n){if(n.kind===`failure`)return n.error.code===`cancelled`?j(e,t):n.error.code===`timed-out`?N(e,t):M(e,t);let r=n.value;return r.kind===`agent-not-found`?s({action:e,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}}):r.kind===`failed`?E(e,t,r.error):T(e,r.value)}async function w(e){let t=l([...e.methods],e.resolvedBinaryPath??e.pathExecutable.path);if(!t)return;let n=p(e.agent,t);if(n)return{binding:n,installedState:d(e.agent,t)}}function T(e,t){let n=t.before.agent;if(t.decision===`already-satisfied`)return D(e,n);if(t.decision===`external-preserved`)return t.compatibility?t.kind===`preview`?k(e,n,`adopt`):A(e,n,t):O(e,n);if(t.kind===`preview`)return k(e,n,t.decision===`reinstall`?`reinstall`:`install`);let r=t.after.installedState;return r?a({action:e,data:F(n,!0,!0,r),target:{kind:`agent`,name:n.name}}):s({action:e,data:F(n,!1,!1),error:R(e,n),target:{kind:`agent`,name:n.name}})}function E(e,t,n){let r=K(n.cause,W);if(r)return s({action:e,...h(r,{kind:`agent`,name:t})});let i=n.sideEffect===`none`?K(n.cause,U):void 0;if(i)return s({action:e,...m(i,c(),{kind:`agent`,name:t})});let a=f(t),o=n.code===`compensation-failed`?n.originCode??n.code:n.code,l=a?.displayName??t,u={reason:n.reason,...n.remediation?{remediation:n.remediation}:{}},d=o===`recording-failed`?{code:`INSTALL_FAILED`,details:v(u,`state-write-failed`),message:`Failed to record verified state for ${l}.`}:o===`verification-failed`?R(e,a??L(t),u):o===`decision-conflict`||o===`decision-indeterminate`?{code:`INSTALL_FAILED`,details:v(u,`decision-indeterminate`),message:_(`Quantex could not determine the installed state of ${l}.`,n.reason)}:{code:`INSTALL_FAILED`,details:v(u,g(n.reason)?y:void 0),message:_(`Failed to install ${l}.`,n.reason)};return s({action:e,data:a?F(a,!1,!1):I(t),error:d,target:{kind:`agent`,name:a?.name??t}})}function D(e,t){return a({action:e,data:F(t,!1,!0),target:{kind:`agent`,name:t.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${t.displayName} is already installed.`}]})}function O(e,t){return a({action:e,data:F(t,!1,!0),target:{kind:`agent`,name:t.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${t.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 k(e,t,n){return a({action:e,data:F(t,!1,n===`adopt`),target:{kind:`agent`,name:t.name},warnings:[{code:`DRY_RUN`,message:n===`adopt`?`Dry run: would record the existing ${t.displayName} install in Quantex state.`:n===`reinstall`?`Dry run: would reinstall ${t.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${t.displayName}.`}]})}function A(e,t,n){let r=n.after.installedState;return r?a({action:e,data:F(t,n.changed,!0,r),target:{kind:`agent`,name:t.name},warnings:[{code:`TRACKED_EXISTING_INSTALL`,message:`${t.displayName} is already installed. Quantex is now tracking the existing install.`}]}):s({action:e,data:F(t,!1,!0),error:R(e,t),target:{kind:`agent`,name:t.name}})}function j(e,t){return s({action:e,data:I(t),error:{code:`CANCELLED`,message:`${e===`ensure`?`Ensure`:`Install`} was cancelled before tracking could complete.`},target:{kind:`agent`,name:t}})}function M(e,t){return s({action:e,data:I(t),error:{code:`INSTALL_FAILED`,message:`Failed to initialize the ${e} lifecycle engine.`},target:{kind:`agent`,name:t}})}function N(e,t){let n=f(t);return s({action:e,data:n?F(n,!1,!1):I(t),error:{code:`INSTALL_FAILED`,message:`Failed to install ${n?.displayName??t}.`},target:{kind:`agent`,name:n?.name??t}})}function P(e,t,n){let r=K(n,W);if(r)return s({action:e,...h(r,{kind:`agent`,name:t})});let i=K(n,U);return i?s({action:e,...m(i,c(),{kind:`agent`,name:t})}):M(e,t)}function F(e,t,n,r){return{agent:{displayName:e.displayName,name:e.name},changed:t,...r?{installState:{installType:r.installType,...r.packageName===void 0?{}:{packageName:r.packageName}}}:{},installed:n}}function I(e){return F(f(e)??L(e),!1,!1)}function L(e){return{displayName:e,name:e}}function R(e,t,n={}){return{code:`INSTALL_FAILED`,details:v(n,`verification-failed`),message:e===`ensure`?`${t.displayName} could not be verified after ensure completed.`:`${t.displayName} could not be verified after installation.`}}function z(e,t){o({action:e,data:{agent:{displayName:t.displayName,name:t.name}},target:{kind:`agent`,name:t.name},type:`started`})}async function B(){return(await import(`./installation-compatibility-X6JPRI5_.mjs`)).createCoreInstallationCompatibilityExecutor()}function V(e,t){r().logLevel===`debug`&&b.stderr.write(`[quantex:debug] ${e} core engine failure: ${H(t)}\n`)}function H(e){return e instanceof Error&&e.message.trim()?e.message:`unknown failure`}function U(e){if(e instanceof i)return e;if(e instanceof t)return new i(`Failed to read Quantex state file: ${e.message}`,{cause:e});if(G(e))return new i(`Failed to read Quantex state file.`,{cause:e})}function W(t){return e(t)?t:void 0}function G(e){return!!(e&&typeof e==`object`&&`path`in e&&String(e.path)===c())}function K(e,t){let n=new Set,r=[e];for(;r.length>0;){let e=r.shift();if(e==null||n.has(e))continue;n.add(e);let i=t(e);if(i)return i;e instanceof AggregateError&&r.push(...e.errors),typeof e==`object`&&`cause`in e&&r.push(e.cause)}}export{x as createCoreInstallationCliSession};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as e}from"./schema-BBnWVY6R.mjs";import{U as t,i as n,n as r,s as i,u as a}from"./output-
|
|
1
|
+
import{s as e}from"./schema-BBnWVY6R.mjs";import{U as t,i as n,n as r,s as i,u as a}from"./output-CbB-lipw.mjs";import{i as o,n as s,r as c,t as l}from"./human-BbO37wBs.mjs";import{t as u}from"./cli-operation-context-CzjG_eom.mjs";import{n as d,t as f}from"./provider-observations-DzRKCxpH.mjs";import{t as p}from"./color-CLDVRyIs.mjs";import{n as m,t as h}from"./agent-inspection-FouaG2Iz.mjs";function g(e){let{installers:t,self:n}=e,{brew:r,bun:i,cargo:a,deno:o,mise:s,npm:c,pip:l,uv:u,winget:d}=t,f=n.latestVersion?v(n.latestVersion,n.currentVersion):!1,p=e.agents.filter(e=>e.inPath).map(e=>({displayName:e.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:_(e),sourceLabel:e.sourceLabel})),m=[];if(!i&&!c&&!r&&!a&&!o&&!s&&!l&&!u&&!d&&m.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:e.docs.troubleshooting,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(n.installSource===`bun`&&!i||n.installSource===`npm`&&!c)&&m.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI is tracked as a ${n.installSource} install, but ${n.installSource} is not available in PATH. Reinstall that package manager or reinstall Quantex from a supported source.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`restore-self-installer`,suggestedCommands:y(n.installSource,n.updateChannel,n.packageName)}),n.canAutoUpdate||m.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI cannot auto-update from install source "${n.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),f&&n.recommendedUpgradeCommand){let t=n.recoveryHint;m.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:e.docs.selfUpgrade,message:t?`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand} or follow: ${t}`:`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[n.recommendedUpgradeCommand]})}for(let t of e.agents.filter(e=>e.inPath)){if(t.untracked&&m.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:e.docs.troubleshooting,message:`${t.displayName} is detected on disk but not tracked as a managed Quantex install. Use \`quantex inspect ${t.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${t.name} --json`,`quantex install ${t.name}`]}),!_(t)||t.lifecycle===`managed`)continue;let n=t.selfUpdateCommand!==void 0,r=n?`Try running ${t.selfUpdateCommand} directly.`:`Check ${t.homepage} for the recommended update path.`;m.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:e.docs.troubleshooting,message:`${t.displayName} ${t.installedVersion} is behind ${t.latestVersion}, but the current source is ${t.sourceLabel}. ${r}`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:n?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n&&t.selfUpdateCommand?[t.selfUpdateCommand]:[]})}return{agents:p,issues:m,installers:t,self:{canAutoUpdate:n.canAutoUpdate,currentVersion:n.currentVersion,installSource:n.installSource,latestVersion:n.latestVersion,outdated:!!f,recoveryHint:f?n.recoveryHint:void 0}}}function _(e){return!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion)}function v(t,n){return e(t,n)===1}function y(e,t,n){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}async function b(){let e=u(),n,r,o;try{[n,r,o]=await e.run(()=>Promise.all([f({context:e.context}),i({context:e.context}),m(e.context)]))}finally{e.dispose()}let s=d(n,e=>e.availability.kind===`success`);return g({agents:o.map(e=>{let t=h(e);return{displayName:t.agent.displayName,homepage:t.agent.homepage,inPath:t.inPath,installedVersion:t.installedVersion,latestVersion:t.latestVersion,lifecycle:t.lifecycle,name:t.agent.name,selfUpdateCommand:t.agent.selfUpdate?t.agent.selfUpdate.command.join(` `):void 0,sourceLabel:t.sourceLabel,untracked:e.observation.drift.kind===`untracked`}}),docs:{selfUpgrade:`docs/runbooks/release-and-self-upgrade-debugging.md`,troubleshooting:`docs/runbooks/quantex-troubleshooting.md`},installers:s,self:{canAutoUpdate:r.canAutoUpdate,currentVersion:r.currentVersion,installSource:r.installSource,latestVersion:r.latestVersion,packageName:t,recommendedUpgradeCommand:r.recommendedUpgradeCommand,recoveryHint:a(r),updateChannel:r.updateChannel}})}async function x(){return n(r({action:`doctor`,data:await b(),target:{kind:`system`,name:`doctor`}}),S)}function S(e){if(!e.data)return;let t=l();console.log(p.bold(`
|
|
2
2
|
Quantex CLI Environment Check
|
|
3
3
|
`));let n=Object.entries(e.data.installers).map(([e,t])=>({available:t,name:e}));console.log(p.bold(`Managed Installers
|
|
4
4
|
`));for(let e of c(n,[{header:`Installer`,value:e=>e.name},{header:`Status`,value:e=>e.available?p.green(`available`):p.red(`not found`)}],{headerStyle:p.bold,width:t}))console.log(e);let r=[{label:`Version`,value:e.data.self.currentVersion},{label:`Source`,value:e.data.self.installSource},{label:`Auto-update`,value:e.data.self.canAutoUpdate?p.green(`supported`):p.yellow(`unsupported`)},...e.data.self.latestVersion?[{label:`Latest`,value:`${e.data.self.latestVersion}${e.data.self.outdated?p.yellow(` (update available)`):``}`}]:[],...e.data.self.recoveryHint?[{label:`Recovery`,value:e.data.self.recoveryHint}]:[]];console.log(`\n${p.bold(`Quantex CLI`)}\n`);for(let e of s(r,{labelStyle:p.bold,width:t}))console.log(e);if(console.log(`\n${p.bold(`Installed Agents`)}\n`),e.data.agents.length===0)console.log(p.dim(` No agents installed`));else for(let n of c(e.data.agents,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Version`,maxWidth:24,value:e=>e.outdated&&e.latestVersion?p.yellow(`${e.installedVersion??`unknown`} → ${e.latestVersion}`):e.installedVersion??`unknown`},{header:`Lifecycle`,optional:!0,priority:2,value:e=>e.lifecycle},{header:`Source`,optional:!0,priority:1,value:e=>p.dim(e.sourceLabel)}],{headerStyle:p.bold,width:t}))console.log(n);if(console.log(`\n${p.bold(`Issues`)}\n`),e.data.issues.length===0)console.log(p.green(` No issues found.`));else for(let n of e.data.issues){for(let e of o(p.yellow(n.message),{continuationIndent:` `,indent:` - `,width:t}))console.log(e);if(n.suggestedCommands.length>0)for(let e of o(p.dim(`Next: ${n.suggestedCommands.join(` | `)}`),{indent:` `,width:t}))console.log(e)}console.log()}export{x as doctorCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,n as t}from"./output-CbB-lipw.mjs";import{t as n}from"./color-CLDVRyIs.mjs";import{a as r,i,r as a}from"./user-output-CF4UAX0c.mjs";import{n as o,r as s}from"./installation-routing-CuPHXckO.mjs";import{t as c}from"./unmanaged-install-compatibility-cMT5elJV.mjs";async function l(e){return await u(e,s(`ensure`))}async function u(t,n){o(`ensure`,n);let r=await c(t);if(r)return e(d(r),f);let{createCoreInstallationCliSession:i}=await import(`./core-installation-cli-BF2QdfHE.mjs`),a=i(`ensure`);try{return e(await a.execute(t,{emitStartedEvent:!0}),f)}finally{a.dispose()}}function d(e){return t({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function f(e){if(e.error){a(n.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){i(n.green(t.message));continue}if(t.code===`DRY_RUN`){r(n.cyan(t.message));continue}r(n.yellow(t.message))}return}if(e.data.changed){i(n.cyan(`Installing ${e.data.agent.displayName}...`)),i(n.green(`${e.data.agent.displayName} is now installed.`));return}i(n.green(`${e.data.agent.displayName} is already installed.`))}}export{u as n,l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./ensure-CPWDOyF2.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t}from"./messages-D6r2o7w-.mjs";import{c as n,i as r,n as i,o as a,t as o}from"./detect-Dou6fit1.mjs";import{A as s,C as c,D as l,E as ee,F as te,I as ne,L as re,M as ie,O as ae,S as oe,T as se,_ as ce,a as le,b as ue,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"./agents-
|
|
1
|
+
import{n as e,r as t}from"./messages-D6r2o7w-.mjs";import{c as n,i as r,n as i,o as a,t as o}from"./detect-Dou6fit1.mjs";import{A as s,C as c,D as l,E as ee,F as te,I as ne,L as re,M as ie,O as ae,S as oe,T as se,_ as ce,a as le,b as ue,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"./agents-DqDXuTf0.mjs";import{a as j,n as M,o as N,s as P}from"./cli-context-DI43ouBg.mjs";import{a as F,n as I,o as L,t as R}from"./config-jsaRCEWF.mjs";import{A as z,B,C as V,D as H,E as U,F as de,H as fe,I as pe,L as me,M as he,N as ge,P as _e,R as ve,V as ye,X as be,Y as xe,Z as Se,_ as Ce,a as we,c as Te,g as Ee,h as De,i as Oe,k as ke,l as Ae,n as je,o as Me,t as Ne,u as Pe,w as Fe,x as Ie,z as Le}from"./output-CbB-lipw.mjs";import{_ as Re,d as ze,g as Be,h as Ve,i as W,m as He,n as Ue,p as We,r as Ge,t as Ke,v as G,y as qe}from"./providers-DUaztLRJ.mjs";import{t as Je}from"./capabilities-YTL8Nroj.mjs";import{t as Ye}from"./commands-D6ixcs0U.mjs";import{a as Xe,c as Ze,d as Qe,f as $e,i as et,r as tt,s as nt,u as rt}from"./package-manager-6SgDzwkw.mjs";import{a as it,i as K,n as at,r as ot,t as q}from"./agents-Dd4G-47n.mjs";import{t as st}from"./update-planner-Bnlt3KKP.mjs";import{t as ct}from"./ensure-CPWDOyF2.mjs";import{t as lt}from"./inspect-DZMJfYDG.mjs";import{t as ut}from"./resolve-iQLTTM2u.mjs";import{n as dt,t as ft}from"./schema-C7Q6DeFc.mjs";import{n as pt,r as mt}from"./errors-CISYuFuT.mjs";function J(e,t={}){let n=G(),r=n.reduce((e,t)=>(e[t]=[],e),{}),i=[],a=[],o=[],s=[];for(let n of e){if(!n.inPath)continue;if(t.skipUntrackedInPath&&!n.installedState){o.push(n);continue}let e=X(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=W({agent:n.agent,installedState:n.installedState,methods:n.methods}),l=c.strategy===`managed`?c.getManagedInstallerType?.({agent:n.agent,installedState:n.installedState,methods:n.methods}):void 0;if(l){let e={inspection:n,installerType:l,strategy:`grouped`};r[l].push(e);continue}i.push({inspection:n,strategy:c.strategy===`self-update`?`self-update`:`manual`})}return{entries:[...n.flatMap(e=>r[e]),...i],grouped:r,manual:i,skippedManualCheck:a,untrackedInPath:o,upToDate:s}}function Y(e){return X(e)===`upgrade`}function X(e){return st({intent:{kind:`update`,targetId:`compatibility-update`,targetVersion:e.latestVersion},observation:{drift:{kind:`none`},kind:`present`,providerId:`compatibility`,providerTargetId:`compatibility-update`,providerTargetKind:`package`,targetId:`compatibility-update`,version:e.installedVersion},provider:{capabilities:[`observe`,`update`,`verify`],providerId:`compatibility`,targetId:`compatibility-update`,targetKind:`package`}}).decision}async function Z(e){let t=await K(e);return{agent:e,inspection:t,updateAvailable:Y(t)}}async function ht(){return gt(await q(),{skipUntrackedInPath:!0})}function gt(e,t={}){let n=J(e,t),r=[],i=G().map(e=>_t(e,n.grouped[e],r)).filter(e=>e!==void 0);return{entries:n.entries.map(e=>$(e.inspection)),grouped:i,manual:[...r,...n.manual.map(e=>$(e.inspection))],skippedManualCheck:n.skippedManualCheck,untrackedInPath:n.untrackedInPath,upToDate:n.upToDate}}function _t(e,t,n){if(t.length===0)return;let r=t.map(e=>$(e.inspection)),i=r.filter(Q);if(n.push(...r.filter(e=>!Q(e))),i.length!==0)return{type:e,packages:i.map(e=>e.package),updates:i}}function Q(e){return!!e.package?.packageName}function $(e){let t=W({agent:e.agent,installedState:e.installedState,methods:e.methods}),n=t.getManagedInstallerType?.({agent:e.agent,installedState:e.installedState,methods:e.methods});return{agent:e.agent,inspection:e,installerType:n,package:n?vt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function vt(e,t,n,r){if(t?.packageName&&t.installType===r)return{packageName:t.packageName,binaryName:r===`deno`?t.binaryName:void 0,packageInstallArgs:t.packageInstallArgs,packageTargetKind:t.packageTargetKind};let i=n.find(e=>e.type===r);if(!i)return;let a=ze(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function yt(e,t){try{let n=await $e(Qe([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{te as agentCatalogEntrySchema,ne as agentCatalogJsonSchema,re as agentCatalogSchema,Ke as agentUpdateProviders,u as autohand,De as canAutoUpdateSelf,We as canLookupLatestVersionForInstallType,Ue as canResolveAgentUpdate,He as canUninstallInstallType,Ve as canUpdateInstallType,Je as capabilitiesCommand,v as claude,E as codebuddy,d as codewhale,f as codex,Ye as commandsCommand,S as copilot,Ne as createErrorResult,pe as createReleaseManifest,je as createSuccessResult,J as createUpdatePlan,y as cursor,h as deepcode,Ee as detectSelfInstallSource,m as devin,p as droid,Oe as emitCommandResult,ct as ensureCommand,yt as execCommand,me as formatChecksums,ce as gemini,le as genie,T as getAgentByLookupName,b as getAgentByNameOrAlias,e as getAgentUpdateFailureHint,Ge as getAgentUpdateStrategy,C as getAllAgents,xe as getBinaryPath,_e as getBinaryReleaseAssetName,de as getBinaryReleaseDownloadUrl,g as getCatalogAgent,ie as getCatalogAgents,M as getCliContext,R as getConfigDir,I as getConfigFilePath,pt as getExitCodeForError,mt as getExitCodeForResult,Be as getInstallLifecycle,Ie as getInstalledAgentState,be as getInstalledVersion,Re as getInstallerCapabilities,Se as getLatestVersion,rt as getManagedInstaller,t as getManualAgentUpdateMessage,we as getManualSelfUpgradeCommand,tt as getOrderedInstallMethods,o as getPlatform,ft as getSchemaCatalog,V as getSelfState,Ae as getSelfUpgradeRecoveryHint,Pe as getSelfUpgradeRecoveryHintForInspection,Ce as getSelfVersion,Z as getSingleAgentUpdateStatus,Fe as getStateFilePath,D as grok,A as hermes,K as inspectAgent,it as inspectAllAgents,lt as inspectCommand,q as inspectRegisteredAgents,Me as inspectSelf,et as installAgent,i as isBinaryInPath,r as isBunAvailable,a as isDenoAvailable,Y as isInspectionUpdateAvailable,qe as isManagedInstallType,n as isNpmAvailable,x as jcode,ue as junie,k as kilo,F as loadConfig,U as loadState,oe as mimo,ve as normalizeRepositoryUrl,c as omp,O as openclaw,se as opencode,ee as openhands,Le as parseBinaryTarget,B as parseChecksums,l as pi,ht as planAgentUpdates,ae as qoder,_ as reasonix,H as removeInstalledAgentState,j as resetCliContext,at as resolveAgent,ot as resolveAgentInspection,W as resolveAgentUpdateProvider,N as resolveCliContext,ut as resolveCommand,ye as resolveReleaseChannel,L as saveConfig,ke as saveState,dt as schemaCommand,P as setCliContext,z as setInstalledAgentState,he as setSelfInstallSource,ge as setSelfUpdateNoticeState,Xe as uninstallAgent,nt as updateAgent,Ze as updateAgentsByType,Te as upgradeSelf,fe as validateReleaseManifest,s as vibe,w as vtcode};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e,n as t,t as n}from"./output-
|
|
1
|
+
import{i as e,n as t,t as n}from"./output-CbB-lipw.mjs";import{n as r,r as i,t as a}from"./human-BbO37wBs.mjs";import{t as o}from"./color-CLDVRyIs.mjs";import{r as s}from"./agent-inspection-FouaG2Iz.mjs";import{t as c}from"./cli-read-projection-DOFWDJDZ.mjs";async function l(r){let i=await s(r);if(!i)return e(n({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),u);let{agent:a,summary:o}=c(i);return e(t({action:`info`,data:{agent:o.agent,inspection:{binaryPath:o.inspection.binaryPath,installed:o.inspection.installed,installedVersion:o.inspection.installedVersion,latestVersion:o.inspection.latestVersion,lifecycle:o.inspection.lifecycle,sourceLabel:o.inspection.sourceLabel}},target:{kind:`agent`,name:a.name}}),u)}function u(e){if(e.error){console.log(o.red(e.error.message));return}if(!e.data)return;let t=a();console.log(o.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Aliases`,value:e.data.agent.aliases.join(`, `)||`—`},{label:`Package`,value:e.data.agent.packageName??`—`},{label:`Binary`,value:e.data.agent.binaryName},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},{label:`Installed`,value:e.data.inspection.installed?o.green(`yes`):o.red(`no`)},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installed?[{label:`Lifecycle`,value:e.data.inspection.lifecycle}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of r(n,{labelStyle:o.bold,width:t}))console.log(e);if(console.log(o.bold(`
|
|
2
2
|
Install Methods
|
|
3
3
|
`)),e.data.agent.installMethods.length===0)console.log(o.dim(` No managed install methods`));else for(let n of i(e.data.agent.installMethods,[{header:`Method`,maxWidth:24,minWidth:8,value:e=>o.green(e.label)},{header:`Command`,minWidth:16,value:e=>e.command,wrap:!0}],{headerStyle:o.bold,width:t}))console.log(n);console.log()}export{l as infoCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./inspect-DZMJfYDG.mjs";export{e as inspectCommand};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./messages-D6r2o7w-.mjs";import{i as t,n,t as r}from"./output-
|
|
1
|
+
import{t as e}from"./messages-D6r2o7w-.mjs";import{i as t,n,t as r}from"./output-CbB-lipw.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{n as a,r as o,t as s}from"./human-BbO37wBs.mjs";import{t as c}from"./color-CLDVRyIs.mjs";import{a as l}from"./user-output-CF4UAX0c.mjs";import{r as u}from"./agent-inspection-FouaG2Iz.mjs";import{t as d}from"./cli-read-projection-DOFWDJDZ.mjs";async function f(e){let i=await u(e);if(!i)return t(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),m);let{agent:a,inspection:o,summary:s}=d(i);return t(n({action:`inspect`,data:{agent:s.agent,capabilities:{canAutoInstall:o.methods.length>0,canAutoUninstall:o.inPath&&o.lifecycle===`managed`,canRun:o.inPath,canSelfUpdate:s.agent.selfUpdateCommands.length>0},inspection:s.inspection},target:{kind:`agent`,name:a.name},warnings:p(a,o.installedState)}),m)}function p(t,n){let r=i(t,n);return r?[e(t,r)]:[]}function m(e){if(e.error){console.log(c.red(e.error.message));return}if(!e.data)return;let t=s();console.log(c.bold(`\n${e.data.agent.displayName}\n`));let n=[{label:`Name`,value:e.data.agent.name},{label:`Aliases`,value:e.data.agent.aliases.join(`, `)||`—`},{label:`Package`,value:e.data.agent.packageName??`—`},{label:`Binary`,value:e.data.agent.binaryName},{label:`Installed`,value:e.data.inspection.installed?c.green(`yes`):c.red(`no`)},{label:`Update mode`,value:e.data.inspection.updateLabel},{label:`Self update`,value:e.data.agent.selfUpdateCommands.join(` · `)||`—`},...e.data.inspection.sourceLabel?[{label:`Source`,value:e.data.inspection.sourceLabel}]:[],...e.data.inspection.installedVersion?[{label:`Version`,value:e.data.inspection.installedVersion}]:[],...e.data.inspection.latestVersion?[{label:`Latest`,value:e.data.inspection.latestVersion}]:[],...e.data.inspection.binaryPath?[{label:`Path`,value:e.data.inspection.binaryPath}]:[]];for(let e of a(n,{labelStyle:c.bold,width:t}))console.log(e);let r=[{capability:`Auto install`,value:e.data.capabilities.canAutoInstall},{capability:`Self update`,value:e.data.capabilities.canSelfUpdate},{capability:`Auto uninstall`,value:e.data.capabilities.canAutoUninstall},{capability:`Runnable`,value:e.data.capabilities.canRun}];console.log(c.bold(`
|
|
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{n as e}from"./cli-context-DI43ouBg.mjs";import{i as t,n,r,t as i}from"./output-CbB-lipw.mjs";import{t as a}from"./color-CLDVRyIs.mjs";import{a as o,i as s,r as c}from"./user-output-CF4UAX0c.mjs";import{n as l,r as u}from"./installation-routing-CuPHXckO.mjs";import{t as d}from"./unmanaged-install-compatibility-cMT5elJV.mjs";import{o as f}from"./lifecycle-policy-jVfC5DFa.mjs";async function p(e){return await m(e,u(`install`))}async function m(e,t){l(`install`,t);let{createCoreInstallationCliSession:n}=await import(`./core-installation-cli-BF2QdfHE.mjs`),r=n(`install`);try{return await h(e,r)}finally{r.dispose()}}async function h(a,o){let s=f(Array.isArray(a)?a:[a]);if(s.length<=1)return t(await g(s[0],{emitStartedEvent:!0},o),S);r({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let t of s){if(e().cancelled)break;let n=v(t,await g(t,{},o));if(c.push(n),r({action:`install`,data:n,target:{kind:`agent`,name:n.agent.name},type:`progress`}),e().cancelled)break}let l={results:c,scope:`batch`,summary:b(c)};return e().cancelled&&c.length<s.length?t(i({action:`install`,data:l,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),C):t(c.some(e=>!e.ok)?i({action:`install`,data:l,error:x(c),target:{kind:`agent`}}):n({action:`install`,data:l,target:{kind:`agent`}}),C)}async function g(e,t={},n){let r=await d(e);return r?_(r):await n.execute(e,t)}function _(e){return n({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function v(e,t){let n=t.data,r=t.warnings.map(e=>({code:e.code,message:e.message}));return{agent:n?.agent??{displayName:e,name:t.target?.name??e},changed:n?.changed??!1,error:t.error?{code:t.error.code,message:t.error.message}:void 0,input:e,installState:n?.installState,installed:n?.installed??!1,ok:t.ok,status:y(t),warnings:r}}function y(e){return e.ok?e.warnings.some(e=>e.code===`TRACKED_EXISTING_INSTALL`)?`tracked-existing-install`:e.warnings.some(e=>e.code===`UNTRACKED_EXISTING_INSTALL`)?`untracked-existing-install`:e.warnings.some(e=>e.code===`ALREADY_INSTALLED`)?`already-installed`:e.warnings.some(e=>e.code===`DRY_RUN`)?`planned`:`installed`:e.error?.code===`RESOURCE_LOCKED`?`locked`:`failed`}function b(e){let t={alreadyInstalled:0,failed:0,installed:0,locked:0,planned:0,trackedExistingInstall:0,untrackedExistingInstall:0};for(let n of e)switch(n.status){case`already-installed`:t.alreadyInstalled+=1;break;case`failed`:t.failed+=1;break;case`installed`:t.installed+=1;break;case`locked`:t.locked+=1;break;case`planned`:t.planned+=1;break;case`tracked-existing-install`:t.trackedExistingInstall+=1;break;case`untracked-existing-install`:t.untrackedExistingInstall+=1;break}return t}function x(e){let t=e.filter(e=>!e.ok),n=new Set(t.map(e=>e.error?.code));return n.size===1&&n.has(`RESOURCE_LOCKED`)?{code:`RESOURCE_LOCKED`,details:{failedAgents:t.map(e=>e.input)},message:`One or more agents could not be installed because another Quantex process is already using the agent lifecycle lock.`}:{code:`INSTALL_FAILED`,details:{failedAgents:t.map(e=>e.input)},message:`One or more agents failed to install.`}}function S(e){if(e.error){c(a.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){s(a.green(t.message));continue}if(t.code===`DRY_RUN`){o(a.cyan(t.message));continue}o(a.yellow(t.message))}return}s(a.cyan(`Installing ${e.data.agent.displayName}...`)),s(a.green(`${e.data.agent.displayName} installed successfully!`))}}function C(e){if(!e.data){e.error&&c(a.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:s(a.cyan(`Installing ${t.agent.displayName}...`)),s(a.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:s(a.green(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:o(a.yellow(w(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:o(a.cyan(w(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:o(a.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:c(a.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}T(e.data.summary)}function w(e,t){return e[0]?.message??t}function T(e){let t=[e.installed?`installed ${e.installed}`:void 0,e.alreadyInstalled?`already installed ${e.alreadyInstalled}`:void 0,e.trackedExistingInstall?`tracked existing ${e.trackedExistingInstall}`:void 0,e.untrackedExistingInstall?`untracked existing ${e.untrackedExistingInstall}`:void 0,e.failed?`failed ${e.failed}`:void 0,e.locked?`locked ${e.locked}`:void 0,e.planned?`planned ${e.planned}`:void 0].filter(Boolean);t.length>0&&s(a.bold(`Summary: ${t.join(`, `)}`))}export{p as installCommand,m as installCommandWithRoute};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./installation-compatibility-vSytV42c.mjs";export{e as createCoreInstallationCompatibilityExecutor};
|
package/dist/{installation-compatibility-BBIt-_Gy.mjs → installation-compatibility-vSytV42c.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./invocation-DDozaggZ.mjs";import{n as t}from"./production-observation-
|
|
1
|
+
import{t as e}from"./invocation-DDozaggZ.mjs";import{n as t}from"./production-observation-v7S1oqsN.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-4u0aboZw.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-DxkcDNwa.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 t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,o as t,t as n}from"./provider-binding-DW-oviNl.mjs";function r(e){let t=e.providerOutcome;if(t?.kind===`cancelled`||t?.kind===`timed-out`)return{kind:`interrupted`,outcome:t};let n=e.observation;if(n.drift.kind===`conflicting-source`)return{code:`conflict`,kind:`blocked`,reason:`Live and recorded installation evidence conflict.`};if(n.kind===`indeterminate`||n.drift.kind===`indeterminate`)return{code:`indeterminate`,kind:`blocked`,reason:n.kind===`indeterminate`?n.reason:n.drift.kind===`indeterminate`?n.drift.reason:`Provider evidence is indeterminate.`};if(n.kind===`present`){if(n.drift.kind===`untracked`)return{...e.binding?{binding:e.binding}:{},changed:!1,decision:`external-preserved`,kind:`ready`};let t=e.persistedBinding??e.binding;return t?{binding:t,changed:!1,decision:`already-satisfied`,kind:`ready`}:{code:`indeterminate`,kind:`blocked`,reason:`A present managed installation has no resolvable source evidence.`}}return n.drift.kind===`recorded-absent`?e.persistedBinding?{decision:`reinstall`,kind:`ready`,requiredBinding:e.persistedBinding,wouldChange:!0}:{code:`indeterminate`,kind:`blocked`,reason:`Recorded installation evidence cannot be resolved to a supported source.`}:{decision:`install`,kind:`ready`,wouldChange:!0}}var i=class{active=!0;cleanupPromise;commitStarted=!1;record;recordWrite;unregister;constructor(e,t,n){this.recipe=e,this.context=t,this.ports=n}register(){this.unregister=this.context.registerCleanup(this)}attachRecord(e){this.record=e}async applyRecord(){if(!this.record)throw Error(`Installation record was not prepared.`);this.recordWrite=Promise.resolve().then(()=>this.record.apply()),await this.recordWrite}async commitRecord(){if(!this.record)throw Error(`Installation record was not prepared.`);this.commitStarted=!0,await this.record.commit()}cleanup(){return this.recover().then(()=>void 0)}force(){return this.cleanup()}recover(){return this.cleanupPromise||=this.runRecovery(),this.cleanupPromise}close(){this.active=!1,this.unregister?.()}async runRecovery(){if(!this.active)return{sideEffect:`none`};if(this.commitStarted)return c(this.context,`compensate`,`may-remain`),{reason:`State commit crossed its irreversible boundary; resources were preserved.`,remediation:p(),sideEffect:`may-remain`};let e=await this.rollbackState();if(e)return c(this.context,`compensate`,`may-remain`),{reason:e,remediation:p(),sideEffect:`may-remain`};if(this.recipe.ownership===`pre-existing`)return c(this.context,`compensate`,`compensated`),{sideEffect:`compensated`};if(this.recipe.compensation===`manual`)return c(this.context,`compensate`,`may-remain`),{sideEffect:`may-remain`};let t;try{t=await this.ports.compensate(this.recipe,u(this.context.timeoutMs))}catch(e){return c(this.context,`compensate`,`may-remain`),{reason:`Compensation failed: ${f(e)}`,sideEffect:`may-remain`}}return t.kind===`success`?(c(this.context,`compensate`,`compensated`),{sideEffect:`compensated`}):(c(this.context,`compensate`,`may-remain`),{reason:d(t),sideEffect:`may-remain`})}async rollbackState(){if(this.record)try{await this.recordWrite?.catch(()=>void 0),await this.record.rollback();return}catch(e){return`State rollback failed: ${f(e)}`}}},a=class extends Error{details;kind;reason;timeoutMs;constructor(e,t,n){super(e.kind===`timed-out`?`Core mutation timed out.`:`Core mutation was cancelled.`),this.name=`CoreMutationInterruption`,this.kind=e.kind,this.details={phase:t,sideEffect:n},e.kind===`timed-out`?this.timeoutMs=e.timeoutMs:this.reason=e.reason}};function o(e,t,n){return new a(e,t,n)}function s(e,t,n){return o({kind:`cancelled`,...e.reason===void 0?{}:{reason:f(e.reason)}},t,n)}function c(e,t,n){e.setInterruptionDetails({phase:t,sideEffect:n})}function l(e){let t,n=new Promise(e=>{t=e}),r=e.registerCleanup({cleanup:()=>n,force:()=>n});return{release(){r(),t()}}}function u(e){return{signal:new AbortController().signal,timeoutMs:e===void 0?5e3:Math.max(10,Math.min(e,5e3))}}function d(e){return`reason`in e&&e.reason?e.reason:e.kind===`unsupported`?`Provider does not support ${e.operation}.`:`Provider ${e.kind} during compensation.`}function f(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core lifecycle operation failed.`}function p(){return`Keep the installed resource in place. Inspect Quantex state and lock files, then run inspect or ensure again.`}async function m(e,t,n,r={}){let i=l(t);c(t,`decide`,`none`);let o;try{return e.mode===`preview`?await h(e,t,n,r):(W(t,`decide`,`none`),await n.withMutationLock(e.name,t,async()=>(o=await v(e,t,n,r),o)))}catch(e){if(e instanceof a)throw e;let n=z(o);if(t.signal.aborted)throw s(t.signal,n===`none`?`decide`:`record`,n);return j(`execution-failed`,n===`none`?`decide`:`record`,n,`Lifecycle mutation lock failed: ${X(e)}`,!1,void 0,e)}finally{i.release()}}async function h(e,t,n,i){let a=await S(e.name,t,n);if(a.kind!==`ready`)return a.outcome;let{before:s}=a,c=r(s);if(c.kind===`interrupted`)throw o(c.outcome,`decide`,`none`);if(c.kind===`blocked`)return await g(s,t,i);if(!H(c)){if(c.decision!==`external-preserved`)return k(s,c);let e=await y(s,t,i);return e.kind===`terminal`?e.outcome:e.kind===`none`?k(s,c):{kind:`success`,value:{before:s,binding:e.value.binding,compatibility:{kind:`adopt`},decision:c.decision,kind:`preview`,wouldChange:!0}}}let l=await w(e,s,c,t,n);return l.kind===`ready`?{kind:`success`,value:{before:s,binding:l.value.binding,decision:c.decision,kind:`preview`,wouldChange:!0}}:{kind:`success`,value:{before:s,decision:c.decision,kind:`preview`,wouldChange:!0}}}async function g(e,t,n){let r=e.pathExecutable.present,i=e.installedState;if(r&&!i){let r=await _(e,t,n);return r.kind===`terminal`?r.outcome:r.kind===`ready`?{kind:`success`,value:{before:e,binding:r.value.binding,compatibility:{kind:`adopt`},decision:`external-preserved`,kind:`preview`,wouldChange:!0}}:{kind:`success`,value:{before:e,decision:`external-preserved`,kind:`preview`,wouldChange:!1}}}if(i&&r){let t=e.persistedBinding??e.binding;return{kind:`success`,value:{before:e,...t?{binding:t}:{},decision:`already-satisfied`,kind:`preview`,wouldChange:!1}}}return{kind:`success`,value:{before:e,decision:i?`reinstall`:`install`,kind:`preview`,wouldChange:!0}}}async function _(e,t,n){if(!n.resolveAdoption)return{kind:`none`};let r;try{r=await n.resolveAdoption(e,t)}catch(e){if(t.signal.aborted)throw s(t.signal,`decide`,`none`);return{kind:`terminal`,outcome:j(`decision-indeterminate`,`decide`,`none`,X(e),!1,void 0,e)}}return W(t,`decide`,`none`),r?{kind:`ready`,value:r}:{kind:`none`}}async function v(e,t,n,r){let a=await C(e.name,t,n);if(a.kind!==`ready`)return a.outcome;let{before:l,directive:u}=a;if(!H(u)){if(u.decision!==`external-preserved`)return await T(e.name,l,u,t,n);let i=await y(l,t,r);return i.kind===`terminal`?i.outcome:i.kind===`ready`?await x(e.name,l,i.value,t,n,r):await T(e.name,l,u,t,n)}let d=await w(e,l,u,t,n);if(d.kind!==`ready`)return d.outcome;let f=d.value;r.onMutationStart?.({before:l,binding:f.binding,decision:u.decision}),c(t,`execute`,`may-remain`);let p;try{p=await n.install(f,G(t))}catch(e){if(t.signal.aborted)throw s(t.signal,`execute`,`may-remain`);return j(`execution-failed`,`execute`,`may-remain`,X(e),!1,Y())}if(U(p))throw o(p,`execute`,`may-remain`);if(p.kind!==`success`)return A(`execution-failed`,`execute`,p);let m=new i(f,t,n);if(m.register(),t.signal.aborted)return await D(t.signal,`execute`,m);c(t,`verify`,`may-remain`);let h;try{h=await n.verify(f,G(t))}catch(e){return await E(m,`verification-failed`,`verify`,X(e),!1,e)}if(U(h))return await O(h,`verify`,m);if(h.kind!==`success`)return await E(m,`verification-failed`,`verify`,K(h),q(h));if(h.value.kind===`unsatisfied`)return await E(m,`verification-failed`,`verify`,h.value.reason,!1);let g;try{g=await n.observe(e.name,t,{observationBinding:f.binding})}catch(e){return await E(m,`verification-failed`,`verify`,X(e),!1,e)}if(t.signal.aborted)return await D(t.signal,`verify`,m);let _=R(g);if(_)return await O(_,`verify`,m);if(!g||!M(g,f))return await E(m,`verification-failed`,`verify`,`Fresh post-mutation observation did not confirm the selected provider source.`,!1);try{if(c(t,`record`,`may-remain`),m.attachRecord(await n.prepareRecord({before:l,context:t,recipe:f,verified:g})),t.signal.aborted)return await D(t.signal,`record`,m);await m.applyRecord()}catch(e){return await E(m,`recording-failed`,`record`,X(e),!1,e)}if(t.signal.aborted)return await D(t.signal,`record`,m);c(t,`verify`,`may-remain`);let v;try{v=await n.observe(e.name,t)}catch(e){return await E(m,`verification-failed`,`verify`,X(e),!1,e)}if(t.signal.aborted)return await D(t.signal,`verify`,m);let b=R(v);if(b)return await O(b,`verify`,m);if(!v||!P(v,f))return await E(m,`verification-failed`,`verify`,`Fresh post-mutation observation did not confirm the recorded provider source.`,!1);try{if(c(t,`record`,`may-remain`),t.signal.aborted)return await D(t.signal,`record`,m);await m.commitRecord()}catch(e){return await E(m,`recording-failed`,`record`,X(e),!1,e)}return t.signal.aborted?await D(t.signal,`record`,m):(m.close(),{kind:`success`,value:{after:v,before:l,binding:f.binding,changed:!0,decision:u.decision,kind:`apply`}})}async function y(e,t,n){if(!n.resolveAdoption)return{kind:`none`};let r;try{r=await n.resolveAdoption(e,t)}catch(e){if(t.signal.aborted)throw s(t.signal,`decide`,`none`);return{kind:`terminal`,outcome:j(`decision-indeterminate`,`decide`,`none`,X(e),!1,void 0,e)}}if(W(t,`decide`,`none`),!r)return{kind:`none`};let i=b(e,r);return i?{kind:`terminal`,outcome:j(`decision-indeterminate`,`decide`,`none`,i,!1)}:{kind:`ready`,value:r}}function b(e,n){if(e.observation.kind!==`present`||e.observation.drift.kind!==`untracked`)return`Compatibility adoption requires a fresh untracked present observation.`;if(n.installedState.agentName!==e.agent.name)return`Compatibility adoption state does not target the observed agent.`;if(e.binding&&!I(e.binding,n.binding,e.agent.binaryName))return`Compatibility adoption does not preserve the observed provider source.`;let r=t(e.agent,n.installedState);if(!r||!I(r,n.binding,e.agent.binaryName))return`Compatibility adoption state does not resolve to the selected provider source.`}async function x(e,t,n,r,a,l){let u={binding:n.binding,compensation:`manual`,installedState:n.installedState,ownership:`pre-existing`};c(r,`verify`,`none`);let d;try{d=await a.verify(u,G(r))}catch(e){if(r.signal.aborted)throw s(r.signal,`verify`,`none`);return j(`verification-failed`,`verify`,`none`,X(e),!1,void 0,e)}if(U(d))throw o(d,`verify`,`none`);if(d.kind!==`success`)return j(`verification-failed`,`verify`,`none`,K(d),q(d),J(d));if(d.value.kind===`unsatisfied`)return j(`verification-failed`,`verify`,`none`,d.value.reason,!1);let f;try{f=await a.observe(e,r,{observationBinding:u.binding})}catch(e){if(r.signal.aborted)throw s(r.signal,`verify`,`none`);return j(`verification-failed`,`verify`,`none`,X(e),!1,void 0,e)}W(r,`verify`,`none`);let p=R(f);if(p)throw o(p,`verify`,`none`);if(!f||!N(f,u))return j(`verification-failed`,`verify`,`none`,`Fresh observation did not confirm the compatibility adoption source.`,!1);l.onMutationStart?.({before:t,binding:u.binding,decision:`external-preserved`});let m;try{c(r,`record`,`none`),m=await a.prepareRecord({before:t,context:r,recipe:u,verified:f})}catch(e){if(r.signal.aborted)throw s(r.signal,`record`,`none`);return j(`recording-failed`,`record`,`none`,X(e),!1,void 0,e)}let h=new i(u,r,a);if(h.attachRecord(m),h.register(),r.signal.aborted)return await D(r.signal,`record`,h);try{c(r,`record`,`may-remain`),await h.applyRecord()}catch(e){return await E(h,`recording-failed`,`record`,X(e),!1,e)}if(r.signal.aborted)return await D(r.signal,`record`,h);c(r,`verify`,`may-remain`);let g;try{g=await a.observe(e,r)}catch(e){return await E(h,`verification-failed`,`verify`,X(e),!1,e)}if(r.signal.aborted)return await D(r.signal,`verify`,h);let _=R(g);if(_)return await O(_,`verify`,h);if(!g||!P(g,u))return await E(h,`verification-failed`,`verify`,`Fresh observation did not confirm the recorded compatibility adoption source.`,!1);try{c(r,`record`,`may-remain`),await h.commitRecord()}catch(e){return await E(h,`recording-failed`,`record`,X(e),!1,e)}return r.signal.aborted?await D(r.signal,`record`,h):(h.close(),{kind:`success`,value:{after:g,before:t,binding:u.binding,changed:!0,compatibility:{kind:`adopt`},decision:`external-preserved`,kind:`apply`}})}async function S(e,t,n){W(t,`decide`,`none`);let r;try{r=await n.observe(e,t)}catch(e){if(t.signal.aborted)throw s(t.signal,`decide`,`none`);return{kind:`terminal`,outcome:j(`decision-indeterminate`,`decide`,`none`,X(e),!1,void 0,e)}}return W(t,`decide`,`none`),r?{before:r,kind:`ready`}:{kind:`terminal`,outcome:{kind:`agent-not-found`,name:e}}}async function C(e,t,n){let i=await S(e,t,n);if(i.kind!==`ready`)return i;let{before:a}=i,s=r(a);if(s.kind===`interrupted`)throw o(s.outcome,`decide`,`none`);return s.kind===`blocked`?{kind:`terminal`,outcome:j(s.code===`conflict`?`decision-conflict`:`decision-indeterminate`,`decide`,`none`,s.reason,!1)}:{before:a,directive:s,kind:`ready`}}async function w(e,t,n,r,i){let a;try{a=await i.resolveRecipe({context:G(r),directive:n,observed:t,operation:e.operation})}catch(e){if(r.signal.aborted)throw s(r.signal,`decide`,`none`);return{kind:`terminal`,outcome:j(`recipe-unavailable`,`decide`,`none`,X(e),!1)}}if(W(r,`decide`,`none`),a.kind===`interrupted`)throw o(a.outcome,`decide`,`none`);if(a.kind===`ready`){let e=F(t,a.recipe);return e?{kind:`terminal`,outcome:j(`recipe-unavailable`,`decide`,`none`,e,!1)}:{kind:`ready`,value:a.recipe}}return{kind:`terminal`,outcome:j(`recipe-unavailable`,`decide`,`none`,a.reason,a.retryable,a.remediation)}}async function T(e,t,n,i,a){c(i,`verify`,`none`);let l;try{l=await a.observe(e,i)}catch(e){if(i.signal.aborted)throw s(i.signal,`verify`,`none`);return j(`verification-failed`,`verify`,`none`,X(e),!1,void 0,e)}if(W(i,`verify`,`none`),!l)return j(`verification-failed`,`verify`,`none`,`The agent disappeared.`,!0);let u=r(l);if(u.kind!==`ready`||!(`changed`in u)||u.decision!==n.decision||!B(u.binding,n.binding,t.agent.binaryName)||!V(t,l)){if(u.kind===`interrupted`)throw o(u.outcome,`verify`,`none`);return j(`verification-failed`,`verify`,`none`,`Fresh observation changed the no-op decision.`,!0)}return{kind:`success`,value:{after:l,before:t,...n.binding?{binding:n.binding}:{},changed:!1,decision:n.decision,kind:`apply`}}}async function E(e,t,n,r,i,a){let o=await e.recover();return e.close(),o.reason?j(`compensation-failed`,`compensate`,o.sideEffect,`${r} ${o.reason}`,!1,o.remediation??Y(),a,t===`compensation-failed`?void 0:t):j(t,n,o.sideEffect,r,i,o.sideEffect===`may-remain`?Y():void 0,a)}async function D(e,t,n){let r=await n.recover();throw n.close(),s(e,t,r.sideEffect)}async function O(e,t,n){let r=await n.recover();throw n.close(),o(e,t,r.sideEffect)}function k(e,t){return{kind:`success`,value:{before:e,...t.binding?{binding:t.binding}:{},decision:t.decision,kind:`preview`,wouldChange:!1}}}function A(e,t,n){return j(e,t,`may-remain`,K(n),q(n),J(n))}function j(e,t,n,r,i,a,o,s){return{error:{...o===void 0?{}:{cause:o},code:e,...s?{originCode:s}:{},phase:t,reason:r,...a?{remediation:a}:{},retryable:i,sideEffect:n},kind:`failed`}}function M(e,t){return e.observation.kind===`present`&&e.executable.present&&e.binding!==void 0&&I(e.binding,t.binding,e.agent.binaryName)}function N(e,t){return M(e,t)&&e.observation.drift.kind===`untracked`&&e.installedState===void 0&&e.persistedBinding===void 0&&e.receipt===void 0}function P(i,a){let o=r(i),s=i.installedState?t(i.agent,i.installedState):void 0,c=i.receipt?e(i.receipt):void 0;return o.kind===`ready`&&`changed`in o&&o.decision===`already-satisfied`&&s!==void 0&&c!==void 0&&I(s,a.binding,i.agent.binaryName)&&n(c,a.binding,i.agent.binaryName)}function F(e,n){if(n.ownership!==`created-on-success`)return`Resolved installation recipes must prove created-on-success ownership.`;if(n.installedState.agentName!==e.agent.name)return`Resolved recipe state does not target the observed agent.`;let r=t(e.agent,n.installedState);if(!r||!I(r,n.binding,e.agent.binaryName))return`Resolved recipe does not preserve the schema-v2 provider source identity.`}function I(e,t,r){return n(e,t,r)&&L(e.target.arguments,t.target.arguments)}function L(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}function R(e){let t=e?.providerOutcome;return t&&U(t)?t:void 0}function z(e){return e?e.kind===`failed`?e.error.sideEffect:e.kind===`success`&&e.value.kind===`apply`&&e.value.changed?`may-remain`:`none`:`none`}function B(e,t,n){return!e||!t?e===t:I(e,t,n)}function V(n,r){return B(n.installedState?t(n.agent,n.installedState):void 0,r.installedState?t(r.agent,r.installedState):void 0,n.agent.binaryName)?B(n.receipt?e(n.receipt):void 0,r.receipt?e(r.receipt):void 0,n.agent.binaryName):!1}function H(e){return`wouldChange`in e}function U(e){return e.kind===`cancelled`||e.kind===`timed-out`}function W(e,t,n){if(e.signal.aborted)throw s(e.signal,t,n)}function G(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function K(e){return`reason`in e&&e.reason?e.reason:e.kind===`unsupported`?`Provider does not support ${e.operation}.`:`Provider ${e.kind} during the lifecycle mutation.`}function q(e){return e.kind===`failed`?e.retryable:e.kind===`unavailable`?e.retryable??!0:!1}function J(e){return e.kind===`failed`?e.remediation:void 0}function Y(){return`Inspect the selected provider target and remove any partial installation manually before retrying.`}function X(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core lifecycle operation failed.`}export{a as CoreMutationInterruption,m as executeCoreInstallation};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,t}from"./file-store-oHCTTnLn.mjs";import{t as n}from"./detect-Dou6fit1.mjs";import{i as r}from"./schema-BBnWVY6R.mjs";import{a as i,o as a,r as o}from"./provider-binding-DB7IXxJp.mjs";import{t as s}from"./production-observation-CLYtqs1E.mjs";import{isDeepStrictEqual as c}from"node:util";async function l(){let{coreMutationRecipeCatalog:e}=await import(`./mutation-recipe-catalog-COCTDfME.mjs`);return e}async function u(e){if(e.context.signal.aborted)return D(e.context.signal);let t=e.catalog.filter(t=>t.name===e.observed.agent.name);if(t.length!==1)return O(t.length===0?`No mutation recipes are registered for ${e.observed.agent.name}.`:`Multiple mutation recipe entries are registered for ${e.observed.agent.name}.`,!1);let n=t[0].platforms[e.platform]??[];if(n.length===0)return O(`${e.observed.agent.displayName} has no ${e.operation} recipe for ${e.platform}.`,!1);let r;try{r=n.map(t=>g(e.observed,t))}catch(e){return O(j(e,`Mutation recipe projection failed.`),!1)}if(e.directive.decision===`reinstall`)return d(e,r);let i=f(e.observed,r);return i.kind===`blocked`?i:p(e,i.candidates)}async function d(e,t){let n=e.observed.installedState;if(!n)return O(`Stale installation evidence has no schema-v2 installed-agent source.`,!1);let r=a(e.observed.agent,n);if(!r)return O(`The recorded installed-agent source cannot be resolved.`,!1);let o=e.directive.decision===`reinstall`?e.directive.requiredBinding:void 0;if(!o)return O(`The stale decision has no exact required provider source.`,!1);if(!x(r,o,e.observed.agent.binaryName,w(o)))return O(`The stale decision no longer matches the installed-agent source.`,!1);if(e.observed.persistedBinding&&!x(r,e.observed.persistedBinding,e.observed.agent.binaryName,w(e.observed.persistedBinding)))return O(`Persisted provider evidence conflicts with the installed-agent source.`,!1);if(e.observed.receipt){let t=i(e.observed.receipt);if(!t||!x(r,t,e.observed.agent.binaryName,!1))return O(`The lifecycle receipt conflicts with the installed-agent source.`,!1)}let s=t.filter(t=>x(t.recipe.binding,r,e.observed.agent.binaryName,!0));return s.length===1?m(e,s[0],!1):O(s.length===0?`The exact recorded source is no longer present in the mutation catalog.`:`The mutation catalog contains multiple recipes for the exact recorded source.`,!1)}function f(e,t){let n=new Set(t.map((e,t)=>t)),r=[];for(let i of e.methods){let a=o(e.agent,i);if(!a)return O(`An ordered install method cannot be resolved to a provider recipe.`,!1);let s=[...n].find(n=>x(t[n].recipe.binding,a,e.agent.binaryName,!0));if(s===void 0)return O(`The ordered install methods and generated mutation recipes do not match.`,!1);r.push(t[s]),n.delete(s)}return n.size>0?O(`The generated mutation recipes contain candidates absent from the ordered install methods.`,!1):{candidates:r,kind:`ready`}}async function p(e,t){let n=[],r=!1;for(let i of t){let t=await m(e,i,!0);if(t.kind===`ready`||t.kind===`interrupted`||!t.reason.startsWith(`provider-unavailable:`))return t;n.push(t.reason.slice(21)),r||=t.retryable}return O(n.length>0?`No installation provider is currently available: ${n.join(`; `)}`:`No usable ${e.operation} recipe is available.`,r)}async function m(e,t,n){let r=e.providerRegistry.get(t.recipe.binding.providerId);if(!r)return O(`Provider ${t.recipe.binding.providerId} is not registered.`,!1);if(!r.install||!r.verify)return O(`Provider ${r.id} does not implement both install and verify.`,!1);let i=await h(()=>r.availability(e.context),r,`availability`,e.context);if(i.kind===`interrupted`)return E(i.outcome);if(i.kind===`threw`)return O(i.reason,!1);if(i.outcome.kind===`cancelled`||i.outcome.kind===`timed-out`)return E(i.outcome);if(i.outcome.kind===`unavailable`){let e=`${r.id}: ${i.outcome.reason}`;return O(n?`provider-unavailable:${e}`:`The exact recorded provider is unavailable: ${e}`,i.outcome.retryable??!0)}if(i.outcome.kind!==`success`)return O(k(r,`availability`,i.outcome),A(i.outcome));if(e.context.signal.aborted)return D(e.context.signal);let a=await h(()=>r.observe({context:e.context,target:t.recipe.binding.target}),r,`observation`,e.context);return a.kind===`interrupted`?E(a.outcome):a.kind===`threw`?O(a.reason,!1):a.outcome.kind===`cancelled`||a.outcome.kind===`timed-out`?E(a.outcome):a.outcome.kind===`success`?!S(a.outcome.value.target,t.recipe.binding.target)||!C(a.outcome.value.target.arguments,t.recipe.binding.target.arguments)?O(`Provider ${r.id} returned evidence for a different target.`,!1):a.outcome.value.kind===`present`?O(`Provider ${r.id} reports the selected target became present before mutation.`,!0):{kind:`ready`,recipe:t.recipe}:O(k(r,`observation`,a.outcome),A(a.outcome))}async function h(e,t,n,r){try{return{kind:`outcome`,outcome:await e()}}catch(e){let i=T(e,r);return i?{kind:`interrupted`,outcome:i}:{kind:`threw`,reason:`Provider ${t.id} ${n} rejected: ${j(e,`unexpected provider rejection`)}`}}}function g(e,t){let n=_(e,t);return{recipe:{binding:{providerId:t.provider,target:n},compensation:t.provider===`script`||t.provider===`binary`?`manual`:`provider-uninstall`,installedState:v(e,t,n),ownership:`created-on-success`}}}function _(e,t){let n=t.provider===`script`||t.provider===`binary`,r=t.target.effect;if(n&&!r)throw Error(`${t.provider} recipe is missing its execution effect.`);if(!n&&r)throw Error(`${t.provider} recipe unexpectedly contains an execution effect.`);let i=n?y(r):t.target.id,a=t.provider===`deno`||n;return{...t.target.arguments?.length?{arguments:[...t.target.arguments]}:{},...t.target.binaryName||a?{binaryName:t.target.binaryName??e.agent.binaryName}:{},...r?{effect:r.kind===`executable`?{command:[...r.command],kind:r.kind}:{command:r.command,kind:r.kind}}:{},id:i,kind:t.target.kind}}function v(e,t,n){return t.provider===`script`||t.provider===`binary`?{agentName:e.agent.name,...t.target.binaryName?{binaryName:t.target.binaryName}:{},command:n.id,installType:t.provider}:{agentName:e.agent.name,...t.target.binaryName||t.provider===`deno`?{binaryName:t.target.binaryName??e.agent.binaryName}:{},installType:t.provider,...t.target.arguments?.length?{packageInstallArgs:[...t.target.arguments]}:{},packageName:t.target.id,...t.target.kind===`cask`||t.target.kind===`id`?{packageTargetKind:t.target.kind}:{}}}function y(e){return e.kind===`shell-script`?e.command:e.command.map(b).join(` `)}function b(e){return e.includes(` `)?JSON.stringify(e):e}function x(e,t,n,r){return e.providerId===t.providerId&&S(e.target,t.target,n)&&(!r||C(e.target.arguments,t.target.arguments))}function S(e,t,n){return e.id===t.id&&e.kind===t.kind&&(e.binaryName??n)===(t.binaryName??n)}function C(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((e,t)=>e===r[t])}function w(e){return(e.target.arguments?.length??0)>0}function T(e,t){if(e&&typeof e==`object`&&`kind`in e){if(e.kind===`timed-out`){let n=`timeoutMs`in e&&typeof e.timeoutMs==`number`?e.timeoutMs:t.timeoutMs;if(n!==void 0&&Number.isInteger(n)&&n>0)return{kind:`timed-out`,timeoutMs:n}}if(e.kind===`cancelled`){let t=`reason`in e?e.reason:void 0;return{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}if(t.signal.aborted){let e=t.signal.reason;return{kind:`cancelled`,...e===void 0?{}:{reason:j(e,`cancelled`)}}}}function E(e){return{kind:`interrupted`,outcome:e}}function D(e){let t=e.reason instanceof Error?e.reason.message:e.reason;return{kind:`interrupted`,outcome:{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}function O(e,t){return{kind:`blocked`,reason:e,retryable:t}}function k(e,t,n){return`reason`in n&&n.reason?`Provider ${e.id} ${t} failed: ${n.reason}`:n.kind===`unsupported`?`Provider ${e.id} does not support ${n.operation}.`:`Provider ${e.id} ${t} returned ${n.kind}.`}function A(e){return e.kind===`failed`?e.retryable:e.kind===`unavailable`?e.retryable??!0:!1}function j(e,t){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:t}async function M(e,t,n,r){if(t.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let i=await r();try{let r=P(await e.loadDocument());return new N(e,r,P({...r,installedAgents:{...r.installedAgents,[t.agentName]:t},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}}),i)}catch(e){return await F(i,e,`Failed to release the state lock after record preparation.`)}}var N=class{applyPromise;commitPromise;rawApplyPromise;releasePromise;rollbackPromise;terminal;constructor(e,t,n,r){this.store=e,this.original=t,this.next=n,this.releaseStateLock=r}apply(){if(this.terminal===`rollback`)throw Error(`Cannot apply an installation record after rollback started.`);return this.applyPromise?this.applyPromise:(this.rawApplyPromise=Promise.resolve().then(()=>this.store.saveDocument(this.next)),this.applyPromise=this.rawApplyPromise.catch(async e=>{this.terminal=`rollback`;try{await this.startRollback()}catch(t){throw I(e,t,`State recording failed and the original document could not be restored cleanly.`)}throw e}),this.applyPromise)}commit(){return this.terminal===`rollback`?this.startRollback().then(()=>{throw Error(`Cannot commit an installation record after rollback started.`)}):this.applyPromise?this.commitPromise?this.commitPromise:(this.terminal=`commit`,this.commitPromise=this.applyPromise.then(()=>this.releaseOnce()),this.commitPromise):(this.terminal=`rollback`,this.startRollback().then(()=>{throw Error(`Cannot commit an installation record before apply completes.`)}))}rollback(){return this.terminal===`commit`?this.commitPromise??Promise.resolve():(this.terminal=`rollback`,this.startRollback())}startRollback(){return this.rollbackPromise??=this.runRollback(),this.rollbackPromise}async runRollback(){if(!this.rawApplyPromise){await this.releaseOnce();return}await this.rawApplyPromise.catch(()=>void 0);let e;try{await this.store.saveDocument(this.original)}catch(t){e=t}try{await this.releaseOnce()}catch(t){throw e===void 0?t:I(e,t,`Failed to restore the original state and release its lock.`)}if(e!==void 0)throw e}releaseOnce(){return this.releasePromise??=Promise.resolve().then(()=>this.releaseStateLock()),this.releasePromise}};function P(e){let t=r(e);if(t.source!==`current`)throw Error(`Core mutations require the current state schema.`);return t.document}async function F(e,t,n){try{await e()}catch(e){throw I(t,e,n)}throw t}function I(e,t,n){return AggregateError([e,t],n,{cause:e})}async function L(e){let[t,n]=await Promise.all([l(),import(`./installation-provider-registry-CpJjzAO7.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-oHCTTnLn.mjs";import{t as n}from"./detect-Dou6fit1.mjs";import{i as r}from"./schema-BBnWVY6R.mjs";import{a as i,o as a,r as o}from"./provider-binding-DW-oviNl.mjs";import{t as s}from"./production-observation-v7S1oqsN.mjs";import{isDeepStrictEqual as c}from"node:util";async function l(){let{coreMutationRecipeCatalog:e}=await import(`./mutation-recipe-catalog-COCTDfME.mjs`);return e}async function u(e){if(e.context.signal.aborted)return D(e.context.signal);let t=e.catalog.filter(t=>t.name===e.observed.agent.name);if(t.length!==1)return O(t.length===0?`No mutation recipes are registered for ${e.observed.agent.name}.`:`Multiple mutation recipe entries are registered for ${e.observed.agent.name}.`,!1);let n=t[0].platforms[e.platform]??[];if(n.length===0)return O(`${e.observed.agent.displayName} has no ${e.operation} recipe for ${e.platform}.`,!1);let r;try{r=n.map(t=>g(e.observed,t))}catch(e){return O(j(e,`Mutation recipe projection failed.`),!1)}if(e.directive.decision===`reinstall`)return d(e,r);let i=f(e.observed,r);return i.kind===`blocked`?i:p(e,i.candidates)}async function d(e,t){let n=e.observed.installedState;if(!n)return O(`Stale installation evidence has no schema-v2 installed-agent source.`,!1);let r=a(e.observed.agent,n);if(!r)return O(`The recorded installed-agent source cannot be resolved.`,!1);let o=e.directive.decision===`reinstall`?e.directive.requiredBinding:void 0;if(!o)return O(`The stale decision has no exact required provider source.`,!1);if(!x(r,o,e.observed.agent.binaryName,w(o)))return O(`The stale decision no longer matches the installed-agent source.`,!1);if(e.observed.persistedBinding&&!x(r,e.observed.persistedBinding,e.observed.agent.binaryName,w(e.observed.persistedBinding)))return O(`Persisted provider evidence conflicts with the installed-agent source.`,!1);if(e.observed.receipt){let t=i(e.observed.receipt);if(!t||!x(r,t,e.observed.agent.binaryName,!1))return O(`The lifecycle receipt conflicts with the installed-agent source.`,!1)}let s=t.filter(t=>x(t.recipe.binding,r,e.observed.agent.binaryName,!0));return s.length===1?m(e,s[0],!1):O(s.length===0?`The exact recorded source is no longer present in the mutation catalog.`:`The mutation catalog contains multiple recipes for the exact recorded source.`,!1)}function f(e,t){let n=new Set(t.map((e,t)=>t)),r=[];for(let i of e.methods){let a=o(e.agent,i);if(!a)return O(`An ordered install method cannot be resolved to a provider recipe.`,!1);let s=[...n].find(n=>x(t[n].recipe.binding,a,e.agent.binaryName,!0));if(s===void 0)return O(`The ordered install methods and generated mutation recipes do not match.`,!1);r.push(t[s]),n.delete(s)}return n.size>0?O(`The generated mutation recipes contain candidates absent from the ordered install methods.`,!1):{candidates:r,kind:`ready`}}async function p(e,t){let n=[],r=!1;for(let i of t){let t=await m(e,i,!0);if(t.kind===`ready`||t.kind===`interrupted`||!t.reason.startsWith(`provider-unavailable:`))return t;n.push(t.reason.slice(21)),r||=t.retryable}return O(n.length>0?`No installation provider is currently available: ${n.join(`; `)}`:`No usable ${e.operation} recipe is available.`,r)}async function m(e,t,n){let r=e.providerRegistry.get(t.recipe.binding.providerId);if(!r)return O(`Provider ${t.recipe.binding.providerId} is not registered.`,!1);if(!r.install||!r.verify)return O(`Provider ${r.id} does not implement both install and verify.`,!1);let i=await h(()=>r.availability(e.context),r,`availability`,e.context);if(i.kind===`interrupted`)return E(i.outcome);if(i.kind===`threw`)return O(i.reason,!1);if(i.outcome.kind===`cancelled`||i.outcome.kind===`timed-out`)return E(i.outcome);if(i.outcome.kind===`unavailable`){let e=`${r.id}: ${i.outcome.reason}`;return O(n?`provider-unavailable:${e}`:`The exact recorded provider is unavailable: ${e}`,i.outcome.retryable??!0)}if(i.outcome.kind!==`success`)return O(k(r,`availability`,i.outcome),A(i.outcome));if(e.context.signal.aborted)return D(e.context.signal);let a=await h(()=>r.observe({context:e.context,target:t.recipe.binding.target}),r,`observation`,e.context);return a.kind===`interrupted`?E(a.outcome):a.kind===`threw`?O(a.reason,!1):a.outcome.kind===`cancelled`||a.outcome.kind===`timed-out`?E(a.outcome):a.outcome.kind===`success`?!S(a.outcome.value.target,t.recipe.binding.target)||!C(a.outcome.value.target.arguments,t.recipe.binding.target.arguments)?O(`Provider ${r.id} returned evidence for a different target.`,!1):a.outcome.value.kind===`present`?O(`Provider ${r.id} reports the selected target became present before mutation.`,!0):{kind:`ready`,recipe:t.recipe}:O(k(r,`observation`,a.outcome),A(a.outcome))}async function h(e,t,n,r){try{return{kind:`outcome`,outcome:await e()}}catch(e){let i=T(e,r);return i?{kind:`interrupted`,outcome:i}:{kind:`threw`,reason:`Provider ${t.id} ${n} rejected: ${j(e,`unexpected provider rejection`)}`}}}function g(e,t){let n=_(e,t);return{recipe:{binding:{providerId:t.provider,target:n},compensation:t.provider===`script`||t.provider===`binary`?`manual`:`provider-uninstall`,installedState:v(e,t,n),ownership:`created-on-success`}}}function _(e,t){let n=t.provider===`script`||t.provider===`binary`,r=t.target.effect;if(n&&!r)throw Error(`${t.provider} recipe is missing its execution effect.`);if(!n&&r)throw Error(`${t.provider} recipe unexpectedly contains an execution effect.`);let i=n?y(r):t.target.id,a=t.provider===`deno`||n;return{...t.target.arguments?.length?{arguments:[...t.target.arguments]}:{},...t.target.binaryName||a?{binaryName:t.target.binaryName??e.agent.binaryName}:{},...r?{effect:r.kind===`executable`?{command:[...r.command],kind:r.kind}:{command:r.command,kind:r.kind}}:{},id:i,kind:t.target.kind}}function v(e,t,n){return t.provider===`script`||t.provider===`binary`?{agentName:e.agent.name,...t.target.binaryName?{binaryName:t.target.binaryName}:{},command:n.id,installType:t.provider}:{agentName:e.agent.name,...t.target.binaryName||t.provider===`deno`?{binaryName:t.target.binaryName??e.agent.binaryName}:{},installType:t.provider,...t.target.arguments?.length?{packageInstallArgs:[...t.target.arguments]}:{},packageName:t.target.id,...t.target.kind===`cask`||t.target.kind===`id`?{packageTargetKind:t.target.kind}:{}}}function y(e){return e.kind===`shell-script`?e.command:e.command.map(b).join(` `)}function b(e){return e.includes(` `)?JSON.stringify(e):e}function x(e,t,n,r){return e.providerId===t.providerId&&S(e.target,t.target,n)&&(!r||C(e.target.arguments,t.target.arguments))}function S(e,t,n){return e.id===t.id&&e.kind===t.kind&&(e.binaryName??n)===(t.binaryName??n)}function C(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((e,t)=>e===r[t])}function w(e){return(e.target.arguments?.length??0)>0}function T(e,t){if(e&&typeof e==`object`&&`kind`in e){if(e.kind===`timed-out`){let n=`timeoutMs`in e&&typeof e.timeoutMs==`number`?e.timeoutMs:t.timeoutMs;if(n!==void 0&&Number.isInteger(n)&&n>0)return{kind:`timed-out`,timeoutMs:n}}if(e.kind===`cancelled`){let t=`reason`in e?e.reason:void 0;return{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}if(t.signal.aborted){let e=t.signal.reason;return{kind:`cancelled`,...e===void 0?{}:{reason:j(e,`cancelled`)}}}}function E(e){return{kind:`interrupted`,outcome:e}}function D(e){let t=e.reason instanceof Error?e.reason.message:e.reason;return{kind:`interrupted`,outcome:{kind:`cancelled`,...t===void 0?{}:{reason:String(t)}}}}function O(e,t){return{kind:`blocked`,reason:e,retryable:t}}function k(e,t,n){return`reason`in n&&n.reason?`Provider ${e.id} ${t} failed: ${n.reason}`:n.kind===`unsupported`?`Provider ${e.id} does not support ${n.operation}.`:`Provider ${e.id} ${t} returned ${n.kind}.`}function A(e){return e.kind===`failed`?e.retryable:e.kind===`unavailable`?e.retryable??!0:!1}function j(e,t){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:t}async function M(e,t,n,r){if(t.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let i=await r();try{let r=P(await e.loadDocument());return new N(e,r,P({...r,installedAgents:{...r.installedAgents,[t.agentName]:t},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}}),i)}catch(e){return await F(i,e,`Failed to release the state lock after record preparation.`)}}var N=class{applyPromise;commitPromise;rawApplyPromise;releasePromise;rollbackPromise;terminal;constructor(e,t,n,r){this.store=e,this.original=t,this.next=n,this.releaseStateLock=r}apply(){if(this.terminal===`rollback`)throw Error(`Cannot apply an installation record after rollback started.`);return this.applyPromise?this.applyPromise:(this.rawApplyPromise=Promise.resolve().then(()=>this.store.saveDocument(this.next)),this.applyPromise=this.rawApplyPromise.catch(async e=>{this.terminal=`rollback`;try{await this.startRollback()}catch(t){throw I(e,t,`State recording failed and the original document could not be restored cleanly.`)}throw e}),this.applyPromise)}commit(){return this.terminal===`rollback`?this.startRollback().then(()=>{throw Error(`Cannot commit an installation record after rollback started.`)}):this.applyPromise?this.commitPromise?this.commitPromise:(this.terminal=`commit`,this.commitPromise=this.applyPromise.then(()=>this.releaseOnce()),this.commitPromise):(this.terminal=`rollback`,this.startRollback().then(()=>{throw Error(`Cannot commit an installation record before apply completes.`)}))}rollback(){return this.terminal===`commit`?this.commitPromise??Promise.resolve():(this.terminal=`rollback`,this.startRollback())}startRollback(){return this.rollbackPromise??=this.runRollback(),this.rollbackPromise}async runRollback(){if(!this.rawApplyPromise){await this.releaseOnce();return}await this.rawApplyPromise.catch(()=>void 0);let e;try{await this.store.saveDocument(this.original)}catch(t){e=t}try{await this.releaseOnce()}catch(t){throw e===void 0?t:I(e,t,`Failed to restore the original state and release its lock.`)}if(e!==void 0)throw e}releaseOnce(){return this.releasePromise??=Promise.resolve().then(()=>this.releaseStateLock()),this.releasePromise}};function P(e){let t=r(e);if(t.source!==`current`)throw Error(`Core mutations require the current state schema.`);return t.document}async function F(e,t,n){try{await e()}catch(e){throw I(t,e,n)}throw t}function I(e,t,n){return AggregateError([e,t],n,{cause:e})}async function L(e){let[t,n]=await Promise.all([l(),import(`./installation-provider-registry-CpJjzAO7.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{n as e,r as t,t as n}from"./installation-routing-CuPHXckO.mjs";export{n as createCoreInstallationTestRoute,e as reportInstallationEngineRoute,t as selectInstallationEngineRoute};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./cli-context-DI43ouBg.mjs";import t from"node:process";const n=Object.freeze({adoption:`v1-safe`,engine:`core`,source:`stable-default`});function r(e){return n}function i(){return Object.freeze({adoption:`v1-safe`,engine:`core`,source:`test`})}function a(n,r){e().logLevel===`debug`&&t.stderr.write(`[quantex:debug] ${n} engine=${r.engine} source=${r.source}\n`)}export{a as n,r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./detect-Dou6fit1.mjs";import{R as n,n as r,r as i}from"./agents-
|
|
1
|
+
import{c as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./detect-Dou6fit1.mjs";import{R as n,n as r,r as i}from"./agents-DqDXuTf0.mjs";import{Q as a,S as o,Z as s,et as c,x as l}from"./output-CbB-lipw.mjs";import{u}from"./providers-DUaztLRJ.mjs";import{t as d}from"./cli-operation-context-CzjG_eom.mjs";import{r as f}from"./package-manager-6SgDzwkw.mjs";import{r as p}from"./provider-binding-DW-oviNl.mjs";import{t as m}from"./agent-observation-CcBKTAZT.mjs";function h(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?p(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,resolveExecutablePath:t=>e.getResolvedBinaryPath(t),signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function g(e,t){return t?_(t).resolveAgentObservation(e):v(t=>t.resolveAgentObservation(e))}function _(e,s={}){return h({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>x(t,n,r,e),getOrderedInstallMethods:f,getPlatform:t,getResolvedBinaryPath:t=>a(t,e),inspectExecutable:(t,n)=>y(t,n,e),observeAgentLifecycle:m,providerRegistry:n,readInstalledState:l,readReceipt:o,signal:e.signal,timeoutMs:e.timeoutMs},s)}async function v(e){let t=d(),n=_(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function y(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let o=await b(t,n,r,i);return{path:await a(i,r)??i,present:!0,version:o}}async function b(e,t,n,r){return c(e.binaryName,e.versionProbe,n,r)}async function x(e,t,n,r){let i=u(e,t,n);return i?s(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-Dou6fit1.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-DAYz9yrG.mjs";import{f as i}from"./providers-CjFAR4Vt.mjs";import{t as a}from"./cli-operation-context-CzjG_eom.mjs";import{n as o}from"./agents-CESJI54l.mjs";import{a as s,t as c}from"./provider-binding-DB7IXxJp.mjs";import{t as l}from"./provider-evidence-AfeylhA4.mjs";import{n as u}from"./lifecycle-observations-DIBfXLT1.mjs";import{createHash as d}from"node:crypto";function f(e,t={}){let n=m(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(g)}}function p(e){return d(`sha256`).update(h(m(e)),`utf8`).digest(`hex`)}function m(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(m)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(g).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,m(n)]]}))}function h(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(h).join(`,`)}]`:`{${Object.keys(e).sort(g).map(t=>`${JSON.stringify(t)}:${h(e[t])}`).join(`,`)}}`}function g(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function _(e){if(e.length===0||!e.every(x))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function v(e){if(e.length===0||!e.every(C))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!O(e))return y(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return y(`legacy-record`);if(e.schemaVersion!==1)return y(`unsupported-schema`);if(!A(e,ee))return y(`malformed-record`);if(!w(e.createdAt)||!w(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return y(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return y(`failed-result`);if(t===`malformed`||!b(e.request)||!b(e.resolvedPlan)||!b(e.receipt)||!b(e.postcondition))return y(`malformed-record`);if(!ce(e.request.payload)||!T(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return y(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(p(t.payload)!==t.fingerprint)return y(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function y(e){return{kind:`invalid`,reason:e}}function ie(e){return!O(e)||!j(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!D(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!E(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!O(e)||!j(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&D(e.runId)&&D(e.schemaVersion)&&w(e.timestamp)&&D(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||w(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||w(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return O(e)&&j(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||D(e.name))}function se(e){return O(e)&&j(e,[`code`,`details`,`message`])&&D(e.code)&&D(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||T(e.details))}function b(e){return O(e)&&A(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return O(e)&&A(e,[`action`,`options`,`targets`])&&D(e.action)&&T(e.options)&&Array.isArray(e.targets)&&e.targets.every(D)?p(f({action:e.action,options:e.options,targets:e.targets}))===p(e):!1}function le(e){return T(e)?x(e)||S(e):!1}function x(e){return T(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&D(e.providerId)&&D(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||D(e.version))}function S(e){return T(e)?A(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,x):!1}function ue(e){return!T(e)||!D(e.kind)?!1:e.kind===`all-of`?A(e,ne)&&de(e.items,C):C(e)}function C(e){if(!T(e)||!D(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return D(e.providerId)&&D(e.targetId);case`executable-absent`:case`executable-present`:return D(e.executable);case`version-satisfies`:return D(e.expectedVersion)&&D(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(p);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:p(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function w(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function T(e){return O(e)&&E(e)}function E(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!k(r)||!E(r.value,t))return!1}return!0}return O(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return k(r)&&E(r.value,t)}):!1}finally{t.delete(e)}}function D(e){return typeof e==`string`&&e.length>0}function O(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&k(Reflect.getOwnPropertyDescriptor(e,t)))}function k(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function A(e,t){return Reflect.ownKeys(e).length===t.length&&j(e,t)&&t.every(t=>Object.hasOwn(e,t))}function j(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:B(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:Me(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(R),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:F(r,t),outcome:t})}let r=new Map;for(let e of n){let t=ke(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(t,n){let r=await n.observe(t);if(!r)return{agentName:t,kind:`unknown-agent`};if(n.signal.aborted)return{before:r,kind:`cancelled`,reason:B(n.signal)};let a=xe(r);if(!a){let e=r.observation.kind===`absent`&&r.observation.drift.kind===`recorded-absent`;return{before:r,category:e?`stale-state`:r.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${r.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${r.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}let o=i(r.agent,r.installedState);if(o)return{before:r,category:`superseded-package`,kind:`blocked`,reason:e(r.agent,o)};if(we(r.installedState)&&r.agent.selfUpdate){let e=M(r);return e?{kind:`planned`,planned:{before:r,beforeVersion:e,binding:a,commands:[r.agent.selfUpdate.command,...r.agent.selfUpdate.fallbackCommands??[]],planning:Te(r),strategy:`self-update`}}:{before:r,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${r.agent.displayName} self-update because its installed version is unknown.`}}let s=n.providerRegistry.get(a.providerId);if(!s?.resolveLatestVersion)return{before:r,category:`manual-required`,kind:`blocked`,reason:`Provider ${a.providerId} cannot resolve an update target version.`};let c=await s.resolveLatestVersion({context:P(n),target:a.target});if(c.kind!==`success`)return Ee(r,c);let l={capabilities:n.providerRegistry.getCapabilities(a.providerId),providerId:a.providerId,targetId:a.target.id,targetKind:a.target.kind},u=n.planLifecycleUpdate({intent:{kind:`update`,targetId:r.agent.name,targetVersion:c.value.version},observation:r.observation,provider:l});return{kind:`planned`,planned:{before:r,binding:a,plannedTargetVersion:c.value.version,planning:u,providerOptions:n.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:B(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:P(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=N(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:je(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:P(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:B(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:B(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=N(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:je(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,t){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,t.binding))return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(t.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains ${t.observation.drift.kind} drift.`};if(t.observation.kind!==`present`||!t.executable.present)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[t.observation.version,t.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>n(e,a)!==0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(t=>(n(t,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:t.observation,postcondition:r}}function Ce(e,t){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!z(e.binding,t.binding)||t.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(t.observation.kind!==`present`||!t.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=M(t),a=i?n(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:t.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function M(e){let t=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=t[0];return r&&t.every(e=>n(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function N(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function P(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function F(e,t){let n=`update-target:agent=${L(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};beforeVersion=${L(t.planned.beforeVersion)};commands=${t.planned.commands.map(I).join(`|`)};plan=${L(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${r.decision};plan=${L(r.plan.id)};version=${L(i)};${Ae(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${I(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${I(e.command)};evidence=${Oe(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${Oe(e.evidence)};reason=${L(e.reason)}`}}function I(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function Oe(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function ke(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${L(t.binding.providerId)};${Ae(t.providerOptions)}`}function Ae(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function R(e,t){return e<t?-1:e>t?1:0}function z(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Me(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ne(e,t=e=>o(e)?.name){return[...f({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Pe(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:o(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=K(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:F(r,n),targetId:r},async validateLive(e){let n=We(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Fe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:v(i.map(e=>e.postcondition)),receipt:_(i.map(e=>e.receipt))}},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Ge(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Ie(e,t={}){let n=t.observe??u,r=Ne(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:v(t.map(e=>e.postcondition)),receipt:_(t.map(e=>e.receipt))}},request:f({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:ze((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Le(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?p(a.evidence.postcondition)===p(i.postcondition)&&p(a.evidence.receipt)===p(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Le(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Re(e){try{return p(v(e.items))===p(e)}catch{return!1}}function V(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function ze(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=Be(n[e],r[e]);if(t!==0)return t}return 0})}function Be(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Ve(e,n={}){let r=n.observe??u,i=await r(e),a=i?.agent.name??e,o=i?Ke(i):void 0,s=n.observeProviderTarget??Ye,c=n.isExecutablePresent??t;return{async captureEvidence(){if(o&&Qe(await Xe(s,o.binding),o.binding)&&await Ze(c,o.executableName)===!1)return Je(o)},request:f({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=qe({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=He(n.observation);if(i!==`clear`)return{kind:i};let o=await Xe(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let l=await Ze(c,t.executableName);return l===void 0?{kind:`inconclusive`}:l?{kind:`drifted`}:{kind:`satisfied`}}}}function He(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function Ue(e,t,n={}){let r=await(n.observe??u)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??u)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:f({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??u)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?p(r.evidence)===p(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function We(e,t){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||n(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==t||i!==t||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!$e(c)||!et(s)||!$(c,s)))return{agentTargetId:t,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Ge(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=We({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=q(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=W([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function q(e,t,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==t.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:t.providerId,target:{id:t.providerTargetId,kind:t.providerTargetKind}};if(!c(i,e.binding,e.agent.binaryName)||!c(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==t.providerId||e.observation.providerTargetId!==t.providerTargetId||e.observation.providerTargetKind!==t.providerTargetKind||r.targetId!==t.agentTargetId||r.providerId!==t.providerId||r.providerTargetId!==t.providerTargetId||r.providerTargetKind!==t.providerTargetKind)return`drifted`;let a=W([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let o=n(a[0],t.expectedVersion);return o===void 0?`inconclusive`:o<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ke(e){let t=e.receipt?s(e.receipt):void 0;if(!(!t||!e.binding||!c(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function qe(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!$e(o)||!et(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Je(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Ye(e){let t=a();try{return await t.run(()=>l(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Xe(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ze(e,t){try{return await e(t)}catch{return}}function Qe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!S(e.receipt)}function $e(e){return r.includes(e)}function et(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Pe as a,ve as c,re as d,p as f,Ue as i,he as l,Ie as n,Ne as o,Fe as r,pe as s,Ve as t,_e as u};
|
|
1
|
+
import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-Dou6fit1.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-DAYz9yrG.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{t as a}from"./cli-operation-context-CzjG_eom.mjs";import{n as o}from"./agents-Dd4G-47n.mjs";import{a as s,t as c}from"./provider-binding-DW-oviNl.mjs";import{t as l}from"./provider-evidence-DxydUqAR.mjs";import{n as u}from"./lifecycle-observations-orGecdi1.mjs";import{createHash as d}from"node:crypto";function f(e,t={}){let n=m(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(g)}}function p(e){return d(`sha256`).update(h(m(e)),`utf8`).digest(`hex`)}function m(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(m)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(g).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,m(n)]]}))}function h(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(h).join(`,`)}]`:`{${Object.keys(e).sort(g).map(t=>`${JSON.stringify(t)}:${h(e[t])}`).join(`,`)}}`}function g(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function _(e){if(e.length===0||!e.every(x))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function v(e){if(e.length===0||!e.every(C))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!O(e))return y(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return y(`legacy-record`);if(e.schemaVersion!==1)return y(`unsupported-schema`);if(!A(e,ee))return y(`malformed-record`);if(!w(e.createdAt)||!w(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return y(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return y(`failed-result`);if(t===`malformed`||!b(e.request)||!b(e.resolvedPlan)||!b(e.receipt)||!b(e.postcondition))return y(`malformed-record`);if(!ce(e.request.payload)||!T(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return y(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(p(t.payload)!==t.fingerprint)return y(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function y(e){return{kind:`invalid`,reason:e}}function ie(e){return!O(e)||!j(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!D(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!E(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!O(e)||!j(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&D(e.runId)&&D(e.schemaVersion)&&w(e.timestamp)&&D(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||w(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||w(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return O(e)&&j(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||D(e.name))}function se(e){return O(e)&&j(e,[`code`,`details`,`message`])&&D(e.code)&&D(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||T(e.details))}function b(e){return O(e)&&A(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return O(e)&&A(e,[`action`,`options`,`targets`])&&D(e.action)&&T(e.options)&&Array.isArray(e.targets)&&e.targets.every(D)?p(f({action:e.action,options:e.options,targets:e.targets}))===p(e):!1}function le(e){return T(e)?x(e)||S(e):!1}function x(e){return T(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&D(e.providerId)&&D(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||D(e.version))}function S(e){return T(e)?A(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,x):!1}function ue(e){return!T(e)||!D(e.kind)?!1:e.kind===`all-of`?A(e,ne)&&de(e.items,C):C(e)}function C(e){if(!T(e)||!D(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return D(e.providerId)&&D(e.targetId);case`executable-absent`:case`executable-present`:return D(e.executable);case`version-satisfies`:return D(e.expectedVersion)&&D(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(p);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:p(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function w(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function T(e){return O(e)&&E(e)}function E(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!k(r)||!E(r.value,t))return!1}return!0}return O(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return k(r)&&E(r.value,t)}):!1}finally{t.delete(e)}}function D(e){return typeof e==`string`&&e.length>0}function O(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&k(Reflect.getOwnPropertyDescriptor(e,t)))}function k(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function A(e,t){return Reflect.ownKeys(e).length===t.length&&j(e,t)&&t.every(t=>Object.hasOwn(e,t))}function j(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:B(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:Me(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(R),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:F(r,t),outcome:t})}let r=new Map;for(let e of n){let t=ke(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(t,n){let r=await n.observe(t);if(!r)return{agentName:t,kind:`unknown-agent`};if(n.signal.aborted)return{before:r,kind:`cancelled`,reason:B(n.signal)};let a=xe(r);if(!a){let e=r.observation.kind===`absent`&&r.observation.drift.kind===`recorded-absent`;return{before:r,category:e?`stale-state`:r.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${r.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${r.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}let o=i(r.agent,r.installedState);if(o)return{before:r,category:`superseded-package`,kind:`blocked`,reason:e(r.agent,o)};if(we(r.installedState)&&r.agent.selfUpdate){let e=M(r);return e?{kind:`planned`,planned:{before:r,beforeVersion:e,binding:a,commands:[r.agent.selfUpdate.command,...r.agent.selfUpdate.fallbackCommands??[]],planning:Te(r),strategy:`self-update`}}:{before:r,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${r.agent.displayName} self-update because its installed version is unknown.`}}let s=n.providerRegistry.get(a.providerId);if(!s?.resolveLatestVersion)return{before:r,category:`manual-required`,kind:`blocked`,reason:`Provider ${a.providerId} cannot resolve an update target version.`};let c=await s.resolveLatestVersion({context:P(n),target:a.target});if(c.kind!==`success`)return Ee(r,c);let l={capabilities:n.providerRegistry.getCapabilities(a.providerId),providerId:a.providerId,targetId:a.target.id,targetKind:a.target.kind},u=n.planLifecycleUpdate({intent:{kind:`update`,targetId:r.agent.name,targetVersion:c.value.version},observation:r.observation,provider:l});return{kind:`planned`,planned:{before:r,binding:a,plannedTargetVersion:c.value.version,planning:u,providerOptions:n.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:B(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:P(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=N(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:je(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:P(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:B(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:B(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=N(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:je(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,t){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,t.binding))return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(t.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains ${t.observation.drift.kind} drift.`};if(t.observation.kind!==`present`||!t.executable.present)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[t.observation.version,t.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>n(e,a)!==0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(t=>(n(t,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:t.observation,postcondition:r}}function Ce(e,t){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!z(e.binding,t.binding)||t.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(t.observation.kind!==`present`||!t.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=M(t),a=i?n(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:t.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function M(e){let t=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=t[0];return r&&t.every(e=>n(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function N(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function P(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function F(e,t){let n=`update-target:agent=${L(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};beforeVersion=${L(t.planned.beforeVersion)};commands=${t.planned.commands.map(I).join(`|`)};plan=${L(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${r.decision};plan=${L(r.plan.id)};version=${L(i)};${Ae(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${I(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${I(e.command)};evidence=${Oe(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${Oe(e.evidence)};reason=${L(e.reason)}`}}function I(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function Oe(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function ke(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${L(t.binding.providerId)};${Ae(t.providerOptions)}`}function Ae(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function R(e,t){return e<t?-1:e>t?1:0}function z(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Me(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ne(e,t=e=>o(e)?.name){return[...f({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Pe(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:o(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=K(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:F(r,n),targetId:r},async validateLive(e){let n=We(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Fe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:v(i.map(e=>e.postcondition)),receipt:_(i.map(e=>e.receipt))}},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Ge(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Ie(e,t={}){let n=t.observe??u,r=Ne(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:v(t.map(e=>e.postcondition)),receipt:_(t.map(e=>e.receipt))}},request:f({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:ze((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Le(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?p(a.evidence.postcondition)===p(i.postcondition)&&p(a.evidence.receipt)===p(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Le(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Re(e){try{return p(v(e.items))===p(e)}catch{return!1}}function V(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function ze(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=Be(n[e],r[e]);if(t!==0)return t}return 0})}function Be(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Ve(e,n={}){let r=n.observe??u,i=await r(e),a=i?.agent.name??e,o=i?Ke(i):void 0,s=n.observeProviderTarget??Ye,c=n.isExecutablePresent??t;return{async captureEvidence(){if(o&&Qe(await Xe(s,o.binding),o.binding)&&await Ze(c,o.executableName)===!1)return Je(o)},request:f({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=qe({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=He(n.observation);if(i!==`clear`)return{kind:i};let o=await Xe(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let l=await Ze(c,t.executableName);return l===void 0?{kind:`inconclusive`}:l?{kind:`drifted`}:{kind:`satisfied`}}}}function He(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function Ue(e,t,n={}){let r=await(n.observe??u)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??u)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:f({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??u)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?p(r.evidence)===p(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function We(e,t){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||n(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==t||i!==t||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!$e(c)||!et(s)||!$(c,s)))return{agentTargetId:t,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Ge(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=We({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=q(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=W([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function q(e,t,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==t.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:t.providerId,target:{id:t.providerTargetId,kind:t.providerTargetKind}};if(!c(i,e.binding,e.agent.binaryName)||!c(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==t.providerId||e.observation.providerTargetId!==t.providerTargetId||e.observation.providerTargetKind!==t.providerTargetKind||r.targetId!==t.agentTargetId||r.providerId!==t.providerId||r.providerTargetId!==t.providerTargetId||r.providerTargetKind!==t.providerTargetKind)return`drifted`;let a=W([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let o=n(a[0],t.expectedVersion);return o===void 0?`inconclusive`:o<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ke(e){let t=e.receipt?s(e.receipt):void 0;if(!(!t||!e.binding||!c(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function qe(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!$e(o)||!et(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Je(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Ye(e){let t=a();try{return await t.run(()=>l(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Xe(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ze(e,t){try{return await e(t)}catch{return}}function Qe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!S(e.receipt)}function $e(e){return r.includes(e)}function et(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Pe as a,ve as c,re as d,p as f,Ue as i,he as l,Ie as n,Ne as o,Fe as r,pe as s,Ve as t,_e as u};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./messages-D6r2o7w-.mjs";import{$ as t,i as n,n as r}from"./output-
|
|
1
|
+
import{t as e}from"./messages-D6r2o7w-.mjs";import{$ as t,i as n,n as r}from"./output-CbB-lipw.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{i as a,r as o,t as s}from"./human-BbO37wBs.mjs";import{t as c}from"./color-CLDVRyIs.mjs";import{a as l}from"./user-output-CF4UAX0c.mjs";import{n as u,t as d}from"./agent-inspection-FouaG2Iz.mjs";async function f(){let t=(await u()).map(d);return n(r({action:`list`,data:{agents:t.map(e=>({binaryName:e.agent.binaryName,displayName:e.agent.displayName,installed:e.inPath,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,name:e.agent.name,sourceLabel:e.sourceLabel,updateLabel:e.updateLabel}))},target:{kind:`system`,name:`agents`},warnings:t.flatMap(t=>{let n=i(t.agent,t.installedState);return n?[e(t.agent,n)]:[]})}),p)}function p(e){let t=e.data?.agents??[],n=s(),r=new Set(e.warnings.filter(e=>e.code===`AGENT_PACKAGE_SUPERSEDED`).map(e=>e.details?.agentName).filter(e=>typeof e==`string`));console.log(c.bold(`
|
|
2
2
|
AI Agents:
|
|
3
3
|
`));for(let e of o(t,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Installed`,minWidth:5,value:e=>e.installed?c.green(`yes`):c.dim(`no`)},{header:`Version`,maxWidth:22,optional:!0,priority:2,value:e=>e.installed?c.dim(e.installedVersion??`unknown`):c.dim(`—`)},{header:`Source`,optional:!0,priority:2,value:e=>c.dim(e.installed?g(e.sourceLabel):`—`)},{header:`Managed`,optional:!0,priority:1,value:e=>e.installed?c.cyan(m(e.updateLabel)):c.dim(`—`)},{header:`Available`,optional:!0,priority:0,value:e=>h(e,r)}],{headerStyle:c.bold,width:n}))console.log(e);let i=t.filter(e=>e.installed).length,u=`${i} installed · ${t.length-i} not installed`;console.log();for(let e of a(c.dim(u),{indent:` `,width:n}))console.log(e);for(let e of a(c.dim(`Details: qtx inspect <agent>`),{indent:` `,width:n}))console.log(e);console.log();for(let t of e.warnings)l(c.yellow(t.message))}function m(e){return e.replace(/ update$/u,``)}function h(e,n){return n.has(e.name)?c.yellow(`migrate`):!e.installed||!e.installedVersion||!e.latestVersion?c.dim(`—`):t(e.latestVersion,e.installedVersion)?c.cyan(e.latestVersion):c.dim(`—`)}function g(e){return/^managed via ([^ (]+)/u.exec(e)?.[1]||(e===`script installer`?`script`:e===`binary installer`?`binary`:e===`detected on disk`?`detected`:`—`)}export{f as listCommand};
|