quantex-cli 0.29.0 → 0.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/README.zh-CN.md +6 -0
- package/dist/agent-inspection-YgRBlO4j.mjs +1 -0
- package/dist/agent-installation-DYK5G54m.mjs +1 -0
- package/dist/agents-BHbkPVvR.mjs +1 -0
- package/dist/agents-Dc-rbRUf.mjs +1 -0
- package/dist/capabilities-CtAVoTl3.mjs +1 -0
- package/dist/capabilities-DwvTrIyT.mjs +5 -0
- package/dist/cli.mjs +1 -1
- package/dist/color-DRZEEJuf.mjs +8 -0
- package/dist/commands-BFAz9rp0.mjs +1 -0
- package/dist/commands-BV_8m8O3.mjs +3 -0
- package/dist/config-CW5KWpFO.mjs +3 -0
- package/dist/doctor-oscs3vHZ.mjs +3 -0
- package/dist/ensure-CtIsNpIc.mjs +1 -0
- package/dist/ensure-TjHi-p6p.mjs +1 -0
- package/dist/errors-BzuGM14H.mjs +1 -0
- package/dist/errors-DXzIacfk.mjs +1 -0
- package/dist/index.d.mts +120 -27
- package/dist/index.mjs +2 -2
- package/dist/info-CC9R6coD.mjs +2 -0
- package/dist/inspect-BBCaK7m4.mjs +3 -0
- package/dist/inspect-e9CX-iny.mjs +1 -0
- package/dist/install-Qs0Hjurc.mjs +1 -0
- package/dist/lifecycle-observations-AFJINgqR.mjs +1 -0
- package/dist/lifecycle-policy-Djgq_8nm.mjs +1 -0
- package/dist/list-BdZDS8uV.mjs +3 -0
- package/dist/provider-evidence-CQl_J-gP.mjs +1 -0
- package/dist/provider-observations-CjH7BgJJ.mjs +1 -0
- package/dist/resolve-BZug-bO0.mjs +1 -0
- package/dist/resolve-D8sxYL1V.mjs +1 -0
- package/dist/schema-BFd8FNZw.mjs +1 -0
- package/dist/schema-CGsjqfua.mjs +3 -0
- package/dist/uninstall-jVywxQNe.mjs +1 -0
- package/dist/update-CNH0qEtB.mjs +1 -0
- package/dist/update-planner-BhJnvNKA.mjs +1 -0
- package/dist/upgrade-DUSUcwD7.mjs +1 -0
- package/dist/{user-output-CpJ3uh12.mjs → user-output-CnLEBgDD.mjs} +1 -1
- package/dist/version-cache-BRDGus3W.mjs +1 -0
- package/package.json +6 -3
- package/dist/agents-D4hRhCwl.mjs +0 -1
- package/dist/capabilities-B2jvTrcN.mjs +0 -1
- package/dist/capabilities-Cb0aOfY1.mjs +0 -5
- package/dist/color-DurcqJ7I.mjs +0 -7
- package/dist/commands-DEhceA9R.mjs +0 -1
- package/dist/commands-qOmjtOlx.mjs +0 -3
- package/dist/config-iwU5Tz9y.mjs +0 -3
- package/dist/detect-Egca_SPi.mjs +0 -1
- package/dist/doctor-m_WzgSSi.mjs +0 -3
- package/dist/ensure-CFjwirdH.mjs +0 -1
- package/dist/ensure-CjEETNRJ.mjs +0 -1
- package/dist/errors-BzXIrX6h.mjs +0 -1
- package/dist/info-BmI0G2kE.mjs +0 -2
- package/dist/inspect-B5FhIop-.mjs +0 -3
- package/dist/inspect-C6RnLrHU.mjs +0 -1
- package/dist/install-DZVwMixs.mjs +0 -1
- package/dist/list-D3eZi4Yy.mjs +0 -3
- package/dist/resolve-CJIyDrtJ.mjs +0 -1
- package/dist/resolve-lfswg879.mjs +0 -1
- package/dist/schema-C6wJrY5Y.mjs +0 -1
- package/dist/schema-S8dXKz9J.mjs +0 -3
- package/dist/uninstall-Cx_ssX-9.mjs +0 -1
- package/dist/update-CGGApQJi.mjs +0 -1
- package/dist/update-D_zsJ7CZ.mjs +0 -1
- package/dist/upgrade-DCgl33oC.mjs +0 -1
- /package/dist/{lifecycle-errors-BtqYfS-v.mjs → lifecycle-errors-BXlHX_YF.mjs} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{V as e,W as t,a as n,r,t as i}from"./color-DRZEEJuf.mjs";async function a(){return n(r({action:`commands`,data:{commands:e().map(t)},target:{kind:`system`,name:`commands`}}),o)}function o(e){if(e.data){console.log(i.bold(`
|
|
2
|
+
Quantex Commands
|
|
3
|
+
`));for(let t of e.data.commands){let e=t.flags.length>0?i.dim(` [${t.flags.join(`, `)}]`):``;console.log(` ${i.cyan(t.name)}${e}`),console.log(` ${t.summary}`),console.log(` ${i.dim(t.outputSchemaRef)}`)}console.log()}}export{a as t};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{Bt as e,It as t,Lt as n,Rt as r,Ut as i,a,n as o,r as s,t as c,zt as l}from"./color-DRZEEJuf.mjs";async function u(c,u,f){if(!c)return a(s({action:`config`,data:{action:`list`,config:await r()},target:{kind:`config`}}),d);switch(c){case`get`:{if(!u)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await r())[u];return a(s({action:`config`,data:{action:`get`,key:u,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!t(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!n(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!i(f))return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let e={};try{e=await r()}catch{}return e[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?i(f):f,await l(e),a(s({action:`config`,data:{action:`set`,key:u,value:e[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await l(e),a(s({action:`config`,data:{action:`reset`,config:e},target:{kind:`config`}}),d);default:return a(o({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:c},message:`Unknown action: ${c}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(c.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(c.bold(`
|
|
2
|
+
Current Configuration:
|
|
3
|
+
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?c.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(c.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(c.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{B as n,Nt as r,Xt as i,a,c as o,d as s,r as c,t as l}from"./color-DRZEEJuf.mjs";import{n as u,t as d}from"./provider-observations-CjH7BgJJ.mjs";import{n as f}from"./lifecycle-observations-AFJINgqR.mjs";import{t as p}from"./agent-inspection-YgRBlO4j.mjs";async function m(){let n=i(),l,m,_;try{[l,m,_]=await n.run(()=>Promise.all([d({context:n.context}),o({context:n.context}),f(n.context)]))}finally{n.dispose()}let v=u(l,e=>e.availability.kind===`success`),{brew:y,bun:b,cargo:x,deno:S}=v,{mise:C,npm:w,pip:T,uv:E,winget:D}=v,O=m.latestVersion?r(m.latestVersion,m.currentVersion):!1,k=_.map(e=>({inspection:p(e),observation:e})),A=k.filter(({inspection:e})=>e.inPath).map(({inspection:e})=>({displayName:e.agent.displayName,installedVersion:e.installedVersion,latestVersion:e.latestVersion,lifecycle:e.lifecycle,outdated:!!(e.installedVersion&&e.latestVersion&&e.installedVersion!==e.latestVersion),sourceLabel:e.sourceLabel})),j=[],M=`docs/runbooks/quantex-troubleshooting.md`,N=`docs/runbooks/release-and-self-upgrade-debugging.md`;if(!b&&!w&&!y&&!x&&!S&&!C&&!T&&!E&&!D&&j.push({blocking:!0,category:`installers`,code:`NO_MANAGED_INSTALLER`,docsRef:M,message:`No managed installer found. Install bun, npm, brew, cargo, deno, mise, pip, uv, or winget before relying on managed lifecycle operations.`,severity:`warning`,subject:{kind:`system`},suggestedAction:`restore-managed-installer`,suggestedCommands:[]}),(m.installSource===`bun`&&!b||m.installSource===`npm`&&!w)&&j.push({blocking:!0,category:`self`,code:`SELF_INSTALLER_MISSING`,docsRef:N,message:`Quantex CLI is tracked as a ${m.installSource} install, but ${m.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:g(m.installSource,m.updateChannel)}),m.canAutoUpdate||j.push({blocking:!1,category:`self`,code:`SELF_AUTO_UPDATE_UNAVAILABLE`,docsRef:N,message:`Quantex CLI cannot auto-update from install source "${m.installSource}". Reinstall via bun, npm, or the standalone binary if you want \`quantex upgrade\` support.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`reinstall-self-with-auto-update-source`,suggestedCommands:[]}),O&&m.recommendedUpgradeCommand){let e=s(m);j.push({blocking:!1,category:`self`,code:`SELF_UPDATE_AVAILABLE`,docsRef:N,message:e?`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand} or follow: ${e}`:`Quantex CLI ${m.currentVersion} is behind ${m.latestVersion}. Run ${m.recommendedUpgradeCommand}.`,severity:`warning`,subject:{kind:`self`,name:`quantex`},suggestedAction:`run-self-upgrade`,suggestedCommands:[m.recommendedUpgradeCommand]})}for(let{inspection:n,observation:r}of k.filter(e=>e.inspection.inPath)){if(r.observation.drift.kind===`untracked`&&j.push({blocking:!1,category:`agent`,code:`AGENT_UNTRACKED_IN_PATH`,docsRef:M,message:`${n.agent.displayName} is available in PATH but not tracked as a managed Quantex install. Use \`quantex inspect ${n.agent.name} --json\` to confirm the source, then reinstall through Quantex if you want managed lifecycle operations.`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:`inspect-agent-install-source`,suggestedCommands:[`quantex inspect ${n.agent.name} --json`,`quantex install ${n.agent.name}`]}),!(n.installedVersion&&n.latestVersion&&n.installedVersion!==n.latestVersion)||n.lifecycle===`managed`)continue;let i=t(n.agent,n.agent.selfUpdate?`self-update`:`manual-hint`)??e(n.agent);j.push({blocking:!1,category:`agent`,code:`AGENT_MANUAL_UPDATE_REQUIRED`,docsRef:M,message:`${n.agent.displayName} ${n.installedVersion} is behind ${n.latestVersion}, but the current source is ${n.sourceLabel}. ${i}`,severity:`warning`,subject:{kind:`agent`,name:n.agent.name},suggestedAction:n.agent.selfUpdate?`run-agent-self-update`:`follow-manual-agent-update`,suggestedCommands:n.agent.selfUpdate?[n.agent.selfUpdate.command.join(` `)]:[]})}return a(c({action:`doctor`,data:{agents:A,issues:j,installers:v,self:{canAutoUpdate:m.canAutoUpdate,currentVersion:m.currentVersion,installSource:m.installSource,latestVersion:m.latestVersion,outdated:!!O,recoveryHint:O?s(m):void 0}},target:{kind:`system`,name:`doctor`}}),h)}function h(e){if(e.data){if(console.log(l.bold(`
|
|
2
|
+
Quantex CLI Environment Check
|
|
3
|
+
`)),console.log(l.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?l.green(`available`):l.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?l.green(`available`):l.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?l.green(`available`):l.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?l.green(`available`):l.red(`not found`)}`),console.log(` deno: ${e.data.installers.deno?l.green(`available`):l.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?l.green(`available`):l.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?l.green(`available`):l.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?l.green(`available`):l.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?l.green(`available`):l.red(`not found`)}`),console.log(`\n${l.bold(`Quantex CLI:`)}`),console.log(` Version: ${e.data.self.currentVersion}`),console.log(` Source: ${e.data.self.installSource}`),console.log(` Auto-update: ${e.data.self.canAutoUpdate?l.green(`supported`):l.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?l.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${l.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(l.dim(` No agents installed`));else for(let t of e.data.agents)console.log(` ${t.displayName}: ${t.installedVersion??`unknown`} [${t.lifecycle}; ${t.sourceLabel}]${t.outdated?l.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${l.bold(`Issues:`)}`),e.data.issues.length===0)console.log(l.green(` No issues found.`));else for(let t of e.data.issues)console.log(l.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(l.dim(` Next: ${t.suggestedCommands.join(` | `)}`));console.log()}}function g(e,t){let r=t===`beta`?`beta`:`latest`;return e===`bun`?[`bun add -g ${n}@${r}`]:e===`npm`?[`npm install -g ${n}@${r}`]:[]}export{m as doctorCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as e,a as t,et as n,i as r,n as i,r as a,t as o}from"./color-DRZEEJuf.mjs";import{v as s}from"./provider-evidence-CQl_J-gP.mjs";import{t as c}from"./agent-installation-DYK5G54m.mjs";import{r as l}from"./lifecycle-observations-AFJINgqR.mjs";import{n as u}from"./agents-BHbkPVvR.mjs";import{t as d}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-CnLEBgDD.mjs";async function g(n){if(!u(n)||m())return _(n);try{return await s(()=>_(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),C);throw r}}async function _(r){let a=await l(r);if(!a)return t(i({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:r},message:`Unknown agent: ${r}`},target:{kind:`agent`,name:r}}),C);let{agent:o}=a,s=a.pathExecutable.present,u=a.installedState,f=s&&!u?n(a.methods,a.resolvedBinaryPath??a.pathExecutable.path):void 0;if(s&&!u&&!f)return t(x(o),C);let p=u&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?b(o):y(o,p===`adopt`,!!u),C);p!==`satisfied`&&v(o);try{return t(S(o,p,await c({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:u,lifecycle:a.observation,methods:a.methods},operation:`ensure`,route:p})),C)}catch(n){if(e(n))return t(i({action:`ensure`,data:{agent:{displayName:o.displayName,name:o.name},changed:!1,installed:s},...d(n,{kind:`agent`,name:o.name})}),C);throw n}}function v(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function y(e,t,n){return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function b(e){return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function x(e){return a({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 S(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return b(e);let r=n.value.value.installedState;return a({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:n.value.changed?{installType:r.installType,packageName:r.packageName}:void 0,installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let r=n.kind===`cancelled`?{code:`CANCELLED`,message:`Ensure was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:n.kind===`failed`&&n.reason.endsWith(`-after-ensure`)||n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after ensure completed.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return i({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:r,target:{kind:`agent`,name:e.name}})}function C(e){if(e.error){h(o.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){p(o.green(t.message));continue}if(t.code===`DRY_RUN`){f(o.cyan(t.message));continue}f(o.yellow(t.message))}return}if(e.data.changed){p(o.cyan(`Installing ${e.data.agent.displayName}...`)),p(o.green(`${e.data.agent.displayName} is now installed.`));return}p(o.green(`${e.data.agent.displayName} is already installed.`))}}export{g as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./ensure-CtIsNpIc.mjs";export{e as ensureCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./errors-DXzIacfk.mjs";export{e as getExitCodeForResult};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=[`AGENT_NOT_FOUND`,`AGENT_NOT_INSTALLED`,`CANCELLED`,`INSTALL_FAILED`,`INTERACTION_REQUIRED`,`INVALID_ARGUMENT`,`MANUAL_ACTION_REQUIRED`,`NETWORK_ERROR`,`RESOURCE_LOCKED`,`STATE_READ_ERROR`,`TIMEOUT`,`UNINSTALL_FAILED`,`UNINSTALL_UNMANAGED`,`UPDATE_FAILED`,`UPGRADE_FAILED`];function t(e){switch(e){case`INVALID_ARGUMENT`:return 2;case`AGENT_NOT_FOUND`:return 3;case`AGENT_NOT_INSTALLED`:return 4;case`NETWORK_ERROR`:return 6;case`INTERACTION_REQUIRED`:return 7;case`MANUAL_ACTION_REQUIRED`:return 8;case`RESOURCE_LOCKED`:return 9;case`STATE_READ_ERROR`:return 12;case`TIMEOUT`:return 10;case`CANCELLED`:return 11;default:return 1}}function n(e){return e.exitCode===void 0?e.ok?0:e.error?t(e.error.code):1:e.exitCode}export{t as n,n as r,e as t};
|
package/dist/index.d.mts
CHANGED
|
@@ -630,6 +630,82 @@ declare function getAllAgents(): AgentDefinition[];
|
|
|
630
630
|
declare function getAgentByLookupName(name: string): AgentDefinition | undefined;
|
|
631
631
|
declare function getAgentByNameOrAlias(name: string): AgentDefinition | undefined;
|
|
632
632
|
//#endregion
|
|
633
|
+
//#region src/providers/types.d.ts
|
|
634
|
+
interface ProviderOperationContext {
|
|
635
|
+
readonly registerCleanup?: (cleanup: ProviderResourceCleanup) => () => void;
|
|
636
|
+
readonly signal: AbortSignal;
|
|
637
|
+
readonly timeoutMs?: number;
|
|
638
|
+
}
|
|
639
|
+
interface ProviderResourceCleanup {
|
|
640
|
+
cleanup(): Promise<void> | void;
|
|
641
|
+
force?(): Promise<void> | void;
|
|
642
|
+
}
|
|
643
|
+
//#endregion
|
|
644
|
+
//#region src/runtime/ports.d.ts
|
|
645
|
+
type RuntimeFailureKind = 'cancelled' | 'conflict' | 'failed' | 'invalid-data' | 'not-found' | 'timed-out' | 'unavailable';
|
|
646
|
+
interface RuntimeFailure {
|
|
647
|
+
readonly code?: string;
|
|
648
|
+
readonly details?: Readonly<Record<string, unknown>>;
|
|
649
|
+
readonly kind: RuntimeFailureKind;
|
|
650
|
+
readonly message: string;
|
|
651
|
+
readonly retryable?: boolean;
|
|
652
|
+
}
|
|
653
|
+
type RuntimeOutcome<T> = {
|
|
654
|
+
readonly kind: 'failure';
|
|
655
|
+
readonly error: RuntimeFailure;
|
|
656
|
+
} | {
|
|
657
|
+
readonly kind: 'success';
|
|
658
|
+
readonly value: T;
|
|
659
|
+
};
|
|
660
|
+
interface ProcessRequest {
|
|
661
|
+
readonly argv: readonly string[];
|
|
662
|
+
readonly cwd?: string;
|
|
663
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
664
|
+
readonly forwardPipedOutput?: boolean;
|
|
665
|
+
readonly signal: AbortSignal;
|
|
666
|
+
readonly stdio?: readonly [ProcessStdio, ProcessStdio, ProcessStdio];
|
|
667
|
+
readonly timeoutMs?: number;
|
|
668
|
+
}
|
|
669
|
+
type ProcessStdio = 'ignore' | 'inherit' | 'pipe';
|
|
670
|
+
interface ProcessResult {
|
|
671
|
+
readonly exitCode: number | null;
|
|
672
|
+
readonly stderr?: Uint8Array;
|
|
673
|
+
readonly stdout?: Uint8Array;
|
|
674
|
+
readonly terminationSignal?: string;
|
|
675
|
+
}
|
|
676
|
+
interface ProcessPort {
|
|
677
|
+
run(request: ProcessRequest): Promise<RuntimeOutcome<ProcessResult>>;
|
|
678
|
+
}
|
|
679
|
+
interface NetworkRequest {
|
|
680
|
+
readonly body?: Uint8Array;
|
|
681
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
682
|
+
readonly method?: string;
|
|
683
|
+
readonly signal: AbortSignal;
|
|
684
|
+
readonly timeoutMs?: number;
|
|
685
|
+
readonly url: string;
|
|
686
|
+
}
|
|
687
|
+
interface NetworkResponse {
|
|
688
|
+
readonly body: Uint8Array;
|
|
689
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
690
|
+
readonly status: number;
|
|
691
|
+
}
|
|
692
|
+
interface NetworkPort {
|
|
693
|
+
request(request: NetworkRequest): Promise<RuntimeOutcome<NetworkResponse>>;
|
|
694
|
+
}
|
|
695
|
+
interface LockAcquireRequest {
|
|
696
|
+
readonly resource: string;
|
|
697
|
+
readonly scope: readonly string[];
|
|
698
|
+
readonly signal: AbortSignal;
|
|
699
|
+
readonly timeoutMs?: number;
|
|
700
|
+
}
|
|
701
|
+
interface LockLease {
|
|
702
|
+
/** Idempotent cleanup that must not depend on the acquisition signal. */
|
|
703
|
+
release(): Promise<RuntimeOutcome<void>>;
|
|
704
|
+
}
|
|
705
|
+
interface LockPort {
|
|
706
|
+
acquire(request: LockAcquireRequest): Promise<RuntimeOutcome<LockLease>>;
|
|
707
|
+
}
|
|
708
|
+
//#endregion
|
|
633
709
|
//#region src/self/release.d.ts
|
|
634
710
|
interface BinaryReleaseAsset {
|
|
635
711
|
arch: 'arm64' | 'x64';
|
|
@@ -696,7 +772,7 @@ interface SelfUpgradePlan {
|
|
|
696
772
|
updateAvailable: boolean;
|
|
697
773
|
}
|
|
698
774
|
//#endregion
|
|
699
|
-
//#region src/state/
|
|
775
|
+
//#region src/state/schema.d.ts
|
|
700
776
|
interface InstalledAgentState {
|
|
701
777
|
agentName: string;
|
|
702
778
|
binaryName?: string;
|
|
@@ -716,6 +792,8 @@ interface QuantexState {
|
|
|
716
792
|
installedAgents: Record<string, InstalledAgentState>;
|
|
717
793
|
self: SelfState;
|
|
718
794
|
}
|
|
795
|
+
//#endregion
|
|
796
|
+
//#region src/state/index.d.ts
|
|
719
797
|
declare function getStateFilePath(): string;
|
|
720
798
|
declare function loadState(): Promise<QuantexState>;
|
|
721
799
|
declare function saveState(state: QuantexState): Promise<void>;
|
|
@@ -902,16 +980,35 @@ interface CapabilitiesData {
|
|
|
902
980
|
}
|
|
903
981
|
declare function capabilitiesCommand(): Promise<CommandResult<CapabilitiesData>>;
|
|
904
982
|
//#endregion
|
|
905
|
-
//#region src/
|
|
906
|
-
|
|
983
|
+
//#region src/command-contract/schemas.d.ts
|
|
984
|
+
type JsonSchemaType = 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string';
|
|
985
|
+
interface JsonSchema {
|
|
986
|
+
additionalProperties?: boolean;
|
|
987
|
+
items?: JsonSchema;
|
|
988
|
+
properties?: Record<string, JsonSchema>;
|
|
989
|
+
required?: string[];
|
|
990
|
+
type: JsonSchemaType | JsonSchemaType[];
|
|
991
|
+
}
|
|
992
|
+
interface SchemaDocument {
|
|
993
|
+
dataSchema: JsonSchema;
|
|
994
|
+
description: string;
|
|
995
|
+
envelopeSchema: JsonSchema;
|
|
996
|
+
name: string;
|
|
997
|
+
ndjsonEventSchema?: JsonSchema;
|
|
998
|
+
}
|
|
999
|
+
//#endregion
|
|
1000
|
+
//#region src/command-contract/registry.d.ts
|
|
1001
|
+
interface V1CommandDescriptor {
|
|
907
1002
|
flags: string[];
|
|
908
1003
|
name: string;
|
|
909
1004
|
outputSchemaRef: string;
|
|
910
1005
|
stability: 'stable';
|
|
911
1006
|
summary: string;
|
|
912
1007
|
}
|
|
1008
|
+
//#endregion
|
|
1009
|
+
//#region src/commands/commands.d.ts
|
|
913
1010
|
interface CommandsCommandData {
|
|
914
|
-
commands:
|
|
1011
|
+
commands: V1CommandDescriptor[];
|
|
915
1012
|
}
|
|
916
1013
|
declare function commandsCommand(): Promise<CommandResult<CommandsCommandData>>;
|
|
917
1014
|
//#endregion
|
|
@@ -1002,25 +1099,11 @@ interface ResolveCommandData {
|
|
|
1002
1099
|
declare function resolveCommand(agentName: string): Promise<CommandResult<ResolveCommandData>>;
|
|
1003
1100
|
//#endregion
|
|
1004
1101
|
//#region src/commands/schema.d.ts
|
|
1005
|
-
interface JsonSchema {
|
|
1006
|
-
additionalProperties?: boolean;
|
|
1007
|
-
items?: JsonSchema;
|
|
1008
|
-
properties?: Record<string, JsonSchema>;
|
|
1009
|
-
required?: string[];
|
|
1010
|
-
type: 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string';
|
|
1011
|
-
}
|
|
1012
|
-
interface SchemaDocument {
|
|
1013
|
-
dataSchema: JsonSchema;
|
|
1014
|
-
description: string;
|
|
1015
|
-
envelopeSchema: JsonSchema;
|
|
1016
|
-
name: string;
|
|
1017
|
-
ndjsonEventSchema?: JsonSchema;
|
|
1018
|
-
}
|
|
1019
1102
|
interface SchemaCommandData {
|
|
1020
|
-
commands: SchemaDocument[];
|
|
1103
|
+
commands: readonly SchemaDocument[];
|
|
1021
1104
|
}
|
|
1022
1105
|
declare function schemaCommand(commandName?: string): Promise<CommandResult<SchemaCommandData>>;
|
|
1023
|
-
declare function getSchemaCatalog(): SchemaDocument[];
|
|
1106
|
+
declare function getSchemaCatalog(): readonly SchemaDocument[];
|
|
1024
1107
|
//#endregion
|
|
1025
1108
|
//#region src/config/index.d.ts
|
|
1026
1109
|
type DefaultPackageManager = 'bun' | 'mise' | 'npm';
|
|
@@ -1195,7 +1278,15 @@ declare function getSelfUpgradeRecoveryHintForInspection(inspection: SelfInspect
|
|
|
1195
1278
|
declare function inspectSelf(options?: {
|
|
1196
1279
|
updateChannel?: SelfUpdateChannel;
|
|
1197
1280
|
}): Promise<SelfInspection>;
|
|
1198
|
-
|
|
1281
|
+
interface SelfUpgradeExecutionOptions {
|
|
1282
|
+
readonly lockPort?: LockPort;
|
|
1283
|
+
readonly networkPort?: NetworkPort;
|
|
1284
|
+
readonly processPort?: ProcessPort;
|
|
1285
|
+
readonly signal?: AbortSignal;
|
|
1286
|
+
readonly stdio?: readonly [ProcessStdio, ProcessStdio, ProcessStdio];
|
|
1287
|
+
readonly timeoutMs?: number;
|
|
1288
|
+
}
|
|
1289
|
+
declare function upgradeSelf(planOrInspection?: SelfInspection | SelfUpgradePlan, options?: SelfUpgradeExecutionOptions): Promise<SelfUpdateResult>;
|
|
1199
1290
|
declare function getManualSelfUpgradeCommand(installSource: SelfInstallSource, executablePath?: string): string | undefined;
|
|
1200
1291
|
//#endregion
|
|
1201
1292
|
//#region src/services/agents.d.ts
|
|
@@ -1239,10 +1330,10 @@ declare function planAgentUpdates(): Promise<PlannedAgentUpdates>;
|
|
|
1239
1330
|
//#endregion
|
|
1240
1331
|
//#region src/utils/detect.d.ts
|
|
1241
1332
|
declare function getPlatform(): Platform;
|
|
1242
|
-
declare function isBunAvailable(): Promise<boolean>;
|
|
1243
|
-
declare function isNpmAvailable(): Promise<boolean>;
|
|
1244
|
-
declare function isDenoAvailable(): Promise<boolean>;
|
|
1245
|
-
declare function isBinaryInPath(binaryName: string): Promise<boolean>;
|
|
1333
|
+
declare function isBunAvailable(context?: ProviderOperationContext): Promise<boolean>;
|
|
1334
|
+
declare function isNpmAvailable(context?: ProviderOperationContext): Promise<boolean>;
|
|
1335
|
+
declare function isDenoAvailable(context?: ProviderOperationContext): Promise<boolean>;
|
|
1336
|
+
declare function isBinaryInPath(binaryName: string, context?: ProviderOperationContext): Promise<boolean>;
|
|
1246
1337
|
//#endregion
|
|
1247
1338
|
//#region src/utils/exec.d.ts
|
|
1248
1339
|
declare function execCommand(command: string, args: string[]): Promise<{
|
|
@@ -1251,10 +1342,12 @@ declare function execCommand(command: string, args: string[]): Promise<{
|
|
|
1251
1342
|
}>;
|
|
1252
1343
|
//#endregion
|
|
1253
1344
|
//#region src/utils/version.d.ts
|
|
1254
|
-
declare function getInstalledVersion(binaryName: string, versionProbe?: AgentVersionProbe): Promise<string | undefined>;
|
|
1345
|
+
declare function getInstalledVersion(binaryName: string, versionProbe?: AgentVersionProbe, context?: ProviderOperationContext): Promise<string | undefined>;
|
|
1255
1346
|
declare function getLatestVersion(packageName: string, distTag?: string, options?: {
|
|
1347
|
+
context?: ProviderOperationContext;
|
|
1348
|
+
networkPort?: NetworkPort;
|
|
1256
1349
|
registry?: string;
|
|
1257
1350
|
}): Promise<string | undefined>;
|
|
1258
|
-
declare function getBinaryPath(binaryName: string): Promise<string | undefined>;
|
|
1351
|
+
declare function getBinaryPath(binaryName: string, context?: ProviderOperationContext): Promise<string | undefined>;
|
|
1259
1352
|
//#endregion
|
|
1260
1353
|
export { type AgentCatalogData, type AgentCatalogEntry, type AgentDefinition, type AgentInspection, type AgentOperationResult, type AgentPackageMetadata, type AgentSelfUpdate, type AgentUpdateContext, type AgentUpdateProvider, type AgentUpdateStrategy, type AgentVersionProbe, type BinaryInstallMethod, type CliContext, type CliContextOptions, type CliErrorCode, type CommandError, type CommandMeta, type CommandResult, type CommandTarget, type CommandWarning, type ExecCommandOptions, type ExecInstallPolicy, type HumanRenderer, type InstallMethod, type InstallType, type InstalledAgentState, type ManagedInstallMethod, type ManagedInstallType, type ManagedInstaller, type ManagedPackageSpec, type ManagedUpdateBucket, type OutputMode, type PackageTargetKind, type PendingAgentUpdate, type PlannedAgentUpdates, type Platform, type QuantexConfig, type QuantexState, type ReleaseArtifactTarget, type ReleaseChannel, type ReleaseManifest, type ReleaseManifestAsset, type ResolvedAgentInspection, type ScriptInstallMethod, type SelfInspection, type SelfInstallSource, type SelfState, type SelfUpdateResult, type SingleAgentUpdateStatus, type UpdatePlan, type UpdatePlanEntry, agentCatalogEntrySchema, agentCatalogJsonSchema, agentCatalogSchema, agentUpdateProviders, autohand, canAutoUpdateSelf, canLookupLatestVersionForInstallType, canResolveAgentUpdate, canUninstallInstallType, canUpdateInstallType, capabilitiesCommand, claude, codebuddy, codewhale, codex, commandsCommand, copilot, createErrorResult, createReleaseManifest, createSuccessResult, createUpdatePlan, cursor, deepcode, detectSelfInstallSource, devin, droid, emitCommandResult, ensureCommand, execCommand, formatChecksums, gemini, genie, getAgentByLookupName, getAgentByNameOrAlias, getAgentUpdateFailureHint, getAgentUpdateStrategy, getAllAgents, getBinaryPath, getBinaryReleaseAssetName, getBinaryReleaseDownloadUrl, getCatalogAgent, getCatalogAgents, getCliContext, getConfigDir, getConfigFilePath, getExitCodeForError, getExitCodeForResult, getInstallLifecycle, getInstalledAgentState, getInstalledVersion, getInstallerCapabilities, getLatestVersion, getManagedInstaller, getManualAgentUpdateMessage, getManualSelfUpgradeCommand, getOrderedInstallMethods, getPlatform, getSchemaCatalog, getSelfState, getSelfUpgradeRecoveryHint, getSelfUpgradeRecoveryHintForInspection, getSelfVersion, getSingleAgentUpdateStatus, getStateFilePath, grok, hermes, inspectAgent, inspectAllAgents, inspectCommand, inspectRegisteredAgents, inspectSelf, installAgent, isBinaryInPath, isBunAvailable, isDenoAvailable, isInspectionUpdateAvailable, isManagedInstallType, isNpmAvailable, jcode, junie, kilo, loadConfig, loadState, mimo, normalizeRepositoryUrl, omp, openclaw, opencode, openhands, parseBinaryTarget, parseChecksums, pi, planAgentUpdates, qoder, reasonix, removeInstalledAgentState, resetCliContext, resolveAgent, resolveAgentInspection, resolveAgentUpdateProvider, resolveCliContext, resolveCommand, resolveReleaseChannel, saveConfig, saveState, schemaCommand, setCliContext, setInstalledAgentState, setSelfInstallSource, setSelfUpdateNoticeState, uninstallAgent, updateAgent, updateAgentsByType, upgradeSelf, validateReleaseManifest, vibe, vtcode };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{
|
|
2
|
-
`)}\n`}function
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{A as n,At as r,D as i,F as a,Ft as o,Gt as s,J as c,Jt as l,K as ee,Kt as te,M as ne,O as re,P as ie,Pt as ae,R as u,Rt as oe,S as se,T as ce,Y as d,Yt as le,_ as ue,a as de,an as f,at as p,cn as m,ct as h,d as g,g as _,it as v,jt as y,kt as b,l as x,ln as S,lt as C,n as w,nt as T,o as E,ot as D,q as O,qt as k,r as A,rn as j,rt as M,s as N,sn as P,st as F,tn as I,u as L,v as R,w as z,z as B,zt as V}from"./color-DRZEEJuf.mjs";import{A as H,C as fe,D as pe,E as me,F as he,M as ge,N as _e,O as ve,P as ye,S as be,T as xe,_ as Se,a as Ce,b as we,c as Te,d as Ee,f as De,g as Oe,h as ke,i as Ae,j as U,k as je,l as Me,m as Ne,n as Pe,o as Fe,p as Ie,r as Le,s as Re,t as ze,u as Be,v as Ve,w as He,x as Ue,y as We}from"./agents-Dc-rbRUf.mjs";import{t as Ge}from"./capabilities-DwvTrIyT.mjs";import{t as Ke}from"./commands-BV_8m8O3.mjs";import{_ as qe,g as Je,l as Ye,m as Xe,u as Ze,y as Qe}from"./provider-evidence-CQl_J-gP.mjs";import{t as $e}from"./update-planner-BhJnvNKA.mjs";import{a as et,i as W,n as tt,r as nt,t as G}from"./agents-BHbkPVvR.mjs";import{t as rt}from"./ensure-CtIsNpIc.mjs";import{t as it}from"./inspect-BBCaK7m4.mjs";import{t as at}from"./resolve-D8sxYL1V.mjs";import{n as ot,t as st}from"./schema-CGsjqfua.mjs";import{n as ct,r as lt}from"./errors-DXzIacfk.mjs";function K(e,t={}){let n=h(),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=J(n);if(e===`indeterminate`||e===`manual-required`||e===`blocked-source`){a.push(n);continue}if(e!==`upgrade`){s.push(n);continue}let c=d({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 q(e){return J(e)===`upgrade`}function J(e){return $e({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}const ut=[`quantex-darwin-arm64`,`quantex-darwin-x64`,`quantex-linux-arm64`,`quantex-linux-x64`,`quantex-windows-x64.exe`];function dt(e){return`${e.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${e.checksum} ${e.name}`).join(`
|
|
2
|
+
`)}\n`}function ft(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e)continue;let[r,i]=e.split(/\s+/,2),a=i?.replace(/^\*/,``);r&&a&&t.set(a,r)}return t}function Y(e){let t=e.match(/^quantex-(darwin|linux|windows)-(arm64|x64)(?:\.exe)?$/);if(t)return{arch:t[2]===`arm64`?`arm64`:`x64`,platform:t[1]===`windows`?`win32`:t[1]===`darwin`?`darwin`:`linux`}}function X(e){return e?e.startsWith(`git+`)?e.slice(4).replace(/\.git$/,``):e.startsWith(`git@github.com:`)?e.replace(`git@github.com:`,`https://github.com/`).replace(/\.git$/,``):e.replace(/\.git$/,``):`https://github.com/Drswith/quantex-cli`}function Z(e){return e.includes(`beta`)?`beta`:`stable`}function pt(e){let t=X(e.repositoryUrl),n=Z(e.version),r=e.files.map(n=>{let r=Y(n.name);if(!r)return;let i=e.checksums.get(n.name);if(!i)throw Error(`Missing checksum entry for ${n.name}.`);return{arch:r.arch,checksum:i,downloadUrl:`${t}/releases/download/v${e.version}/${n.name}`,name:n.name,platform:r.platform,size:n.size}}).filter(e=>e!==void 0).sort((e,t)=>e.name.localeCompare(t.name));if(r.length===0)throw Error(`No release binaries were found when creating manifest.json.`);return{assets:r,channel:n,version:e.version}}function mt(e,t){if(e.assets.length===0)throw Error(`manifest.json must contain at least one binary asset.`);let n=new Set(e.assets.map(e=>e.name));for(let e of ut)if(!n.has(e))throw Error(`manifest.json is missing required release asset: ${e}.`);for(let n of e.assets){let e=t.get(n.name);if(!e)throw Error(`manifest.json references ${n.name}, but it is missing from SHA256SUMS.txt.`);if(n.checksum!==e)throw Error(`manifest.json checksum mismatch for ${n.name}.`);if(!Y(n.name))throw Error(`manifest.json contains an invalid binary asset name: ${n.name}.`)}}async function ht(e){let t=await W(e);return{agent:e,inspection:t,updateAvailable:q(t)}}async function gt(){return _t(await G(),{skipUntrackedInPath:!0})}function _t(e,t={}){let n=K(e,t),r=[],i=h().map(e=>vt(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 vt(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=d({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?yt(e.agent,e.installedState,e.methods,n):void 0,state:e.installedState,strategy:t.strategy}}function yt(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=T(e,i);if(a)return{packageName:a,binaryName:i.binaryName??(r===`deno`?e.binaryName:void 0),packageInstallArgs:i.packageInstallArgs,packageTargetKind:i.packageTargetKind}}async function bt(e,t){try{let n=await j(I([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{_e as agentCatalogEntrySchema,ye as agentCatalogJsonSchema,he as agentCatalogSchema,ee as agentUpdateProviders,Ae as autohand,_ as canAutoUpdateSelf,M as canLookupLatestVersionForInstallType,O as canResolveAgentUpdate,v as canUninstallInstallType,p as canUpdateInstallType,Ge as capabilitiesCommand,Ce as claude,Fe as codebuddy,Re as codewhale,Te as codex,Ke as commandsCommand,Me as copilot,w as createErrorResult,pt as createReleaseManifest,A as createSuccessResult,K as createUpdatePlan,Be as cursor,Ee as deepcode,ue as detectSelfInstallSource,De as devin,Ie as droid,de as emitCommandResult,rt as ensureCommand,bt as execCommand,dt as formatChecksums,Ne as gemini,ke as genie,ze as getAgentByLookupName,Pe as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,c as getAgentUpdateStrategy,Le as getAllAgents,b as getBinaryPath,u as getBinaryReleaseAssetName,B as getBinaryReleaseDownloadUrl,U as getCatalogAgent,ge as getCatalogAgents,f as getCliContext,ae as getConfigDir,o as getConfigFilePath,ct as getExitCodeForError,lt as getExitCodeForResult,D as getInstallLifecycle,se as getInstalledAgentState,r as getInstalledVersion,F as getInstallerCapabilities,y as getLatestVersion,Qe as getManagedInstaller,e as getManualAgentUpdateMessage,E as getManualSelfUpgradeCommand,Ye as getOrderedInstallMethods,s as getPlatform,st as getSchemaCatalog,z as getSelfState,L as getSelfUpgradeRecoveryHint,g as getSelfUpgradeRecoveryHintForInspection,R as getSelfVersion,ht as getSingleAgentUpdateStatus,ce as getStateFilePath,Oe as grok,Se as hermes,W as inspectAgent,et as inspectAllAgents,it as inspectCommand,G as inspectRegisteredAgents,N as inspectSelf,Ze as installAgent,te as isBinaryInPath,k as isBunAvailable,l as isDenoAvailable,q as isInspectionUpdateAvailable,C as isManagedInstallType,le as isNpmAvailable,Ve as jcode,We as junie,we as kilo,oe as loadConfig,i as loadState,Ue as mimo,X as normalizeRepositoryUrl,be as omp,fe as openclaw,He as opencode,xe as openhands,Y as parseBinaryTarget,ft as parseChecksums,me as pi,gt as planAgentUpdates,pe as qoder,ve as reasonix,re as removeInstalledAgentState,P as resetCliContext,tt as resolveAgent,nt as resolveAgentInspection,d as resolveAgentUpdateProvider,m as resolveCliContext,at as resolveCommand,Z as resolveReleaseChannel,V as saveConfig,n as saveState,ot as schemaCommand,S as setCliContext,ne as setInstalledAgentState,ie as setSelfInstallSource,a as setSelfUpdateNoticeState,Xe as uninstallAgent,Je as updateAgent,qe as updateAgentsByType,x as upgradeSelf,mt as validateReleaseManifest,je as vibe,H as vtcode};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-DRZEEJuf.mjs";import{r as o}from"./lifecycle-observations-AFJINgqR.mjs";import{t as s}from"./agent-inspection-YgRBlO4j.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`info`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return n(i({action:`info`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));return}if(e.data){console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),console.log(` Installed: ${e.data.inspection.installed?a.green(`Yes`):a.red(`No`)}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installed&&console.log(` Lifecycle: ${e.data.inspection.lifecycle}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(a.bold(`
|
|
2
|
+
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${a.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as infoCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-DRZEEJuf.mjs";import{r as o}from"./lifecycle-observations-AFJINgqR.mjs";import{t as s}from"./agent-inspection-YgRBlO4j.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`inspect`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c),f=u.selfUpdate?[u.selfUpdate.command,...u.selfUpdate.fallbackCommands??[]].map(e=>e.join(` `)):[];return n(i({action:`inspect`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})),name:u.name,packageName:u.packages?.npm,selfUpdateCommands:f},capabilities:{canAutoInstall:d.methods.length>0,canAutoUninstall:d.inPath&&d.lifecycle===`managed`,canRun:d.inPath,canSelfUpdate:f.length>0},inspection:{binaryPath:d.binaryPath,installed:d.inPath,installedVersion:d.installedVersion,latestVersion:d.latestVersion,lifecycle:d.lifecycle,sourceLabel:d.inPath?d.sourceLabel:void 0,updateLabel:d.updateLabel}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));return}if(e.data){console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Aliases: ${e.data.agent.aliases.join(`, `)||`-`}`),console.log(` Package: ${e.data.agent.packageName??`-`}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Installed: ${e.data.inspection.installed?a.green(`Yes`):a.red(`No`)}`),console.log(` Update Mode: ${e.data.inspection.updateLabel}`),console.log(` Self Update: ${e.data.agent.selfUpdateCommands.join(` || `)||`-`}`),e.data.inspection.sourceLabel&&console.log(` Source: ${e.data.inspection.sourceLabel}`),e.data.inspection.installedVersion&&console.log(` Version: ${e.data.inspection.installedVersion}`),e.data.inspection.latestVersion&&console.log(` Latest: ${e.data.inspection.latestVersion}`),e.data.inspection.binaryPath&&console.log(` Path: ${e.data.inspection.binaryPath}`),console.log(a.bold(`
|
|
2
|
+
Capabilities:`)),console.log(` auto-install: ${e.data.capabilities.canAutoInstall?`yes`:`no`}`),console.log(` self-update: ${e.data.capabilities.canSelfUpdate?`yes`:`no`}`),console.log(` auto-uninstall: ${e.data.capabilities.canAutoUninstall?`yes`:`no`}`),console.log(` runnable: ${e.data.capabilities.canRun?`yes`:`no`}`),console.log(a.bold(`
|
|
3
|
+
Install Methods:`));for(let t of e.data.agent.installMethods)console.log(` ${a.green(`+`)} [${t.label}] ${t.command}`);console.log()}}export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./inspect-BBCaK7m4.mjs";export{e as inspectCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as e,a as t,an as n,et as r,i,n as a,r as o,t as s}from"./color-DRZEEJuf.mjs";import{v as c}from"./provider-evidence-CQl_J-gP.mjs";import{t as l}from"./agent-installation-DYK5G54m.mjs";import{r as u}from"./lifecycle-observations-AFJINgqR.mjs";import{n as d}from"./agents-BHbkPVvR.mjs";import{t as f}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as p,i as m,n as h,r as g}from"./user-output-CnLEBgDD.mjs";import{o as _}from"./lifecycle-policy-Djgq_8nm.mjs";async function v(e){let r=_(Array.isArray(e)?e:[e]);if(r.length<=1)return t(await y(r[0],{emitStartedEvent:!0}),A);i({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let s=[];for(let e of r){if(n().cancelled)break;let t=E(e,await y(e));if(s.push(t),i({action:`install`,data:t,target:{kind:`agent`,name:t.agent.name},type:`progress`}),n().cancelled)break}let c={results:s,scope:`batch`,summary:O(s)};return n().cancelled&&s.length<r.length?t(a({action:`install`,data:c,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),j):t(s.some(e=>!e.ok)?a({action:`install`,data:c,error:k(s),target:{kind:`agent`}}):o({action:`install`,data:c,target:{kind:`agent`}}),j)}async function y(t,r={}){if(n().cancelled||!d(t)||h())return b(t,r);try{return await c(()=>b(t,r))}catch(n){if(e(n))return a({action:`install`,...f(n,{kind:`agent`,name:t}),target:{kind:`agent`,name:t}});throw n}}async function b(t,i){if(n().cancelled)return a({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:t}});let o=await u(t);if(!o)return a({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}});let{agent:s}=o,c=o.pathExecutable.present,d=o.installedState,p=c&&!d?r(o.methods,o.resolvedBinaryPath??o.pathExecutable.path):void 0;if(c&&!d&&!p)return w(s);let m=d&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?S(s):C(s,m===`adopt`,!!d);m!==`satisfied`&&T(s,i.emitStartedEvent);try{return x(s,m,await l({adoptableMethod:p,agent:s,observation:{inPath:c,installedState:d,lifecycle:o.observation,methods:o.methods},operation:`install`,route:m}))}catch(t){if(e(t))return a({action:`install`,data:{agent:{displayName:s.displayName,name:s.name},changed:!1,installed:c},...f(t,{kind:`agent`,name:s.name})});throw t}}function x(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return S(e);let r=n.value.value.installedState;return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:{installType:r.installType,packageName:r.packageName},installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let r=n.kind===`cancelled`?{code:`CANCELLED`,message:`Install was cancelled before tracking could complete.`}:n.kind===`failed`&&n.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:n.kind===`failed`&&n.reason.endsWith(`-after-install`)||n.kind===`indeterminate`?{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:`${e.displayName} could not be verified after installation.`}:{code:`INSTALL_FAILED`,message:`Failed to install ${e.displayName}.`};return a({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!1},error:r,target:{kind:`agent`,name:e.name}})}function S(e){return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function C(e,t,n){return o({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function w(e){return o({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 T(e,t=!1){t&&i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function E(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:D(t),warnings:r}}function D(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 O(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 k(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 A(e){if(e.error){g(s.red(e.error.message));return}if(e.data){if(e.warnings.length>0){for(let t of e.warnings){if(t.code===`TRACKED_EXISTING_INSTALL`){m(s.green(t.message));continue}if(t.code===`DRY_RUN`){p(s.cyan(t.message));continue}p(s.yellow(t.message))}return}m(s.cyan(`Installing ${e.data.agent.displayName}...`)),m(s.green(`${e.data.agent.displayName} installed successfully!`))}}function j(e){if(!e.data){e.error&&g(s.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`installed`:m(s.cyan(`Installing ${t.agent.displayName}...`)),m(s.green(`${t.agent.displayName} installed successfully!`));break;case`tracked-existing-install`:m(s.green(M(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(s.yellow(M(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(s.cyan(M(t.warnings,`Dry run: would install ${t.agent.displayName}.`)));break;case`locked`:p(s.yellow(t.error?.message??`Another quantex process is already installing ${t.agent.displayName}.`));break;case`failed`:g(s.red(t.error?.message??`Failed to install ${t.agent.displayName}.`));break}N(e.data.summary)}function M(e,t){return e[0]?.message??t}function N(e){let t=[e.installed?`installed ${e.installed}`:void 0,e.alreadyInstalled?`already installed ${e.alreadyInstalled}`:void 0,e.trackedExistingInstall?`tracked existing ${e.trackedExistingInstall}`:void 0,e.untrackedExistingInstall?`untracked existing ${e.untrackedExistingInstall}`:void 0,e.failed?`failed ${e.failed}`:void 0,e.locked?`locked ${e.locked}`:void 0,e.planned?`planned ${e.planned}`:void 0].filter(Boolean);t.length>0&&m(s.bold(`Summary: ${t.join(`, `)}`))}export{v as installCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{At as e,C as t,Gt as n,Kt as r,Mt as i,Ot as a,S as o,Xt as s,jt as c,kt as l,tt as u,ut as d}from"./color-DRZEEJuf.mjs";import{n as f,r as p}from"./agents-Dc-rbRUf.mjs";import{a as m,i as h,l as g,n as _,o as v,r as y,t as b}from"./provider-evidence-CQl_J-gP.mjs";async function x(e,t){let[n,r,i]=await Promise.all([t.inspectExecutable(e),t.readInstalledState(e.name),t.readReceipt(e.name)]),a=t.clock(),o=y(e,t.platform),s=o.bindings,c=r?v(e,r):void 0,l=i?m(i):void 0,u=l??c,d={catalogMethods:s,executable:n,installedState:r,pathExecutable:n,persistedBinding:u,receipt:i};if(r&&!c||i&&!l)return{...d,capabilities:[],observation:w(e,a,`Persisted provider binding cannot be resolved.`)};if(c&&l&&!_(c,l,e.binaryName))return{...d,capabilities:[],observation:n.present?C(e,n,a,{kind:`conflicting-source`,observedProviderId:c.providerId,recordedProviderId:l.providerId}):{drift:{kind:`conflicting-source`,observedProviderId:c.providerId,recordedProviderId:l.providerId},kind:`absent`,observedAt:a,targetId:e.name}};let f=u;if(f){let o=await S(f,t),s=t.providerRegistry.getCapabilities(f.providerId);if(o.kind!==`success`)return{...d,binding:f,capabilities:s,observation:w(e,a,A(o)),providerOutcome:o};let c=o.value;if(!O(f,c))return{...d,binding:f,capabilities:s,observation:k(e,n,a),providerOutcome:o};if(c.kind===`absent`&&!n.present)return{...d,binding:f,capabilities:s,observation:{drift:{kind:`recorded-absent`},kind:`absent`,observedAt:a,targetId:e.name},providerOutcome:o};let l=c.kind!==(n.present?`present`:`absent`)||c.kind===`present`&&n.present&&c.executablePath!==void 0&&n.path!==void 0&&c.executablePath!==n.path||c.kind===`present`&&E(c.version,n.version)||i?.executablePath!==void 0&&n.path!==void 0&&i.executablePath!==n.path||D(e,r,i,f),u=T(n,c);return{...d,binding:f,capabilities:s,executable:u,observation:C(e,u,a,l?{kind:`conflicting-source`,observedProviderId:c.kind===`present`?f.providerId:void 0,recordedProviderId:f.providerId}:{kind:`none`},c.kind===`present`?f:void 0),providerOutcome:o}}let p=await Promise.all(s.map(async e=>({binding:e,outcome:await S(e,t)}))),h=p.find(e=>e.outcome.kind===`success`&&!O(e.binding,e.outcome.value));if(h)return{...d,capabilities:[],observation:k(e,n,a),providerOutcome:h.outcome};let g=p.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),b=p.filter(e=>e.binding.providerId!==`binary`&&e.binding.providerId!==`script`),x=b.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),M=b.some(e=>e.outcome.kind!==`success`),N=x.length>0?x:M?[]:g;if(N.length>1)return{...d,capabilities:[],observation:n.present?C(e,n,a,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:a,reason:`Multiple catalog providers report the agent as present.`,targetId:e.name}};if(o.unresolvedCandidates.length>0)return{...d,capabilities:[],observation:w(e,a,`A catalog provider binding cannot be resolved.`)};let P=p.map(e=>e.outcome).find(j),F=p.map(e=>e.outcome).find(e=>e.kind===`cancelled`||e.kind===`timed-out`);if(F)return{...d,capabilities:[],observation:w(e,a,A(F)),providerOutcome:F};let I=N[0];if(I){let r=I.binding,i=I.outcome.value,o=T(n,i),s=!n.present||i.executablePath!==void 0&&n.path!==void 0&&i.executablePath!==n.path||E(i.version,n.version);return{...d,binding:r,capabilities:t.providerRegistry.getCapabilities(r.providerId),executable:o,observation:C(e,o,a,s?{kind:`conflicting-source`,observedProviderId:r.providerId}:{kind:`untracked`},r),providerOutcome:I.outcome}}let L=t.preferredCatalogBinding,R=L?p.find(t=>_(t.binding,L,e.binaryName)&&t.outcome.kind===`success`&&t.outcome.value.kind===`absent`):void 0;return!n.present&&g.length===0&&P&&R?{...d,capabilities:[],observation:{drift:{kind:`none`},kind:`absent`,observedAt:a,targetId:e.name},providerOutcome:R.outcome}:P?{...d,capabilities:[],observation:w(e,a,A(P)),providerOutcome:P}:{...d,capabilities:[],observation:n.present?C(e,n,a,{kind:`untracked`}):{drift:{kind:`none`},kind:`absent`,observedAt:a,targetId:e.name}}}async function S(e,t){try{return await(t.observeProvider??b)(e,{registry:t.providerRegistry,signal:t.signal,timeoutMs:t.timeoutMs})}catch(e){return{kind:`failed`,reason:M(e),retryable:!1}}}function C(e,t,n,r,i){return{drift:r,...t.path?{executablePath:t.path}:{},kind:`present`,observedAt:n,...i?{providerId:i.providerId,providerTargetId:i.target.id,providerTargetKind:i.target.kind}:{},targetId:e.name,...t.version?{version:t.version}:{}}}function w(e,t,n){return{drift:{kind:`indeterminate`,reason:n},kind:`indeterminate`,observedAt:t,reason:n,targetId:e.name}}function T(e,t){return t.kind===`absent`?e:{path:e.path??t.executablePath,present:!0,version:e.version??t.version}}function E(e,t){if(e===void 0||t===void 0)return!1;let n=a(e,t);return n===void 0?e!==t:n!==0}function D(e,t,n,r){let i=[e.binaryName,t?.binaryName,n?.executableName,r.target.binaryName].filter(e=>e!==void 0);return new Set(i).size>1}function O(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function k(e,t,n){return t.present?C(e,t,n,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:n,reason:`Provider evidence does not match the requested target identity.`,targetId:e.name}}function A(e){switch(e.kind){case`unsupported`:return e.reason??`Provider does not support ${e.operation}.`;case`unavailable`:case`failed`:case`indeterminate`:return e.reason;case`cancelled`:return e.reason??`Provider observation was cancelled.`;case`timed-out`:return`Provider observation timed out after ${e.timeoutMs}ms.`}}function j(e){return e.kind!==`success`}function M(e){return e instanceof Error&&e.message.trim().length>0?`Provider observation rejected: ${e.message.trim().slice(0,500)}`:`Provider observation rejected unexpectedly.`}function N(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]?h(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,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 P(e,t){return t?I(t).resolveAgentObservation(e):L(t=>t.resolveAgentObservation(e))}function F(e){return e?I(e).observeRegisteredAgents():L(e=>e.observeRegisteredAgents())}function I(e,r={}){return N({clock:()=>new Date().toISOString(),getAllAgents:p,getAgentByNameOrAlias:f,getLatestVersion:(t,n,r)=>B(t,n,r,e),getOrderedInstallMethods:g,getPlatform:n,getResolvedBinaryPath:t=>i(t,e),inspectExecutable:(t,n)=>R(t,n,e),observeAgentLifecycle:x,providerRegistry:d,readInstalledState:o,readReceipt:t,signal:e.signal,timeoutMs:e.timeoutMs},r)}async function L(e){let t=s(),n=I(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function R(e,t,n){let i=await r(e.binaryName,n);if(!i)return{present:!1};let[a,o]=await Promise.all([l(e.binaryName,n),z(e,t,n)]);return{path:a,present:i,version:o}}async function z(t,n,r){return e(t.binaryName,t.versionProbe,r)}async function B(e,t,n,r){let i=u(e,t,n);return i?c(i,`latest`,{context:r}):void 0}export{F as n,P as r,I as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Kt as e,Ot as t,Xt as n,dt as r}from"./color-DRZEEJuf.mjs";import{a as i,n as a,t as o}from"./provider-evidence-CQl_J-gP.mjs";import{r as s}from"./lifecycle-observations-AFJINgqR.mjs";import{n as c}from"./agents-BHbkPVvR.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:B(t.signal)});continue}let a;try{a=await j(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:Te(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===`updated`}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(R),n=[];for(let r of t){let t=await A(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Ce(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!==`blocked`||e.category!==`unsafe-source`)return!1;let t=e.before;return t.observation.kind===`absent`&&t.observation.drift.kind===`none`&&!t.executable.present&&t.binding===void 0&&t.persistedBinding===void 0&&t.installedState===void 0&&t.receipt===void 0}async function A(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:B(t.signal)};let r=ve(n);if(!r)return{before:n,category:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:`The recorded update source does not match live provider evidence.`};let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return xe(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions}}}async function j(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=()=>_e(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function _e(e,t){let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason: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=ye(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=be(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:we(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}function ve(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 ye(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!z(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function be(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function xe(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${L(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,plannedTargetVersion:r,planning: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=${i.decision};plan=${L(i.plan.id)};version=${L(r)};${I(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=${Se(t.providerOutcome)}`}function Se(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${L(e.operation)};reason=${L(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${L(e.reason)};retryable=${L(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(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=${F(e.evidence)};reason=${L(e.reason)}`}}function P(e){return e?`argv:${e.map(L).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${L(e.kind)}:value=${L(e.value)}`).sort(R).join(`,`)}`:`undefined`}function Ce(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;return`provider=${L(t.binding.providerId)};${I(t.providerOptions)}`}function I(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 we(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function Te(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Ee(e,t=e=>c(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function De(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:c(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`){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:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Le(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 Oe(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`)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:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=Re(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 ke(e,t={}){let n=t.observe??s,r=Ee(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:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Me((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=Ae(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`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ae(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!je(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 je(e){try{return d(g(e.items))===d(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 Me(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=Ne(n[e],r[e]);if(t!==0)return t}return 0})}function Ne(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 Pe(t,n={}){let r=n.observe??s,i=await r(t),a=i?.agent.name??t,o=i?ze(i):void 0,c=n.observeProviderTarget??He,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Ge(await Ue(c,o.binding),o.binding)&&await We(l,o.executableName)===!1)return Ve(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Be({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=Fe(n.observation);if(i!==`clear`)return{kind:i};let o=await Ue(c,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let s=await We(l,t.executableName);return s===void 0?{kind:`inconclusive`}:s?{kind:`drifted`}:{kind:`satisfied`}}}}function Fe(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 Ie(e,t,n={}){let r=await(n.observe??s)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??s)(i);if(!e)return;let t=U(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??s)(i);if(!t)return{kind:`inconclusive`};let r=U(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(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 Le(e,n){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||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ke(c)||!qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function Re(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!je(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=Le({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={agentTargetId:t.before.agent.name,expectedVersion:t.plannedTargetVersion,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},i=q(e,r,n);if(i!==`satisfied`)return{kind:i};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let a=e.observation,o=W([e.executable.version,a.version])[0];return{evidence:{postcondition:{agentTargetId:r.agentTargetId,expectedVersion:r.expectedVersion,kind:`version-satisfies`,providerId:r.providerId,providerTargetKind:r.providerTargetKind,targetId:r.providerTargetId},receipt:{agentTargetId:r.agentTargetId,executableName:n.executableName??e.agent.binaryName,...a.executablePath?{executablePath:a.executablePath}:{},providerId:r.providerId,providerTargetKind:r.providerTargetKind,schemaVersion:n.schemaVersion,targetId:r.providerTargetId,version:o}},kind:`compatible`}}function q(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!a(i,e.binding,e.agent.binaryName)||!a(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let o=W([e.executable.version,e.observation.version]);if(o.length===0)return`inconclusive`;if(o.length>1)return`drifted`;let s=t(o[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function ze(e){let t=e.receipt?i(e.receipt):void 0;if(!(!t||!e.binding||!a(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 Be(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||!Ke(o)||!qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function Ve(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 He(e){let t=n();try{return await t.run(()=>o(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 Ue(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function We(e,t){try{return await e(t)}catch{return}}function Ge(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ke(e){return r.includes(e)}function qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{De as a,j as c,re as d,d as f,Ie as i,he as l,ke as n,Ee as o,Oe as r,pe as s,Pe as t,A as u};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,r as t,t as n}from"./color-DRZEEJuf.mjs";import{n as r}from"./lifecycle-observations-AFJINgqR.mjs";import{t as i}from"./agent-inspection-YgRBlO4j.mjs";async function a(){return e(t({action:`list`,data:{agents:(await r()).map(i).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`}}),o)}function o(e){console.log(n.bold(`
|
|
2
|
+
AI Agents:
|
|
3
|
+
`));for(let t of e.data?.agents??[]){let e=t.displayName.padEnd(18),r=t.installed?n.green(`installed`):n.gray(`not installed`),i=t.installed?n.dim(t.installedVersion??`unknown version`):``,a=t.installed?n.cyan(t.updateLabel):``,o=t.installed?n.dim(t.sourceLabel):``;console.log(` ${e} ${r} ${i}${a?` ${a}`:``}${o?` ${o}`:``}`)}console.log()}export{a as listCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ct as e,Dt as t,Et as n,Gt as r,Ht as i,L as a,M as o,O as s,Rt as c,S as ee,St as te,Tt as ne,Vt as re,Wt as ie,Xt as l,_t as ae,an as u,at as d,bt as f,dt as p,ft as oe,gt as se,ht as ce,it as m,lt as h,mt as le,nt as g,pt as ue,rn as _,tn as v,ut as de,vt as fe,wt as pe,xt as me,yt as y}from"./color-DRZEEJuf.mjs";import b from"node:process";import{AsyncLocalStorage as he}from"node:async_hooks";async function x(e){let t=r(),n=typeof e==`function`?e(t):e;try{return b.platform===`win32`?await _(v([`powershell.exe`,`-Command`,n]))===0:await _(v([`sh`,`-c`,n]))===0}catch{return!1}}function S(e,t,n){return{type:e,getInstalledVersion:e=>n.getInstalledVersion(e),probePackagePresence:e=>n.probePackagePresence(e),isAvailable:e=>C(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,i)=>t.install?C(i,i=>t.install({context:i,target:w(e,n,void 0,r)})):k(`install`),uninstall:async(e,n,r,i)=>t.uninstall?C(i,i=>t.uninstall({context:i,target:w(e,n,r?.binaryName)})):k(`uninstall`),update:async(e,n,r,i)=>{if(!t.update)return k(`update`);let a=T(r);return C(i,i=>t.update({context:i,...a?{options:a}:{},target:w(e,n,r?.binaryName,r?.packageInstallArgs)}))},updateMany:async(e,n,r)=>{if(!t.updateMany)return k(`update-many`);let i=T(n);return C(r,n=>t.updateMany({context:n,...i?{options:i}:{},targets:e.map(e=>w(e.packageName,e.packageTargetKind,e.binaryName,e.packageInstallArgs))}))}}}async function C(e,t){if(e)return t(e);let n=l();try{return await t(n.context)}finally{n.dispose()}}function w(e,t,n,r){return{...r?.length?{arguments:r}:{},...n?{binaryName:n}:{},id:e,kind:t??`package`}}function T(e){return e?.npmBunUpdateStrategy?{updateStrategy:e.npmBunUpdateStrategy}:void 0}function E(e,t,n,r={}){let i=(e,t,r,i)=>({...r?.length?{arguments:r}:{},...i?{binaryName:i}:{},id:e,kind:n(t)});return{...r,type:e,isAvailable:e=>C(e,async e=>(await t.availability(e)).kind===`success`),install:async(e,n,r,a)=>t.install?C(a,a=>t.install({context:a,target:i(e,n,r)})):k(`install`),uninstall:async(e,n,r,a)=>t.uninstall?C(a,a=>t.uninstall({context:a,target:i(e,n,void 0,r?.binaryName)})):k(`uninstall`),update:async(e,n,r,a)=>t.update?C(a,a=>t.update({context:a,target:i(e,n,r?.packageInstallArgs,r?.binaryName)})):k(`update`),updateMany:async(e,n,r)=>t.updateMany?C(r,n=>t.updateMany({context:n,targets:e.map(e=>i(e.packageName,e.packageTargetKind,e.packageInstallArgs,e.binaryName))})):k(`update-many`)}}const D={brew:E(`brew`,ie,e=>e===`cask`?`cask`:`formula`),bun:S(`bun`,t,{getInstalledVersion:e=>re(e),probePackagePresence:e=>i(e)}),cargo:E(`cargo`,n,()=>`package`),deno:E(`deno`,ne,()=>`tool`),mise:E(`mise`,f,()=>`tool`,{getInstalledVersion:e=>me(e),probePackagePresence:e=>te(e)}),npm:S(`npm`,ae,{getInstalledVersion:e=>fe(e),probePackagePresence:e=>y(e)}),pip:E(`pip`,se,()=>`package`),uv:E(`uv`,ue,()=>`tool`,{getInstalledVersion:e=>le(e),probePackagePresence:e=>ce(e)}),winget:E(`winget`,oe,()=>`id`)},ge=Object.fromEntries(Object.entries(D).map(([e,t])=>[e,ve(t)]));function _e(e){return ge[e]}function O(e){return D[e]}function ve(e){return{getInstalledVersion:e.getInstalledVersion,install:async(...t)=>(await e.install(...t)).kind===`success`,isAvailable:e.isAvailable,probePackagePresence:e.probePackagePresence,type:e.type,uninstall:async(...t)=>(await e.uninstall(...t)).kind===`success`,update:async(...t)=>(await e.update(...t)).kind===`success`,updateMany:async(...t)=>(await e.updateMany(...t)).kind===`success`}}function k(e){return{kind:`unsupported`,operation:e}}const A={resource:`agent lifecycle`,scope:[`agent-lifecycle`]},j=new he;function M(e){return j.getStore()?e():a(A,()=>j.run(!0,e))}async function N(){return(await c()).defaultPackageManager}async function P(){return{npmBunUpdateStrategy:(await c()).npmBunUpdateStrategy}}async function F(e){let t=r(),n=e.platforms[t];if(!n)return[];let i=await N();return i?[...n.filter(e=>e.type===i),...n.filter(e=>e.type!==i)]:[...n]}async function I(e,t,n,r,i,a,o,s){if(!s){let s=l();try{return await I(e,t,n,r,i,a,o,s.context)}finally{s.dispose()}}let c=O(e);return await c.isAvailable(s)?a===`install`?c.install(t,i,r,s):a===`update`?c.update(t,i,{binaryName:n,npmBunUpdateStrategy:o,packageInstallArgs:r},s):c.uninstall(t,i,{binaryName:n},s):{kind:`unavailable`,reason:`${e} executable is unavailable`,retryable:!1}}async function L(t,n,r,i){if(h(n.type)){let e=g(t,n);return e?I(n.type,e,n.binaryName??t.binaryName,n.packageInstallArgs,n.packageTargetKind,r,i):{kind:`failed`,reason:`package target is missing for ${t.name}`,retryable:!1}}if(r===`update`&&!d(n.type))return{kind:`unsupported`,operation:`update`};if(!n.command)return{kind:`failed`,reason:`install effect is missing for ${t.name}`,retryable:!1};let a=n.type===`script`?pe:e,o=l();try{return await a.install?.({context:o.context,target:{binaryName:n.binaryName??t.binaryName,effect:{command:n.command,kind:`shell-script`},id:t.name,kind:n.type}})??{kind:`unsupported`,operation:r}}finally{o.dispose()}}function R(e,t){if(e.packageName)return e.packageName;if(!(!t||!h(e.installType)))return g(t,{type:e.installType})}async function z(e,t,n){if(h(e.installType)){let r=R(e,n?.agent);return r?I(e.installType,r,e.binaryName,e.packageInstallArgs,e.packageTargetKind,t,n?.updateStrategy):{kind:`failed`,reason:`package target is missing for ${e.agentName}`,retryable:!1}}return t!==`install`||!e.command?{kind:`unsupported`,operation:t}:await x(e.command)?{kind:`success`,value:void 0}:{kind:`failed`,reason:`${t} command failed for ${e.agentName}`,retryable:!1}}async function B(e,t){if(!h(t.type))return;let n=g(e,t);n&&await I(t.type,n,t.binaryName??e.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}async function ye(e){if(!e.selfUpdate)return!1;let t=[e.selfUpdate.command,...e.selfUpdate.fallbackCommands??[]];for(let e of t)if(await x(e.join(` `)))return!0;return!1}function V(e,t){let n={agentName:e.name,installType:t.type,packageName:g(e,t),packageTargetKind:t.packageTargetKind,command:`command`in t?t.command:void 0},r=t.binaryName??(t.type===`deno`?e.binaryName:void 0);return r&&(n.binaryName=r),t.packageInstallArgs?.length&&(n.packageInstallArgs=t.packageInstallArgs),n}async function be(e,t){if(u().cancelled)return null;let n=V(e,t);return u().cancelled?null:(await o(n),u().cancelled?(await s(e.name),null):n)}async function H(e,t){return M(async()=>{let n=t?[...t]:await F(e),r;for(let t of n){if(u().cancelled)return{kind:`cancelled`,reason:`install-cancelled`};let n=await L(e,t,`install`);if(n.kind===`success`)return u().cancelled?(await B(e,t),{kind:`cancelled`,reason:`install-cancelled`}):{kind:`success`,value:{installedState:V(e,t)}};let i=J(n);if(i.kind===`cancelled`||i.kind===`timed-out`)return i;if(r=i,u().cancelled)return await B(e,t),{kind:`cancelled`,reason:`install-cancelled`}}return r??{kind:`failed`,reason:`install-failed`,retryable:!1}})}async function xe(e){return M(async()=>{let t=await H(e);if(t.kind!==`success`||!t.value.installedState)return q(t);try{return u().cancelled?(await G(e,t.value.installedState),{success:!1}):(await o(t.value.installedState),u().cancelled?(await s(e.name),await G(e,t.value.installedState),{success:!1}):q(t))}catch(n){throw await G(e,t.value.installedState),n}})}async function Se(e,t){return M(async()=>{let{npmBunUpdateStrategy:n}=await P(),r=await F(e),i=t&&h(t.installType)?R(t,e):void 0,a=t?await z(t,`update`,{agent:e,updateStrategy:n}):void 0;if(t&&a?.kind===`success`)return u().cancelled||(await o(t),u().cancelled)?{kind:`cancelled`,reason:`update-cancelled`}:{kind:`success`,value:{installedState:t}};if(a?.kind===`cancelled`||a?.kind===`timed-out`)return J(a);if(!t)for(let t of r){let r=await L(e,t,`update`,n);if(r.kind===`success`){let n=await be(e,t);return n?{kind:`success`,value:{installedState:n}}:{kind:`cancelled`,reason:`update-cancelled`}}if(r.kind===`cancelled`||r.kind===`timed-out`)return J(r)}return(!t||!h(t.installType)||i)&&await ye(e)?{kind:`success`,value:{}}:{kind:`failed`,reason:`update-failed`,retryable:!1}})}async function U(e,t){return q(await Se(e,t))}async function Ce(e,t){return M(async()=>{let n=[...new Map(t.filter(e=>e.packageName).map(e=>[`${e.packageTargetKind??`package`}:${e.packageName}:${e.packageInstallArgs?.join(` `)??``}`,e])).values()];if(n.length===0)return!1;let r=O(e);return await r.isAvailable()?(await r.updateMany(n,await P())).kind===`success`:!1})}async function we(e,t,n){let r=O(e);if(r.getInstalledVersion&&await r.isAvailable())return r.getInstalledVersion(t,n)}async function Te(e,t){if(!h(e.installType))return!1;let n=O(e.installType);if(!n.getInstalledVersion||!await n.isAvailable())return!1;let r=R(e,t);return r?n.probePackagePresence?await n.probePackagePresence(r,e.packageTargetKind)===`absent`:await n.getInstalledVersion(r,e.packageTargetKind)===void 0:!1}async function Ee(e){return(await M(async()=>{let t=await ee(e.name);return t?W(e,t):{kind:`failed`,reason:`installed-state-missing`,retryable:!1}})).kind===`success`}async function W(e,t){if(!m(t.installType))return await s(e.name),{kind:`success`,value:{installedState:t}};let n=await z(t,`uninstall`,{agent:e});return n.kind===`success`||await Te(t,e)?(await s(e.name),{kind:`success`,value:{installedState:t}}):J(n)}async function De(e,t){let n=await z(t,`install`,{agent:e});return n.kind===`success`?{kind:`success`,value:{installedState:t}}:J(n)}async function G(e,t){if(!m(t.installType)||!h(t.installType))return;let n=R(t,e);n&&await I(t.installType,n,t.binaryName,t.packageInstallArgs,t.packageTargetKind,`uninstall`,void 0,K())}function K(){let e=u().timeoutMs;return{signal:new AbortController().signal,timeoutMs:e===void 0?5e3:Math.max(10,Math.min(e,5e3))}}function q(e){return e.kind===`success`?e.value.installedState?{installedState:e.value.installedState,success:!0}:{success:!0}:{success:!1}}function J(e){switch(e.kind){case`success`:return{kind:`success`,value:{}};case`cancelled`:return e;case`timed-out`:return e;case`failed`:return{kind:`failed`,reason:e.reason,retryable:e.retryable};case`unsupported`:return{capability:`provider-${e.operation}`,kind:`unsupported`,reason:e.reason};case`unavailable`:case`indeterminate`:return{kind:`indeterminate`,reason:e.reason}}}function Y(e,t){let n=$(t.installType);if(!n)return;let r=je(e,t);if(r)return{providerId:n,target:{...t.packageInstallArgs?.length?{arguments:t.packageInstallArgs}:{},...t.binaryName||n===`binary`||n===`script`?{binaryName:t.binaryName??e.binaryName}:{},id:r,kind:Q(n,t.packageTargetKind)}}}function Oe(e){let t=$(e.providerId);if(!(!t||e.providerTargetId.length===0)&&!(t===`brew`&&e.providerTargetKind!==`cask`&&e.providerTargetKind!==`formula`))return{providerId:t,target:{...e.executableName?{binaryName:e.executableName}:{},id:e.providerTargetId,kind:e.providerTargetKind??Q(t)}}}async function ke(e,t){let n=(t.registry??de).get(e.providerId);return n?n.observe({context:{signal:t.signal,timeoutMs:t.timeoutMs},target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}function X(e,t){return Y(e,{agentName:e.name,...t.binaryName?{binaryName:t.binaryName}:{},...t.command?{command:t.command}:{},installType:t.type,...t.packageInstallArgs?{packageInstallArgs:t.packageInstallArgs}:{},...t.packageName?{packageName:t.packageName}:{},...t.packageTargetKind?{packageTargetKind:t.packageTargetKind}:{}})}function Ae(e,t){let n=(e.platforms[t]??[]).map(t=>({binding:X(e,t),method:t})),r=n.map(e=>e.binding).filter(e=>e!==void 0);return{bindings:r.filter((t,n)=>r.findIndex(n=>Z(n,t,e.binaryName))===n),unresolvedCandidates:n.filter(e=>e.binding===void 0).map(e=>e.method)}}function Z(e,t,n){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&(e.target.binaryName??n)===(t.target.binaryName??n)}function je(e,t){if(t.packageName)return t.packageName;if(t.command)return t.command;if(t.binaryName)return t.binaryName;switch(t.installType){case`bun`:case`npm`:return e.packages?.npm;case`cargo`:return e.packages?.cargo;case`deno`:return e.packages?.deno;case`mise`:return e.packages?.mise;case`pip`:return e.packages?.pip;case`uv`:return e.packages?.uv;case`binary`:case`script`:return e.binaryName;case`brew`:case`winget`:return}}function Q(e,t){switch(e){case`binary`:return`binary`;case`brew`:return t===`cask`?`cask`:`formula`;case`deno`:case`mise`:case`uv`:return`tool`;case`script`:return`script`;case`winget`:return`id`;case`bun`:case`cargo`:case`npm`:case`pip`:return`package`}}function $(e){return p.includes(e)?e:void 0}export{Ce as _,Oe as a,we as c,H as d,De as f,U as g,W as h,X as i,F as l,Ee as m,Z as n,Y as o,G as p,Ae as r,V as s,ke as t,xe as u,M as v,_e as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ut as e}from"./color-DRZEEJuf.mjs";const t=Object.freeze([`brew`,`bun`,`cargo`,`deno`,`mise`,`npm`,`pip`,`uv`,`winget`]);async function n(t){let n=t.registry??e;return Promise.all(n.list().map(async e=>({availability:await i(e.availability,t.context),capabilities:n.getCapabilities(e.id),id:e.id})))}function r(e,n){let r=new Map(e.map(e=>[e.id,e]));return Object.fromEntries(t.map(e=>{let t=r.get(e);if(!t)throw Error(`Provider snapshot is missing first-party adapter: ${e}`);return[e,n(t)]}))}async function i(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}export{r as n,n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./resolve-D8sxYL1V.mjs";export{e as resolveCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as e,Z as t,a as n,n as r,r as i,t as a}from"./color-DRZEEJuf.mjs";import{r as o}from"./lifecycle-observations-AFJINgqR.mjs";import{t as s}from"./agent-inspection-YgRBlO4j.mjs";async function c(a){let c=await o(a);if(!c)return n(r({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c);if(!d.inPath||!d.binaryPath){let i=d.methods.map(n=>({command:e(u,n),label:t(n),type:n.type})).filter(e=>e.command);return n(r({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:i,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:i,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},message:`${u.displayName} is not installed.`},target:{kind:`agent`,name:u.name}}),l)}return n(i({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:d.binaryPath,installed:!0,installSource:d.installedState?.installType??`detected-in-path`,installedVersion:d.installedVersion,lifecycle:d.lifecycle,sourceLabel:d.sourceLabel,suggestedLaunchCommand:[d.binaryPath]}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));let t=e.data?.resolution.installGuidance;if(t){console.log(a.dim(`Try: ${t.suggestedEnsureCommand}`));for(let e of t.installMethods)console.log(a.dim(`Install: [${e.label}] ${e.command}`))}return}e.data&&(console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Path: ${e.data.resolution.binaryPath}`),console.log(` Source: ${e.data.resolution.sourceLabel}`),console.log(` Lifecycle: ${e.data.resolution.lifecycle}`),console.log(` Install Type: ${e.data.resolution.installSource}`),e.data.resolution.installedVersion&&console.log(` Version: ${e.data.resolution.installedVersion}`),console.log(` Launch: ${e.data.resolution.suggestedLaunchCommand.join(` `)}`),console.log())}export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./schema-CGsjqfua.mjs";export{e as schemaCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{V as e,a as t,n,r,t as i}from"./color-DRZEEJuf.mjs";async function a(e){let i=s(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(n({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),o):t(r({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),o)}function o(e){if(e.error){console.log(i.red(e.error.message));return}if(e.data){console.log(i.bold(`
|
|
2
|
+
Quantex Schemas
|
|
3
|
+
`));for(let t of e.data.commands)console.log(` ${i.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function s(){return e().map(e=>e.schema)}export{a as n,s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,Kt as n,M as r,N as i,O as a,S as o,a as s,an as c,k as l,n as u,r as d,t as f}from"./color-DRZEEJuf.mjs";import{a as p,h as m,o as h,t as g,v as _}from"./provider-evidence-CQl_J-gP.mjs";import{n as v}from"./agents-BHbkPVvR.mjs";import{t as y}from"./lifecycle-errors-BXlHX_YF.mjs";import{a as b,i as x,n as S,r as C}from"./user-output-CnLEBgDD.mjs";const w=e=>new Promise(t=>setTimeout(t,e));async function T(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??w,i=Math.max(0,t.delayMs??100);for(let a=0;a<n;a+=1){if(t.signal?.aborted||t.isCancelled?.())return!1;let o=await e();if(t.signal?.aborted||t.isCancelled?.())return!1;if(o)return!0;a+1<n&&await r(i)}return!1}async function E(f){let g=v(f);if(!g)return s(u({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:f},message:`Unknown agent: ${f}`},target:{kind:`agent`,name:f}}),N);try{return await _(async()=>{let[t,u]=await Promise.all([o(g.name),e(g.name)]);if(!t&&!u)return s(M(f,g),N);let _=await n(g.binaryName),v=t?h(g,t):void 0,y=u?p(u):void 0;if(t&&!v||u&&!y)return s(k(g,`indeterminate-source`,`Cannot resolve provider evidence for ${g.displayName}.`),N);if(v&&y&&!D(v,y))return s(k(g,`conflicting-source`,`Recorded sources disagree for ${g.displayName}.`),N);let b=v??y,x=await O(b);return x.kind===`success`?x.value.kind===`absent`?_?s(k(g,`conflicting-source`,`${g.displayName} is on PATH but its recorded provider target is absent.`),N):S()?s(A(g,`would reconcile stale lifecycle evidence`),N):(t&&await a(g.name),u&&await l(g.name),s(j(g),N)):t?S()?s(A(g,`would uninstall ${g.displayName}`),N):(u||await i({...b.target.binaryName?{executableName:b.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:b.providerId,providerTargetId:b.target.id,providerTargetKind:b.target.kind,schemaVersion:1,targetId:g.name,verifiedAt:new Date().toISOString(),...x.value.executablePath?{executablePath:x.value.executablePath}:{},...x.value.version?{version:x.value.version}:{}}),(await m(g,t)).kind===`success`?await T(async()=>{let e=await O(b);return e.kind!==`success`||e.value.kind!==`absent`?!1:!await n(g.binaryName)},{isCancelled:()=>!!c().cancelled})?(await l(g.name),s(d({action:`uninstall`,data:{agent:{displayName:g.displayName,name:g.name},changed:!0},target:{kind:`agent`,name:g.name}}),N)):(await r(t),s(k(g,`verification-failed`,`${g.displayName} is still present after provider removal.`),N)):s(k(g,`provider-failure`,`Failed to uninstall ${g.displayName}.`),N)):s(k(g,`indeterminate-source`,`Cannot safely reconstruct ${g.displayName}'s uninstall source.`),N):s(k(g,`indeterminate-source`,`Cannot verify provider state for ${g.displayName}.`),N)})}catch(e){if(t(e))return s(u({action:`uninstall`,data:{agent:{displayName:g.displayName,name:g.name},changed:!1},...y(e,{kind:`agent`,name:g.name})}),N);throw e}}function D(e,t){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&e.target.binaryName===t.target.binaryName}async function O(e){let t=c(),n=new AbortController;return t.cancelled&&n.abort(`cli-cancelled`),g(e,{signal:n.signal,timeoutMs:t.timeoutMs})}function k(e,t,n){return u({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:t},message:n},target:{kind:`agent`,name:e.name}})}function A(e,t){return d({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${t}.`}]})}function j(e){return d({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.displayName} was already absent; stale lifecycle evidence was removed.`}]})}function M(e,t){return u({action:`uninstall`,data:{agent:{displayName:t.displayName,name:t.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:t.displayName,input:e,lifecycle:`unmanaged`,name:t.name},message:`${t.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${t.name} for details.`},target:{kind:`agent`,name:t.name}})}function N(e){if(e.error){C(f.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)b(f.yellow(t.message));return}x(f.cyan(`Uninstalling ${e.data.agent.displayName}...`)),x(f.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{E as uninstallCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{E as r,I as i,J as a,Rt as o,Xt as s,a as c,an as l,i as u,n as d,r as f,t as p,ut as m}from"./color-DRZEEJuf.mjs";import{r as h}from"./agents-Dc-rbRUf.mjs";import{v as g}from"./provider-evidence-CQl_J-gP.mjs";import{t as _}from"./update-planner-BhJnvNKA.mjs";import{t as v}from"./lifecycle-observations-AFJINgqR.mjs";import{n as y}from"./agents-BHbkPVvR.mjs";import{a as b,i as x,n as S,r as C}from"./user-output-CnLEBgDD.mjs";import{a as w,c as T,l as E,r as D,s as O,u as k}from"./lifecycle-policy-Djgq_8nm.mjs";async function A(){let e=j();try{return await e.run()}finally{e.dispose()}}function j(){let e=s(),t=0,n=!1,a=!1,c,l,u,d,f=()=>{!n||a||t>0||(a=!0,e.dispose())},p=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,f()}},y=()=>(u??=o().then(t=>{let n=v(e.context);return{classifyMutationLockError:e=>i(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:S(),listRegisteredAgentNames:()=>h().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:_,providerRegistry:m,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:g,writeReceipt:r.write}}),u),b=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(l??=p(async()=>E(await y())),l);return{dispose(){n||(n=!0,f())},getOutcome:()=>c,async observe(e){return p(async()=>(await y()).observe(e))},prepare:b,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(d??=(async()=>{let e=await b();return c=await p(async()=>O(e,await y())),c})(),d)}}}async function M(e){let t=N(e);try{return await t.run()}finally{t.dispose()}}function N(e){let t=s(),n=0,i=!1,a=!1,c,l,u,d,f=()=>{!i||a||n>0||(a=!0,t.dispose())},p=async e=>{if(i)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},h=()=>(u??=o().then(e=>{let n=v(t.context);return{clock:()=>new Date().toISOString(),dryRun:S(),observe:n.resolveAgentObservation,planLifecycleUpdate:_,providerRegistry:m,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:g,writeReceipt:r.write}}),u),y=()=>i?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(l??=p(async()=>k(e,await h())),l);return{dispose(){i||(i=!0,f())},getOutcome:()=>c,async observe(e){return p(async()=>(await h()).observe(e))},prepare:y,run(){return i?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(d??=(async()=>{let e=await y();return c=e.kind===`planned`?await p(async()=>T(e.planned,await h())):e,c})(),d)}}}async function P(e,t,n={runBatch:A,runSingle:M}){if(t)return I(n);if(!e)return c(d({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),G);let r=y(e);return r?L(r,n):c(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),G)}function F(e,t){if(t){let t=j();return{dispose:t.dispose,idempotencyPolicy:()=>D(t),run:()=>P(e,!0,{runBatch:()=>t.run(),runSingle:M})}}if(!e)return{dispose(){},run:()=>P(e,t)};let n=N(e);return{dispose:n.dispose,idempotencyPolicy:()=>w(e,n),run:()=>P(e,!1,{runBatch:A,runSingle:()=>n.run()})}}async function I(e){u({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=B(t);return U(t)?c(d({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`}}),G):n.some(e=>e.status===`failed`||e.status===`locked`)?c(d({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`}}),G):c(f({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`}}),G)}async function L(e,t){u({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!i(t))throw t;return c(d({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),G)}let r=z(n);if(n.kind===`unknown-agent`)return c(d({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),G);if(r?.observation.kind===`absent`)return c(d({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name}}),G);let a=R(e,n);return W([],a),n.kind===`cancelled`?c(d({action:`update`,data:{results:[a],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),G):a.status===`failed`||a.status===`locked`?c(d({action:`update`,data:{results:[a],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),G):c(f({action:`update`,data:{results:[a],scope:`single`},target:{kind:`agent`,name:e.name}}),G)}function R(t,n){let r=z(n),i=`plan`in n?n.plan:void 0,a=r?.observation.kind===`present`?r.observation.version:void 0,o=i?.plannedTargetVersion,s=i?`managed/${i.binding.providerId}`:r?.binding?.providerId;switch(n.kind){case`updated`:return{displayName:t.displayName,installedVersion:a,latestVersion:n.receipt.version??o,name:t.name,status:`updated`,strategy:s};case`dry-run`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:s};case`not-executed`:return n.plan.planning.decision===`up-to-date`?{displayName:t.displayName,installedVersion:a,latestVersion:o,name:t.name,status:`up-to-date`}:{displayName:t.displayName,installedVersion:a,latestVersion:o,message:e(t),name:t.name,status:`manual-required`};case`blocked`:return{displayName:t.displayName,installedVersion:a,message:n.reason,name:t.name,status:`failed`};case`cancelled`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:n.reason??`Update was cancelled before it could complete.`,name:t.name,status:`failed`,strategy:s};case`timed-out`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:`Update timed out after ${n.timeoutMs}ms.`,name:t.name,status:`failed`,strategy:s};case`provider-failed`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,name:t.name,status:`failed`,strategy:s};case`verification-failed`:case`receipt-failed`:return{displayName:t.displayName,installedVersion:a,latestVersion:o,message:n.kind===`receipt-failed`?n.reason:n.verification.reason,name:t.name,status:`failed`,strategy:s};case`unknown-agent`:return{displayName:t.displayName,name:t.name,status:`failed`}}}function z(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function B(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);e?W(r,V(e)):a&&W(r,H(a))}return r}function V(r){let i=r.planning.kind===`unknown-agent`?void 0:r.planning.kind===`planned`?r.planning.planned.before:r.planning.before,o=y(r.agentName);if(!o)return{displayName:i?.agent.displayName??r.agentName,name:r.agentName,status:`failed`};let s=r.execution;if(r.planning.kind===`blocked`&&r.planning.category===`untracked`)return{displayName:o.displayName,installedVersion:r.planning.before.observation.kind===`present`?r.planning.before.observation.version:void 0,message:t(o),name:o.name,status:`manual-required`};if(r.planning.kind===`blocked`&&r.planning.category===`manual-required`)return{displayName:o.displayName,installedVersion:r.planning.before.observation.kind===`present`?r.planning.before.observation.version:void 0,message:e(o),name:o.name,status:`manual-required`};if(s?.kind===`locked`)return{displayName:o.displayName,installedVersion:s.plan.before.observation.kind===`present`?s.plan.before.observation.version:void 0,latestVersion:s.plan.plannedTargetVersion,message:s.reason,name:o.name,resource:s.resource,status:`locked`,strategy:`managed/${s.plan.binding.providerId}`};if(s?.kind===`unexpected-failure`)return{displayName:o.displayName,installedVersion:s.plan.before.observation.kind===`present`?s.plan.before.observation.version:void 0,latestVersion:s.plan.plannedTargetVersion,message:s.reason,name:o.name,status:`failed`,strategy:`managed/${s.plan.binding.providerId}`};let c=s??(r.planning.kind===`planned`?{kind:`not-executed`,plan:r.planning.planned}:r.planning),l=R(o,c);return l.status===`failed`&&c.kind===`provider-failed`&&(l.hint=n(o,a({agent:o,installedState:i?.installedState,methods:[...i?.methods??[]]}))),l}function H(e){let t=y(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:e.planning.planned.plannedTargetVersion,message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:`managed/${e.planning.planned.binding.providerId}`}}function U(e){return l().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function W(e,t){e.push(t),u({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function G(e){if(!e.data){e.error&&C(p.red(e.error.message));return}for(let t of e.data.results)switch(t.status){case`up-to-date`:x(p.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:b(p.yellow(`${t.displayName}: manual action required.`)),t.message&&b(p.cyan(`Next step: ${t.message}`));break;case`planned`:b(p.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${K(t.installedVersion,t.latestVersion)}`));break;case`updated`:x(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${K(t.installedVersion,t.latestVersion)}`)),x(p.green(`${t.displayName} updated successfully!`));break;case`failed`:x(p.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${K(t.installedVersion,t.latestVersion)}`)),C(p.red(`Failed to update ${t.displayName}.`)),t.hint&&b(p.cyan(`Next step: ${t.hint}`));break;case`locked`:b(p.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&q(e.data.results),!e.data.results.length&&e.error&&C(p.red(e.error.message))}function K(e,t){return e?` (${e} -> ${t??`latest`})`:``}function q(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&x(p.bold(`Summary: ${n.join(`, `)}`))}export{F as createUpdateCommandInvocation};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ot as e}from"./color-DRZEEJuf.mjs";const t=[`observe`,`update`,`verify`];function n(e){let t=i(e),n=r(e,t);return{decision:n,plan:{id:`update-${e.intent.targetId}`,intent:e.intent,kind:`lifecycle-plan`,observation:e.observation,steps:n===`upgrade`?[o(e,t)]:[]}}}function r(n,r){let{observation:i}=n;if(a(n))return`blocked-source`;if(i.kind!==`present`||i.drift.kind===`indeterminate`)return`indeterminate`;let o=n.intent.targetVersion;if(!i.version||!o)return`indeterminate`;let s=e(o,i.version);return s===void 0?`indeterminate`:s<0?`blocked-downgrade`:s===0?`up-to-date`:!r||!t.every(e=>r.capabilities.includes(e))?`manual-required`:`upgrade`}function i(e){if(!a(e))return e.provider}function a(e){let{observation:t,provider:n}=e;return t.targetId!==e.intent.targetId||t.drift.kind===`conflicting-source`?!0:t.kind!==`present`||!n?!1:t.providerId!==n.providerId||t.providerTargetId!==n.targetId||t.providerTargetKind!==n.targetKind}function o(e,t){return{dependsOn:[],effects:[{capability:`${t.providerId}-observe`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-update`,kind:`provider-mutation`,providerId:t.providerId,targetId:t.targetId},{capability:`${t.providerId}-verify`,kind:`provider-observation`,providerId:t.providerId,targetId:t.targetId}],id:`update-${e.intent.targetId}`,kind:`operation`,postconditions:[{expectedVersion:e.intent.targetVersion,kind:`version-satisfies`,targetId:t.targetId}],preconditions:[]}}export{n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ot as e,Zt as t,a as n,an as r,b as i,d as a,en as o,f as s,h as c,l,n as u,nn as d,on as f,p,r as m,t as h}from"./color-DRZEEJuf.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-CnLEBgDD.mjs";import{n as b,t as x}from"./version-cache-BRDGus3W.mjs";const S={platform:process.platform,spawn:(e,t)=>o(e,{...t,stdio:t.stdio?[...t.stdio]:void 0}),terminate:d,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=r(),t=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&t.cancel(`cancelled`);let n=f(()=>t.cancel(`cancelled`)),i=!1,a={plan:e=>p({context:e.context,metadataCache:e.metadataCache,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>l(e,t)};return{dispose(){i||(i=!0,n())},run:e=>k(e,t,a)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:c(),network:T(),persistence:i(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}async function P(e={}){let r=v(),i=j(),o=await i.run({check:e.check??!1,dryRun:r,updateChannel:e.channel}).finally(()=>i.dispose());if(o.kind===`interrupted`)throw new t({kind:`cancelled`,reason:o.error.message});let c=o.plan,l=s(c),d=I(l),f=R(l);if(c.status===`up-to-date`)return n(m({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F);if(e.check||r)return c.status===`update-available`?n(m({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`update-available`},exitCode:e.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[],...r?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),F):n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,status:`check-unavailable`},error:{code:`NETWORK_ERROR`,message:`Unable to determine the latest Quantex CLI version.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F);if(c.status===`manual-required`){let e=a(l);return n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:e,status:`manual-required`},error:{code:`MANUAL_ACTION_REQUIRED`,message:`Quantex CLI cannot auto-update from the current install source: ${l.installSource}.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F)}if(o.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let p=o.result;if(p.success)return n(m({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,status:`updated`},target:{kind:`self`,name:`quantex`},warnings:[...d,...f?[f]:[]]}),F);let h=a(l,p);return n(u({action:`upgrade`,data:{canAutoUpdate:l.canAutoUpdate,channel:l.updateChannel,currentVersion:l.currentVersion,installSource:l.installSource,latestVersion:l.latestVersion,recoveryHint:h,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:p.error?.kind?{kind:p.error.kind}:void 0,message:p.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...d,...h?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${h}`}]:[]]}),F)}function F(e){if(!e.data){e.error&&y(h.red(e.error.message));return}if(e.data.status===`up-to-date`){_(h.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),L(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;g(h.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),L(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(h.yellow(e.error.message)),L(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){g(h.yellow(e.error.message)),e.data.recoveryHint&&g(h.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(_(h.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){_(h.green(`Quantex CLI upgraded successfully.`)),L(e.warnings);return}y(h.red(`Failed to upgrade Quantex CLI.`)),g(h.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)g(h.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function I(e){return!e.latestVersion||!e.upstreamLatestVersion||e.latestVersion===e.upstreamLatestVersion||e.installSource!==`bun`&&e.installSource!==`npm`?[]:[{code:`MIRROR_LAG`,details:{installableLatestVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion},message:`The selected registry currently installs ${e.latestVersion}, while upstream npm has ${e.upstreamLatestVersion}. Retry later or set selfUpdateRegistry / QTX_SELF_UPDATE_REGISTRY to another registry if you need the upstream release now.`}]}function L(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(h.yellow(t.message))}function R(t){if(!t.latestVersion)return;let n=e(t.latestVersion,t.currentVersion);if(!(n===void 0||n>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:t.currentVersion,latestVersion:t.latestVersion},message:`The resolved latest version ${t.latestVersion} is older than the installed Quantex CLI ${t.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{P as upgradeCommand};
|