quantex-cli 1.13.0 → 1.13.2
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 +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/{agent-inspection-FouaG2Iz.mjs → agent-inspection-BGC8hn92.mjs} +1 -1
- package/dist/agents-BPG1DaPt.mjs +1 -0
- package/dist/{agents-DqDXuTf0.mjs → agents-M0IK-EAw.mjs} +1 -1
- package/dist/capabilities-DdzOucOL.mjs +1 -0
- package/dist/{capabilities-YTL8Nroj.mjs → capabilities-w7Fbc-bE.mjs} +1 -1
- package/dist/{cli-read-projection-DOFWDJDZ.mjs → cli-read-projection-3NGMRhuS.mjs} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/{commands-D6ixcs0U.mjs → commands-D3-X-CL4.mjs} +1 -1
- package/dist/commands-DSjvy4Bk.mjs +1 -0
- package/dist/{config-DUeu2PRE.mjs → config-DiKH7R9Y.mjs} +1 -1
- package/dist/{core-installation-cli-BF2QdfHE.mjs → core-installation-cli-BAkFQTw8.mjs} +1 -1
- package/dist/{detect-Dou6fit1.mjs → detect-CbD8V1su.mjs} +1 -1
- package/dist/{doctor-DXpczWOV.mjs → doctor-CmTohDAe.mjs} +1 -1
- package/dist/{ensure-CPWDOyF2.mjs → ensure-k2txyX68.mjs} +1 -1
- package/dist/ensure-tfMV3Ohr.mjs +1 -0
- package/dist/{executable-search-paths-Do0aoA1z.mjs → executable-search-paths-CfJ3prUX.mjs} +1 -1
- package/dist/file-store-C7Ak4t_P.mjs +2 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-DXcPuaGM.mjs → info-MZu-jL3s.mjs} +1 -1
- package/dist/inspect-Bwwy2d7a.mjs +1 -0
- package/dist/{inspect-DZMJfYDG.mjs → inspect-evUWakYc.mjs} +1 -1
- package/dist/{install-DmKhdgRw.mjs → install-D6HUqnaB.mjs} +1 -1
- package/dist/{installation-compatibility-vSytV42c.mjs → installation-compatibility--84wtWNO.mjs} +1 -1
- package/dist/installation-compatibility-D4ZJoPCT.mjs +1 -0
- package/dist/{installation-production-DxkcDNwa.mjs → installation-production-CQgjlxZO.mjs} +1 -1
- package/dist/{installation-provider-registry-CpJjzAO7.mjs → installation-provider-registry-WhPZzmCo.mjs} +1 -1
- package/dist/lifecycle-observations-xZ--ogpK.mjs +1 -0
- package/dist/{lifecycle-policy-jVfC5DFa.mjs → lifecycle-policy-BMJz8c77.mjs} +1 -1
- package/dist/{list-BPx1_Y-v.mjs → list-C0ELcSkZ.mjs} +1 -1
- package/dist/{output-CbB-lipw.mjs → output-PUVIMxAA.mjs} +3 -3
- package/dist/{package-manager-6SgDzwkw.mjs → package-manager-NlPhhpQl.mjs} +1 -1
- package/dist/production-observation-9e2raBHv.mjs +1 -0
- package/dist/{provider-evidence-DxydUqAR.mjs → provider-evidence-D9Y79LD5.mjs} +1 -1
- package/dist/provider-observation-registry-KrH9TMtQ.mjs +3 -0
- package/dist/{provider-observations-DzRKCxpH.mjs → provider-observations-CIGwqiZL.mjs} +1 -1
- package/dist/{providers-DUaztLRJ.mjs → providers-GfRcOIdh.mjs} +1 -1
- package/dist/resolve-DLdjUMyk.mjs +1 -0
- package/dist/{resolve-iQLTTM2u.mjs → resolve-S-TdJhLk.mjs} +1 -1
- package/dist/{schema-C7Q6DeFc.mjs → schema-B4yk5NPn.mjs} +1 -1
- package/dist/schema-urQvQbNJ.mjs +1 -0
- package/dist/{uninstall-wNejJx5C.mjs → uninstall-C04YMfwl.mjs} +1 -1
- package/dist/unmanaged-install-compatibility-D3hnfPRi.mjs +1 -0
- package/dist/update-CMjaldgI.mjs +1 -0
- package/dist/upgrade-BrOGjSft.mjs +1 -0
- package/package.json +1 -1
- package/dist/agents-Dd4G-47n.mjs +0 -1
- package/dist/capabilities-OcvdqVp1.mjs +0 -1
- package/dist/commands-BFpfOP6I.mjs +0 -1
- package/dist/ensure-RiH3rJ1Q.mjs +0 -1
- package/dist/file-store-oHCTTnLn.mjs +0 -2
- package/dist/inspect-BBNpi7tS.mjs +0 -1
- package/dist/installation-compatibility-X6JPRI5_.mjs +0 -1
- package/dist/lifecycle-observations-orGecdi1.mjs +0 -1
- package/dist/production-observation-v7S1oqsN.mjs +0 -1
- package/dist/provider-observation-registry-CgFXbZHd.mjs +0 -3
- package/dist/resolve-BhL4HG0c.mjs +0 -1
- package/dist/schema-C5Ka2AH1.mjs +0 -1
- package/dist/unmanaged-install-compatibility-cMT5elJV.mjs +0 -1
- package/dist/update-DC18mjYw.mjs +0 -1
- package/dist/upgrade-CZHbCBUm.mjs +0 -1
- /package/dist/{lifecycle-errors-Elpn7QSu.mjs → lifecycle-errors-D9MEtJ8Y.mjs} +0 -0
- /package/dist/{version-cache-BPRXYft0.mjs → version-cache-BbKTS491.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./file-store-
|
|
1
|
+
import{a as e}from"./file-store-C7Ak4t_P.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-PUVIMxAA.mjs";import{l}from"./providers-GfRcOIdh.mjs";import{n as u}from"./cli-operation-context-CzjG_eom.mjs";import{t as d}from"./package-manager-NlPhhpQl.mjs";import{n as f}from"./agents-BPG1DaPt.mjs";import{r as p}from"./provider-binding-DW-oviNl.mjs";import{n as m,t as h}from"./lifecycle-errors-D9MEtJ8Y.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-D4ZJoPCT.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 +1 @@
|
|
|
1
|
-
import{i as e,n as t,o as n,r}from"./child-process-DzIdysOm.mjs";import{s as i}from"./file-store-
|
|
1
|
+
import{i as e,n as t,o as n,r}from"./child-process-DzIdysOm.mjs";import{s as i}from"./file-store-C7Ak4t_P.mjs";import a from"node:process";function o(){switch(a.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}async function s(i,o){try{let t=n([i,`--version`],{detached:o!==void 0&&a.platform!==`win32`}),{exitCode:s}=o?await e(t,o):await r(t);return s===0}catch(e){if(t(e))throw e;return!1}}async function c(e){return s(`bun`,e)}async function l(e){return s(`npm`,e)}async function u(e){return s(`brew`,e)}async function d(e){return s(`deno`,e)}async function f(e){return s(`cargo`,e)}async function p(e){return s(`mise`,e)}async function m(e){return s(`winget`,e)}async function h(e){return await s(`pip`,e)||await s(`pip3`,e)?!0:_(e)}async function g(e){return s(`uv`,e)}async function _(i){try{let t=n([`python`,`-m`,`pip`,`--version`],{detached:i!==void 0&&a.platform!==`win32`}),{exitCode:o}=i?await e(t,i):await r(t);if(o===0)return!0}catch(e){if(t(e))throw e}try{let t=n([`python3`,`-m`,`pip`,`--version`],{detached:i!==void 0&&a.platform!==`win32`}),{exitCode:o}=i?await e(t,i):await r(t);return o===0}catch(e){if(t(e))throw e;return!1}}async function v(e,t){return i(e,t)}export{f as a,l as c,m as d,c as i,h as l,v as n,d as o,u as r,p as s,o as t,g as u};
|
|
@@ -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-PUVIMxAA.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-CIGwqiZL.mjs";import{t as p}from"./color-CLDVRyIs.mjs";import{n as m,t as h}from"./agent-inspection-BGC8hn92.mjs";function g(e){let{installers:t,self:n}=e,{brew:r,bun:i,cargo:a,deno:o,mise:s,npm:c,pip:l,uv:u,winget:d}=t,f=n.latestVersion?v(n.latestVersion,n.currentVersion):!1,p=e.agents.filter(e=>e.inPath).map(e=>({displayName:e.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:_(e),sourceLabel:e.sourceLabel})),m=[];if(!i&&!c&&!r&&!a&&!o&&!s&&!l&&!u&&!d&&m.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:e.docs.troubleshooting,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(n.installSource===`bun`&&!i||n.installSource===`npm`&&!c)&&m.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI is tracked as a ${n.installSource} install, but ${n.installSource} is not available in PATH. Reinstall that package manager or reinstall Quantex from a supported source.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`restore-self-installer`,suggestedCommands:y(n.installSource,n.updateChannel,n.packageName)}),n.canAutoUpdate||m.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:e.docs.selfUpgrade,message:`Quantex CLI cannot auto-update from install source "${n.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),f&&n.recommendedUpgradeCommand){let t=n.recoveryHint;m.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:e.docs.selfUpgrade,message:t?`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand} or follow: ${t}`:`Quantex CLI ${n.currentVersion} is behind ${n.latestVersion}. Run ${n.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[n.recommendedUpgradeCommand]})}for(let t of e.agents.filter(e=>e.inPath)){if(t.untracked&&m.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:e.docs.troubleshooting,message:`${t.displayName} is detected on disk but not tracked as a managed Quantex install. Use \`quantex inspect ${t.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${t.name} --json`,`quantex install ${t.name}`]}),!_(t)||t.lifecycle===`managed`)continue;let n=t.selfUpdateCommand!==void 0,r=n?`Try running ${t.selfUpdateCommand} directly.`:`Check ${t.homepage} for the recommended update path.`;m.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:e.docs.troubleshooting,message:`${t.displayName} ${t.installedVersion} is behind ${t.latestVersion}, but the current source is ${t.sourceLabel}. ${r}`,severity:`warning`,subject:{kind:`agent`,name:t.name},suggestedAction:n?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n&&t.selfUpdateCommand?[t.selfUpdateCommand]:[]})}return{agents:p,issues:m,installers:t,self:{canAutoUpdate:n.canAutoUpdate,currentVersion:n.currentVersion,installSource:n.installSource,latestVersion:n.latestVersion,outdated:!!f,recoveryHint:f?n.recoveryHint:void 0}}}function _(e){return!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion)}function v(t,n){return e(t,n)===1}function y(e,t,n){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}async function b(){let e=u(),n,r,o;try{[n,r,o]=await e.run(()=>Promise.all([f({context:e.context}),i({context:e.context}),m(e.context)]))}finally{e.dispose()}let s=d(n,e=>e.availability.kind===`success`);return g({agents:o.map(e=>{let t=h(e);return{displayName:t.agent.displayName,homepage:t.agent.homepage,inPath:t.inPath,installedVersion:t.installedVersion,latestVersion:t.latestVersion,lifecycle:t.lifecycle,name:t.agent.name,selfUpdateCommand:t.agent.selfUpdate?t.agent.selfUpdate.command.join(` `):void 0,sourceLabel:t.sourceLabel,untracked:e.observation.drift.kind===`untracked`}}),docs:{selfUpgrade:`docs/runbooks/release-and-self-upgrade-debugging.md`,troubleshooting:`docs/runbooks/quantex-troubleshooting.md`},installers:s,self:{canAutoUpdate:r.canAutoUpdate,currentVersion:r.currentVersion,installSource:r.installSource,latestVersion:r.latestVersion,packageName:t,recommendedUpgradeCommand:r.recommendedUpgradeCommand,recoveryHint:a(r),updateChannel:r.updateChannel}})}async function x(){return n(r({action:`doctor`,data:await b(),target:{kind:`system`,name:`doctor`}}),S)}function S(e){if(!e.data)return;let t=l();console.log(p.bold(`
|
|
2
2
|
Quantex CLI Environment Check
|
|
3
3
|
`));let n=Object.entries(e.data.installers).map(([e,t])=>({available:t,name:e}));console.log(p.bold(`Managed Installers
|
|
4
4
|
`));for(let e of c(n,[{header:`Installer`,value:e=>e.name},{header:`Status`,value:e=>e.available?p.green(`available`):p.red(`not found`)}],{headerStyle:p.bold,width:t}))console.log(e);let r=[{label:`Version`,value:e.data.self.currentVersion},{label:`Source`,value:e.data.self.installSource},{label:`Auto-update`,value:e.data.self.canAutoUpdate?p.green(`supported`):p.yellow(`unsupported`)},...e.data.self.latestVersion?[{label:`Latest`,value:`${e.data.self.latestVersion}${e.data.self.outdated?p.yellow(` (update available)`):``}`}]:[],...e.data.self.recoveryHint?[{label:`Recovery`,value:e.data.self.recoveryHint}]:[]];console.log(`\n${p.bold(`Quantex CLI`)}\n`);for(let e of s(r,{labelStyle:p.bold,width:t}))console.log(e);if(console.log(`\n${p.bold(`Installed Agents`)}\n`),e.data.agents.length===0)console.log(p.dim(` No agents installed`));else for(let n of c(e.data.agents,[{header:`Agent`,minWidth:8,value:e=>e.displayName},{header:`Version`,maxWidth:24,value:e=>e.outdated&&e.latestVersion?p.yellow(`${e.installedVersion??`unknown`} → ${e.latestVersion}`):e.installedVersion??`unknown`},{header:`Lifecycle`,optional:!0,priority:2,value:e=>e.lifecycle},{header:`Source`,optional:!0,priority:1,value:e=>p.dim(e.sourceLabel)}],{headerStyle:p.bold,width:t}))console.log(n);if(console.log(`\n${p.bold(`Issues`)}\n`),e.data.issues.length===0)console.log(p.green(` No issues found.`));else for(let n of e.data.issues){for(let e of o(p.yellow(n.message),{continuationIndent:` `,indent:` - `,width:t}))console.log(e);if(n.suggestedCommands.length>0)for(let e of o(p.dim(`Next: ${n.suggestedCommands.join(` | `)}`),{indent:` `,width:t}))console.log(e)}console.log()}export{x as doctorCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t}from"./output-
|
|
1
|
+
import{i as e,n as t}from"./output-PUVIMxAA.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-D3hnfPRi.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-BAkFQTw8.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-k2txyX68.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join as e}from"node:path";const t=[`.exe`,`.cmd`,`.bat`,`.com`];function n(t){let{env:n,homeDir:r,platform:i}=t,a=n.BUN_INSTALL?.trim()||e(r,`.bun`),o=n.CARGO_HOME?.trim()||e(r,`.cargo`),s=n.DENO_INSTALL_ROOT?.trim()||e(r,`.deno`),c=i===`win32`?[e(a,`bin`),e(o,`bin`),e(s,`bin`),...n.APPDATA?.trim()?[e(n.APPDATA.trim(),`npm`)]:[],...n.LOCALAPPDATA?.trim()?[e(n.LOCALAPPDATA.trim(),`Programs`)]:[]]:[e(r,`.local`,`bin`),e(r,`bin`),e(a,`bin`),e(o,`bin`),e(s,`bin`),e(r,`.npm-global`,`bin`)];return[...new Set(c.filter(Boolean))]}function r(e,n){if(n.platform!==`win32`)return[e];let r=n.env.PATHEXT?.split(`;`).map(e=>e.trim().toLowerCase()).filter(Boolean);return[e,...(r?.length?r:t).map(t=>`${e}${t}`)]}export{n,r as t};
|
|
1
|
+
import{join as e}from"node:path";const t=[`.exe`,`.cmd`,`.bat`,`.com`];function n(t){let{env:n,homeDir:r,platform:i}=t,a=n.BUN_INSTALL?.trim()||e(r,`.bun`),o=n.CARGO_HOME?.trim()||e(r,`.cargo`),s=n.DENO_INSTALL_ROOT?.trim()||e(r,`.deno`),c=i===`win32`?[e(a,`bin`),e(o,`bin`),e(s,`bin`),...n.APPDATA?.trim()?[e(n.APPDATA.trim(),`npm`)]:[],...n.LOCALAPPDATA?.trim()?[e(n.LOCALAPPDATA.trim(),`Programs`)]:[]]:[e(r,`.local`,`bin`),e(r,`bin`),e(a,`bin`),e(o,`bin`),e(s,`bin`),e(r,`.npm-global`,`bin`)];return[...new Set(c.filter(Boolean))]}function r(e,t=[]){let n=[];for(let r of[...t,e])r.length>0&&!n.includes(r)&&n.push(r);return n}const i={cursor:[`cursor-agent`]};function a(e){return r(e.binaryName,i[e.name])}function o(e,n){if(n.platform!==`win32`)return[e];let r=n.env.PATHEXT?.split(`;`).map(e=>e.trim().toLowerCase()).filter(Boolean);return[e,...(r?.length?r:t).map(t=>`${e}${t}`)]}export{o as n,n as r,a as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,n as t,o as n,r}from"./child-process-DzIdysOm.mjs";import{n as i,r as a}from"./executable-search-paths-CfJ3prUX.mjs";import{a as o,i as s,n as c,o as l,r as u}from"./schema-BBnWVY6R.mjs";import{t as d}from"./config-jsaRCEWF.mjs";import{constants as f,mkdirSync as p,writeFileSync as m}from"node:fs";import{dirname as h,join as g}from"node:path";import _ from"node:process";import{access as v,mkdir as y,readFile as b,rename as x,rm as S,writeFile as C}from"node:fs/promises";import{homedir as w}from"node:os";function T(){return{env:_.env,homeDir:w(),platform:_.platform}}async function E(i,a){try{let t=n([_.platform===`win32`?`where`:`which`,i],{detached:a!==void 0&&_.platform!==`win32`}),{exitCode:o,stdout:s}=a?await e(t,a):await r(t);return o===0&&s.trim().split(`
|
|
2
|
+
`)[0]?.trim()||void 0}catch(e){if(t(e))throw e;return}}async function D(e,t){let n=i(e,t);for(let e of a(t))for(let t of n){let n=g(e,t);try{return await v(n,f.X_OK),n}catch{}}}async function O(e,t){let n=typeof e==`string`?[e]:e;for(let e of n){let n=await E(e,t);if(n)return n;if(t?.signal.aborted)return;let r=await D(e,T());if(r)return r}}async function k(e,t){return await O(e,t)!==void 0}var A=class extends Error{lockPath;resource;constructor(e,t){super(`Another quantex process is already using the ${e} lock.`),this.name=`ResourceLockError`,this.lockPath=t,this.resource=e}};function j(e){return e instanceof A}function M(e,t){let n=t.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),r=n.length>0?n:[`default`],i=r.slice(0,-1),a=`${r.at(-1)}.lock`;return g(e,`locks`,...i,a)}async function N(e,t){let n=M(e,t.scope);return await y(h(n),{recursive:!0}),await F(t.resource,n),async()=>{await S(n,{force:!0,recursive:!0})}}async function P(e){return await N(d(),e)}async function F(e,t){try{p(t,{recursive:!1}),I(t);return}catch(e){if(!V(e))throw e}if(!await L(t))throw new A(e,t);try{p(t,{recursive:!1}),I(t)}catch(n){throw V(n)?new A(e,t):n}}function I(e){m(g(e,`owner.json`),`${JSON.stringify({pid:_.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function L(e){let t;try{t=await R(e)}catch{return!1}return t&&B(t.pid)?!1:(await S(e,{force:!0,recursive:!0}),!0)}async function R(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await z(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await z(e)}async function z(e){try{let t=await b(g(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(H(e))return;throw e}}function B(e){try{return _.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function V(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function H(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function U(e,t,n){let r=await N(e,t);try{return await n()}finally{await r()}}async function W(e,t){return await U(d(),e,t)}var G=class extends Error{backupFilePath;primaryError;recoveryError;constructor(e){super(`Failed to restore the original Quantex state after a persistence failure.`,{cause:e.recoveryError}),this.name=`StateRecoveryError`,this.backupFilePath=e.backupFilePath,this.primaryError=e.primaryError,this.recoveryError=e.recoveryError}},K=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:J(e)}async save(e){let t=s(e);if(t.source!==`current`)throw Error(`Refusing to persist an unversioned state document.`);let{backupFilePath:n,directoryPath:r,stateFilePath:i,tempFileSuffix:a}=this.options,o=`${n}.tmp-${a}`,c=`${i}.tmp-${a}`,l=`${i}.restore-${a}`,u=await this.readOptional(i),d=u===void 0?void 0:s(J(u)),f=`${JSON.stringify(t.document,null,2)}\n`,p=!1;await this.options.fileSystem.makeDirectory(r);try{u!==void 0&&d?.source===`legacy`&&(await this.options.fileSystem.writeText(o,u),await this.validateBackup(o,u),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,u)),await this.options.fileSystem.writeText(c,f),Y(await this.options.fileSystem.readText(c)),await this.options.fileSystem.rename(c,i),p=!0,Y(await this.options.fileSystem.readText(i))}catch(e){let t;try{p&&await this.restoreOriginal(u,l,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,c,l)}throw t===void 0?e:new G({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,c,l)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(X(e))return;throw e}}async validateBackup(e,t){let n=await this.options.fileSystem.readText(e);if(n!==t)throw Error(`State migration backup does not match the original state.`);s(J(n))}async restoreOriginal(e,t,n){if(e===void 0){if(await this.options.fileSystem.remove(n),await this.readOptional(n)!==void 0)throw Error(`New state remained after rollback removal.`);return}await this.options.fileSystem.writeText(t,e),await this.options.fileSystem.rename(t,n);let r=await this.options.fileSystem.readText(n);if(r!==e)throw Error(`Restored state does not match the original state.`);s(J(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},q=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?c():s(e).document}async loadProjection(){return o(await this.loadDocument())}async saveDocument(e){let t=s(e);if(t.source!==`current`)throw Error(`State documents must use the current state schema.`);await this.persistence.save(t.document)}async saveProjection(e){let t=l(await this.loadDocument(),e);await this.saveDocument(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=u(e.targetId,e),n=await this.loadDocument(),r=s({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(r.document)}async setAgentLifecycleEvidence(e,t){let n=u(t.targetId,t);if(e.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let r=await this.loadDocument(),i=s({...r,installedAgents:{...r.installedAgents,[e.agentName]:e},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}});if(i.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.saveDocument({...t,lifecycleReceipts:n})}};function J(e){return JSON.parse(e)}function Y(e){if(s(J(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function X(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}const Z={async makeDirectory(e){await y(e,{recursive:!0})},async readText(e){return b(e,`utf8`)},async remove(e){await S(e,{force:!0})},async rename(e,t){await x(e,t)},async writeText(e,t){await C(e,t,`utf8`)}};function Q(e){return g(e,`state.json`)}function $(e,t=String(_.pid)){let n=Q(e);return new q(new K({backupFilePath:`${n}.v1.bak`,directoryPath:e,fileSystem:Z,stateFilePath:n,tempFileSuffix:t}))}export{j as a,O as c,N as i,Q as n,W as o,P as r,k as s,$ as t};
|
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-
|
|
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-CbD8V1su.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-M0IK-EAw.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-PUVIMxAA.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-GfRcOIdh.mjs";import{t as Je}from"./capabilities-w7Fbc-bE.mjs";import{t as Ye}from"./commands-D3-X-CL4.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-NlPhhpQl.mjs";import{a as it,i as K,n as at,r as ot,t as q}from"./agents-BPG1DaPt.mjs";import{t as st}from"./update-planner-Bnlt3KKP.mjs";import{t as ct}from"./ensure-k2txyX68.mjs";import{t as lt}from"./inspect-evUWakYc.mjs";import{t as ut}from"./resolve-S-TdJhLk.mjs";import{n as dt,t as ft}from"./schema-B4yk5NPn.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-PUVIMxAA.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-BGC8hn92.mjs";import{t as c}from"./cli-read-projection-3NGMRhuS.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-evUWakYc.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-PUVIMxAA.mjs";import{f as i}from"./providers-GfRcOIdh.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-BGC8hn92.mjs";import{t as d}from"./cli-read-projection-3NGMRhuS.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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./cli-context-DI43ouBg.mjs";import{i as t,n,r,t as i}from"./output-
|
|
1
|
+
import{n as e}from"./cli-context-DI43ouBg.mjs";import{i as t,n,r,t as i}from"./output-PUVIMxAA.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-D3hnfPRi.mjs";import{o as f}from"./lifecycle-policy-BMJz8c77.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-BAkFQTw8.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};
|
package/dist/{installation-compatibility-vSytV42c.mjs → installation-compatibility--84wtWNO.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-9e2raBHv.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-CQgjlxZO.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{t as e}from"./installation-compatibility--84wtWNO.mjs";export{e as createCoreInstallationCompatibilityExecutor};
|
|
@@ -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-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};
|
|
1
|
+
import{i as e,t}from"./file-store-C7Ak4t_P.mjs";import{t as n}from"./detect-CbD8V1su.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-9e2raBHv.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-WhPZzmCo.mjs`)]);return R({configDir:e,providerRegistry:n.createCoreInstallationProviderRegistry(),recipeCatalog:t})}function R(r){let i=r.acquireResourceLock??e,a=r.clock??(()=>new Date().toISOString()),o=r.platform??n(),c=r.providerRegistry,l=r.readPorts??s({providerRegistry:c}),d=r.stateStore??t(r.configDir);return{compensate:(e,t)=>V(c,e,t),install:(e,t)=>z(c,e,`install`,t),observe:(e,t,n)=>l.inspectAgent(e,{...t,configDir:r.configDir},n),prepareRecord:({before:e,context:t,recipe:n,verified:o})=>H({acquireLock:i,before:e,clock:a,configDir:r.configDir,context:t,recipe:n,stateStore:d,verified:o}),resolveRecipe:e=>u({...e,catalog:r.recipeCatalog,platform:o,providerRegistry:c}),verify:(e,t)=>B(c,e,t),withMutationLock:(e,t,n)=>K(i,r.configDir,{resource:`agent lifecycle`,scope:[`agent-lifecycle`]},t,n)}}async function z(e,t,n,r){let i=e.get(t.binding.providerId),a=i?.[n];return!i||!a?J(n,t):await q(()=>a({context:r,target:t.binding.target}),r,n)}async function B(e,t,n){let r=e.get(t.binding.providerId);return r?.verify?await q(()=>r.verify({context:n,target:t.binding.target}),n,`verify`):J(`verify`,t)}async function V(e,t,n){if(t.compensation===`manual`)return J(`uninstall`,t);let r=e.get(t.binding.providerId);if(!r?.uninstall)return J(`uninstall`,t);let i=await q(()=>r.uninstall({context:n,target:t.binding.target}),n,`uninstall`);if(i.kind!==`success`)return i;let a=await q(()=>r.observe({context:n,target:t.binding.target}),n,`observe`);return a.kind===`success`&&a.value.kind===`absent`&&X(a.value.target,t.binding.target)?i:{kind:`failed`,reason:Q(a,`Compensation did not verify the selected target as absent.`),remediation:`Inspect and remove the selected provider target manually before retrying.`,retryable:!1}}async function H(e){let t=U(e.recipe,e.verified,e.clock),n,r;return r=await M(e.stateStore,e.recipe.installedState,t,async()=>{n=await G(e.acquireLock,e.configDir,{resource:`state`,scope:[`state`]},e.context);try{return W(await e.stateStore.loadDocument(),e.before),n.release}catch(e){throw await n.release(),e}}),n?.transferCleanup(()=>r.rollback()),r}function U(e,t,n){let r=t.observation,i=t.resolvedBinaryPath??(r.kind===`present`?r.executablePath:t.executable.path),a=r.kind===`present`?r.version:t.executable.version;return{...e.binding.target.binaryName?{executableName:e.binding.target.binaryName}:{},...i?{executablePath:i}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.installedState.agentName,verifiedAt:r.observedAt??n(),...a?{version:a}:{}}}function W(e,t){let n=t.agent.name;if(!c(e.installedAgents[n],t.installedState)||!c(e.lifecycleReceipts[n],t.receipt))throw Error(`Recorded agent evidence changed while the lifecycle mutation was in progress.`)}async function G(e,t,n,r){let i=await e(t,n),a,o=()=>s(),s=()=>(a??=Promise.resolve().then(()=>i()),a),c=r.registerCleanup({cleanup:()=>o(),force:()=>o()});return{release:async()=>{c(),await s()},transferCleanup(e){o=e}}}async function K(e,t,n,r,i){let a=await G(e,t,n,r),o,s=new Promise(e=>{o=e});a.transferCleanup(async()=>{await s,await a.release()});try{return await i()}finally{o(),await a.release()}}async function q(e,t,n){try{return await e()}catch(e){return t.signal.aborted?{kind:`cancelled`,...t.signal.reason===void 0?{}:{reason:$(t.signal.reason)}}:Y(e)||{kind:`failed`,reason:`${n} provider rejected: ${$(e)}`,retryable:!1}}}function J(e,t){return{kind:`unsupported`,operation:e,reason:`Provider ${t.binding.providerId} does not support ${e}.`}}function Y(e){if(!(!e||typeof e!=`object`||!(`kind`in e))){if(e.kind===`cancelled`)return{kind:`cancelled`,...`reason`in e&&e.reason!==void 0?{reason:$(e.reason)}:{}};if(e.kind===`timed-out`&&`timeoutMs`in e&&typeof e.timeoutMs==`number`)return{kind:`timed-out`,timeoutMs:e.timeoutMs}}}function X(e,t){return e.id===t.id&&e.kind===t.kind&&e.binaryName===t.binaryName&&Z(e.arguments,t.arguments)}function Z(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}function Q(e,t){return e.kind!==`success`&&`reason`in e&&e.reason?e.reason:t}function $(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core provider operation failed.`}export{L as loadProductionCoreInstallationPorts};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,g as t,p as n,r,u as i}from"./npm-PO9Nwgt_.mjs";import{D as a,E as o,F as s,N as c,S as l,V as u,b as d,c as f,g as p,i as m,k as h,m as g,n as _,u as v,z as y}from"./winget-BA9H6Ve-.mjs";import{r as b}from"./registry-vhJzh8dW.mjs";import{t as x}from"./types-DAYz9yrG.mjs";import{t as S}from"./provider-observation-registry-
|
|
1
|
+
import{a as e,g as t,p as n,r,u as i}from"./npm-PO9Nwgt_.mjs";import{D as a,E as o,F as s,N as c,S as l,V as u,b as d,c as f,g as p,i as m,k as h,m as g,n as _,u as v,z as y}from"./winget-BA9H6Ve-.mjs";import{r as b}from"./registry-vhJzh8dW.mjs";import{t as x}from"./types-DAYz9yrG.mjs";import{t as S}from"./provider-observation-registry-KrH9TMtQ.mjs";const C=Object.freeze([`availability`,`observe`,`install`,`uninstall`,`verify`]),w=Object.freeze([`availability`,`observe`,`install`,`verify`]),T=Object.freeze([]),E={bun:{install:e=>i(e.target.id,e.options?.distTag,e.options?.registry,e.context),installCommand:e=>{let t=b(e.options?.registry),n=e.options?.distTag?`${e.target.id}@${e.options.distTag}`:e.target.id;return[`bun`,`add`,`-g`,...t?[`--registry`,t]:[],n]},uninstall:e=>n(e.target.id,e.context,e.target.binaryName),uninstallCommand:e=>[`bun`,`remove`,`-g`,e.target.id]},brew:{install:e=>y(e.target.id,F(e.target),e.context),installCommand:e=>I(`install`,e.target),uninstall:e=>u(e.target.id,F(e.target),e.context),uninstallCommand:e=>I(`uninstall`,e.target)},cargo:{install:e=>c(e.target.id,P(e.target),e.context),installCommand:e=>[`cargo`,`install`,e.target.id,...e.target.arguments??[]],uninstall:e=>s(e.target.id,e.context),uninstallCommand:e=>[`cargo`,`uninstall`,e.target.id]},deno:{install:e=>a(e.target.id,P(e.target),e.context),installCommand:e=>[`deno`,`install`,`--global`,...e.target.arguments??[],e.target.id],uninstall:e=>h(o(e.target.id,e.target.binaryName),e.context),uninstallCommand:e=>[`deno`,`uninstall`,`--global`,o(e.target.id,e.target.binaryName)]},mise:{install:e=>d(e.target.id,e.context),installCommand:e=>[`mise`,`use`,`--global`,e.target.id],uninstall:e=>l(e.target.id,e.context),uninstallCommand:e=>[`mise`,`unuse`,`--global`,e.target.id]},npm:{install:e=>r(e.target.id,e.options?.distTag,e.options?.registry,e.context),installCommand:e=>{let t=b(e.options?.registry);return[`npm`,`install`,`-g`,e.options?.distTag?`${e.target.id}@${e.options.distTag}`:e.target.id,...t?[`--registry`,t]:[]]},uninstall:t=>e(t.target.id,t.context),uninstallCommand:e=>[`npm`,`uninstall`,`-g`,e.target.id]},pip:{install:e=>g(e.target.id,e.context),installCommand:e=>[`pip`,`install`,e.target.id],uninstall:e=>p(e.target.id,e.context),uninstallCommand:e=>[`pip`,`uninstall`,`-y`,e.target.id]},uv:{install:e=>f(e.target.id,P(e.target),e.context),installCommand:e=>[`uv`,`tool`,`install`,e.target.id,...e.target.arguments??[]],uninstall:e=>v(e.target.id,e.context),uninstallCommand:e=>[`uv`,`tool`,`uninstall`,e.target.id]},winget:{install:e=>_(e.target.id,e.context),installCommand:e=>L(`install`,e.target),uninstall:e=>m(e.target.id,e.context),uninstallCommand:e=>L(`uninstall`,e.target)}};function D(e={}){let n=e.observationRegistry??S(),r=e.platform??z(),i=e.executeEffect??((e,n)=>t(e,n,`install effect failed`)),a=x.map(e=>{let t=n.get(e);if(!t)throw Error(`Core observation registry is missing first-party provider ${e}.`);return e===`binary`||e===`script`?k(e,t,r,i):O(e,t,E[e])}),o=Object.freeze([...a]),s=new Map(o.map(e=>[e.id,e]));return Object.freeze({get:e=>s.get(e),getCapabilities:e=>s.has(e)?e===`binary`||e===`script`?w:C:T,list:()=>o})}function O(e,t,n){let r={availability:t.availability,id:e,install:t=>A(e,t.target,n.installCommand(t),()=>n.install(t)),observe:t.observe,uninstall:t=>A(e,t.target,n.uninstallCommand(t),()=>n.uninstall(t)),verify:e=>j(t,e)};return Object.freeze(r)}function k(e,t,n,r){let i={availability:t.availability,id:e,async install(t){let i=t.target.effect;if(!i)return{evidence:[{kind:`provider`,value:e}],kind:`failed`,reason:`${e} install target ${t.target.id} has no execution effect`,remediation:`Select a candidate with an explicit shell-script or executable effect.`,retryable:!1};let a=R(i,n);return A(e,t.target,a,()=>r(a,t.context))},observe:t.observe,verify:e=>j(t,e)};return Object.freeze(i)}async function A(e,t,n,r){let i=await r();if(i.kind===`success`)return{kind:`success`,value:{evidence:M(e,n),target:t}};if(i.kind!==`failed`)return i;let a=i.command??n;return{...i,command:a,evidence:N(e,a,i.evidence)}}async function j(e,t){let n=await e.observe(t);if(n.kind!==`success`)return n;let r=n.value.evidence??[];return{kind:`success`,value:n.value.kind===`absent`?{evidence:r,kind:`unsatisfied`,reason:`${t.target.id} is not installed through ${e.id}`}:{evidence:r,kind:`satisfied`}}}function M(e,t){return[{kind:`provider`,value:e},{kind:`command`,value:t.join(` `)}]}function N(e,t,n){let r=M(e,t);return n?.length?[...r,...n.filter(e=>!r.some(t=>t.kind===e.kind&&t.value===e.value))]:r}function P(e){return e.arguments?[...e.arguments]:void 0}function F(e){return e.kind===`cask`?`cask`:`package`}function I(e,t){return[`brew`,e,...t.kind===`cask`?[`--cask`]:[],t.id]}function L(e,t){return[`winget`,e,`--id`,t.id,`-e`]}function R(e,t){return e.kind===`executable`?e.command:t===`windows`?[`powershell.exe`,`-Command`,e.command]:[`sh`,`-c`,e.command]}function z(){switch(process.platform){case`win32`:return`windows`;case`darwin`:return`macos`;default:return`linux`}}export{D as createCoreInstallationProviderRegistry};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./executable-search-paths-CfJ3prUX.mjs";import{c as t}from"./file-store-C7Ak4t_P.mjs";import{t as n}from"./detect-CbD8V1su.mjs";import{R as r,n as i,r as a}from"./agents-M0IK-EAw.mjs";import{Q as o,S as s,Z as c,et as l,x as u}from"./output-PUVIMxAA.mjs";import{u as d}from"./providers-GfRcOIdh.mjs";import{t as f}from"./cli-operation-context-CzjG_eom.mjs";import{r as p}from"./package-manager-NlPhhpQl.mjs";import{r as m}from"./provider-binding-DW-oviNl.mjs";import{t as h}from"./agent-observation-CcBKTAZT.mjs";function g(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?m(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 _(e,t){return t?v(t).resolveAgentObservation(e):y(t=>t.resolveAgentObservation(e))}function v(e,t={}){return g({clock:()=>new Date().toISOString(),getAllAgents:a,getAgentByNameOrAlias:i,getLatestVersion:(t,n,r)=>S(t,n,r,e),getOrderedInstallMethods:p,getPlatform:n,getResolvedBinaryPath:t=>o(t,e),inspectExecutable:(t,n)=>b(t,n,e),observeAgentLifecycle:h,providerRegistry:r,readInstalledState:u,readReceipt:s,signal:e.signal,timeoutMs:e.timeoutMs},t)}async function y(e){let t=f(),n=v(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function b(n,r,i){let a=await t(e(n),i);if(!a)return{present:!1};let s=await x(n,r,i,a);return{path:await o(a,i)??a,present:!0,version:s}}async function x(e,t,n,r){return l(e.binaryName,e.versionProbe,n,r)}async function S(e,t,n,r){let i=d(e,t,n);return i?c(i,`latest`,{context:r}):void 0}export{_ as n,v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-Dou6fit1.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-DAYz9yrG.mjs";import{f as i}from"./providers-DUaztLRJ.mjs";import{t as a}from"./cli-operation-context-CzjG_eom.mjs";import{n as o}from"./agents-Dd4G-47n.mjs";import{a as s,t as c}from"./provider-binding-DW-oviNl.mjs";import{t as l}from"./provider-evidence-DxydUqAR.mjs";import{n as u}from"./lifecycle-observations-orGecdi1.mjs";import{createHash as d}from"node:crypto";function f(e,t={}){let n=m(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(g)}}function p(e){return d(`sha256`).update(h(m(e)),`utf8`).digest(`hex`)}function m(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(m)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(g).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,m(n)]]}))}function h(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(h).join(`,`)}]`:`{${Object.keys(e).sort(g).map(t=>`${JSON.stringify(t)}:${h(e[t])}`).join(`,`)}}`}function g(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function _(e){if(e.length===0||!e.every(x))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function v(e){if(e.length===0||!e.every(C))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!O(e))return y(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return y(`legacy-record`);if(e.schemaVersion!==1)return y(`unsupported-schema`);if(!A(e,ee))return y(`malformed-record`);if(!w(e.createdAt)||!w(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return y(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return y(`failed-result`);if(t===`malformed`||!b(e.request)||!b(e.resolvedPlan)||!b(e.receipt)||!b(e.postcondition))return y(`malformed-record`);if(!ce(e.request.payload)||!T(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return y(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(p(t.payload)!==t.fingerprint)return y(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function y(e){return{kind:`invalid`,reason:e}}function ie(e){return!O(e)||!j(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!D(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!E(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!O(e)||!j(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&D(e.runId)&&D(e.schemaVersion)&&w(e.timestamp)&&D(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||w(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||w(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return O(e)&&j(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||D(e.name))}function se(e){return O(e)&&j(e,[`code`,`details`,`message`])&&D(e.code)&&D(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||T(e.details))}function b(e){return O(e)&&A(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return O(e)&&A(e,[`action`,`options`,`targets`])&&D(e.action)&&T(e.options)&&Array.isArray(e.targets)&&e.targets.every(D)?p(f({action:e.action,options:e.options,targets:e.targets}))===p(e):!1}function le(e){return T(e)?x(e)||S(e):!1}function x(e){return T(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&D(e.providerId)&&D(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||D(e.version))}function S(e){return T(e)?A(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,x):!1}function ue(e){return!T(e)||!D(e.kind)?!1:e.kind===`all-of`?A(e,ne)&&de(e.items,C):C(e)}function C(e){if(!T(e)||!D(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return D(e.providerId)&&D(e.targetId);case`executable-absent`:case`executable-present`:return D(e.executable);case`version-satisfies`:return D(e.expectedVersion)&&D(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(p);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:p(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function w(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function T(e){return O(e)&&E(e)}function E(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!k(r)||!E(r.value,t))return!1}return!0}return O(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return k(r)&&E(r.value,t)}):!1}finally{t.delete(e)}}function D(e){return typeof e==`string`&&e.length>0}function O(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&k(Reflect.getOwnPropertyDescriptor(e,t)))}function k(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function A(e,t){return Reflect.ownKeys(e).length===t.length&&j(e,t)&&t.every(t=>Object.hasOwn(e,t))}function j(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:B(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:Me(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(R),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:F(r,t),outcome:t})}let r=new Map;for(let e of n){let t=ke(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>R(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(t,n){let r=await n.observe(t);if(!r)return{agentName:t,kind:`unknown-agent`};if(n.signal.aborted)return{before:r,kind:`cancelled`,reason:B(n.signal)};let a=xe(r);if(!a){let e=r.observation.kind===`absent`&&r.observation.drift.kind===`recorded-absent`;return{before:r,category:e?`stale-state`:r.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${r.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${r.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}let o=i(r.agent,r.installedState);if(o)return{before:r,category:`superseded-package`,kind:`blocked`,reason:e(r.agent,o)};if(we(r.installedState)&&r.agent.selfUpdate){let e=M(r);return e?{kind:`planned`,planned:{before:r,beforeVersion:e,binding:a,commands:[r.agent.selfUpdate.command,...r.agent.selfUpdate.fallbackCommands??[]],planning:Te(r),strategy:`self-update`}}:{before:r,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${r.agent.displayName} self-update because its installed version is unknown.`}}let s=n.providerRegistry.get(a.providerId);if(!s?.resolveLatestVersion)return{before:r,category:`manual-required`,kind:`blocked`,reason:`Provider ${a.providerId} cannot resolve an update target version.`};let c=await s.resolveLatestVersion({context:P(n),target:a.target});if(c.kind!==`success`)return Ee(r,c);let l={capabilities:n.providerRegistry.getCapabilities(a.providerId),providerId:a.providerId,targetId:a.target.id,targetKind:a.target.kind},u=n.planLifecycleUpdate({intent:{kind:`update`,targetId:r.agent.name,targetVersion:c.value.version},observation:r.observation,provider:l});return{kind:`planned`,planned:{before:r,binding:a,plannedTargetVersion:c.value.version,planning:u,providerOptions:n.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:B(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:P(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:B(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=N(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:je(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:P(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:B(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:B(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=N(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:je(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&z(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,t){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,t.binding))return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(t.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains ${t.observation.drift.kind} drift.`};if(t.observation.kind!==`present`||!t.executable.present)return{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[t.observation.version,t.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>n(e,a)!==0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(t=>(n(t,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:t.observation,postcondition:r}}function Ce(e,t){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!t)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!z(e.binding,t.binding)||t.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(t.observation.kind!==`present`||!t.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=M(t),a=i?n(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:t.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:t.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function M(e){let t=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=t[0];return r&&t.every(e=>n(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function N(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function P(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function F(e,t){let n=`update-target:agent=${L(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};beforeVersion=${L(t.planned.beforeVersion)};commands=${t.planned.commands.map(I).join(`|`)};plan=${L(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${L(e.providerId)};providerTargetKind=${L(e.target.kind)};providerTarget=${L(e.target.id)};binary=${L(e.target.binaryName)};decision=${r.decision};plan=${L(r.plan.id)};version=${L(i)};${Ae(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${L(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${L(t.reason)}`:t.kind===`cancelled`?`${n};reason=${L(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${I(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${I(e.command)};evidence=${Oe(e.evidence)};exitCode=${L(e.exitCode)};reason=${L(e.reason)};remediation=${L(e.remediation)};retryable=${L(e.retryable)}`;case`cancelled`:return`cancelled;reason=${L(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${L(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${Oe(e.evidence)};reason=${L(e.reason)}`}}function I(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function Oe(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function ke(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${L(t.binding.providerId)};${Ae(t.providerOptions)}`}function Ae(e){return`distTag=${L(e?.distTag)};registry=${L(e?.registry)};updateStrategy=${L(e?.updateStrategy)}`}function L(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function R(e,t){return e<t?-1:e>t?1:0}function z(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Me(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ne(e,t=e=>o(e)?.name){return[...f({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Pe(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:o(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=K(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await J(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=K(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:F(r,n),targetId:r},async validateLive(e){let n=We(e,r);if(!n)return{kind:`inconclusive`};let i=await J(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:q(i.observation,n)}}}}async function Fe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=K(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await J(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=K(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:v(i.map(e=>e.postcondition)),receipt:_(i.map(e=>e.receipt))}},request:f({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Ge(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await J(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:q(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Ie(e,t={}){let n=t.observe??u,r=Ne(e,t.resolveTarget),i=await Promise.all(r.map(e=>Y(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await Y(n,e);return t.kind===`success`&&t.observation?U(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:v(t.map(e=>e.postcondition)),receipt:_(t.map(e=>e.receipt))}},request:f({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:ze((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Le(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await Y(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=U(r.observation,i.receipt);return a.kind===`compatible`?p(a.evidence.postcondition)===p(i.postcondition)&&p(a.evidence.receipt)===p(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Le(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Re(e){try{return p(v(e.items))===p(e)}catch{return!1}}function V(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function H(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function ze(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=Be(n[e],r[e]);if(t!==0)return t}return 0})}function Be(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Ve(e,n={}){let r=n.observe??u,i=await r(e),a=i?.agent.name??e,o=i?Ke(i):void 0,s=n.observeProviderTarget??Ye,c=n.isExecutablePresent??t;return{async captureEvidence(){if(o&&Qe(await Xe(s,o.binding),o.binding)&&await Ze(c,o.executableName)===!1)return Je(o)},request:f({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=qe({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await Y(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=He(n.observation);if(i!==`clear`)return{kind:i};let o=await Xe(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let l=await Ze(c,t.executableName);return l===void 0?{kind:`inconclusive`}:l?{kind:`drifted`}:{kind:`satisfied`}}}}function He(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function Ue(e,t,n={}){let r=await(n.observe??u)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??u)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:f({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??u)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?p(r.evidence)===p(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function U(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=W([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=W([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=W([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=W([o.executablePath,G(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function W(e){return[...new Set(e.filter(e=>e!==void 0))]}function G(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function We(e,t){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=G(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=G(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||n(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==t||i!==t||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!$e(c)||!et(s)||!$(c,s)))return{agentTargetId:t,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Ge(e,t){if(e.postcondition.kind!==`all-of`||!S(e.receipt)||!Re(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=V(e.postcondition.items),r=V(e.receipt.items);if(!n||!r||!H(n,t)||!H(r,t))return;let i=new Map;for(let e of t){let t=We({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function K(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=q(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=W([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function q(e,t,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==t.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:t.providerId,target:{id:t.providerTargetId,kind:t.providerTargetKind}};if(!c(i,e.binding,e.agent.binaryName)||!c(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==t.providerId||e.observation.providerTargetId!==t.providerTargetId||e.observation.providerTargetKind!==t.providerTargetKind||r.targetId!==t.agentTargetId||r.providerId!==t.providerId||r.providerTargetId!==t.providerTargetId||r.providerTargetKind!==t.providerTargetKind)return`drifted`;let a=W([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let o=n(a[0],t.expectedVersion);return o===void 0?`inconclusive`:o<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ke(e){let t=e.receipt?s(e.receipt):void 0;if(!(!t||!e.binding||!c(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function qe(e,t){let n=G(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=G(e.receipt,`executableName`),a=G(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!$e(o)||!et(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Je(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Ye(e){let t=a();try{return await t.run(()=>l(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function Y(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Xe(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ze(e,t){try{return await e(t)}catch{return}}function Qe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!S(e.receipt)}function $e(e){return r.includes(e)}function et(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Pe as a,ve as c,re as d,p as f,Ue as i,he as l,Ie as n,Ne as o,Fe as r,pe as s,Ve as t,_e as u};
|
|
1
|
+
import{i as e}from"./messages-D6r2o7w-.mjs";import{n as t}from"./detect-CbD8V1su.mjs";import{s as n}from"./schema-BBnWVY6R.mjs";import{t as r}from"./types-DAYz9yrG.mjs";import{f as i}from"./providers-GfRcOIdh.mjs";import{t as a}from"./cli-operation-context-CzjG_eom.mjs";import{n as o}from"./agents-BPG1DaPt.mjs";import{a as s,t as c}from"./provider-binding-DW-oviNl.mjs";import{t as l}from"./provider-evidence-D9Y79LD5.mjs";import{n as u}from"./lifecycle-observations-xZ--ogpK.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-PUVIMxAA.mjs";import{f as i}from"./providers-GfRcOIdh.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-BGC8hn92.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};
|