quantex-cli 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agent-installation-C493XDFa.mjs → agent-installation-BBPMCqVl.mjs} +1 -1
- package/dist/agent-observation-BCVGmyXs.mjs +1 -0
- package/dist/{agents-BVhg2uqJ.mjs → agents-Bxb3Mea2.mjs} +1 -1
- package/dist/{agents-_8Ay_O2P.mjs → agents-D1Uvcje8.mjs} +1 -1
- package/dist/{capabilities-DdjhIFGH.mjs → capabilities-BReJz6H8.mjs} +1 -1
- package/dist/capabilities-Dh-_gAUX.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/{commands-DgQeHPFE.mjs → commands-DXco47q1.mjs} +1 -1
- package/dist/commands-L4MNzqMk.mjs +1 -0
- package/dist/{config-sIdMC5n8.mjs → config-BrPEJTrQ.mjs} +1 -1
- package/dist/{core-installation-cli-B9HHOMSK.mjs → core-installation-cli-CRpdxNJQ.mjs} +1 -1
- package/dist/{core-read-observations-DJ_PiNxk.mjs → core-read-observations-DbnsEQQc.mjs} +1 -1
- package/dist/{doctor-DLqh1mWM.mjs → doctor-B6Xmbk1u.mjs} +1 -1
- package/dist/{ensure-C8eFff3H.mjs → ensure-BxGqDW_J.mjs} +1 -1
- package/dist/ensure-Dk_Kyq2F.mjs +1 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-dUPDOWt7.mjs → info-C_iXi7RC.mjs} +1 -1
- package/dist/{inspect-DPdPhXyQ.mjs → inspect-7qsc95oS.mjs} +1 -1
- package/dist/inspect-r8sMt76z.mjs +1 -0
- package/dist/{install-GVNdjsy9.mjs → install-CXdOEGGh.mjs} +1 -1
- package/dist/{installation-compatibility-CvvA-gQU.mjs → installation-compatibility-D5e55ZLy.mjs} +1 -1
- package/dist/{installation-production-J8c0VlZL.mjs → installation-production-BR6N-PBa.mjs} +1 -1
- package/dist/lifecycle-observations-yduDAmAL.mjs +1 -0
- package/dist/{lifecycle-policy-DP7_kYIQ.mjs → lifecycle-policy-DnMFp_PE.mjs} +1 -1
- package/dist/{list-DK3fj9d5.mjs → list-CupE1F8y.mjs} +1 -1
- package/dist/{output-CemK152l.mjs → output-CKLOQntj.mjs} +1 -1
- package/dist/{production-observation-uZ_BKubA.mjs → production-observation-3s0V9SYD.mjs} +1 -1
- package/dist/{provider-evidence-8Zlo9P36.mjs → provider-evidence-PgwwGmRT.mjs} +1 -1
- package/dist/{provider-observations-DV-1-oTB.mjs → provider-observations-DTHPCTM-.mjs} +1 -1
- package/dist/{providers-BsRQVnXd.mjs → providers-CzF9UdJQ.mjs} +1 -1
- package/dist/{resolve-DtJ2VGPP.mjs → resolve-CL7ezIwg.mjs} +1 -1
- package/dist/resolve-CQbGbUjT.mjs +1 -0
- package/dist/{schema-D7kyWJeh.mjs → schema-D7WE5lvQ.mjs} +1 -1
- package/dist/schema-DawaSL8c.mjs +1 -0
- package/dist/{uninstall-X2wXg7ic.mjs → uninstall-t-nu4pWx.mjs} +1 -1
- package/dist/{unmanaged-install-compatibility-DSOO1giL.mjs → unmanaged-install-compatibility-D74t0tqM.mjs} +1 -1
- package/dist/{update-CLOjmvmZ.mjs → update-DtSIF79-.mjs} +1 -1
- package/dist/{upgrade-BDncA4Lq.mjs → upgrade-DlA06vPN.mjs} +1 -1
- package/package.json +1 -1
- package/dist/agent-observation-Ci5R0GnA.mjs +0 -1
- package/dist/capabilities-BzIaPy6l.mjs +0 -1
- package/dist/commands-B_aFMzNX.mjs +0 -1
- package/dist/ensure-OJEUoNgi.mjs +0 -1
- package/dist/inspect-B7UWjmMH.mjs +0 -1
- package/dist/lifecycle-observations-iAw4vKAs.mjs +0 -1
- package/dist/resolve-D3ign4At.mjs +0 -1
- package/dist/schema-ra2FB_Qb.mjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./detect-BdnZzKbm.mjs";import{n as t}from"./cli-context-xudTdmO7.mjs";import{a as n}from"./file-store-Caz7fnAB.mjs";import{D as r,M as i,O as a,S as o,i as s,j as c,n as l,t as u,x as d}from"./output-
|
|
1
|
+
import{n as e}from"./detect-BdnZzKbm.mjs";import{n as t}from"./cli-context-xudTdmO7.mjs";import{a as n}from"./file-store-Caz7fnAB.mjs";import{D as r,M as i,O as a,S as o,i as s,j as c,n as l,t as u,x as d}from"./output-CKLOQntj.mjs";import{p as f}from"./providers-CzF9UdJQ.mjs";import{t as p}from"./color-FZclrXnv.mjs";import{g as m,n as h,p as g}from"./agents-D1Uvcje8.mjs";import{a as _,i as v}from"./provider-binding-D1muQsgD.mjs";import{t as y}from"./provider-evidence-PgwwGmRT.mjs";import{t as b}from"./lifecycle-errors-B0bwmxkB.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-B-zDs13K.mjs";const T=e=>new Promise(t=>setTimeout(t,e));async function E(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??T,i=Math.max(0,t.delayMs??100);for(let a=0;a<n;a+=1){if(t.signal?.aborted||t.isCancelled?.())return!1;let o=await e();if(t.signal?.aborted||t.isCancelled?.())return!1;if(o)return!0;a+1<n&&await r(i)}return!1}async function D(p){let y=h(p);if(!y)return s(u({action:`uninstall`,error:{code:`AGENT_NOT_FOUND`,details:{input:p},message:`Unknown agent: ${p}`},target:{kind:`agent`,name:p}}),P);try{return await m(async()=>{let[n,u]=await Promise.all([d(y.name),o(y.name)]);if(!n&&!u)return s(N(p,y),P);let m=await e(y.binaryName),h=n?_(y,n):void 0,b=u?v(u):void 0;if(n&&!h||u&&!b)return s(A(y,`indeterminate-source`,`Cannot resolve provider evidence for ${y.displayName}.`),P);if(h&&b&&!O(h,b))return s(A(y,`conflicting-source`,`Recorded sources disagree for ${y.displayName}.`),P);let x=h??b,S=await k(x);return S.kind===`success`?S.value.kind===`absent`?m?s(A(y,`conflicting-source`,`${y.displayName} is on PATH but its recorded provider target is absent.`),P):C()?s(j(y,`would reconcile stale lifecycle evidence`),P):(n&&await r(y.name),u&&await a(y.name),s(M(y),P)):n?C()?s(j(y,`would uninstall ${y.displayName}`),P):f(n.installType)?(u||await i({...x.target.binaryName?{executableName:x.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:x.providerId,providerTargetId:x.target.id,providerTargetKind:x.target.kind,schemaVersion:1,targetId:y.name,verifiedAt:new Date().toISOString(),...S.value.executablePath?{executablePath:S.value.executablePath}:{},...S.value.version?{version:S.value.version}:{}}),(await g(y,n)).kind===`success`?await E(async()=>{let t=await k(x);return t.kind!==`success`||t.value.kind!==`absent`?!1:!await e(y.binaryName)},{isCancelled:()=>!!t().cancelled})?(await a(y.name),s(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)):(await c(n),s(A(y,`verification-failed`,`${y.displayName} is still present after provider removal.`),P)):s(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P)):(await g(y,n)).kind===`success`?(await a(y.name),s(l({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!0},target:{kind:`agent`,name:y.name}}),P)):s(A(y,`provider-failure`,`Failed to uninstall ${y.displayName}.`),P):s(A(y,`indeterminate-source`,`Cannot safely reconstruct ${y.displayName}'s uninstall source.`),P):s(A(y,`indeterminate-source`,`Cannot verify provider state for ${y.displayName}.`),P)})}catch(e){if(n(e))return s(u({action:`uninstall`,data:{agent:{displayName:y.displayName,name:y.name},changed:!1},...b(e,{kind:`agent`,name:y.name})}),P);throw e}}function O(e,t){return e.providerId===t.providerId&&e.target.id===t.target.id&&e.target.kind===t.target.kind&&e.target.binaryName===t.target.binaryName}async function k(e){let n=t(),r=new AbortController;return n.cancelled&&r.abort(`cli-cancelled`),y(e,{signal:r.signal,timeoutMs:n.timeoutMs})}function A(e,t,n){return u({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},error:{code:`UNINSTALL_FAILED`,details:{lifecycle:t},message:n},target:{kind:`agent`,name:e.name}})}function j(e,t){return l({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!1},target:{kind:`agent`,name:e.name},warnings:[{code:`DRY_RUN`,message:`Dry run: ${t}.`}]})}function M(e){return l({action:`uninstall`,data:{agent:{displayName:e.displayName,name:e.name},changed:!0},target:{kind:`agent`,name:e.name},warnings:[{code:`GHOST_STATE_RECONCILED`,message:`${e.displayName} was already absent; stale lifecycle evidence was removed.`}]})}function N(e,t){return u({action:`uninstall`,data:{agent:{displayName:t.displayName,name:t.name},changed:!1},error:{code:`UNINSTALL_UNMANAGED`,details:{canAutoUninstall:!1,displayName:t.displayName,input:e,lifecycle:`unmanaged`,name:t.name},message:`${t.displayName} is not managed by qtx, so qtx cannot auto-uninstall it. Run qtx inspect ${t.name} for details.`},target:{kind:`agent`,name:t.name}})}function P(e){if(e.error){w(p.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)x(p.yellow(t.message));return}S(p.cyan(`Uninstalling ${e.data.agent.displayName}...`)),S(p.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{D as uninstallCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./detect-BdnZzKbm.mjs";import{l as t}from"./providers-
|
|
1
|
+
import{n as e}from"./detect-BdnZzKbm.mjs";import{l as t}from"./providers-CzF9UdJQ.mjs";import{n}from"./agents-D1Uvcje8.mjs";import{n as r}from"./lifecycle-observations-yduDAmAL.mjs";async function i(i){let a=n(i);if(!a||!await e(a.binaryName))return;let o=await r(i);if(!(!o?.pathExecutable.present||o.installedState||o.receipt))return t(o.methods,o.resolvedBinaryPath??o.pathExecutable.path)?void 0:o.agent}export{i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{g as r}from"./npm-fDgYmVes.mjs";import{I as i,r as a}from"./agents-BVhg2uqJ.mjs";import{n as o}from"./cli-context-xudTdmO7.mjs";import{a as s,d as c}from"./file-store-Caz7fnAB.mjs";import{T as l,i as u,n as d,r as f,t as p}from"./output-CemK152l.mjs";import{r as m}from"./providers-BsRQVnXd.mjs";import{t as h}from"./cli-operation-context-BhNiJdQ3.mjs";import{t as g}from"./color-FZclrXnv.mjs";import{g as _,n as v}from"./agents-_8Ay_O2P.mjs";import{t as y}from"./update-planner-DIhkPXeI.mjs";import{t as b}from"./lifecycle-observations-iAw4vKAs.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-B-zDs13K.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-DP7_kYIQ.mjs";async function j(e){let t;for(let n of e.commands){let i=await r(n,e.context,`agent self-update failed`);if(i.kind===`success`)return{kind:`success`,value:{evidence:[{kind:`command`,value:n.join(` `)}],target:e.target}};if(i.kind===`cancelled`||i.kind===`timed-out`)return i;t=i}return t??{kind:`unsupported`,operation:`update`,reason:`No self-update command is configured.`}}async function M(){let e=N();try{return await e.run()}finally{e.dispose()}}function N(){let e=h(),t=0,n=!1,r=!1,o,u,d,f,p=()=>{!n||r||t>0||(r=!0,e.dispose())},m=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,p()}},g=()=>(d??=c().then(t=>{let n=b(e.context);return{classifyMutationLockError:e=>s(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,listRegisteredAgentNames:()=>a().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:i,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:l.write}}),d),v=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(u??=m(async()=>D(await g())),u);return{dispose(){n||(n=!0,p())},getOutcome:()=>o,async observe(e){return m(async()=>(await g()).observe(e))},prepare:v,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(f??=(async()=>{let e=await v();return o=await m(async()=>k(e,await g())),o})(),f)}}}async function P(e){let t=F(e);try{return await t.run()}finally{t.dispose()}}function F(e){let t=h(),n=0,r=!1,a=!1,o,s,u,d,f=()=>{!r||a||n>0||(a=!0,t.dispose())},p=async e=>{if(r)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},m=()=>(u??=c().then(e=>{let n=b(t.context);return{clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:i,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:l.write}}),u),g=()=>r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(s??=p(async()=>A(e,await m())),s);return{dispose(){r||(r=!0,f())},getOutcome:()=>o,async observe(e){return p(async()=>(await m()).observe(e))},prepare:g,run(){return r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(d??=(async()=>{let e=await g();return o=e.kind===`planned`?await p(async()=>E(e.planned,await m())):e,o})(),d)}}}async function I(e,t,n={runBatch:M,runSingle:P}){if(t)return R(n);if(!e)return u(p({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Z);let r=v(e);return r?z(r,n):u(p({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Z)}function L(e,t){if(t){let t=N();return{dispose:t.dispose,idempotencyPolicy:()=>O(t),run:()=>I(e,!0,{runBatch:()=>t.run(),runSingle:P})}}if(!e)return{dispose(){},run:()=>I(e,t)};let n=F(e);return{dispose:n.dispose,idempotencyPolicy:()=>T(e,n),run:()=>I(e,!1,{runBatch:M,runSingle:()=>n.run()})}}async function R(e){f({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=H(t),r=G(t);return Y(t)?u(p({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`},warnings:r}),Z):n.some(e=>e.status===`failed`||e.status===`locked`)?u(p({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`},warnings:r}),Z):u(d({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`},warnings:r}),Z)}async function z(e,t){f({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!s(t))throw t;return u(p({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),Z)}let r=V(n);if(n.kind===`unknown-agent`)return u(p({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),Z);if(r?.observation.kind===`absent`){let t=r.observation.drift.kind===`recorded-absent`?[K(e)]:[];return u(p({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Z)}let i=B(e,n);return X([],i),n.kind===`cancelled`?u(p({action:`update`,data:{results:[i],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Z):i.status===`failed`||i.status===`locked`?u(p({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Z):u(d({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name}}),Z)}function B(n,r){let i=V(r),a=`plan`in r?r.plan:void 0,o=i?.observation.kind===`present`?i.observation.version:void 0,s=q(a),c=J(a)??i?.binding?.providerId;switch(r.kind){case`updated`:return{displayName:n.displayName,installedVersion:o,latestVersion:r.receipt.version??s,name:n.name,status:`updated`,strategy:c};case`up-to-date`:return{displayName:n.displayName,installedVersion:r.receipt.version??o,name:n.name,status:`up-to-date`,strategy:c};case`dry-run`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Dry run: would update ${n.displayName}.`,name:n.name,status:`planned`,strategy:c};case`not-executed`:return r.plan.planning.decision===`up-to-date`?{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`up-to-date`}:{displayName:n.displayName,installedVersion:o,latestVersion:s,message:e(n),name:n.name,status:`manual-required`};case`blocked`:return r.category===`untracked`?{displayName:n.displayName,installedVersion:o,message:t(n),name:n.name,status:`manual-required`}:r.category===`manual-required`?{displayName:n.displayName,installedVersion:o,message:e(n),name:n.name,status:`manual-required`}:{displayName:n.displayName,installedVersion:o,message:r.reason,name:n.name,status:`failed`};case`cancelled`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.reason??`Update was cancelled before it could complete.`,name:n.name,status:`failed`,strategy:c};case`timed-out`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Update timed out after ${r.timeoutMs}ms.`,name:n.name,status:`failed`,strategy:c};case`provider-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`failed`,strategy:c};case`verification-failed`:case`receipt-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.kind===`receipt-failed`?r.reason:r.verification.reason,name:n.name,status:`failed`,strategy:c};case`unknown-agent`:return{displayName:n.displayName,name:n.name,status:`failed`}}}function V(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function H(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);if(e){let t=U(e);t&&X(r,t)}else a&&X(r,W(a))}return r}function U(e){let t=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=v(e.agentName);if(!r)return{displayName:t?.agent.displayName??e.agentName,name:e.agentName,status:`failed`};let i=e.execution;if(e.planning.kind===`blocked`&&e.planning.category===`stale-state`)return;if(i?.kind===`locked`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:q(i.plan),message:i.reason,name:r.name,resource:i.resource,status:`locked`,strategy:J(i.plan)};if(i?.kind===`unexpected-failure`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:q(i.plan),message:i.reason,name:r.name,status:`failed`,strategy:J(i.plan)};let a=i??(e.planning.kind===`planned`?{kind:`not-executed`,plan:e.planning.planned}:e.planning),o=B(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=n(r,m({agent:r,installedState:t?.installedState,methods:[...t?.methods??[]]}))),o}function W(e){let t=v(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:q(e.planning.planned),message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:J(e.planning.planned)}}function G(e){return e.plan.targets.flatMap(e=>e.outcome.kind!==`blocked`||e.outcome.category!==`stale-state`?[]:[K(v(e.agentName)??e.outcome.before.agent)])}function K(e){return{code:`AGENT_STALE_STATE`,details:{agentName:e.name,suggestedAction:`reconcile-agent-state`,suggestedCommands:[`quantex uninstall ${e.name}`]},message:`${e.displayName} is not installed but has stale lifecycle evidence. Run \`quantex uninstall ${e.name}\` to reconcile it.`}}function q(e){return e?.strategy===`managed-provider`?e.plannedTargetVersion:void 0}function J(e){if(e)return e.strategy===`self-update`?`self-update`:`managed/${e.binding.providerId}`}function Y(e){return o().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function X(e,t){e.push(t),f({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Z(e){if(!e.data){e.error&&w(g.red(e.error.message));return}for(let t of e.warnings)x(g.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:S(g.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:x(g.yellow(`${t.displayName}: manual action required.`)),t.message&&x(g.cyan(`Next step: ${t.message}`));break;case`planned`:x(g.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${Q(t.installedVersion,t.latestVersion)}`));break;case`updated`:S(g.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),S(g.green(`${t.displayName} updated successfully!`));break;case`failed`:S(g.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),w(g.red(`Failed to update ${t.displayName}.`)),t.hint&&x(g.cyan(`Next step: ${t.hint}`));break;case`locked`:x(g.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&$(e.data.results),!e.data.results.length&&e.error&&w(g.red(e.error.message))}function Q(e,t){return e?` (${e} -> ${t??`latest`})`:``}function $(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&S(g.bold(`Summary: ${n.join(`, `)}`))}export{L as createUpdateCommandInvocation};
|
|
1
|
+
import{n as e,r as t,t as n}from"./messages-qcLhD-Gc.mjs";import{g as r}from"./npm-fDgYmVes.mjs";import{I as i,r as a}from"./agents-Bxb3Mea2.mjs";import{n as o}from"./cli-context-xudTdmO7.mjs";import{a as s,d as c}from"./file-store-Caz7fnAB.mjs";import{T as l,i as u,n as d,r as f,t as p}from"./output-CKLOQntj.mjs";import{r as m}from"./providers-CzF9UdJQ.mjs";import{t as h}from"./cli-operation-context-BhNiJdQ3.mjs";import{t as g}from"./color-FZclrXnv.mjs";import{g as _,n as v}from"./agents-D1Uvcje8.mjs";import{t as y}from"./update-planner-DIhkPXeI.mjs";import{t as b}from"./lifecycle-observations-yduDAmAL.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-B-zDs13K.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-DnMFp_PE.mjs";async function j(e){let t;for(let n of e.commands){let i=await r(n,e.context,`agent self-update failed`);if(i.kind===`success`)return{kind:`success`,value:{evidence:[{kind:`command`,value:n.join(` `)}],target:e.target}};if(i.kind===`cancelled`||i.kind===`timed-out`)return i;t=i}return t??{kind:`unsupported`,operation:`update`,reason:`No self-update command is configured.`}}async function M(){let e=N();try{return await e.run()}finally{e.dispose()}}function N(){let e=h(),t=0,n=!1,r=!1,o,u,d,f,p=()=>{!n||r||t>0||(r=!0,e.dispose())},m=async r=>{if(n)throw Error(`Lifecycle update batch invocation has been disposed.`);t+=1;try{return await e.run(r)}finally{--t,p()}},g=()=>(d??=c().then(t=>{let n=b(e.context);return{classifyMutationLockError:e=>s(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,listRegisteredAgentNames:()=>a().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:i,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:l.write}}),d),v=()=>n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(u??=m(async()=>D(await g())),u);return{dispose(){n||(n=!0,p())},getOutcome:()=>o,async observe(e){return m(async()=>(await g()).observe(e))},prepare:v,run(){return n?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(f??=(async()=>{let e=await v();return o=await m(async()=>k(e,await g())),o})(),f)}}}async function P(e){let t=F(e);try{return await t.run()}finally{t.dispose()}}function F(e){let t=h(),n=0,r=!1,a=!1,o,s,u,d,f=()=>{!r||a||n>0||(a=!0,t.dispose())},p=async e=>{if(r)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,f()}},m=()=>(u??=c().then(e=>{let n=b(t.context);return{clock:()=>new Date().toISOString(),dryRun:C(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:y,providerRegistry:i,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:_,writeReceipt:l.write}}),u),g=()=>r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(s??=p(async()=>A(e,await m())),s);return{dispose(){r||(r=!0,f())},getOutcome:()=>o,async observe(e){return p(async()=>(await m()).observe(e))},prepare:g,run(){return r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(d??=(async()=>{let e=await g();return o=e.kind===`planned`?await p(async()=>E(e.planned,await m())):e,o})(),d)}}}async function I(e,t,n={runBatch:M,runSingle:P}){if(t)return R(n);if(!e)return u(p({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Z);let r=v(e);return r?z(r,n):u(p({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Z)}function L(e,t){if(t){let t=N();return{dispose:t.dispose,idempotencyPolicy:()=>O(t),run:()=>I(e,!0,{runBatch:()=>t.run(),runSingle:P})}}if(!e)return{dispose(){},run:()=>I(e,t)};let n=F(e);return{dispose:n.dispose,idempotencyPolicy:()=>T(e,n),run:()=>I(e,!1,{runBatch:M,runSingle:()=>n.run()})}}async function R(e){f({action:`update`,data:{scope:`all`},target:{kind:`agent`},type:`started`});let t=await e.runBatch(),n=H(t),r=G(t);return Y(t)?u(p({action:`update`,data:{results:n,scope:`all`},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`},warnings:r}),Z):n.some(e=>e.status===`failed`||e.status===`locked`)?u(p({action:`update`,data:{results:n,scope:`all`},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`},warnings:r}),Z):u(d({action:`update`,data:{results:n,scope:`all`},target:{kind:`agent`},warnings:r}),Z)}async function z(e,t){f({action:`update`,data:{agent:e.name,scope:`single`},target:{kind:`agent`,name:e.name},type:`started`});let n;try{n=await t.runSingle(e.name)}catch(t){if(!s(t))throw t;return u(p({action:`update`,data:{results:[{displayName:e.displayName,message:t.message,name:e.name,resource:t.resource,status:`locked`}],scope:`single`},error:{code:`RESOURCE_LOCKED`,details:{resource:t.resource},message:t.message},target:{kind:`agent`,name:e.name}}),Z)}let r=V(n);if(n.kind===`unknown-agent`)return u(p({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),Z);if(r?.observation.kind===`absent`){let t=r.observation.drift.kind===`recorded-absent`?[K(e)]:[];return u(p({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Z)}let i=B(e,n);return X([],i),n.kind===`cancelled`?u(p({action:`update`,data:{results:[i],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Z):i.status===`failed`||i.status===`locked`?u(p({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Z):u(d({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name}}),Z)}function B(n,r){let i=V(r),a=`plan`in r?r.plan:void 0,o=i?.observation.kind===`present`?i.observation.version:void 0,s=q(a),c=J(a)??i?.binding?.providerId;switch(r.kind){case`updated`:return{displayName:n.displayName,installedVersion:o,latestVersion:r.receipt.version??s,name:n.name,status:`updated`,strategy:c};case`up-to-date`:return{displayName:n.displayName,installedVersion:r.receipt.version??o,name:n.name,status:`up-to-date`,strategy:c};case`dry-run`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Dry run: would update ${n.displayName}.`,name:n.name,status:`planned`,strategy:c};case`not-executed`:return r.plan.planning.decision===`up-to-date`?{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`up-to-date`}:{displayName:n.displayName,installedVersion:o,latestVersion:s,message:e(n),name:n.name,status:`manual-required`};case`blocked`:return r.category===`untracked`?{displayName:n.displayName,installedVersion:o,message:t(n),name:n.name,status:`manual-required`}:r.category===`manual-required`?{displayName:n.displayName,installedVersion:o,message:e(n),name:n.name,status:`manual-required`}:{displayName:n.displayName,installedVersion:o,message:r.reason,name:n.name,status:`failed`};case`cancelled`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.reason??`Update was cancelled before it could complete.`,name:n.name,status:`failed`,strategy:c};case`timed-out`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:`Update timed out after ${r.timeoutMs}ms.`,name:n.name,status:`failed`,strategy:c};case`provider-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,name:n.name,status:`failed`,strategy:c};case`verification-failed`:case`receipt-failed`:return{displayName:n.displayName,installedVersion:o,latestVersion:s,message:r.kind===`receipt-failed`?r.reason:r.verification.reason,name:n.name,status:`failed`,strategy:c};case`unknown-agent`:return{displayName:n.displayName,name:n.name,status:`failed`}}}function V(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function H(e){let t=new Map(e.results.map(e=>[e.id,e])),n=new Map(e.cancellationRemainder.map(e=>[e.id,e])),r=[];for(let i of e.plan.targets){let e=t.get(i.id),a=n.get(i.id);if(e){let t=U(e);t&&X(r,t)}else a&&X(r,W(a))}return r}function U(e){let t=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=v(e.agentName);if(!r)return{displayName:t?.agent.displayName??e.agentName,name:e.agentName,status:`failed`};let i=e.execution;if(e.planning.kind===`blocked`&&e.planning.category===`stale-state`)return;if(i?.kind===`locked`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:q(i.plan),message:i.reason,name:r.name,resource:i.resource,status:`locked`,strategy:J(i.plan)};if(i?.kind===`unexpected-failure`)return{displayName:r.displayName,installedVersion:i.plan.before.observation.kind===`present`?i.plan.before.observation.version:void 0,latestVersion:q(i.plan),message:i.reason,name:r.name,status:`failed`,strategy:J(i.plan)};let a=i??(e.planning.kind===`planned`?{kind:`not-executed`,plan:e.planning.planned}:e.planning),o=B(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=n(r,m({agent:r,installedState:t?.installedState,methods:[...t?.methods??[]]}))),o}function W(e){let t=v(e.agentName),n=e.planning.planned.before;return{displayName:t?.displayName??n.agent.displayName,installedVersion:n.observation.kind===`present`?n.observation.version:void 0,latestVersion:q(e.planning.planned),message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:J(e.planning.planned)}}function G(e){return e.plan.targets.flatMap(e=>e.outcome.kind!==`blocked`||e.outcome.category!==`stale-state`?[]:[K(v(e.agentName)??e.outcome.before.agent)])}function K(e){return{code:`AGENT_STALE_STATE`,details:{agentName:e.name,suggestedAction:`reconcile-agent-state`,suggestedCommands:[`quantex uninstall ${e.name}`]},message:`${e.displayName} is not installed but has stale lifecycle evidence. Run \`quantex uninstall ${e.name}\` to reconcile it.`}}function q(e){return e?.strategy===`managed-provider`?e.plannedTargetVersion:void 0}function J(e){if(e)return e.strategy===`self-update`?`self-update`:`managed/${e.binding.providerId}`}function Y(e){return o().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function X(e,t){e.push(t),f({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Z(e){if(!e.data){e.error&&w(g.red(e.error.message));return}for(let t of e.warnings)x(g.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:S(g.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:x(g.yellow(`${t.displayName}: manual action required.`)),t.message&&x(g.cyan(`Next step: ${t.message}`));break;case`planned`:x(g.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${Q(t.installedVersion,t.latestVersion)}`));break;case`updated`:S(g.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),S(g.green(`${t.displayName} updated successfully!`));break;case`failed`:S(g.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${Q(t.installedVersion,t.latestVersion)}`)),w(g.red(`Failed to update ${t.displayName}.`)),t.hint&&x(g.cyan(`Next step: ${t.hint}`));break;case`locked`:x(g.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&$(e.data.results),!e.data.results.length&&e.error&&w(g.red(e.error.message))}function Q(e,t){return e?` (${e} -> ${t??`latest`})`:``}function $(e){let t={failed:0,locked:0,manualRequired:0,planned:0,upToDate:0,updated:0};for(let n of e)switch(n.status){case`up-to-date`:t.upToDate+=1;break;case`manual-required`:t.manualRequired+=1;break;case`planned`:t.planned+=1;break;case`updated`:t.updated+=1;break;case`failed`:t.failed+=1;break;case`locked`:t.locked+=1;break}let n=[t.updated?`updated ${t.updated}`:void 0,t.upToDate?`up to date ${t.upToDate}`:void 0,t.manualRequired?`manual ${t.manualRequired}`:void 0,t.failed?`failed ${t.failed}`:void 0,t.locked?`locked ${t.locked}`:void 0,t.planned?`planned ${t.planned}`:void 0].filter(Boolean);n.length>0&&S(g.bold(`Summary: ${n.join(`, `)}`))}export{L as createUpdateCommandInvocation};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./child-process-CBKnpMWt.mjs";import{s as r}from"./schema-hCKyxJjR.mjs";import{i,n as a}from"./cli-context-xudTdmO7.mjs";import{c as o,d as s,f as c,i as l,m as u,n as d,t as f,u as p,y as m}from"./output-
|
|
1
|
+
import{c as e,o as t,t as n}from"./child-process-CBKnpMWt.mjs";import{s as r}from"./schema-hCKyxJjR.mjs";import{i,n as a}from"./cli-context-xudTdmO7.mjs";import{c as o,d as s,f as c,i as l,m as u,n as d,t as f,u as p,y as m}from"./output-CKLOQntj.mjs";import{t as h}from"./color-FZclrXnv.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-B-zDs13K.mjs";import{n as b,t as x}from"./version-cache-C5F6SycS.mjs";const S={platform:process.platform,spawn:(e,n)=>t(e,{...n,stdio:n.stdio?[...n.stdio]:void 0}),terminate:e,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,metadataCacheMode:t.options.cacheMode===`no-cache`?`no-cache`:`refresh`,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=a(),t=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&t.cancel(`cancelled`);let n=i(()=>t.cancel(`cancelled`)),r=!1,s={plan:e=>c({context:e.context,metadataCache:e.metadataCache,metadataCacheMode:e.metadataCacheMode,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>o(e,t)};return{dispose(){r||(r=!0,n())},run:e=>k(e,t,s)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:u(),network:T(),persistence:m(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}function P(e){if(e===`stable`||e===`beta`)return e}async function F(e={}){let t=v(),r=j(),i=await r.run({check:e.check??!1,dryRun:t,updateChannel:e.channel}).finally(()=>r.dispose());if(i.kind===`interrupted`)throw new n({kind:`cancelled`,reason:i.error.message});let a=i.plan,o=s(a),c=L(o),u=z(o);if(a.status===`up-to-date`)return l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);if(e.check||t)return a.status===`update-available`?l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`update-available`},exitCode:e.check?1:void 0,target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[],...t?[{code:`DRY_RUN`,message:`Dry run: would upgrade Quantex CLI.`}]:[]]}),I):l(f({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,status:`check-unavailable`},error:{code:`NETWORK_ERROR`,message:`Unable to determine the latest Quantex CLI version.`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);if(a.status===`manual-required`){let e=p(o);return l(f({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,recoveryHint:e,status:`manual-required`},error:{code:`MANUAL_ACTION_REQUIRED`,message:`Quantex CLI cannot auto-update from the current install source: ${o.installSource}.`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I)}if(i.kind!==`executed`)throw Error(`Self-upgrade execution did not produce a result.`);let m=i.result;if(m.success)return l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`updated`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);let h=p(o,m);return l(f({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,recoveryHint:h,status:`manual-required`},error:{code:`UPGRADE_FAILED`,details:m.error?.kind?{kind:m.error.kind}:void 0,message:m.error?.message??`Failed to upgrade Quantex CLI.`},target:{kind:`self`,name:`quantex`},warnings:[...c,...h?[{code:`MANUAL_RECOVERY`,message:`Manual recovery: ${h}`}]:[]]}),I)}function I(e){if(!e.data){e.error&&y(h.red(e.error.message));return}if(e.data.status===`up-to-date`){_(h.green(`Quantex CLI is already up to date (${e.data.currentVersion}).`)),R(e.warnings);return}if(e.data.status===`update-available`){let t=e.warnings.some(e=>e.message.includes(`Dry run`))?`Dry run: `:``;g(h.yellow(`${t}Update available for Quantex CLI: ${e.data.currentVersion} -> ${e.data.latestVersion} (${e.data.channel}).`)),R(e.warnings);return}if(e.data.status===`check-unavailable`){e.error&&g(h.yellow(e.error.message)),R(e.warnings);return}if(e.data.status===`manual-required`&&e.error?.code===`MANUAL_ACTION_REQUIRED`){g(h.yellow(e.error.message)),e.data.recoveryHint&&g(h.cyan(`Next step: ${e.data.recoveryHint}`));return}let t=e.data.latestVersion?` (${e.data.currentVersion} -> ${e.data.latestVersion})`:` (${e.data.currentVersion})`;if(_(h.cyan(`Upgrading Quantex CLI...${t}`)),!e.error){_(h.green(`Quantex CLI upgraded successfully.`)),R(e.warnings);return}y(h.red(`Failed to upgrade Quantex CLI.`)),g(h.yellow(`Reason: ${e.error.message}`));for(let t of e.warnings)g(h.cyan(t.message.replace(/^Manual recovery:/,`Next step:`)))}function L(e){return!e.latestVersion||!e.upstreamLatestVersion||e.latestVersion===e.upstreamLatestVersion||e.installSource!==`bun`&&e.installSource!==`npm`?[]:[{code:`MIRROR_LAG`,details:{installableLatestVersion:e.latestVersion,upstreamLatestVersion:e.upstreamLatestVersion},message:`The selected registry currently installs ${e.latestVersion}, while upstream npm has ${e.upstreamLatestVersion}. Retry later or set selfUpdateRegistry / QTX_SELF_UPDATE_REGISTRY to another registry if you need the upstream release now.`}]}function R(e){for(let t of e)t.code===`DRY_RUN`||t.code===`MANUAL_RECOVERY`||g(h.yellow(t.message))}function z(e){if(!e.latestVersion)return;let t=r(e.latestVersion,e.currentVersion);if(!(t===void 0||t>=0))return{code:`STALE_LATEST_VERSION`,details:{currentVersion:e.currentVersion,latestVersion:e.latestVersion},message:`The resolved latest version ${e.latestVersion} is older than the installed Quantex CLI ${e.currentVersion}. Quantex will not downgrade; retry with --refresh or --no-cache if you need a fresh check.`}}export{P as resolveUpgradeChannelOption,F as upgradeCommand};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quantex-cli",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Agent-friendly lifecycle CLI for AI coding assistant CLIs: install, inspect, update, uninstall, run, and automate Codex, Claude Code, Gemini, Cursor, OpenCode, and more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-cli",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./schema-hCKyxJjR.mjs";import{a as t,i as n,n as r,t as i}from"./provider-binding-D1muQsgD.mjs";async function a(e,a){let[s,v,y]=await Promise.all([a.inspectExecutable(e),a.readInstalledState(e.name),a.readReceipt(e.name)]),b=a.clock(),x=r(e,a.platform),S=x.bindings,C=o(S,a.observationBinding,e.binaryName),w=C?[C]:S,T=v?t(e,v):void 0,E=y?n(y):void 0,D=E??T,O={catalogMethods:S,executable:s,installedState:v,pathExecutable:s,persistedBinding:D,receipt:y};if(v&&!T||y&&!E)return{...O,capabilities:[],observation:u(e,b,`Persisted provider binding cannot be resolved.`)};if(T&&E&&!i(T,E,e.binaryName))return{...O,capabilities:[],observation:s.present?l(e,s,b,{kind:`conflicting-source`,observedProviderId:T.providerId,recordedProviderId:E.providerId}):{drift:{kind:`conflicting-source`,observedProviderId:T.providerId,recordedProviderId:E.providerId},kind:`absent`,observedAt:b,targetId:e.name}};let k=D;if(k){let t=await c(k,a),n=a.providerRegistry.getCapabilities(k.providerId);if(t.kind!==`success`)return{...O,binding:k,capabilities:n,observation:u(e,b,g(t)),providerOutcome:t};let r=t.value;if(!m(k,r))return{...O,binding:k,capabilities:n,observation:h(e,s,b),providerOutcome:t};if(r.kind===`absent`&&!s.present)return{...O,binding:k,capabilities:n,observation:{drift:{kind:`recorded-absent`},kind:`absent`,observedAt:b,targetId:e.name},providerOutcome:t};let i=r.kind!==(s.present?`present`:`absent`)||r.kind===`present`&&s.present&&r.executablePath!==void 0&&s.path!==void 0&&r.executablePath!==s.path||r.kind===`present`&&f(r.version,s.version)||y?.executablePath!==void 0&&s.path!==void 0&&y.executablePath!==s.path||p(e,v,y,k),o=d(s,r);return{...O,binding:k,capabilities:n,executable:o,observation:l(e,o,b,i?{kind:`conflicting-source`,observedProviderId:r.kind===`present`?k.providerId:void 0,recordedProviderId:k.providerId}:{kind:`none`},r.kind===`present`?k:void 0),providerOutcome:t}}let A=await Promise.all(w.map(async e=>({binding:e,outcome:await c(e,a)}))),j=A.find(e=>e.outcome.kind===`success`&&!m(e.binding,e.outcome.value));if(j)return{...O,capabilities:[],observation:h(e,s,b),providerOutcome:j.outcome};let M=A.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),N=A.filter(e=>e.binding.providerId!==`binary`&&e.binding.providerId!==`script`),P=N.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),F=N.some(e=>e.outcome.kind!==`success`),I=P.length>0?P:F?[]:M;if(I.length>1)return{...O,capabilities:[],observation:s.present?l(e,s,b,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:b,reason:`Multiple catalog providers report the agent as present.`,targetId:e.name}};if(!C&&x.unresolvedCandidates.length>0)return{...O,capabilities:[],observation:u(e,b,`A catalog provider binding cannot be resolved.`)};let L=A.map(e=>e.outcome).find(_),R=A.map(e=>e.outcome).find(e=>e.kind===`cancelled`||e.kind===`timed-out`);if(R)return{...O,capabilities:[],observation:u(e,b,g(R)),providerOutcome:R};let z=I[0];if(z){let t=z.binding,n=z.outcome.value,r=d(s,n),i=!s.present||n.executablePath!==void 0&&s.path!==void 0&&n.executablePath!==s.path||f(n.version,s.version);return{...O,binding:t,capabilities:a.providerRegistry.getCapabilities(t.providerId),executable:r,observation:l(e,r,b,i?{kind:`conflicting-source`,observedProviderId:t.providerId}:{kind:`untracked`},t),providerOutcome:z.outcome}}let B=C??a.preferredCatalogBinding,V=B?A.find(t=>i(t.binding,B,e.binaryName)&&t.outcome.kind===`success`&&t.outcome.value.kind===`absent`):void 0;return!s.present&&M.length===0&&L&&V?{...O,capabilities:[],observation:{drift:{kind:`none`},kind:`absent`,observedAt:b,targetId:e.name},providerOutcome:V.outcome}:L?{...O,capabilities:[],observation:u(e,b,g(L)),providerOutcome:L}:{...O,capabilities:[],observation:s.present?l(e,s,b,{kind:`untracked`}):{drift:{kind:`none`},kind:`absent`,observedAt:b,targetId:e.name}}}function o(e,t,n){if(t)return e.find(e=>i(e,t,n)&&s(e.target.arguments,t.target.arguments))}function s(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}async function c(e,t){try{if(t.observeProvider)return await t.observeProvider(e,{registry:t.providerRegistry,signal:t.signal,timeoutMs:t.timeoutMs});let n=t.providerRegistry.get(e.providerId);return n?await n.observe({context:{signal:t.signal,timeoutMs:t.timeoutMs},target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}catch(e){return{kind:`failed`,reason:v(e),retryable:!1}}}function l(e,t,n,r,i){return{drift:r,...t.path?{executablePath:t.path}:{},kind:`present`,observedAt:n,...i?{providerId:i.providerId,providerTargetId:i.target.id,providerTargetKind:i.target.kind}:{},targetId:e.name,...t.version?{version:t.version}:{}}}function u(e,t,n){return{drift:{kind:`indeterminate`,reason:n},kind:`indeterminate`,observedAt:t,reason:n,targetId:e.name}}function d(e,t){return t.kind===`absent`?e:{path:e.path??t.executablePath,present:!0,version:e.version??t.version}}function f(t,n){if(t===void 0||n===void 0)return!1;let r=e(t,n);return r===void 0?t!==n:r!==0}function p(e,t,n,r){let i=[e.binaryName,t?.binaryName,n?.executableName,r.target.binaryName].filter(e=>e!==void 0);return new Set(i).size>1}function m(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function h(e,t,n){return t.present?l(e,t,n,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:n,reason:`Provider evidence does not match the requested target identity.`,targetId:e.name}}function g(e){switch(e.kind){case`unsupported`:return e.reason??`Provider does not support ${e.operation}.`;case`unavailable`:case`failed`:case`indeterminate`:return e.reason;case`cancelled`:return e.reason??`Provider observation was cancelled.`;case`timed-out`:return`Provider observation timed out after ${e.timeoutMs}ms.`}}function _(e){return e.kind!==`success`}function v(e){return e instanceof Error&&e.message.trim().length>0?`Provider observation rejected: ${e.message.trim().slice(0,500)}`:`Provider observation rejected unexpectedly.`}export{a as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capabilities-DdjhIFGH.mjs";export{e as capabilitiesCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-DgQeHPFE.mjs";export{e as commandsCommand};
|
package/dist/ensure-OJEUoNgi.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./ensure-C8eFff3H.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./inspect-DPdPhXyQ.mjs";export{e as inspectCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./detect-BdnZzKbm.mjs";import{I as n,n as r,r as i}from"./agents-BVhg2uqJ.mjs";import{G as a,K as o,S as s,U as c,W as l,x as u}from"./output-CemK152l.mjs";import{u as d}from"./providers-BsRQVnXd.mjs";import{t as f}from"./cli-operation-context-BhNiJdQ3.mjs";import{s as p}from"./agents-_8Ay_O2P.mjs";import{r as m}from"./provider-binding-D1muQsgD.mjs";import{t as h}from"./agent-observation-Ci5R0GnA.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 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./resolve-DtJ2VGPP.mjs";export{e as resolveCommand};
|
package/dist/schema-ra2FB_Qb.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./schema-D7kyWJeh.mjs";export{e as schemaCommand};
|