quantex-cli 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/{agent-installation-CC7b92Lg.mjs → agent-installation-CeZKkWL5.mjs} +1 -1
- package/dist/{agents-D_evv3iI.mjs → agents-B7pltU6w.mjs} +1 -1
- package/dist/{agents-T-kpsmCW.mjs → agents-CeaGD7Mf.mjs} +1 -1
- package/dist/{capabilities-grYk5oHD.mjs → capabilities-BEI1cl_2.mjs} +1 -1
- package/dist/capabilities-CbOhZRTn.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/{commands-BuUDcQrt.mjs → commands-BOH52G-d.mjs} +1 -1
- package/dist/commands-DFa1a2wK.mjs +1 -0
- package/dist/{config-BxpAHhRY.mjs → config-BZiwMCpG.mjs} +1 -1
- package/dist/{core-installation-cli-C9ej33OW.mjs → core-installation-cli-CyUr__qb.mjs} +1 -1
- package/dist/{core-read-observations-BQLHb148.mjs → core-read-observations-DywRuhf7.mjs} +1 -1
- package/dist/{doctor-CuljlwNn.mjs → doctor-5mFBnw3T.mjs} +1 -1
- package/dist/{ensure-ChKutOVG.mjs → ensure-BGOBnDc7.mjs} +1 -1
- package/dist/ensure-CZD6oJoU.mjs +1 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-Btit6nFi.mjs → info-C19Rra2W.mjs} +1 -1
- package/dist/{inspect-C0MzsPU2.mjs → inspect-DIWVlKvN.mjs} +1 -1
- package/dist/inspect-pDLr7vew.mjs +1 -0
- package/dist/{install-oVJ4PYF7.mjs → install-C_f7SGQz.mjs} +1 -1
- package/dist/{lifecycle-observations-DuXTdiJE.mjs → lifecycle-observations-CueO9I2o.mjs} +1 -1
- package/dist/{lifecycle-policy-BwXMvFde.mjs → lifecycle-policy-rE0BK2Nu.mjs} +1 -1
- package/dist/{list-B9P46aKI.mjs → list-C5e5PhNE.mjs} +1 -1
- package/dist/{output-Bf3N0Tjs.mjs → output-DZkIsf0G.mjs} +1 -1
- package/dist/{provider-evidence-BnvMbSP7.mjs → provider-evidence-BE2knt4o.mjs} +1 -1
- package/dist/{provider-observations-CYYOshQ4.mjs → provider-observations-BLinSKLj.mjs} +1 -1
- package/dist/{providers-gOIzOEnz.mjs → providers-DKCPx1ao.mjs} +1 -1
- package/dist/{resolve-DqExBCue.mjs → resolve-D5TUQ0PU.mjs} +1 -1
- package/dist/resolve-DK5DEL2q.mjs +1 -0
- package/dist/{schema-D9JJUXYr.mjs → schema-QsoaSx0p.mjs} +1 -1
- package/dist/schema-jRwES4Qf.mjs +1 -0
- package/dist/{uninstall-DPlb_f05.mjs → uninstall-C8WjB6Lb.mjs} +1 -1
- package/dist/{unmanaged-install-compatibility-BGcxxHZb.mjs → unmanaged-install-compatibility-4407lfNm.mjs} +1 -1
- package/dist/{update-C8mg46ew.mjs → update-Dl-7RbMY.mjs} +1 -1
- package/dist/{upgrade-lmvEjYEd.mjs → upgrade-t0jJS977.mjs} +1 -1
- package/package.json +1 -1
- package/dist/capabilities-wSW7O9K9.mjs +0 -1
- package/dist/commands-sYTYFFCw.mjs +0 -1
- package/dist/ensure-CrY2orgM.mjs +0 -1
- package/dist/inspect-kPreC_XR.mjs +0 -1
- package/dist/resolve-9iHuKOrC.mjs +0 -1
- package/dist/schema-BZLalYTL.mjs +0 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{n as e}from"./child-process-CBKnpMWt.mjs";import{n as t}from"./agents-D_evv3iI.mjs";import{a as n,n as r,o as i,s as a,t as o}from"./cli-context-xudTdmO7.mjs";import{s}from"./file-store-Caz7fnAB.mjs";import{B as c,C as l,H as u,R as d,_ as f,b as p,i as m,n as ee,p as te,q as ne,r as h,t as g,v as re,w as _,z as v}from"./output-Bf3N0Tjs.mjs";import{a as ie,o as ae}from"./providers-gOIzOEnz.mjs";import{t as oe}from"./cli-operation-context-QEqKxWgM.mjs";import{t as y}from"./color-BAlKATeY.mjs";import{t as se}from"./agent-installation-CC7b92Lg.mjs";import{t as ce}from"./lifecycle-observations-DuXTdiJE.mjs";import{n as le}from"./lifecycle-errors-DGA1j4MM.mjs";import{a as ue,i as b,n as de,o as x,r as S,t as fe}from"./user-output-C4bJjtc-.mjs";import{n as C,t as pe}from"./errors-D-W3vO4v.mjs";import{n as me,t as he}from"./version-cache-BdkaOTM-.mjs";import{d as w,f as T,i as E,n as ge,o as _e,t as ve}from"./lifecycle-policy-BwXMvFde.mjs";import{join as D}from"node:path";import O from"node:process";import{mkdir as ye,readFile as be,rename as xe,rm as k,writeFile as A}from"node:fs/promises";import{createHash as j,randomUUID as M}from"node:crypto";import{Command as Se}from"commander";import Ce from"prompts";function we(e){return e.executable.present?{decision:e.dryRun?`dry-run`:`launch`}:e.installPolicy===`never`?{decision:`reject`,errorCode:`AGENT_NOT_INSTALLED`}:e.installPolicy===`prompt`&&!e.interactive?{decision:`reject`,errorCode:`INTERACTION_REQUIRED`}:e.dryRun?{decision:`dry-run`}:{decision:e.installPolicy===`prompt`?`prompt-install`:`install-and-launch`}}async function Te(e,t){let n=await t.observe(e.agentName);if(n.kind===`failure`)return{error:n.error,kind:`observation-failed`};if(!n.value)return{kind:`not-found`};let r=n.value,i=we({dryRun:t.dryRun,executable:r.executable,installPolicy:e.installPolicy,interactive:t.interactive,observation:r.observation});if(i.decision===`reject`)return i.errorCode===`AGENT_NOT_INSTALLED`?{kind:`not-installed`,observed:r}:{kind:`interaction-required`,observed:r};let a=[r.agent.binaryName,...e.args];if(i.decision===`dry-run`)return{argv:a,kind:`dry-run`,observed:r,wouldInstall:!r.executable.present};if(i.decision===`prompt-install`&&!await t.confirmInstall(r))return{kind:`install-declined`,observed:r};if(i.decision===`install-and-launch`||i.decision===`prompt-install`){await t.onInstallStart?.(r);let n=Ee(await t.install(r),r);if(n)return n;let i=await t.observe(e.agentName);if(i.kind===`failure`)return{error:i.error,kind:`observation-failed`};if(!i.value)return{kind:`install-failed`,observed:r,reason:`agent-missing-after-install`};if(r=i.value,!r.executable.present)return{kind:`install-failed`,observed:r,reason:`executable-absent-after-install`}}return De(await t.process.run({argv:a,signal:t.signal,stdio:t.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.timeoutMs}),r,t.timeoutMs)}function Ee(e,t){switch(e.kind){case`success`:return;case`cancelled`:return{kind:`cancelled`,observed:t,phase:`install`,reason:e.reason};case`timed-out`:return{kind:`timed-out`,observed:t,phase:`install`,timeoutMs:e.timeoutMs};case`failed`:case`indeterminate`:return{kind:`install-failed`,observed:t,reason:e.reason};case`unsupported`:return{kind:`install-failed`,observed:t,reason:e.reason??`Missing installation capability: ${e.capability}`}}}function De(e,t,n){return e.kind===`failure`?e.error.kind===`cancelled`?{kind:`cancelled`,observed:t,phase:`launch`,reason:e.error.message}:e.error.kind===`timed-out`?{kind:`timed-out`,observed:t,phase:`launch`,reason:e.error.message,timeoutMs:n??0}:{kind:`launch-failed`,observed:t,reason:e.error.message}:e.value.exitCode===null?{kind:`launch-failed`,observed:t,reason:e.value.terminationSignal?`Agent terminated by ${e.value.terminationSignal}.`:`Agent process exited without an exit code.`}:{exitCode:e.value.exitCode,kind:`exited`,observed:t,stderr:e.value.stderr,stdout:e.value.stdout}}const Oe={cancelOperations:o,createObservationService:ce,createOperationContext:oe,createProcessPort:me,reconcileAgentInstallation:se};function ke(e,t=Oe){let n=t.createOperationContext(),r=t.createObservationService(n.context,{resolveLatestVersion:!1}),i=t.createProcessPort();return{dispose:n.dispose,execute:a=>Te(a,{confirmInstall:e.confirmInstall,dryRun:e.dryRun,install:n=>je(n,e.timeoutMs,t),interactive:e.interactive,observe:e=>Ae(e,r),onInstallStart:e.onInstallStart,outputMode:e.outputMode,process:i,signal:n.context.signal,timeoutMs:e.timeoutMs})}}async function Ae(e,t){try{let n=await t.resolveAgentObservation(e);return{kind:`success`,value:n?{agent:n.agent,executable:n.pathExecutable,installedState:n.installedState,methods:n.methods,observation:n.observation}:void 0}}catch(e){return{error:Ne(e),kind:`failure`}}}async function je(t,n,r){try{if(t.executable.present)return{kind:`success`,value:void 0};let e=await Me(r.reconcileAgentInstallation({agent:t.agent,observation:{inPath:t.executable.present,installedState:t.installedState,lifecycle:t.observation,methods:t.methods},operation:`install`,route:`install`}),n,r.cancelOperations);return e?e.kind===`success`?{kind:`success`,value:void 0}:e:{kind:`timed-out`,timeoutMs:n}}catch(t){return e(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n??0}:{kind:`cancelled`,reason:t.message}:{kind:`failed`,reason:N(t,`Failed to install agent.`),retryable:!1}}}async function Me(e,t,n){if(t===void 0)return e;let r;try{let i=await Promise.race([e.then(e=>({kind:`completed`,value:e})),new Promise(e=>{r=setTimeout(()=>e({kind:`timed-out`}),t)})]);if(i.kind===`completed`)return i.value;let a=await Pe(e,Math.max(1,Math.min(t,250)));if(a!==void 0)return a;await n();return}finally{r&&clearTimeout(r)}}function Ne(t){return t instanceof p?{code:`STATE_READ_ERROR`,details:{stateFilePath:_()},kind:`invalid-data`,message:t.message}:e(t)?{kind:t.kind,message:t.message}:{kind:`failed`,message:N(t,`Failed to observe agent execution state.`)}}function N(e,t){return e instanceof Error&&e.message.trim()?e.message:t}async function Pe(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function P(){return D(s(),`idempotency`)}function F(e){return D(P(),`${Ie(e)}.json`)}async function I(e,t={}){let n=F(e),r;try{r=await be(n,`utf8`)}catch(e){if(Re(e)&&e.code===`ENOENT`)return{kind:`missing`};throw e}let i;try{i=JSON.parse(r)}catch{return{kind:`invalid`,reason:`invalid-json`}}let a=w(i);return a.kind===`invalid`?a:Date.parse(a.record.expiresAt)<=L(t).getTime()?(await k(n),{kind:`expired`,record:a.record}):a}async function Fe(e,t,n={}){let r=L(n),i=n.ttlMs??864e5,a=w({...t,createdAt:r.toISOString(),expiresAt:new Date(r.getTime()+i).toISOString(),schemaVersion:1});if(a.kind===`invalid`)throw TypeError(`Invalid versioned idempotency record: ${a.reason}`);let o=P(),s=F(e),c=`${s}.${process.pid}.${M()}.tmp`,l=n.fileSystem?.writeFile??A;await ye(o,{recursive:!0});try{await l(c,Le(a.record),`utf8`),await xe(c,s)}catch(e){throw await k(c,{force:!0}),e}}function Ie(e){return j(`sha256`).update(e,`utf8`).digest(`hex`)}function L(e){let t=e.now?.()??new Date;if(!Number.isFinite(t.getTime()))throw TypeError(`Idempotency clock must return a valid date.`);return t}function Le(e){return`${JSON.stringify(e,(e,t)=>typeof t!=`object`||!t||Array.isArray(t)?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])),2)}\n`}function Re(e){return e instanceof Error&&`code`in e}async function ze(e){let t=T(e.request),n=T(e.resolvedPlan);switch(e.loaded.kind){case`missing`:return{fingerprints:z(t,n),kind:`reconcile`,reason:`missing`};case`expired`:return{fingerprints:R(e.loaded.record,t,n),kind:`reconcile`,reason:`expired`};case`invalid`:return{fingerprints:z(t,n),invalidReason:e.loaded.reason,kind:`reject`,reason:`invalid-evidence`};case`valid`:return Be(e,e.loaded.record,t,n)}}async function Be(e,t,n,r){let i=R(t,n,r);if(t.request.fingerprint!==n)return{fingerprints:i,kind:`reject`,reason:`request-mismatch`};if(t.resolvedPlan.fingerprint!==r)return{fingerprints:i,kind:`reconcile`,reason:`resolved-plan-changed`};switch((await e.validateLive({postcondition:t.postcondition.payload,receipt:t.receipt.payload})).kind){case`satisfied`:return{fingerprints:i,kind:`replay`,result:structuredClone(t.result)};case`drifted`:return{fingerprints:i,kind:`reconcile`,reason:`live-drifted`};case`inconclusive`:return{fingerprints:i,kind:`reconcile`,reason:`live-inconclusive`}}}function R(e,t,n){return{existingPlan:e.resolvedPlan.fingerprint,existingRequest:e.request.fingerprint,requestedPlan:n,requestedRequest:t}}function z(e,t){return{existingPlan:void 0,existingRequest:void 0,requestedPlan:t,requestedRequest:e}}const Ve=new Set([`doctor`,`upgrade`]);async function He(e,t={cache:he(),getSelfState:l,now:Date.now,resolveFacts:re}){if(!e.ok||Ve.has(e.action))return;let n=r();if(n.outputMode!==`human`||n.quiet)return;let i=await t.resolveFacts(),a=t.now(),o=await te({cache:t.cache,facts:i,nowMs:a,signal:new AbortController().signal});if(!o||!ne(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();Ue(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||b(y.yellow(`Quantex CLI ${o.targetVersion} is available (current ${i.currentVersion}). Run \`quantex upgrade\`.`))}function Ue(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}function We(e){return e.warnings.some(e=>e.code===`DRY_RUN`)}async function Ge(e){try{return await Ke(e)}catch(t){if(t instanceof p)return Ze(e,t);throw t}}async function Ke(e){return it(e,()=>qe(e))}async function qe(e){let t=r().timeoutMs,n={expired:!1},i=!1,a,o=async()=>{let o=await Ye(e,()=>n.expired);return n.expired&&t!==void 0?W(e,t):o.replayedResult?(i=!0,o.replayedResult):(a={action:e.action,...o.policy?{idempotencyPolicy:o.policy}:{},run:e.run,...e.target?{target:e.target}:{}},r().cancelled?Xe(e):e.run())},s=t===void 0?await o():await Je(e,o,t,n);return i||!a?s:$e(a,s)}async function Je(e,t,n,r){let i;try{let a=new Promise(t=>{i=setTimeout(()=>{r.expired=!0,t(W(e,n))},n)}),o=ot(t,()=>a),s=await Promise.race([o,a]);if(!s.ok&&s.error?.code===`TIMEOUT`){let t=await at(o,n);s=t&&t.error?.code!==`TIMEOUT`?t:await ct(e,n)}return i!==void 0&&(clearTimeout(i),i=void 0),s}finally{i&&clearTimeout(i)}}async function Ye(e,t=()=>!1){let n=r();if(!n.idempotencyKey||n.dryRun||!U(e.action)||!e.idempotencyPolicy)return{};let i=await I(n.idempotencyKey);if(n.cancelled||t())return{};if(i.kind===`invalid`)return{replayedResult:m(V(e,n.idempotencyKey,i.reason),B,{force:!0})};let a=typeof e.idempotencyPolicy==`function`?await e.idempotencyPolicy():e.idempotencyPolicy;if(n.cancelled||t())return{};let o=await ze({loaded:i,request:a.request,resolvedPlan:a.resolvedPlan,validateLive:a.validateLive});if(n.cancelled||t())return{};if(o.kind===`reconcile`)return{policy:a};if(o.kind===`reject`)return{replayedResult:nt(e,n.idempotencyKey,o,i)};let s=rt(o.result);return m(s,B,{force:!0}),{replayedResult:s}}function Xe(e){return g({action:e.action,error:{code:`CANCELLED`,message:`Command was cancelled before execution could start.`},target:e.target})}async function Ze(e,t){return m(g({action:e.action,...le(t,_(),e.target)}),Qe)}function Qe(e){e.error&&console.error(y.red(e.error.message))}async function $e(e,t){if(r().cancelled)return t;let n=await et(e,t);try{await He({action:e.action,ok:n.ok})}catch{}return n}function B(e){e.error&&console.error(y.red(e.error.message))}async function et(e,t){let n=r();if(!n.idempotencyKey||!U(e.action)||!t.ok||n.dryRun||We(t)||!e.idempotencyPolicy)return t;let i=await e.idempotencyPolicy.captureEvidence(t);if(!i)return t;let a=await I(n.idempotencyKey);return tt(e,n.idempotencyKey,a)||(await Fe(n.idempotencyKey,{postcondition:H(i.postcondition),receipt:H(i.receipt),request:H(e.idempotencyPolicy.request),resolvedPlan:H(e.idempotencyPolicy.resolvedPlan),result:t}),t)}function tt(e,t,n){if(!e.idempotencyPolicy)return;let r=T(e.idempotencyPolicy.request);if(n.kind===`invalid`)return m(V(e,t,n.reason),B,{force:!0});if(!(n.kind!==`valid`||n.record.request.fingerprint===r))return m(g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{conflict:`concurrent-request-mismatch`,existingAction:n.record.request.payload.action,idempotencyKey:t},message:`Idempotency key ${t} changed while the command was running; replay evidence was not overwritten.`},target:e.target}),B,{force:!0})}function nt(e,t,n,r){return n.reason===`invalid-evidence`?m(V(e,t,n.invalidReason),B,{force:!0}):m(g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.kind===`valid`?r.record.request.payload.action:void 0,idempotencyKey:t,reason:`request-mismatch`},message:`Idempotency key ${t} was already used for a different canonical request.`},target:e.target}),B,{force:!0})}function V(e,t,n){return g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{idempotencyKey:t,invalidReason:n,reason:`invalid-evidence`},message:`Idempotency key ${t} contains invalid replay evidence (${n}).`},target:e.target})}function rt(e){let t=r();return{...e,meta:{...e.meta,mode:t.outputMode,runId:t.runId,timestamp:new Date().toISOString()}}}function H(e){return{fingerprint:T(e),payload:e}}function U(e){return e===`ensure`||e===`install`||e===`uninstall`||e===`update`}async function it(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=lt(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);O.once(`SIGINT`,a),O.once(`SIGTERM`,o),r=()=>{O.off(`SIGINT`,a),O.off(`SIGTERM`,o)}});return await Promise.race([st(t,()=>n),i])}finally{r?.()}}async function at(e,t){let n=Math.min(t,250);return await Promise.race([e,new Promise(e=>{setTimeout(()=>e(void 0),n)})])}async function ot(t,n){try{return await t()}catch(t){if(e(t)&&t.kind===`timed-out`||r().cancelled)return n();throw t}}async function st(e,t){try{let n=await e(),i=t();return r().cancelled&&i?i:n}catch(e){let n=t();if(r().cancelled&&n)return n;throw e}}function W(e,t){return g({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target})}async function ct(e,t){return await o(),h({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),m(W(e,t),B,{force:!0})}async function lt(e,t){return await o(),h({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),m(g({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),B,{force:!0})}const ut={cancelOperations:o,createExecutionService:ke};async function G(e,t,n={},i=ut){let a=r(),o=n.nonInteractive?!1:a.interactive,s=n.assumeYes??fe(),c=n.dryRun??de(),l=n.install??`prompt`,u,d=i.createExecutionService({confirmInstall:async e=>s?!0:!!(await Ce({initial:!0,message:`${e.agent.displayName} is not installed. Would you like to install it?`,name:`install`,type:`confirm`})).install,dryRun:c,interactive:o,onInstallStart:e=>{b(y.cyan(`Installing ${e.agent.displayName}...`))},outputMode:a.outputMode,timeoutMs:a.timeoutMs}),f=e=>{u??=e,i.cancelOperations()},p=()=>f(`SIGINT`),m=()=>f(`SIGTERM`);O.once(`SIGINT`,p),O.once(`SIGTERM`,m);try{return dt(await d.execute({agentName:e,args:t,installPolicy:l}),{agentName:e,args:t,cancellationSignal:u,installPolicy:l,interactive:o})}finally{O.off(`SIGINT`,p),O.off(`SIGTERM`,m),d.dispose()}}function dt(e,t){if(e.kind===`not-found`)return q({agent:{name:t.agentName},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t.agentName}`,execution:K(t,!1)}),C(`AGENT_NOT_FOUND`);if(e.kind===`observation-failed`)return ft(t.agentName,e.error);let{observed:n}=e,r=n.agent;if(e.kind===`not-installed`||e.kind===`interaction-required`){let i=e.kind===`interaction-required`;return q({agent:r,errorCode:i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`,errorMessage:i?`${r.displayName} is not installed and interactive installation is disabled.`:`${r.displayName} is not installed.`,execution:{...K(t,!1),installGuidance:mt(r,n.methods,t.args)}}),C(i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`)}switch(e.kind){case`install-declined`:return ue(y.yellow(`Installation cancelled.`)),1;case`install-failed`:return S(y.red(`Failed to install ${r.displayName}.`)),C(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&x(y.cyan(`Dry run: would install ${r.displayName}.`)),ht({agent:r,execution:K(t,!0),message:`Dry run: would run ${e.argv.join(` `)}`}),0;case`launch-failed`:return S(y.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return S(y.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),C(`CANCELLED`);case`timed-out`:return S(y.red(e.phase===`install`?`Installing ${r.displayName} timed out after ${e.timeoutMs}ms.`:`${r.displayName} timed out after ${e.timeoutMs}ms.`)),C(`TIMEOUT`);case`exited`:return e.exitCode}}function K(e,t){return{args:e.args,installPolicy:e.installPolicy,installed:t,interactive:e.interactive,launched:!1}}function ft(e,t){let n=pt(t.code)?t.code:`INSTALL_FAILED`;return r().outputMode===`human`?S(y.red(t.message)):m(g({action:`exec`,error:{code:n,details:t.details,message:t.message},target:{kind:`agent`,name:e}}),()=>{}),C(n)}function pt(e){return e!==void 0&&pe.includes(e)}function mt(e,t,n){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:ie(e,t),label:ae(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...n].join(` `)}}function q(e){if(r().outputMode===`human`){S(y.red(e.errorMessage));let t=e.execution.installGuidance;t&&(x(y.dim(`Try: ${t.suggestedEnsureCommand}`)),x(y.dim(`Or: ${t.suggestedExecCommand}`)));return}m(g({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function ht(e){if(r().outputMode===`human`){x(y.cyan(e.message));return}m(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}const gt={capabilities:async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-wSW7O9K9.mjs`);await J({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-sYTYFFCw.mjs`);await J({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-BxpAHhRY.mjs`),[n,r,i]=e;await J({action:`config`,run:()=>t(n,r,i),target:{kind:`config`,name:r}})},doctor:async()=>{let{doctorCommand:e}=await import(`./doctor-CuljlwNn.mjs`);await J({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],[{ensureCommandWithRoute:n},{selectInstallationEngineRoute:r}]=await Promise.all([import(`./ensure-CrY2orgM.mjs`),import(`./installation-routing-BV8ZnVFY.mjs`)]),i=r(`ensure`);await J({action:`ensure`,idempotencyPolicy:()=>E(`ensure`,t),run:()=>n(t,i),target:{kind:`agent`,name:t}})},exec:async(...e)=>{let[t,n,r,i]=e,a=r.install??`never`;if(a!==`never`&&a!==`if-missing`&&a!==`always`){O.stdout.write(`${y.red(`Unknown install policy: ${a}`)}\n`),O.exitCode=2;return}let o=vt(i);O.exitCode=await G(t,o.length>0?o:n,{install:a,nonInteractive:i.optsWithGlobals().nonInteractive})},info:async(...e)=>{let t=e[0],{infoCommand:n}=await import(`./info-Btit6nFi.mjs`);await J({action:`info`,run:()=>n(t),target:{kind:`agent`,name:t}})},inspect:async(...e)=>{let t=e[0],{inspectCommand:n}=await import(`./inspect-kPreC_XR.mjs`);await J({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let[{installCommandWithRoute:t},{selectInstallationEngineRoute:n}]=await Promise.all([import(`./install-oVJ4PYF7.mjs`),import(`./installation-routing-BV8ZnVFY.mjs`)]),r=n(`install`),i=_e(e[0]),a=i.length===1;await J({action:`install`,...a?{idempotencyPolicy:()=>E(`install`,i[0])}:{idempotencyPolicy:()=>ge(i)},run:()=>t(i,r),target:a?{kind:`agent`,name:i[0]}:{kind:`agent`,name:i.join(`,`)}})},list:async()=>{let{listCommand:e}=await import(`./list-B9P46aKI.mjs`);await J({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-9iHuKOrC.mjs`);await J({action:`resolve`,run:()=>n(t),target:{kind:`agent`,name:t}})},schema:async(...e)=>{let t=e[0],{schemaCommand:n}=await import(`./schema-BZLalYTL.mjs`);await J({action:`schema`,run:()=>n(t),target:{kind:`system`,name:`schema`}})},uninstall:async(...e)=>{let t=e[0],{uninstallCommand:n}=await import(`./uninstall-DPlb_f05.mjs`);await J({action:`uninstall`,idempotencyPolicy:()=>ve(t),run:()=>n(t),target:{kind:`agent`,name:t}})},update:async(...e)=>{let[t,n]=e,{createUpdateCommandInvocation:r}=await import(`./update-C8mg46ew.mjs`),i=r(t,n.all??!1);try{await J({action:`update`,...i.idempotencyPolicy?{idempotencyPolicy:i.idempotencyPolicy}:{},run:i.run,target:{kind:`agent`,name:t}})}finally{i.dispose()}},upgrade:async(...e)=>{let t=e[0],{resolveUpgradeChannelOption:n,upgradeCommand:r}=await import(`./upgrade-lmvEjYEd.mjs`);await J({action:`upgrade`,run:()=>r({channel:n(t.channel),check:t.check??!1}),target:{kind:`self`,name:`quantex`}})}};function _t(e){return gt[e]}function vt(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}async function J(e){let{getExitCodeForResult:t}=await import(`./errors-BE_UKvvM.mjs`);O.exitCode=t(await Ge(e))}function yt(){let e=d();u(e,e.map(e=>e.schema.name));let t=new Se;t.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`);for(let e of v())t.option(e.flags,e.description,e.defaultValue);t.version(f()),t.hook(`preAction`,(e,t)=>{try{a(i(c(t.optsWithGlobals())))}catch(e){O.stdout.write(`${y.red(e instanceof Error?e.message:String(e))}\n`),O.exit(2)}}),t.hook(`postAction`,()=>{n()});for(let n of e){let e=t.command(n.name).description(n.description);for(let t of n.aliases)e.alias(t);for(let t of n.arguments)e.argument(t.syntax,t.description);n.allowUnknownOptions&&e.allowUnknownOption();for(let t of n.options)e.option(t.flags,t.description,t.defaultValue);e.action(_t(n.handlerId))}return t}const bt=new Map(v().map(e=>[xt(e.flags),e]));function Y(e,t,n){let r={},i=0;for(;i<e.length;){let a=e[i],o=bt.get(a);if(o){if(o.value===`string`){let t=e[i+1];if(!t)return St(a);r[o.id]=t,i+=2}else r[o.id]=!0,i+=1;continue}if(a.startsWith(`-`)||t.has(a))return;let s=Z(r.output);return r.json===!0||s===`json`||s===`ndjson`||n.agentFriendly&&s!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(i+1),agentName:a,color:Z(r.color),dryRun:X(r.dryRun),idempotencyKey:Z(r.idempotencyKey),logLevel:Z(r.logLevel),noCache:X(r.noCache),nonInteractive:X(r.nonInteractive),quiet:X(r.quiet),refresh:X(r.refresh),runId:Z(r.runId),timeout:Z(r.timeout),yes:X(r.yes)}}}function xt(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Global option requires a long flag: ${e}`);return t[0]}function X(e){return e===!0}function Z(e){return typeof e==`string`?e:void 0}function St(e){return{agentArgs:[],agentName:``,error:`${e} requires a value`}}const Q=yt(),Ct=new Set([...Q.commands.map(e=>e.name()),...Q.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),$=Y(O.argv.slice(2),Ct,{agentFriendly:O.stdin.isTTY===!1||O.stdout.isTTY===!1});if($?.error&&(console.log(y.red($.error)),O.exit(2)),$&&t($.agentName)){try{a(i({color:$.color,dryRun:$.dryRun,idempotencyKey:$.idempotencyKey,logLevel:$.logLevel,noCache:$.noCache,nonInteractive:$.nonInteractive,quiet:$.quiet,refresh:$.refresh,runId:$.runId,timeout:$.timeout,yes:$.yes}))}catch(e){console.log(y.red(e instanceof Error?e.message:String(e))),O.exit(2)}try{let e=await G($.agentName,$.agentArgs,{assumeYes:$.yes,dryRun:$.dryRun,nonInteractive:$.nonInteractive});O.exit(e)}finally{n()}}await Q.parseAsync();export{};
|
|
2
|
+
import{n as e}from"./child-process-CBKnpMWt.mjs";import{n as t}from"./agents-B7pltU6w.mjs";import{a as n,n as r,o as i,s as a,t as o}from"./cli-context-xudTdmO7.mjs";import{s}from"./file-store-Caz7fnAB.mjs";import{B as c,C as l,H as u,R as d,_ as f,b as p,i as m,n as ee,p as te,q as ne,r as h,t as g,v as re,w as _,z as v}from"./output-DZkIsf0G.mjs";import{a as ie,o as ae}from"./providers-DKCPx1ao.mjs";import{t as oe}from"./cli-operation-context-QEqKxWgM.mjs";import{t as y}from"./color-BAlKATeY.mjs";import{t as se}from"./agent-installation-CeZKkWL5.mjs";import{t as ce}from"./lifecycle-observations-CueO9I2o.mjs";import{n as le}from"./lifecycle-errors-DGA1j4MM.mjs";import{a as ue,i as b,n as de,o as x,r as S,t as fe}from"./user-output-C4bJjtc-.mjs";import{n as C,t as pe}from"./errors-D-W3vO4v.mjs";import{n as me,t as he}from"./version-cache-BdkaOTM-.mjs";import{d as w,f as T,i as E,n as ge,o as _e,t as ve}from"./lifecycle-policy-rE0BK2Nu.mjs";import{join as D}from"node:path";import O from"node:process";import{mkdir as ye,readFile as be,rename as xe,rm as k,writeFile as A}from"node:fs/promises";import{createHash as j,randomUUID as M}from"node:crypto";import{Command as Se}from"commander";import Ce from"prompts";function we(e){return e.executable.present?{decision:e.dryRun?`dry-run`:`launch`}:e.installPolicy===`never`?{decision:`reject`,errorCode:`AGENT_NOT_INSTALLED`}:e.installPolicy===`prompt`&&!e.interactive?{decision:`reject`,errorCode:`INTERACTION_REQUIRED`}:e.dryRun?{decision:`dry-run`}:{decision:e.installPolicy===`prompt`?`prompt-install`:`install-and-launch`}}async function Te(e,t){let n=await t.observe(e.agentName);if(n.kind===`failure`)return{error:n.error,kind:`observation-failed`};if(!n.value)return{kind:`not-found`};let r=n.value,i=we({dryRun:t.dryRun,executable:r.executable,installPolicy:e.installPolicy,interactive:t.interactive,observation:r.observation});if(i.decision===`reject`)return i.errorCode===`AGENT_NOT_INSTALLED`?{kind:`not-installed`,observed:r}:{kind:`interaction-required`,observed:r};let a=[r.agent.binaryName,...e.args];if(i.decision===`dry-run`)return{argv:a,kind:`dry-run`,observed:r,wouldInstall:!r.executable.present};if(i.decision===`prompt-install`&&!await t.confirmInstall(r))return{kind:`install-declined`,observed:r};if(i.decision===`install-and-launch`||i.decision===`prompt-install`){await t.onInstallStart?.(r);let n=Ee(await t.install(r),r);if(n)return n;let i=await t.observe(e.agentName);if(i.kind===`failure`)return{error:i.error,kind:`observation-failed`};if(!i.value)return{kind:`install-failed`,observed:r,reason:`agent-missing-after-install`};if(r=i.value,!r.executable.present)return{kind:`install-failed`,observed:r,reason:`executable-absent-after-install`}}return De(await t.process.run({argv:a,signal:t.signal,stdio:t.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.timeoutMs}),r,t.timeoutMs)}function Ee(e,t){switch(e.kind){case`success`:return;case`cancelled`:return{kind:`cancelled`,observed:t,phase:`install`,reason:e.reason};case`timed-out`:return{kind:`timed-out`,observed:t,phase:`install`,timeoutMs:e.timeoutMs};case`failed`:case`indeterminate`:return{kind:`install-failed`,observed:t,reason:e.reason};case`unsupported`:return{kind:`install-failed`,observed:t,reason:e.reason??`Missing installation capability: ${e.capability}`}}}function De(e,t,n){return e.kind===`failure`?e.error.kind===`cancelled`?{kind:`cancelled`,observed:t,phase:`launch`,reason:e.error.message}:e.error.kind===`timed-out`?{kind:`timed-out`,observed:t,phase:`launch`,reason:e.error.message,timeoutMs:n??0}:{kind:`launch-failed`,observed:t,reason:e.error.message}:e.value.exitCode===null?{kind:`launch-failed`,observed:t,reason:e.value.terminationSignal?`Agent terminated by ${e.value.terminationSignal}.`:`Agent process exited without an exit code.`}:{exitCode:e.value.exitCode,kind:`exited`,observed:t,stderr:e.value.stderr,stdout:e.value.stdout}}const Oe={cancelOperations:o,createObservationService:ce,createOperationContext:oe,createProcessPort:me,reconcileAgentInstallation:se};function ke(e,t=Oe){let n=t.createOperationContext(),r=t.createObservationService(n.context,{resolveLatestVersion:!1}),i=t.createProcessPort();return{dispose:n.dispose,execute:a=>Te(a,{confirmInstall:e.confirmInstall,dryRun:e.dryRun,install:n=>je(n,e.timeoutMs,t),interactive:e.interactive,observe:e=>Ae(e,r),onInstallStart:e.onInstallStart,outputMode:e.outputMode,process:i,signal:n.context.signal,timeoutMs:e.timeoutMs})}}async function Ae(e,t){try{let n=await t.resolveAgentObservation(e);return{kind:`success`,value:n?{agent:n.agent,executable:n.pathExecutable,installedState:n.installedState,methods:n.methods,observation:n.observation}:void 0}}catch(e){return{error:Ne(e),kind:`failure`}}}async function je(t,n,r){try{if(t.executable.present)return{kind:`success`,value:void 0};let e=await Me(r.reconcileAgentInstallation({agent:t.agent,observation:{inPath:t.executable.present,installedState:t.installedState,lifecycle:t.observation,methods:t.methods},operation:`install`,route:`install`}),n,r.cancelOperations);return e?e.kind===`success`?{kind:`success`,value:void 0}:e:{kind:`timed-out`,timeoutMs:n}}catch(t){return e(t)?t.kind===`timed-out`?{kind:`timed-out`,timeoutMs:n??0}:{kind:`cancelled`,reason:t.message}:{kind:`failed`,reason:N(t,`Failed to install agent.`),retryable:!1}}}async function Me(e,t,n){if(t===void 0)return e;let r;try{let i=await Promise.race([e.then(e=>({kind:`completed`,value:e})),new Promise(e=>{r=setTimeout(()=>e({kind:`timed-out`}),t)})]);if(i.kind===`completed`)return i.value;let a=await Pe(e,Math.max(1,Math.min(t,250)));if(a!==void 0)return a;await n();return}finally{r&&clearTimeout(r)}}function Ne(t){return t instanceof p?{code:`STATE_READ_ERROR`,details:{stateFilePath:_()},kind:`invalid-data`,message:t.message}:e(t)?{kind:t.kind,message:t.message}:{kind:`failed`,message:N(t,`Failed to observe agent execution state.`)}}function N(e,t){return e instanceof Error&&e.message.trim()?e.message:t}async function Pe(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function P(){return D(s(),`idempotency`)}function F(e){return D(P(),`${Ie(e)}.json`)}async function I(e,t={}){let n=F(e),r;try{r=await be(n,`utf8`)}catch(e){if(Re(e)&&e.code===`ENOENT`)return{kind:`missing`};throw e}let i;try{i=JSON.parse(r)}catch{return{kind:`invalid`,reason:`invalid-json`}}let a=w(i);return a.kind===`invalid`?a:Date.parse(a.record.expiresAt)<=L(t).getTime()?(await k(n),{kind:`expired`,record:a.record}):a}async function Fe(e,t,n={}){let r=L(n),i=n.ttlMs??864e5,a=w({...t,createdAt:r.toISOString(),expiresAt:new Date(r.getTime()+i).toISOString(),schemaVersion:1});if(a.kind===`invalid`)throw TypeError(`Invalid versioned idempotency record: ${a.reason}`);let o=P(),s=F(e),c=`${s}.${process.pid}.${M()}.tmp`,l=n.fileSystem?.writeFile??A;await ye(o,{recursive:!0});try{await l(c,Le(a.record),`utf8`),await xe(c,s)}catch(e){throw await k(c,{force:!0}),e}}function Ie(e){return j(`sha256`).update(e,`utf8`).digest(`hex`)}function L(e){let t=e.now?.()??new Date;if(!Number.isFinite(t.getTime()))throw TypeError(`Idempotency clock must return a valid date.`);return t}function Le(e){return`${JSON.stringify(e,(e,t)=>typeof t!=`object`||!t||Array.isArray(t)?t:Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])),2)}\n`}function Re(e){return e instanceof Error&&`code`in e}async function ze(e){let t=T(e.request),n=T(e.resolvedPlan);switch(e.loaded.kind){case`missing`:return{fingerprints:z(t,n),kind:`reconcile`,reason:`missing`};case`expired`:return{fingerprints:R(e.loaded.record,t,n),kind:`reconcile`,reason:`expired`};case`invalid`:return{fingerprints:z(t,n),invalidReason:e.loaded.reason,kind:`reject`,reason:`invalid-evidence`};case`valid`:return Be(e,e.loaded.record,t,n)}}async function Be(e,t,n,r){let i=R(t,n,r);if(t.request.fingerprint!==n)return{fingerprints:i,kind:`reject`,reason:`request-mismatch`};if(t.resolvedPlan.fingerprint!==r)return{fingerprints:i,kind:`reconcile`,reason:`resolved-plan-changed`};switch((await e.validateLive({postcondition:t.postcondition.payload,receipt:t.receipt.payload})).kind){case`satisfied`:return{fingerprints:i,kind:`replay`,result:structuredClone(t.result)};case`drifted`:return{fingerprints:i,kind:`reconcile`,reason:`live-drifted`};case`inconclusive`:return{fingerprints:i,kind:`reconcile`,reason:`live-inconclusive`}}}function R(e,t,n){return{existingPlan:e.resolvedPlan.fingerprint,existingRequest:e.request.fingerprint,requestedPlan:n,requestedRequest:t}}function z(e,t){return{existingPlan:void 0,existingRequest:void 0,requestedPlan:t,requestedRequest:e}}const Ve=new Set([`doctor`,`upgrade`]);async function He(e,t={cache:he(),getSelfState:l,now:Date.now,resolveFacts:re}){if(!e.ok||Ve.has(e.action))return;let n=r();if(n.outputMode!==`human`||n.quiet)return;let i=await t.resolveFacts(),a=t.now(),o=await te({cache:t.cache,facts:i,nowMs:a,signal:new AbortController().signal});if(!o||!ne(o.targetVersion,i.currentVersion))return;let s=await t.getSelfState();Ue(s.updateNoticeVersion,s.updateNoticeAt,o.targetVersion,a)||b(y.yellow(`Quantex CLI ${o.targetVersion} is available (current ${i.currentVersion}). Run \`quantex upgrade\`.`))}function Ue(e,t,n,r){if(!e||!t||e!==n)return!1;let i=Date.parse(t);return Number.isNaN(i)?!1:r-i<864e5}function We(e){return e.warnings.some(e=>e.code===`DRY_RUN`)}async function Ge(e){try{return await Ke(e)}catch(t){if(t instanceof p)return Ze(e,t);throw t}}async function Ke(e){return it(e,()=>qe(e))}async function qe(e){let t=r().timeoutMs,n={expired:!1},i=!1,a,o=async()=>{let o=await Ye(e,()=>n.expired);return n.expired&&t!==void 0?W(e,t):o.replayedResult?(i=!0,o.replayedResult):(a={action:e.action,...o.policy?{idempotencyPolicy:o.policy}:{},run:e.run,...e.target?{target:e.target}:{}},r().cancelled?Xe(e):e.run())},s=t===void 0?await o():await Je(e,o,t,n);return i||!a?s:$e(a,s)}async function Je(e,t,n,r){let i;try{let a=new Promise(t=>{i=setTimeout(()=>{r.expired=!0,t(W(e,n))},n)}),o=ot(t,()=>a),s=await Promise.race([o,a]);if(!s.ok&&s.error?.code===`TIMEOUT`){let t=await at(o,n);s=t&&t.error?.code!==`TIMEOUT`?t:await ct(e,n)}return i!==void 0&&(clearTimeout(i),i=void 0),s}finally{i&&clearTimeout(i)}}async function Ye(e,t=()=>!1){let n=r();if(!n.idempotencyKey||n.dryRun||!U(e.action)||!e.idempotencyPolicy)return{};let i=await I(n.idempotencyKey);if(n.cancelled||t())return{};if(i.kind===`invalid`)return{replayedResult:m(V(e,n.idempotencyKey,i.reason),B,{force:!0})};let a=typeof e.idempotencyPolicy==`function`?await e.idempotencyPolicy():e.idempotencyPolicy;if(n.cancelled||t())return{};let o=await ze({loaded:i,request:a.request,resolvedPlan:a.resolvedPlan,validateLive:a.validateLive});if(n.cancelled||t())return{};if(o.kind===`reconcile`)return{policy:a};if(o.kind===`reject`)return{replayedResult:nt(e,n.idempotencyKey,o,i)};let s=rt(o.result);return m(s,B,{force:!0}),{replayedResult:s}}function Xe(e){return g({action:e.action,error:{code:`CANCELLED`,message:`Command was cancelled before execution could start.`},target:e.target})}async function Ze(e,t){return m(g({action:e.action,...le(t,_(),e.target)}),Qe)}function Qe(e){e.error&&console.error(y.red(e.error.message))}async function $e(e,t){if(r().cancelled)return t;let n=await et(e,t);try{await He({action:e.action,ok:n.ok})}catch{}return n}function B(e){e.error&&console.error(y.red(e.error.message))}async function et(e,t){let n=r();if(!n.idempotencyKey||!U(e.action)||!t.ok||n.dryRun||We(t)||!e.idempotencyPolicy)return t;let i=await e.idempotencyPolicy.captureEvidence(t);if(!i)return t;let a=await I(n.idempotencyKey);return tt(e,n.idempotencyKey,a)||(await Fe(n.idempotencyKey,{postcondition:H(i.postcondition),receipt:H(i.receipt),request:H(e.idempotencyPolicy.request),resolvedPlan:H(e.idempotencyPolicy.resolvedPlan),result:t}),t)}function tt(e,t,n){if(!e.idempotencyPolicy)return;let r=T(e.idempotencyPolicy.request);if(n.kind===`invalid`)return m(V(e,t,n.reason),B,{force:!0});if(!(n.kind!==`valid`||n.record.request.fingerprint===r))return m(g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{conflict:`concurrent-request-mismatch`,existingAction:n.record.request.payload.action,idempotencyKey:t},message:`Idempotency key ${t} changed while the command was running; replay evidence was not overwritten.`},target:e.target}),B,{force:!0})}function nt(e,t,n,r){return n.reason===`invalid-evidence`?m(V(e,t,n.invalidReason),B,{force:!0}):m(g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{existingAction:r.kind===`valid`?r.record.request.payload.action:void 0,idempotencyKey:t,reason:`request-mismatch`},message:`Idempotency key ${t} was already used for a different canonical request.`},target:e.target}),B,{force:!0})}function V(e,t,n){return g({action:e.action,error:{code:`INVALID_ARGUMENT`,details:{idempotencyKey:t,invalidReason:n,reason:`invalid-evidence`},message:`Idempotency key ${t} contains invalid replay evidence (${n}).`},target:e.target})}function rt(e){let t=r();return{...e,meta:{...e.meta,mode:t.outputMode,runId:t.runId,timestamp:new Date().toISOString()}}}function H(e){return{fingerprint:T(e),payload:e}}function U(e){return e===`ensure`||e===`install`||e===`uninstall`||e===`update`}async function it(e,t){let n,r;try{let i=new Promise(t=>{let i=r=>{n??=lt(e,r),n.then(t)},a=()=>i(`SIGINT`),o=()=>i(`SIGTERM`);O.once(`SIGINT`,a),O.once(`SIGTERM`,o),r=()=>{O.off(`SIGINT`,a),O.off(`SIGTERM`,o)}});return await Promise.race([st(t,()=>n),i])}finally{r?.()}}async function at(e,t){let n=Math.min(t,250);return await Promise.race([e,new Promise(e=>{setTimeout(()=>e(void 0),n)})])}async function ot(t,n){try{return await t()}catch(t){if(e(t)&&t.kind===`timed-out`||r().cancelled)return n();throw t}}async function st(e,t){try{let n=await e(),i=t();return r().cancelled&&i?i:n}catch(e){let n=t();if(r().cancelled&&n)return n;throw e}}function W(e,t){return g({action:e.action,error:{code:`TIMEOUT`,details:{timeoutMs:t},message:`Command timed out after ${t}ms.`},target:e.target})}async function ct(e,t){return await o(),h({action:e.action,data:{reason:`timeout`,timeoutMs:t},target:e.target,type:`cancelled`},{force:!0}),m(W(e,t),B,{force:!0})}async function lt(e,t){return await o(),h({action:e.action,data:{reason:`signal`,signal:t},target:e.target,type:`cancelled`},{force:!0}),m(g({action:e.action,error:{code:`CANCELLED`,details:{signal:t},message:`Command cancelled by ${t}.`},target:e.target}),B,{force:!0})}const ut={cancelOperations:o,createExecutionService:ke};async function G(e,t,n={},i=ut){let a=r(),o=n.nonInteractive?!1:a.interactive,s=n.assumeYes??fe(),c=n.dryRun??de(),l=n.install??`prompt`,u,d=i.createExecutionService({confirmInstall:async e=>s?!0:!!(await Ce({initial:!0,message:`${e.agent.displayName} is not installed. Would you like to install it?`,name:`install`,type:`confirm`})).install,dryRun:c,interactive:o,onInstallStart:e=>{b(y.cyan(`Installing ${e.agent.displayName}...`))},outputMode:a.outputMode,timeoutMs:a.timeoutMs}),f=e=>{u??=e,i.cancelOperations()},p=()=>f(`SIGINT`),m=()=>f(`SIGTERM`);O.once(`SIGINT`,p),O.once(`SIGTERM`,m);try{return dt(await d.execute({agentName:e,args:t,installPolicy:l}),{agentName:e,args:t,cancellationSignal:u,installPolicy:l,interactive:o})}finally{O.off(`SIGINT`,p),O.off(`SIGTERM`,m),d.dispose()}}function dt(e,t){if(e.kind===`not-found`)return q({agent:{name:t.agentName},errorCode:`AGENT_NOT_FOUND`,errorMessage:`Unknown agent: ${t.agentName}`,execution:K(t,!1)}),C(`AGENT_NOT_FOUND`);if(e.kind===`observation-failed`)return ft(t.agentName,e.error);let{observed:n}=e,r=n.agent;if(e.kind===`not-installed`||e.kind===`interaction-required`){let i=e.kind===`interaction-required`;return q({agent:r,errorCode:i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`,errorMessage:i?`${r.displayName} is not installed and interactive installation is disabled.`:`${r.displayName} is not installed.`,execution:{...K(t,!1),installGuidance:mt(r,n.methods,t.args)}}),C(i?`INTERACTION_REQUIRED`:`AGENT_NOT_INSTALLED`)}switch(e.kind){case`install-declined`:return ue(y.yellow(`Installation cancelled.`)),1;case`install-failed`:return S(y.red(`Failed to install ${r.displayName}.`)),C(`INSTALL_FAILED`);case`dry-run`:return e.wouldInstall&&x(y.cyan(`Dry run: would install ${r.displayName}.`)),ht({agent:r,execution:K(t,!0),message:`Dry run: would run ${e.argv.join(` `)}`}),0;case`launch-failed`:return S(y.red(`Failed to launch ${r.displayName}: ${e.reason}`)),1;case`cancelled`:return S(y.red(t.cancellationSignal?`${r.displayName} was cancelled by ${t.cancellationSignal}.`:`${r.displayName} was cancelled.`)),C(`CANCELLED`);case`timed-out`:return S(y.red(e.phase===`install`?`Installing ${r.displayName} timed out after ${e.timeoutMs}ms.`:`${r.displayName} timed out after ${e.timeoutMs}ms.`)),C(`TIMEOUT`);case`exited`:return e.exitCode}}function K(e,t){return{args:e.args,installPolicy:e.installPolicy,installed:t,interactive:e.interactive,launched:!1}}function ft(e,t){let n=pt(t.code)?t.code:`INSTALL_FAILED`;return r().outputMode===`human`?S(y.red(t.message)):m(g({action:`exec`,error:{code:n,details:t.details,message:t.message},target:{kind:`agent`,name:e}}),()=>{}),C(n)}function pt(e){return e!==void 0&&pe.includes(e)}function mt(e,t,n){return{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t.map(t=>({command:ie(e,t),label:ae(t),type:t.type})).filter(e=>e.command),suggestedAction:`rerun-with-install-policy`,suggestedEnsureCommand:`quantex ensure ${e.name}`,suggestedExecCommand:[`quantex`,`exec`,e.name,`--install`,`if-missing`,`--`,...n].join(` `)}}function q(e){if(r().outputMode===`human`){S(y.red(e.errorMessage));let t=e.execution.installGuidance;t&&(x(y.dim(`Try: ${t.suggestedEnsureCommand}`)),x(y.dim(`Or: ${t.suggestedExecCommand}`)));return}m(g({action:`exec`,data:{agent:e.agent,execution:e.execution},error:{code:e.errorCode,details:e.execution.installGuidance,message:e.errorMessage},target:{kind:`agent`,name:e.agent.name}}),()=>{})}function ht(e){if(r().outputMode===`human`){x(y.cyan(e.message));return}m(ee({action:`exec`,data:{agent:e.agent,execution:e.execution},target:{kind:`agent`,name:e.agent.name}}),()=>{})}const gt={capabilities:async()=>{let{capabilitiesCommand:e}=await import(`./capabilities-CbOhZRTn.mjs`);await J({action:`capabilities`,run:()=>e(),target:{kind:`system`,name:`capabilities`}})},commands:async()=>{let{commandsCommand:e}=await import(`./commands-DFa1a2wK.mjs`);await J({action:`commands`,run:()=>e(),target:{kind:`system`,name:`commands`}})},config:async(...e)=>{let{configCommand:t}=await import(`./config-BZiwMCpG.mjs`),[n,r,i]=e;await J({action:`config`,run:()=>t(n,r,i),target:{kind:`config`,name:r}})},doctor:async()=>{let{doctorCommand:e}=await import(`./doctor-5mFBnw3T.mjs`);await J({action:`doctor`,run:()=>e(),target:{kind:`system`,name:`doctor`}})},ensure:async(...e)=>{let t=e[0],[{ensureCommandWithRoute:n},{selectInstallationEngineRoute:r}]=await Promise.all([import(`./ensure-CZD6oJoU.mjs`),import(`./installation-routing-BV8ZnVFY.mjs`)]),i=r(`ensure`);await J({action:`ensure`,idempotencyPolicy:()=>E(`ensure`,t),run:()=>n(t,i),target:{kind:`agent`,name:t}})},exec:async(...e)=>{let[t,n,r,i]=e,a=r.install??`never`;if(a!==`never`&&a!==`if-missing`&&a!==`always`){O.stdout.write(`${y.red(`Unknown install policy: ${a}`)}\n`),O.exitCode=2;return}let o=vt(i);O.exitCode=await G(t,o.length>0?o:n,{install:a,nonInteractive:i.optsWithGlobals().nonInteractive})},info:async(...e)=>{let t=e[0],{infoCommand:n}=await import(`./info-C19Rra2W.mjs`);await J({action:`info`,run:()=>n(t),target:{kind:`agent`,name:t}})},inspect:async(...e)=>{let t=e[0],{inspectCommand:n}=await import(`./inspect-pDLr7vew.mjs`);await J({action:`inspect`,run:()=>n(t),target:{kind:`agent`,name:t}})},install:async(...e)=>{let[{installCommandWithRoute:t},{selectInstallationEngineRoute:n}]=await Promise.all([import(`./install-C_f7SGQz.mjs`),import(`./installation-routing-BV8ZnVFY.mjs`)]),r=n(`install`),i=_e(e[0]),a=i.length===1;await J({action:`install`,...a?{idempotencyPolicy:()=>E(`install`,i[0])}:{idempotencyPolicy:()=>ge(i)},run:()=>t(i,r),target:a?{kind:`agent`,name:i[0]}:{kind:`agent`,name:i.join(`,`)}})},list:async()=>{let{listCommand:e}=await import(`./list-C5e5PhNE.mjs`);await J({action:`list`,run:()=>e(),target:{kind:`system`,name:`agents`}})},resolve:async(...e)=>{let t=e[0],{resolveCommand:n}=await import(`./resolve-DK5DEL2q.mjs`);await J({action:`resolve`,run:()=>n(t),target:{kind:`agent`,name:t}})},schema:async(...e)=>{let t=e[0],{schemaCommand:n}=await import(`./schema-jRwES4Qf.mjs`);await J({action:`schema`,run:()=>n(t),target:{kind:`system`,name:`schema`}})},uninstall:async(...e)=>{let t=e[0],{uninstallCommand:n}=await import(`./uninstall-C8WjB6Lb.mjs`);await J({action:`uninstall`,idempotencyPolicy:()=>ve(t),run:()=>n(t),target:{kind:`agent`,name:t}})},update:async(...e)=>{let[t,n]=e,{createUpdateCommandInvocation:r}=await import(`./update-Dl-7RbMY.mjs`),i=r(t,n.all??!1);try{await J({action:`update`,...i.idempotencyPolicy?{idempotencyPolicy:i.idempotencyPolicy}:{},run:i.run,target:{kind:`agent`,name:t}})}finally{i.dispose()}},upgrade:async(...e)=>{let t=e[0],{resolveUpgradeChannelOption:n,upgradeCommand:r}=await import(`./upgrade-t0jJS977.mjs`);await J({action:`upgrade`,run:()=>r({channel:n(t.channel),check:t.check??!1}),target:{kind:`self`,name:`quantex`}})}};function _t(e){return gt[e]}function vt(e){let t=e.processedArgs.at(-1);return Array.isArray(t)?t:e.args.slice(1)}async function J(e){let{getExitCodeForResult:t}=await import(`./errors-BE_UKvvM.mjs`);O.exitCode=t(await Ge(e))}function yt(){let e=d();u(e,e.map(e=>e.schema.name));let t=new Se;t.name(`quantex`).description(`统一的 AI Agent CLI 管理工具`);for(let e of v())t.option(e.flags,e.description,e.defaultValue);t.version(f()),t.hook(`preAction`,(e,t)=>{try{a(i(c(t.optsWithGlobals())))}catch(e){O.stdout.write(`${y.red(e instanceof Error?e.message:String(e))}\n`),O.exit(2)}}),t.hook(`postAction`,()=>{n()});for(let n of e){let e=t.command(n.name).description(n.description);for(let t of n.aliases)e.alias(t);for(let t of n.arguments)e.argument(t.syntax,t.description);n.allowUnknownOptions&&e.allowUnknownOption();for(let t of n.options)e.option(t.flags,t.description,t.defaultValue);e.action(_t(n.handlerId))}return t}const bt=new Map(v().map(e=>[xt(e.flags),e]));function Y(e,t,n){let r={},i=0;for(;i<e.length;){let a=e[i],o=bt.get(a);if(o){if(o.value===`string`){let t=e[i+1];if(!t)return St(a);r[o.id]=t,i+=2}else r[o.id]=!0,i+=1;continue}if(a.startsWith(`-`)||t.has(a))return;let s=Z(r.output);return r.json===!0||s===`json`||s===`ndjson`||n.agentFriendly&&s!==`human`?{agentArgs:[],agentName:``,error:`Structured output is not supported for shortcut agent execution yet. Use a management command instead.`}:{agentArgs:e.slice(i+1),agentName:a,color:Z(r.color),dryRun:X(r.dryRun),idempotencyKey:Z(r.idempotencyKey),logLevel:Z(r.logLevel),noCache:X(r.noCache),nonInteractive:X(r.nonInteractive),quiet:X(r.quiet),refresh:X(r.refresh),runId:Z(r.runId),timeout:Z(r.timeout),yes:X(r.yes)}}}function xt(e){let t=e.match(/--[a-z][a-z-]*/);if(!t)throw Error(`Global option requires a long flag: ${e}`);return t[0]}function X(e){return e===!0}function Z(e){return typeof e==`string`?e:void 0}function St(e){return{agentArgs:[],agentName:``,error:`${e} requires a value`}}const Q=yt(),Ct=new Set([...Q.commands.map(e=>e.name()),...Q.commands.flatMap(e=>e.aliases()),`help`,`--help`,`--version`,`-v`]),$=Y(O.argv.slice(2),Ct,{agentFriendly:O.stdin.isTTY===!1||O.stdout.isTTY===!1});if($?.error&&(console.log(y.red($.error)),O.exit(2)),$&&t($.agentName)){try{a(i({color:$.color,dryRun:$.dryRun,idempotencyKey:$.idempotencyKey,logLevel:$.logLevel,noCache:$.noCache,nonInteractive:$.nonInteractive,quiet:$.quiet,refresh:$.refresh,runId:$.runId,timeout:$.timeout,yes:$.yes}))}catch(e){console.log(y.red(e instanceof Error?e.message:String(e))),O.exit(2)}try{let e=await G($.agentName,$.agentArgs,{assumeYes:$.yes,dryRun:$.dryRun,nonInteractive:$.nonInteractive});O.exit(e)}finally{n()}}await Q.parseAsync();export{};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{R as e,V as t,i as n,n as r}from"./output-
|
|
1
|
+
import{R as e,V as t,i as n,n as r}from"./output-DZkIsf0G.mjs";import{t as i}from"./color-BAlKATeY.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
2
|
Quantex Commands
|
|
3
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 @@
|
|
|
1
|
+
import{t as e}from"./commands-BOH52G-d.mjs";export{e as commandsCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./registry-N9jeGQcX.mjs";import{d as t,f as n,l as r,p as i,u as a}from"./file-store-Caz7fnAB.mjs";import{i as o,n as s,t as c}from"./output-
|
|
1
|
+
import{r as e}from"./registry-N9jeGQcX.mjs";import{d as t,f as n,l as r,p as i,u as a}from"./file-store-Caz7fnAB.mjs";import{i as o,n as s,t as c}from"./output-DZkIsf0G.mjs";import{t as l}from"./color-BAlKATeY.mjs";async function u(l,u,f){if(!l)return o(s({action:`config`,data:{action:`list`,config:await t()},target:{kind:`config`}}),d);switch(l){case`get`:{if(!u)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify a key`},target:{kind:`config`}}),d);let e=(await t())[u];return o(s({action:`config`,data:{action:`get`,key:u,value:typeof e==`number`||typeof e==`string`?e:void 0},target:{kind:`config`,name:u}}),d)}case`set`:{if(!u||f===void 0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`Please specify both key and value`},target:{kind:`config`}}),d);if(u===`defaultPackageManager`&&!r(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`defaultPackageManager must be bun, npm, or mise`},target:{kind:`config`,name:u}}),d);if(u===`npmBunUpdateStrategy`&&!a(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`npmBunUpdateStrategy must be latest-major or respect-semver`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateChannel`&&f!==`stable`&&f!==`beta`)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateChannel must be stable or beta`},target:{kind:`config`,name:u}}),d);if(u===`selfUpdateRegistry`&&!e(f))return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`selfUpdateRegistry must be a valid absolute URL`},target:{kind:`config`,name:u}}),d);if([`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)){let e=Number.parseInt(f,10);if(!Number.isInteger(e)||e<=0)return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,message:`${u} must be a positive integer`},target:{kind:`config`,name:u}}),d);f=`${e}`}let i={};try{i=await t()}catch{}return i[u]=[`networkRetries`,`networkTimeoutMs`,`versionCacheTtlHours`].includes(u)?Number.parseInt(f,10):u===`selfUpdateRegistry`?e(f):f,await n(i),o(s({action:`config`,data:{action:`set`,key:u,value:i[u]},target:{kind:`config`,name:u}}),d)}case`reset`:return await n(i),o(s({action:`config`,data:{action:`reset`,config:i},target:{kind:`config`}}),d);default:return o(c({action:`config`,error:{code:`INVALID_ARGUMENT`,details:{action:l},message:`Unknown action: ${l}`},target:{kind:`config`},warnings:[{code:`AVAILABLE_ACTIONS`,message:`Available actions: get, set, reset`}]}),d)}}function d(e){if(e.error){console.log(l.red(e.error.message));for(let t of e.warnings)console.log(t.message);return}if(e.data)switch(e.data.action){case`list`:console.log(l.bold(`
|
|
2
2
|
Current Configuration:
|
|
3
3
|
`)),console.log(JSON.stringify(e.data.config,null,2)),console.log();break;case`get`:console.log(e.data.value===void 0?l.gray(`(not set)`):String(e.data.value));break;case`set`:console.log(l.green(`Set ${e.data.key} = ${e.data.value}`));break;case`reset`:console.log(l.green(`Configuration reset to defaults.`));break}}export{u as configCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./schema-hCKyxJjR.mjs";import{i as t,n}from"./cli-context-xudTdmO7.mjs";import{a as r}from"./file-store-Caz7fnAB.mjs";import{b as i,n as a,r as o,t as s,w as c}from"./output-
|
|
1
|
+
import{t as e}from"./schema-hCKyxJjR.mjs";import{i as t,n}from"./cli-context-xudTdmO7.mjs";import{a as r}from"./file-store-Caz7fnAB.mjs";import{b as i,n as a,r as o,t as s,w as c}from"./output-DZkIsf0G.mjs";import{l}from"./providers-DKCPx1ao.mjs";import{n as u}from"./cli-operation-context-QEqKxWgM.mjs";import{n as d,o as f}from"./agents-CeaGD7Mf.mjs";import{r as p}from"./provider-binding-DMLQQGPh.mjs";import{n as m,t as h}from"./lifecycle-errors-DGA1j4MM.mjs";import g from"node:process";function _(e,r={}){let i=n(),a=new AbortController,o=new Set,s=r.loadExecutor??I,c=!1,l,u=()=>(l??=s(),l);i.cancelled&&a.abort(`cancelled`);let d=t(async()=>{a.abort(`cancelled`),await Promise.allSettled(o)});return{dispose(){c||(c=!0,d())},async execute(t,n={}){if(c)return O(e,t);if(a.signal.aborted)return D(e,t);let r=v(u,e,t,a.signal,n.emitStartedEvent??!1);o.add(r);try{return await r}finally{o.delete(r)}}}}async function v(e,t,r,i,a){try{let o=await e(),s=n(),c={mode:s.dryRun?`preview`:`apply`,name:r,onMutationStart:a?e=>F(t,e.before.agent):void 0,operation:t,outputPolicy:u(s.outputMode),providerTimeoutMs:s.timeoutMs,resolveAdoption:b,signal:i};return y(t,r,await o.execute(c))}catch(e){return L(t,e),A(t,r,e)}}function y(e,t,n){if(n.kind===`failure`)return n.error.code===`cancelled`?D(e,t):n.error.code===`timed-out`?k(e,t):O(e,t);let r=n.value;return r.kind===`agent-not-found`?s({action:e,error:{code:`AGENT_NOT_FOUND`,details:{input:t},message:`Unknown agent: ${t}`},target:{kind:`agent`,name:t}}):r.kind===`failed`?S(e,t,r.error):x(e,r.value)}async function b(e){let t=l([...e.methods],e.resolvedBinaryPath??e.pathExecutable.path);if(!t)return;let n=p(e.agent,t);if(n)return{binding:n,installedState:f(e.agent,t)}}function x(e,t){let n=t.before.agent;if(t.decision===`already-satisfied`)return C(e,n);if(t.decision===`external-preserved`)return t.compatibility?t.kind===`preview`?T(e,n,`adopt`):E(e,n,t):w(e,n);if(t.kind===`preview`)return T(e,n,t.decision===`reinstall`?`reinstall`:`install`);let r=t.after.installedState;return r?a({action:e,data:j(n,!0,!0,r),target:{kind:`agent`,name:n.name}}):s({action:e,data:j(n,!1,!1),error:P(e,n),target:{kind:`agent`,name:n.name}})}function S(e,t,n){let r=H(n.cause,B);if(r)return s({action:e,...h(r,{kind:`agent`,name:t})});let i=n.sideEffect===`none`?H(n.cause,z):void 0;if(i)return s({action:e,...m(i,c(),{kind:`agent`,name:t})});let a=d(t),o=n.code===`compensation-failed`?n.originCode??n.code:n.code,l=o===`recording-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${a?.displayName??t}.`}:o===`decision-conflict`||o===`decision-indeterminate`||o===`verification-failed`?P(e,a??N(t)):{code:`INSTALL_FAILED`,message:`Failed to install ${a?.displayName??t}.`};return s({action:e,data:a?j(a,!1,!1):M(t),error:l,target:{kind:`agent`,name:a?.name??t}})}function C(e,t){return a({action:e,data:j(t,!1,!0),target:{kind:`agent`,name:t.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${t.displayName} is already installed.`}]})}function w(e,t){return a({action:e,data:j(t,!1,!0),target:{kind:`agent`,name:t.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${t.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function T(e,t,n){return a({action:e,data:j(t,!1,n===`adopt`),target:{kind:`agent`,name:t.name},warnings:[{code:`DRY_RUN`,message:n===`adopt`?`Dry run: would record the existing ${t.displayName} install in Quantex state.`:n===`reinstall`?`Dry run: would reinstall ${t.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${t.displayName}.`}]})}function E(e,t,n){let r=n.after.installedState;return r?a({action:e,data:j(t,n.changed,!0,r),target:{kind:`agent`,name:t.name},warnings:[{code:`TRACKED_EXISTING_INSTALL`,message:`${t.displayName} is already installed. Quantex is now tracking the existing install.`}]}):s({action:e,data:j(t,!1,!0),error:P(e,t),target:{kind:`agent`,name:t.name}})}function D(e,t){return s({action:e,data:M(t),error:{code:`CANCELLED`,message:`${e===`ensure`?`Ensure`:`Install`} was cancelled before tracking could complete.`},target:{kind:`agent`,name:t}})}function O(e,t){return s({action:e,data:M(t),error:{code:`INSTALL_FAILED`,message:`Failed to initialize the ${e} lifecycle engine.`},target:{kind:`agent`,name:t}})}function k(e,t){let n=d(t);return s({action:e,data:n?j(n,!1,!1):M(t),error:{code:`INSTALL_FAILED`,message:`Failed to install ${n?.displayName??t}.`},target:{kind:`agent`,name:n?.name??t}})}function A(e,t,n){let r=H(n,B);if(r)return s({action:e,...h(r,{kind:`agent`,name:t})});let i=H(n,z);return i?s({action:e,...m(i,c(),{kind:`agent`,name:t})}):O(e,t)}function j(e,t,n,r){return{agent:{displayName:e.displayName,name:e.name},changed:t,...r?{installState:{installType:r.installType,...r.packageName===void 0?{}:{packageName:r.packageName}}}:{},installed:n}}function M(e){return j(d(e)??N(e),!1,!1)}function N(e){return{displayName:e,name:e}}function P(e,t){return{code:`INSTALL_FAILED`,details:{lifecycle:`verification-failed`},message:e===`ensure`?`${t.displayName} could not be verified after ensure completed.`:`${t.displayName} could not be verified after installation.`}}function F(e,t){o({action:e,data:{agent:{displayName:t.displayName,name:t.name}},target:{kind:`agent`,name:t.name},type:`started`})}async function I(){return(await import(`./installation-compatibility-BUIdD4fg.mjs`)).createCoreInstallationCompatibilityExecutor()}function L(e,t){n().logLevel===`debug`&&g.stderr.write(`[quantex:debug] ${e} core engine failure: ${R(t)}\n`)}function R(e){return e instanceof Error&&e.message.trim()?e.message:`unknown failure`}function z(t){if(t instanceof i)return t;if(t instanceof e)return new i(`Failed to read Quantex state file: ${t.message}`,{cause:t});if(V(t))return new i(`Failed to read Quantex state file.`,{cause:t})}function B(e){return r(e)?e:void 0}function V(e){return!!(e&&typeof e==`object`&&`path`in e&&String(e.path)===c())}function H(e,t){let n=new Set,r=[e];for(;r.length>0;){let e=r.shift();if(e==null||n.has(e))continue;n.add(e);let i=t(e);if(i)return i;e instanceof AggregateError&&r.push(...e.errors),typeof e==`object`&&`cause`in e&&r.push(e.cause)}}export{_ as createCoreInstallationCliSession};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./child-process-CBKnpMWt.mjs";import{I as t,n}from"./agents-
|
|
1
|
+
import{t as e}from"./child-process-CBKnpMWt.mjs";import{I as t,n}from"./agents-B7pltU6w.mjs";import{t as r}from"./schema-hCKyxJjR.mjs";import{G as i,b as a}from"./output-DZkIsf0G.mjs";import{c as o,h as s,s as c,u as l}from"./providers-DKCPx1ao.mjs";import{t as u}from"./cli-operation-context-QEqKxWgM.mjs";import{t as d}from"./invocation-hZT7H6Sx.mjs";import{n as f,t as p}from"./production-observation-CU1HQ10p.mjs";import{join as m}from"node:path";function h(e){let t=e.pathExecutable;return{agent:e.agent,methods:e.methods,installedState:e.installedState,inPath:t.present,installedVersion:t.present?t.version:void 0,latestVersion:e.latestVersion,binaryPath:t.present?t.path:void 0,resolvedBinaryPath:t.present?e.resolvedBinaryPath:void 0,sourceLabel:c(e.installedState),updateLabel:o(e.agent,e.installedState),lifecycle:e.installedState?s(e.installedState.installType):`unmanaged`}}function g(e,r=b()){let i=t=>y(e,r.configDir,t),a=async(e,i)=>{let a=n(e.agent.name)??e.agent,o=e.binding&&e.capabilities.length>0?t.getCapabilities(e.binding.providerId):e.capabilities;return{...e,agent:a,capabilities:o,latestVersion:await r.resolveLatestVersion(e.agent,e.installedState,e.methods,x(i)),methods:[...e.methods]}};return{observeRegisteredAgents(){return i(async e=>{let t=await r.core.listAgents({...e,configDir:r.configDir});return Promise.all(t.map(async t=>{let n=await r.core.inspectAgent(t.name,{...e,configDir:r.configDir});if(!n)throw Error(`Core did not resolve registered agent: ${t.name}`);return a(n,e)}))})},resolveAgentObservation(e){return i(async t=>{let n=await r.core.inspectAgent(e,{...t,configDir:r.configDir});return n?a(n,t):void 0})}}}function _(e,t){return g(t).resolveAgentObservation(e)}function v(e){return g(e).observeRegisteredAgents()}async function y(e,t,n){let r=e?void 0:u(),i=e??r?.context;if(!i)throw Error(`CLI read operation context is unavailable.`);try{let e=await d({signal:i.signal},e=>n({...e,timeoutMs:i.timeoutMs}));return e.kind===`failure`&&S(e.error,i.timeoutMs),e.value}catch(e){throw C(e,t)}finally{r?.dispose()}}function b(){return{configDir:f(),core:p({providerRegistry:t}),async resolveLatestVersion(e,t,n,r){let a=l(e,t,[...n]);return a?i(a,`latest`,{context:r}):void 0}}}function x(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function S(t,n){throw t.code===`cancelled`?new e({kind:`cancelled`,reason:typeof t.details?.reason==`string`?t.details.reason:void 0}):t.code===`timed-out`?new e({kind:`timed-out`,timeoutMs:typeof t.details?.timeoutMs==`number`?t.details.timeoutMs:n??0}):Error(t.message)}function C(t,n){return t instanceof a||t instanceof e?t:t instanceof r?new a(`Failed to read Quantex state file: ${t.message}`,{cause:t}):w(t,m(n,`state.json`))?new a(`Failed to read Quantex state file.`,{cause:t}):t}function w(e,t){return!e||typeof e!=`object`||!(`path`in e)?!1:String(e.path)===t}export{_ as n,h as r,v as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{L as n,i as r,n as i,q as a,s as o,u as s}from"./output-
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{L as n,i as r,n as i,q as a,s as o,u as s}from"./output-DZkIsf0G.mjs";import{t as c}from"./cli-operation-context-QEqKxWgM.mjs";import{n as l,t as u}from"./provider-observations-BLinSKLj.mjs";import{t as d}from"./color-BAlKATeY.mjs";import{r as f,t as p}from"./core-read-observations-DywRuhf7.mjs";async function m(){let n=c(),d,m,_;try{[d,m,_]=await n.run(()=>Promise.all([u({context:n.context}),o({context:n.context}),p(n.context)]))}finally{n.dispose()}let v=l(d,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?a(m.latestVersion,m.currentVersion):!1,k=_.map(e=>({inspection:f(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 r(i({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(d.bold(`
|
|
2
2
|
Quantex CLI Environment Check
|
|
3
3
|
`)),console.log(d.bold(`Managed Installers:`)),console.log(` Bun: ${e.data.installers.bun?d.green(`available`):d.red(`not found`)}`),console.log(` npm: ${e.data.installers.npm?d.green(`available`):d.red(`not found`)}`),console.log(` brew: ${e.data.installers.brew?d.green(`available`):d.red(`not found`)}`),console.log(` cargo: ${e.data.installers.cargo?d.green(`available`):d.red(`not found`)}`),console.log(` deno: ${e.data.installers.deno?d.green(`available`):d.red(`not found`)}`),console.log(` mise: ${e.data.installers.mise?d.green(`available`):d.red(`not found`)}`),console.log(` pip: ${e.data.installers.pip?d.green(`available`):d.red(`not found`)}`),console.log(` uv: ${e.data.installers.uv?d.green(`available`):d.red(`not found`)}`),console.log(` winget:${e.data.installers.winget?d.green(`available`):d.red(`not found`)}`),console.log(`\n${d.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?d.green(`supported`):d.yellow(`unsupported`)}`),e.data.self.latestVersion&&console.log(` Latest: ${e.data.self.latestVersion}${e.data.self.outdated?d.yellow(` (update available)`):``}`),e.data.self.recoveryHint&&console.log(` Recovery: ${e.data.self.recoveryHint}`),console.log(`\n${d.bold(`Installed Agents:`)}`),e.data.agents.length===0)console.log(d.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?d.yellow(` (update available: ${t.latestVersion})`):``}`);if(console.log(`\n${d.bold(`Issues:`)}`),e.data.issues.length===0)console.log(d.green(` No issues found.`));else for(let t of e.data.issues)console.log(d.yellow(` - ${t.message}`)),t.suggestedCommands.length>0&&console.log(d.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./file-store-Caz7fnAB.mjs";import{i as t,n,r,t as i}from"./output-
|
|
1
|
+
import{a as e}from"./file-store-Caz7fnAB.mjs";import{i as t,n,r,t as i}from"./output-DZkIsf0G.mjs";import{l as a}from"./providers-DKCPx1ao.mjs";import{t as o}from"./color-BAlKATeY.mjs";import{g as s,n as c}from"./agents-CeaGD7Mf.mjs";import{t as l}from"./agent-installation-CeZKkWL5.mjs";import{n as u}from"./lifecycle-observations-CueO9I2o.mjs";import{t as d}from"./lifecycle-errors-DGA1j4MM.mjs";import{a as f,i as p,n as m,r as h}from"./user-output-C4bJjtc-.mjs";import{n as g,r as _}from"./installation-routing-Cyn08Qdm.mjs";import{t as v}from"./unmanaged-install-compatibility-4407lfNm.mjs";async function y(e){return await b(e,_(`ensure`))}async function b(n,r){if(g(`ensure`,r),r.engine===`core`){let e=await v(n);if(e)return t(T(e),D);let{createCoreInstallationCliSession:r}=await import(`./core-installation-cli-CyUr__qb.mjs`),i=r(`ensure`);try{return t(await i.execute(n,{emitStartedEvent:!0}),D)}finally{i.dispose()}}if(!c(n)||m())return x(n);try{return await s(()=>x(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),D);throw r}}async function x(n){let r=await u(n);if(!r)return t(i({action:`ensure`,error:{code:`AGENT_NOT_FOUND`,details:{input:n},message:`Unknown agent: ${n}`},target:{kind:`agent`,name:n}}),D);let{agent:o}=r,s=r.pathExecutable.present,c=r.installedState,f=s&&!c?a(r.methods,r.resolvedBinaryPath??r.pathExecutable.path):void 0;if(s&&!c&&!f)return t(T(o),D);let p=c&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?w(o):C(o,p===`adopt`,!!c),D);p!==`satisfied`&&S(o);try{return t(E(o,p,await l({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:c,lifecycle:r.observation,methods:r.methods},operation:`ensure`,route:p})),D)}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})}),D);throw n}}function S(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function C(e,t,r){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:r?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function w(e){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function T(e){return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function E(e,t,r){if(r.kind===`success`){if(t===`satisfied`)return w(e);let i=r.value.value.installedState;return n({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name},changed:r.value.changed,installState:r.value.changed?{installType:i.installType,packageName:i.packageName}:void 0,installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let a=r.kind===`cancelled`?{code:`CANCELLED`,message:`Ensure was cancelled before tracking could complete.`}:r.kind===`failed`&&r.reason===`receipt-write-failed`?{code:`INSTALL_FAILED`,details:{lifecycle:`state-write-failed`},message:`Failed to record verified state for ${e.displayName}.`}:r.kind===`failed`&&r.reason.endsWith(`-after-ensure`)||r.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:a,target:{kind:`agent`,name:e.name}})}function D(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{b as n,y as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./ensure-BGOBnDc7.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{c as n,i as r,n as i,o as a,t as o}from"./detect-BdnZzKbm.mjs";import{A as s,C as c,D as l,E as ee,F as te,M as ne,N as re,O as ie,P as ae,S as oe,T as se,_ as ce,a as le,b as ue,c as de,d as fe,f as pe,g as u,h as d,i as f,j as p,k as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C,v as w,w as T,x as E,y as D}from"./agents-
|
|
1
|
+
import{n as e,t}from"./messages-qcLhD-Gc.mjs";import{c as n,i as r,n as i,o as a,t as o}from"./detect-BdnZzKbm.mjs";import{A as s,C as c,D as l,E as ee,F as te,M as ne,N as re,O as ie,P as ae,S as oe,T as se,_ as ce,a as le,b as ue,c as de,d as fe,f as pe,g as u,h as d,i as f,j as p,k as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C,v as w,w as T,x as E,y as D}from"./agents-B7pltU6w.mjs";import{a as O,n as k,o as A,s as j}from"./cli-context-xudTdmO7.mjs";import{c as M,d as N,f as P,s as F}from"./file-store-Caz7fnAB.mjs";import{C as I,D as L,E as R,F as z,G as B,I as me,N as he,P as ge,U as _e,W as ve,_ as ye,a as be,c as xe,g as Se,h as Ce,i as we,j as Te,k as Ee,l as De,n as Oe,o as ke,t as Ae,u as je,w as Me,x as V}from"./output-DZkIsf0G.mjs";import{_ as H,d as Ne,f as Pe,g as Fe,h as Ie,i as U,m as Le,n as Re,p as ze,r as Be,t as Ve,v as He}from"./providers-DKCPx1ao.mjs";import{t as Ue}from"./capabilities-BEI1cl_2.mjs";import{t as We}from"./commands-BOH52G-d.mjs";import{_ as Ge,a as Ke,c as qe,f as Je,h as Ye,i as W,m as Xe,n as Ze,r as Qe,s as $e,t as G,v as et,y as tt}from"./agents-CeaGD7Mf.mjs";import{t as nt}from"./update-planner-D1_UjTb8.mjs";import{t as rt}from"./ensure-BGOBnDc7.mjs";import{t as it}from"./inspect-DIWVlKvN.mjs";import{t as at}from"./resolve-D5TUQ0PU.mjs";import{n as ot,t as st}from"./schema-QsoaSx0p.mjs";import{n as ct,r as lt}from"./errors-D-W3vO4v.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=U({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 nt({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
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=U({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=Ne(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 tt(et([e,...t]));return{success:n===0,exitCode:n}}catch{return{success:!1,exitCode:1}}}export{re as agentCatalogEntrySchema,ae as agentCatalogJsonSchema,te as agentCatalogSchema,Ve as agentUpdateProviders,f as autohand,Ce as canAutoUpdateSelf,Pe as canLookupLatestVersionForInstallType,Re as canResolveAgentUpdate,ze as canUninstallInstallType,Le as canUpdateInstallType,Ue as capabilitiesCommand,le as claude,v as codebuddy,x as codewhale,de as codex,We as commandsCommand,h as copilot,Ae as createErrorResult,pt as createReleaseManifest,Oe as createSuccessResult,K as createUpdatePlan,C as cursor,fe as deepcode,Se as detectSelfInstallSource,pe as devin,y as droid,we as emitCommandResult,rt as ensureCommand,bt as execCommand,dt as formatChecksums,g as gemini,d as genie,S as getAgentByLookupName,_ as getAgentByNameOrAlias,t as getAgentUpdateFailureHint,Be as getAgentUpdateStrategy,b as getAllAgents,_e as getBinaryPath,z as getBinaryReleaseAssetName,me as getBinaryReleaseDownloadUrl,p as getCatalogAgent,ne as getCatalogAgents,k as getCliContext,F as getConfigDir,M as getConfigFilePath,ct as getExitCodeForError,lt as getExitCodeForResult,Ie as getInstallLifecycle,V as getInstalledAgentState,ve as getInstalledVersion,Fe as getInstallerCapabilities,B as getLatestVersion,Ge as getManagedInstaller,e as getManualAgentUpdateMessage,be as getManualSelfUpgradeCommand,$e as getOrderedInstallMethods,o as getPlatform,st as getSchemaCatalog,I as getSelfState,De as getSelfUpgradeRecoveryHint,je as getSelfUpgradeRecoveryHintForInspection,ye as getSelfVersion,ht as getSingleAgentUpdateStatus,Me as getStateFilePath,u as grok,ce as hermes,W as inspectAgent,Ke as inspectAllAgents,it as inspectCommand,G as inspectRegisteredAgents,ke as inspectSelf,qe as installAgent,i as isBinaryInPath,r as isBunAvailable,a as isDenoAvailable,q as isInspectionUpdateAvailable,He as isManagedInstallType,n as isNpmAvailable,w as jcode,D as junie,ue as kilo,N as loadConfig,R as loadState,E as mimo,X as normalizeRepositoryUrl,oe as omp,c as openclaw,T as opencode,se as openhands,Y as parseBinaryTarget,ft as parseChecksums,ee as pi,gt as planAgentUpdates,l as qoder,ie as reasonix,L as removeInstalledAgentState,O as resetCliContext,Ze as resolveAgent,Qe as resolveAgentInspection,U as resolveAgentUpdateProvider,A as resolveCliContext,at as resolveCommand,Z as resolveReleaseChannel,P as saveConfig,Ee as saveState,ot as schemaCommand,j as setCliContext,Te as setInstalledAgentState,he as setSelfInstallSource,ge as setSelfUpdateNoticeState,Je as uninstallAgent,Xe as updateAgent,Ye as updateAgentsByType,xe as upgradeSelf,mt as validateReleaseManifest,m as vibe,s as vtcode};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e,n as t,t as n}from"./output-
|
|
1
|
+
import{i as e,n as t,t as n}from"./output-DZkIsf0G.mjs";import{a as r,o as i}from"./providers-DKCPx1ao.mjs";import{t as a}from"./color-BAlKATeY.mjs";import{n as o,r as s}from"./core-read-observations-DywRuhf7.mjs";async function c(a){let c=await o(a);if(!c)return e(n({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 e(t({action:`info`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(e=>({command:r(u,e),label:i(e),type:e.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
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};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e,n as t,t as n}from"./output-
|
|
1
|
+
import{i as e,n as t,t as n}from"./output-DZkIsf0G.mjs";import{a as r,o as i}from"./providers-DKCPx1ao.mjs";import{t as a}from"./color-BAlKATeY.mjs";import{n as o,r as s}from"./core-read-observations-DywRuhf7.mjs";async function c(a){let c=await o(a);if(!c)return e(n({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 e(t({action:`inspect`,data:{agent:{aliases:u.lookupAliases??[],binaryName:u.binaryName,displayName:u.displayName,installMethods:d.methods.map(e=>({command:r(u,e),label:i(e),type:e.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
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
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-DIWVlKvN.mjs";export{e as inspectCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./cli-context-xudTdmO7.mjs";import{a as t}from"./file-store-Caz7fnAB.mjs";import{i as n,n as r,r as i,t as a}from"./output-
|
|
1
|
+
import{n as e}from"./cli-context-xudTdmO7.mjs";import{a as t}from"./file-store-Caz7fnAB.mjs";import{i as n,n as r,r as i,t as a}from"./output-DZkIsf0G.mjs";import{l as o}from"./providers-DKCPx1ao.mjs";import{t as s}from"./color-BAlKATeY.mjs";import{g as c,n as l}from"./agents-CeaGD7Mf.mjs";import{t as u}from"./agent-installation-CeZKkWL5.mjs";import{n as d}from"./lifecycle-observations-CueO9I2o.mjs";import{t as f}from"./lifecycle-errors-DGA1j4MM.mjs";import{a as p,i as m,n as h,r as g}from"./user-output-C4bJjtc-.mjs";import{n as _,r as v}from"./installation-routing-Cyn08Qdm.mjs";import{t as y}from"./unmanaged-install-compatibility-4407lfNm.mjs";import{o as b}from"./lifecycle-policy-rE0BK2Nu.mjs";async function x(e){return await S(e,v(`install`))}async function S(e,t){_(`install`,t);let n=t.engine===`core`?(await import(`./core-installation-cli-CyUr__qb.mjs`)).createCoreInstallationCliSession(`install`):void 0;try{return await C(e,n)}finally{n?.dispose()}}async function C(t,o){let s=b(Array.isArray(t)?t:[t]);if(s.length<=1)return n(await w(s[0],{emitStartedEvent:!0},o),F);i({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let t of s){if(e().cancelled)break;let n=j(t,await w(t,{},o));if(c.push(n),i({action:`install`,data:n,target:{kind:`agent`,name:n.agent.name},type:`progress`}),e().cancelled)break}let l={results:c,scope:`batch`,summary:N(c)};return e().cancelled&&c.length<s.length?n(a({action:`install`,data:l,error:{code:`CANCELLED`,message:`Install was cancelled before all agents could be installed.`},target:{kind:`agent`}}),I):n(c.some(e=>!e.ok)?a({action:`install`,data:l,error:P(c),target:{kind:`agent`}}):r({action:`install`,data:l,target:{kind:`agent`}}),I)}async function w(n,r={},i){if(i){let e=await y(n);return e?k(e):await i.execute(n,r)}if(e().cancelled||!l(n)||h())return T(n,r);try{return await c(()=>T(n,r))}catch(e){if(t(e))return a({action:`install`,...f(e,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}});throw e}}async function T(n,r){if(e().cancelled)return a({action:`install`,error:{code:`CANCELLED`,message:`Install was cancelled before it could start.`},target:{kind:`agent`,name:n}});let i=await d(n);if(!i)return a({action:`install`,error:{code:`AGENT_NOT_FOUND`,details:{input:n},message:`Unknown agent: ${n}`},target:{kind:`agent`,name:n}});let{agent:s}=i,c=i.pathExecutable.present,l=i.installedState,p=c&&!l?o(i.methods,i.resolvedBinaryPath??i.pathExecutable.path):void 0;if(c&&!l&&!p)return k(s);let m=l&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?D(s):O(s,m===`adopt`,!!l);m!==`satisfied`&&A(s,r.emitStartedEvent);try{return E(s,m,await u({adoptableMethod:p,agent:s,observation:{inPath:c,installedState:l,lifecycle:i.observation,methods:i.methods},operation:`install`,route:m}))}catch(e){if(t(e))return a({action:`install`,data:{agent:{displayName:s.displayName,name:s.name},changed:!1,installed:c},...f(e,{kind:`agent`,name:s.name})});throw e}}function E(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return D(e);let i=n.value.value.installedState;return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:n.value.changed,installState:{installType:i.installType,packageName:i.packageName},installed:!0},target:{kind:`agent`,name:e.name},warnings:t===`adopt`?[{code:`TRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed. Quantex is now tracking the existing install.`}]:[]})}let i=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:i,target:{kind:`agent`,name:e.name}})}function D(e){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`ALREADY_INSTALLED`,message:`${e.displayName} is already installed.`}]})}function O(e,t,n){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:t},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:t?`Dry run: would record the existing ${e.displayName} install in Quantex state.`:n?`Dry run: would reinstall ${e.displayName} only if its recorded provider target is confirmed absent.`:`Dry run: would install ${e.displayName}.`}]})}function k(e){return r({action:`install`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1,installed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function A(e,t=!1){t&&i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function j(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:M(t),warnings:r}}function M(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 N(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 P(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 F(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 I(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(L(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(s.yellow(L(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(s.cyan(L(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}R(e.data.summary)}function L(e,t){return e[0]?.message??t}function R(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{x as installCommand,S as installCommandWithRoute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./detect-BdnZzKbm.mjs";import{I as n,n as r,r as i}from"./agents-
|
|
1
|
+
import{n as e,t}from"./detect-BdnZzKbm.mjs";import{I as n,n as r,r as i}from"./agents-B7pltU6w.mjs";import{G as a,K as o,S as s,U as c,W as l,x as u}from"./output-DZkIsf0G.mjs";import{u as d}from"./providers-DKCPx1ao.mjs";import{t as f}from"./cli-operation-context-QEqKxWgM.mjs";import{s as p}from"./agents-CeaGD7Mf.mjs";import{r as m}from"./provider-binding-DMLQQGPh.mjs";import{t as h}from"./agent-observation-CRB402ql.mjs";function g(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?m(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function _(e,t){return t?v(t).resolveAgentObservation(e):y(t=>t.resolveAgentObservation(e))}function v(e,a={}){return g({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>S(t,n,r,e),getOrderedInstallMethods:p,getPlatform:t,getResolvedBinaryPath:t=>o(t,e),inspectExecutable:(t,n)=>b(t,n,e),observeAgentLifecycle:h,providerRegistry:n,readInstalledState:u,readReceipt:s,signal:e.signal,timeoutMs:e.timeoutMs},a)}async function y(e){let t=f(),n=v(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function b(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let[a,s]=await Promise.all([c(t.binaryName,r),x(t,n,r)]);return{path:await o(a,r)??a,present:i,version:s}}async function x(e,t,n){return l(e.binaryName,e.versionProbe,n)}async function S(e,t,n,r){let i=d(e,t,n);return i?a(i,`latest`,{context:r}):void 0}export{_ as n,v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./detect-BdnZzKbm.mjs";import{s as t}from"./schema-hCKyxJjR.mjs";import{t as n}from"./types-D3y_n7iy.mjs";import{t as r}from"./cli-operation-context-QEqKxWgM.mjs";import{n as i}from"./agents-T-kpsmCW.mjs";import{i as a,t as o}from"./provider-binding-DMLQQGPh.mjs";import{t as s}from"./provider-evidence-BnvMbSP7.mjs";import{n as c}from"./lifecycle-observations-DuXTdiJE.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:z(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:je(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(L),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Oe(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>L(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:z(t.signal)};let r=xe(n);if(!r){let e=n.observation.kind===`absent`&&n.observation.drift.kind===`recorded-absent`;return{before:n,category:e?`stale-state`:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${n.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${n.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}if(we(n.installedState)&&n.agent.selfUpdate){let e=A(n);return e?{kind:`planned`,planned:{before:n,beforeVersion:e,binding:r,commands:[n.agent.selfUpdate.command,...n.agent.selfUpdate.fallbackCommands??[]],planning:Te(n),strategy:`self-update`}}:{before:n,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${n.agent.displayName} self-update because its installed version is unknown.`}}let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return Ee(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:z(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=j(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:Ae(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:M(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=j(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:Ae(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&R(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!R(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function Ce(e,n){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!R(e.binding,n.binding)||n.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(n.observation.kind!==`present`||!n.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=A(n),a=i?t(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:n.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function A(e){let n=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=n[0];return r&&n.every(e=>t(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function j(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${I(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};beforeVersion=${I(t.planned.beforeVersion)};commands=${t.planned.commands.map(P).join(`|`)};plan=${I(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};decision=${r.decision};plan=${I(r.plan.id)};version=${I(i)};${ke(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${I(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${I(t.reason)}`:t.kind===`cancelled`?`${n};reason=${I(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${I(e.operation)};reason=${I(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${I(e.reason)};retryable=${I(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${I(e.exitCode)};reason=${I(e.reason)};remediation=${I(e.remediation)};retryable=${I(e.retryable)}`;case`cancelled`:return`cancelled;reason=${I(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${I(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${I(e.reason)}`}}function P(e){return e?`argv:${e.map(I).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${I(e.kind)}:value=${I(e.value)}`).sort(L).join(`,`)}`:`undefined`}function Oe(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${I(t.binding.providerId)};${ke(t.providerOptions)}`}function ke(e){return`distTag=${I(e?.distTag)};registry=${I(e?.registry)};updateStrategy=${I(e?.updateStrategy)}`}function I(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function L(e,t){return e<t?-1:e>t?1:0}function R(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function z(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Ae(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Me(e,t=e=>i(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Ne(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:i(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=G(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await q(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=G(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Ue(e,r);if(!n)return{kind:`inconclusive`};let i=await q(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:K(i.observation,n)}}}}async function Pe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=G(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await q(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=G(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=We(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await q(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:K(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Fe(e,t={}){let n=t.observe??c,r=Me(e,t.resolveTarget),i=await Promise.all(r.map(e=>J(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await J(n,e);return t.kind===`success`&&t.observation?H(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Re((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ie(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await J(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=H(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ie(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Le(e){try{return d(g(e.items))===d(e)}catch{return!1}}function B(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function V(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Re(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=ze(n[e],r[e]);if(t!==0)return t}return 0})}function ze(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Be(t,n={}){let r=n.observe??c,i=await r(t),a=i?.agent.name??t,o=i?Ge(i):void 0,s=n.observeProviderTarget??Je,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Xe(await Y(s,o.binding),o.binding)&&await Ye(l,o.executableName)===!1)return qe(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Ke({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await J(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=Ve(n.observation);if(i!==`clear`)return{kind:i};let o=await Y(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let c=await Ye(l,t.executableName);return c===void 0?{kind:`inconclusive`}:c?{kind:`drifted`}:{kind:`satisfied`}}}}function Ve(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function He(e,t,n={}){let r=await(n.observe??c)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??c)(i);if(!e)return;let t=H(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??c)(i);if(!t)return{kind:`inconclusive`};let r=H(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function H(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=U([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=U([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=U([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=U([o.executablePath,W(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function U(e){return[...new Set(e.filter(e=>e!==void 0))]}function W(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ue(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=W(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=W(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ze(c)||!Qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function We(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=Ue({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function G(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=K(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=U([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function K(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!o(i,e.binding,e.agent.binaryName)||!o(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let a=U([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let s=t(a[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function q(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ge(e){let t=e.receipt?a(e.receipt):void 0;if(!(!t||!e.binding||!o(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Ke(e,t){let n=W(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=W(e.receipt,`executableName`),a=W(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ze(o)||!Qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function qe(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Je(e){let t=r();try{return await t.run(()=>s(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Y(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ye(e,t){try{return await e(t)}catch{return}}function Xe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ze(e){return n.includes(e)}function Qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Ne as a,ve as c,re as d,d as f,He as i,he as l,Fe as n,Me as o,Pe as r,pe as s,Be as t,_e as u};
|
|
1
|
+
import{n as e}from"./detect-BdnZzKbm.mjs";import{s as t}from"./schema-hCKyxJjR.mjs";import{t as n}from"./types-D3y_n7iy.mjs";import{t as r}from"./cli-operation-context-QEqKxWgM.mjs";import{n as i}from"./agents-CeaGD7Mf.mjs";import{i as a,t as o}from"./provider-binding-DMLQQGPh.mjs";import{t as s}from"./provider-evidence-BE2knt4o.mjs";import{n as c}from"./lifecycle-observations-CueO9I2o.mjs";import{createHash as l}from"node:crypto";function u(e,t={}){let n=f(e.options??{});if(Array.isArray(n)||typeof n!=`object`||!n)throw TypeError(`Mutation options must be a JSON object.`);return{action:e.action,options:n,targets:[...new Set(e.targets)].sort(m)}}function d(e){return l(`sha256`).update(p(f(e)),`utf8`).digest(`hex`)}function f(e){if(e==null)return null;if(typeof e==`boolean`||typeof e==`string`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Canonical numbers must be finite.`);return e}if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`Canonical arrays must not contain sparse positions.`);return e.map(f)}if(typeof e!=`object`)throw TypeError(`Unsupported canonical value: ${typeof e}`);let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw TypeError(`Canonical objects must be plain JSON objects.`);return Object.fromEntries(Object.keys(e).sort(m).flatMap(t=>{let n=e[t];return n===void 0?[]:[[t,f(n)]]}))}function p(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(p).join(`,`)}]`:`{${Object.keys(e).sort(m).map(t=>`${JSON.stringify(t)}:${p(e[t])}`).join(`,`)}}`}function m(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}const ee=[`createdAt`,`expiresAt`,`postcondition`,`receipt`,`request`,`resolvedPlan`,`result`,`schemaVersion`],te=[`items`,`kind`,`schemaVersion`],ne=[`items`,`kind`];function h(e){if(e.length===0||!e.every(y))throw TypeError(`Receipt sets require at least one valid single-target receipt.`);return{items:fe(e,`Receipt sets must not contain duplicate receipts.`),kind:`receipt-set`,schemaVersion:1}}function g(e){if(e.length===0||!e.every(x))throw TypeError(`All-of postconditions require at least one valid single postcondition.`);return{items:fe(e,`All-of postconditions must not contain duplicate items.`),kind:`all-of`}}function re(e){if(!E(e))return _(`malformed-record`);if(!Object.hasOwn(e,`schemaVersion`))return _(`legacy-record`);if(e.schemaVersion!==1)return _(`unsupported-schema`);if(!O(e,ee))return _(`malformed-record`);if(!S(e.createdAt)||!S(e.expiresAt)||Date.parse(e.expiresAt)<=Date.parse(e.createdAt))return _(`invalid-timestamp`);let t=ie(e.result);if(t===`failed`)return _(`failed-result`);if(t===`malformed`||!v(e.request)||!v(e.resolvedPlan)||!v(e.receipt)||!v(e.postcondition))return _(`malformed-record`);if(!ce(e.request.payload)||!C(e.resolvedPlan.payload)||!le(e.receipt.payload)||!ue(e.postcondition.payload))return _(`invalid-payload`);for(let t of[e.request,e.resolvedPlan,e.receipt,e.postcondition])if(d(t.payload)!==t.fingerprint)return _(`fingerprint-mismatch`);return{kind:`valid`,record:e}}function _(e){return{kind:`invalid`,reason:e}}function ie(e){return!E(e)||!k(e,[`action`,`data`,`error`,`exitCode`,`meta`,`ok`,`target`,`warnings`])||!T(e.action)||!Object.hasOwn(e,`error`)||!Object.hasOwn(e,`ok`)||!ae(e.meta)||!Array.isArray(e.warnings)||!e.warnings.every(se)||Object.hasOwn(e,`exitCode`)&&e.exitCode!==void 0&&!Number.isInteger(e.exitCode)||Object.hasOwn(e,`target`)&&e.target!==void 0&&!oe(e.target)||Object.hasOwn(e,`data`)&&e.data!==void 0&&!w(e.data)?`malformed`:e.ok!==!0||e.error!==null||e.exitCode!==void 0&&e.exitCode!==0?e.ok===!1&&se(e.error)?`failed`:`malformed`:`valid`}function ae(e){return!E(e)||!k(e,[`fetchedAt`,`mode`,`runId`,`schemaVersion`,`source`,`staleAfter`,`timestamp`,`version`])?!1:(e.mode===`human`||e.mode===`json`||e.mode===`ndjson`)&&T(e.runId)&&T(e.schemaVersion)&&S(e.timestamp)&&T(e.version)&&(!Object.hasOwn(e,`fetchedAt`)||e.fetchedAt===void 0||S(e.fetchedAt))&&(!Object.hasOwn(e,`staleAfter`)||e.staleAfter===void 0||S(e.staleAfter))&&(!Object.hasOwn(e,`source`)||e.source===void 0||e.source===`cache`||e.source===`network`)}function oe(e){return E(e)&&k(e,[`kind`,`name`])&&(e.kind===`agent`||e.kind===`config`||e.kind===`self`||e.kind===`system`)&&(!Object.hasOwn(e,`name`)||e.name===void 0||T(e.name))}function se(e){return E(e)&&k(e,[`code`,`details`,`message`])&&T(e.code)&&T(e.message)&&(!Object.hasOwn(e,`details`)||e.details===void 0||C(e.details))}function v(e){return E(e)&&O(e,[`fingerprint`,`payload`])&&typeof e.fingerprint==`string`&&/^[0-9a-f]{64}$/.test(e.fingerprint)}function ce(e){return E(e)&&O(e,[`action`,`options`,`targets`])&&T(e.action)&&C(e.options)&&Array.isArray(e.targets)&&e.targets.every(T)?d(u({action:e.action,options:e.options,targets:e.targets}))===d(e):!1}function le(e){return C(e)?y(e)||b(e):!1}function y(e){return C(e)&&typeof e.schemaVersion==`number`&&Number.isInteger(e.schemaVersion)&&e.schemaVersion>=1&&T(e.providerId)&&T(e.targetId)&&(!Object.hasOwn(e,`version`)||e.version===void 0||T(e.version))}function b(e){return C(e)?O(e,te)&&e.kind===`receipt-set`&&e.schemaVersion===1&&de(e.items,y):!1}function ue(e){return!C(e)||!T(e.kind)?!1:e.kind===`all-of`?O(e,ne)&&de(e.items,x):x(e)}function x(e){if(!C(e)||!T(e.kind)||e.kind===`all-of`)return!1;switch(e.kind){case`package-absent`:case`package-present`:return T(e.providerId)&&T(e.targetId);case`executable-absent`:case`executable-present`:return T(e.executable);case`version-satisfies`:return T(e.expectedVersion)&&T(e.targetId);default:return!1}}function de(e,t){if(!Array.isArray(e)||e.length===0||!e.every(t))return!1;let n=e.map(d);return n.every((e,t)=>t===0||n[t-1]<e)}function fe(e,t){let n=e.map(e=>({fingerprint:d(e),item:e}));if(n.sort((e,t)=>e.fingerprint<t.fingerprint?-1:e.fingerprint>t.fingerprint?1:0),n.some((e,t)=>t>0&&n[t-1].fingerprint===e.fingerprint))throw TypeError(t);return n.map(e=>e.item)}function S(e){if(typeof e!=`string`)return!1;let t=Date.parse(e);return Number.isFinite(t)&&new Date(t).toISOString()===e}function C(e){return E(e)&&w(e)}function w(e,t=new WeakSet){if(e===null||typeof e==`boolean`||typeof e==`string`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){let n=Reflect.ownKeys(e);if(!n.every(e=>typeof e==`string`)||n.length!==e.length+1)return!1;for(let n=0;n<e.length;n+=1){let r=Reflect.getOwnPropertyDescriptor(e,String(n));if(!D(r)||!w(r.value,t))return!1}return!0}return E(e)?Reflect.ownKeys(e).every(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);return D(r)&&w(r.value,t)}):!1}finally{t.delete(e)}}function T(e){return typeof e==`string`&&e.length>0}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||t===null)&&Reflect.ownKeys(e).every(t=>typeof t==`string`&&D(Reflect.getOwnPropertyDescriptor(e,t)))}function D(e){return e!==void 0&&e.enumerable===!0&&Object.hasOwn(e,`value`)}function O(e,t){return Reflect.ownKeys(e).length===t.length&&k(e,t)&&t.every(t=>Object.hasOwn(e,t))}function k(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(e=>typeof e==`string`&&n.has(e))}async function pe(e,t){let n=[],r=[];for(let i of e.targets){let e=i.outcome;if(e.kind!==`planned`){n.push({agentName:i.agentName,id:i.id,planning:e});continue}if(t.signal.aborted){r.push({agentName:i.agentName,id:i.id,planning:e,reason:z(t.signal)});continue}let a;try{a=await ve(e.planned,t)}catch(n){let r=t.classifyMutationLockError(n);a=r?{kind:`locked`,plan:e.planned,reason:r.reason,resource:r.resource}:{kind:`unexpected-failure`,plan:e.planned,reason:je(n)}}n.push({agentName:i.agentName,execution:a,id:i.id,planning:e})}return{cancellationRemainder:r,kind:`lifecycle-update-batch-outcome`,plan:e,results:n,success:r.length===0&&n.length===e.targets.length&&n.every(e=>me(e))}}function me(e){let t=e.execution?.kind;return t===`dry-run`||t===`not-executed`||t===`up-to-date`||t===`updated`||e.planning.kind===`blocked`&&[`manual-required`,`stale-state`,`untracked`].includes(e.planning.category)}async function he(e){let t=[...new Set(await e.listRegisteredAgentNames())].sort(L),n=[];for(let r of t){let t=await _e(r,e);ge(t)||n.push({agentName:r,id:N(r,t),outcome:t})}let r=new Map;for(let e of n){let t=Oe(e);if(!t)continue;let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[...r.entries()].sort(([e],[t])=>L(e,t)).map(([e,t])=>{let n=t[0].outcome;if(n.kind!==`planned`)throw Error(`Automatic update bucket contains a non-planned target.`);return{id:`update-bucket:${e};targets=${t.map(e=>e.id).join(`,`)}`,providerId:n.planned.binding.providerId,targets:t}}),a=`update-batch:targets=${n.map(e=>e.id).join(`,`)};buckets=${i.map(e=>e.id).join(`,`)}`;return{id:a,kind:`lifecycle-update-batch-plan`,providerBuckets:i,resolvedPlanId:a,targets:n}}function ge(e){if(e.kind===`unknown-agent`)return!1;let t=e.kind===`planned`?e.planned.before:e.before;return!t.executable.present&&t.installedState===void 0&&t.receipt===void 0}async function _e(e,t){let n=await t.observe(e);if(!n)return{agentName:e,kind:`unknown-agent`};if(t.signal.aborted)return{before:n,kind:`cancelled`,reason:z(t.signal)};let r=xe(n);if(!r){let e=n.observation.kind===`absent`&&n.observation.drift.kind===`recorded-absent`;return{before:n,category:e?`stale-state`:n.observation.drift.kind===`untracked`?`untracked`:`unsafe-source`,kind:`blocked`,reason:e?`${n.agent.displayName} has stale lifecycle evidence. Run \`quantex uninstall ${n.agent.name}\` to reconcile it.`:`The recorded update source does not match live provider evidence.`}}if(we(n.installedState)&&n.agent.selfUpdate){let e=A(n);return e?{kind:`planned`,planned:{before:n,beforeVersion:e,binding:r,commands:[n.agent.selfUpdate.command,...n.agent.selfUpdate.fallbackCommands??[]],planning:Te(n),strategy:`self-update`}}:{before:n,category:`manual-required`,kind:`blocked`,reason:`Cannot verify ${n.agent.displayName} self-update because its installed version is unknown.`}}let i=t.providerRegistry.get(r.providerId);if(!i?.resolveLatestVersion)return{before:n,category:`manual-required`,kind:`blocked`,reason:`Provider ${r.providerId} cannot resolve an update target version.`};let a=await i.resolveLatestVersion({context:M(t),target:r.target});if(a.kind!==`success`)return Ee(n,a);let o={capabilities:t.providerRegistry.getCapabilities(r.providerId),providerId:r.providerId,targetId:r.target.id,targetKind:r.target.kind},s=t.planLifecycleUpdate({intent:{kind:`update`,targetId:n.agent.name,targetVersion:a.value.version},observation:n.observation,provider:o});return{kind:`planned`,planned:{before:n,binding:r,plannedTargetVersion:a.value.version,planning:s,providerOptions:t.updateOptions,strategy:`managed-provider`}}}async function ve(e,t){if(e.planning.decision!==`upgrade`)return{kind:`not-executed`,plan:e};if(t.dryRun)return{kind:`dry-run`,plan:e};if(t.signal.aborted)return{kind:`cancelled`,plan:e,reason:z(t.signal)};let n=()=>ye(e,t);return t.withMutationLock?t.withMutationLock(n):n()}async function ye(e,t){if(e.strategy===`self-update`)return be(e,t);let n=t.providerRegistry.get(e.binding.providerId);if(!n?.update)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Provider ${e.binding.providerId} does not support update.`}};let r=await n.update({context:M(t),options:e.providerOptions,target:e.binding.target});if(r.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:r,timeoutMs:r.timeoutMs};if(r.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:r.reason};if(r.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:r};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let i=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:i,kind:`cancelled`,plan:e,providerOutcome:r,reason:z(t.signal)};let a=Se(e,i);if(a.kind!==`satisfied`)return{after:i,kind:`verification-failed`,plan:e,providerOutcome:r,verification:a};let o=j(e,i,t.clock());try{await t.writeReceipt(o)}catch(t){return{after:i,kind:`receipt-failed`,plan:e,providerOutcome:r,reason:Ae(t),verification:a}}return{after:i,kind:`updated`,plan:e,providerOutcome:r,receipt:o,verification:a}}async function be(e,t){if(!t.executeSelfUpdate)return{kind:`provider-failed`,plan:e,providerOutcome:{kind:`unsupported`,operation:`update`,reason:`Self-update execution is unavailable.`}};let n=await t.executeSelfUpdate({commands:e.commands,context:M(t),target:e.binding.target});if(n.kind===`timed-out`)return{kind:`timed-out`,plan:e,providerOutcome:n,timeoutMs:n.timeoutMs};if(n.kind===`cancelled`)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:n.reason};if(n.kind!==`success`)return{kind:`provider-failed`,plan:e,providerOutcome:n};if(t.signal.aborted)return{kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let r=await t.observe(e.before.agent.name);if(t.signal.aborted)return{after:r,kind:`cancelled`,plan:e,providerOutcome:n,reason:z(t.signal)};let i=Ce(e,r);if(i.verification.kind!==`satisfied`)return{after:r,kind:`verification-failed`,plan:e,providerOutcome:n,verification:i.verification};let a=j(e,r,t.clock());try{await t.writeReceipt(a)}catch(t){return{after:r,kind:`receipt-failed`,plan:e,providerOutcome:n,reason:Ae(t),verification:i.verification}}return{after:r,kind:i.changed?`updated`:`up-to-date`,plan:e,providerOutcome:n,receipt:a,verification:i.verification}}function xe(e){let t=e.binding,n=e.persistedBinding,r=e.observation;if(!(!t||!n||r.kind!==`present`||r.drift.kind!==`none`)&&R(t,n,e.agent.binaryName)&&!(r.providerId!==t.providerId||r.providerTargetId!==t.target.id||r.providerTargetKind!==t.target.kind))return t}function Se(e,n){let r={expectedVersion:e.plannedTargetVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared after update.`};if(!R(e.binding,n.binding))return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the planned provider binding.`};if(n.observation.drift.kind!==`none`)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains ${n.observation.drift.kind} drift.`};if(n.observation.kind!==`present`||!n.executable.present)return{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The provider target or executable is not present after update.`};let i=[n.observation.version,n.executable.version].filter(e=>e!==void 0),a=i[0];return a!==void 0&&i.some(e=>t(e,a)!==0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation contains conflicting versions: ${i.join(`, `)}.`}:a===void 0||i.some(n=>(t(n,e.plannedTargetVersion)??-1)<0)?{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${a??`unknown`} does not satisfy target ${e.plannedTargetVersion}.`}:{kind:`satisfied`,observation:n.observation,postcondition:r}}function Ce(e,n){let r={expectedVersion:e.beforeVersion,kind:`version-satisfies`,targetId:e.binding.target.id};if(!n)return{changed:!1,verification:{kind:`indeterminate`,postcondition:r,reason:`The agent disappeared.`}};if(!R(e.binding,n.binding)||n.observation.drift.kind!==`none`)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Fresh observation no longer matches the recorded self-update source.`}};if(n.observation.kind!==`present`||!n.executable.present)return{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`The executable is not present after self-update.`}};let i=A(n),a=i?t(i,e.beforeVersion):void 0;return!i||a===void 0||a<0?{changed:!1,verification:{kind:`unsatisfied`,observation:n.observation,postcondition:r,reason:`Observed version ${i??`unknown`} cannot verify self-update from ${e.beforeVersion}.`}}:{changed:a>0,verification:{kind:`satisfied`,observation:n.observation,postcondition:{expectedVersion:i,kind:`version-satisfies`,targetId:e.binding.target.id}}}}function A(e){let n=[e.observation.kind===`present`?e.observation.version:void 0,e.executable.version].filter(e=>e!==void 0),r=n[0];return r&&n.every(e=>t(e,r)===0)?r:void 0}function we(e){return e?.installType===`script`||e?.installType===`binary`}function Te(e){return{decision:`upgrade`,plan:{id:`self-update-${e.agent.name}`,intent:{kind:`update`,targetId:e.agent.name},kind:`lifecycle-plan`,observation:e.observation,steps:[]}}}function j(e,t,n){let r=t.observation;return{executableName:t.agent.binaryName,...r.executablePath?{executablePath:r.executablePath}:{},kind:`lifecycle-receipt`,providerId:e.binding.providerId,providerTargetId:e.binding.target.id,providerTargetKind:e.binding.target.kind,schemaVersion:1,targetId:e.before.agent.name,verifiedAt:n,version:r.version??t.executable.version}}function M(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function Ee(e,t){return t.kind===`cancelled`?{before:e,kind:`cancelled`,reason:t.reason}:t.kind===`timed-out`?{before:e,kind:`timed-out`,timeoutMs:t.timeoutMs}:{before:e,kind:`provider-failed`,providerOutcome:t}}function N(e,t){let n=`update-target:agent=${I(e)};outcome=${t.kind}`;if(t.kind===`planned`){let{binding:e,planning:r}=t.planned;if(t.planned.strategy===`self-update`)return`${n};strategy=self-update;provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};beforeVersion=${I(t.planned.beforeVersion)};commands=${t.planned.commands.map(P).join(`|`)};plan=${I(r.plan.id)}`;let{plannedTargetVersion:i,providerOptions:a}=t.planned;return`${n};provider=${I(e.providerId)};providerTargetKind=${I(e.target.kind)};providerTarget=${I(e.target.id)};binary=${I(e.target.binaryName)};decision=${r.decision};plan=${I(r.plan.id)};version=${I(i)};${ke(a)}`}return t.kind===`unknown-agent`?`${n};agentName=${I(t.agentName)}`:t.kind===`blocked`?`${n};category=${t.category};reason=${I(t.reason)}`:t.kind===`cancelled`?`${n};reason=${I(t.reason)}`:t.kind===`timed-out`?`${n};timeoutMs=${t.timeoutMs}`:`${n};providerOutcome=${De(t.providerOutcome)}`}function De(e){switch(e.kind){case`unsupported`:return`unsupported;operation=${I(e.operation)};reason=${I(e.reason)}`;case`unavailable`:return`unavailable;command=${P(e.command)};reason=${I(e.reason)};retryable=${I(e.retryable)}`;case`failed`:return`failed;command=${P(e.command)};evidence=${F(e.evidence)};exitCode=${I(e.exitCode)};reason=${I(e.reason)};remediation=${I(e.remediation)};retryable=${I(e.retryable)}`;case`cancelled`:return`cancelled;reason=${I(e.reason)}`;case`timed-out`:return`timed-out;timeoutMs=${I(e.timeoutMs)}`;case`indeterminate`:return`indeterminate;evidence=${F(e.evidence)};reason=${I(e.reason)}`}}function P(e){return e?`argv:${e.map(I).join(`,`)}`:`undefined`}function F(e){return e?`items:${e.map(e=>`kind=${I(e.kind)}:value=${I(e.value)}`).sort(L).join(`,`)}`:`undefined`}function Oe(e){if(e.outcome.kind!==`planned`||e.outcome.planned.planning.decision!==`upgrade`)return;let t=e.outcome.planned;if(t.strategy===`managed-provider`)return`provider=${I(t.binding.providerId)};${ke(t.providerOptions)}`}function ke(e){return`distTag=${I(e?.distTag)};registry=${I(e?.registry)};updateStrategy=${I(e?.updateStrategy)}`}function I(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`boolean`?e?`boolean:true`:`boolean:false`:typeof e==`number`?`number:${e}`:`string:${encodeURIComponent(e)}`}function L(e,t){return e<t?-1:e>t?1:0}function R(e,t,n){return!!(t&&t.providerId===e.providerId&&t.target.id===e.target.id&&t.target.kind===e.target.kind&&(t.target.binaryName??n)===(e.target.binaryName??n))}function z(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function Ae(e){return e instanceof Error&&e.message.trim()?e.message:`Failed to persist lifecycle receipt.`}function je(e){return e instanceof Error&&e.message.trim()?e.message:`Unexpected lifecycle update failure.`}function Me(e,t=e=>i(e)?.name){return[...u({action:`install`,targets:e.map(e=>t(e)??e)}).targets]}async function Ne(e,t){let n=await t.prepare(),r=n.kind===`planned`?n.planned.before.agent.name:i(e)?.name??e;return{async captureEvidence(){let e=t.getOutcome();if(!e)return;if(e.kind===`updated`||e.kind===`up-to-date`){let t=G(e.after,e.plan,e.receipt);return t.kind===`compatible`?t.evidence:void 0}if(e.kind!==`not-executed`||e.plan.planning.decision!==`up-to-date`)return;let n=await q(t.observe,r);if(n.kind===`failed`||!n.observation)return;let i=G(n.observation,e.plan);return i.kind===`compatible`?i.evidence:void 0},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`single`},targets:[r]}),resolvedPlan:{kind:`agent-update`,planId:N(r,n),targetId:r},async validateLive(e){let n=Ue(e,r);if(!n)return{kind:`inconclusive`};let i=await q(t.observe,r);return i.kind===`failed`||!i.observation?{kind:`inconclusive`}:{kind:K(i.observation,n)}}}}async function Pe(e){let t=await e.prepare(),n=t.targets.map(e=>e.agentName);return{async captureEvidence(){let n=e.getOutcome();if(!n||n.plan!==t)return;let r=new Map(n.results.map(e=>[e.id,e])),i=[];for(let n of t.targets){if(n.outcome.kind!==`planned`)return;let t=r.get(n.id)?.execution,a;if(t?.kind===`updated`||t?.kind===`up-to-date`)a=G(t.after,t.plan,t.receipt);else if(t?.kind===`not-executed`&&t.plan.planning.decision===`up-to-date`){let r=await q(e.observe,n.agentName);if(r.kind===`failed`||!r.observation)return;a=G(r.observation,t.plan)}else return;if(a.kind!==`compatible`)return;i.push(a.evidence)}return{postcondition:g(i.map(e=>e.postcondition)),receipt:h(i.map(e=>e.receipt))}},request:u({action:`update`,options:{requestedVersion:`latest`,scope:`all`},targets:n}),resolvedPlan:{kind:`agent-update-batch`,planId:t.resolvedPlanId,targets:n},async validateLive(t){let r=We(t,n);if(!r)return{kind:`inconclusive`};let i=await Promise.all(n.map(async t=>{let n=await q(e.observe,t);return n.kind===`failed`||!n.observation?`inconclusive`:K(n.observation,r.get(t))}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}async function Fe(e,t={}){let n=t.observe??c,r=Me(e,t.resolveTarget),i=await Promise.all(r.map(e=>J(n,e)));return{async captureEvidence(){let e=await Promise.all(r.map(async e=>{let t=await J(n,e);return t.kind===`success`&&t.observation?H(t.observation):{kind:`inconclusive`}}));if(e.some(e=>e.kind!==`compatible`))return;let t=e.flatMap(e=>e.kind===`compatible`?[e.evidence]:[]);return{postcondition:g(t.map(e=>e.postcondition)),receipt:h(t.map(e=>e.receipt))}},request:u({action:`install`,targets:r}),resolvedPlan:{kind:`agent-presence-batch`,targets:i.map((e,t)=>({candidates:Re((e.kind===`success`?e.observation:void 0)?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[]),targetId:r[t]}))},async validateLive(e){let t=Ie(e,r);if(!t)return{kind:`inconclusive`};let i=await Promise.all(r.map(async e=>{let r=await J(n,e);if(r.kind===`failed`||!r.observation)return`inconclusive`;let i=t.get(e),a=H(r.observation,i.receipt);return a.kind===`compatible`?d(a.evidence.postcondition)===d(i.postcondition)&&d(a.evidence.receipt)===d(i.receipt)?`satisfied`:`drifted`:a.kind}));return i.includes(`drifted`)?{kind:`drifted`}:i.includes(`inconclusive`)?{kind:`inconclusive`}:{kind:`satisfied`}}}}function Ie(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=n.get(e),a=r.get(e);if(t.kind!==`package-present`||t.providerId!==a.providerId||t.targetId!==a.targetId)return;i.set(e,{postcondition:t,receipt:a})}return i}function Le(e){try{return d(g(e.items))===d(e)}catch{return!1}}function B(e){let t=new Map;for(let n of e){let e=n.agentTargetId;if(typeof e!=`string`||e.length===0||t.has(e))return;t.set(e,n)}return t}function V(e,t){return e.size===t.length&&t.every(t=>e.has(t))}function Re(e){return[...e].sort((e,t)=>{let n=[e.providerId,e.targetKind,e.targetId,e.binaryName??``],r=[t.providerId,t.targetKind,t.targetId,t.binaryName??``];for(let e=0;e<n.length;e+=1){let t=ze(n[e],r[e]);if(t!==0)return t}return 0})}function ze(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)return e.done===t.done?0:e.done?-1:1;let i=e.value.codePointAt(0)-t.value.codePointAt(0);if(i!==0)return i}}async function Be(t,n={}){let r=n.observe??c,i=await r(t),a=i?.agent.name??t,o=i?Ge(i):void 0,s=n.observeProviderTarget??Je,l=n.isExecutablePresent??e;return{async captureEvidence(){if(o&&Xe(await Y(s,o.binding),o.binding)&&await Ye(l,o.executableName)===!1)return qe(o)},request:u({action:`uninstall`,targets:[a]}),resolvedPlan:{kind:`agent-absence`,targetId:a},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=Ke({postcondition:e.postcondition,receipt:e.receipt},a);if(!t)return{kind:`inconclusive`};let n=await J(r,a);if(n.kind===`failed`||!n.observation)return{kind:`inconclusive`};let i=Ve(n.observation);if(i!==`clear`)return{kind:i};let o=await Y(s,t.binding);if(o.kind!==`success`||!X(t.binding,o.value))return{kind:`inconclusive`};if(o.value.kind===`present`)return{kind:`drifted`};let c=await Ye(l,t.executableName);return c===void 0?{kind:`inconclusive`}:c?{kind:`drifted`}:{kind:`satisfied`}}}}function Ve(e){return e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`||e.observation.drift.kind===`conflicting-source`||e.providerOutcome!==void 0&&e.providerOutcome.kind!==`success`||e.binding&&(e.providerOutcome?.kind!==`success`||!X(e.binding,e.providerOutcome.value))?`inconclusive`:e.receipt||e.installedState||e.persistedBinding||e.binding||e.observation.kind===`present`||e.executable.present||e.pathExecutable.present?`drifted`:`clear`}async function He(e,t,n={}){let r=await(n.observe??c)(t),i=r?.agent.name??t;return{async captureEvidence(){let e=await(n.observe??c)(i);if(!e)return;let t=H(e);return t.kind===`compatible`?t.evidence:void 0},request:u({action:e,targets:[i]}),resolvedPlan:{candidates:r?.catalogMethods.map(e=>({...e.target.binaryName?{binaryName:e.target.binaryName}:{},providerId:e.providerId,targetId:e.target.id,targetKind:e.target.kind}))??[],kind:`agent-presence`,targetId:i},async validateLive(e){if(!Q(e))return{kind:`inconclusive`};let t=await(n.observe??c)(i);if(!t)return{kind:`inconclusive`};let r=H(t,e.receipt);return r.kind===`compatible`?d(r.evidence)===d(e)?{kind:`satisfied`}:{kind:`drifted`}:{kind:r.kind}}}}function H(e,t){let{agent:n,binding:r,observation:i,providerOutcome:a,receipt:o}=e;if(i.kind===`indeterminate`||i.drift.kind===`indeterminate`||a===void 0||a.kind!==`success`)return{kind:`inconclusive`};if(i.kind!==`present`||i.drift.kind!==`none`||!e.executable.present||!r||!o||a.value.kind!==`present`||i.providerId!==r.providerId||i.providerTargetId!==r.target.id||o.targetId!==n.name||o.providerId!==r.providerId||o.providerTargetId!==r.target.id||o.providerTargetKind!==void 0&&o.providerTargetKind!==r.target.kind||a.value.target.id!==r.target.id||a.value.target.kind!==r.target.kind)return{kind:`drifted`};let s=U([e.executable.version,i.version,a.value.version]);if(s.length>1)return{kind:`drifted`};let c=U([o.version,t?.version]);if(c.length>1)return{kind:`drifted`};let l=c[0];if(l!==void 0&&s.some(e=>e!==l))return{kind:`drifted`};if(l!==void 0&&s.length===0)return{kind:`inconclusive`};let u=U([e.executable.path,i.executablePath,a.value.executablePath]);if(u.length>1)return{kind:`drifted`};let d=U([o.executablePath,W(t,`executablePath`)]);if(d.length>1)return{kind:`drifted`};let f=d[0];if(f!==void 0&&u.some(e=>e!==f))return{kind:`drifted`};if(f!==void 0&&e.executable.path===void 0)return{kind:`inconclusive`};let p=f??u[0],m=l??s[0];return{evidence:{postcondition:{agentTargetId:n.name,kind:`package-present`,providerId:r.providerId,targetId:r.target.id},receipt:{agentTargetId:n.name,executableName:o.executableName??n.binaryName,...p?{executablePath:p}:{},providerId:r.providerId,providerTargetKind:r.target.kind,schemaVersion:o.schemaVersion,targetId:r.target.id,...m?{version:m}:{}}},kind:`compatible`}}function U(e){return[...new Set(e.filter(e=>e!==void 0))]}function W(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ue(e,n){if(!Q(e)||e.postcondition.kind!==`version-satisfies`)return;let r=W(e.receipt,`agentTargetId`),i=Z(e.postcondition,`agentTargetId`),a=Z(e.postcondition,`providerId`),o=Z(e.postcondition,`providerTargetKind`),s=W(e.receipt,`providerTargetKind`),c=e.receipt.providerId;if(!(e.postcondition.expectedVersion.length===0||t(e.postcondition.expectedVersion,e.postcondition.expectedVersion)===void 0||r!==n||i!==n||a!==c||o!==s||e.postcondition.targetId!==e.receipt.targetId||!Ze(c)||!Qe(s)||!$(c,s)))return{agentTargetId:n,expectedVersion:e.postcondition.expectedVersion,providerId:c,providerTargetId:e.receipt.targetId,providerTargetKind:s}}function We(e,t){if(e.postcondition.kind!==`all-of`||!b(e.receipt)||!Le(e.postcondition)||e.postcondition.items.length!==t.length||e.receipt.items.length!==t.length)return;let n=B(e.postcondition.items),r=B(e.receipt.items);if(!n||!r||!V(n,t)||!V(r,t))return;let i=new Map;for(let e of t){let t=Ue({postcondition:n.get(e),receipt:r.get(e)},e);if(!t)return;i.set(e,t)}return i}function G(e,t,n=e.receipt){let r=t.strategy===`managed-provider`?t.plannedTargetVersion:n?.version??(e.observation.kind===`present`?e.observation.version:void 0)??e.executable.version;if(!r)return{kind:`inconclusive`};let i={agentTargetId:t.before.agent.name,expectedVersion:r,providerId:t.binding.providerId,providerTargetId:t.binding.target.id,providerTargetKind:t.binding.target.kind},a=K(e,i,n);if(a!==`satisfied`)return{kind:a};if(e.observation.kind!==`present`||!n)return{kind:`inconclusive`};let o=e.observation,s=U([e.executable.version,o.version])[0];return{evidence:{postcondition:{agentTargetId:i.agentTargetId,expectedVersion:i.expectedVersion,kind:`version-satisfies`,providerId:i.providerId,providerTargetKind:i.providerTargetKind,targetId:i.providerTargetId},receipt:{agentTargetId:i.agentTargetId,executableName:n.executableName??e.agent.binaryName,...o.executablePath?{executablePath:o.executablePath}:{},providerId:i.providerId,providerTargetKind:i.providerTargetKind,schemaVersion:n.schemaVersion,targetId:i.providerTargetId,version:s}},kind:`compatible`}}function K(e,n,r=e.receipt){if(e.observation.kind===`indeterminate`||e.observation.drift.kind===`indeterminate`)return`inconclusive`;if(e.agent.name!==n.agentTargetId||e.observation.kind!==`present`||e.observation.drift.kind!==`none`||!e.executable.present)return`drifted`;if(!e.binding||!e.persistedBinding||!r)return`inconclusive`;let i={providerId:n.providerId,target:{id:n.providerTargetId,kind:n.providerTargetKind}};if(!o(i,e.binding,e.agent.binaryName)||!o(i,e.persistedBinding,e.agent.binaryName)||e.observation.providerId!==n.providerId||e.observation.providerTargetId!==n.providerTargetId||e.observation.providerTargetKind!==n.providerTargetKind||r.targetId!==n.agentTargetId||r.providerId!==n.providerId||r.providerTargetId!==n.providerTargetId||r.providerTargetKind!==n.providerTargetKind)return`drifted`;let a=U([e.executable.version,e.observation.version]);if(a.length===0)return`inconclusive`;if(a.length>1)return`drifted`;let s=t(a[0],n.expectedVersion);return s===void 0?`inconclusive`:s<0?`drifted`:`satisfied`}async function q(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}function Ge(e){let t=e.receipt?a(e.receipt):void 0;if(!(!t||!e.binding||!o(t,e.binding,e.agent.binaryName)||e.providerOutcome?.kind!==`success`||!X(t,e.providerOutcome.value)))return{agentTargetId:e.agent.name,binding:t,executableName:e.receipt?.executableName??t.target.binaryName??e.agent.binaryName,receiptSchemaVersion:e.receipt.schemaVersion}}function Ke(e,t){let n=W(e.receipt,`agentTargetId`),r=Z(e.postcondition,`agentTargetId`),i=W(e.receipt,`executableName`),a=W(e.receipt,`providerTargetKind`),o=e.receipt.providerId;if(!(e.postcondition.kind!==`package-absent`||e.postcondition.providerId!==e.receipt.providerId||e.postcondition.targetId!==e.receipt.targetId||n!==t||r!==t||!i||!Ze(o)||!Qe(a)||!$(o,a)))return{binding:{providerId:o,target:{binaryName:i,id:e.receipt.targetId,kind:a}},executableName:i}}function qe(e){return{postcondition:{agentTargetId:e.agentTargetId,kind:`package-absent`,providerId:e.binding.providerId,targetId:e.binding.target.id},receipt:{agentTargetId:e.agentTargetId,executableName:e.executableName,providerId:e.binding.providerId,providerTargetKind:e.binding.target.kind,schemaVersion:e.receiptSchemaVersion,targetId:e.binding.target.id}}}async function Je(e){let t=r();try{return await t.run(()=>s(e,{signal:t.context.signal,timeoutMs:t.context.timeoutMs}))}finally{t.dispose()}}async function J(e,t){try{return{kind:`success`,observation:await e(t)}}catch{return{kind:`failed`}}}async function Y(e,t){try{return await e(t)}catch(e){return{kind:`failed`,reason:e instanceof Error?e.message:String(e),retryable:!1}}}async function Ye(e,t){try{return await e(t)}catch{return}}function Xe(e,t){return e.kind===`success`&&e.value.kind===`absent`&&X(t,e.value)}function X(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function Z(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Q(e){return e.postcondition.kind!==`all-of`&&!b(e.receipt)}function Ze(e){return n.includes(e)}function Qe(e){return e===`binary`||e===`cask`||e===`formula`||e===`id`||e===`package`||e===`script`||e===`tool`}function $(e,t){switch(e){case`binary`:return t===`binary`;case`script`:return t===`script`;case`brew`:return t===`formula`||t===`cask`;case`winget`:return t===`id`;case`deno`:case`mise`:case`uv`:return t===`tool`;case`bun`:case`cargo`:case`npm`:case`pip`:return t===`package`}}export{Ne as a,ve as c,re as d,d as f,He as i,he as l,Fe as n,Me as o,Pe as r,pe as s,Be as t,_e as u};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e,n as t}from"./output-
|
|
1
|
+
import{i as e,n as t}from"./output-DZkIsf0G.mjs";import{t as n}from"./color-BAlKATeY.mjs";import{r,t as i}from"./core-read-observations-DywRuhf7.mjs";async function a(){return e(t({action:`list`,data:{agents:(await i()).map(r).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
2
|
AI Agents:
|
|
3
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};
|